|
68848
|
Untitled project by @anarc | Stardance
|
anarc
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T20:03:42Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "font and layout practice, first time ive used html in a WHILE!", "repo": "https://github.com/synthezizer/ssd", "demo": "https://chudd.vercel.app"}]...
|
[{"post_id": 78150, "ts": "202 [{"post_id": 78150, "ts": "2026-10-09T19:51:57Z", "hours": 0.6353, "text": "lol"}]...
|
Title: Untitled project by @anarc | Stardance
Dev Title: Untitled project by @anarc | Stardance
Devlogs:
lol
Ships:
font and layout practice, first time ive used html in a WHILE!...
|
1793062358.3202114
|
1793148758.3202114
|
|
68729
|
Hypersonic Player by @1xiyu | Stardance
|
1xiyu
|
0
|
1.58
|
0
|
[]
|
[{"post_id": 78157, "ts": "202 [{"post_id": 78157, "ts": "2026-10-09T20:26:02Z", "hours": 1.5794, "text": "Devlog 1: I started by adding the authentication system, and now basic api calls work! Thankfully I only needed to create a md5 hash, which was quite fun to play around with. The responses are in XML, so I’ll have to find a way to parse them next. The UI could also use some work as it’s a bit sparce."}]...
|
Title: Hypersonic Player by @1xiyu | Stardance
De Title: Hypersonic Player by @1xiyu | Stardance
Devlogs:
Devlog 1: I started by adding the authentication system, and now basic api calls work! Thankfully I only needed to create a md5 hash, which was quite fun to play around with. The responses are in XML, so I’ll have to find a way to parse them next. The UI could also use some work as it’s a bit sparce....
|
1793123639.0187142
|
1793728439.0187142
|
|
5717
|
My first slack bot! by @IgBurner | Stardance
|
IgBurner
|
0
|
3.49
|
0
|
[]
|
[{"post_id": 7816, "ts": "2026 [{"post_id": 7816, "ts": "2026-06-13T01:28:12Z", "hours": 0.7936, "text": "Its finally done, the commands that I wanted to do anyway, I don’t like js I hope I don’t have to use it in the future, now I can start projects I know Ill enjoy 😭"}, {"post_id": 3234, "ts": "2026-06-06T02:00:24Z", "hours": 0.9464, "text": "turns out all of my commands had errors so I have to work them out one by one, i did the random art command, I had to find out how to use the query thing to look for paintings specifically - js is weird 😂"}, {"post_id": 1862, "ts": "2026-06-04T02:22:33Z", "hours": 0.5211, "text": "added two more commands that will get a random color and a random cat image, maybe if artists want to draw a cat with random colors this will be useful 😂 - gonna try it all soon hopefully it works 🤞"}, {"post_id": 1208, "ts": "2026-06-03T01:59:55Z", "hours": 1.2317, "text": "Finished a command to get a random piece of art and a url to the image, idk if it works since Nest hasn’t accepted me yet, but it runs so we’re basically good"}]...
|
Title: My first slack bot! by @IgBurner | Stardanc Title: My first slack bot! by @IgBurner | Stardance
Devlogs:
Finished a command to get a random piece of art and a url to the image, idk if it works since Nest hasn’t accepted me yet, but it runs so we’re basically good
added two more commands that will get a random color and a random cat image, maybe if artists want to draw a cat with random colors this will be useful 😂 - gonna try it all soon hopefully it works 🤞
turns out all of my commands had errors so I have to work them out one by one, i did the random art command, I had to find out how to use the query thing to look for paintings specifically - js is weird 😂
Its finally done, the commands that I wanted to do anyway, I don’t like js I hope I don’t have to use it in the future, now I can start projects I know Ill enjoy 😭...
|
1793170360.607493
|
1793775160.607493
|
|
61352
|
DeltaruneOS by @Anastt | Stardance
|
Anastt
|
2
|
13.0
|
5
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T20:50:23Z", "hours": 2.0, "multiplier": 2.83, "payout": 5, "blessing": "neutral", "text": "And after (more than) 12 hours, i think its done!! Deltarune WebOS, a deltarune themed webos with multiple apps and other features. I used html/css/js for everything, loved making this over the past month. The 3 new features are mentioned in my final devlog btw :ppp", "repo": "https://github.com/Anastt77/DeltaruneOS", "demo": "https://anastt77.github.io/DeltaruneOS/"}, {"ship_num": 2, "ts": "2026-09-26T21:09:06Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a deltarune themed webOS using html/css/js. It has multiple draggable windows (aka apps), a top bar w live time and date, and best of all; a draggable dancing tenna gif. i mean just look at him!!", "repo": "https://github.com/Anastt77/DeltaruneOS", "demo": "https://anastt77.github.io/DeltaruneOS/"}]...
|
[{"post_id": 78161, "ts": "202 [{"post_id": 78161, "ts": "2026-10-09T20:32:45Z", "hours": 1.9047, "text": "V2 is done, general polishing of the entire thing, more styling and fighting w js, 3 new main features: -Browser App -Dog App -Functional analog clock widget. SUper fun to make ive been loving thiss"}, {"post_id": 74177, "ts": "2026-09-26T21:02:45Z", "hours": 1.3081, "text": "its doneeee!!!!!! —— yay this was so much fun loved making it js was challenging but like in a good way so cool"}, {"post_id": 73304, "ts": "2026-09-24T20:13:53Z", "hours": 3.6572, "text": "DeltaruneOS - Devlog I’ve-lost-count /// Okk big one, i think it’s almost done i just need to polish it a bit, i have finished the wiki app and added a functional timer app, general js and html fixes AND a fully functional draggable dancing Tenna gif to keep you company"}, {"post_id": 70286, "ts": "2026-09-18T21:30:23Z", "hours": 0.7758, "text": "general styling/troubleshooting, still havent done any like actual proper progress yk."}, {"post_id": 68822, "ts": "2026-09-15T20:13:18Z", "hours": 0.3753, "text": "i have literally zero time cz school so atp im just keeping my streak up lmao progress is going slow. ditched the notes app for a wiki app. thats about it next time ill add the contents"}, {"post_id": 68240, "ts": "2026-09-14T19:16:19Z", "hours": 0.3117, "text": "didnt have much time today, fixed the app selection thing tho :))"}, {"post_id": 67448, "ts": "2026-09-13T15:36:57Z", "hours": 1.0264, "text": "did most of the guide’s part 4, struggling a bit w js, i couldnt make it so when you click it gets selected and then gets opened, ill do i next time"}, {"post_id": 66952, "ts": "2026-09-12T22:49:24Z", "hours": 1.785, "text": "DeltaruneOS - Devlog #2 /// did most part of the 3rd mission jam, so i made the intro window draggable and made it have the ability to open and close. struggled a bit with the javascript but it worked in the end. also added a window top bar with like an x button yk"}, {"post_id": 66647, "ts": "2026-09-12T14:36:17Z", "hours": 1.2683, "text": "DeltaruneOS - Devlog 1 /// Today i did the first two parts of the mission guide. Added a top bar with an updating clock with js and the introduction window, as well as various html/css styling stuff. This is genuinely such a fun mission i love how it’s turning out :))"}]...
|
Title: DeltaruneOS by @Anastt | Stardance
Devlogs Title: DeltaruneOS by @Anastt | Stardance
Devlogs:
DeltaruneOS - Devlog 1 /// Today i did the first two parts of the mission guide. Added a top bar with an updating clock with js and the introduction window, as well as various html/css styling stuff. This is genuinely such a fun mission i love how it’s turning out :))
DeltaruneOS - Devlog #2 /// did most part of the 3rd mission jam, so i made the intro window draggable and made it have the ability to open and close. struggled a bit with the javascript but it worked in the end. also added a window top bar with like an x button yk
did most of the guide’s part 4, struggling a bit w js, i couldnt make it so when you click it gets selected and then gets opened, ill do i next time
didnt have much time today, fixed the app selection thing tho :))
i have literally zero time cz school so atp im just keeping my streak up lmao progress is going slow. ditched the notes app for a wiki app. thats about it next time ill add the contents
general styling/troubleshooting, still havent done any like actual proper progress yk.
DeltaruneOS - Devlog I’ve-lost-count /// Okk big one, i think it’s almost done i just need to polish it a bit, i have finished the wiki app and added a functional timer app, general js and html fixes AND a fully functional draggable dancing Tenna gif to keep you company
its doneeee!!!!!! —— yay this was so much fun loved making it js was challenging but like in a good way so cool
V2 is done, general polishing of the entire thing, more styling and fighting w js, 3 new main features: -Browser App -Dog App -Functional analog clock widget. SUper fun to make ive been loving thiss
Ships:
I made a deltarune themed webOS using html/css/js. It has multiple draggable windows (aka apps), a top bar w live time and date, and best of all; a draggable dancing tenna gif. i mean just look at him!!
And after (more than) 12 hours, i think its done!! Deltarune WebOS, a deltarune themed webos with multiple apps and other features. I used html/css/js for everything, loved making this over the past month. The 3 new features are mentioned in my final devlog btw :ppp...
|
1793055333.5294561
|
1793141733.5294561
|
|
63289
|
Doodle-Sketch by @Element | Stardance
|
Element
|
1
|
19.0
|
181
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T20:36:02Z", "hours": 19.0, "multiplier": 9.71, "payout": 181, "blessing": "neutral", "text": "Doodle Doodle is a simple web based drawing app, in which you can do simple doodling Features The Main feature is the colour picker, it gives you both darker and lighter value of the color you choose you can choose from preset of put a hex code and has a color picker Pen pressure that you can toggle, on by default A minimap that shows what you are drawing, it only shows what the free hand drawing tool shows All other basic features that should be in a drawing app What was hard? Implementing the eraser was challenging because it had to remove existing strokes without affecting the rest of the drawing. I used the Canvas API’s destination-out compositing mode and made sure erased areas stayed erased when the infinite canvas was redrawn or zoomed. Making the opacity work properly took some time too I wanted the color selector to be more flexible than a basic color picker, adding custom HEX colors, different shades, and an eyedropper tool some extra work, but that lwk made it so much better than a simple color selector Use of Ai Ai was mainly used for debugging and to act as an teacher, when i messed up something i would ask it about what happened, how i can fix it, why is happened, like that. Also all the code is written by me, and i have kept my usage of Ai under that limit, cus most of the time I just google the stuff i want DEMO LINK Doodle", "repo": "https://github.com/CreateVision96/Doodle", "demo": "https://createvision96.github.io/Doodle/"}]...
|
[{"post_id": 78163, "ts": "202 [{"post_id": 78163, "ts": "2026-10-09T20:35:07Z", "hours": 0.5167, "text": "Final devlog I have fixed some bugs and did some adjusting now its ready to ship"}, {"post_id": 76216, "ts": "2026-10-02T18:22:55Z", "hours": 1.3853, "text": "DevLog 4 we hab the minimap working guys the minimap only shows the freehand lines and erased parts it doesnt show the other tools also fixed some bugs"}, {"post_id": 74788, "ts": "2026-09-28T07:50:44Z", "hours": 3.6075, "text": "Devlog 3 Worked on the color selector and the brush while using lower opacity the brush will be smooth instead of bunch of little dots. And the color selector will generate both darker and lighter shades of the color you select. Added a button to turn off or on the pen pressure"}, {"post_id": 72327, "ts": "2026-09-22T17:50:02Z", "hours": 5.9064, "text": "DevLog 2 okay now i added the rest of the drawing tools, and a hamburger menu for now it ony has three working functions two of them are lwk same, you can download reset Canvas or hit New Canvas nextt ill be working on color selector"}, {"post_id": 70887, "ts": "2026-09-19T23:17:10Z", "hours": 7.1986, "text": "DevLog 1 Im working on a web based drawing app What i have implimented? Infinite canvas The pen pressure works Proper Eraser Stroke width Zoom in and out with percentage Undo and Redo (ctrl + Z and ctrl + shift + Z) Next? Next i will try to add rest of the tools and a menu to change some simple settings and option to change colors, and maybe work n make the UI look better"}]...
|
Title: Doodle-Sketch by @Element | Stardance
Devl Title: Doodle-Sketch by @Element | Stardance
Devlogs:
DevLog 1 Im working on a web based drawing app What i have implimented? Infinite canvas The pen pressure works Proper Eraser Stroke width Zoom in and out with percentage Undo and Redo (ctrl + Z and ctrl + shift + Z) Next? Next i will try to add rest of the tools and a menu to change some simple settings and option to change colors, and maybe work n make the UI look better
DevLog 2 okay now i added the rest of the drawing tools, and a hamburger menu for now it ony has three working functions two of them are lwk same, you can download reset Canvas or hit New Canvas nextt ill be working on color selector
Devlog 3 Worked on the color selector and the brush while using lower opacity the brush will be smooth instead of bunch of little dots. And the color selector will generate both darker and lighter shades of the color you select. Added a button to turn off or on the pen pressure
DevLog 4 we hab the minimap working guys the minimap only shows the freehand lines and erased parts it doesnt show the other tools also fixed some bugs
Final devlog I have fixed some bugs and did some adjusting now its ready to ship
Ships:
Doodle Doodle is a simple web based drawing app, in which you can do simple doodling Features The Main feature is the colour picker, it gives you both darker and lighter value of the color you choose you can choose from preset of put a hex code and has a color picker Pen pressure that you can toggle, on by default A minimap that shows what you are drawing, it only shows what the free hand drawing tool shows All other basic features that should be in a drawing app What was hard? Implementing the eraser was challenging because it had to remove existing strokes without affecting the rest of the drawing. I used the Canvas API’s destination-out compositing mode and made sure erased areas stayed erased when the infinite canvas was redrawn or zoomed. Making the opacity work properly took some time too I wanted the color selector to be more flexible than a basic color picker, adding custom HEX colors, different shades, and an eyedropper tool some extra work, but that lwk made it so much better than a simple color selector Use of Ai Ai was mainly used for debugging and to act as an teacher, when i messed up something i would ask it about what happened, how i can fix it, why is happened, like that. Also all the code is written by me, and i have kept my usage of Ai under that limit, cus most of the time I just google the stuff i want DEMO LINK Doodle...
|
1793058739.988256
|
1793145139.988256
|
|
33818
|
Piggi by @malikschenk | Stardance
|
malikschenk
|
1
|
27.2
|
180
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T20:52:24Z", "hours": 25.0, "multiplier": 7.31, "payout": 180, "blessing": "neutral", "text": "I created an app to keep an eye on your expenses and to reach your saving goals. It has smart features like Stats and a Calculator. Additionally there is PiggiAI, an integrated AI that runs via your Gemini API key. All the data is saved securely in local stoprage, never löeaves your device and can be deleted with just two clicks.", "repo": "https://github.com/Malikschenk/Piggi", "demo": "https://piggi-app.vercel.app/"}]...
|
[{"post_id": 78167, "ts": "202 [{"post_id": 78167, "ts": "2026-10-09T20:50:05Z", "hours": 1.6992, "text": "Devlog #8 After two failed submissions I finally found the problem! The reviewer said the Hack Club AI key didn’t work. But my code, as I thought, wasn’t actually the problem. Because GitHub Pages doesn’t support Serverless Functions and Vercel do. Now I host Piggi on Vercel. It feels and looks the same, but it works. Check it out here !"}, {"post_id": 75878, "ts": "2026-10-01T13:38:20Z", "hours": 0.5, "text": "Devlog #7 I received an answer really quickly from the reviewers. They said I have to open PiggiAI to Hack Club AI. I never heard of it before, but you can get your API key there for top OpenAI models. Now PiggiAI is opened to both keys! Check it out here !"}, {"post_id": 75714, "ts": "2026-09-30T20:38:29Z", "hours": 2.1003, "text": "Devlog #6 I just found out that the Stardance event has been extended by another month! I’m really happy but in the last days I spent so much time finishing Piggi. Now I’m done, there are no new features today, but you can check it out in my repo and live on GitHub Pages. I was struggling with Pages, but I finally did it! I’m about to submit the project. Maybe there’ll be a new version of Piggi, so stay tuned!"}, {"post_id": 75347, "ts": "2026-09-29T20:13:02Z", "hours": 3.7125, "text": "Devlog #5 I finally finished Piggi! I added a lot of new features. For example Stats and Calculator features. But try it yourself here or check my repo ! I’m adding information to the README but I have to submit the project now because the Stardance Event is ending tomorrow. Here are a few screenshots of the UI."}, {"post_id": 71771, "ts": "2026-09-21T14:37:29Z", "hours": 4.41, "text": "Devlog #4 I’m back working on Piggi! In the last weeks I built my Hackpad and shipped it yesterday. While it’s being checked I’m working on this project again. My plan is to finish it before the Stardance event ends."}, {"post_id": 44030, "ts": "2026-08-09T15:14:03Z", "hours": 3.5489, "text": "Devlog #3 I just finished the app and made some changes: · New Settings menu · Adjustable avatar letter · Option to reset all data · Option to add and subtract funds · Warning when entering letters or symbols in forms for numbers Aside from that I removed the diagram because I don’t think you need a visualization of monthly income and expenses. Now I’ll start with PiggiAI. I also hosted Piggi on GitHub Pages so check it out here !"}, {"post_id": 30397, "ts": "2026-07-17T21:50:20Z", "hours": 7.3644, "text": "Devlog #2 I largely finished the structure of the app, but it’s a work in progress and a few bugs to fix. The code is now on GitHub - try it out! These things are improved or new: · New menu for the settings · New dark mode · A clearer diagram for expenses · New buttons · Maximum of 10 saving goals and 5 sources of income · A few more improvements I had a problem with the Editing UI of the balance because I renamed a class in CSS but not in HTML and JS. As the next step I want to build the PiggiAI. It’s an AI assistant and it uses your Gemini API key. How you get this key is explained in the README in GitHub. Right now, the tile ‘PiggiAI’, the PiggiAI input bar at the bottom and the menu to enter your API key are currently non-functional, I’m working on it."}, {"post_id": 28510, "ts": "2026-07-14T20:12:39Z", "hours": 3.4694, "text": "Devlog #1 I’m working on the UI. This is my first prototype."}]...
|
Title: Piggi by @malikschenk | Stardance
Devlogs: Title: Piggi by @malikschenk | Stardance
Devlogs:
Devlog #1 I’m working on the UI. This is my first prototype.
Devlog #2 I largely finished the structure of the app, but it’s a work in progress and a few bugs to fix. The code is now on GitHub - try it out! These things are improved or new: · New menu for the settings · New dark mode · A clearer diagram for expenses · New buttons · Maximum of 10 saving goals and 5 sources of income · A few more improvements I had a problem with the Editing UI of the balance because I renamed a class in CSS but not in HTML and JS. As the next step I want to build the PiggiAI. It’s an AI assistant and it uses your Gemini API key. How you get this key is explained in the README in GitHub. Right now, the tile ‘PiggiAI’, the PiggiAI input bar at the bottom and the menu to enter your API key are currently non-functional, I’m working on it.
Devlog #3 I just finished the app and made some changes: · New Settings menu · Adjustable avatar letter · Option to reset all data · Option to add and subtract funds · Warning when entering letters or symbols in forms for numbers Aside from that I removed the diagram because I don’t think you need a visualization of monthly income and expenses. Now I’ll start with PiggiAI. I also hosted Piggi on GitHub Pages so check it out here !
Devlog #4 I’m back working on Piggi! In the last weeks I built my Hackpad and shipped it yesterday. While it’s being checked I’m working on this project again. My plan is to finish it before the Stardance event ends.
Devlog #5 I finally finished Piggi! I added a lot of new features. For example Stats and Calculator features. But try it yourself here or check my repo ! I’m adding information to the README but I have to submit the project now because the Stardance Event is ending tomorrow. Here are a few screenshots of the UI.
Devlog #6 I just found out that the Stardance event has been extended by another month! I’m really happy but in the last days I spent so much time finishing Piggi. Now I’m done, there are no new features today, but you can check it out in my repo and live on GitHub Pages. I was struggling with Pages, but I finally did it! I’m about to submit the project. Maybe there’ll be a new version of Piggi, so stay tuned!
Devlog #7 I received an answer really quickly from the reviewers. They said I have to open PiggiAI to Hack Club AI. I never heard of it before, but you can get your API key there for top OpenAI models. Now PiggiAI is opened to both keys! Check it out here !
Devlog #8 After two failed submissions I finally found the problem! The reviewer said the Hack Club AI key didn’t work. But my code, as I thought, wasn’t actually the problem. Because GitHub Pages doesn’t support Serverless Functions and Vercel do. Now I host Piggi on Vercel. It feels and looks the same, but it works. Check it out here !
Ships:
I created an app to keep an eye on your expenses and to reach your saving goals. It has smart features like Stats and a Calculator. Additionally there is PiggiAI, an integrated AI that runs via your Gemini API key. All the data is saved securely in local stoprage, never löeaves your device and can be deleted with just two clicks....
|
1793148658.2474985
|
1793235058.2474985
|
|
68830
|
desktop sog by @Googentity | Stardance
|
Googentity
|
0
|
0.34
|
0
|
[]
|
[{"post_id": 78169, "ts": "202 [{"post_id": 78169, "ts": "2026-10-09T20:51:34Z", "hours": 0.3428, "text": "the cat moves, i was struggling with making the cat not vanish immediately but then i just put the cat’s sprite in the frame and he doesnt do the thingy anymore, now i need to make him quicker since i made his speed 100 when he had the vanishing issue since i thought the issue was the speed"}]...
|
Title: desktop sog by @Googentity | Stardance
Dev Title: desktop sog by @Googentity | Stardance
Devlogs:
the cat moves, i was struggling with making the cat not vanish immediately but then i just put the cat’s sprite in the frame and he doesnt do the thingy anymore, now i need to make him quicker since i made his speed 100 when he had the vanishing issue since i thought the issue was the speed...
|
1793126992.4253182
|
1793731792.4253182
|
|
68515
|
8ball by @Hanny | Stardance
|
Hanny
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T21:45:58Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a randomizer-style bot for Slack channels. You can use three commands in your channels: /8ball-ping: Get random answers, just like a magic 8 Ball. /hrandom-number: Get a random number from 1 to 100. -/hrandom-color: Get a random hex color code. I made it for those moments when you just need a random answer, a number, or, for the artists out there, a color! Quick tip: With /8ball-ping, you always need to ask a question. If you run th command withouth one, it’ll ask you to enter a question first.", "repo": "https://github.com/hannyd9/Bot-Slack", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 78170, "ts": "202 [{"post_id": 78170, "ts": "2026-10-09T21:01:13Z", "hours": 0.2503, "text": "I was approved on Nest, finished configuring the connections in the terminal, and it was finally published on the Slack Channels."}, {"post_id": 77734, "ts": "2026-10-08T03:53:59Z", "hours": 1.2856, "text": "I’ve started building a SlackBot, sort of like a magic 8 ball. For now, I have all the code ready, and I have to wait for it to be approved on Nest before I can take the next steps."}]...
|
Title: 8ball by @Hanny | Stardance
Devlogs:
I’ve Title: 8ball by @Hanny | Stardance
Devlogs:
I’ve started building a SlackBot, sort of like a magic 8 ball. For now, I have all the code ready, and I have to wait for it to be approved on Nest before I can take the next steps.
I was approved on Nest, finished configuring the connections in the terminal, and it was finally published on the Slack Channels.
Ships:
I made a randomizer-style bot for Slack channels. You can use three commands in your channels: /8ball-ping: Get random answers, just like a magic 8 Ball. /hrandom-number: Get a random number from 1 to 100. -/hrandom-color: Get a random hex color code. I made it for those moments when you just need a random answer, a number, or, for the artists out there, a color! Quick tip: With /8ball-ping, you always need to ask a question. If you run th command withouth one, it’ll ask you to enter a question first....
|
1793062326.2194262
|
1793148726.2194262
|
|
63249
|
parole by @skue | Stardance
|
skue
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T21:49:14Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "3… 2… 1… Introducing… Parole ! When I was a bit younger, I installed Linux and decided to rice it. I loved Cava, and I had the wonderful idea to make an app that could display the current lyrics in my terminal ! Unfortunately, I did not have the competences to make this back then, so I foolishly delegated it to AI… And I never had the courage to rewrite it myself, because it looked sooo scary and hard… And the ai spaghetti code wasn’t here to help me. But I discovered Stardance, and I thought “Hell yeah, why not trying this ?”. Turns out it was easier than I thought ! Parole is a TUI app to display the lyrics of the current song, compatible with Linux (using mpris) and Windows (using winsdk) ! It fetches the lyrics data from LRCLib and displays them with Textual. It may not work perfectly on Windows, because Microsoft decided that yes, it’s a good idea to not return the actual position in the song but rather a position that updates not every time + the moment it was updated. So in most apps, if you play/pause, you break it. That kind of choices is a good reason to switch to Linux, if you want my opinion. Anyway, have fun playing around with it !", "repo": "https://github.com/skueee/parole", "demo": "https://pypi.org/project/parole-tui/"}]...
|
[{"post_id": 78173, "ts": "202 [{"post_id": 78173, "ts": "2026-10-09T21:23:05Z", "hours": 2.2808, "text": "Devlog 5 - Yayyy i’m going to ship ! This took way much more time than I thought, but everything is set up ! I made a readme, a contributing guide, and even issue templates ! Also I made a release workflow, and I’m soooo tired of the fact that Github Actions has no way of testing them, because it keeeps failing for whatever reason aaaaaah Well now it’s published so I just need to test !"}, {"post_id": 78040, "ts": "2026-10-09T09:43:43Z", "hours": 1.9056, "text": "Devlog 4 - I haaaate windows omg So I basically rewrote the logic to get song info. It’s not using playerctl anymore, which was not made to work like that and was not multi platform. Now, I have a little thingy that can provide two “providers”, one for Linux using mpris (dbus-next) and one for Windows using winsdk. The implementation on Linux was pretty easy, but omg why do people still use Windows ? Basically, the Windows API do not return the current position on the song, but a position and a time since it was last updated. So in 90% of the players, if you pause, all the timing will get wrong. And to complement all of this, the experience of using windows is sooo bad, like, wdym the middle mouse button stops working randomly ? Anyway I think i just need to write docs and I’m ready to ship !"}, {"post_id": 75905, "ts": "2026-10-01T15:39:19Z", "hours": 2.6236, "text": "Devlog 3 - It’s working well ! The program can show multiple lines of lyrics, and there is an argument to choose the number of them ! I also improved the lyrics parsing method, and forced the app to use the ANSI colors from the terminal. I think now I will change the metadata fetching to MPRIS via Dbus instead of playerctl, and will do that in a separate file for better organization when I will port to windows"}, {"post_id": 72331, "ts": "2026-09-22T17:57:14Z", "hours": 0.9306, "text": "Delvlog 2 - Well, it’s easier than I thought I knew it would be a small project, but this is reaaaally fast ! In this small update, I added a way to actually parse the lyrics, and show them in the TUI ! For now, there is just one line of lyric, but I will add options to add more lines. I just need to add customization options, fix some errors, maybe find a way to make this run on windows !"}, {"post_id": 71695, "ts": "2026-09-21T10:17:55Z", "hours": 2.8189, "text": "Devlog 1 - Parole, a nice terminal thing for showing lyrics of your favorite song ! Parole is a TUI tool made for your rice ! It will show the lyrics of the song you are currently listening, using Playerctl :) I use Subprocess to get the playerctl metadata, then I use Textual to show everything. For now, it can just get the lyrics and format them in a dict. Not very beautiful for now…"}]...
|
Title: parole by @skue | Stardance
Devlogs:
Devlo Title: parole by @skue | Stardance
Devlogs:
Devlog 1 - Parole, a nice terminal thing for showing lyrics of your favorite song ! Parole is a TUI tool made for your rice ! It will show the lyrics of the song you are currently listening, using Playerctl :) I use Subprocess to get the playerctl metadata, then I use Textual to show everything. For now, it can just get the lyrics and format them in a dict. Not very beautiful for now…
Delvlog 2 - Well, it’s easier than I thought I knew it would be a small project, but this is reaaaally fast ! In this small update, I added a way to actually parse the lyrics, and show them in the TUI ! For now, there is just one line of lyric, but I will add options to add more lines. I just need to add customization options, fix some errors, maybe find a way to make this run on windows !
Devlog 3 - It’s working well ! The program can show multiple lines of lyrics, and there is an argument to choose the number of them ! I also improved the lyrics parsing method, and forced the app to use the ANSI colors from the terminal. I think now I will change the metadata fetching to MPRIS via Dbus instead of playerctl, and will do that in a separate file for better organization when I will port to windows
Devlog 4 - I haaaate windows omg So I basically rewrote the logic to get song info. It’s not using playerctl anymore, which was not made to work like that and was not multi platform. Now, I have a little thingy that can provide two “providers”, one for Linux using mpris (dbus-next) and one for Windows using winsdk. The implementation on Linux was pretty easy, but omg why do people still use Windows ? Basically, the Windows API do not return the current position on the song, but a position and a time since it was last updated. So in 90% of the players, if you pause, all the timing will get wrong. And to complement all of this, the experience of using windows is sooo bad, like, wdym the middle mouse button stops working randomly ? Anyway I think i just need to write docs and I’m ready to ship !
Devlog 5 - Yayyy i’m going to ship ! This took way much more time than I thought, but everything is set up ! I made a readme, a contributing guide, and even issue templates ! Also I made a release workflow, and I’m soooo tired of the fact that Github Actions has no way of testing them, because it keeeps failing for whatever reason aaaaaah Well now it’s published so I just need to test !
Ships:
3… 2… 1… Introducing… Parole ! When I was a bit younger, I installed Linux and decided to rice it. I loved Cava, and I had the wonderful idea to make an app that could display the current lyrics in my terminal ! Unfortunately, I did not have the competences to make this back then, so I foolishly delegated it to AI… And I never had the courage to rewrite it myself, because it looked sooo scary and hard… And the ai spaghetti code wasn’t here to help me. But I discovered Stardance, and I thought “Hell yeah, why not trying this ?”. Turns out it was easier than I thought ! Parole is a TUI app to display the lyrics of the current song, compatible with Linux (using mpris) and Windows (using winsdk) ! It fetches the lyrics data from LRCLib and displays them with Textual. It may not work perfectly on Windows, because Microsoft decided that yes, it’s a good idea to not return the actual position in the song but rather a position that updates not every time + the moment it was updated. So in most apps, if you play/pause, you break it. That kind of choices is a good reason to switch to Linux, if you want my opinion. Anyway, have fun playing around with it !...
|
1793058734.4633832
|
1793145134.4633832
|
|
47926
|
trypadhack by @Liam-_- | Stardance
|
Liam-_-
|
0
|
14.84
|
0
|
[]
|
[{"post_id": 78175, "ts": "202 [{"post_id": 78175, "ts": "2026-10-09T21:32:45Z", "hours": 1.2833, "text": "i remade the case hole for the usbc cable and reddesined the pcb"}, {"post_id": 76460, "ts": "2026-10-03T16:24:58Z", "hours": 3.4003, "text": "i made the chase and the 3d modell of the pcb with parts not sure if the 3d modell and footprint of the olead screen is right."}, {"post_id": 76169, "ts": "2026-10-02T15:45:56Z", "hours": 1.6669, "text": "anyone know how to 3d design on FreeCad? i hafe no idea what to do or anything the tutorial more confuses me then expected. anyone any advice?"}, {"post_id": 73932, "ts": "2026-09-26T10:55:00Z", "hours": 0.8503, "text": "WAR IS OVER i finally done the pcb now onto the case i just wanna get it over before stardance ends that means next few days quick 3d modelling then coding and then the github"}, {"post_id": 69789, "ts": "2026-09-17T19:53:30Z", "hours": 0.3503, "text": "at this point i guess i shuld ask in the slack"}, {"post_id": 68245, "ts": "2026-09-14T19:26:56Z", "hours": 0.2833, "text": "i hafe no idea what i hafe to do the drc manly complains about Plate edge free space violation"}, {"post_id": 66267, "ts": "2026-09-12T00:13:36Z", "hours": 0.2833, "text": "i hafe no idea what i am doing this stupid drc says everytime i do something wrong"}, {"post_id": 65585, "ts": "2026-09-10T20:26:39Z", "hours": 0.4833, "text": "i removed 3 leds so its easyer to connect them but once again the dumb drc says nope"}, {"post_id": 64900, "ts": "2026-09-09T16:36:18Z", "hours": 0.3503, "text": "i think i hafe an idea how it could work now"}, {"post_id": 64238, "ts": "2026-09-08T14:24:08Z", "hours": 0.3667, "text": "i dont know if its right or not ill just try"}, {"post_id": 63699, "ts": "2026-09-07T17:06:45Z", "hours": 0.4836, "text": "i need to start over i guess i noticed my planed parts and stuff was to much to fit the size i imagined and also the drc errors confiused me"}, {"post_id": 62953, "ts": "2026-09-06T14:48:28Z", "hours": 0.6503, "text": "i dont even know what i did i think i connected the leds with the seeduino and then run the drc wich gave me a lot of errors and warinings wich i dont understand if anyone has a tip what i hafe to do i would really appreciate"}, {"post_id": 62273, "ts": "2026-09-05T15:49:58Z", "hours": 2.2922, "text": "PCB design is more complex then expected i did the footprint assignment tool and then worked on the pcb design i didnt knew how i want it too look and when i wasnted to draw the connection i t didnt worked out so i am still on working on the pcb"}, {"post_id": 61541, "ts": "2026-09-04T14:44:29Z", "hours": 1.1836, "text": "Hi i think i am finally done with my scametic after last time i had problem with lapse i made a pause. i at first wanted to check everything i did then tried to organize it better after that i connected everything what wasnt connected found out i made a hole lot of dump mistakes wich i at first didnt knew what caused them but after asking a ki i found out and solved every error"}, {"post_id": 54594, "ts": "2026-08-25T16:54:12Z", "hours": 0.5333, "text": "i tried to get gemini explain matrix wiring to me but didnt worked out good then i tried to follow someone elses worke so i hafe a basis so i can personalize it frome then on. guess i need a lot more of trial and error."}, {"post_id": 53803, "ts": "2026-08-24T14:35:00Z", "hours": 0.3833, "text": "it is the first time i ever tried myself on something like that i basecly followd the tutorial and then wanted to personalize it like you shuld do but because i never did something like that i tried to figure out what has to connect to what i know mostly of that is probaply wrong connected or so but i dint waned to ask ai instantly"}]...
|
Title: trypadhack by @Liam-_- | Stardance
Devlogs Title: trypadhack by @Liam-_- | Stardance
Devlogs:
it is the first time i ever tried myself on something like that i basecly followd the tutorial and then wanted to personalize it like you shuld do but because i never did something like that i tried to figure out what has to connect to what i know mostly of that is probaply wrong connected or so but i dint waned to ask ai instantly
i tried to get gemini explain matrix wiring to me but didnt worked out good then i tried to follow someone elses worke so i hafe a basis so i can personalize it frome then on. guess i need a lot more of trial and error.
Hi i think i am finally done with my scametic after last time i had problem with lapse i made a pause. i at first wanted to check everything i did then tried to organize it better after that i connected everything what wasnt connected found out i made a hole lot of dump mistakes wich i at first didnt knew what caused them but after asking a ki i found out and solved every error
PCB design is more complex then expected i did the footprint assignment tool and then worked on the pcb design i didnt knew how i want it too look and when i wasnted to draw the connection i t didnt worked out so i am still on working on the pcb
i dont even know what i did i think i connected the leds with the seeduino and then run the drc wich gave me a lot of errors and warinings wich i dont understand if anyone has a tip what i hafe to do i would really appreciate
i need to start over i guess i noticed my planed parts and stuff was to much to fit the size i imagined and also the drc errors confiused me
i dont know if its right or not ill just try
i think i hafe an idea how it could work now
i removed 3 leds so its easyer to connect them but once again the dumb drc says nope
i hafe no idea what i am doing this stupid drc says everytime i do something wrong
i hafe no idea what i hafe to do the drc manly complains about Plate edge free space violation
at this point i guess i shuld ask in the slack
WAR IS OVER i finally done the pcb now onto the case i just wanna get it over before stardance ends that means next few days quick 3d modelling then coding and then the github
anyone know how to 3d design on FreeCad? i hafe no idea what to do or anything the tutorial more confuses me then expected. anyone any advice?
i made the chase and the 3d modell of the pcb with parts not sure if the 3d modell and footprint of the olead screen is right.
i remade the case hole for the usbc cable and reddesined the pcb...
|
1792533174.1128592
|
1793137974.1128592
|
|
68709
|
Coordinate Frame utility class by @mason_davies | Coordinate Frame utility class by @mason_davies | Stardance...
|
mason_davies
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T22:15:56Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I interpreted the Roblox CFrame into a Java library class alongside the Vector3. It doesn’t run on its own but it can be implemented into 3d projects and robotics projects for position tracking", "repo": "https://github.com/MasonDavies/cframe", "demo": "https://masondavies.github.io/cframe/"}]...
|
[{"post_id": 78176, "ts": "202 [{"post_id": 78176, "ts": "2026-10-09T21:34:18Z", "hours": 1.3453, "text": "Java CFrame Documentation and Testing"}]...
|
Title: Coordinate Frame utility class by @mason_da Title: Coordinate Frame utility class by @mason_davies | Stardance
Devlogs:
Java CFrame Documentation and Testing
Ships:
I interpreted the Roblox CFrame into a Java library class alongside the Vector3. It doesn’t run on its own but it can be implemented into 3d projects and robotics projects for position tracking...
|
1793062347.4707513
|
1793148747.4707513
|
|
68364
|
Sitting Bluemate by @EndLess9 | Stardance
|
EndLess9
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T03:17:58Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Successfully printed it. I had to improvise a little thought by painting the eyes since I only had blue filament. I also had alot of trouble with this project but I’m glad I overcame it.", "repo": "https://github.com/EndLessDude/Sitting-BlueMate", "demo": ""}]...
|
[{"post_id": 78182, "ts": "202 [{"post_id": 78182, "ts": "2026-10-09T21:59:14Z", "hours": 0.4808, "text": "Devlog #3: Previously the little guy have a pretty solid cylindrical shape and it looked fine, but I wanted to try something different…I used the conic tool and made it’s body wider right above the base. This makes it’s body look more dynamic. Although this was a very simple change it took be about 30 minutes of trial and error before I got it right. Also… This will likely be the last devlog for this project since all the modeling is basically done, all that’s left is to print it."}, {"post_id": 77449, "ts": "2026-10-07T01:56:02Z", "hours": 0.895, "text": "Body and Legs: I scrapped my old technique. I adopted a new one where i create a normal rectangle and then I create a semi-circle on the top and bottom. Very similar to my old technique, but this time i only extrude the rectangle, and I use the revolve tool to create a sphere at the bottom and the top to give it a better look. Eyes and backpack: I also used the rectangle tool to sketch out the eyes and the backback and then I extruded it and used fillet to give it rounded edges. However, its still pretty basic as of now. Soon I will work more on them if needed or I might improve the body and legs. I also removed a chunk from the bottom to make it flat for the among us character can sit on my table."}, {"post_id": 77440, "ts": "2026-10-07T00:48:02Z", "hours": 1.0675, "text": "After many failed sketches and techniques I used the 1 rectangle + 2 3 point arc technique to make pill like shapes that I’m using to make the body and the legs. I also added a rectangle at the bottom to remove a part of the body to make it’s bottom flat. And for the legs I used the fillet tool at the correct proportions to make it round but also flat at the bottom."}]...
|
Title: Sitting Bluemate by @EndLess9 | Stardance
Title: Sitting Bluemate by @EndLess9 | Stardance
Devlogs:
After many failed sketches and techniques I used the 1 rectangle + 2 3 point arc technique to make pill like shapes that I’m using to make the body and the legs. I also added a rectangle at the bottom to remove a part of the body to make it’s bottom flat. And for the legs I used the fillet tool at the correct proportions to make it round but also flat at the bottom.
Body and Legs: I scrapped my old technique. I adopted a new one where i create a normal rectangle and then I create a semi-circle on the top and bottom. Very similar to my old technique, but this time i only extrude the rectangle, and I use the revolve tool to create a sphere at the bottom and the top to give it a better look. Eyes and backpack: I also used the rectangle tool to sketch out the eyes and the backback and then I extruded it and used fillet to give it rounded edges. However, its still pretty basic as of now. Soon I will work more on them if needed or I might improve the body and legs. I also removed a chunk from the bottom to make it flat for the among us character can sit on my table.
Devlog #3: Previously the little guy have a pretty solid cylindrical shape and it looked fine, but I wanted to try something different…I used the conic tool and made it’s body wider right above the base. This makes it’s body look more dynamic. Although this was a very simple change it took be about 30 minutes of trial and error before I got it right. Also… This will likely be the last devlog for this project since all the modeling is basically done, all that’s left is to print it.
Ships:
Successfully printed it. I had to improvise a little thought by painting the eyes since I only had blue filament. I also had alot of trouble with this project but I’m glad I overcame it....
|
1793065800.8341863
|
1793152200.8341863
|
|
14483
|
ArianaGrandeOS by @SP14 | Stardance
|
SP14
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-14T18:22:43Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built ArianaGrandeOS, a browser-based operating system themed entirely around Ariana Grande and her music as a special gift for my sister. It features a custom desktop environment with 12 built-in applications, including a trivia app, paint app, location-based weather, custom widgets, and a dynamic quote rotator. The most challenging part was definitely the music player because manually resizing and compressing square album covers into high-quality wide desktop backgrounds to keep the project file under 2MB was a huge issue, and fixing a ton of frustrating syncing bugs for all 111 tracks almost broke the audio entirely. I’m incredibly proud of the custom queue system I built to make it feel like a real streaming app, and the absolute best part was seeing how happy my sister was when she finally tested it out. Before you test it, you should know that you can drag and resize all four corners of any app window, change up the overall themes and fonts in the settings panel, and click directly on the fortune cookie to crack it open for a hidden message! I hope you enjoy! :)", "repo": "https://github.com/SP14-cyber/ariana-grande-webos", "demo": "https://sp14-cyber.github.io/ariana-grande-webos/GrandeOS.html"}]...
|
[{"post_id": 7819, "ts": "2026 [{"post_id": 7819, "ts": "2026-06-13T01:43:30Z", "hours": 2.0561, "text": "ArianaGrandeOS is finally ready to ship!! I polished everything up and added some final features. I added an Ariana Grande trivia app where you can answer questions about Ariana, her music, and her career. I also updated the homepage, made the time bigger so it’s easier to see, added a “Now Playing” section, and added a few more apps on the display of the homepage. One thing I’m really happy with is the music player. I added a queue system so you can choose exactly which songs you want to play next instead of having to listen in album order. It makes the music player feel way more like a real streaming app and was something I really wanted to include before shipping. The music player ended up being way harder than I expected. Even though all 111 songs were already in the OS, they weren’t syncing properly at all. I spent a long time trying to figure out what was wrong and honestly thought I had broken everything at one point 😭. After a lot of testing and fixing random issues, such as the play button not working, audio not playing, etc etc, I finally got every single song synced correctly and working. Seeing all 111 songs play perfectly from Yours Truly all the way to Eternal Sunshine felt so rewarding. I also added a quote section to the homepage that changes every 30 seconds. All of the quotes are from Ariana Grande, and there are currently 12 different ones that rotate throughout the day. The OS now has 12 different apps and actually feels like a real operating system. Looking back at where I started, it’s kind of crazy how much it grew from a simple pink desktop into this huge Ariana-themed project!! :) The best part was finally showing it to my sister. She thought it was absolutely amazing and was especially excited about the music player. Watching her click through everything and seeing how happy she was made all the frustrating bugs and long hours worth it. I’m really proud of how this turned out and am super excited to finally ship it :)) Thank you all so much for following along through this journey!"}, {"post_id": 7494, "ts": "2026-06-12T14:35:29Z", "hours": 10.5608, "text": "Last devlog I had a very basic frontend and that was basically it. Since then I built almost everything and it actually feels like a real OS now. The biggest thing I worked on was the music player. I built it to look like a real music player with a dark background, big album art, pink progress bar, white play button. You can browse all 7 albums, click to see every song inside, and tap any song to play it. I added in all 111 songs from Yours Truly to Eternal Sunshine in the right order. The hardest part was the wallpaper choices. I wanted real album photos so I had to embed them directly into the HTML so the file works on its own without needing extra files. I also needed to find the wide version of each album so it could fit on the screen; all her album covers are originally square. For some of the photos, I couldn’t find the wise version, so I had to manually import the photos into a photo editor and fill in the backgrounds. Every time I added a photo the file went over 2MB. Took a while to get the quality high but at the same time keep the file size reasonable. Other stuff I added: Calendar with monthly and yearly view, you can add events to any date Journal and Notes combined into one app with tabs Stopwatch and Timer that flashes red in the last 5 seconds and beeps when done A paint app where you can draw and save as PNG Welcome screen with a guide that walks you through the whole OS A to-do list! A fun little fortune cookie app which you can crack (press on), revealing a fortune cookie message related to Ariana Grande Browser that has Ariana Grande’s socials pinned to the top Added a notification bell that keeps you updated on album drops, tours, etc etc Weather application which is based on user’s location All 4 corners of every window can now be dragged to resize Added customizable features such as album cover wallpapers, themes, fonts, changing font size, etc etc What I’m going to be doing next: Fixing up bugs and any issues Adding more details or effects to the home screen to give it more oomph Maybe: adding more wallpaper choices (?) Really happy with what I have and what else I’ll accomplish!! So excited to show this to my sister (I’ll let you all know what she thinks in my next devpost…coming soon!!) :))"}, {"post_id": 7152, "ts": "2026-06-11T22:56:30Z", "hours": 1.8175, "text": "Built the base of GrandeOS and pink desktop background as well as a taskbar with a live clock that updates every second, and the first draggable window. I chose the pink color palette intentionally because my sister’s favorite color matches Ariana’s whole aesthetic, so every color decision was locked in from the start. Next up: building out the actual apps and adding more draggable windows!!"}]...
|
Title: ArianaGrandeOS by @SP14 | Stardance
Devlog Title: ArianaGrandeOS by @SP14 | Stardance
Devlogs:
Built the base of GrandeOS and pink desktop background as well as a taskbar with a live clock that updates every second, and the first draggable window. I chose the pink color palette intentionally because my sister’s favorite color matches Ariana’s whole aesthetic, so every color decision was locked in from the start. Next up: building out the actual apps and adding more draggable windows!!
Last devlog I had a very basic frontend and that was basically it. Since then I built almost everything and it actually feels like a real OS now. The biggest thing I worked on was the music player. I built it to look like a real music player with a dark background, big album art, pink progress bar, white play button. You can browse all 7 albums, click to see every song inside, and tap any song to play it. I added in all 111 songs from Yours Truly to Eternal Sunshine in the right order. The hardest part was the wallpaper choices. I wanted real album photos so I had to embed them directly into the HTML so the file works on its own without needing extra files. I also needed to find the wide version of each album so it could fit on the screen; all her album covers are originally square. For some of the photos, I couldn’t find the wise version, so I had to manually import the photos into a photo editor and fill in the backgrounds. Every time I added a photo the file went over 2MB. Took a while to get the quality high but at the same time keep the file size reasonable. Other stuff I added: Calendar with monthly and yearly view, you can add events to any date Journal and Notes combined into one app with tabs Stopwatch and Timer that flashes red in the last 5 seconds and beeps when done A paint app where you can draw and save as PNG Welcome screen with a guide that walks you through the whole OS A to-do list! A fun little fortune cookie app which you can crack (press on), revealing a fortune cookie message related to Ariana Grande Browser that has Ariana Grande’s socials pinned to the top Added a notification bell that keeps you updated on album drops, tours, etc etc Weather application which is based on user’s location All 4 corners of every window can now be dragged to resize Added customizable features such as album cover wallpapers, themes, fonts, changing font size, etc etc What I’m going to be doing next: Fixing up bugs and any issues Adding more details or effects to the home screen to give it more oomph Maybe: adding more wallpaper choices (?) Really happy with what I have and what else I’ll accomplish!! So excited to show this to my sister (I’ll let you all know what she thinks in my next devpost…coming soon!!) :))
ArianaGrandeOS is finally ready to ship!! I polished everything up and added some final features. I added an Ariana Grande trivia app where you can answer questions about Ariana, her music, and her career. I also updated the homepage, made the time bigger so it’s easier to see, added a “Now Playing” section, and added a few more apps on the display of the homepage. One thing I’m really happy with is the music player. I added a queue system so you can choose exactly which songs you want to play next instead of having to listen in album order. It makes the music player feel way more like a real streaming app and was something I really wanted to include before shipping. The music player ended up being way harder than I expected. Even though all 111 songs were already in the OS, they weren’t syncing properly at all. I spent a long time trying to figure out what was wrong and honestly thought I had broken everything at one point 😭. After a lot of testing and fixing random issues, such as the play button not working, audio not playing, etc etc, I finally got every single song synced correctly and working. Seeing all 111 songs play perfectly from Yours Truly all the way to Eternal Sunshine felt so rewarding. I also added a quote section to the homepage that changes every 30 seconds. All of the quotes are from Ariana Grande, and there are currently 12 different ones that rotate throughout the day. The OS now has 12 different apps and actually feels like a real operating system. Looking back at where I started, it’s kind of crazy how much it grew from a simple pink desktop into this huge Ariana-themed project!! :) The best part was finally showing it to my sister. She thought it was absolutely amazing and was especially excited about the music player. Watching her click through everything and seeing how happy she was made all the frustrating bugs and long hours worth it. I’m really proud of how this turned out and am super excited to finally ship it :)) Thank you all so much for following along through this journey!
Ships:
I built ArianaGrandeOS, a browser-based operating system themed entirely around Ariana Grande and her music as a special gift for my sister. It features a custom desktop environment with 12 built-in applications, including a trivia app, paint app, location-based weather, custom widgets, and a dynamic quote rotator. The most challenging part was definitely the music player because manually resizing and compressing square album covers into high-quality wide desktop backgrounds to keep the project file under 2MB was a huge issue, and fixing a ton of frustrating syncing bugs for all 111 tracks almost broke the audio entirely. I’m incredibly proud of the custom queue system I built to make it feel like a real streaming app, and the absolute best part was seeing how happy my sister was when she finally tested it out. Before you test it, you should know that you can drag and resize all four corners of any app window, change up the overall themes and fonts in the settings panel, and click directly on the fortune cookie to crack it open for a hidden message! I hope you enjoy! :)...
|
1792878467.6506474
|
1793742467.6506474
|
|
60583
|
test test by @HikarusTenacity | Stardance
|
HikarusTenacity
|
0
|
10.31
|
0
|
[]
|
[{"post_id": 78193, "ts": "202 [{"post_id": 78193, "ts": "2026-10-09T22:42:48Z", "hours": 10.3058, "text": "primarily worked on fixes on imports and documentation, generally most of the types and constants are better organized than before, using defensive typing. Page is unable to load because I’m not done but I need to log the time"}]...
|
Title: test test by @HikarusTenacity | Stardance
Title: test test by @HikarusTenacity | Stardance
Devlogs:
primarily worked on fixes on imports and documentation, generally most of the types and constants are better organized than before, using defensive typing. Page is unable to load because I’m not done but I need to log the time...
|
1793036886.878707
|
1793641686.878707
|
|
54355
|
Mahoraga: An AI System that constantly adapts by @ Mahoraga: An AI System that constantly adapts by @jujharseehra | Stardance...
|
jujharseehra
|
1
|
13.27
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T00:51:19Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Shipped Mahoraga! Loved working on this project, and while there are definitely areas for improvement, I do feel satisfied with my result. This will most likely be my last ship for this year’s Stardance challenge. See you next year!", "repo": "https://github.com/JujharSeehra/mahoraga", "demo": "https://github.com/JujharSeehra/mahoraga/releases/tag/v1.0.0"}]...
|
[{"post_id": 78195, "ts": "202 [{"post_id": 78195, "ts": "2026-10-09T22:51:06Z", "hours": 0.5036, "text": "Finished adding changes to Mahoraga! Also, I have added HCAI support, allowing for minors to use Mahoraga effectively, though the amount of tools they can use is also limited. If you have a mac, feel free to try this amazing tool out!"}, {"post_id": 74213, "ts": "2026-09-26T22:40:10Z", "hours": 0.7619, "text": "Added lots of changes to Mahoraga, including changing packaging format, and working on adding HCAI support."}, {"post_id": 65110, "ts": "2026-09-10T00:50:04Z", "hours": 0.9972, "text": "Finished Mahoraga! Added all the UI changes I wanted, and I also created the README / Release for the project. Right now it’s only available for mac, but feel free to edit the code to work for your own computer! Time to ship this project!"}, {"post_id": 64552, "ts": "2026-09-09T01:45:26Z", "hours": 0.4228, "text": "Been working on Mahoraga: all that remains is just some UI improvements, and then I will be able to ship this project!"}, {"post_id": 63351, "ts": "2026-09-07T04:01:50Z", "hours": 1.0094, "text": "Been working on Mahoraga. Unfortunately, there are alot of issues that I was unable to identify earlier, so the ship will have to be delayed slightly :(. Working on finishing my last features, then doing one big bugfix."}, {"post_id": 61140, "ts": "2026-09-03T22:02:28Z", "hours": 0.8314, "text": "Been working on improving my code, and adding a few more features into the Hardware components. Soon, I will begin working on improving the UI."}, {"post_id": 59676, "ts": "2026-09-01T16:28:42Z", "hours": 1.1267, "text": "Been working on Mahoraga. Added Serial Communication, which allows for Mahoraga to moniter devices connected to my computer, and their most recent output, and also added connecting and disconnecting to devices like the Raspberry Pi and Arduino through USB. Next step is to finish with hardware, and incorperate everything into the UI."}, {"post_id": 58212, "ts": "2026-08-30T15:56:24Z", "hours": 1.5397, "text": "Added improved features for opening coding projects and files using Mahoraga. However, my next obstacle is getting these projects to open in a code editor, like VS code."}, {"post_id": 57030, "ts": "2026-08-29T03:17:13Z", "hours": 1.6825, "text": "Added the ability to open websites, read information on said websites, and open folders and applications on my computer using Mahoraga. This is a very major success, but I am working on something major for the next part of my project: Mahoraga’s adaptation. Also facing my biggest problem yet: How to continue testing with a horrible API key. 😭"}, {"post_id": 56365, "ts": "2026-08-28T03:35:08Z", "hours": 1.0353, "text": "Been working on Mahoraga’s tool system, which will be the primary way that I will be using Mahoraga. So far, it can locate and identify parts of projects, like folders and files, which I have given it permission to view, but it cannot edit anything. Additionally, I made it available to run with just the simple command “mahoraga”."}, {"post_id": 56219, "ts": "2026-08-27T21:49:04Z", "hours": 1.7653, "text": "Finished Chat Interface and system artitechture of Mahoraga. I also was able to build Mahoraga’s wheel, which spins at different speeds depending on what task it is doing. Let me know if you have any more ideas for what I can add to Mahoraga. Up next are tools for easier access to certain things on my computer, and I am aiming to eventually add connection to my Raspberry Pi. The API key I got for free from Google AI studio also makes testing a lot harder, so I will be looking for alternatives."}, {"post_id": 55335, "ts": "2026-08-27T02:25:44Z", "hours": 0.535, "text": "Started working on the UI for mahoraga. No features rn, but working on the chat interface, which will be the primary way of accessing Mahoraga"}, {"post_id": 54849, "ts": "2026-08-26T00:58:55Z", "hours": 1.1969, "text": "Started building Mahoraga! Mahoraga is an AI system that lives on my computer as a personal assistant, similar to jarvis, but, when facing a new problem, it adapts to the solution, and stores it in it’s memory, in order to constantly improve."}]...
|
Title: Mahoraga: An AI System that constantly adap Title: Mahoraga: An AI System that constantly adapts by @jujharseehra | Stardance
Devlogs:
Started building Mahoraga! Mahoraga is an AI system that lives on my computer as a personal assistant, similar to jarvis, but, when facing a new problem, it adapts to the solution, and stores it in it’s memory, in order to constantly improve.
Started working on the UI for mahoraga. No features rn, but working on the chat interface, which will be the primary way of accessing Mahoraga
Finished Chat Interface and system artitechture of Mahoraga. I also was able to build Mahoraga’s wheel, which spins at different speeds depending on what task it is doing. Let me know if you have any more ideas for what I can add to Mahoraga. Up next are tools for easier access to certain things on my computer, and I am aiming to eventually add connection to my Raspberry Pi. The API key I got for free from Google AI studio also makes testing a lot harder, so I will be looking for alternatives.
Been working on Mahoraga’s tool system, which will be the primary way that I will be using Mahoraga. So far, it can locate and identify parts of projects, like folders and files, which I have given it permission to view, but it cannot edit anything. Additionally, I made it available to run with just the simple command “mahoraga”.
Added the ability to open websites, read information on said websites, and open folders and applications on my computer using Mahoraga. This is a very major success, but I am working on something major for the next part of my project: Mahoraga’s adaptation. Also facing my biggest problem yet: How to continue testing with a horrible API key. 😭
Added improved features for opening coding projects and files using Mahoraga. However, my next obstacle is getting these projects to open in a code editor, like VS code.
Been working on Mahoraga. Added Serial Communication, which allows for Mahoraga to moniter devices connected to my computer, and their most recent output, and also added connecting and disconnecting to devices like the Raspberry Pi and Arduino through USB. Next step is to finish with hardware, and incorperate everything into the UI.
Been working on improving my code, and adding a few more features into the Hardware components. Soon, I will begin working on improving the UI.
Been working on Mahoraga. Unfortunately, there are alot of issues that I was unable to identify earlier, so the ship will have to be delayed slightly :(. Working on finishing my last features, then doing one big bugfix.
Been working on Mahoraga: all that remains is just some UI improvements, and then I will be able to ship this project!
Finished Mahoraga! Added all the UI changes I wanted, and I also created the README / Release for the project. Right now it’s only available for mac, but feel free to edit the code to work for your own computer! Time to ship this project!
Added lots of changes to Mahoraga, including changing packaging format, and working on adding HCAI support.
Finished adding changes to Mahoraga! Also, I have added HCAI support, allowing for minors to use Mahoraga effectively, though the amount of tools they can use is also limited. If you have a mac, feel free to try this amazing tool out!
Ships:
Shipped Mahoraga! Loved working on this project, and while there are definitely areas for improvement, I do feel satisfied with my result. This will most likely be my last ship for this year’s Stardance challenge. See you next year!...
|
1793120013.4531748
|
1793206413.4531748
|
|
68875
|
Top 5 citys by @syedakhter | Stardance
|
syedakhter
|
1
|
2.0
|
1
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T22:58:58Z", "hours": 2.0, "multiplier": 1.0, "payout": 1, "blessing": "neutral", "text": "This website is about the top 5 citys and took me 2hr", "repo": "https://github.com/8051987-eng/TOP-5-CITYS/", "demo": "https://8051987-eng.github.io/TOP-5-CITYS/"}]...
|
[{"post_id": 78196, "ts": "202 [{"post_id": 78196, "ts": "2026-10-09T22:55:45Z", "hours": 2.2036, "text": "Top 5 citys website"}]...
|
Title: Top 5 citys by @syedakhter | Stardance
Dev Title: Top 5 citys by @syedakhter | Stardance
Devlogs:
Top 5 citys website
Ships:
This website is about the top 5 citys and took me 2hr...
|
1793062365.5437453
|
1793148765.5437453
|
|
68444
|
TF News by @Mohamed_Farag | Stardance
|
Mohamed_Farag
|
0
|
13.14
|
0
|
[]
|
[{"post_id": 78198, "ts": "202 [{"post_id": 78198, "ts": "2026-10-09T23:01:57Z", "hours": 0.9967, "text": "I was working in the previous days on an n8n workflow that will update the website with the new opportunities. So the time is not counted in Hackatime. Also, I have reorganized the project’s files because they were a bit messy"}, {"post_id": 77654, "ts": "2026-10-07T19:10:08Z", "hours": 0.4692, "text": "I made each category customized, and the topic filter is now flexible, so it changes when the top choice changes, so now it makes sense. Furthermore, I edited the opportunity repo and model so they are compatible with the new changes."}, {"post_id": 77641, "ts": "2026-10-07T18:23:47Z", "hours": 2.1367, "text": "I have started with creating a home page displaying the 4 main categories ( Admission, Programs, Internships, and Extracurricular activities). Then I made the opportunities page usable by the 4 categories."}, {"post_id": 77570, "ts": "2026-10-07T14:44:27Z", "hours": 9.5422, "text": "I was working on this project to create a simple opportunities website. And I did this with those 9 hours logged. I realized I could make it more useful by adding more features and data."}]...
|
Title: TF News by @Mohamed_Farag | Stardance
Devl Title: TF News by @Mohamed_Farag | Stardance
Devlogs:
I was working on this project to create a simple opportunities website. And I did this with those 9 hours logged. I realized I could make it more useful by adding more features and data.
I have started with creating a home page displaying the 4 main categories ( Admission, Programs, Internships, and Extracurricular activities). Then I made the opportunities page usable by the 4 categories.
I made each category customized, and the topic filter is now flexible, so it changes when the top choice changes, so now it makes sense. Furthermore, I edited the opportunity repo and model so they are compatible with the new changes.
I was working in the previous days on an n8n workflow that will update the website with the new opportunities. So the time is not counted in Hackatime. Also, I have reorganized the project’s files because they were a bit messy...
|
1793120135.9656308
|
1793724935.9656308
|
|
67933
|
CopperPlus by @Parrot | Stardance
|
Parrot
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-09T23:25:13Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is Copper Plus with the Mod copper plus I added the Copper Wire and the Copper Magnet things you can do witht he magnet collect exp -collect any dropped block witten a 12 block raduis and best one yet steal your friend diamonds when thier mining and yor behind them!! (i spent over 2 hours but liek 3 hours of my work was me doing stuff that hackatime doesnt count)", "repo": "https://github.com/ryan113cpu/Copper-Plus", "demo": "https://www.curseforge.com/minecraft/mc-mods/copper-plus-parrotriderr"}]...
|
[{"post_id": 78200, "ts": "202 [{"post_id": 78200, "ts": "2026-10-09T23:19:10Z", "hours": 0.4089, "text": "Finally done the magnet!!!! ready to ship!!! :D"}, {"post_id": 77452, "ts": "2026-10-07T02:09:36Z", "hours": 1.1006, "text": "Finally finished the Copper wire!!!!!!! secret spoiler on Mangnet heads up!"}]...
|
Title: CopperPlus by @Parrot | Stardance
Devlogs: Title: CopperPlus by @Parrot | Stardance
Devlogs:
Finally finished the Copper wire!!!!!!! secret spoiler on Mangnet heads up!
Finally done the magnet!!!! ready to ship!!! :D
Ships:
This is Copper Plus with the Mod copper plus I added the Copper Wire and the Copper Magnet things you can do witht he magnet collect exp -collect any dropped block witten a 12 block raduis and best one yet steal your friend diamonds when thier mining and yor behind them!! (i spent over 2 hours but liek 3 hours of my work was me doing stuff that hackatime doesnt count)...
|
1793008389.243387
|
1793872389.243387
|
|
68880
|
File_Mover by @Oreoyeet36 | Stardance
|
Oreoyeet36
|
0
|
2.04
|
0
|
[]
|
[{"post_id": 78207, "ts": "202 [{"post_id": 78207, "ts": "2026-10-09T23:37:07Z", "hours": 2.0419, "text": "I am working on making a file mover, which can move a file from one computer to the next with encryption in-between."}]...
|
Title: File_Mover by @Oreoyeet36 | Stardance
Devl Title: File_Mover by @Oreoyeet36 | Stardance
Devlogs:
I am working on making a file mover, which can move a file from one computer to the next with encryption in-between....
|
1793127089.9162216
|
1793731889.9162216
|
|
8061
|
Focus by @anay_ | Stardance
|
anay_
|
1
|
4.0
|
6
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T05:54:13Z", "hours": 3.0, "multiplier": 2.57, "payout": 6, "blessing": "neutral", "text": "I made Focus, a Mac menu bar app that helps you stay off distracting apps and websites. It can start focus sessions, block apps or sites, set daily app limits, and show how much time you spent on apps and websites today. The hardest part was making it work with Mac permissions and browser controls. I am proud that it is a real working app, not just a design. To test it, open the app, give it the permissions it asks for, add an app or website to block, start a focus session, and try opening that app or site.", "repo": "https://github.com/anaygoyal09/Focus", "demo": "https://github.com/anaygoyal09/Focus/releases/tag/v2.0.1"}]...
|
[{"post_id": 7821, "ts": "2026 [{"post_id": 7821, "ts": "2026-06-13T01:47:55Z", "hours": 1.0, "text": "Critical errors fixed which were related to the app working while in sandbox but had problems getting permissions after getting signed took some time to go about fix it."}, {"post_id": 3312, "ts": "2026-06-06T05:34:47Z", "hours": 2.0, "text": "I made changes to make it log websites too. Made UI more modern"}, {"post_id": 2975, "ts": "2026-06-05T21:51:53Z", "hours": 0.0, "text": "A simple focus that includes limits and it helps me stay on task, really helped me get off social media"}]...
|
Title: Focus by @anay_ | Stardance
Devlogs:
A sim Title: Focus by @anay_ | Stardance
Devlogs:
A simple focus that includes limits and it helps me stay on task, really helped me get off social media
I made changes to make it log websites too. Made UI more modern
Critical errors fixed which were related to the app working while in sandbox but had problems getting permissions after getting signed took some time to go about fix it.
Ships:
I made Focus, a Mac menu bar app that helps you stay off distracting apps and websites. It can start focus sessions, block apps or sites, set daily app limits, and show how much time you spent on apps and websites today. The hardest part was making it work with Mac permissions and browser controls. I am proud that it is a real working app, not just a design. To test it, open the app, give it the permissions it asks for, add an app or website to block, start a focus session, and try opening that app or site....
|
1792882040.9550064
|
1793746040.9550064
|
|
67829
|
TrackPoint-style mouse for tight spaces by @smitam TrackPoint-style mouse for tight spaces by @smitamaw | Stardance...
|
smitamaw
|
0
|
1.33
|
0
|
[]
|
[{"post_id": 78218, "ts": "202 [{"post_id": 78218, "ts": "2026-10-10T00:34:16Z", "hours": 0.8836, "text": "Devlog #2 I worked a little more on my CAD model for my TrackPoint-style mouse device. This device is intended to fit in tight spaces where a traditional mouse wouldn’t work, such as if you are using a laptop on your lap or on a very small desk. In my CAD model, I added a space/slot for the ESP32S3 that processes imputs from the joystick and buttons and sends mouse movements and actions to the computer via USB cable. (I use a USB-C to USB-A male-to-male cable to attach the device to the computer.) Next up: printing out the case and taping all the components in place!"}, {"post_id": 76613, "ts": "2026-10-04T05:34:04Z", "hours": 0.45, "text": "I just wired up the first prototype of my new project–a mouse that uses a joystick and buttons just like Lenovo ThinkPad TrackPoint, for use in spaces where a traditional mouse would not have enough freedom of movement. The reason I am building this is because, in most of my classes in high school, a laptop is required. However, I don’t want to use the trackpad, and the mouse that I bring usually doesn’t get enough space to move around on my small desk. So I am creating this project to help me use my laptop better and more conveniently at school. In addition to wiring up my first prototype, I also CADded up a first prototype for the 3D-printed frame the components are going to rest on. (It isn’t going to last long if it stays taped onto a folded index card!) Hopefully in the next devlog I will have printed the frame and maybe even mounted the parts to it!"}]...
|
Title: TrackPoint-style mouse for tight spaces by Title: TrackPoint-style mouse for tight spaces by @smitamaw | Stardance
Devlogs:
I just wired up the first prototype of my new project–a mouse that uses a joystick and buttons just like Lenovo ThinkPad TrackPoint, for use in spaces where a traditional mouse would not have enough freedom of movement. The reason I am building this is because, in most of my classes in high school, a laptop is required. However, I don’t want to use the trackpad, and the mouse that I bring usually doesn’t get enough space to move around on my small desk. So I am creating this project to help me use my laptop better and more conveniently at school. In addition to wiring up my first prototype, I also CADded up a first prototype for the 3D-printed frame the components are going to rest on. (It isn’t going to last long if it stays taped onto a folded index card!) Hopefully in the next devlog I will have printed the frame and maybe even mounted the parts to it!
Devlog #2 I worked a little more on my CAD model for my TrackPoint-style mouse device. This device is intended to fit in tight spaces where a traditional mouse wouldn’t work, such as if you are using a laptop on your lap or on a very small desk. In my CAD model, I added a space/slot for the ESP32S3 that processes imputs from the joystick and buttons and sends mouse movements and actions to the computer via USB cable. (I use a USB-C to USB-A male-to-male cable to attach the device to the computer.) Next up: printing out the case and taping all the components in place!...
|
1793116095.4446177
|
1793720895.4446177
|
|
30118
|
Connect 4 AI by @Kazamir | Stardance
|
Kazamir
|
0
|
27.33
|
0
|
[]
|
[{"post_id": 78220, "ts": "202 [{"post_id": 78220, "ts": "2026-10-10T00:36:43Z", "hours": 2.9881, "text": "I overhauled the UI, deciding to scrap the pixel background for a more minimalistic one. I learned how to import a font and use it and made some pretty decent looking buttons and peices."}, {"post_id": 31117, "ts": "2026-07-19T07:58:50Z", "hours": 2.0739, "text": "#Pixel Art I added a pixalart board and peices, and added a timer for ai move so it doesnt move too fast"}, {"post_id": 30069, "ts": "2026-07-17T11:10:34Z", "hours": 0.8986, "text": "Checkboxes I implemented checkboxes so that you can choose which model to play against."}, {"post_id": 29353, "ts": "2026-07-16T07:37:49Z", "hours": 11.1353, "text": "DEEP Monte Carlo Tree search (AlphaZero) In this update, I combined MCTS with a Deep learning model, mimicking that of AlphaZero. Why? Because I like deep learning and wanted to understand how reinforcement learning can work. Unfortunately the final model that came out wasn’t the best, but it is still stronger than a simple UCB algorithmn, if just barely, winning 60% of the time against UCB. The CNN Cnns are Deep learning networks - machine learning networks consisting of layers of neurons that process an input to an output, transform it and pass it to the next layer. CNNs are a type of network that performs a convolution operation when reading an image, reading the image in chunks, (4x4 in this case) and transforming the data into useable information for later layers, before finally deciding on a move. Features I used pytorch to code my network, and hence had to convert my image, a list of 1s,-1s and 0s representing a connect 4 board into a tensor. But before I can pass the board to the model (CNN) for prediction, I need to break the board up into features. To ensure that the model has enough information to learn the rules of the game, I broke the board into 4 feature boards. The first board contains 1s for free spots and 0s for occupied spots. The second board only shows player 1 peices and the third board only shows player 2 peices and the final board just shows 1s or -1s depending on whose turn it is. I converted these 4 boards into tensors and fed them into my network. Model Architecture The model architecture consists of 3 convolution blocks each which consists of a CNN, a reLu activation function and a batch normaliser. Finally, I have 2 heads, a value head and a policy head. The value head is a prediction of who is winning the game, whereas the policy head is the probabilities of the next best move. By choosing the highest probabilty, you can get the model’s next move. DMCTS To actually train and use the model, we combine it with the MCTS algorithm from my last devlog. During the MCTS simulation, whenever we reach a node which has already been explored, we choose the move using a rule that combines what the model recommends is best (via the policy head) and the average score of the node. When we reach a new node, instead of doing random rollouts to see who would win, we trust the model’s value head. Training Training occurs during self play where the model plays itself. At the start, each move is random, and the model predicts bad moves. But since the model is combined with MCTS, the model;s bad moves are eventually overwritten by better moves. At every move, the board and the model prediction are recorded. When we reach the end of the game, all the models values are replaced with the real results of the training, and each board state is stored in a databank. After every 10 games of self play, the model trains on a sample of these board states, updating the policy prediction by comparing the model’s policy values to MCTS’s run values and updating the model’s values by comparing who it thought was winning compared to who won. Post training After training around 12 generations of models, with each generation taking a few hours of training time, and bugfixing flawed models and architecture, I finally produced a model that can outmatch UCB. The real bottleneck was the MCTS, to train a better model, I would need more rollouts, but increasing rollouts increased the time each training run took. I trained the model with 500 rollouts, which isn’t the best, but was all I could afford. To make a better model I would need faster code and much more compute. In the end of the day, this was a very informative experiance on Reinforement Learning for me, and while the model isn’t the smartest, it isn’t incompetant either."}, {"post_id": 23850, "ts": "2026-07-07T01:16:19Z", "hours": 5.0719, "text": "Monte Carlo Tree Search The UCB is a good algorithmn, until you realise that it can only see 1 move into the future. A strong player for any project has the ability to stratagise, by predicting into the future. Monte Carlo Tree Search takes this UCB algorithm and gives it the ability to see into the future, creating a stronger AI opponent at the cost of compute. How it works Monte Carlo tree search, as it’s name suggests, builds a tree of future states to calculate which state is the best. The algorithm works in 4 steps - Selection, Expansion, Simulation and Backpropogation Selection At the start of the search, the parent node looks to its children node, which consist of the legal connect 4 moves, e.g 7 children for each column you can place a piece in. If each child has already been simulated at least once, the child with the highest UCB score is chosen and the process repeats until you reach a node where not all future moves have been simulated. Expansion Once you reach a new unexplored node, you fist expand the node, creating children for each of the possible states the next move can take. Simulation Once you have reached a node where all the children aren’t explored, one of these children are chosen, and a random rollout takes place, similiarly to the UCB algorithm Backpropogation After simulation, the results of the simulation (win or loss or draw) go back up the tree, updating each parent node with the updated win score. Decision making After enough simulations, the child of the original state with the highest run count is chosen - as this is deemed to be the most promising node by the algorithm Implementation Implementing this algorithm from scartch was harder than expected, but also fun! The only problem was that for higher simulation counts, such as 1,000 or 10,000, it takes a good few seconds for the algorithm to make a decision. I also somehow broke my original connect 4 code when trying to implement this program. I ran 100 simulations of MCTS vs UCB, both with 1000 simulations each, and MCTS only won 20 more games than ucb. I moved MCTS simulation count to 10000 and it won most of the games played."}, {"post_id": 22038, "ts": "2026-07-04T09:10:15Z", "hours": 0.3464, "text": "I remade the PvP mode so now the game is fully playable, added a purple background for the gameboard and made the background black for empty peices."}, {"post_id": 22030, "ts": "2026-07-04T08:46:56Z", "hours": 2.0686, "text": "This update was a revamp of my old code, I remade everything but the PVP section and made the screen resizable."}, {"post_id": 21410, "ts": "2026-07-03T10:40:53Z", "hours": 0.7989, "text": "Added easy, medium and hard mode - each being UCBs but with different runtimes. Also updated the buttons as they were outdated code"}, {"post_id": 21284, "ts": "2026-07-03T03:59:15Z", "hours": 1.9475, "text": "UCB - Upper Confidence Bound The UCB algorithm is an algorithm that I created to play connect 4. How it works The philosphy of UCB is doing random simulations of the game, and the move with the highest winrate in the random simulations is the best move. The problem UCB solves is given a set amount of simulations - called rollouts, how do you allocate the amount of rollouts each move gets? You want to spend more time on promising moves, and less on unpromising moves, but you still need to try these unpromising moves because they may be good, but have low winrates just due to random chance. This is decided by the UCB rule: UCBᵢ = avg(Xᵢ) + √( 2 ln(T) / nᵢ ) Which is the average winrate of the move i plus an optimism score. The more times you play a move, the chance that it is secretely a good move decreases. This ensures that you spend more time on good moves (high average) but also spend some times on worse moves that may turn out to be better by investing more rollouts on them. Implementation I implemented this into my connect 4 game I made, and allocated rollouts to 1000, so it makes 1000 random simulations to choose each move, and it kept on beating me. I had to reduce rollouts to 250 so I had a chance of winning."}]...
|
Title: Connect 4 AI by @Kazamir | Stardance
Devlo Title: Connect 4 AI by @Kazamir | Stardance
Devlogs:
UCB - Upper Confidence Bound The UCB algorithm is an algorithm that I created to play connect 4. How it works The philosphy of UCB is doing random simulations of the game, and the move with the highest winrate in the random simulations is the best move. The problem UCB solves is given a set amount of simulations - called rollouts, how do you allocate the amount of rollouts each move gets? You want to spend more time on promising moves, and less on unpromising moves, but you still need to try these unpromising moves because they may be good, but have low winrates just due to random chance. This is decided by the UCB rule: UCBᵢ = avg(Xᵢ) + √( 2 ln(T) / nᵢ ) Which is the average winrate of the move i plus an optimism score. The more times you play a move, the chance that it is secretely a good move decreases. This ensures that you spend more time on good moves (high average) but also spend some times on worse moves that may turn out to be better by investing more rollouts on them. Implementation I implemented this into my connect 4 game I made, and allocated rollouts to 1000, so it makes 1000 random simulations to choose each move, and it kept on beating me. I had to reduce rollouts to 250 so I had a chance of winning.
Added easy, medium and hard mode - each being UCBs but with different runtimes. Also updated the buttons as they were outdated code
This update was a revamp of my old code, I remade everything but the PVP section and made the screen resizable.
I remade the PvP mode so now the game is fully playable, added a purple background for the gameboard and made the background black for empty peices.
Monte Carlo Tree Search The UCB is a good algorithmn, until you realise that it can only see 1 move into the future. A strong player for any project has the ability to stratagise, by predicting into the future. Monte Carlo Tree Search takes this UCB algorithm and gives it the ability to see into the future, creating a stronger AI opponent at the cost of compute. How it works Monte Carlo tree search, as it’s name suggests, builds a tree of future states to calculate which state is the best. The algorithm works in 4 steps - Selection, Expansion, Simulation and Backpropogation Selection At the start of the search, the parent node looks to its children node, which consist of the legal connect 4 moves, e.g 7 children for each column you can place a piece in. If each child has already been simulated at least once, the child with the highest UCB score is chosen and the process repeats until you reach a node where not all future moves have been simulated. Expansion Once you reach a new unexplored node, you fist expand the node, creating children for each of the possible states the next move can take. Simulation Once you have reached a node where all the children aren’t explored, one of these children are chosen, and a random rollout takes place, similiarly to the UCB algorithm Backpropogation After simulation, the results of the simulation (win or loss or draw) go back up the tree, updating each parent node with the updated win score. Decision making After enough simulations, the child of the original state with the highest run count is chosen - as this is deemed to be the most promising node by the algorithm Implementation Implementing this algorithm from scartch was harder than expected, but also fun! The only problem was that for higher simulation counts, such as 1,000 or 10,000, it takes a good few seconds for the algorithm to make a decision. I also somehow broke my original connect 4 code when trying to implement this program. I ran 100 simulations of MCTS vs UCB, both with 1000 simulations each, and MCTS only won 20 more games than ucb. I moved MCTS simulation count to 10000 and it won most of the games played.
DEEP Monte Carlo Tree search (AlphaZero) In this update, I combined MCTS with a Deep learning model, mimicking that of AlphaZero. Why? Because I like deep learning and wanted to understand how reinforcement learning can work. Unfortunately the final model that came out wasn’t the best, but it is still stronger than a simple UCB algorithmn, if just barely, winning 60% of the time against UCB. The CNN Cnns are Deep learning networks - machine learning networks consisting of layers of neurons that process an input to an output, transform it and pass it to the next layer. CNNs are a type of network that performs a convolution operation when reading an image, reading the image in chunks, (4x4 in this case) and transforming the data into useable information for later layers, before finally deciding on a move. Features I used pytorch to code my network, and hence had to convert my image, a list of 1s,-1s and 0s representing a connect 4 board into a tensor. But before I can pass the board to the model (CNN) for prediction, I need to break the board up into features. To ensure that the model has enough information to learn the rules of the game, I broke the board into 4 feature boards. The first board contains 1s for free spots and 0s for occupied spots. The second board only shows player 1 peices and the third board only shows player 2 peices and the final board just shows 1s or -1s depending on whose turn it is. I converted these 4 boards into tensors and fed them into my network. Model Architecture The model architecture consists of 3 convolution blocks each which consists of a CNN, a reLu activation function and a batch normaliser. Finally, I have 2 heads, a value head and a policy head. The value head is a prediction of who is winning the game, whereas the policy head is the probabilities of the next best move. By choosing the highest probabilty, you can get the model’s next move. DMCTS To actually train and use the model, we combine it with the MCTS algorithm from my last devlog. During the MCTS simulation, whenever we reach a node which has already been explored, we choose the move using a rule that combines what the model recommends is best (via the policy head) and the average score of the node. When we reach a new node, instead of doing random rollouts to see who would win, we trust the model’s value head. Training Training occurs during self play where the model plays itself. At the start, each move is random, and the model predicts bad moves. But since the model is combined with MCTS, the model;s bad moves are eventually overwritten by better moves. At every move, the board and the model prediction are recorded. When we reach the end of the game, all the models values are replaced with the real results of the training, and each board state is stored in a databank. After every 10 games of self play, the model trains on a sample of these board states, updating the policy prediction by comparing the model’s policy values to MCTS’s run values and updating the model’s values by comparing who it thought was winning compared to who won. Post training After training around 12 generations of models, with each generation taking a few hours of training time, and bugfixing flawed models and architecture, I finally produced a model that can outmatch UCB. The real bottleneck was the MCTS, to train a better model, I would need more rollouts, but increasing rollouts increased the time each training run took. I trained the model with 500 rollouts, which isn’t the best, but was all I could afford. To make a better model I would need faster code and much more compute. In the end of the day, this was a very informative experiance on Reinforement Learning for me, and while the model isn’t the smartest, it isn’t incompetant either.
Checkboxes I implemented checkboxes so that you can choose which model to play against.
#Pixel Art I added a pixalart board and peices, and added a timer for ai move so it doesnt move too fast
I overhauled the UI, deciding to scrap the pixel background for a more minimalistic one. I learned how to import a font and use it and made some pretty decent looking buttons and peices....
|
1792601237.376176
|
1793206037.376176
|
|
66596
|
KyuSin by @Myukyu | Stardance
|
Myukyu
|
0
|
7.91
|
0
|
[]
|
[{"post_id": 78221, "ts": "202 [{"post_id": 78221, "ts": "2026-10-10T00:39:01Z", "hours": 7.9133, "text": "me, made more games inside. mostly card games."}]...
|
Title: KyuSin by @Myukyu | Stardance
Devlogs:
me, Title: KyuSin by @Myukyu | Stardance
Devlogs:
me, made more games inside. mostly card games....
|
1793101712.687614
|
1793706512.687614
|
|
68512
|
Office Job Sim by @Nugget_Bwai | Stardance
|
Nugget_Bwai
|
0
|
0.47
|
0
|
[]
|
[{"post_id": 78224, "ts": "202 [{"post_id": 78224, "ts": "2026-10-10T00:52:02Z", "hours": 0.4717, "text": "OFFICE JOB SIM I have started building the map of the game (watch the video)"}]...
|
Title: Office Job Sim by @Nugget_Bwai | Stardance
Title: Office Job Sim by @Nugget_Bwai | Stardance
Devlogs:
OFFICE JOB SIM I have started building the map of the game (watch the video)...
|
1793123336.243532
|
1793728136.243532
|
|
32375
|
Music Syncer by @techs-sus | Stardance
|
techs-sus
|
1
|
64.46
|
833
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T23:54:31Z", "hours": 45.0, "multiplier": 18.46, "payout": 833, "blessing": "neutral", "text": "I made a Kotlin CLI program that synchronizes a YouTube Music playlist to a SQLite database locally. I made this because I want to be able to play my music freely even when YouTube Music or my network is down. The main challenge was finding a library that would let me get the data I needed (artist, thumbnail, audio tracks, etc.) from YouTube Music, and I even had to rewrite the entire program in Kotlin from Rust because the library I was using couldn’t download audio properly.", "repo": "https://github.com/techs-sus/music-syncer", "demo": "https://github.com/techs-sus/music-syncer/releases"}]...
|
[{"post_id": 78225, "ts": "202 [{"post_id": 78225, "ts": "2026-10-10T00:53:04Z", "hours": 1.1172, "text": "I fixed another Nix graalvm issue. Some mp4s wouldn’t be tagged properly, so I fixed that."}, {"post_id": 74678, "ts": "2026-09-27T23:46:37Z", "hours": 0.6, "text": "I fixed the binary in Nix, it works now, also updated the asciinema cast it was missing some reachability metadata and required LD_LIBRARY_PATH to be set to the jdk’s libraries."}, {"post_id": 74664, "ts": "2026-09-27T22:23:13Z", "hours": 0.7189, "text": "Tiny change, I switched from scrimage to ImageIO. It works much better and should be less error prone as scrimage would vendor in webp binaries, which is not cross platform."}, {"post_id": 74533, "ts": "2026-09-27T16:04:10Z", "hours": 2.7108, "text": "Squashed more bugs, updated NativeMetadataMain.kt so that reachability metadata includes image i/o. This makes the Graal native image actually work when having to convert from webp to png. This will be a non issue when I can find an image library that is written in pure Kotlin. The last shipwright to review my project tried syncing a mix, which is infinite. So I added an error for that and made sure no one will run into unexplainable errors again."}, {"post_id": 71298, "ts": "2026-09-20T16:18:29Z", "hours": 1.1267, "text": "I added GraalVM native image support. The actual implementation is boring but this makes the program’s cold starts faster and makes it feel more native. Not sure if this helps with battery life, but it might. This definitely helps with memory usage, the program only uses ~100mb syncing my 400 track playlist. I restricted the native image to Nix because the releases are supposed to always work on all platforms."}, {"post_id": 71243, "ts": "2026-09-20T14:51:47Z", "hours": 0.3306, "text": "I finally silenced those pesky slf4j and unsafe memory access warnings. Just added the slf4j-nop library and a JVM flag."}, {"post_id": 70926, "ts": "2026-09-20T01:43:13Z", "hours": 2.5042, "text": "I redid the cli structure to group all the playlist commands under one common playlist parent command. I also implemented a clean up command to help people save disk space because SSDs are expensive right now. For example: music-syncer-kotlin -p path init -> music-syncer-kotlin playlist -p path init This was a necessary step so I could implement the clean up command, which deletes audio and thumbnail files that are not used by any playlists in a container. A container is the folder holding all the databases. Here’s everything I did, stolen from my commit message: feature: add clean-container command - refactor: add hasTrackInDatabase to the Playlist class - refactor: move knownFinal{Audio,Thumbnail}Extension out of class and make it const - refactor: nest all playlist commands as one subcommand - refactor: make cli help text more helpful - refactor: always print something to the console to let the user know that everything went well - refactor: do not use PlaylistHolder, use currentContext.registerJvmCloseable to clean up playlist - fix: when thumbnail is newly created, retag should silently fail"}, {"post_id": 64580, "ts": "2026-09-09T02:50:12Z", "hours": 2.7675, "text": "I watched a Kotlin talk about Flows and I was inspired to rewrite my program using them. This made my program more efficient, idiomatic and also helped me fix the annoying progress bar refresh bug (multiple old bars shown). It also let me actually properly sort by position across all 4 status types (added, removed, moved, errored). I also made the downloading functions use one underlying common function to clean up the codebase. I also removed sqlx4k because it wasn’t actually parallel and was causing issues with init. Here, in the screenshot I am showing the new elegant code for the logging of track statuses. It used to be many individual async calls, but flows allow me to group them up and sort them."}, {"post_id": 64390, "ts": "2026-09-08T18:35:35Z", "hours": 0.81, "text": "I now detect invalid playlist ids and print out an error telling the user how to get a valid playlist id."}, {"post_id": 63814, "ts": "2026-09-07T19:41:24Z", "hours": 0.5508, "text": "I made position diffing aware of insertions and deletions, so that output is less bloated with useless move info such as 0->1, 1->2, etc. I also did some optimization by using database transactions wherever possible. I can’t do it in the main sync body because it is bounded to its own coroutine scope."}, {"post_id": 63724, "ts": "2026-09-07T17:36:43Z", "hours": 1.365, "text": "I added duration tracking to the database. The M3U generation now doesn’t hardcode 0 as the duration."}, {"post_id": 61576, "ts": "2026-09-04T15:35:33Z", "hours": 0.3597, "text": "I made it so that thumbnails should now be even higher quality, it does take more storage but the difference is quite noticeable on some music players. Also small hotfix, if you accidentally pass in another unrelated SQLite database it will now not run migrations on it before erroring."}, {"post_id": 61148, "ts": "2026-09-03T22:22:37Z", "hours": 0.6486, "text": "To help users migrate from the old Rust implementation, I made it so that a sync will re-tag the track if the track’s thumbnail does not exist on disk. The Kotlin implementation always gets higher resolution images, so this allows for much higher resolution track covers."}, {"post_id": 61131, "ts": "2026-09-03T21:37:19Z", "hours": 1.3225, "text": "In my attempt to make the streamExtractor lazily loaded, I caused a deadlock. I have fixed the deadlock and this fixed version is at v0.2.7. The fix was pretty simple, it was to not use CoroutineStart.Lazy because a lazy coroutine may never run, meaning the parent coroutineScope will hang forever. I also switched the backend driver to sqlx4k as it provides a connection pool but more importantly makes the suspend code flow cleaner. I wont switch to Exposed (the official SQL driver) because it doesn’t have the same parallel capabilities as sql4k."}, {"post_id": 60984, "ts": "2026-09-03T17:48:56Z", "hours": 1.7597, "text": "I forgot to add error handling from the original Rust project, so I did that. I also fixed the parallelism by using a Semaphore as limitedParallelism still wakes all the coroutines. Using a Semaphore only allows N permits to be handed out at once. This means that only N tasks would be running at once, given that each task takes one permit. I set N to 8 as that should not cause any throttling but still allow multiple tracks to be downloaded at once. I also implemented better lazy fetching than the old Rust implementation. Now only pieces that must be fetched are fetched, and if they don’t need to be fetched, a StreamExtractor is never fetched. This causes a huge speed up, allowing my ~400 track playlist to be incrementally synced in 8 seconds. Other notable quality of life features (taken from the git log): - refactor: make output use terminal.theme.* - refactor: make output more human readable by using title instead of youtube_playlist_id - fix: reorder items in subtasks so that the text doesn't move everything else"}, {"post_id": 60623, "ts": "2026-09-03T02:30:33Z", "hours": 0.7667, "text": "Shortly after I shipped, I found a better library for progress bars and displaying to the terminal in general. I also made sure that the exists locally log line would be printed out in order. I decided to use it, and I am really happy with the result!!!!"}, {"post_id": 60558, "ts": "2026-09-02T23:48:06Z", "hours": 1.2247, "text": "Preparing to ship the project, so here’s a list of everything I did: added back an edited readme added back the apache 2.0 license fixed the github actions auto release recorded an asciinema cast and put it in the readme made the cli say music-player-kotlin instead of cli …other small changes to make sure its ready for release"}, {"post_id": 60487, "ts": "2026-09-02T21:02:16Z", "hours": 0.7539, "text": "added a progress bar and actually actually fixed the deadlock this time"}, {"post_id": 60469, "ts": "2026-09-02T20:12:04Z", "hours": 0.4286, "text": "I fixed position tracking, so that moved tracks will output a line telling you they have moved. I attempted to fix a deadlock that was happening, and fixed some database queries targetting the wrong table."}, {"post_id": 60450, "ts": "2026-09-02T19:45:23Z", "hours": 1.5511, "text": "I cleaned up the code, bounded parallelism to 8 with limitedParallelism, and tried to optimize the detection of moved tracks"}, {"post_id": 60347, "ts": "2026-09-02T17:08:19Z", "hours": 4.1644, "text": "the rewrite is almost finished thumbnails are now way higher in resolution because we can now get youtube’s webp images. unfortunately jaudiotagger does not support webp images, so i force all images from youtube to turn into a lossless png kotlin is pretty cool, especially coroutines, its like lua’s coroutines but actually backed by a thread pool i need to limit the concurrency but otherwise this is great! very fast even on a debug build what’s left: currently unlimited concurrency, this will definitely crash the jvm on large playlists better terminal output with colors and a diff generator use a temporary table in sqlite to make diffing more memory efficient packaging and ci should be fine since “java runs anywhere”"}, {"post_id": 59975, "ts": "2026-09-02T01:52:56Z", "hours": 4.3806, "text": "i begun porting the project to kotlin while i love rust i also want this project to actually work rustypipe will always be a bit behind youtube’s protections so i decided to just rewrite the whole thing in kotlin so i can use newpipeextractor directly what’s left: tag audio with jaudiotagger use clikt to make a nice command line interface (maybe) add unit tests there is no actual screenshot because i didn’t actually implement the commands yet"}, {"post_id": 51282, "ts": "2026-08-20T20:29:43Z", "hours": 4.3222, "text": "i got rustypipe-botguard working with Nix i still can’t figure out why some videos don’t work sometimes but other videos work all the time i updated the test suite to reflect that"}, {"post_id": 50736, "ts": "2026-08-20T02:44:23Z", "hours": 1.0564, "text": "i finally did the ci pipeline for windows, linux, and macos i wrote a readme but i’ll need to add an asciinema cast to it to make it look better and allow me to ship the project"}, {"post_id": 50703, "ts": "2026-08-20T01:04:16Z", "hours": 1.5878, "text": "thumbnails were really low quality, this change allows for higher quality thumbnails. one example would be 60x60 -> 120x120 still low quality but a higher low quality. other notable changes: unification of all track identifiers into one refetch thumbnails if not existing & do not fetch thumbnail if its {id}.{png,jpeg,jpg} exist m3a -> m3u, it is more compatible with music players (this happened in 4c337f491dd949fdc3f1f5d51363b0342defaac1 on aug 15, i forgot to log it) next thing to do is packaging . this is my worst nightmare so the whole program will be statically linked"}, {"post_id": 50425, "ts": "2026-08-19T16:22:13Z", "hours": 0.5014, "text": "progress bars with tracing-indicatif might have to increase tick rate, it flickers a bunch on release mode"}, {"post_id": 47821, "ts": "2026-08-16T01:05:27Z", "hours": 0.4694, "text": "tracks that are only available as m4a’s can now be downloaded ffmpeg won’t be spawned to remux screenshot is forcefully required so heres the main fix"}, {"post_id": 47801, "ts": "2026-08-16T00:26:22Z", "hours": 3.2114, "text": "/tmp is now only hardcoded in the singular unit test errors are more friendly, m3a generation has been refitted to be m3u generation so that more music players are supported, fixed a bug where songs would be downloaded with audio/{id}..m4a which is an invalid path, and updated the user agent to be a firefox extended support release so i dont have to update it more downloads were broken by the rustypipe switch, so i fixed them by forcing the AndroidVr client. some tracks are weird and still don’t work, but most do"}, {"post_id": 45281, "ts": "2026-08-11T17:10:58Z", "hours": 0.3233, "text": "i fixed the nix build this should allow me to cross compile to windows (maybe with mingw, and after i don’t hardcode /tmp), mac, and linux"}, {"post_id": 45263, "ts": "2026-08-11T16:43:26Z", "hours": 1.645, "text": "i switched from kopuz-server to rustypipe it is much faster and more accurate which may allow me to bypass youtube music’s weird quirk of some tracks only being playable directly on youtube the playlist is now synced in 3.2 seconds, and not 5"}, {"post_id": 44961, "ts": "2026-08-11T02:10:07Z", "hours": 0.8017, "text": "i made tracks that cause errors to show up in the diff form"}, {"post_id": 44936, "ts": "2026-08-11T01:05:27Z", "hours": 1.8956, "text": "i added the base diffing feature i wanted i still need to make it filter out tracks that are unfetchable that are currently marked as “removed” and i need to rename the project to music-syncer"}, {"post_id": 43011, "ts": "2026-08-08T01:30:07Z", "hours": 0.4114, "text": "i added configurable concurrency it doesn’t seem to improve download or sync times but i think now it has to be stdio performance thats holding it back, logging is not free"}, {"post_id": 42935, "ts": "2026-08-07T22:27:17Z", "hours": 0.2881, "text": "i shrunk the number of crates being built from 700-800 to 500 by stripping my fork of kopuz-server of all bloat it depended on lots of crates and most importantly it doesn’t rely on rusqlite 0.31 and sqlx 0.8 the screenshot shows how much smaller the build is now"}, {"post_id": 42401, "ts": "2026-08-07T02:51:53Z", "hours": 0.7711, "text": "parallelism!!! i was able to download my whole playlist in ~30 seconds (with unbounded parallelism that lagged the rest of my laptop) next steps: maybe change parallelism from hardcoded 16 to num_cpus::get() or ask tokio how many threads we have use ratatui and display the status of each song being downloaded, since we’re using tracing we can use https://github.com/gin66/tui-logger use color_eyre https://ratatui.rs/recipes/apps/color-eyre/ maybe add login, some songs are age restricted (even if they have no lyrics) definitely add configurable parallelism; i think this software would rip through playlists if it had more sqlite connections and more threads not really any screenshots to show anymore……. but i can try and show how many tracks were downloaded successfully and how long it took the screenshot is bounded by 16 futures at a time, which is probably too small and the sqlite connection pool is capped at 5. 2 minutes is a lot. but on a good note incremental syncs only take ~5.7 seconds"}, {"post_id": 42363, "ts": "2026-08-07T01:25:53Z", "hours": 2.9161, "text": "i switched to sqlx and the code is much cleaner but now i have to hack around how sqlx builds offline with SQLX_OFFLINE=true cargo build but i only have to do it once then its cached using sqlx is much more developer friendly and it taught me that a connection pool can harm the application because temp tables are only kept per connection not per entire database since nothing really changed but the code became cleaner i will show another music player that can display the generated playlist"}, {"post_id": 42258, "ts": "2026-08-06T21:41:07Z", "hours": 2.185, "text": "audio metadata for this dev log you will see 2 hours for one command spawn and a small refactor. but what you have not seen was 2 hours fighting ffmpeg-next, ffmpeg-sys-next, bindgen, libclang all that to say i decided to not link against ffmpeg, and i am much happier with the result audio players get the title, artist, even cover art all from the track’s metadata unfortunately, youtube music does not attach metadata to the tracks we scrape, so we need to attach metadata attaching metadata to audio files is actually pretty simple thanks to the lofty crate unless the file is a webm. webm does not have any sort of audio metadata (?) so you will need to transcode webm into another audio format to put metadata into the file. i decided to just pick m4a because everything supports it. lastly i did a small refactor because main.rs was pushing 600 lines of code, and i plan to: separate the db functions from the Playlist struct make the code truly asynchronous, which involves moving to sqlx pipeline everything the end result is pretty metadata in Gapless (or any other modern music player)"}, {"post_id": 42119, "ts": "2026-08-06T18:10:03Z", "hours": 0.3578, "text": "I switched from directly printing to stderr to using tracing. The m3a playlist generation works quite well, as you can see in the screenshot."}, {"post_id": 42100, "ts": "2026-08-06T17:43:20Z", "hours": 5.0975, "text": "after a lot of thinking i decided to not make a music player and instead decided to instead make a really fast youtube music playlist syncer the upstream library i was gonna use anyway does not expose YoutubeMusicClient, so i forked it and added a patch so i can use that everything was working until i realized downloads were really slow and the fix was to add a Range header with a value of “bytes=0-” and now downloads are very fast. i suspect that this makes my code look like a real browser to youtube/google which lets me get the normal download speed. i used rusqlite (sqlite rust wrapper) and each playlist is its own database file. i might switch to sqlx because it has compile time sql checking and has a very good async sqlite wrapper everything should work except m3a playlist generation, there are no good m3a playlist libraries so i hand coded it myself and have not tested it yet; UPDATE: it works i tested it now i plan on adding thumbnail deduplication, songs from the same album can have the same thumbnail"}, {"post_id": 24905, "ts": "2026-07-08T19:23:54Z", "hours": 0.8556, "text": "i added support for loading custom tinted-theming themes such as from https://github.com/tinted-theming/schemes the screenshot is using ayu_dark: https://github.com/tinted-theming/schemes/blob/spec-0.11/base16/ayu-dark.yaml"}, {"post_id": 24854, "ts": "2026-07-08T18:14:47Z", "hours": 1.3539, "text": "i added the base code for base16 themes and the skeleton sidebar (no buttons or actual pages yet) i plan for the sidebar to do something with navigation so like a playlists button and because i want the music player to be minimal it will probably become floating and will probably become a small menu icon that when clicked will expose the Playlists button i will probably make some sort of abstract button wrapper since i still need to make the actual full screen player ui which will at least have 3 icons (pause/play, backwards, forwards) the slow resizing issue was fixed by using gpui’s git repository and not crates.io the next steps are to add custom theme support which means i will need to also locate a config folder; i plan on using https://codeberg.org/dirs/directories-rs ; colors will probably be in yaml so that you can copy and paste tinted-theming schemes from https://github.com/tinted-theming/schemes other config settings will likely be in toml oh also i will need to set up automatic binary releases for amd64 and arm64 on linux and macos with github actions, which should be easier because it already uses Nix"}, {"post_id": 24798, "ts": "2026-07-08T16:20:27Z", "hours": 1.6167, "text": "gpui at least with the crates.io version has very slow resizing so i might switch to iced i have some ideas for how data will be stored: sqlite for database engine via sqlx or pure rust library (depends on which one allows to decode into structs) migrations can be done as a map to sql string (version -> appropriate migration) each playlist can be its own database & can store its own downloaded songs because fetching from db is faster: https://sqlite.org/fasterthanfs.html settings (theme) can be done in toml i have also disabled bounds on the gpui window, so thats the screenshot"}, {"post_id": 24396, "ts": "2026-07-07T22:28:27Z", "hours": 0.9344, "text": "I set up the flake at first using rust-overlay but realized crane is probably better so I asked opencode to refactor it to use crane The default gpui example now runs"}]...
|
Title: Music Syncer by @techs-sus | Stardance
Dev Title: Music Syncer by @techs-sus | Stardance
Devlogs:
I set up the flake at first using rust-overlay but realized crane is probably better so I asked opencode to refactor it to use crane The default gpui example now runs
gpui at least with the crates.io version has very slow resizing so i might switch to iced i have some ideas for how data will be stored: sqlite for database engine via sqlx or pure rust library (depends on which one allows to decode into structs) migrations can be done as a map to sql string (version -> appropriate migration) each playlist can be its own database & can store its own downloaded songs because fetching from db is faster: https://sqlite.org/fasterthanfs.html settings (theme) can be done in toml i have also disabled bounds on the gpui window, so thats the screenshot
i added the base code for base16 themes and the skeleton sidebar (no buttons or actual pages yet) i plan for the sidebar to do something with navigation so like a playlists button and because i want the music player to be minimal it will probably become floating and will probably become a small menu icon that when clicked will expose the Playlists button i will probably make some sort of abstract button wrapper since i still need to make the actual full screen player ui which will at least have 3 icons (pause/play, backwards, forwards) the slow resizing issue was fixed by using gpui’s git repository and not crates.io the next steps are to add custom theme support which means i will need to also locate a config folder; i plan on using https://codeberg.org/dirs/directories-rs ; colors will probably be in yaml so that you can copy and paste tinted-theming schemes from https://github.com/tinted-theming/schemes other config settings will likely be in toml oh also i will need to set up automatic binary releases for amd64 and arm64 on linux and macos with github actions, which should be easier because it already uses Nix
i added support for loading custom tinted-theming themes such as from https://github.com/tinted-theming/schemes the screenshot is using ayu_dark: https://github.com/tinted-theming/schemes/blob/spec-0.11/base16/ayu-dark.yaml
after a lot of thinking i decided to not make a music player and instead decided to instead make a really fast youtube music playlist syncer the upstream library i was gonna use anyway does not expose YoutubeMusicClient, so i forked it and added a patch so i can use that everything was working until i realized downloads were really slow and the fix was to add a Range header with a value of “bytes=0-” and now downloads are very fast. i suspect that this makes my code look like a real browser to youtube/google which lets me get the normal download speed. i used rusqlite (sqlite rust wrapper) and each playlist is its own database file. i might switch to sqlx because it has compile time sql checking and has a very good async sqlite wrapper everything should work except m3a playlist generation, there are no good m3a playlist libraries so i hand coded it myself and have not tested it yet; UPDATE: it works i tested it now i plan on adding thumbnail deduplication, songs from the same album can have the same thumbnail
I switched from directly printing to stderr to using tracing. The m3a playlist generation works quite well, as you can see in the screenshot.
audio metadata for this dev log you will see 2 hours for one command spawn and a small refactor. but what you have not seen was 2 hours fighting ffmpeg-next, ffmpeg-sys-next, bindgen, libclang all that to say i decided to not link against ffmpeg, and i am much happier with the result audio players get the title, artist, even cover art all from the track’s metadata unfortunately, youtube music does not attach metadata to the tracks we scrape, so we need to attach metadata attaching metadata to audio files is actually pretty simple thanks to the lofty crate unless the file is a webm. webm does not have any sort of audio metadata (?) so you will need to transcode webm into another audio format to put metadata into the file. i decided to just pick m4a because everything supports it. lastly i did a small refactor because main.rs was pushing 600 lines of code, and i plan to: separate the db functions from the Playlist struct make the code truly asynchronous, which involves moving to sqlx pipeline everything the end result is pretty metadata in Gapless (or any other modern music player)
i switched to sqlx and the code is much cleaner but now i have to hack around how sqlx builds offline with SQLX_OFFLINE=true cargo build but i only have to do it once then its cached using sqlx is much more developer friendly and it taught me that a connection pool can harm the application because temp tables are only kept per connection not per entire database since nothing really changed but the code became cleaner i will show another music player that can display the generated playlist
parallelism!!! i was able to download my whole playlist in ~30 seconds (with unbounded parallelism that lagged the rest of my laptop) next steps: maybe change parallelism from hardcoded 16 to num_cpus::get() or ask tokio how many threads we have use ratatui and display the status of each song being downloaded, since we’re using tracing we can use https://github.com/gin66/tui-logger use color_eyre https://ratatui.rs/recipes/apps/color-eyre/ maybe add login, some songs are age restricted (even if they have no lyrics) definitely add configurable parallelism; i think this software would rip through playlists if it had more sqlite connections and more threads not really any screenshots to show anymore……. but i can try and show how many tracks were downloaded successfully and how long it took the screenshot is bounded by 16 futures at a time, which is probably too small and the sqlite connection pool is capped at 5. 2 minutes is a lot. but on a good note incremental syncs only take ~5.7 seconds
i shrunk the number of crates being built from 700-800 to 500 by stripping my fork of kopuz-server of all bloat it depended on lots of crates and most importantly it doesn’t rely on rusqlite 0.31 and sqlx 0.8 the screenshot shows how much smaller the build is now
i added configurable concurrency it doesn’t seem to improve download or sync times but i think now it has to be stdio performance thats holding it back, logging is not free
i added the base diffing feature i wanted i still need to make it filter out tracks that are unfetchable that are currently marked as “removed” and i need to rename the project to music-syncer
i made tracks that cause errors to show up in the diff form
i switched from kopuz-server to rustypipe it is much faster and more accurate which may allow me to bypass youtube music’s weird quirk of some tracks only being playable directly on youtube the playlist is now synced in 3.2 seconds, and not 5
i fixed the nix build this should allow me to cross compile to windows (maybe with mingw, and after i don’t hardcode /tmp), mac, and linux
/tmp is now only hardcoded in the singular unit test errors are more friendly, m3a generation has been refitted to be m3u generation so that more music players are supported, fixed a bug where songs would be downloaded with audio/{id}..m4a which is an invalid path, and updated the user agent to be a firefox extended support release so i dont have to update it more downloads were broken by the rustypipe switch, so i fixed them by forcing the AndroidVr client. some tracks are weird and still don’t work, but most do
tracks that are only available as m4a’s can now be downloaded ffmpeg won’t be spawned to remux screenshot is forcefully required so heres the main fix
progress bars with tracing-indicatif might have to increase tick rate, it flickers a bunch on release mode
thumbnails were really low quality, this change allows for higher quality thumbnails. one example would be 60x60 -> 120x120 still low quality but a higher low quality. other notable changes: unification of all track identifiers into one refetch thumbnails if not existing & do not fetch thumbnail if its {id}.{png,jpeg,jpg} exist m3a -> m3u, it is more compatible with music players (this happened in 4c337f491dd949fdc3f1f5d51363b0342defaac1 on aug 15, i forgot to log it) next thing to do is packaging . this is my worst nightmare so the whole program will be statically linked
i finally did the ci pipeline for windows, linux, and macos i wrote a readme but i’ll need to add an asciinema cast to it to make it look better and allow me to ship the project
i got rustypipe-botguard working with Nix i still can’t figure out why some videos don’t work sometimes but other videos work all the time i updated the test suite to reflect that
i begun porting the project to kotlin while i love rust i also want this project to actually work rustypipe will always be a bit behind youtube’s protections so i decided to just rewrite the whole thing in kotlin so i can use newpipeextractor directly what’s left: tag audio with jaudiotagger use clikt to make a nice command line interface (maybe) add unit tests there is no actual screenshot because i didn’t actually implement the commands yet
the rewrite is almost finished thumbnails are now way higher in resolution because we can now get youtube’s webp images. unfortunately jaudiotagger does not support webp images, so i force all images from youtube to turn into a lossless png kotlin is pretty cool, especially coroutines, its like lua’s coroutines but actually backed by a thread pool i need to limit the concurrency but otherwise this is great! very fast even on a debug build what’s left: currently unlimited concurrency, this will definitely crash the jvm on large playlists better terminal output with colors and a diff generator use a temporary table in sqlite to make diffing more memory efficient packaging and ci should be fine since “java runs anywhere”
I cleaned up the code, bounded parallelism to 8 with limitedParallelism, and tried to optimize the detection of moved tracks
I fixed position tracking, so that moved tracks will output a line telling you they have moved. I attempted to fix a deadlock that was happening, and fixed some database queries targetting the wrong table.
added a progress bar and actually actually fixed the deadlock this time
Preparing to ship the project, so here’s a list of everything I did: added back an edited readme added back the apache 2.0 license fixed the github actions auto release recorded an asciinema cast and put it in the readme made the cli say music-player-kotlin instead of cli …other small changes to make sure its ready for release
Shortly after I shipped, I found a better library for progress bars and displaying to the terminal in general. I also made sure that the exists locally log line would be printed out in order. I decided to use it, and I am really happy with the result!!!!
I forgot to add error handling from the original Rust project, so I did that. I also fixed the parallelism by using a Semaphore as limitedParallelism still wakes all the coroutines. Using a Semaphore only allows N permits to be handed out at once. This means that only N tasks would be running at once, given that each task takes one permit. I set N to 8 as that should not cause any throttling but still allow multiple tracks to be downloaded at once. I also implemented better lazy fetching than the old Rust implementation. Now only pieces that must be fetched are fetched, and if they don’t need to be fetched, a StreamExtractor is never fetched. This causes a huge speed up, allowing my ~400 track playlist to be incrementally synced in 8 seconds. Other notable quality of life features (taken from the git log): - refactor: make output use terminal.theme.* - refactor: make output more human readable by using title instead of youtube_playlist_id - fix: reorder items in subtasks so that the text doesn't move everything else
In my attempt to make the streamExtractor lazily loaded, I caused a deadlock. I have fixed the deadlock and this fixed version is at v0.2.7. The fix was pretty simple, it was to not use CoroutineStart.Lazy because a lazy coroutine may never run, meaning the parent coroutineScope will hang forever. I also switched the backend driver to sqlx4k as it provides a connection pool but more importantly makes the suspend code flow cleaner. I wont switch to Exposed (the official SQL driver) because it doesn’t have the same parallel capabilities as sql4k.
To help users migrate from the old Rust implementation, I made it so that a sync will re-tag the track if the track’s thumbnail does not exist on disk. The Kotlin implementation always gets higher resolution images, so this allows for much higher resolution track covers.
I made it so that thumbnails should now be even higher quality, it does take more storage but the difference is quite noticeable on some music players. Also small hotfix, if you accidentally pass in another unrelated SQLite database it will now not run migrations on it before erroring.
I added duration tracking to the database. The M3U generation now doesn’t hardcode 0 as the duration.
I made position diffing aware of insertions and deletions, so that output is less bloated with useless move info such as 0->1, 1->2, etc. I also did some optimization by using database transactions wherever possible. I can’t do it in the main sync body because it is bounded to its own coroutine scope.
I now detect invalid playlist ids and print out an error telling the user how to get a valid playlist id.
I watched a Kotlin talk about Flows and I was inspired to rewrite my program using them. This made my program more efficient, idiomatic and also helped me fix the annoying progress bar refresh bug (multiple old bars shown). It also let me actually properly sort by position across all 4 status types (added, removed, moved, errored). I also made the downloading functions use one underlying common function to clean up the codebase. I also removed sqlx4k because it wasn’t actually parallel and was causing issues with init. Here, in the screenshot I am showing the new elegant code for the logging of track statuses. It used to be many individual async calls, but flows allow me to group them up and sort them.
I redid the cli structure to group all the playlist commands under one common playlist parent command. I also implemented a clean up command to help people save disk space because SSDs are expensive right now. For example: music-syncer-kotlin -p path init -> music-syncer-kotlin playlist -p path init This was a necessary step so I could implement the clean up command, which deletes audio and thumbnail files that are not used by any playlists in a container. A container is the folder holding all the databases. Here’s everything I did, stolen from my commit message: feature: add clean-container command - refactor: add hasTrackInDatabase to the Playlist class - refactor: move knownFinal{Audio,Thumbnail}Extension out of class and make it const - refactor: nest all playlist commands as one subcommand - refactor: make cli help text more helpful - refactor: always print something to the console to let the user know that everything went well - refactor: do not use PlaylistHolder, use currentContext.registerJvmCloseable to clean up playlist - fix: when thumbnail is newly created, retag should silently fail
I finally silenced those pesky slf4j and unsafe memory access warnings. Just added the slf4j-nop library and a JVM flag.
I added GraalVM native image support. The actual implementation is boring but this makes the program’s cold starts faster and makes it feel more native. Not sure if this helps with battery life, but it might. This definitely helps with memory usage, the program only uses ~100mb syncing my 400 track playlist. I restricted the native image to Nix because the releases are supposed to always work on all platforms.
Squashed more bugs, updated NativeMetadataMain.kt so that reachability metadata includes image i/o. This makes the Graal native image actually work when having to convert from webp to png. This will be a non issue when I can find an image library that is written in pure Kotlin. The last shipwright to review my project tried syncing a mix, which is infinite. So I added an error for that and made sure no one will run into unexplainable errors again.
Tiny change, I switched from scrimage to ImageIO. It works much better and should be less error prone as scrimage would vendor in webp binaries, which is not cross platform.
I fixed the binary in Nix, it works now, also updated the asciinema cast it was missing some reachability metadata and required LD_LIBRARY_PATH to be set to the jdk’s libraries.
I fixed another Nix graalvm issue. Some mp4s wouldn’t be tagged properly, so I fixed that.
Ships:
I made a Kotlin CLI program that synchronizes a YouTube Music playlist to a SQLite database locally. I made this because I want to be able to play my music freely even when YouTube Music or my network is down. The main challenge was finding a library that would let me get the data I needed (artist, thumbnail, audio tracks, etc.) from YouTube Music, and I even had to rewrite the entire program in Kotlin from Rust because the library I was using couldn’t download audio properly....
|
1793098041.1806443
|
1793184441.1806443
|
|
58481
|
yousnoozeyousolve by @nzx37 | Stardance
|
nzx37
|
0
|
8.38
|
0
|
[]
|
[{"post_id": 78226, "ts": "202 [{"post_id": 78226, "ts": "2026-10-10T01:11:35Z", "hours": 2.4003, "text": "#Soldering for YSYS! Today, my parts for YSYS finally arrived. So I soldered most of the parts together(except the diodes) so I hope to be able to upload firmware and ship soon!"}, {"post_id": 73117, "ts": "2026-09-24T12:57:45Z", "hours": 0.3167, "text": "PCBs Arrived! Finished: PCBs for YouSnoozeYouSolve have been delivered through JLCPCB! What I did I got my pcbs today! Stardance got extended by a month(thank goodness i was NOT going to ship in time BAHAHA). But anyway today I finally got the PCBs for ysys. Hopefully the BLARE kit and 3D prints come soon(The Stickers that you get for starting are still in US ;D). TODOStuff I Still have to Recieve BLARE kit Assembly Ship!"}, {"post_id": 70532, "ts": "2026-09-19T10:16:46Z", "hours": 0.4694, "text": "Ordering PCBs! Finished:PCBs for YouSnoozeYouSolve have been ordered through JLCPCB! *thank you hack club for money :D What I did I got my project funding! Since stardance ends soon i want to get this finished up and shipped! Today I ordered the PCBs for ysys. Hopefully the BLARE kit comes fast. TODOStuff I Still have to: Recieve BLARE kit Recieve PCBs Order prints Assembly Ship! ill send 3d print order tn kbye"}, {"post_id": 68548, "ts": "2026-09-15T09:28:41Z", "hours": 0.2911, "text": "#Fixing github files I recently tried funding but apparently some folders were structured wrong so i spent some time fixing it! Hopefully the request is accepted and we can move on to building :D"}, {"post_id": 65867, "ts": "2026-09-11T09:27:48Z", "hours": 0.3672, "text": "Final Preparation for Shipping! I updated the github and made the readme readable."}, {"post_id": 65805, "ts": "2026-09-11T05:56:30Z", "hours": 2.3472, "text": "Firmware plans + CAD Finished: Planning for UI of YSYS Added hooks for glasses and watch I first worked on firmware planning(ie. navigation etc.) this should allow me to code it out better! the diagram is messy but its how i think it out =P Afterwards I was going to move onto coding but i suddenly really wanted to add a glasses hook. This is a rare chance to make my own alarm clock i wanted it to be useful too! i ended up with a watch holder and glasses holder as they are normally on my table and end up on the floor or in the bin. going to work on coding now"}, {"post_id": 62235, "ts": "2026-09-05T14:37:50Z", "hours": 1.6917, "text": "Case CADing Part 1 The PCB has a cash register looking case now! The case has holes for keypad, port, screen and buzzer. Before the end of the day I CADed the case for yousnoozeyousolve. It comes in a top bottom screw case and features holes for the switches, screen, usb port and buzzer. Overall its ready to ship, will work on firmware soon! ;D"}, {"post_id": 62053, "ts": "2026-09-05T08:54:06Z", "hours": 0.4972, "text": "BLARE alarm clock DEVLOG 1 i started this with my old account but ive been locked out of that :(. so i have basically finished the pcb and gerber files! hopefully i can ship soon after the CAD is done!"}]...
|
Title: yousnoozeyousolve by @nzx37 | Stardance
De Title: yousnoozeyousolve by @nzx37 | Stardance
Devlogs:
BLARE alarm clock DEVLOG 1 i started this with my old account but ive been locked out of that :(. so i have basically finished the pcb and gerber files! hopefully i can ship soon after the CAD is done!
Case CADing Part 1 The PCB has a cash register looking case now! The case has holes for keypad, port, screen and buzzer. Before the end of the day I CADed the case for yousnoozeyousolve. It comes in a top bottom screw case and features holes for the switches, screen, usb port and buzzer. Overall its ready to ship, will work on firmware soon! ;D
Firmware plans + CAD Finished: Planning for UI of YSYS Added hooks for glasses and watch I first worked on firmware planning(ie. navigation etc.) this should allow me to code it out better! the diagram is messy but its how i think it out =P Afterwards I was going to move onto coding but i suddenly really wanted to add a glasses hook. This is a rare chance to make my own alarm clock i wanted it to be useful too! i ended up with a watch holder and glasses holder as they are normally on my table and end up on the floor or in the bin. going to work on coding now
Final Preparation for Shipping! I updated the github and made the readme readable.
#Fixing github files I recently tried funding but apparently some folders were structured wrong so i spent some time fixing it! Hopefully the request is accepted and we can move on to building :D
Ordering PCBs! Finished:PCBs for YouSnoozeYouSolve have been ordered through JLCPCB! *thank you hack club for money :D What I did I got my project funding! Since stardance ends soon i want to get this finished up and shipped! Today I ordered the PCBs for ysys. Hopefully the BLARE kit comes fast. TODOStuff I Still have to: Recieve BLARE kit Recieve PCBs Order prints Assembly Ship! ill send 3d print order tn kbye
PCBs Arrived! Finished: PCBs for YouSnoozeYouSolve have been delivered through JLCPCB! What I did I got my pcbs today! Stardance got extended by a month(thank goodness i was NOT going to ship in time BAHAHA). But anyway today I finally got the PCBs for ysys. Hopefully the BLARE kit and 3D prints come soon(The Stickers that you get for starting are still in US ;D). TODOStuff I Still have to Recieve BLARE kit Assembly Ship!
#Soldering for YSYS! Today, my parts for YSYS finally arrived. So I soldered most of the parts together(except the diodes) so I hope to be able to upload firmware and ship soon!...
|
1792752696.857952
|
1793357496.857952
|
|
14905
|
night / stop by @sk1lark | Stardance
|
sk1lark
|
0
|
1.58
|
0
|
[]
|
[{"post_id": 7823, "ts": "2026 [{"post_id": 7823, "ts": "2026-06-13T01:53:45Z", "hours": 0.5339, "text": "another 30 min of art :)"}, {"post_id": 7576, "ts": "2026-06-12T17:42:39Z", "hours": 1.0475, "text": "finished the basic layout of the starting room! this is (wip art version) what users would see before logging onto the cafe… i wonder whose room this is? even though this is the first thing people will see, it’s the last thing that will be explained in the lore."}]...
|
Title: night / stop by @sk1lark | Stardance
Devlo Title: night / stop by @sk1lark | Stardance
Devlogs:
finished the basic layout of the starting room! this is (wip art version) what users would see before logging onto the cafe… i wonder whose room this is? even though this is the first thing people will see, it’s the last thing that will be explained in the lore.
another 30 min of art :)...
|
1792529394.9978974
|
1793134194.9978974
|
|
24939
|
Noctalia v5 Contributions by @superheroyrr | Stard Noctalia v5 Contributions by @superheroyrr | Stardance...
|
superheroyrr
|
0
|
15.78
|
0
|
[]
|
[{"post_id": 78230, "ts": "202 [{"post_id": 78230, "ts": "2026-10-10T01:47:52Z", "hours": 3.2056, "text": "I finally got new tasks working, and it’s really cool! ㅤ For this part I used AI just to clean up any mistakes I made, I initially got it working by myself, AI just figured out the edge cases."}, {"post_id": 62939, "ts": "2026-09-06T14:20:45Z", "hours": 1.4533, "text": "So yesterday I did two things: Added a parser to the picker option so that newly created tasks can have options set automatically. (yeah idk how to describe it, so maybe watch the video to get a better idea). Also this part was vibe-coded because there is a lot of different formatting things you can do. Found a minor issue in the claude-companion community plugin, so I made a PR addressing it. That fix ended up getting applied in a different PR bc I made a mistake in it, but it was good that I pointed out the issue."}, {"post_id": 62198, "ts": "2026-09-05T13:46:16Z", "hours": 1.8411, "text": "So I have finally decided what the last thing I do will be (at least before I ship). So I will make a plugin for Noctalia that integrates TickTick so that there are desktop widgets, taskbar widgets, and an option in the picker to easily create a new task. ㅤ I am doing this using TickTick’s OpenAPI . For now, I have just created a slash command in Noctalia’s finder. This took a while because I initially tried doing this when Noctalia was in Beta, and the documentation wasn’t that good back then. However, now Noctalia has a full release (not Beta anymore!) so the plugin API is much more fleshed out."}, {"post_id": 45381, "ts": "2026-08-11T19:59:35Z", "hours": 1.0683, "text": "Let’s gooooo my PR got merged 2 days back. Now to finish the job, I just needed to write documentation about it, so I did that over here . The changes are live on Noctalia’s documentation website now! ㅤ Now that I think about it, I should probably start writing the docs when I am pretty confident the PR will be merged, so that I don’t have to wait a long time for the maintainers to review my code. ㅤ Nonetheless, it feels very good knowing that there was a feature which many people wanted (the original github issue got 8 likes, so it was highly requested), and I shipped it!!"}, {"post_id": 39174, "ts": "2026-08-01T23:16:43Z", "hours": 4.0192, "text": "So one of the maintainers left a comment with feedback for what I should do about 2 days ago. Today I finished addressing those issues in code. ㅤ The reason it took this long is because I was legit just spending 2 hours or so just wondering what I should do! Basically, the other PR that was about the calendar system I mentioned earlier got merged and made the ICS parsing function take in a C++ std::stop_token , which I was unfamiliar with. It turns out that it has to do with multi-threading and so I had a dilemma of whether I should make it parse the calendar data in a separate thread or not. I at first decided to make it multi-threaded but then changed my mind when I realized how hard it would be. ㅤ There is a lot more to this though, if you are curious you can see more details in my PR comment . ㅤ Also here’s a proper video of this feature in action!"}, {"post_id": 34814, "ts": "2026-07-25T20:25:25Z", "hours": 1.9733, "text": "Just finished my second contribution, sorry for not documenting it in more detail if you like that. Basically what I’ve done now is added for iCalendar files (*.ics) to be added to the calendar widget that is builtin. ㅤ iCalendar files are a pretty universal way to add event to different calendars, heck the “big 3” (Google Calendar, Apple Calendar, and Microsoft Outlook) of calendar apps all support it. So, it is a fairly important thing to have. ㅤ I was motivated to add this because I wanted to add my own *.ics files to the Noctalia calendar, but couldn’t due to this limitation. But not anymore! (that is if they merge my PR ) ㅤ What’s crazy is that while I was writing my PR, someone else literally made another PR that was also editing the calendar code, what a coincidence! I don’t think that our 2 PR’s will conflict with each other since we were editing different parts of it as well!"}, {"post_id": 18795, "ts": "2026-06-30T00:32:58Z", "hours": 0.2528, "text": "Ok the pull request got merged into the main source code, after just a small fixup! But I’m not done just yet, I still need to add to the documentation of the project. ㅤ So I did that. Now that was my first contribution to an open source project where I typed real code! It wasn’t a huge change, but you have to start somewhere!"}, {"post_id": 15986, "ts": "2026-06-25T23:14:27Z", "hours": 1.0039, "text": "I finally finished my first contribution!! So after browsing through the source code of Noctalia for a while, I found out where the internal monitor brightness code was and I made the necessary changes so that the monitor brightness is automatically synced! On the way… I somehow managed to wreck my local git history! Luckily this wasn’t a huge problem, and I was able to delete the local folder and clone my fork from github again. Still, it was a reminder of how it’s probably best to leave your local git clone alone. Now… Now I will make a PR on the Github and hopefully it gets merged! Edit: the Github PR is here now"}, {"post_id": 14765, "ts": "2026-06-23T23:59:28Z", "hours": 0.9631, "text": "My First Contribution So the first thing I am going to do is add a setting where you can make it so that when you can sync all of your monitors to the same brightness percent. What I did this devlog I have completed the first step of this by adding an option to the settings page (it even syncs with the config file and everything!) although it doesn’t do anything… yet!"}]...
|
Title: Noctalia v5 Contributions by @superheroyrr Title: Noctalia v5 Contributions by @superheroyrr | Stardance
Devlogs:
My First Contribution So the first thing I am going to do is add a setting where you can make it so that when you can sync all of your monitors to the same brightness percent. What I did this devlog I have completed the first step of this by adding an option to the settings page (it even syncs with the config file and everything!) although it doesn’t do anything… yet!
I finally finished my first contribution!! So after browsing through the source code of Noctalia for a while, I found out where the internal monitor brightness code was and I made the necessary changes so that the monitor brightness is automatically synced! On the way… I somehow managed to wreck my local git history! Luckily this wasn’t a huge problem, and I was able to delete the local folder and clone my fork from github again. Still, it was a reminder of how it’s probably best to leave your local git clone alone. Now… Now I will make a PR on the Github and hopefully it gets merged! Edit: the Github PR is here now
Ok the pull request got merged into the main source code, after just a small fixup! But I’m not done just yet, I still need to add to the documentation of the project. ㅤ So I did that. Now that was my first contribution to an open source project where I typed real code! It wasn’t a huge change, but you have to start somewhere!
Just finished my second contribution, sorry for not documenting it in more detail if you like that. Basically what I’ve done now is added for iCalendar files (*.ics) to be added to the calendar widget that is builtin. ㅤ iCalendar files are a pretty universal way to add event to different calendars, heck the “big 3” (Google Calendar, Apple Calendar, and Microsoft Outlook) of calendar apps all support it. So, it is a fairly important thing to have. ㅤ I was motivated to add this because I wanted to add my own *.ics files to the Noctalia calendar, but couldn’t due to this limitation. But not anymore! (that is if they merge my PR ) ㅤ What’s crazy is that while I was writing my PR, someone else literally made another PR that was also editing the calendar code, what a coincidence! I don’t think that our 2 PR’s will conflict with each other since we were editing different parts of it as well!
So one of the maintainers left a comment with feedback for what I should do about 2 days ago. Today I finished addressing those issues in code. ㅤ The reason it took this long is because I was legit just spending 2 hours or so just wondering what I should do! Basically, the other PR that was about the calendar system I mentioned earlier got merged and made the ICS parsing function take in a C++ std::stop_token , which I was unfamiliar with. It turns out that it has to do with multi-threading and so I had a dilemma of whether I should make it parse the calendar data in a separate thread or not. I at first decided to make it multi-threaded but then changed my mind when I realized how hard it would be. ㅤ There is a lot more to this though, if you are curious you can see more details in my PR comment . ㅤ Also here’s a proper video of this feature in action!
Let’s gooooo my PR got merged 2 days back. Now to finish the job, I just needed to write documentation about it, so I did that over here . The changes are live on Noctalia’s documentation website now! ㅤ Now that I think about it, I should probably start writing the docs when I am pretty confident the PR will be merged, so that I don’t have to wait a long time for the maintainers to review my code. ㅤ Nonetheless, it feels very good knowing that there was a feature which many people wanted (the original github issue got 8 likes, so it was highly requested), and I shipped it!!
So I have finally decided what the last thing I do will be (at least before I ship). So I will make a plugin for Noctalia that integrates TickTick so that there are desktop widgets, taskbar widgets, and an option in the picker to easily create a new task. ㅤ I am doing this using TickTick’s OpenAPI . For now, I have just created a slash command in Noctalia’s finder. This took a while because I initially tried doing this when Noctalia was in Beta, and the documentation wasn’t that good back then. However, now Noctalia has a full release (not Beta anymore!) so the plugin API is much more fleshed out.
So yesterday I did two things: Added a parser to the picker option so that newly created tasks can have options set automatically. (yeah idk how to describe it, so maybe watch the video to get a better idea). Also this part was vibe-coded because there is a lot of different formatting things you can do. Found a minor issue in the claude-companion community plugin, so I made a PR addressing it. That fix ended up getting applied in a different PR bc I made a mistake in it, but it was good that I pointed out the issue.
I finally got new tasks working, and it’s really cool! ㅤ For this part I used AI just to clean up any mistakes I made, I initially got it working by myself, AI just figured out the edge cases....
|
1792648383.4710178
|
1793253183.4710178
|
|
68879
|
ShylaAHackPad! by @shyla | Stardance
|
shyla
|
0
|
0.71
|
0
|
[]
|
[{"post_id": 78237, "ts": "202 [{"post_id": 78237, "ts": "2026-10-10T02:41:05Z", "hours": 0.7111, "text": "I drew a real schematic + PCB design for the first time! That was very confusing 😅"}]...
|
Title: ShylaAHackPad! by @shyla | Stardance
Devlo Title: ShylaAHackPad! by @shyla | Stardance
Devlogs:
I drew a real schematic + PCB design for the first time! That was very confusing 😅...
|
1793127087.6751688
|
1793731887.6751688
|
|
60511
|
Sector B: Vengeance by @Alloy | Stardance
|
Alloy
|
0
|
24.58
|
0
|
[]
|
[{"post_id": 78242, "ts": "202 [{"post_id": 78242, "ts": "2026-10-10T03:23:41Z", "hours": 3.2525, "text": "Devlog #7 New Features: In Video Tab Fov Slider Brightness Slider In Graphics Tab Fog Toggle Glow Toggle (makes everything slightly brighter) Ambient Occlusion (adds shadows to corners for depth) Anisotropic Filtering MISC Turned physics interpolation on All settings are now saved to a config file which automatically creates and copies itself over from res:// with default settings if it doesnt exist. Settings are only saved when pressing the save button, now I dont need to keep changing settings everytime it runs for testing. (everything works currently, but there will be a video when every setting is done)"}, {"post_id": 77994, "ts": "2026-10-09T04:09:33Z", "hours": 4.715, "text": "New Devlog Style :D New features: Pause Menu Resume Button Options Button (basically settings) Main Menu Button (temporary quit) Options Menu Graphics Tab (empty) Video Tab Fullscreen Toggle V-Sync Toggle Custom Resolution Dropdown Max Framerate input QOL Everything except the gui is paused while one is active Pressing escape pauses the game and also unpauses, as well as going back to the pause menu if inside the options menu. The options menu is designed as its own unique scene so it can be accessed from the main menu as well when that gets added, all of the options will be saved to a config file later but for now they are just predefined variables."}, {"post_id": 70970, "ts": "2026-09-20T04:10:58Z", "hours": 2.3586, "text": "If the animatronic doesnt move for 3 seconds its considered “stuck” and switches to roam (fixes them getting stuck on doorways), changed their collisions to ignore each other so they dont push each other. Doors start open and dont need 2 clicks to open the first time. Prepared the speed values and events for each night. Got rid of the ugly super strong lights from each animtronic. Added ambient lighting so the player isnt entirely reliant on the flashlight."}, {"post_id": 70907, "ts": "2026-09-20T00:23:47Z", "hours": 3.6392, "text": "The animatronics get stuck on edges like doorways and tables less, added a stage for the animatronics to start on. Fixed a bug where you had to be standing exactly in the direction the animatronic was facing for it to chase. Added Freddy and Foxy with different mechanics. Freddy has a 15% chance to pathfind to the office (all of the others can but the chance is low at 1%), but gets stuck if the doors are closed. Foxy is as fast as the player (12 instead of 10). Debugging feature: can now switch between the 3 animatronics cameras by pressing 1, 2, or 3. Added a camera shake when the doors are closed."}, {"post_id": 69407, "ts": "2026-09-17T00:06:21Z", "hours": 5.8394, "text": "Finally finished the first animatronic (functionally). It has basic pathfinding around the whole map, its speed is 10 when chasing and 3 when roaming (players speed while sprinting is 15). There are 2 modes: chasing and roaming, while chasing it locks onto the player and won’t stop until the player is out of sight for 5 seconds, while roaming it will move to random points in the map. It only chases when the player is in the cameras view and the exact center where the raycast detects it, the walls block the raycast so it can’t see through walls. Added some basic blue table and red arcade machine placeholders for future objects."}, {"post_id": 66305, "ts": "2026-09-12T02:09:23Z", "hours": 1.3856, "text": "Hackatime decided to be funny and log the first 2 hours under my root directory instead of the project folder so its more like 3h 23m Added columns to hide the gaps between walls at corners, the player now has view bobbing to make walking and sprinting more natural. Sprinting now only affects forwards speed, not strafing or backwards anymore. F now toggles the flashlight on and off, added left and right doors that can be opened and closed by pressing the buttons beside them. Also added a raycast to interact with things, like the buttons."}, {"post_id": 65185, "ts": "2026-09-10T04:06:08Z", "hours": 3.3939, "text": "Made the base map design with no decorations and basic player movement, as well as a flashlight for lighting."}]...
|
Title: Sector B: Vengeance by @Alloy | Stardance
Title: Sector B: Vengeance by @Alloy | Stardance
Devlogs:
Made the base map design with no decorations and basic player movement, as well as a flashlight for lighting.
Hackatime decided to be funny and log the first 2 hours under my root directory instead of the project folder so its more like 3h 23m Added columns to hide the gaps between walls at corners, the player now has view bobbing to make walking and sprinting more natural. Sprinting now only affects forwards speed, not strafing or backwards anymore. F now toggles the flashlight on and off, added left and right doors that can be opened and closed by pressing the buttons beside them. Also added a raycast to interact with things, like the buttons.
Finally finished the first animatronic (functionally). It has basic pathfinding around the whole map, its speed is 10 when chasing and 3 when roaming (players speed while sprinting is 15). There are 2 modes: chasing and roaming, while chasing it locks onto the player and won’t stop until the player is out of sight for 5 seconds, while roaming it will move to random points in the map. It only chases when the player is in the cameras view and the exact center where the raycast detects it, the walls block the raycast so it can’t see through walls. Added some basic blue table and red arcade machine placeholders for future objects.
The animatronics get stuck on edges like doorways and tables less, added a stage for the animatronics to start on. Fixed a bug where you had to be standing exactly in the direction the animatronic was facing for it to chase. Added Freddy and Foxy with different mechanics. Freddy has a 15% chance to pathfind to the office (all of the others can but the chance is low at 1%), but gets stuck if the doors are closed. Foxy is as fast as the player (12 instead of 10). Debugging feature: can now switch between the 3 animatronics cameras by pressing 1, 2, or 3. Added a camera shake when the doors are closed.
If the animatronic doesnt move for 3 seconds its considered “stuck” and switches to roam (fixes them getting stuck on doorways), changed their collisions to ignore each other so they dont push each other. Doors start open and dont need 2 clicks to open the first time. Prepared the speed values and events for each night. Got rid of the ugly super strong lights from each animtronic. Added ambient lighting so the player isnt entirely reliant on the flashlight.
New Devlog Style :D New features: Pause Menu Resume Button Options Button (basically settings) Main Menu Button (temporary quit) Options Menu Graphics Tab (empty) Video Tab Fullscreen Toggle V-Sync Toggle Custom Resolution Dropdown Max Framerate input QOL Everything except the gui is paused while one is active Pressing escape pauses the game and also unpauses, as well as going back to the pause menu if inside the options menu. The options menu is designed as its own unique scene so it can be accessed from the main menu as well when that gets added, all of the options will be saved to a config file later but for now they are just predefined variables.
Devlog #7 New Features: In Video Tab Fov Slider Brightness Slider In Graphics Tab Fog Toggle Glow Toggle (makes everything slightly brighter) Ambient Occlusion (adds shadows to corners for depth) Anisotropic Filtering MISC Turned physics interpolation on All settings are now saved to a config file which automatically creates and copies itself over from res:// with default settings if it doesnt exist. Settings are only saved when pressing the save button, now I dont need to keep changing settings everytime it runs for testing. (everything works currently, but there will be a video when every setting is done)...
|
1793033553.3366804
|
1793638353.3366804
|
|
68930
|
The worst OS. by @adam_fisal | Stardance
|
adam_fisal
|
0
|
6.78
|
0
|
[]
|
[{"post_id": 78258, "ts": "202 [{"post_id": 78258, "ts": "2026-10-10T05:54:30Z", "hours": 6.7803, "text": "A bad OS."}]...
|
Title: The worst OS. by @adam_fisal | Stardance
D Title: The worst OS. by @adam_fisal | Stardance
Devlogs:
A bad OS....
|
1793127198.088786
|
1793731998.088786
|
|
51129
|
Silverflame - TVC propulsively landing rocket by @ Silverflame - TVC propulsively landing rocket by @staspomortsev | Stardance...
|
staspomortsev
|
0
|
65.47
|
0
|
[]
|
[{"post_id": 78259, "ts": "202 [{"post_id": 78259, "ts": "2026-10-10T05:56:56Z", "hours": 3.9631, "text": "I have finished on the rocket and I submitted for funding I don’t really know how to make logos so I just threw up something together, and I guess it’s fine. I also made the BOM (Bill Of materials) you can also check out my project on https://github.com/CloudStas/Propulsively-Landing-Model-Rocket"}, {"post_id": 76250, "ts": "2026-10-02T21:28:25Z", "hours": 2.7197, "text": "I finally finished my PCB costs about $30 on JLCPCB: this pcb has an ESP32 for control and powers from a 2s lipo battery 2200mah and powers 4x KST x08 v6 servos for XY control and throttle control and a usb port for debugging and 2x Igniters for 2x Estes F15 motors and 1x for releasing landing legs, almost done with the rocket."}, {"post_id": 74984, "ts": "2026-09-28T19:32:11Z", "hours": 6.7669, "text": "I am basically finished with the Landing legs for my TVC rocket and I just have to finish my PCB since the deadline got expanded to oct 31st so I have enough time. I might make a reaction wheel since I have enough time. I might also make a reaction wheel for stabilizing rocket’s roll. I am excited for launch."}, {"post_id": 70018, "ts": "2026-09-18T09:01:41Z", "hours": 4.7772, "text": "I thought of finishing the PCB but realized that it would take a few weeks for it to be made so instead i decided to daisy chain everything and I also designed an Avionics Bay that holds 2 computers(1x Raspberry Pi 3 Model A+ that is connected to a camera, and 1x ESP32-S3) and the ESP can send signals to ignite rocket engines or deploy landing legs. I also made a spreadsheet for all the parts and here is how the Avionics Bay and the BOM(Bill Of Materials) looks like: Also here is the BOM Link: https://docs.google.com/spreadsheets/d/1w17DnCs4J0WBasmAesTz5ANlNJR9XYsVwglhH3W97UI/edit?pli=1&gid=0#gid=0 Total Cost for the Electronics is The materials without 3d printing which is the final step is $482.35, I am going to later try to optimize the cost but for now I need to finish designing the rocket and then I will."}, {"post_id": 69129, "ts": "2026-09-16T13:13:59Z", "hours": 10.6092, "text": "I finally finished the TVC mount with throttle arms. And it supports 2 rocket motors and it can gimbal in all directions 5 degrees, I am basically done with the one of the hart parts. Up next I am going to redesign the flight computer PCB."}, {"post_id": 65323, "ts": "2026-09-10T12:17:26Z", "hours": 7.7383, "text": "I am redesigning the TVC mount with a better one so it can move better on it’s X/Y axis and also to be smaller. I still need to do the throttle arms and before that also need to figure out how to make it smaller to fit in something like a 74mm OD(Outer Diameter) tube or similar."}, {"post_id": 64071, "ts": "2026-09-08T06:45:20Z", "hours": 7.9139, "text": "I was designing my PCB but I decided to not make my own pcb and instead just use a Pi zero 2w and a teensy 4.1 with seperate igniters and servo/motor power connections. So now I am going to be designing an avionics bay in onshape to hold the computers and all the electronics. Edit: I am going to finish the pcb I am just going to finish the rocket design first."}, {"post_id": 58492, "ts": "2026-08-30T22:13:21Z", "hours": 11.015, "text": "Right now I am almost finished with the flight computer I spent most of the time fixing issues. And once I am finished I will post the BOM and add it to my github repo. Here are some features of the flight computer: The main CPU will be the ESP32-S3 and it will power 4x DC motors, 2x of them for YAW and PITCH and 2x more will be for the throttle arms, and lastly a dc motor for a reaction wheel to stabilize the rocket’s roll."}, {"post_id": 54628, "ts": "2026-08-25T17:31:07Z", "hours": 9.9667, "text": "There are a lot of parts for a Propulsively Landing Model Rocket, and I finished 1 one them which is Designing the TVC Mount. TVC or Thrust Vector Control is for gimbaling the rocket motor so the rocket can go upward straight. The Mount can also hold 2 motors one for ascent and another one for landing. Once the Landing motor burns out it literally just gets jettisoned and it falls out as the landing motor inside the tube ignites and the throttle arms are originally open but the throttle arms can be commanded by the flight computer to throttle down when needed. When the rocket gets closer to the ground it can throttle down more so it can become slower and slower until the legs touchdown on the ground. Right now I am currently designing the flight computer which is my first PCB and then I will make a mount for the rocket to hold the computer and the battery. After the Flight Computer is done I will work on the Reaction Wheel to Stabilize the rocket’s roll, and the airframe of the rocket which is simple, it’s just cardboard. And the final hardware design step is to design the landing legs which will be most likely to be made out of carbon fiber with a toy dampener. The way the legs work is kind of simple, they just have a nichrome wire on top of the legs, when the electrical current gets sent thru the wire it burns up and the legs can get out and click in so they are ready for impact. My Mount btw uses plastic + ceramic throttle arms and 4x Genuine MG90s servo’s. That said, Here is my TVC Mount: You can also check out the project on Github: https://github.com/CloudStas/Propulsively-Landing-Model-Rocket"}]...
|
Title: Silverflame - TVC propulsively landing rock Title: Silverflame - TVC propulsively landing rocket by @staspomortsev | Stardance
Devlogs:
There are a lot of parts for a Propulsively Landing Model Rocket, and I finished 1 one them which is Designing the TVC Mount. TVC or Thrust Vector Control is for gimbaling the rocket motor so the rocket can go upward straight. The Mount can also hold 2 motors one for ascent and another one for landing. Once the Landing motor burns out it literally just gets jettisoned and it falls out as the landing motor inside the tube ignites and the throttle arms are originally open but the throttle arms can be commanded by the flight computer to throttle down when needed. When the rocket gets closer to the ground it can throttle down more so it can become slower and slower until the legs touchdown on the ground. Right now I am currently designing the flight computer which is my first PCB and then I will make a mount for the rocket to hold the computer and the battery. After the Flight Computer is done I will work on the Reaction Wheel to Stabilize the rocket’s roll, and the airframe of the rocket which is simple, it’s just cardboard. And the final hardware design step is to design the landing legs which will be most likely to be made out of carbon fiber with a toy dampener. The way the legs work is kind of simple, they just have a nichrome wire on top of the legs, when the electrical current gets sent thru the wire it burns up and the legs can get out and click in so they are ready for impact. My Mount btw uses plastic + ceramic throttle arms and 4x Genuine MG90s servo’s. That said, Here is my TVC Mount: You can also check out the project on Github: https://github.com/CloudStas/Propulsively-Landing-Model-Rocket
Right now I am almost finished with the flight computer I spent most of the time fixing issues. And once I am finished I will post the BOM and add it to my github repo. Here are some features of the flight computer: The main CPU will be the ESP32-S3 and it will power 4x DC motors, 2x of them for YAW and PITCH and 2x more will be for the throttle arms, and lastly a dc motor for a reaction wheel to stabilize the rocket’s roll.
I was designing my PCB but I decided to not make my own pcb and instead just use a Pi zero 2w and a teensy 4.1 with seperate igniters and servo/motor power connections. So now I am going to be designing an avionics bay in onshape to hold the computers and all the electronics. Edit: I am going to finish the pcb I am just going to finish the rocket design first.
I am redesigning the TVC mount with a better one so it can move better on it’s X/Y axis and also to be smaller. I still need to do the throttle arms and before that also need to figure out how to make it smaller to fit in something like a 74mm OD(Outer Diameter) tube or similar.
I finally finished the TVC mount with throttle arms. And it supports 2 rocket motors and it can gimbal in all directions 5 degrees, I am basically done with the one of the hart parts. Up next I am going to redesign the flight computer PCB.
I thought of finishing the PCB but realized that it would take a few weeks for it to be made so instead i decided to daisy chain everything and I also designed an Avionics Bay that holds 2 computers(1x Raspberry Pi 3 Model A+ that is connected to a camera, and 1x ESP32-S3) and the ESP can send signals to ignite rocket engines or deploy landing legs. I also made a spreadsheet for all the parts and here is how the Avionics Bay and the BOM(Bill Of Materials) looks like: Also here is the BOM Link: https://docs.google.com/spreadsheets/d/1w17DnCs4J0WBasmAesTz5ANlNJR9XYsVwglhH3W97UI/edit?pli=1&gid=0#gid=0 Total Cost for the Electronics is The materials without 3d printing which is the final step is $482.35, I am going to later try to optimize the cost but for now I need to finish designing the rocket and then I will.
I am basically finished with the Landing legs for my TVC rocket and I just have to finish my PCB since the deadline got expanded to oct 31st so I have enough time. I might make a reaction wheel since I have enough time. I might also make a reaction wheel for stabilizing rocket’s roll. I am excited for launch.
I finally finished my PCB costs about $30 on JLCPCB: this pcb has an ESP32 for control and powers from a 2s lipo battery 2200mah and powers 4x KST x08 v6 servos for XY control and throttle control and a usb port for debugging and 2x Igniters for 2x Estes F15 motors and 1x for releasing landing legs, almost done with the rocket.
I have finished on the rocket and I submitted for funding I don’t really know how to make logos so I just threw up something together, and I guess it’s fine. I also made the BOM (Bill Of materials) you can also check out my project on https://github.com/CloudStas/Propulsively-Landing-Model-Rocket...
|
1792658927.8223095
|
1793263727.8223095
|
|
67299
|
fruitflyOS by @Moiz67 | Stardance
|
Moiz67
|
0
|
2.71
|
0
|
[]
|
[{"post_id": 78260, "ts": "202 [{"post_id": 78260, "ts": "2026-10-10T05:59:25Z", "hours": 1.1642, "text": "I added some more apps, and an app store from where u can add more apps. Also improved the design and added more fonts"}, {"post_id": 75925, "ts": "2026-10-01T16:53:12Z", "hours": 1.55, "text": "I am making a WebOS based on memes and adding new features into it."}]...
|
Title: fruitflyOS by @Moiz67 | Stardance
Devlogs: Title: fruitflyOS by @Moiz67 | Stardance
Devlogs:
I am making a WebOS based on memes and adding new features into it.
I added some more apps, and an app store from where u can add more apps. Also improved the design and added more fonts...
|
1793109037.5751498
|
1793713837.5751498
|
|
62780
|
KeyForge 12 by @threatsentinels | Stardance
|
threatsentinels
|
0
|
3.61
|
0
|
[]
|
[{"post_id": 78262, "ts": "202 [{"post_id": 78262, "ts": "2026-10-10T06:03:51Z", "hours": 1.0542, "text": "working on a casing for keyforge 12"}, {"post_id": 77805, "ts": "2026-10-08T11:35:27Z", "hours": 2.5597, "text": "Built a pcb for keyforge12 , this is a 12 key macropad with rotatory encoder and rp2040 controller . everything is now completed for pcb , casing and other things are remaining ."}]...
|
Title: KeyForge 12 by @threatsentinels | Stardance Title: KeyForge 12 by @threatsentinels | Stardance
Devlogs:
Built a pcb for keyforge12 , this is a 12 key macropad with rotatory encoder and rp2040 controller . everything is now completed for pcb , casing and other things are remaining .
working on a casing for keyforge 12...
|
1793047787.3787866
|
1793652587.3787866
|
|
65354
|
Clocking In by @Altaaf | Stardance
|
Altaaf
|
0
|
0.98
|
0
|
[]
|
[{"post_id": 78265, "ts": "202 [{"post_id": 78265, "ts": "2026-10-10T06:36:17Z", "hours": 0.9786, "text": "KiCad and ESP32 guide reading Today I went through the whole Blare guide and learnt about the working of xiao ESP32 and how kicad works. Funny thing is that i did use onshape for one project before and i was stumped about how do i get my PCB onto onshape but instead of looking for a way to import it like a wise person. I REMADE the whole PCB in part studio in OnShape. Obviously it was very wrong schematics and dimension wise so reading this guide did help. In the next one im gonna start (and hopefully end) with schematics and PCB atleast. LETSGOO"}]...
|
Title: Clocking In by @Altaaf | Stardance
Devlogs Title: Clocking In by @Altaaf | Stardance
Devlogs:
KiCad and ESP32 guide reading Today I went through the whole Blare guide and learnt about the working of xiao ESP32 and how kicad works. Funny thing is that i did use onshape for one project before and i was stumped about how do i get my PCB onto onshape but instead of looking for a way to import it like a wise person. I REMADE the whole PCB in part studio in OnShape. Obviously it was very wrong schematics and dimension wise so reading this guide did help. In the next one im gonna start (and hopefully end) with schematics and PCB atleast. LETSGOO...
|
1793087306.028783
|
1793692106.028783
|
|
67935
|
Nexora NX-1 by @Moiz67 | Stardance
|
Moiz67
|
0
|
0.76
|
0
|
[]
|
[{"post_id": 78267, "ts": "202 [{"post_id": 78267, "ts": "2026-10-10T06:48:14Z", "hours": 0.7581, "text": "I added the components i needed to make the pcb"}]...
|
Title: Nexora NX-1 by @Moiz67 | Stardance
Devlogs Title: Nexora NX-1 by @Moiz67 | Stardance
Devlogs:
I added the components i needed to make the pcb...
|
1793116224.3136241
|
1793721024.3136241
|
|
60951
|
Maro hackpad :) by @deadbeef404 | Stardance
|
deadbeef404
|
0
|
5.67
|
0
|
[]
|
[{"post_id": 78268, "ts": "202 [{"post_id": 78268, "ts": "2026-10-10T06:52:53Z", "hours": 2.3333, "text": "Umm So yeah I redesigned my hackpad and now it has 4x rgb keys, a rotary knob, and a display. I also left some space in the right side bcuz i am planing to add like a small todo list space where the u can write todo or whatever u want."}, {"post_id": 66038, "ts": "2026-09-11T16:19:29Z", "hours": 3.0244, "text": "I have finally completed my hackpad!!"}, {"post_id": 65905, "ts": "2026-09-11T11:01:11Z", "hours": 0.3167, "text": "I have completed the PCB which was quite easy actually :)"}]...
|
Title: Maro hackpad :) by @deadbeef404 | Stardance Title: Maro hackpad :) by @deadbeef404 | Stardance
Devlogs:
I have completed the PCB which was quite easy actually :)
I have finally completed my hackpad!!
Umm So yeah I redesigned my hackpad and now it has 4x rgb keys, a rotary knob, and a display. I also left some space in the right side bcuz i am planing to add like a small todo list space where the u can write todo or whatever u want....
|
1793037122.2969265
|
1793641922.2969265
|
|
67418
|
Tether by @PahalDesai | Stardance
|
PahalDesai
|
1
|
8.0
|
43
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T08:12:14Z", "hours": 8.0, "multiplier": 10.89, "payout": 43, "blessing": "neutral", "text": "Hi Everyone, This is Tether. It’s a platform where people can share their stories and experiences. Features user authentication using google and github user can create, read, delete posts like and comment on posts replies on comments what did I use to create it? It’s a full stack web app made using vanilla html, css and js. I used Supabase to store posts, likes, comments, users, etc. I used Cloudflare worker to store all the server side logic and API endpoints. what did I learn? I learnt a lot about backend, databases and how cloudflare workers work. Also that you can rotate an hr tag an make it a seperator for menu items instead of CSS borders.", "repo": "https://github.com/pahal-desai/tether", "demo": "https://pahal-desai.github.io/tether/"}]...
|
[{"post_id": 78271, "ts": "202 [{"post_id": 78271, "ts": "2026-10-10T07:25:01Z", "hours": 0.2786, "text": "Devlog 6 Added a readme file. and now it’s ready to ship"}, {"post_id": 78269, "ts": "2026-10-10T06:53:19Z", "hours": 2.8325, "text": "Devlog 5 Just finnished adding a ton of features. You can now login with github, you can now like, share, comment and follow other authors! Also, authours can delete their posts It’s now a propper platform for sharing stories and experiences. I guess it’s ready for a ship!"}, {"post_id": 77366, "ts": "2026-10-06T17:52:15Z", "hours": 1.0786, "text": "Devlog 4 Completed adding the post system and now it’s a functional site! In the next devlog I’ll likely introduce the account system or the follows, comments and likes feature in the posts."}, {"post_id": 76731, "ts": "2026-10-04T13:15:02Z", "hours": 1.1119, "text": "Devlog 3 Today, i made some progress by adding some elements in the main site. It starts looking like a social media platform now :D"}, {"post_id": 76380, "ts": "2026-10-03T10:57:12Z", "hours": 1.0347, "text": "Devlog 2 Just completed making a minimal landing page. it uses cutom fonts! The website is deployed at - https://pahal-desai.github.io/tether/"}, {"post_id": 76110, "ts": "2026-10-02T10:28:58Z", "hours": 1.4247, "text": "Hi everyone, This is Tether - a place where like minds meet. the basic idea of the project Tether is a social discovery platform built around shared interests. Instead of connecting with people randomly, Tether helps you discover people, communities, and activities based on the things you actually care about. Progress today, after 3 painful hours of building (hackatime doesnt count supabase and cloudflare T_T), i built the login and signup system for the website. It uses supabase, google cloud auth (for continue with googl) and cloudflare worker (so that there are no secrets in the frontend)."}]...
|
Title: Tether by @PahalDesai | Stardance
Devlogs: Title: Tether by @PahalDesai | Stardance
Devlogs:
Hi everyone, This is Tether - a place where like minds meet. the basic idea of the project Tether is a social discovery platform built around shared interests. Instead of connecting with people randomly, Tether helps you discover people, communities, and activities based on the things you actually care about. Progress today, after 3 painful hours of building (hackatime doesnt count supabase and cloudflare T_T), i built the login and signup system for the website. It uses supabase, google cloud auth (for continue with googl) and cloudflare worker (so that there are no secrets in the frontend).
Devlog 2 Just completed making a minimal landing page. it uses cutom fonts! The website is deployed at - https://pahal-desai.github.io/tether/
Devlog 3 Today, i made some progress by adding some elements in the main site. It starts looking like a social media platform now :D
Devlog 4 Completed adding the post system and now it’s a functional site! In the next devlog I’ll likely introduce the account system or the follows, comments and likes feature in the posts.
Devlog 5 Just finnished adding a ton of features. You can now login with github, you can now like, share, comment and follow other authors! Also, authours can delete their posts It’s now a propper platform for sharing stories and experiences. I guess it’s ready for a ship!
Devlog 6 Added a readme file. and now it’s ready to ship
Ships:
Hi Everyone, This is Tether. It’s a platform where people can share their stories and experiences. Features user authentication using google and github user can create, read, delete posts like and comment on posts replies on comments what did I use to create it? It’s a full stack web app made using vanilla html, css and js. I used Supabase to store posts, likes, comments, users, etc. I used Cloudflare worker to store all the server side logic and API endpoints. what did I learn? I learnt a lot about backend, databases and how cloudflare workers work. Also that you can rotate an hr tag an make it a seperator for menu items instead of CSS borders....
|
1793062252.4850066
|
1793148652.4850066
|
|
68946
|
My protfolio by @Ragi23 | Stardance
|
Ragi23
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T11:49:15Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Learned something new it was fun to build my portfolio.", "repo": "https://github.com/itzskillup01/My_portfolio", "demo": "https://itzskillup01.github.io/My_portfolio/"}]...
|
[{"post_id": 78277, "ts": "202 [{"post_id": 78277, "ts": "2026-10-10T08:14:10Z", "hours": 2.1903, "text": "I made my portfolio website using html, css and js where in I learned the basics and still trying to improve the website"}]...
|
Title: My protfolio by @Ragi23 | Stardance
Devlog Title: My protfolio by @Ragi23 | Stardance
Devlogs:
I made my portfolio website using html, css and js where in I learned the basics and still trying to improve the website
Ships:
Learned something new it was fun to build my portfolio....
|
1792360377.3055148
|
1793224377.3055148
|
|
66094
|
Glyph by @jamallyemin | Stardance
|
jamallyemin
|
1
|
4.65
|
25
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T14:12:45Z", "hours": 3.0, "multiplier": 6.25, "payout": 25, "blessing": "neutral", "text": "hai! i built Glyph, a browser puzzle game about figuring out the hidden pattern/rule in a 3x3 grid. every row and column follows a pattern across shape, color, and count, and you have to work out what goes in the missing cell. it has 4 difficulty tiers and once you clear them it just goes forever so it’s basically endless. hardest part was getting the puzzle generator to handle multi-attribute latin squares cleanly without duplicate options or bad decoy logic. i like how fast and clean it turned out : it has endless mode with streak tracking, a seeded daily challegne with wordle-style emoji shares, fastest solve timers, and local storage state all packed into pure vanilla JS with zero backend ^_^", "repo": "https://github.com/jamallyemin/Glyph", "demo": "https://jamallyemin.github.io/Glyph/"}]...
|
[{"post_id": 78284, "ts": "202 [{"post_id": 78284, "ts": "2026-10-10T08:45:13Z", "hours": 1.6492, "text": "added sound effects for true, false, and button clicks, plus did a little code cleanup."}, {"post_id": 74860, "ts": "2026-09-28T13:50:25Z", "hours": 3.3803, "text": "hello!! in this 3.2hrs (i forgot to post devlogs earlier :/) I built a browser puzzle game about finding the hidden rule. every row and column of a 3x3 grid follows a pattern across shape, color, and count, and you have to work out what belongs in the missing cell. got the core game engine running with latin square logic across 4 difficulty tiers—starting simple with just color, then bringing in shape, count, and full grid mixups. added endless mode with 3 lives and streak tracking, a seeded daily challenge with wordle-style emoji sharing, per-round timers for fastest solves, and a hint system that reveals attributes if you’re stuck. hooked up local storage so best streaks and daily results persist, polished the layout with CSS flex/grid, and threw in confetti for new bests. zero backend, zero login"}]...
|
Title: Glyph by @jamallyemin | Stardance
Devlogs: Title: Glyph by @jamallyemin | Stardance
Devlogs:
hello!! in this 3.2hrs (i forgot to post devlogs earlier :/) I built a browser puzzle game about finding the hidden rule. every row and column of a 3x3 grid follows a pattern across shape, color, and count, and you have to work out what belongs in the missing cell. got the core game engine running with latin square logic across 4 difficulty tiers—starting simple with just color, then bringing in shape, count, and full grid mixups. added endless mode with 3 lives and streak tracking, a seeded daily challenge with wordle-style emoji sharing, per-round timers for fastest solves, and a hint system that reveals attributes if you’re stuck. hooked up local storage so best streaks and daily results persist, polished the layout with CSS flex/grid, and threw in confetti for new bests. zero backend, zero login
added sound effects for true, false, and button clicks, plus did a little code cleanup.
Ships:
hai! i built Glyph, a browser puzzle game about figuring out the hidden pattern/rule in a 3x3 grid. every row and column follows a pattern across shape, color, and count, and you have to work out what goes in the missing cell. it has 4 difficulty tiers and once you clear them it just goes forever so it’s basically endless. hardest part was getting the puzzle generator to handle multi-attribute latin squares cleanly without duplicate options or bad decoy logic. i like how fast and clean it turned out : it has endless mode with streak tracking, a seeded daily challegne with wordle-style emoji shares, fastest solve timers, and local storage state all packed into pure vanilla JS with zero backend ^_^...
|
1793062165.999345
|
1793148565.999345
|
|
67029
|
My awesome macropad! by @nasiv | Stardance
|
nasiv
|
0
|
1.43
|
0
|
[]
|
[{"post_id": 78289, "ts": "202 [{"post_id": 78289, "ts": "2026-10-10T09:41:57Z", "hours": 1.4333, "text": "Im currently building my first hardware project which is a macropad, I just finished the circuit design."}]...
|
Title: My awesome macropad! by @nasiv | Stardance
Title: My awesome macropad! by @nasiv | Stardance
Devlogs:
Im currently building my first hardware project which is a macropad, I just finished the circuit design....
|
1793105573.0995574
|
1793710373.0995574
|
|
37737
|
Voxelium by @notryaan | Stardance
|
notryaan
|
1
|
51.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T10:50:01Z", "hours": 51.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Voxelium 1.0 First release!! Voxelium is a voxel game I built from scratch in C++ and OpenGL, no engine, just a lot of code. Endless worlds with real seas, mountain ranges, caves, weather and animals, and you can break and build whatever you want. What’s in it Endless worlds from a seed: seas with islands, wide beaches, mountain ranges with snow on top, big deserts and forests, and you can see about 5 km out Caves with huge caverns, tunnels and ravines, old mineshafts running through them, and it’s actually dark down there so bring lamps Lighthouses, shipwrecks, desert ruins and pyramids (there’s something under the pyramids) Water that flows, waves that go crazy in storms, coral reefs and kelp forests Weather that does its own thing: rain, snow that piles up and melts, thunderstorms with real lightning, mist over the water at sunrise Crabs, turtles, fish, jellyfish that glow at night, birds, butterflies and fireflies. You can punch them, they will run Every block has its own sounds and every biome has its own ambience Break and place blocks, 25 lamp colours, no height limit, save as many worlds as you want Low / Medium / High / Ultra presets so it runs on more than just my PC Controls WASD + mouse, space to jump, F5 walk/fly, hold left click to break, middle click to place, F4 hotbar, ESC settings, F3 debug stuff Tips Hit New World on the title screen and type a seed or roll one. Save from the ESC menu if you want to keep a world If Ultra is laggy, turn down detail dist in the settings first, it’s the biggest cost by far Big thanks to everyone on opengameart.org whose textures and sounds are in here, they’re all credited in the readme.", "repo": "https://github.com/UltimaCodes/Voxelium", "demo": "https://github.com/UltimaCodes/Voxelium/releases/tag/v1.0"}]...
|
[{"post_id": 78298, "ts": "202 [{"post_id": 78298, "ts": "2026-10-10T10:44:33Z", "hours": 0.5822, "text": "OK FINAL DEVLOG ACTUALLY There were a few bugs from the previous one which I had to fix before release Tree tops looked unlit and forests looked really gloomy, even in full sun. The light was reaching them fine, the auto exposure was measuring the whole screen including the bright sky and darkening everything under it. It only measures the world now, so trees actually look lit Every new world had an old glowing test room carved underground in the same spot. It’s gone from new worlds, old worlds keep it so nothing in them changes- The game was running one of my internal tests every single time it launched, it doesn’t anymore There was a hidden launch option that crashed the game on purpose, left over from testing the crash reporter, removed"}, {"post_id": 78292, "ts": "2026-10-10T09:50:27Z", "hours": 14.1283, "text": "Final devlog (probably) Terrain & World Gen The old terrain was hills everywhere with puddles in between, and the mountains were random spikes shooting straight up out of flat ground like something was stabbing the map from underneath. So I rewrote the whole generator. There’s real seas now with islands and deep water, and coasts start with a proper wide beach before the land slowly rises. Mountains come in long ranges with foothills, bare rock on the steep parts, a treeline and snow on top, and deserts are one big desert instead of a sand patch in the middle of nowhere. Getting the mountains right took way longer than I want to admit. First they went up like walls, then there were 40 block deep trenches running in perfectly straight lines for hundreds of blocks through the hills. Turned out the math that works out how far you are from the coast completely loses it deep inland, so now it looks out in eight directions for the actual coast instead of guessing. Old worlds keep their old terrain so nothing you built gets new ground under it. Caves & Structures Caves are actual caves now: huge caverns, long winding tunnels, ravines, water pooled at the bottom, and stalactites. They also don’t break out of the side of every hill anymore, which is where all those random gaps and chasms were coming from. Old mineshafts run through them with lamps and plank bridges over the drops, and there’s pyramids out in the desert with a lit room inside. There’s also something hidden under the pyramids but I’m not telling you what. Water & Animals Water has actual waves now, flat at the beach, bigger out in deep water, and way bigger in a storm. Also fixed far away water reflections breaking into lines. The animals were ghosts this whole time; you could walk straight through a turtle. Now they’re solid, punching one knocks it back and it runs off, and swimming into a school of fish scatters them. The fish were also translucent, fixed that. And the black squares that flashed on screen when it rained are gone (funny NaN issue). Lighting & Performance Caves are properly dark now unless something lights them, and lamp light hangs in the air a bit so lamps actually glow instead of just painting the wall. Lighting runs on its own thread now so it doesn’t eat into your frame, and sun shafts and lamp glow render at half resolution, which made them way cheaper and you can’t tell. Also fixed a bunch of random bugs: Game freezing for a few seconds when you broke a block somewhere new. The world sometimes thinking it was still loading forever. Memory getting corrupted when you closed the game. The settings back button hiding off the bottom of the screen at 720p."}, {"post_id": 74371, "ts": "2026-09-27T08:18:33Z", "hours": 4.6833, "text": "Hallo, audio and the settings menu are in like I said last time, plus a mountain of bugs I only found by actually sitting down and playing it TLDR; The game has sound now, a real title screen, settings with quality presets, and I fixed a ton of stuff that only showed up during long play sessions Audio: The world was dead silent so I added a bunch of CC0 sounds. Every block has its own break, place and footstep sound based on what it’s made of now instead of almost everything falling back to one generic clip. Jumping, landing (heavier sound if you fall from high up), getting in and out of water, all of that. Funniest part is the audio test was passing the whole time while the game made zero sound, it only checked that sounds were “playing”, not that anything came out of the speakers, so now it actually listens to the output. Also added ambience for every biome, birds, cicadas, frogs, desert wind, waves, gulls and cave drips. Some I generated myself from noise and some are real recordings. Menus: Proper settings menu with tabs and Low/Medium/High/Ultra presets. The presets actually change how much work the shaders do instead of just flipping effects on and off. Render scale got a sharpening pass so running it below 1 doesn’t look like mush anymore, and a few settings were quietly resetting every time you launched which is fixed. Made a real title screen too, you can type a seed or load a saved world and it shows the actual world behind the menu, it even previews the terrain as you type a seed. First version of it had buttons that did literally nothing when you clicked them lol. Also added a screenshot key, crash dumps and an app icon. Bugs (so many): The first block you broke after launching froze the game for like 10 seconds and every edit after that for another second or two. Sometimes the area you spawned in just never loaded and you had to fly to the nearest chunk. Flying fast made it look like the whole world was reloading. Ultra was loading a smaller world behind the loading screen and then doubling it the second you spawned, so the start was super laggy. Hard black blotches all over the terrain in the day turned out to be cloud shadows aliasing, and the checkered pattern on grassy slopes was ambient occlusion getting applied twice. Water had black spots at certain angles from the reflections freaking out, and weird streaks across lakes that turned out to be the ambient occlusion using the lake bed under the water instead of the surface. Caves were getting lit by the time of day which makes no sense, light fading off in visible rings is gone, and the leaf texture had no transparency so every tree was a solid blob this entire time. Did a lighting pass to make it look more like a shader pack, overdid it and everything was way too bright, so I dialed it back. Also killed contact shadows completely, they caused more problems than they fixed. Next up is making the world more interesting, new biomes, animals and better weather"}, {"post_id": 65910, "ts": "2026-09-11T11:20:25Z", "hours": 8.0572, "text": "Hallo pretty big changelog because I didn’t do anything for a bit oops TLDR; Cleaned out old bugs, did a performance pass, built actual world simulation and did a full graphics overhaul Bugs : Chunks were silently vanishing past a hardcoded cap that was way too low for default settings, no draw, no shadow, which turned out to be that “chunks glitch out while moving” bug. Fixed it plus streaky stars, a moon that looked like a tiny sun, and water growing phantom walls at chunk borders from an earlier fix. Teleporting somewhere far caused a 1004ms freeze. Profiled it instead of guessing and found the GPU arena was doing a full reset every time. Fixed properly and worst case is under 12ms now. Performance : Frame time was 15.5ms. Turned out shadows were re-rendering every single frame for no reason, only redrawing a cascade when it actually needs to cut that down 89% and dropped the whole frame in half to about 2.3ms. Built a couple things expecting wins that turned out to be losses when actually measured (one was 28% slower), and almost built a whole defrag system for the arena before realizing it wasn’t fragmentation, it was just too small so I bumped it up and the problem vanished on its own. Real world woahh : Flowing water, colored block light, ore veins that actually clump instead of speckling everywhere. Rewrote falling sand and gravel, the old version was doing 118k lookups a tick and never even stopped. Rebuilt caves properly using two noise fields overlapping instead of one, actual tunnels now instead of flat noodles. Also chunks exist at any height now, no ceiling at all. Building that surfaced 3 old bugs that had been broken this whole time. Graphicss : Water got reflections, caustics, underwater god rays. Found an evil ass NaN bug doing the caustics where the seabed was rendering as solid black rectangles until I caught it. Rain and snow are generated entirely in the vertex shader, so 30k drops cost one draw call and zero buffer uploads. Volumetric clouds and cloud shadows now share the same noise field so they can’t disagree with each other. Also fake normal maps with zero authored art, the pixel art textures already have the detail baked into their own shading so I just reused that as the normal map, completely free. Built and killed an atmosphere LUT after measuring it three separate times, kept losing to the simple hand tuned sky. Also fixed emitters like lamps flickering their own glow depending on the angle you looked at them. Next up is audio, a settings menu, and makign the game look better somehow"}, {"post_id": 43979, "ts": "2026-08-09T13:45:27Z", "hours": 8.1175, "text": "voxel engine devlog #3 Shadows, post processing, save files, and actual trees. GPU arena overflow funny moments it was not pleasant to deal with + graphics overhaul (added water) Forward HDR & Shadows: Built a full pipeline with 3 cascade shadow maps, half-res SSAO, and Jimenez bloom. Shadows were super vertex-bound at first (5.12ms), but tightening the cascade splits chopped that straight down to 3.5ms. Saving to Disk (.vxr Region Files): Chunks now compress using varints (a cave chunk shrinks from 65 KB down to 5.7 KB). We now only save edited chunks as a diff against the noise seed while everything else regenerates on the fly. I tested it by blowing up a wall, flying a few thousand blocks away to evict it, flying back, and it reloaded intact from disk. Trees without neighbor lookups: Solved tree canopy generation across chunk borders by making them deferred. Each chunk calculates what parts of nearby tree roots fall inside its bounding box, avoiding goofy crossthread neighbor lookups. Water meshing: Added water as a second mesh layer. Opaque faces draw against air or water (so you see the seabed), while water faces only emit against air. Performance upgrades: High render distances were causing massive frame stalls because the GPU arena buffer was running at 92% capacity and triggering full GPU resets. Bumped the arena from 8M to 16M quads (128 MB) and nuked a hidden O(N) chunk scan sooooo hopefully smooth sailing from now . What now?: Full pipeline runs at ~4.5ms (~0.9ms with shaders off). Up next: smoothing out face lighting with per-corner ambient occlusion (AO) baked into the greedy mesh and looking into SSR for water."}, {"post_id": 33323, "ts": "2026-07-23T04:07:54Z", "hours": 5.7403, "text": "voxel engine devlog #2 Threading turned into rendering turned into lighting turned into an actual world with caves in it, all in one sitting. This was NOT the plan but here we are lol. Threading: got gen + meshing off the main thread onto a real worker pool. Workers are just pure functions, voxels in results out through queues, so the only actual cross-thread headache was stopping a chunk from getting unloaded while another job was still reading it (fixed with a refcount). World output came out byte-identical to before which is exactly what I wanted, just moved where the work happens not what it produces. Worst case frame during a full re-stream is under 1ms now. One draw call: this was the fun one. Went from 349 draw calls (one per chunk, kind of wacko ngl) down to 1. GPU buffer stays persistently mapped, culling got moved into a compute shader, and the indirect draw pulls its own visible count straight off the GPU so it never even touches the CPU. Same exact pixels as before, just the CPU isn’t sitting there doing a bunch of pointless work anymore. Cave culling: engine now figures out which chunks you could actually see air through and just doesn’t draw the rest. Above ground that’s about 40% fewer chunks. My sealed test room underground was cutting 98%+ but that number came back down once real caves existed instead of one clean sealed box, which makes sense since it’s following actual connectivity now instead of a best case demo. Lighting: sky + block light through BFS, baked straight into the mesh so there’s no separate lighting pass at render time. Threw in a glow block to test with. Removing a light source zeroes it out exactly and adding it back restores it exactly, verified both instead of assuming it just works. Terrain + you can hit stuff now: swapped the flat test world for actual noise based terrain, caves carved with 3D noise instead of flat tunnels. Added raycasting so you can break/place blocks. Player movement runs on a fixed timestep so framerate literally cannot change how fast you move. Next up: lighting is flat per face right now, want that smoothed per corner eventually. also got one frame time spike during heavy cave streaming I need to go check out before it turns into an actual problem once flying through caves is a thing."}, {"post_id": 33131, "ts": "2026-07-22T19:16:08Z", "hours": 9.4881, "text": "voxel engine first devlog yayyyyyy!!!!!! Deadahh just wanted to put everything from the last few days into one initial devlog so I don’t have to keep yap too much. Started with basic OpenGL 4.6 and GLFW, instead of using string lookups for shaders which is clown behavior, everything uses explicit locations. I also set up a headless smoke test so the CI can render offscreen, check its own pixels, and pass without popping up a window and being too goofy. For debugging, I threw in an ImGui menu to track frames, draw calls, and memory without making the heap allocator crash out. Steady-state heap allocations are at zero right now + also flipped the depth buffer to reversed-D because standard depth buffers kaboom at long distances and make the textures Z-fight. The Mesher thingy The first mesher I built was literally just a mesher. A regular mesher. There was nothing special about it. It just emitted 6 expanded vertices per face which took up way too much space (615 KB a chunk) and was slow. I improved it and made a binary greedy mesher that packs an entire quad into a single 64-bit integer. It uses 64-bit bitwise column ops to merge faces instantly. 2.7x fewer triangles and 33x less memory. It’s so fast it takes like 0.05ms and I also ripped out VBOs completely for SSBO vertex pulling, meaning the GPU just reconstructs the geometry on the fly. There was one issue where the greedy mesher left microscopic sub-pixel holes everywhere so I kept seeing pinhole cracks, so I just bloated every quad by 0.001 so they overlap and cover it up (surely this works well enough). Chunks & Compressing Having raw voxel arrays was eating my RAM alive, so I used palette compression. If a chunk is entirely air or entirely stone, it just stores one ID now. If it’s mixed, it bit-packs the indices, this dropped voxel memory by 20x. We’re streaming a 21x21x4 chunk radius (like 2,100 chunks) and it only takes 6.6 MB. Added a chunk streaming manager so it loads in a ring around you. I had to put strict budgets on generation and meshing per frame, otherwise the game just freezes when you move too fast + CPU frustum culling means we only actually draw the chunks you’re looking at. What’s Next? Right now the engine is in the state of being too good and being too bad at the same time. It’s doing like 349 individual draw calls per frame (one for every visible chunk). It works, but it’s got some quirks that I need to kaboom first. Next up is building a persistent arena buffer and GPU-driven culling so we can collapse the entire world into ONE single draw call using indirect drawing."}]...
|
Title: Voxelium by @notryaan | Stardance
Devlogs: Title: Voxelium by @notryaan | Stardance
Devlogs:
voxel engine first devlog yayyyyyy!!!!!! Deadahh just wanted to put everything from the last few days into one initial devlog so I don’t have to keep yap too much. Started with basic OpenGL 4.6 and GLFW, instead of using string lookups for shaders which is clown behavior, everything uses explicit locations. I also set up a headless smoke test so the CI can render offscreen, check its own pixels, and pass without popping up a window and being too goofy. For debugging, I threw in an ImGui menu to track frames, draw calls, and memory without making the heap allocator crash out. Steady-state heap allocations are at zero right now + also flipped the depth buffer to reversed-D because standard depth buffers kaboom at long distances and make the textures Z-fight. The Mesher thingy The first mesher I built was literally just a mesher. A regular mesher. There was nothing special about it. It just emitted 6 expanded vertices per face which took up way too much space (615 KB a chunk) and was slow. I improved it and made a binary greedy mesher that packs an entire quad into a single 64-bit integer. It uses 64-bit bitwise column ops to merge faces instantly. 2.7x fewer triangles and 33x less memory. It’s so fast it takes like 0.05ms and I also ripped out VBOs completely for SSBO vertex pulling, meaning the GPU just reconstructs the geometry on the fly. There was one issue where the greedy mesher left microscopic sub-pixel holes everywhere so I kept seeing pinhole cracks, so I just bloated every quad by 0.001 so they overlap and cover it up (surely this works well enough). Chunks & Compressing Having raw voxel arrays was eating my RAM alive, so I used palette compression. If a chunk is entirely air or entirely stone, it just stores one ID now. If it’s mixed, it bit-packs the indices, this dropped voxel memory by 20x. We’re streaming a 21x21x4 chunk radius (like 2,100 chunks) and it only takes 6.6 MB. Added a chunk streaming manager so it loads in a ring around you. I had to put strict budgets on generation and meshing per frame, otherwise the game just freezes when you move too fast + CPU frustum culling means we only actually draw the chunks you’re looking at. What’s Next? Right now the engine is in the state of being too good and being too bad at the same time. It’s doing like 349 individual draw calls per frame (one for every visible chunk). It works, but it’s got some quirks that I need to kaboom first. Next up is building a persistent arena buffer and GPU-driven culling so we can collapse the entire world into ONE single draw call using indirect drawing.
voxel engine devlog #2 Threading turned into rendering turned into lighting turned into an actual world with caves in it, all in one sitting. This was NOT the plan but here we are lol. Threading: got gen + meshing off the main thread onto a real worker pool. Workers are just pure functions, voxels in results out through queues, so the only actual cross-thread headache was stopping a chunk from getting unloaded while another job was still reading it (fixed with a refcount). World output came out byte-identical to before which is exactly what I wanted, just moved where the work happens not what it produces. Worst case frame during a full re-stream is under 1ms now. One draw call: this was the fun one. Went from 349 draw calls (one per chunk, kind of wacko ngl) down to 1. GPU buffer stays persistently mapped, culling got moved into a compute shader, and the indirect draw pulls its own visible count straight off the GPU so it never even touches the CPU. Same exact pixels as before, just the CPU isn’t sitting there doing a bunch of pointless work anymore. Cave culling: engine now figures out which chunks you could actually see air through and just doesn’t draw the rest. Above ground that’s about 40% fewer chunks. My sealed test room underground was cutting 98%+ but that number came back down once real caves existed instead of one clean sealed box, which makes sense since it’s following actual connectivity now instead of a best case demo. Lighting: sky + block light through BFS, baked straight into the mesh so there’s no separate lighting pass at render time. Threw in a glow block to test with. Removing a light source zeroes it out exactly and adding it back restores it exactly, verified both instead of assuming it just works. Terrain + you can hit stuff now: swapped the flat test world for actual noise based terrain, caves carved with 3D noise instead of flat tunnels. Added raycasting so you can break/place blocks. Player movement runs on a fixed timestep so framerate literally cannot change how fast you move. Next up: lighting is flat per face right now, want that smoothed per corner eventually. also got one frame time spike during heavy cave streaming I need to go check out before it turns into an actual problem once flying through caves is a thing.
voxel engine devlog #3 Shadows, post processing, save files, and actual trees. GPU arena overflow funny moments it was not pleasant to deal with + graphics overhaul (added water) Forward HDR & Shadows: Built a full pipeline with 3 cascade shadow maps, half-res SSAO, and Jimenez bloom. Shadows were super vertex-bound at first (5.12ms), but tightening the cascade splits chopped that straight down to 3.5ms. Saving to Disk (.vxr Region Files): Chunks now compress using varints (a cave chunk shrinks from 65 KB down to 5.7 KB). We now only save edited chunks as a diff against the noise seed while everything else regenerates on the fly. I tested it by blowing up a wall, flying a few thousand blocks away to evict it, flying back, and it reloaded intact from disk. Trees without neighbor lookups: Solved tree canopy generation across chunk borders by making them deferred. Each chunk calculates what parts of nearby tree roots fall inside its bounding box, avoiding goofy crossthread neighbor lookups. Water meshing: Added water as a second mesh layer. Opaque faces draw against air or water (so you see the seabed), while water faces only emit against air. Performance upgrades: High render distances were causing massive frame stalls because the GPU arena buffer was running at 92% capacity and triggering full GPU resets. Bumped the arena from 8M to 16M quads (128 MB) and nuked a hidden O(N) chunk scan sooooo hopefully smooth sailing from now . What now?: Full pipeline runs at ~4.5ms (~0.9ms with shaders off). Up next: smoothing out face lighting with per-corner ambient occlusion (AO) baked into the greedy mesh and looking into SSR for water.
Hallo pretty big changelog because I didn’t do anything for a bit oops TLDR; Cleaned out old bugs, did a performance pass, built actual world simulation and did a full graphics overhaul Bugs : Chunks were silently vanishing past a hardcoded cap that was way too low for default settings, no draw, no shadow, which turned out to be that “chunks glitch out while moving” bug. Fixed it plus streaky stars, a moon that looked like a tiny sun, and water growing phantom walls at chunk borders from an earlier fix. Teleporting somewhere far caused a 1004ms freeze. Profiled it instead of guessing and found the GPU arena was doing a full reset every time. Fixed properly and worst case is under 12ms now. Performance : Frame time was 15.5ms. Turned out shadows were re-rendering every single frame for no reason, only redrawing a cascade when it actually needs to cut that down 89% and dropped the whole frame in half to about 2.3ms. Built a couple things expecting wins that turned out to be losses when actually measured (one was 28% slower), and almost built a whole defrag system for the arena before realizing it wasn’t fragmentation, it was just too small so I bumped it up and the problem vanished on its own. Real world woahh : Flowing water, colored block light, ore veins that actually clump instead of speckling everywhere. Rewrote falling sand and gravel, the old version was doing 118k lookups a tick and never even stopped. Rebuilt caves properly using two noise fields overlapping instead of one, actual tunnels now instead of flat noodles. Also chunks exist at any height now, no ceiling at all. Building that surfaced 3 old bugs that had been broken this whole time. Graphicss : Water got reflections, caustics, underwater god rays. Found an evil ass NaN bug doing the caustics where the seabed was rendering as solid black rectangles until I caught it. Rain and snow are generated entirely in the vertex shader, so 30k drops cost one draw call and zero buffer uploads. Volumetric clouds and cloud shadows now share the same noise field so they can’t disagree with each other. Also fake normal maps with zero authored art, the pixel art textures already have the detail baked into their own shading so I just reused that as the normal map, completely free. Built and killed an atmosphere LUT after measuring it three separate times, kept losing to the simple hand tuned sky. Also fixed emitters like lamps flickering their own glow depending on the angle you looked at them. Next up is audio, a settings menu, and makign the game look better somehow
Hallo, audio and the settings menu are in like I said last time, plus a mountain of bugs I only found by actually sitting down and playing it TLDR; The game has sound now, a real title screen, settings with quality presets, and I fixed a ton of stuff that only showed up during long play sessions Audio: The world was dead silent so I added a bunch of CC0 sounds. Every block has its own break, place and footstep sound based on what it’s made of now instead of almost everything falling back to one generic clip. Jumping, landing (heavier sound if you fall from high up), getting in and out of water, all of that. Funniest part is the audio test was passing the whole time while the game made zero sound, it only checked that sounds were “playing”, not that anything came out of the speakers, so now it actually listens to the output. Also added ambience for every biome, birds, cicadas, frogs, desert wind, waves, gulls and cave drips. Some I generated myself from noise and some are real recordings. Menus: Proper settings menu with tabs and Low/Medium/High/Ultra presets. The presets actually change how much work the shaders do instead of just flipping effects on and off. Render scale got a sharpening pass so running it below 1 doesn’t look like mush anymore, and a few settings were quietly resetting every time you launched which is fixed. Made a real title screen too, you can type a seed or load a saved world and it shows the actual world behind the menu, it even previews the terrain as you type a seed. First version of it had buttons that did literally nothing when you clicked them lol. Also added a screenshot key, crash dumps and an app icon. Bugs (so many): The first block you broke after launching froze the game for like 10 seconds and every edit after that for another second or two. Sometimes the area you spawned in just never loaded and you had to fly to the nearest chunk. Flying fast made it look like the whole world was reloading. Ultra was loading a smaller world behind the loading screen and then doubling it the second you spawned, so the start was super laggy. Hard black blotches all over the terrain in the day turned out to be cloud shadows aliasing, and the checkered pattern on grassy slopes was ambient occlusion getting applied twice. Water had black spots at certain angles from the reflections freaking out, and weird streaks across lakes that turned out to be the ambient occlusion using the lake bed under the water instead of the surface. Caves were getting lit by the time of day which makes no sense, light fading off in visible rings is gone, and the leaf texture had no transparency so every tree was a solid blob this entire time. Did a lighting pass to make it look more like a shader pack, overdid it and everything was way too bright, so I dialed it back. Also killed contact shadows completely, they caused more problems than they fixed. Next up is making the world more interesting, new biomes, animals and better weather
Final devlog (probably) Terrain & World Gen The old terrain was hills everywhere with puddles in between, and the mountains were random spikes shooting straight up out of flat ground like something was stabbing the map from underneath. So I rewrote the whole generator. There’s real seas now with islands and deep water, and coasts start with a proper wide beach before the land slowly rises. Mountains come in long ranges with foothills, bare rock on the steep parts, a treeline and snow on top, and deserts are one big desert instead of a sand patch in the middle of nowhere. Getting the mountains right took way longer than I want to admit. First they went up like walls, then there were 40 block deep trenches running in perfectly straight lines for hundreds of blocks through the hills. Turned out the math that works out how far you are from the coast completely loses it deep inland, so now it looks out in eight directions for the actual coast instead of guessing. Old worlds keep their old terrain so nothing you built gets new ground under it. Caves & Structures Caves are actual caves now: huge caverns, long winding tunnels, ravines, water pooled at the bottom, and stalactites. They also don’t break out of the side of every hill anymore, which is where all those random gaps and chasms were coming from. Old mineshafts run through them with lamps and plank bridges over the drops, and there’s pyramids out in the desert with a lit room inside. There’s also something hidden under the pyramids but I’m not telling you what. Water & Animals Water has actual waves now, flat at the beach, bigger out in deep water, and way bigger in a storm. Also fixed far away water reflections breaking into lines. The animals were ghosts this whole time; you could walk straight through a turtle. Now they’re solid, punching one knocks it back and it runs off, and swimming into a school of fish scatters them. The fish were also translucent, fixed that. And the black squares that flashed on screen when it rained are gone (funny NaN issue). Lighting & Performance Caves are properly dark now unless something lights them, and lamp light hangs in the air a bit so lamps actually glow instead of just painting the wall. Lighting runs on its own thread now so it doesn’t eat into your frame, and sun shafts and lamp glow render at half resolution, which made them way cheaper and you can’t tell. Also fixed a bunch of random bugs: Game freezing for a few seconds when you broke a block somewhere new. The world sometimes thinking it was still loading forever. Memory getting corrupted when you closed the game. The settings back button hiding off the bottom of the screen at 720p.
OK FINAL DEVLOG ACTUALLY There were a few bugs from the previous one which I had to fix before release Tree tops looked unlit and forests looked really gloomy, even in full sun. The light was reaching them fine, the auto exposure was measuring the whole screen including the bright sky and darkening everything under it. It only measures the world now, so trees actually look lit Every new world had an old glowing test room carved underground in the same spot. It’s gone from new worlds, old worlds keep it so nothing in them changes- The game was running one of my internal tests every single time it launched, it doesn’t anymore There was a hidden launch option that crashed the game on purpose, left over from testing the crash reporter, removed
Ships:
Voxelium 1.0 First release!! Voxelium is a voxel game I built from scratch in C++ and OpenGL, no engine, just a lot of code. Endless worlds with real seas, mountain ranges, caves, weather and animals, and you can break and build whatever you want. What’s in it Endless worlds from a seed: seas with islands, wide beaches, mountain ranges with snow on top, big deserts and forests, and you can see about 5 km out Caves with huge caverns, tunnels and ravines, old mineshafts running through them, and it’s actually dark down there so bring lamps Lighthouses, shipwrecks, desert ruins and pyramids (there’s something under the pyramids) Water that flows, waves that go crazy in storms, coral reefs and kelp forests Weather that does its own thing: rain, snow that piles up and melts, thunderstorms with real lightning, mist over the water at sunrise Crabs, turtles, fish, jellyfish that glow at night, birds, butterflies and fireflies. You can punch them, they will run Every block has its own sounds and every biome has its own ambience Break and place blocks, 25 lamp colours, no height limit, save as many worlds as you want Low / Medium / High / Ultra presets so it runs on more than just my PC Controls WASD + mouse, space to jump, F5 walk/fly, hold left click to break, middle click to place, F4 hotbar, ESC settings, F3 debug stuff Tips Hit New World on the title screen and type a seed or roll one. Save from the ESC menu if you want to keep a world If Ultra is laggy, turn down detail dist in the settings first, it’s the biggest cost by far Big thanks to everyone on opengameart.org whose textures and sounds are in here, they’re all credited in the readme....
|
1793148611.77453
|
1793235011.77453
|
|
67393
|
Fpv Rc Bird project by @vihan_d26 | Stardance
|
vihan_d26
|
0
|
17.21
|
0
|
[]
|
[{"post_id": 78300, "ts": "202 [{"post_id": 78300, "ts": "2026-10-10T10:57:16Z", "hours": 3.8208, "text": "First Failure. trying to assemble my mechanism in cad but for some reason its glitching and not fitting as intended. Some parts assembled in reverse and also shafts of wrong size."}, {"post_id": 77628, "ts": "2026-10-07T17:56:14Z", "hours": 4.9272, "text": "Main structure of the wing designed in freecad assembly and connecter shafts left. now need to test whether proportions are accurate and will they work as intended."}, {"post_id": 77054, "ts": "2026-10-05T14:32:45Z", "hours": 5.1161, "text": "Testing the opening and closing of my wing mechanism with legos"}, {"post_id": 76208, "ts": "2026-10-02T17:48:28Z", "hours": 3.3506, "text": "Guys i know this is stupid idea but still a idea. I am currently making Fpv rc bat inspired avian as it was my dream to always create something ambitious. Anyways the sketches arent great for other ppl to understand as i didnt keep it in my mind while making the rough sketches but this project is taking a hell lot of research just start. I appreciate u giving a look at it"}]...
|
Title: Fpv Rc Bird project by @vihan_d26 | Stardan Title: Fpv Rc Bird project by @vihan_d26 | Stardance
Devlogs:
Guys i know this is stupid idea but still a idea. I am currently making Fpv rc bat inspired avian as it was my dream to always create something ambitious. Anyways the sketches arent great for other ppl to understand as i didnt keep it in my mind while making the rough sketches but this project is taking a hell lot of research just start. I appreciate u giving a look at it
Testing the opening and closing of my wing mechanism with legos
Main structure of the wing designed in freecad assembly and connecter shafts left. now need to test whether proportions are accurate and will they work as intended.
First Failure. trying to assemble my mechanism in cad but for some reason its glitching and not fitting as intended. Some parts assembled in reverse and also shafts of wrong size....
|
1793109182.417321
|
1793713982.417321
|
|
67128
|
StudyFlow by @geeky | Stardance
|
geeky
|
1
|
23.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-02T15:37:08Z", "hours": 19.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "StudyFlow, a task organizer for students, built with plain HTML, CSS and JavaScript (no frameworks, no backend) The problem: students notice deadlines too late, so the app makes urgency visible.", "repo": "https://github.com/filippoplesca3-wq/StudyFlow", "demo": "https://filippoplesca3-wq.github.io/StudyFlow/"}]...
|
[{"post_id": 78301, "ts": "202 [{"post_id": 78301, "ts": "2026-10-10T11:04:05Z", "hours": 3.5744, "text": "Just finished setting up the github repo!!!"}, {"post_id": 78128, "ts": "2026-10-09T17:20:51Z", "hours": 0.4286, "text": "just updated the style i think it looks way cooler now. im finishing js aand it wil be ready!!!"}, {"post_id": 76161, "ts": "2026-10-02T15:27:46Z", "hours": 19.2456, "text": "A simple web app that helps students organize homework by subject, priority and due date. Built with plain HTML, CSS and JavaScript — no frameworks, no backend."}]...
|
Title: StudyFlow by @geeky | Stardance
Devlogs:
A Title: StudyFlow by @geeky | Stardance
Devlogs:
A simple web app that helps students organize homework by subject, priority and due date. Built with plain HTML, CSS and JavaScript — no frameworks, no backend.
just updated the style i think it looks way cooler now. im finishing js aand it wil be ready!!!
Just finished setting up the github repo!!!
Ships:
StudyFlow, a task organizer for students, built with plain HTML, CSS and JavaScript (no frameworks, no backend) The problem: students notice deadlines too late, so the app makes urgency visible....
|
1792817382.4388914
|
1793681382.4388914
|
|
67072
|
Manim explain videos by @TyrannoJ | Stardance
|
TyrannoJ
|
0
|
2.89
|
0
|
[]
|
[{"post_id": 78302, "ts": "202 [{"post_id": 78302, "ts": "2026-10-10T11:05:37Z", "hours": 2.8883, "text": "Devlog 1 Hi, I made this project for cool manim videos I am doing for school, I’ll be putting them on a website so you can look at them What I did so far A video about a mesopotamian stone tablet for a presentation A video about electric potential which I migrated here from another project If you look at it most of the inscriptions are in German, but I think you’ll still be able to understand it Thanks for reaading, have a nice one"}]...
|
Title: Manim explain videos by @TyrannoJ | Stardan Title: Manim explain videos by @TyrannoJ | Stardance
Devlogs:
Devlog 1 Hi, I made this project for cool manim videos I am doing for school, I’ll be putting them on a website so you can look at them What I did so far A video about a mesopotamian stone tablet for a presentation A video about electric potential which I migrated here from another project If you look at it most of the inscriptions are in German, but I think you’ll still be able to understand it Thanks for reaading, have a nice one...
|
1793105635.3854275
|
1793710435.3854275
|
|
68464
|
in search of the one! by @cosmic79conqueror | Star in search of the one! by @cosmic79conqueror | Stardance...
|
cosmic79conqueror
|
1
|
12.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T11:46:41Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this is **ISOTO: ** In Search Of The One The game runs completely using gmail and google sheets (apps script is a part of google sheets). It follows you as Nephis . Due to too much time it was taking, i could only make the one for female character (❁´◡`❁) do forgive me. I’ll be still working on this project after shipping it. Currently only Act 1 has been completed. I have planned for it to have 4 acts. So consider this a part 1 on the project….. what was hard? first question i had after looking at the event was what kind of magic mod do you use inside these things to make an entire game inside of google sheets and gmail. So i found out YOU CAN ACTUALLY RUN JAVASCRIPT INSIDE OF GOOGLE SHEETS. That was at the same time hilarious and awesome. The first phase of this project was set to researching dating sims….. “(Ahem- i did not play and binge 2 dating sims straight up one as a girl and one as a boy)” then i decided to put my supreme maths skills to use by creating a formula for love: “a love formula” (it has a nice ring to it). i then needed characters and different personas so i created a form and sent it to some of my friends. i got 5 responses and decided to make 5 characters. Then came lore writing: the hardest part……… i know my lore isnt all that niche and unique and my writing is quite bad (i’ve been bad at it at school too thats how i lose most of my marks in the english paper) but yeah JUST KNOW THAT I TRIED MY BEST !!!!!!!!! how to play: url: https://mail.google.com/mail/?view=cm&fs=1& [email protected] &body=code%3Aisoto This will redirect you to gmail to send a gmail that will begin the game…… One important thig to note is that you should have only 1 google acocunt logged in. It is a bug from google’s side……… Enjoy!!!!!!!!!!!!! I had a great time making this…. It was tbh kind of exciting…. and most of all i can now flex i made a damned dating sim inside gmail hahahahahahah!!!!!!!!!! (nvm the villain laugh) thanks to @cskartikey for this event!!! :)", "repo": "https://github.com/Abhrajit-Gogoi/search-of-the-one", "demo": "https://mail.google.com/mail/?view=cm&fs=1&to=inthesearch0f0ne@gmail.com&body=code%3Aisoto"}]...
|
[{"post_id": 78303, "ts": "202 [{"post_id": 78303, "ts": "2026-10-10T11:22:05Z", "hours": 2.9667, "text": "Done !!!!!!!!! wrote up the entire code for act 1 and the different choices…. i also added a mail trigger where it scans the mail every 5 mins to figure out if anyone has started the game"}, {"post_id": 78083, "ts": "2026-10-09T14:52:07Z", "hours": 2.6806, "text": "made the lore!!!! the actual lore for the first act is done now its going to be a headache to implement these game mechanisms"}, {"post_id": 77892, "ts": "2026-10-08T17:54:11Z", "hours": 3.0, "text": "phew added the first cutscene finally!!!!! added the first scene prelouge after so much time and effort!! and i still have to write various plots and endings 😭😭😭😭😭😭😭😭"}, {"post_id": 77829, "ts": "2026-10-08T13:10:52Z", "hours": 1.65, "text": "Created the basic outline plot I sat down, did my research and plotted the basic layout of the game and the various arcs of it. it is going to be quite short mostly a gave completed under 4 hours…….. hope it turns out well"}, {"post_id": 77630, "ts": "2026-10-07T18:00:03Z", "hours": 0.8333, "text": "created a google form link: https://forms.gle/c8yHR8vJa52b6gAdA only 8 questions I created a google form (completely anonymous one) to gather data on how do people actually feel about some topics that weigh heavily on my heart when i am encountered with them. i plan on creating a story that actually touches you somewhere so to create the storyline i decided to gather data on it. please fill it it would help a lot to the project"}, {"post_id": 77612, "ts": "2026-10-07T16:59:47Z", "hours": 0.6336, "text": "i Don’t know where to start. I started off not knowing anything i spent some time brainstorming with gemini trying to figure out what exactly it is i will be doing and possible pahways…. I got the option of creating a gmail add on or mailto threads….. I decided with mailto as it seems kind of mysterious and vintage ….. “Love story over gmail”"}]...
|
Title: in search of the one! by @cosmic79conqueror Title: in search of the one! by @cosmic79conqueror | Stardance
Devlogs:
i Don’t know where to start. I started off not knowing anything i spent some time brainstorming with gemini trying to figure out what exactly it is i will be doing and possible pahways…. I got the option of creating a gmail add on or mailto threads….. I decided with mailto as it seems kind of mysterious and vintage ….. “Love story over gmail”
created a google form link: https://forms.gle/c8yHR8vJa52b6gAdA only 8 questions I created a google form (completely anonymous one) to gather data on how do people actually feel about some topics that weigh heavily on my heart when i am encountered with them. i plan on creating a story that actually touches you somewhere so to create the storyline i decided to gather data on it. please fill it it would help a lot to the project
Created the basic outline plot I sat down, did my research and plotted the basic layout of the game and the various arcs of it. it is going to be quite short mostly a gave completed under 4 hours…….. hope it turns out well
phew added the first cutscene finally!!!!! added the first scene prelouge after so much time and effort!! and i still have to write various plots and endings 😭😭😭😭😭😭😭😭
made the lore!!!! the actual lore for the first act is done now its going to be a headache to implement these game mechanisms
Done !!!!!!!!! wrote up the entire code for act 1 and the different choices…. i also added a mail trigger where it scans the mail every 5 mins to figure out if anyone has started the game
Ships:
this is **ISOTO: ** In Search Of The One The game runs completely using gmail and google sheets (apps script is a part of google sheets). It follows you as Nephis . Due to too much time it was taking, i could only make the one for female character (❁´◡`❁) do forgive me. I’ll be still working on this project after shipping it. Currently only Act 1 has been completed. I have planned for it to have 4 acts. So consider this a part 1 on the project….. what was hard? first question i had after looking at the event was what kind of magic mod do you use inside these things to make an entire game inside of google sheets and gmail. So i found out YOU CAN ACTUALLY RUN JAVASCRIPT INSIDE OF GOOGLE SHEETS. That was at the same time hilarious and awesome. The first phase of this project was set to researching dating sims….. “(Ahem- i did not play and binge 2 dating sims straight up one as a girl and one as a boy)” then i decided to put my supreme maths skills to use by creating a formula for love: “a love formula” (it has a nice ring to it). i then needed characters and different personas so i created a form and sent it to some of my friends. i got 5 responses and decided to make 5 characters. Then came lore writing: the hardest part……… i know my lore isnt all that niche and unique and my writing is quite bad (i’ve been bad at it at school too thats how i lose most of my marks in the english paper) but yeah JUST KNOW THAT I TRIED MY BEST !!!!!!!!! how to play: url: https://mail.google.com/mail/?view=cm&fs=1& [email protected] &body=code%3Aisoto This will redirect you to gmail to send a gmail that will begin the game…… One important thig to note is that you should have only 1 google acocunt logged in. It is a bug from google’s side……… Enjoy!!!!!!!!!!!!! I had a great time making this…. It was tbh kind of exciting…. and most of all i can now flex i made a damned dating sim inside gmail hahahahahahah!!!!!!!!!! (nvm the villain laugh) thanks to @cskartikey for this event!!! :)...
|
1793062320.7271316
|
1793148720.7271316
|
|
68968
|
LINKSTATE by @Duskled | Stardance
|
Duskled
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T12:02:36Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I shipped Linkstate Browser, which lets you generate links for websites, open them offline and download their source files. Normally you have to host websites or send multiple files, but Linkstate packs everything into one link or .onestate file, making it much faster to share projects. The hardest part was making everything work together, and I’m proud of building the whole system. Download it from https://linkstate.xyz or https://github.com/Duskled/LinkState---Browser . Open Linkstate Browser, add your website files to generate a link or .onestate file, then share it with anyone. They can open it in the browser and download the source files too. Currently, only HTML, CSS and JS files are supported, so please test it with those file types only.", "repo": "https://github.com/Duskled/LinkState---Browser", "demo": "https://linkstate.xyz/"}]...
|
[{"post_id": 78305, "ts": "202 [{"post_id": 78305, "ts": "2026-10-10T11:31:42Z", "hours": 8.6369, "text": "Normally sharing a website means hosting it or sending multiple files. Linkstate packs HTML, CSS and JS into one link or .onestate file, and Linkstate Browser lets you open these projects offline and extract their source files."}]...
|
Title: LINKSTATE by @Duskled | Stardance
Devlogs: Title: LINKSTATE by @Duskled | Stardance
Devlogs:
Normally sharing a website means hosting it or sending multiple files. Linkstate packs HTML, CSS and JS into one link or .onestate file, and Linkstate Browser lets you open these projects offline and extract their source files.
Ships:
I shipped Linkstate Browser, which lets you generate links for websites, open them offline and download their source files. Normally you have to host websites or send multiple files, but Linkstate packs everything into one link or .onestate file, making it much faster to share projects. The hardest part was making everything work together, and I’m proud of building the whole system. Download it from https://linkstate.xyz or https://github.com/Duskled/LinkState---Browser . Open Linkstate Browser, add your website files to generate a link or .onestate file, then share it with anyone. They can open it in the browser and download the source files too. Currently, only HTML, CSS and JS files are supported, so please test it with those file types only....
|
1793062372.408334
|
1793148772.408334
|
|
50594
|
bloobalistick test by @sofiia | Stardance
|
sofiia
|
0
|
4.84
|
0
|
[]
|
[{"post_id": 78306, "ts": "202 [{"post_id": 78306, "ts": "2026-10-10T11:40:26Z", "hours": 1.6919, "text": "I FINISHED IT! It seems like a really easy project and didn’t take that much time but I could only commit 20 minutes a day so it’s a big improvement!"}, {"post_id": 74996, "ts": "2026-09-28T20:09:44Z", "hours": 1.0631, "text": "Added a background and an enemy"}, {"post_id": 74190, "ts": "2026-09-26T21:42:03Z", "hours": 2.0875, "text": "Added coins and a killzone. At first placed them wrong so coins started moving like a platform"}]...
|
Title: bloobalistick test by @sofiia | Stardance
Title: bloobalistick test by @sofiia | Stardance
Devlogs:
Added coins and a killzone. At first placed them wrong so coins started moving like a platform
Added a background and an enemy
I FINISHED IT! It seems like a really easy project and didn’t take that much time but I could only commit 20 minutes a day so it’s a big improvement!...
|
1792634049.4362807
|
1793238849.4362807
|
|
65944
|
xX_Obsolete_Sky_Lab_Xx by @Asta_does_stuff | Stard xX_Obsolete_Sky_Lab_Xx by @Asta_does_stuff | Stardance...
|
Asta_does_stuff
|
1
|
8.5
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T03:48:12Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Its the starting point of a big software project which showcase NASA’s old instrument or the one that is still running This devlog I just add essential stuff like funcitons! (open/close, minimize, footer, header) Currently it only have 2 apps (calculator and welcome page) Feel free to suggest other related app! I’m planning to give users the ability to open NASA’s instrument 3D model, their history, missions and other data", "repo": "https://github.com/aryasatyaardy-cell/xX_Obsolete_Sky_Lab_Xx", "demo": "https://obsolete-skylab.netlify.app/"}]...
|
[{"post_id": 78310, "ts": "202 [{"post_id": 78310, "ts": "2026-10-10T11:51:30Z", "hours": 0.4361, "text": "Fixing buggy app"}, {"post_id": 76351, "ts": "2026-10-03T08:44:47Z", "hours": 1.6631, "text": "Changed almost everything So the old one is just hide and set a style of a div to “open” and “close” it, this one actually open it By opening it, js copy and delete it, and js reopen it when a button pressed"}, {"post_id": 76314, "ts": "2026-10-03T05:12:43Z", "hours": 2.3989, "text": "Added and fixed an app Added credits and filling the “about this site”"}, {"post_id": 74274, "ts": "2026-09-27T03:33:57Z", "hours": 1.2556, "text": "Finished WebOS 1 Added a working calculator app (cba to code it so I use Iframe) Added a footer to preview minimized tab"}, {"post_id": 74224, "ts": "2026-09-26T23:35:34Z", "hours": 0.7764, "text": "What I’ve added Welcome loading screen in 8 different langguages (if I’m not mistaken) A tab that is draggable and can be closed and opened"}, {"post_id": 74021, "ts": "2026-09-26T15:24:57Z", "hours": 0.6806, "text": "added window"}, {"post_id": 73997, "ts": "2026-09-26T14:28:12Z", "hours": 0.3311, "text": "Added a cool transition when pressing space"}, {"post_id": 73921, "ts": "2026-09-26T10:15:29Z", "hours": 0.5672, "text": "Made the header lol"}]...
|
Title: xX_Obsolete_Sky_Lab_Xx by @Asta_does_stuff Title: xX_Obsolete_Sky_Lab_Xx by @Asta_does_stuff | Stardance
Devlogs:
Made the header lol
Added a cool transition when pressing space
added window
What I’ve added Welcome loading screen in 8 different langguages (if I’m not mistaken) A tab that is draggable and can be closed and opened
Finished WebOS 1 Added a working calculator app (cba to code it so I use Iframe) Added a footer to preview minimized tab
Added and fixed an app Added credits and filling the “about this site”
Changed almost everything So the old one is just hide and set a style of a div to “open” and “close” it, this one actually open it By opening it, js copy and delete it, and js reopen it when a button pressed
Fixing buggy app
Ships:
Its the starting point of a big software project which showcase NASA’s old instrument or the one that is still running This devlog I just add essential stuff like funcitons! (open/close, minimize, footer, header) Currently it only have 2 apps (calculator and welcome page) Feel free to suggest other related app! I’m planning to give users the ability to open NASA’s instrument 3D model, their history, missions and other data...
|
1793062148.9886396
|
1793148548.9886396
|
|
68970
|
MP3 Player by @Ishu | Stardance
|
Ishu
|
0
|
0.92
|
0
|
[]
|
[{"post_id": 78312, "ts": "202 [{"post_id": 78312, "ts": "2026-10-10T12:03:07Z", "hours": 0.9214, "text": "Sorted out all the hardware and connections!! Next step is to add an sdcard, write the code and debug :D"}]...
|
Title: MP3 Player by @Ishu | Stardance
Devlogs:
S Title: MP3 Player by @Ishu | Stardance
Devlogs:
Sorted out all the hardware and connections!! Next step is to add an sdcard, write the code and debug :D...
|
1793127273.349645
|
1793732073.349645
|