|
26886
|
mast by @toqtu | Stardance
|
toqtu
|
1
|
32.0
|
465
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T18:27:27Z", "hours": 32.0, "multiplier": 14.7, "payout": 465, "blessing": "neutral", "text": "I built a parser for mathematical expressions that turns math input into an abstract syntax tree. From there, you can do things like simplifying or differentiating the expression. Learning about parsing methods was genuinely interesting — once I understood the theory behind lexing and parsing, implementation was fairly straightforward. After getting the basic parsing working, I wanted to build a simple web interface for it. Looking back, the interface ended up taking a lot more time than I expected. During this project I learned a lot about compiler design and language theory as well as web development and application deployment. All in all I am quite happy with the result.", "repo": "https://github.com/fritl/mast", "demo": "https://mast.toqtou.me"}]...
|
[{"post_id": 30710, "ts": "202 [{"post_id": 30710, "ts": "2026-07-18T14:50:01Z", "hours": 9.0289, "text": "Finish Website I added the following to the website Button for evaluation an expression Reload ast and LaTeX only if there is no input for 500ms Tutorial on the Home page to show all features Info page for additional information A footer with info about the build (commit, branch, time) Improve colors especially for light mode I also noticed that my project can’t be cloned on windows because windows doesn’t allow * in filenames. I updated the filenames but old commits still can’t be checked out easily."}, {"post_id": 29568, "ts": "2026-07-16T16:29:13Z", "hours": 10.2408, "text": "New Website Starting Over I wasn’t happy with the website Claude generated for me, so instead of iterating on it further, I decided to build it myself from scratch. Why SolidJS I’m not a web dev. I’ve written JavaScript before, but never really worked with a framework on a personal project. For this one I picked SolidJS, for two reasons: I didn’t want to use React, and I’d heard Solid does similar things but better. Building Everything From Scratch One tradeoff with SolidJS became obvious fast: there’s no real ecosystem of UI libraries to lean on. Every component and every line of CSS in this project, I wrote myself. Dev Setup To make local development easier, I added a Dockerfile and a docker-compose setup. What’s Left The site isn’t finished yet. The main thing still missing is buttons for a few actions."}, {"post_id": 22913, "ts": "2026-07-05T15:34:35Z", "hours": 3.0433, "text": "Web demo I wrote a small API for my project using FastAPI, then handed the code to Claude. After a few iterations, I had a fairly good looking web interface for interacting with my project. I also experimented with making all tree nodes circular. It turns out circles grow very quickly as numbers get bigger, so keeping every circle the same size caused the text to overflow. Switching to ellipses solved this. I also spent some time reducing the number of parentheses in the output to make it more readable."}, {"post_id": 22050, "ts": "2026-07-04T09:28:57Z", "hours": 2.2544, "text": "Differentiation My math program can now symbolically compute the derivative of an expression. Challenges One tricky case was finding the derivative of x^x . Since x^x = e^(x*ln(x)) , rewriting it in that form let the existing exponential and product rules handle it correctly. Restrictions Differentiation works well, but outputs aren’t always in the simplest form. Differentiating (x^2)/2 , for instance, currently gives 0.5*2*x instead of the simplified x . Simplifying this is a lot harder than it looks at first because it is really hard to determine whether an action results in a simpler form or not. Next up I’ll pause the AST experiments here for now. There’s a lot more that could be done, but I want to make it demoable. Next step: a small web UI so people can try it out directly."}, {"post_id": 21399, "ts": "2026-07-03T10:06:38Z", "hours": 1.8942, "text": "Functions and Exponents I’ve just added support for exponents and standard mathematical functions, including sin , cos , tan , ln , log , and sqrt . The implementation was fairly straightforward. The lexer simply tokenizes the ^ character into a Power token. Extending the lexer from there was just a matter of adding the token rule and implementing the corresponding evaluation logic. The Precedence Gotcha I did run into one classic mathematical quirk with my parser rules. Currently, -x^2 is parsed as (-x)^2 because the unary minus operator mistakenly has higher precedence than the exponent. Standard mathematical convention dictates it should be evaluated as -(x^2) . While I plan to fix this in the parser proper, the current workaround is just to use explicit parentheses when writing negative exponents. Next Up: Symbolic Differentiation As a final step for this milestone, I want to implement symbolic differentiation utilizing the chain rule. This will allow the engine to take simple expressions like x^2 or sin(2x) and automatically differentiate them into 2*x and 2*cos(2x) respectively."}, {"post_id": 20247, "ts": "2026-07-01T19:53:28Z", "hours": 1.1408, "text": "Simplification I added some trivial simplification rules to my math parser. It checks for simple rules like x+0 -> x or x+x -> 2x . Of course, you could go way deeper on simplification. My current implementation can’t simplify 2*x + 3*x -> 5*x , since my rules only match syntactically identical terms, not terms that differ by a coefficient. To handle cases like this, you’d need some sort of term-collection method that groups like terms together before combining them. You could also expand expressions first and then simplify, which would let the parser recognize things like (x+1)^2 - (x^2+2x+1) -> 0 . My simple rules won’t bring expressions into their absolute simplest form, and they certainly don’t produce a standardized form that lets you check two expressions for equality. But they do make the program’s output noticeably more readable."}, {"post_id": 19462, "ts": "2026-06-30T19:52:16Z", "hours": 0.9978, "text": "Input evaluation You can now evaluate inputs, e.g. (3+2)*6 outputs 30 . This works by recursively evaluating the AST nodes — operator precedence comes for free from the tree structure. All variables found in the input are collected, and the user is prompted to assign a value to each one. This somewhat defeats the purpose of variables for now, but it’s a stepping stone — variables become essential once symbolic differentiation or a proper UI come into play."}, {"post_id": 19155, "ts": "2026-06-30T12:21:49Z", "hours": 3.2844, "text": "Lexing + Parising For my math parser I implemented the lexer and the parser. The lexer splits the mathematical input into tokens. The recursive descent parser parses those tokens into an abstract syntax tree. For me the most interesting part was learning about different parsing techniques which also tought me a lot about compilers. Next up I will implement the evaluation of expressions to calculate inputs like 2 + 3 * 5. Due to the design of the tree it should already respect pemdas."}]...
|
Title: mast by @toqtu | Stardance
Devlogs:
Lexing Title: mast by @toqtu | Stardance
Devlogs:
Lexing + Parising For my math parser I implemented the lexer and the parser. The lexer splits the mathematical input into tokens. The recursive descent parser parses those tokens into an abstract syntax tree. For me the most interesting part was learning about different parsing techniques which also tought me a lot about compilers. Next up I will implement the evaluation of expressions to calculate inputs like 2 + 3 * 5. Due to the design of the tree it should already respect pemdas.
Input evaluation You can now evaluate inputs, e.g. (3+2)*6 outputs 30 . This works by recursively evaluating the AST nodes — operator precedence comes for free from the tree structure. All variables found in the input are collected, and the user is prompted to assign a value to each one. This somewhat defeats the purpose of variables for now, but it’s a stepping stone — variables become essential once symbolic differentiation or a proper UI come into play.
Simplification I added some trivial simplification rules to my math parser. It checks for simple rules like x+0 -> x or x+x -> 2x . Of course, you could go way deeper on simplification. My current implementation can’t simplify 2*x + 3*x -> 5*x , since my rules only match syntactically identical terms, not terms that differ by a coefficient. To handle cases like this, you’d need some sort of term-collection method that groups like terms together before combining them. You could also expand expressions first and then simplify, which would let the parser recognize things like (x+1)^2 - (x^2+2x+1) -> 0 . My simple rules won’t bring expressions into their absolute simplest form, and they certainly don’t produce a standardized form that lets you check two expressions for equality. But they do make the program’s output noticeably more readable.
Functions and Exponents I’ve just added support for exponents and standard mathematical functions, including sin , cos , tan , ln , log , and sqrt . The implementation was fairly straightforward. The lexer simply tokenizes the ^ character into a Power token. Extending the lexer from there was just a matter of adding the token rule and implementing the corresponding evaluation logic. The Precedence Gotcha I did run into one classic mathematical quirk with my parser rules. Currently, -x^2 is parsed as (-x)^2 because the unary minus operator mistakenly has higher precedence than the exponent. Standard mathematical convention dictates it should be evaluated as -(x^2) . While I plan to fix this in the parser proper, the current workaround is just to use explicit parentheses when writing negative exponents. Next Up: Symbolic Differentiation As a final step for this milestone, I want to implement symbolic differentiation utilizing the chain rule. This will allow the engine to take simple expressions like x^2 or sin(2x) and automatically differentiate them into 2*x and 2*cos(2x) respectively.
Differentiation My math program can now symbolically compute the derivative of an expression. Challenges One tricky case was finding the derivative of x^x . Since x^x = e^(x*ln(x)) , rewriting it in that form let the existing exponential and product rules handle it correctly. Restrictions Differentiation works well, but outputs aren’t always in the simplest form. Differentiating (x^2)/2 , for instance, currently gives 0.5*2*x instead of the simplified x . Simplifying this is a lot harder than it looks at first because it is really hard to determine whether an action results in a simpler form or not. Next up I’ll pause the AST experiments here for now. There’s a lot more that could be done, but I want to make it demoable. Next step: a small web UI so people can try it out directly.
Web demo I wrote a small API for my project using FastAPI, then handed the code to Claude. After a few iterations, I had a fairly good looking web interface for interacting with my project. I also experimented with making all tree nodes circular. It turns out circles grow very quickly as numbers get bigger, so keeping every circle the same size caused the text to overflow. Switching to ellipses solved this. I also spent some time reducing the number of parentheses in the output to make it more readable.
New Website Starting Over I wasn’t happy with the website Claude generated for me, so instead of iterating on it further, I decided to build it myself from scratch. Why SolidJS I’m not a web dev. I’ve written JavaScript before, but never really worked with a framework on a personal project. For this one I picked SolidJS, for two reasons: I didn’t want to use React, and I’d heard Solid does similar things but better. Building Everything From Scratch One tradeoff with SolidJS became obvious fast: there’s no real ecosystem of UI libraries to lean on. Every component and every line of CSS in this project, I wrote myself. Dev Setup To make local development easier, I added a Dockerfile and a docker-compose setup. What’s Left The site isn’t finished yet. The main thing still missing is buttons for a few actions.
Finish Website I added the following to the website Button for evaluation an expression Reload ast and LaTeX only if there is no input for 500ms Tutorial on the Home page to show all features Info page for additional information A footer with info about the build (commit, branch, time) Improve colors especially for light mode I also noticed that my project can’t be cloned on windows because windows doesn’t allow * in filenames. I updated the filenames but old commits still can’t be checked out easily.
Ships:
I built a parser for mathematical expressions that turns math input into an abstract syntax tree. From there, you can do things like simplifying or differentiating the expression. Learning about parsing methods was genuinely interesting — once I understood the theory behind lexing and parsing, implementation was fairly straightforward. After getting the basic parsing working, I wanted to build a simple web interface for it. Looking back, the interface ended up taking a lot more time than I expected. During this project I learned a lot about compiler design and language theory as well as web development and application deployment. All in all I am quite happy with the result....
|
1793573629.9558015
|
1793660029.9558015
|
|
3309
|
master_calisthenics by @Mithil_Bhansali | Stardanc master_calisthenics by @Mithil_Bhansali | Stardance...
|
Mithil_Bhansali
|
0
|
4.99
|
0
|
[]
|
[{"post_id": 81697, "ts": "202 [{"post_id": 81697, "ts": "2026-10-22T03:58:42Z", "hours": 2.1292, "text": "finished"}, {"post_id": 5719, "ts": "2026-06-09T16:50:06Z", "hours": 2.3528, "text": "added a login page and connected backend datebase"}, {"post_id": 5050, "ts": "2026-06-08T18:28:17Z", "hours": 0.5064, "text": "A structured calisthenics learning platform that organizes bodyweight skills into clear progression paths from beginner to advanced movements. It breaks down each skill in order of difficulty and shows what must be learned before progressing to more complex exercises. Every skill includes detailed tutorials with step-by-step instructions, prerequisites, common mistakes, and training guidance to support proper development. The platform also includes training guides, beginner roadmaps, terminology explanations, and structured workout information to help users understand how to train effectively and consistently. The focus is on making calisthenics progression logical, accessible, and easy to follow by turning all skills into a connected learning system."}]...
|
Title: master_calisthenics by @Mithil_Bhansali | S Title: master_calisthenics by @Mithil_Bhansali | Stardance
Devlogs:
A structured calisthenics learning platform that organizes bodyweight skills into clear progression paths from beginner to advanced movements. It breaks down each skill in order of difficulty and shows what must be learned before progressing to more complex exercises. Every skill includes detailed tutorials with step-by-step instructions, prerequisites, common mistakes, and training guidance to support proper development. The platform also includes training guides, beginner roadmaps, terminology explanations, and structured workout information to help users understand how to train effectively and consistently. The focus is on making calisthenics progression logical, accessible, and easy to follow by turning all skills into a connected learning system.
added a login page and connected backend datebase
finished...
|
1793166521.5417156
|
1793771321.5417156
|
|
5895
|
math animator by @sdlighe | Stardance
|
sdlighe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: math animator by @sdlighe | Stardance
|
1793245816.3609276
|
1793850616.3609276
|
|
28621
|
math by @NatyGCLO2345 | Stardance
|
NatyGCLO2345
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: math by @NatyGCLO2345 | Stardance
|
1793436763.7853193
|
1794041563.7853193
|
|
21563
|
math mini golf by @leclasan | Stardance
|
leclasan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: math mini golf by @leclasan | Stardance
|
1793472594.0604832
|
1794077394.0604832
|
|
44530
|
math.org by @pandacoder2013 | Stardance
|
pandacoder2013
|
2
|
12.0
|
146
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T12:37:06Z", "hours": 1.0, "multiplier": 9.57, "payout": 0, "blessing": "neutral", "text": "I made a website where you can enter a concept you are confused or unsure about and it generates a simulation explaining that topic in greater depth. You can say what sources the AI should use and what specific aspect of the topic do you want the AI to elaborate on. It was harder then I expected to get the Gemini generateContent() API to start working as expected, especially when it began to hallucinate docker manuals (don’t ask). I am especially proud of learning how to create Elements and append that to divs using DOM Javascript. I also used Vercel Environment Variables so that you don’t have to bring your own API key.", "repo": "https://github.com/dsochamp/math.org", "demo": "https://math-org.vercel.app"}, {"ship_num": 2, "ts": "2026-08-12T16:54:19Z", "hours": 11.0, "multiplier": 13.66, "payout": 146, "blessing": "neutral", "text": "I made a website where you can enter a concept you are confused or unsure about and an API key and it generates a simulation explaining that topic in greater depth. You can say what sources the AI should use and what specific aspect of the topic do you want the AI to elaborate on. It was harder then I expected to get the Gemini generateContent() API to start working as expected, especially when it began to hallucinate docker manuals (don’t ask). I am especially proud of learning how to create Elements and append that to divs using DOM Javascript. In the future I will use the Gemini 3.1 Pro model instead as that seems to be better at coding simulations and try to include my own API key in a way that does not reveal it so you don’t have to obtain an API key to actually use the project.", "repo": "https://github.com/dsochamp/math.org", "demo": "https://math-org.vercel.app"}]...
|
[{"post_id": 83691, "ts": "202 [{"post_id": 83691, "ts": "2026-10-28T12:33:52Z", "hours": 0.4214, "text": "Incorporated my Vercel API into my main website!! Also fixed a few bugs related to the API including changing the API and fixing the environment variable."}, {"post_id": 66626, "ts": "2026-09-12T14:02:52Z", "hours": 0.2783, "text": "I LEARNED VERCEL ENVIRONMENT VARIABLES!!!! I finally removed the need to bring your own API key to math.org. Instead, I used a Vercel environment variable so that you just have to ask! Now you can easily use the website. btw I will ship very soon…"}, {"post_id": 45877, "ts": "2026-08-12T16:45:06Z", "hours": 1.3094, "text": "I tried testing out my Gemini 3.6 Flash API using fetch() by the generateContent() API. by giving it a sample prompt to code an HTML Simulation on Electron Orbital. I have been testing for a while and it keeps on hallucinating for some odd reason. Before this I asked it, ‘Hi! How are you?’ and replied with a comprehensive manual on how to setup Docker. It seems like Gemini seems to be glitching for the past week…Incase you wanted to know, here is the full prompt I gave gemini in the screenshot above: code an html simulation on electron orbitals where you can choose which orbital you would like to view and you can view that in 3d"}, {"post_id": 41881, "ts": "2026-08-06T11:33:00Z", "hours": 9.3967, "text": "A change of plans. I originally wanted. math.org to be purely math simulations that were pre-uploaded and coded by me, but then I realised the scale of 20 simulations which I had declared as the ‘minimum’. My new plan is to connect the Gemini 3.6 Flash API key to create simulations personalised to the user on the spot on any topic, creating more simulations with a lot less effort and an increase in efficiency. btw, I am uploading this a bit late. I actually made this change in plan when I hit the 4 hour mark of working on the project, but I realised I completely forgot about my devlog. Hopefully I should start giving updates the moment they happen. Bye!"}]...
|
Title: math.org by @pandacoder2013 | Stardance
De Title: math.org by @pandacoder2013 | Stardance
Devlogs:
A change of plans. I originally wanted. math.org to be purely math simulations that were pre-uploaded and coded by me, but then I realised the scale of 20 simulations which I had declared as the ‘minimum’. My new plan is to connect the Gemini 3.6 Flash API key to create simulations personalised to the user on the spot on any topic, creating more simulations with a lot less effort and an increase in efficiency. btw, I am uploading this a bit late. I actually made this change in plan when I hit the 4 hour mark of working on the project, but I realised I completely forgot about my devlog. Hopefully I should start giving updates the moment they happen. Bye!
I tried testing out my Gemini 3.6 Flash API using fetch() by the generateContent() API. by giving it a sample prompt to code an HTML Simulation on Electron Orbital. I have been testing for a while and it keeps on hallucinating for some odd reason. Before this I asked it, ‘Hi! How are you?’ and replied with a comprehensive manual on how to setup Docker. It seems like Gemini seems to be glitching for the past week…Incase you wanted to know, here is the full prompt I gave gemini in the screenshot above: code an html simulation on electron orbitals where you can choose which orbital you would like to view and you can view that in 3d
I LEARNED VERCEL ENVIRONMENT VARIABLES!!!! I finally removed the need to bring your own API key to math.org. Instead, I used a Vercel environment variable so that you just have to ask! Now you can easily use the website. btw I will ship very soon…
Incorporated my Vercel API into my main website!! Also fixed a few bugs related to the API including changing the API and fixing the environment variable.
Ships:
I made a website where you can enter a concept you are confused or unsure about and an API key and it generates a simulation explaining that topic in greater depth. You can say what sources the AI should use and what specific aspect of the topic do you want the AI to elaborate on. It was harder then I expected to get the Gemini generateContent() API to start working as expected, especially when it began to hallucinate docker manuals (don’t ask). I am especially proud of learning how to create Elements and append that to divs using DOM Javascript. In the future I will use the Gemini 3.1 Pro model instead as that seems to be better at coding simulations and try to include my own API key in a way that does not reveal it so you don’t have to obtain an API key to actually use the project.
I made a website where you can enter a concept you are confused or unsure about and it generates a simulation explaining that topic in greater depth. You can say what sources the AI should use and what specific aspect of the topic do you want the AI to elaborate on. It was harder then I expected to get the Gemini generateContent() API to start working as expected, especially when it began to hallucinate docker manuals (don’t ask). I am especially proud of learning how to create Elements and append that to divs using DOM Javascript. I also used Vercel Environment Variables so that you don’t have to bring your own API key....
|
1793598519.6659627
|
1793684919.6659627
|
|
70476
|
mathman by @furgenramen | Stardance
|
furgenramen
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-24T09:03:55Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own Slackbot that can do some basic functions-related functions (pun intended). I really enjoyed testing it and connecting it to Newton’s API. It was kind of challenging to make the bot function 24/7 at first, but once I understood it, it was very easy. Overall, this was a low-cortisol mission that I really enjoyed making. Hopefully, it will be more powerful in the future. (more calculus??!!)", "repo": "https://github.com/furgenramen04/mathman", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?_gl=1*de0wgy*_gcl_au*NzYyNDExMTM3LjE3OTEwNjYwNzQuLS4tLjE3OTEwNjYwODQuMTIyMzg0MjUyNy4xNzkyODA3MTI2LjE3OTI4MTcwMjM."}]...
|
[{"post_id": 82198, "ts": "202 [{"post_id": 82198, "ts": "2026-10-24T08:07:20Z", "hours": 0.9594, "text": "Ready to ship! After a good hour or so, I’m done making my Slackbot! Mathman has various features (including a catfact feature), specialising in functions. Using Newton’s API, he can calculate derivatives, integrals, zeroes, as well as simplify and factorise functions."}]...
|
Title: mathman by @furgenramen | Stardance
Devlog Title: mathman by @furgenramen | Stardance
Devlogs:
Ready to ship! After a good hour or so, I’m done making my Slackbot! Mathman has various features (including a catfact feature), specialising in functions. Using Newton’s API, he can calculate derivatives, integrals, zeroes, as well as simplify and factorise functions.
Ships:
I made my own Slackbot that can do some basic functions-related functions (pun intended). I really enjoyed testing it and connecting it to Newton’s API. It was kind of challenging to make the bot function 24/7 at first, but once I understood it, it was very easy. Overall, this was a low-cortisol mission that I really enjoyed making. Hopefully, it will be more powerful in the future. (more calculus??!!)...
|
1793584141.9399266
|
1793670541.9399266
|
|
54849
|
mathscript by @redwoodsteve | Stardance
|
redwoodsteve
|
0
|
7.09
|
0
|
[]
|
[{"post_id": 55283, "ts": "202 [{"post_id": 55283, "ts": "2026-08-27T00:37:05Z", "hours": 7.0856, "text": "Lexer is functional!!! I made a functioning lexer that works with a “say statement”, numeric literals, comments, and basic operations, and I can easily expand upon it when needed. I also learned a lot of rust Example syntax: x = 6000 say x * 400 + 3 // 2400003 // maybe implement inequalities? I’m not sure how I would do a “solve for x” kinda thing, but I’ll figure it out Also I might not actually finish this project so dont get too excited lol I’ll add string literals later"}]...
|
Title: mathscript by @redwoodsteve | Stardance
De Title: mathscript by @redwoodsteve | Stardance
Devlogs:
Lexer is functional!!! I made a functioning lexer that works with a “say statement”, numeric literals, comments, and basic operations, and I can easily expand upon it when needed. I also learned a lot of rust Example syntax: x = 6000 say x * 400 + 3 // 2400003 // maybe implement inequalities? I’m not sure how I would do a “solve for x” kinda thing, but I’ll figure it out Also I might not actually finish this project so dont get too excited lol I’ll add string literals later...
|
1793569704.328113
|
1794174504.328113
|
|
17180
|
matrix calculator by @vanya123 | Stardance
|
vanya123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: matrix calculator by @vanya123 | Stardance
|
1793451213.834288
|
1794056013.834288
|
|
3022
|
matthew.heng.org by @Hengtime787 | Stardance
|
Hengtime787
|
1
|
8.38
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T07:32:29Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal website, to display updates on me, my projects, and anything that I find interesting. The custom styling was difficult, especially with weird blur propertiesm as was Javascript at the start, to toggle the custom responsive navigation bar. Overall, I think I created a unique website that is a little weird, just like me.", "repo": "https://github.com/Hengtime787/Astra", "demo": "https://matthew.heng.org"}]...
|
[{"post_id": 72051, "ts": "202 [{"post_id": 72051, "ts": "2026-09-22T02:38:54Z", "hours": 0.3775, "text": "Just updated the super small readme with a bunch of stuff. ps – whoever invented the .md file; thank you so much."}, {"post_id": 71037, "ts": "2026-09-20T07:29:06Z", "hours": 0.6561, "text": "Hi everyone! matthew.heng.org is ready for shipping! It’s my personal website that I post my current project info on. I like tinkering with the styling and layout every now and then, and stardance was a great chance to do a bit more. If it sounds interesting do you, feel free to drop by at https://matthew.heng.org . Thanks for reading!"}, {"post_id": 64059, "ts": "2026-09-08T06:02:51Z", "hours": 1.0256, "text": "Hi! My website is mostly ready for shipping! https://matthew.heng.org (may not be up to date because of filezilla manual transfers). I use it for posting updates of my latest projects, random stuff about me, and just as a platform for testing things out. A few more things to implement before I ship. 1 - a reliable posting system, almost like a blog and these sorts of devlogs. 2- Nav bar spinner to indicate weather the navigation menu is opened or closed, like that found on https://asus-linux.org (I’m not affiliated! Just love their web design). I lost about 39 minutes of coding time because when I came back from vacation, my git repo was out of sync with my local (computer at home one), which I had a few changes on, so I just nuked the local dir, and restarted which is fine, because I did coding on vacation. Then I realised that I had renamed the folder, so in Code -OSS, Hackatime thought that I was working on a different project. Theres a few issues with Hackatime and how a lot of platforms don’t support it, as displayed in my Atlas devlogs. I did some digging too, and this isn’t really Hack Club’s fault. The fact that they made such a comprehensive tracking plugin (albeit on the shoulders of Wakatime), is pretty cool already. For editors like SPCK, the one I used on my phone on vacation just don’t have a way to make the plugin available to it. Totally fine, just maybe something cool to be fixed? Anyways, ramble aside, Thank you for reading this enourmous log written at exactly 23:59 in the morning. And thanks Hack Club! – ps, in the screenshot I have like three panes in code oss. I don’t code like that, that would fry my brain. –"}, {"post_id": 49342, "ts": "2026-08-18T03:30:49Z", "hours": 6.1972, "text": "Been working on a few projects coding off my phone on vacation. Sadly hacktime isn’t supported by spck editor, so my new Atlas project is under the radar, as is my recent website changes. Can still post to github though, so that’s cool. Anyways, website has been updated with better fonts and less jank."}, {"post_id": 631, "ts": "2026-06-02T04:34:59Z", "hours": 0.5153, "text": "My (Slightly Self Centred) Website. Started it a while ago and now I’m actually updating it."}]...
|
Title: matthew.heng.org by @Hengtime787 | Stardanc Title: matthew.heng.org by @Hengtime787 | Stardance
Devlogs:
My (Slightly Self Centred) Website. Started it a while ago and now I’m actually updating it.
Been working on a few projects coding off my phone on vacation. Sadly hacktime isn’t supported by spck editor, so my new Atlas project is under the radar, as is my recent website changes. Can still post to github though, so that’s cool. Anyways, website has been updated with better fonts and less jank.
Hi! My website is mostly ready for shipping! https://matthew.heng.org (may not be up to date because of filezilla manual transfers). I use it for posting updates of my latest projects, random stuff about me, and just as a platform for testing things out. A few more things to implement before I ship. 1 - a reliable posting system, almost like a blog and these sorts of devlogs. 2- Nav bar spinner to indicate weather the navigation menu is opened or closed, like that found on https://asus-linux.org (I’m not affiliated! Just love their web design). I lost about 39 minutes of coding time because when I came back from vacation, my git repo was out of sync with my local (computer at home one), which I had a few changes on, so I just nuked the local dir, and restarted which is fine, because I did coding on vacation. Then I realised that I had renamed the folder, so in Code -OSS, Hackatime thought that I was working on a different project. Theres a few issues with Hackatime and how a lot of platforms don’t support it, as displayed in my Atlas devlogs. I did some digging too, and this isn’t really Hack Club’s fault. The fact that they made such a comprehensive tracking plugin (albeit on the shoulders of Wakatime), is pretty cool already. For editors like SPCK, the one I used on my phone on vacation just don’t have a way to make the plugin available to it. Totally fine, just maybe something cool to be fixed? Anyways, ramble aside, Thank you for reading this enourmous log written at exactly 23:59 in the morning. And thanks Hack Club! – ps, in the screenshot I have like three panes in code oss. I don’t code like that, that would fry my brain. –
Hi everyone! matthew.heng.org is ready for shipping! It’s my personal website that I post my current project info on. I like tinkering with the styling and layout every now and then, and stardance was a great chance to do a bit more. If it sounds interesting do you, feel free to drop by at https://matthew.heng.org . Thanks for reading!
Just updated the super small readme with a bunch of stuff. ps – whoever invented the .md file; thank you so much.
Ships:
I made a personal website, to display updates on me, my projects, and anything that I find interesting. The custom styling was difficult, especially with weird blur propertiesm as was Javascript at the start, to toggle the custom responsive navigation bar. Overall, I think I created a unique website that is a little weird, just like me....
|
1793581138.4525855
|
1793667538.4525855
|
|
61977
|
matthews-personal-site by @mattetsy5 | Stardance
|
mattetsy5
|
0
|
0.51
|
0
|
[]
|
[{"post_id": 67772, "ts": "202 [{"post_id": 67772, "ts": "2026-09-14T00:45:25Z", "hours": 0.5072, "text": "I worked mainly on the home page and adding the main things I like in a website like dark mode and some color accents. Just testing in a browser currently before committing to a domain."}]...
|
Title: matthews-personal-site by @mattetsy5 | Star Title: matthews-personal-site by @mattetsy5 | Stardance
Devlogs:
I worked mainly on the home page and adding the main things I like in a website like dark mode and some color accents. Just testing in a browser currently before committing to a domain....
|
1793044114.6442308
|
1793648914.6442308
|
|
29899
|
matu game engine by @immaturegoat | Stardance
|
immaturegoat
|
1
|
33.0
|
534
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T17:23:48Z", "hours": 33.0, "multiplier": 16.37, "payout": 534, "blessing": "neutral", "text": "IMPORTANT: documentation: https://github.com/immaturegoat/matu/blob/main/docs.md tutorial: https://github.com/immaturegoat/matu/blob/main/tutorial.md This is matu, a web game engine, designed to build and export 2D games. It features a node system with groups, objects, sprites, labels, audio, and scripts, asset uploading, viewport testing, saving and loading, and exporting into a web playable. It was inspired by editors like Unity and Godot, but I wanted to keep some simplicity similar to that of Scratch. It’s not that powerful, but it should be enough to make some simple games. The tutorial and documentation is linked above.", "repo": "https://github.com/immaturegoat/matu", "demo": "https://matueditor.vercel.app"}]...
|
[{"post_id": 43414, "ts": "202 [{"post_id": 43414, "ts": "2026-08-08T17:18:16Z", "hours": 6.2106, "text": "Devlog 10 Can’t believe my last devlog was two weeks ago… Anyway, here’s what I’ve been working on. Exporting and saving It works! Probably… I’m pretty sure it works. At least for my testing. If you guys find any bugs, be sure to tell me. a BUNCH of bug fixes Stop highlighting nodes when reordering Change matuapi rotation funcs from radians to degrees Clicking off node unselects it Favicon After game ends, if clones are still there, stop them from showing up Checkboxes on export menu Remove eval classUpdate documentation Sorry that this devlog is pretty short, for a 5 hour devlog. I’m just kinda tired of writing tbh and I can’t wait to ship this."}, {"post_id": 34226, "ts": "2026-07-24T19:06:26Z", "hours": 1.4836, "text": "Devlog 9 Probably my last devlog before working on saving and exporting T-T What I worked on Stops in scripting I can’t believe I didn’t add this earlier, but you can now end the game using matu.runtime.stop(); Label nodes You can now have text labels in your game! I also added scripting implementation, so you can change what the text says during a run. Fixed reordering Reordering nodes was a bit clunky, so I fixed it (turns out there were some bugs in the CSS and the dragging), but now it should be smoother!"}, {"post_id": 32368, "ts": "2026-07-21T14:32:09Z", "hours": 1.9083, "text": "Devlog 8 This is probably gonna be a shorter devlog, but basically I made scripting a lot easier in my game engine! Each script node now has a button in the top right of the inspector editor. I just reused the asset previews but with a textarea. This means you can have multiple popouts open at a time while scripting. It also gives you a much wider area to code in, as the inspector is kinda cramped. All updates in the popout update with the inspector textarea. The popouts are also resizable! QoL improvements Tab for indent Before, if you typed tab while scripting, it would just move focus to another button instead of indenting. However, now when you press tab, 4 spaces are added. You can select multiple lines to indent multiple lines, and press shift + tab to unindent lines. Auto-close pairs Now when you type a character like ( or [ automatically types its closing pair and places your cursor in between them. If you type the closing pair again, it will move your cursor to the outside. As well as that, deleting an empty pair will delete both characters. Auto-indent on enter Now when you go to another line, it will inherit the indentation of the line above it. :) What’s next? I really thought that with the introduction of scripting popouts, I would be getting close to finishing the project, but over the past few days, I’ve realized that there are still a lot of stuff I want to implement. First, I want to add a Label node, allowing users to display text easily. Next (and I can’t believe I haven’t implemented this yet), I want to add a way for the user to stop the game in the script, instead of clicking the stop button. I want to fix node reordering, as right now it is a bit clunky, and of course, the final thing for me to do is to add exporting, saving, and loading."}, {"post_id": 30915, "ts": "2026-07-18T21:59:18Z", "hours": 3.1242, "text": "Devlog 7 It’s been some time since I have posted a devlog on this project. I got a little sidetracked and spent a few days working with Rust. It’s probably gonna be my next project (flashcard app, I know, how original), but I’ve also spent some time working on scripting! So scripting was actually easier than I thought to implement. I have a const in my runtime.js file called matuAPI and it has every special function as well as what to do when that function is called. I’ll attach a screenshot of a section below. So now, on to what I have added! node lookup cloning spawning input rotation movement dimensions (width + height) changes opacity changes visibility asset changes playing and sotpping audio collision global variables changing bg color and timers! Wow, that was a lot! Unfortunately, as I was writing this devlog, I realized that I forgot to add a function that lets you change which sprite is being displayed in an object as well as changing the audio source asset. How does this always happen to me? Ok, I’ll be back in a bit. I need to add that real quick. Ok, I have returned! I have added them to the code and the documentation (which is just a markdown file), so we also have changing sprites and changing audio assets! Thanks for reading this devlog! Up next, I plan to add a pop out window for scripting (as the current one is too small) and of course, exporting, loading, and saving (I’m scared, save me)"}, {"post_id": 26015, "ts": "2026-07-10T16:21:46Z", "hours": 2.7669, "text": "Devlog 6 This is probably going to be my last devlog before I work on scripting. I’ve put it off for too long, and right now, scripting is pretty limited (it has a start, end, input detection, movement, and console log function). I plan to add a LOT more to scripting, like changing sprites, changing opacity, rotation, cloning, deleting, audio, preview, and more. I also plan to open up the script in a window similar to the preview windows, because coding in the inspector sidebar is a bit constricting. Now, on to what I have been working on! Audio preview I can’t believe I put this off for so long, but it finally works. You can play audio from the preview window. Though, it’s a bit ugly right now so I plan on changing that later. Value tags for opacity and volume Before this, the two sliders were just sliders, and you couldn’t bring it to a specific value. However, there are now inputs on the right side of the sliders, allowing you to see what number the slider is at and allowing you to input your own values. Unique names for nodes I actually created two systems for this. So my idea for the node naming system is that unique names are kept separate across node types. That means that I can have an object called Thing and a group called Thing. My first idea of implementing this was to create a Set() for each node type. So I created group_names = new Set() , object_names = new Set() , sprite_names = new Set() , and so forth for each node type. Then we reuse the renaming function from script.js for the assets, but change it to have a switch statement based on the type. However, this was kind of hard, implementing a switch statement everywhere a rename or deletion or any sort of change happened. I replaced it by simpling using the hierarchy_nodes Map, which contains the names and types of each node. With this, we can just pull the type from the map to make sure that names are kept separate across types. It removes the big switch statements that were everywhere and overall keeps the code much cleaner. Rearranging nodes Previously, you could technically reorder things because I previously added reparenting, allowing you to move nodes from one parent to another, but it doesn’t allow you to rearrange nodes within a parent. Now, you can, and although its a bit clunky, it does work and I think it looks good. Alright, thanks for coming to this TED talk. The next devlog will be about a lot of changes that I will make to scripting."}, {"post_id": 25285, "ts": "2026-07-09T13:56:23Z", "hours": 3.1989, "text": "Devlog 5 I was too lazy to add all the features other than basic functionality to scripting, so I decided to work on some small bugs and features instead. Also, today I learned that you can ATTACH MULTIPLE SCREENSHOTS. This is like a gamechanger lol I can’t believe I didn’t know this. Extra line at the end of the viewport grid For the grid in the center of the screen, the function I used to draw it didn’t close it off on the right side. I can’t believe it took until now to fix it :| Changed hierarchy node symbols I changed the symbols on the left side of each of the nodes from emojis to letters. I used emojis because I didn’t want to find assets (sorry), but recently I’ve been feeling like the emojis make it feel AI-generated, so I removed those. Also, a bonus of changing them to letters is having the ability to now have the same name be used across different node types, but when you call them in code, you have to do like G:Object or O:Object. Fixed opacity slider position You might’ve seen in my last devlog, something kind of crazy happened with the slider… Anyway, it’s fixed now, so that’s good! I also ended up customizing the slider. Width and height lock Before this, I didn’t have a way for users to lock dimensions. I’ve implemented two checkboxes into the inspector, dimension lock and proportion lock. Dimension lock takes the current dimensions and keeps that ratio, while proportion lock keeps the original dimension ratio of the original asset. Closing the correct inspector Basically, there used to be a bug where if you deleted one asset while another asset was open in the inspector, it would close the inspector. It wasn’t harmful or anything, but it was really annoying. This was a pretty simple fix. I just added a check where the name of the asset in the inspector is compared to the name of the asset being deleted. Changing console color I don’t know if I mentioned this in a previous devlog yet, but I added a console for errors from scripting to show! It also displays start and end times. However, it was the wrong color for so long and I didn’t notice. It was just because I put the wrong class name in the css… Refreshing asset options This was also a bug that was really annoying. When you created a sprite and opened it up in the inspector, when you uploaded a new asset, it wouldn’t show up in the inspector. This was also pretty easy to fix. I just created a helper function, which basically just remakes the asset select options, and then called it every time an asset is changed, like when one is renamed, uploaded, or deleted. Adding sprite selection in the inspector I can’t believe I didn’t add this yet, but I added a new option in the inspector. If you have multiple sprites attached to an object, you can now select which sprite to use."}, {"post_id": 24286, "ts": "2026-07-07T19:08:04Z", "hours": 0.3156, "text": "Devlog 4.5 what did i just do 😭"}, {"post_id": 24203, "ts": "2026-07-07T16:50:32Z", "hours": 2.5069, "text": "Devlog 4 Recently I’ve been working on getting the scripting working. I’m using normal javascript with some added functions with something I call matuAPI. But I’m not here to show that right now. Rather, I think I should show some of the code of how my project works! Today, I want to talk about how I get multiple preview windows! How it works Every time someone double clicks an asset in the asset panel (which we can check by adding an addEventListener('dblclick', () => {}); ), a function called openPreview is called. When we call that function, we check to see if a preview of that file is already opened. We have a Map() called preview_windows , which contains all the previews that are currently open. If a preview for that file is already opened, we can simply just bring the preview back to the center of the screen. Now, what happens if we don’t have a preview open? Then, we create a new div with the class name preview-window . Inside that div, we will have another div for the preview header (which contains the file name and the word “Preview”) and below that div, an img tag with the file image. If the file type is an image, then we set the src of the img to URL.createObjectURL(file) . I haven’t had the time to add audio previews yet though… What happens next? A function called centerWindow is called. It brings the preview div to a select random few points in the middle of the screen. This prevents all the previews from opening up in the same spot. Next, in order to make it draggable, we call a function called dragElement. It detects when the “handle” (the preview header from above) has a mousedown and mouseup event, using a document.addEventListener('mousemove', elementDrag); and document.addEventListener('mouseup', stopDrag); . In each of these functions, we change the position of the element that is being dragged when the mouse is down. We also call a bringToFront function, which just adds a predetermined number to the element’s z-index. When the user clicks the close button in the header of the preview, we call the closePreview function, which is pretty simple. It removes the name of the file from the preview_windows map, and just deletes the preview. There were some bugs while making this; renaming issues while a preview is open, the preview not closing when the asset is deleted, and some other elements that had to be added. But I’m pretty proud of the fact that it works and some QoL features that I added to it, like reopening the preview recentering it. Thanks for reading this all the way down :) Next devlog, I think I’m going to plan on describing how scripting works!"}, {"post_id": 23562, "ts": "2026-07-06T16:29:51Z", "hours": 4.1775, "text": "Devlog 3 Nodes now work! I mean, you can now create them. Peep the screenshot below! I had to create a new .js file because script.js was getting a little crowded. It was getting a little hard to find stuff I’m pretty proud of how it works, but I’m planning on improving it later. Types of nodes I’ve added 5 node types. Groups Groups are used to group other nodes together. Groups can hold other groups or objects directly under them, but no scripts, audios, or sprites. Objects Objects are like the main nodes you will use. They are you use audio, sprites, and scripts. They can stand alone or go under a group. As you can see, in the inspector, you can edit the x values, y values, width, height, etc. Audio, Scripts, and Sprites These 3 nodes require a parent object. They cannot hold anything. This is how you attach images, sounds, and code to your object! What’s next This devlog is a little short compared to my other ones, but I’m still proud of what I have made! This is probably gonna just end up as a prototype for the final node system. I’m planning on adding the option to lock width and height, letting users drag nodes around and locking them, and reordering nodes. Right now, you can just drag them around from group to group, but you can’t change their order. After finishing the hierarchy, I’m going to move on to getting the coding part of the game engine working. I’m planning on using Javascript or a modified version of Javascript as matu’s language. Maybe I’ll call it matuscript heh Next, the obvious choice is to work on simulating the game in the viewport. (I’m scared of this) Finally, I want to work on save files and exporting. I still don’t know how I’m going to accomplish this (I’m even more scared of this) Maybe I’ll distract myself by working on the looks of matu first."}, {"post_id": 22368, "ts": "2026-07-04T20:10:45Z", "hours": 6.3128, "text": "Devlog 2 stress testing is stress testing me Anyway, it’s been 2 days since I last posted a devlog. I’ve been focused on making the asset uploading as perfect as possible. You can see everything I’ve done in the screenshot attached below! I’m pretty proud of how it turned out, but it took 6 hours smh… (I’m scared for making the actual game engine part) Now for the things I did! Asset uploading! This one is pretty obvious. Anyway, I’m pretty proud of how it looks and the fact that it works. In the asset panel at the bottom of the screen, simply click the “+” button at the top right. You will be able to upload any file, though anything that isn’t an image will have an emoji in its place (audio files will have a music emoji and other files will just have the document emoji). It’s totally not because I’m too lazy to actually create a placeholder… Inspector The inspector panel on the right only has one function right now, and that’s to rename assets, but I plan on expanding functionality later on! For example, when we actually get the game engine working, I want users to be able to change the x and y of objects in the game manually, change size, etc. Still, I’m pretty proud of how it looks right now and the fact that it works :) Preview windows This one is probably the thing that took the longest. I never want to deal with draggable windows again. Anyway, when you double click on an asset, it opens it up in a preview window. You can drag it around, and that’s pretty much it. But it’s cool and also it took the longest to make (excluding debugging, which probably took like half of the 6 hours). What’s next? Up next, I’m going to work on the actual game engine functionality. First things first, I want the user to create objects in the hierarchy and for things to start showing up in the viewport. I don’t think this should be too hard, but I’m probably gonna regret saying that. Then, I’m gonna get the coding part of the game engine working. I still haven’t decided if I want to create my own language again or just use javascript. I also have to get the game working in the viewport so users can test out their game. Finally, I want to work on being able to export games into html and js. thanks for coming to my ted talk"}, {"post_id": 21005, "ts": "2026-07-02T19:10:01Z", "hours": 0.6314, "text": "Devlog 1 I’m building a game engine that I’m calling matu! After around 30 minutes, I’ve finished the basic layout. Right now, it looks a little like Godot, so I’m considering changing it. The Layout You can see what it currently looks like in the screenshot attached. There are 5 sections. The Hierarchy This is where the nodes (sorry for using Godot language, I don’t know what to call them) are going to be held. Stuff like objects, cameras, backgrounds, etc. Assets This is where the user can upload assets and stuff. I’m probably gonna implement this feature first. Inspector This is where the user can change aspects of each object, like coordinates, size, etc. Viewport So this isn’t actually labelled, but it is the central grid. This is where the user will place objects and where the game will be shown. Toolbar This isn’t labelled either, but it’s the panel at the top of the screen. I’m planning on adding run and stop buttons (pretty obvious), save, load, and export features. Some things that I’m still in the planning phase are where to place scripts and how to add save files. For scripts, I think I’m gonna have one script for each object, but I don’t know where to open them on the screen. For saving, that’s a problem for another day TuT. I have a pretty good idea on how I’m gonna implement Assets and a moderate idea of the Inspector and Hierarchy. Thanks for reading this all the way :)"}]...
|
Title: matu game engine by @immaturegoat | Stardan Title: matu game engine by @immaturegoat | Stardance
Devlogs:
Devlog 1 I’m building a game engine that I’m calling matu! After around 30 minutes, I’ve finished the basic layout. Right now, it looks a little like Godot, so I’m considering changing it. The Layout You can see what it currently looks like in the screenshot attached. There are 5 sections. The Hierarchy This is where the nodes (sorry for using Godot language, I don’t know what to call them) are going to be held. Stuff like objects, cameras, backgrounds, etc. Assets This is where the user can upload assets and stuff. I’m probably gonna implement this feature first. Inspector This is where the user can change aspects of each object, like coordinates, size, etc. Viewport So this isn’t actually labelled, but it is the central grid. This is where the user will place objects and where the game will be shown. Toolbar This isn’t labelled either, but it’s the panel at the top of the screen. I’m planning on adding run and stop buttons (pretty obvious), save, load, and export features. Some things that I’m still in the planning phase are where to place scripts and how to add save files. For scripts, I think I’m gonna have one script for each object, but I don’t know where to open them on the screen. For saving, that’s a problem for another day TuT. I have a pretty good idea on how I’m gonna implement Assets and a moderate idea of the Inspector and Hierarchy. Thanks for reading this all the way :)
Devlog 2 stress testing is stress testing me Anyway, it’s been 2 days since I last posted a devlog. I’ve been focused on making the asset uploading as perfect as possible. You can see everything I’ve done in the screenshot attached below! I’m pretty proud of how it turned out, but it took 6 hours smh… (I’m scared for making the actual game engine part) Now for the things I did! Asset uploading! This one is pretty obvious. Anyway, I’m pretty proud of how it looks and the fact that it works. In the asset panel at the bottom of the screen, simply click the “+” button at the top right. You will be able to upload any file, though anything that isn’t an image will have an emoji in its place (audio files will have a music emoji and other files will just have the document emoji). It’s totally not because I’m too lazy to actually create a placeholder… Inspector The inspector panel on the right only has one function right now, and that’s to rename assets, but I plan on expanding functionality later on! For example, when we actually get the game engine working, I want users to be able to change the x and y of objects in the game manually, change size, etc. Still, I’m pretty proud of how it looks right now and the fact that it works :) Preview windows This one is probably the thing that took the longest. I never want to deal with draggable windows again. Anyway, when you double click on an asset, it opens it up in a preview window. You can drag it around, and that’s pretty much it. But it’s cool and also it took the longest to make (excluding debugging, which probably took like half of the 6 hours). What’s next? Up next, I’m going to work on the actual game engine functionality. First things first, I want the user to create objects in the hierarchy and for things to start showing up in the viewport. I don’t think this should be too hard, but I’m probably gonna regret saying that. Then, I’m gonna get the coding part of the game engine working. I still haven’t decided if I want to create my own language again or just use javascript. I also have to get the game working in the viewport so users can test out their game. Finally, I want to work on being able to export games into html and js. thanks for coming to my ted talk
Devlog 3 Nodes now work! I mean, you can now create them. Peep the screenshot below! I had to create a new .js file because script.js was getting a little crowded. It was getting a little hard to find stuff I’m pretty proud of how it works, but I’m planning on improving it later. Types of nodes I’ve added 5 node types. Groups Groups are used to group other nodes together. Groups can hold other groups or objects directly under them, but no scripts, audios, or sprites. Objects Objects are like the main nodes you will use. They are you use audio, sprites, and scripts. They can stand alone or go under a group. As you can see, in the inspector, you can edit the x values, y values, width, height, etc. Audio, Scripts, and Sprites These 3 nodes require a parent object. They cannot hold anything. This is how you attach images, sounds, and code to your object! What’s next This devlog is a little short compared to my other ones, but I’m still proud of what I have made! This is probably gonna just end up as a prototype for the final node system. I’m planning on adding the option to lock width and height, letting users drag nodes around and locking them, and reordering nodes. Right now, you can just drag them around from group to group, but you can’t change their order. After finishing the hierarchy, I’m going to move on to getting the coding part of the game engine working. I’m planning on using Javascript or a modified version of Javascript as matu’s language. Maybe I’ll call it matuscript heh Next, the obvious choice is to work on simulating the game in the viewport. (I’m scared of this) Finally, I want to work on save files and exporting. I still don’t know how I’m going to accomplish this (I’m even more scared of this) Maybe I’ll distract myself by working on the looks of matu first.
Devlog 4 Recently I’ve been working on getting the scripting working. I’m using normal javascript with some added functions with something I call matuAPI. But I’m not here to show that right now. Rather, I think I should show some of the code of how my project works! Today, I want to talk about how I get multiple preview windows! How it works Every time someone double clicks an asset in the asset panel (which we can check by adding an addEventListener('dblclick', () => {}); ), a function called openPreview is called. When we call that function, we check to see if a preview of that file is already opened. We have a Map() called preview_windows , which contains all the previews that are currently open. If a preview for that file is already opened, we can simply just bring the preview back to the center of the screen. Now, what happens if we don’t have a preview open? Then, we create a new div with the class name preview-window . Inside that div, we will have another div for the preview header (which contains the file name and the word “Preview”) and below that div, an img tag with the file image. If the file type is an image, then we set the src of the img to URL.createObjectURL(file) . I haven’t had the time to add audio previews yet though… What happens next? A function called centerWindow is called. It brings the preview div to a select random few points in the middle of the screen. This prevents all the previews from opening up in the same spot. Next, in order to make it draggable, we call a function called dragElement. It detects when the “handle” (the preview header from above) has a mousedown and mouseup event, using a document.addEventListener('mousemove', elementDrag); and document.addEventListener('mouseup', stopDrag); . In each of these functions, we change the position of the element that is being dragged when the mouse is down. We also call a bringToFront function, which just adds a predetermined number to the element’s z-index. When the user clicks the close button in the header of the preview, we call the closePreview function, which is pretty simple. It removes the name of the file from the preview_windows map, and just deletes the preview. There were some bugs while making this; renaming issues while a preview is open, the preview not closing when the asset is deleted, and some other elements that had to be added. But I’m pretty proud of the fact that it works and some QoL features that I added to it, like reopening the preview recentering it. Thanks for reading this all the way down :) Next devlog, I think I’m going to plan on describing how scripting works!
Devlog 4.5 what did i just do 😭
Devlog 5 I was too lazy to add all the features other than basic functionality to scripting, so I decided to work on some small bugs and features instead. Also, today I learned that you can ATTACH MULTIPLE SCREENSHOTS. This is like a gamechanger lol I can’t believe I didn’t know this. Extra line at the end of the viewport grid For the grid in the center of the screen, the function I used to draw it didn’t close it off on the right side. I can’t believe it took until now to fix it :| Changed hierarchy node symbols I changed the symbols on the left side of each of the nodes from emojis to letters. I used emojis because I didn’t want to find assets (sorry), but recently I’ve been feeling like the emojis make it feel AI-generated, so I removed those. Also, a bonus of changing them to letters is having the ability to now have the same name be used across different node types, but when you call them in code, you have to do like G:Object or O:Object. Fixed opacity slider position You might’ve seen in my last devlog, something kind of crazy happened with the slider… Anyway, it’s fixed now, so that’s good! I also ended up customizing the slider. Width and height lock Before this, I didn’t have a way for users to lock dimensions. I’ve implemented two checkboxes into the inspector, dimension lock and proportion lock. Dimension lock takes the current dimensions and keeps that ratio, while proportion lock keeps the original dimension ratio of the original asset. Closing the correct inspector Basically, there used to be a bug where if you deleted one asset while another asset was open in the inspector, it would close the inspector. It wasn’t harmful or anything, but it was really annoying. This was a pretty simple fix. I just added a check where the name of the asset in the inspector is compared to the name of the asset being deleted. Changing console color I don’t know if I mentioned this in a previous devlog yet, but I added a console for errors from scripting to show! It also displays start and end times. However, it was the wrong color for so long and I didn’t notice. It was just because I put the wrong class name in the css… Refreshing asset options This was also a bug that was really annoying. When you created a sprite and opened it up in the inspector, when you uploaded a new asset, it wouldn’t show up in the inspector. This was also pretty easy to fix. I just created a helper function, which basically just remakes the asset select options, and then called it every time an asset is changed, like when one is renamed, uploaded, or deleted. Adding sprite selection in the inspector I can’t believe I didn’t add this yet, but I added a new option in the inspector. If you have multiple sprites attached to an object, you can now select which sprite to use.
Devlog 6 This is probably going to be my last devlog before I work on scripting. I’ve put it off for too long, and right now, scripting is pretty limited (it has a start, end, input detection, movement, and console log function). I plan to add a LOT more to scripting, like changing sprites, changing opacity, rotation, cloning, deleting, audio, preview, and more. I also plan to open up the script in a window similar to the preview windows, because coding in the inspector sidebar is a bit constricting. Now, on to what I have been working on! Audio preview I can’t believe I put this off for so long, but it finally works. You can play audio from the preview window. Though, it’s a bit ugly right now so I plan on changing that later. Value tags for opacity and volume Before this, the two sliders were just sliders, and you couldn’t bring it to a specific value. However, there are now inputs on the right side of the sliders, allowing you to see what number the slider is at and allowing you to input your own values. Unique names for nodes I actually created two systems for this. So my idea for the node naming system is that unique names are kept separate across node types. That means that I can have an object called Thing and a group called Thing. My first idea of implementing this was to create a Set() for each node type. So I created group_names = new Set() , object_names = new Set() , sprite_names = new Set() , and so forth for each node type. Then we reuse the renaming function from script.js for the assets, but change it to have a switch statement based on the type. However, this was kind of hard, implementing a switch statement everywhere a rename or deletion or any sort of change happened. I replaced it by simpling using the hierarchy_nodes Map, which contains the names and types of each node. With this, we can just pull the type from the map to make sure that names are kept separate across types. It removes the big switch statements that were everywhere and overall keeps the code much cleaner. Rearranging nodes Previously, you could technically reorder things because I previously added reparenting, allowing you to move nodes from one parent to another, but it doesn’t allow you to rearrange nodes within a parent. Now, you can, and although its a bit clunky, it does work and I think it looks good. Alright, thanks for coming to this TED talk. The next devlog will be about a lot of changes that I will make to scripting.
Devlog 7 It’s been some time since I have posted a devlog on this project. I got a little sidetracked and spent a few days working with Rust. It’s probably gonna be my next project (flashcard app, I know, how original), but I’ve also spent some time working on scripting! So scripting was actually easier than I thought to implement. I have a const in my runtime.js file called matuAPI and it has every special function as well as what to do when that function is called. I’ll attach a screenshot of a section below. So now, on to what I have added! node lookup cloning spawning input rotation movement dimensions (width + height) changes opacity changes visibility asset changes playing and sotpping audio collision global variables changing bg color and timers! Wow, that was a lot! Unfortunately, as I was writing this devlog, I realized that I forgot to add a function that lets you change which sprite is being displayed in an object as well as changing the audio source asset. How does this always happen to me? Ok, I’ll be back in a bit. I need to add that real quick. Ok, I have returned! I have added them to the code and the documentation (which is just a markdown file), so we also have changing sprites and changing audio assets! Thanks for reading this devlog! Up next, I plan to add a pop out window for scripting (as the current one is too small) and of course, exporting, loading, and saving (I’m scared, save me)
Devlog 8 This is probably gonna be a shorter devlog, but basically I made scripting a lot easier in my game engine! Each script node now has a button in the top right of the inspector editor. I just reused the asset previews but with a textarea. This means you can have multiple popouts open at a time while scripting. It also gives you a much wider area to code in, as the inspector is kinda cramped. All updates in the popout update with the inspector textarea. The popouts are also resizable! QoL improvements Tab for indent Before, if you typed tab while scripting, it would just move focus to another button instead of indenting. However, now when you press tab, 4 spaces are added. You can select multiple lines to indent multiple lines, and press shift + tab to unindent lines. Auto-close pairs Now when you type a character like ( or [ automatically types its closing pair and places your cursor in between them. If you type the closing pair again, it will move your cursor to the outside. As well as that, deleting an empty pair will delete both characters. Auto-indent on enter Now when you go to another line, it will inherit the indentation of the line above it. :) What’s next? I really thought that with the introduction of scripting popouts, I would be getting close to finishing the project, but over the past few days, I’ve realized that there are still a lot of stuff I want to implement. First, I want to add a Label node, allowing users to display text easily. Next (and I can’t believe I haven’t implemented this yet), I want to add a way for the user to stop the game in the script, instead of clicking the stop button. I want to fix node reordering, as right now it is a bit clunky, and of course, the final thing for me to do is to add exporting, saving, and loading.
Devlog 9 Probably my last devlog before working on saving and exporting T-T What I worked on Stops in scripting I can’t believe I didn’t add this earlier, but you can now end the game using matu.runtime.stop(); Label nodes You can now have text labels in your game! I also added scripting implementation, so you can change what the text says during a run. Fixed reordering Reordering nodes was a bit clunky, so I fixed it (turns out there were some bugs in the CSS and the dragging), but now it should be smoother!
Devlog 10 Can’t believe my last devlog was two weeks ago… Anyway, here’s what I’ve been working on. Exporting and saving It works! Probably… I’m pretty sure it works. At least for my testing. If you guys find any bugs, be sure to tell me. a BUNCH of bug fixes Stop highlighting nodes when reordering Change matuapi rotation funcs from radians to degrees Clicking off node unselects it Favicon After game ends, if clones are still there, stop them from showing up Checkboxes on export menu Remove eval classUpdate documentation Sorry that this devlog is pretty short, for a 5 hour devlog. I’m just kinda tired of writing tbh and I can’t wait to ship this.
Ships:
IMPORTANT: documentation: https://github.com/immaturegoat/matu/blob/main/docs.md tutorial: https://github.com/immaturegoat/matu/blob/main/tutorial.md This is matu, a web game engine, designed to build and export 2D games. It features a node system with groups, objects, sprites, labels, audio, and scripts, asset uploading, viewport testing, saving and loading, and exporting into a web playable. It was inspired by editors like Unity and Godot, but I wanted to keep some simplicity similar to that of Scratch. It’s not that powerful, but it should be enough to make some simple games. The tutorial and documentation is linked above....
|
1793613432.0942788
|
1793699832.0942788
|
|
70378
|
maumau by @kashbae | Stardance
|
kashbae
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: maumau by @kashbae | Stardance
|
1793620582.2683792
|
1794225382.2683792
|
|
72410
|
maverics(mini drone) by @ganga_pranav | Stardance
|
ganga_pranav
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: maverics(mini drone) by @ganga_pranav | Sta Title: maverics(mini drone) by @ganga_pranav | Stardance...
|
1793461652.7404573
|
1794066452.7404573
|
|
56607
|
maxima-minima calculator by @R10 | Stardance
|
R10
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: maxima-minima calculator by @R10 | Stardanc Title: maxima-minima calculator by @R10 | Stardance...
|
1793393317.1463852
|
1793998117.1463852
|
|
53674
|
maxpad by @agilfor | Stardance
|
agilfor
|
0
|
11.16
|
0
|
[]
|
[{"post_id": 57664, "ts": "202 [{"post_id": 57664, "ts": "2026-08-29T21:46:12Z", "hours": 7.0956, "text": "Devlog II Ok so I locked in for the past few days and got as much done as possible to the point of being ready to ship. I’ve made a case design using Blender (cuz apparently STL files are also fine), and struggled through the writing of QMK firmware. I tried reading the docs but cuz I used charlieplexing to wire my keys the docs were kinda useless so I had to fallback to AI, which honestly wasn’t much better. So yeah anyways a few hours later and I now have a v1 of my case and a v1 of my firmware. My firmware is currently missing support for the OLED and LEDs, but from what I can tell those should be fairly easy and I want to test my keys and rotary encoders by themselves before I go making the scripts any messier than they already need to be. Same goes for the case. What I have now is a good start (especially cuz I haven’t done much CAD before), but I want to make it better. I’ll do a v2 design once I receive parts and have a clearer idea of how I want everything to fit together :) For now I’m gonna ship and hope it all goes well (though it probably won’t lol)"}, {"post_id": 54079, "ts": "2026-08-24T21:11:44Z", "hours": 4.0669, "text": "Devlog I Took me a while but I managed to get the schematic and PCB design done. I ended up redoing the schematic twice cuz I kept trying to expand it to make more stuff fit with the limited number of logic pins. The PCB design went fairly smoothly until I finished my first run and realized that it was too wide… so uh yeah I ended up redoing that too lol but it’s all good now. Gonna try to do the case tmrw and hopefully the firmware and everything will be done by the end of the week :)"}]...
|
Title: maxpad by @agilfor | Stardance
Devlogs:
De Title: maxpad by @agilfor | Stardance
Devlogs:
Devlog I Took me a while but I managed to get the schematic and PCB design done. I ended up redoing the schematic twice cuz I kept trying to expand it to make more stuff fit with the limited number of logic pins. The PCB design went fairly smoothly until I finished my first run and realized that it was too wide… so uh yeah I ended up redoing that too lol but it’s all good now. Gonna try to do the case tmrw and hopefully the firmware and everything will be done by the end of the week :)
Devlog II Ok so I locked in for the past few days and got as much done as possible to the point of being ready to ship. I’ve made a case design using Blender (cuz apparently STL files are also fine), and struggled through the writing of QMK firmware. I tried reading the docs but cuz I used charlieplexing to wire my keys the docs were kinda useless so I had to fallback to AI, which honestly wasn’t much better. So yeah anyways a few hours later and I now have a v1 of my case and a v1 of my firmware. My firmware is currently missing support for the OLED and LEDs, but from what I can tell those should be fairly easy and I want to test my keys and rotary encoders by themselves before I go making the scripts any messier than they already need to be. Same goes for the case. What I have now is a good start (especially cuz I haven’t done much CAD before), but I want to make it better. I’ll do a v2 design once I receive parts and have a clearer idea of how I want everything to fit together :) For now I’m gonna ship and hope it all goes well (though it probably won’t lol)...
|
1793498142.449629
|
1794102942.449629
|
|
66318
|
maxx by @wnxvra011 | Stardance
|
wnxvra011
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-18T18:20:58Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "yea i got with the live web very hard one to make it online ,after many errors in the code and made a high UI,I am feeling great for this work,every one can use this so they can get very fast answers", "repo": "https://github.com/spyx011/maxx", "demo": "https://maxx-l17d.onrender.com/"}]...
|
[{"post_id": 80749, "ts": "202 [{"post_id": 80749, "ts": "2026-10-18T18:16:19Z", "hours": 2.1669, "text": "guy’s the last one but not the endddddd see you in another project"}, {"post_id": 75277, "ts": "2026-09-29T16:57:25Z", "hours": 1.8589, "text": "GUY’S this is my updated version and guy’s try this AI, this version has much more bright colour’s and i have add ML/AI to this so it can cook."}, {"post_id": 74910, "ts": "2026-09-28T16:12:39Z", "hours": 1.1817, "text": "i see around ans see that ai is taking every thing we can make and every one think how an ai works so guy’s not muuch but i also want to know so i just build this “ THE MAXX”"}, {"post_id": 74532, "ts": "2026-09-27T16:02:53Z", "hours": 0.5017, "text": "MAXX — hloo there this is the start"}]...
|
Title: maxx by @wnxvra011 | Stardance
Devlogs:
MA Title: maxx by @wnxvra011 | Stardance
Devlogs:
MAXX — hloo there this is the start
i see around ans see that ai is taking every thing we can make and every one think how an ai works so guy’s not muuch but i also want to know so i just build this “ THE MAXX”
GUY’S this is my updated version and guy’s try this AI, this version has much more bright colour’s and i have add ML/AI to this so it can cook.
guy’s the last one but not the endddddd see you in another project
Ships:
yea i got with the live web very hard one to make it online ,after many errors in the code and made a high UI,I am feeling great for this work,every one can use this so they can get very fast answers...
|
1793581246.53307
|
1793667646.53307
|
|
60971
|
maya by @pratr_exe | Stardance
|
pratr_exe
|
0
|
1.52
|
0
|
[]
|
[{"post_id": 66676, "ts": "202 [{"post_id": 66676, "ts": "2026-09-12T15:24:56Z", "hours": 0.5297, "text": "debugging debugging debugging debugging"}, {"post_id": 65950, "ts": "2026-09-11T12:55:22Z", "hours": 0.9922, "text": "made the basic interface"}]...
|
Title: maya by @pratr_exe | Stardance
Devlogs:
ma Title: maya by @pratr_exe | Stardance
Devlogs:
made the basic interface
debugging debugging debugging debugging...
|
1793037135.0623758
|
1793641935.0623758
|
|
10173
|
maybe a raytracer by @Battak | Stardance
|
Battak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: maybe a raytracer by @Battak | Stardance
|
1793152529.9830313
|
1793757329.9830313
|
|
34205
|
mayfira by @ffung_dev | Stardance
|
ffung_dev
|
0
|
5.33
|
0
|
[]
|
[{"post_id": 27434, "ts": "202 [{"post_id": 27434, "ts": "2026-07-13T00:10:42Z", "hours": 5.3294, "text": "the mvp of my personal website! features moveable objects (from canva, handdrawn later on) and content from sanity so i can edit without needing to jump into code, whoopee :) thanks to my dad for helping me with all the bugs.."}]...
|
Title: mayfira by @ffung_dev | Stardance
Devlogs: Title: mayfira by @ffung_dev | Stardance
Devlogs:
the mvp of my personal website! features moveable objects (from canva, handdrawn later on) and content from sanity so i can edit without needing to jump into code, whoopee :) thanks to my dad for helping me with all the bugs.....
|
1793371904.9275346
|
1793976704.9275346
|
|
23259
|
mbpk by @ArslaanPathan | Stardance
|
ArslaanPathan
|
0
|
10.38
|
0
|
[]
|
[{"post_id": 69564, "ts": "202 [{"post_id": 69564, "ts": "2026-09-17T10:04:18Z", "hours": 0.4139, "text": "almost got it to install a package! gonna stop here and head to sleep soon and finish this off tomorrow inshallah goal was to get this working by today but thats ok i dont think it should be too hard to finish the rest ia gn all ^_^"}, {"post_id": 69550, "ts": "2026-09-17T09:02:50Z", "hours": 0.5578, "text": "got it to sync repos!"}, {"post_id": 69540, "ts": "2026-09-17T08:20:47Z", "hours": 0.7128, "text": "I got it to initialise xbps! Oh and there’s a working Makefile too which is nice"}, {"post_id": 69460, "ts": "2026-09-17T03:12:22Z", "hours": 0.2806, "text": "I am back and I need a package manager for Yerba Linux before Stardance ends on SEPTEMBER 30TH. Focus is shifting probably Goal: get this PM to work by the end of this day Instead of being independent I might just make it depend on existing repos and install rootlessly to ~/.local/mbpk It could probably just leech off of APK or RPM This is either going to be a bash script or like 500-1000 lines of C because I need something functional Let’s see what happens! Hopefully this goes well inshallah (No relevant screenshot for this so here’s an ls right now)"}, {"post_id": 21849, "ts": "2026-07-04T00:08:45Z", "hours": 1.0167, "text": "I finished off the final part of mbpk_update_repositories !!!!! It finally fetches the repository metadata, parses out the packages, and fetches them all independently!"}, {"post_id": 21415, "ts": "2026-07-03T10:54:41Z", "hours": 0.9531, "text": "I got it to save the repository metadata to a file and parse it!"}, {"post_id": 21391, "ts": "2026-07-03T09:35:34Z", "hours": 0.5111, "text": "Fixed a buffer overflow issue where I was writing 9 extra bytes outside of my allocated memory Also got a basic strerr function working for libmbpk"}, {"post_id": 20656, "ts": "2026-07-02T09:40:36Z", "hours": 2.0267, "text": "I got libmbpk to use libcurl and fetch the repository INI file into a buffer!"}, {"post_id": 14212, "ts": "2026-06-23T06:38:34Z", "hours": 3.9103, "text": "I wrote out the full spec for my package manager written in C89, mbpk (Minimal Binary Package Kit), and got it to load the repository config INI file! You heard that right, C89, because booleans are bloat. C89 is based and you cannot deny"}]...
|
Title: mbpk by @ArslaanPathan | Stardance
Devlogs Title: mbpk by @ArslaanPathan | Stardance
Devlogs:
I wrote out the full spec for my package manager written in C89, mbpk (Minimal Binary Package Kit), and got it to load the repository config INI file! You heard that right, C89, because booleans are bloat. C89 is based and you cannot deny
I got libmbpk to use libcurl and fetch the repository INI file into a buffer!
Fixed a buffer overflow issue where I was writing 9 extra bytes outside of my allocated memory Also got a basic strerr function working for libmbpk
I got it to save the repository metadata to a file and parse it!
I finished off the final part of mbpk_update_repositories !!!!! It finally fetches the repository metadata, parses out the packages, and fetches them all independently!
I am back and I need a package manager for Yerba Linux before Stardance ends on SEPTEMBER 30TH. Focus is shifting probably Goal: get this PM to work by the end of this day Instead of being independent I might just make it depend on existing repos and install rootlessly to ~/.local/mbpk It could probably just leech off of APK or RPM This is either going to be a bash script or like 500-1000 lines of C because I need something functional Let’s see what happens! Hopefully this goes well inshallah (No relevant screenshot for this so here’s an ls right now)
I got it to initialise xbps! Oh and there’s a working Makefile too which is nice
got it to sync repos!
almost got it to install a package! gonna stop here and head to sleep soon and finish this off tomorrow inshallah goal was to get this working by today but thats ok i dont think it should be too hard to finish the rest ia gn all ^_^...
|
1793162903.8018231
|
1793767703.8018231
|
|
21784
|
mbrOS by @mbr | Stardance
|
mbr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mbrOS by @mbr | Stardance
|
1793134120.7656133
|
1793738920.7656133
|
|
29212
|
mc-zig by @flyingpig525 | Stardance
|
flyingpig525
|
0
|
28.14
|
0
|
[]
|
[{"post_id": 28760, "ts": "202 [{"post_id": 28760, "ts": "2026-07-15T07:13:48Z", "hours": 7.4483, "text": "I’ve finally made a bit of progress on the play state! I have not had much time these past two weeks to work on this project, so I haven’t completed much. I did spend more than 7 hours working on this (I would ballpark it around 10-11 hours), as I did some work without any wifi or service. What’s Been Done? Managers and Events I refactored a bunch of types to accept a central Manager struct. For example: pub const Server = struct { pub fn doSomething ( this : * Server ) void { // stuff } }; Was changed to: pub fn ManagedServer ( comptime Manager : type ) type { return struct { const Server = @This (); manager : * Manager , pub fn doSomething ( this : * Server ) void { // stuff this . manager . onDoSomething ( this ); } }; } Goodness these codeblocks are annoying to write here. I should probably write them in my editor and not in this blog-writer. Anyway, this lets me achieve my goal of having an event system similar to the way minestom handles it. The above code isn’t perfectly representative of what I do, as I first check that the Manager type has an onDoSomething function before calling it. Play State Setup I have (kind of) completely finished the packet side of setting up a player once they enter the play state. This does NOT include a nice api for worlds and such. Chunk packets must be sent by hand. On the bright side, the tick loop finally has code to execute: client keep-alive packets (both sending and recieving). The server sends a keep-alive packet every 280 ticks. If the client does not pong the packet within 400 ticks, it gets kicked. What’s Next? Next I should probably finish up the World struct and make interfacing with it bearable. This will require me to also use the block data report (from the vanilla minecraft server jar) to generate block definitions. I also need to start tracking player data and do some testing with multiple clients. This post isn’t much, but I’ve tried my best to explain the little bit (that feels like a ton) of work I did. I wasn’t sure what to make the attached image be, so I decided to make it a screenshot of a funny bug I discovered while trying to decide what to make the screenshot be. I had forgotten to set the variable that indicated when the last keep-alive packet had been sent, so the client would receive one each tick."}, {"post_id": 19837, "ts": "2026-07-01T07:16:50Z", "hours": 20.6967, "text": "I started this project before I knew another hackclub event was ongoing, so I have a few hours to be logged with this devlog. This is also my first time participating in a hackclub event, so I am very excited. The Project mc-zig (name to be changed), upon completion, will be a zig library that can be used to create Minecraft: Java Edition version 1.21.10 servers without the overhead of vanilla behavior, as developing a mod or plugin for fabric or spigot and the like. If you’ve ever heard of the Minestom java library, mc-zig will be similar to it. Progress My belief at the beginning of any project is to get something working. The code can always be changed later. With this philosophy in mind, I have so far gotten the client through the handshake , login , and configuration states. I wouldn’t consider myself proud of the systems I’ve laid out for myself, but it works, so I can’t complain. The image attached shows what the client does once it gets bored of waiting for chunks to be sent. What’s Next? Next, I need to send chunks to the client, respond to keep-alives, and handle basic server-bound play packets. I also should probably write a proper readme."}]...
|
Title: mc-zig by @flyingpig525 | Stardance
Devlog Title: mc-zig by @flyingpig525 | Stardance
Devlogs:
I started this project before I knew another hackclub event was ongoing, so I have a few hours to be logged with this devlog. This is also my first time participating in a hackclub event, so I am very excited. The Project mc-zig (name to be changed), upon completion, will be a zig library that can be used to create Minecraft: Java Edition version 1.21.10 servers without the overhead of vanilla behavior, as developing a mod or plugin for fabric or spigot and the like. If you’ve ever heard of the Minestom java library, mc-zig will be similar to it. Progress My belief at the beginning of any project is to get something working. The code can always be changed later. With this philosophy in mind, I have so far gotten the client through the handshake , login , and configuration states. I wouldn’t consider myself proud of the systems I’ve laid out for myself, but it works, so I can’t complain. The image attached shows what the client does once it gets bored of waiting for chunks to be sent. What’s Next? Next, I need to send chunks to the client, respond to keep-alives, and handle basic server-bound play packets. I also should probably write a proper readme.
I’ve finally made a bit of progress on the play state! I have not had much time these past two weeks to work on this project, so I haven’t completed much. I did spend more than 7 hours working on this (I would ballpark it around 10-11 hours), as I did some work without any wifi or service. What’s Been Done? Managers and Events I refactored a bunch of types to accept a central Manager struct. For example: pub const Server = struct { pub fn doSomething ( this : * Server ) void { // stuff } }; Was changed to: pub fn ManagedServer ( comptime Manager : type ) type { return struct { const Server = @This (); manager : * Manager , pub fn doSomething ( this : * Server ) void { // stuff this . manager . onDoSomething ( this ); } }; } Goodness these codeblocks are annoying to write here. I should probably write them in my editor and not in this blog-writer. Anyway, this lets me achieve my goal of having an event system similar to the way minestom handles it. The above code isn’t perfectly representative of what I do, as I first check that the Manager type has an onDoSomething function before calling it. Play State Setup I have (kind of) completely finished the packet side of setting up a player once they enter the play state. This does NOT include a nice api for worlds and such. Chunk packets must be sent by hand. On the bright side, the tick loop finally has code to execute: client keep-alive packets (both sending and recieving). The server sends a keep-alive packet every 280 ticks. If the client does not pong the packet within 400 ticks, it gets kicked. What’s Next? Next I should probably finish up the World struct and make interfacing with it bearable. This will require me to also use the block data report (from the vanilla minecraft server jar) to generate block definitions. I also need to start tracking player data and do some testing with multiple clients. This post isn’t much, but I’ve tried my best to explain the little bit (that feels like a ton) of work I did. I wasn’t sure what to make the attached image be, so I decided to make it a screenshot of a funny bug I discovered while trying to decide what to make the screenshot be. I had forgotten to set the variable that indicated when the last keep-alive packet had been sent, so the client would receive one each tick....
|
1793569843.9448996
|
1794174643.9448996
|
|
64056
|
mcgame by @Sebastian36 | Stardance
|
Sebastian36
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mcgame by @Sebastian36 | Stardance
|
1793058564.1260364
|
1793663364.1260364
|
|
71184
|
mcpmiddleware by @shouryasharan27 | Stardance
|
shouryasharan27
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T08:57:56Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "It is basically a security mcp gateway where you can handle mcps with more advanced skills. You might understand when you download it and use in claude code/cursor etc", "repo": "https://github.com/shouryasharan7-netizen/mcpmiddleware", "demo": "https://www.agensi.io/skills/mcp-security-gateway"}]...
|
[{"post_id": 82292, "ts": "202 [{"post_id": 82292, "ts": "2026-10-24T14:20:36Z", "hours": 8.0236, "text": "An authenticated entry point for MCP servers and legacy APIs. The gateway maintains a registry, filters tool discovery and execution by role, routes MCP sessions through Redis, and records execution audit fingerprints. It also virtualizes REST and gRPC APIs as MCP tools and applies deterministic DLP redaction to request and response payloads."}]...
|
Title: mcpmiddleware by @shouryasharan27 | Stardan Title: mcpmiddleware by @shouryasharan27 | Stardance
Devlogs:
An authenticated entry point for MCP servers and legacy APIs. The gateway maintains a registry, filters tool discovery and execution by role, routes MCP sessions through Redis, and records execution audit fingerprints. It also virtualizes REST and gRPC APIs as MCP tools and applies deterministic DLP redaction to request and response payloads.
Ships:
It is basically a security mcp gateway where you can handle mcps with more advanced skills. You might understand when you download it and use in claude code/cursor etc...
|
1793584203.8850791
|
1793670603.8850791
|
|
7432
|
mcprobe by @Dinesh | Stardance
|
Dinesh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mcprobe by @Dinesh | Stardance
|
1793029724.2211056
|
1793634524.2211056
|
|
7920
|
mdl-website by @make_aguess | Stardance
|
make_aguess
|
0
|
77.16
|
0
|
[]
|
[{"post_id": 42720, "ts": "202 [{"post_id": 42720, "ts": "2026-08-07T16:03:51Z", "hours": 13.6217, "text": "ok so. been gone for a long time anyway. new commits from 4b3da0327219420254936eb2aa33c302f1689a6e onwards in summary added download features (merging was not fun) bumped trigger.dev to v4 added web sockets login had a bug. took way too long to realize i forgot to add keys to prod. added sentry cos i was bored and error detection bumped version again for trigger.dev cleaned up database, and updated schemas. added skeleton loaders change the theme cos i was bored. nextjs config file confused me, but i fixed it :) more trigger bugs appears. more trigger fix appears. added some safety stuff (pls dont attempt to attack it) somewhat mobile integration the remaining here is on the dev branch instead… havent gotten the chance to review code and merge tuning + prefs for users added unit tests. dashboard clean up."}, {"post_id": 15078, "ts": "2026-06-24T14:34:55Z", "hours": 4.8981, "text": "testing my brain cell limits today"}, {"post_id": 14408, "ts": "2026-06-23T15:06:15Z", "hours": 0.9156, "text": "jsut why ,"}, {"post_id": 13754, "ts": "2026-06-22T15:20:01Z", "hours": 1.4694, "text": "i might have a solution (thank you trigger.dev)"}, {"post_id": 12508, "ts": "2026-06-20T13:04:55Z", "hours": 1.6903, "text": "added weebcentral dowload functions. but sadly, vercel doesnt have long enough serverless funcs for me. shhame in the process of trying to get a domain somehow with dns"}, {"post_id": 11993, "ts": "2026-06-19T15:54:10Z", "hours": 7.7006, "text": "YES FINALLY ADDED STREAMING LOGIC AND SOME OTHER FEATURES yes i finally added the functions to download from my other 2 sources you can finally start with a mangadex url and downloading it (it takes a moment too) very nice"}, {"post_id": 11271, "ts": "2026-06-18T13:04:36Z", "hours": 7.2008, "text": "typescript is funny today HUH"}, {"post_id": 10695, "ts": "2026-06-17T15:42:40Z", "hours": 4.4536, "text": "had to read some c code for this man"}, {"post_id": 9948, "ts": "2026-06-16T14:02:58Z", "hours": 1.5778, "text": "today was less coding, but added some api fixes and testing code for manga dex download is working. plan to start on maunal next"}, {"post_id": 9120, "ts": "2026-06-15T08:16:23Z", "hours": 0.7036, "text": "added linting and more database problems"}, {"post_id": 9085, "ts": "2026-06-15T05:47:54Z", "hours": 4.0447, "text": "added some api features"}, {"post_id": 7527, "ts": "2026-06-12T15:54:54Z", "hours": 8.9889, "text": "today was NOT a fun day"}, {"post_id": 6866, "ts": "2026-06-11T14:53:22Z", "hours": 5.0228, "text": "added some database and checking auth features"}, {"post_id": 6148, "ts": "2026-06-10T10:30:25Z", "hours": 1.5867, "text": "contiuned on auth and kinda got dashboard working"}, {"post_id": 5641, "ts": "2026-06-09T14:50:34Z", "hours": 1.7522, "text": "added some parts of auth feature"}, {"post_id": 4919, "ts": "2026-06-08T14:52:06Z", "hours": 2.9381, "text": "unfortunately my code got deleted before i could commit :("}, {"post_id": 4117, "ts": "2026-06-07T09:48:14Z", "hours": 3.4328, "text": "Added database using supabase"}, {"post_id": 3434, "ts": "2026-06-06T11:26:51Z", "hours": 5.1667, "text": "successfully linked the api, and created a basic landing page"}]...
|
Title: mdl-website by @make_aguess | Stardance
De Title: mdl-website by @make_aguess | Stardance
Devlogs:
successfully linked the api, and created a basic landing page
Added database using supabase
unfortunately my code got deleted before i could commit :(
added some parts of auth feature
contiuned on auth and kinda got dashboard working
added some database and checking auth features
today was NOT a fun day
added some api features
added linting and more database problems
today was less coding, but added some api fixes and testing code for manga dex download is working. plan to start on maunal next
had to read some c code for this man
typescript is funny today HUH
YES FINALLY ADDED STREAMING LOGIC AND SOME OTHER FEATURES yes i finally added the functions to download from my other 2 sources you can finally start with a mangadex url and downloading it (it takes a moment too) very nice
added weebcentral dowload functions. but sadly, vercel doesnt have long enough serverless funcs for me. shhame in the process of trying to get a domain somehow with dns
i might have a solution (thank you trigger.dev)
jsut why ,
testing my brain cell limits today
ok so. been gone for a long time anyway. new commits from 4b3da0327219420254936eb2aa33c302f1689a6e onwards in summary added download features (merging was not fun) bumped trigger.dev to v4 added web sockets login had a bug. took way too long to realize i forgot to add keys to prod. added sentry cos i was bored and error detection bumped version again for trigger.dev cleaned up database, and updated schemas. added skeleton loaders change the theme cos i was bored. nextjs config file confused me, but i fixed it :) more trigger bugs appears. more trigger fix appears. added some safety stuff (pls dont attempt to attack it) somewhat mobile integration the remaining here is on the dev branch instead… havent gotten the chance to review code and merge tuning + prefs for users added unit tests. dashboard clean up....
|
1793321242.095417
|
1793926042.095417
|
|
47242
|
me by @JewelMary | Stardance
|
JewelMary
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: me by @JewelMary | Stardance
|
1793173781.9887397
|
1793778581.9887397
|
|
63305
|
me by @tafsinn | Stardance
|
tafsinn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: me by @tafsinn | Stardance
|
1793051320.928679
|
1793656120.928679
|
|
55792
|
me website by @Haruka | Stardance
|
Haruka
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: me website by @Haruka | Stardance
|
1793350199.818312
|
1793954999.818312
|
|
62633
|
me-me-me by @strawberryskeleton | Stardance
|
strawberryskeleton
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: me-me-me by @strawberryskeleton | Stardance
|
1793047685.4298286
|
1793652485.4298286
|
|
43312
|
me.com by @fahim | Stardance
|
fahim
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: me.com by @fahim | Stardance
|
1793216918.3217337
|
1793821718.3217337
|
|
54482
|
me.exe by @aaradhyap | Stardance
|
aaradhyap
|
0
|
0.6
|
0
|
[]
|
[{"post_id": 54929, "ts": "202 [{"post_id": 54929, "ts": "2026-08-26T05:03:28Z", "hours": 0.6017, "text": "Completed barebones version of me.exe, now will glow it up with some CSS!"}]...
|
Title: me.exe by @aaradhyap | Stardance
Devlogs:
Title: me.exe by @aaradhyap | Stardance
Devlogs:
Completed barebones version of me.exe, now will glow it up with some CSS!...
|
1792939705.6889179
|
1793803705.6889179
|
|
47065
|
me@art-generator by @ashirodivy | Stardance
|
ashirodivy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: me@art-generator by @ashirodivy | Stardance
|
1793166688.8473241
|
1793771488.8473241
|
|
47321
|
meGPT by @Bubblegumoxide | Stardance
|
Bubblegumoxide
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T07:07:20Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "megpt ship log finally shipped megpt. it looks like an ai chat interface on the outside, but its actually just a human sitting behind an admin panel replying live in real time. total time logged actual wall-clock time: 7h 20m hackatime tracked total: ~2 what got built fake ai UI: dark mode layout, custom prompt chips, fullscreen splash video intro on startup real-time backend: firestore onSnapshot listeners syncing messages instantly between user and admin admin portal (admin.html): hidden dashboard to control responses, delete chats, and reply live media support: browser microphone voice memos + client-side canvas compression for images easter eggs: typing herobrine triggers a screen glitch effect, creeper triggers aww man security lockdown: locked down firestore security rules so only the admin account can edit or wipe database documents (fixed after someone inspected element mid-chat) tech stack vanilla html / javascript tailwind css (cdn) firebase (firestore + auth) vercel for hosting lessons learned firebase config keys on frontend are fine, but wide open firestore rules will get you audited mid-chat in devtools zero-build vanilla js + tailwind is the fastest way to ship a lightweight prototype ship status deployed and live on vercel. ( https://megpt-rosy.vercel.app ) project complete.", "repo": "https://github.com/qaimkhaniarzan-hub/meGPT-", "demo": "https://megpt-rosy.vercel.app/"}]...
|
[{"post_id": 54287, "ts": "202 [{"post_id": 54287, "ts": "2026-08-25T07:03:45Z", "hours": 0.3333, "text": "fixed the site and made it look more sloppy. Site is live!"}, {"post_id": 49799, "ts": "2026-08-18T18:52:47Z", "hours": 0.3958, "text": "fixed shi"}, {"post_id": 46255, "ts": "2026-08-13T11:27:09Z", "hours": 0.2511, "text": "key features added: Google Authentication (tied to real user UIDs & emails) Auto-resizing image uploads (bye-bye 1MB Firebase crash) Intro clip WhatsApp-style voice recorder No clunky reloads on chat delete/switch Dedicated Operator Dashboard to handle incoming messages Actual hosting so u can try it: https://megpt-rosy.vercel.app/ COMMENT WHAT I SHUD ADD NEXT"}, {"post_id": 46227, "ts": "2026-08-13T09:54:48Z", "hours": 0.4419, "text": "I just finished adding a github repo, voice messages support, some easter eggs, and fixed a few bugs you can also now send images! admin panel exists too. next i might add an account system"}, {"post_id": 46200, "ts": "2026-08-13T08:25:07Z", "hours": 0.5503, "text": "Please welcome meGPT! talk to an ai (average intelligence) i know everything so far only text messages but soon imma add picture support and voice memo support"}]...
|
Title: meGPT by @Bubblegumoxide | Stardance
Devlo Title: meGPT by @Bubblegumoxide | Stardance
Devlogs:
Please welcome meGPT! talk to an ai (average intelligence) i know everything so far only text messages but soon imma add picture support and voice memo support
I just finished adding a github repo, voice messages support, some easter eggs, and fixed a few bugs you can also now send images! admin panel exists too. next i might add an account system
key features added: Google Authentication (tied to real user UIDs & emails) Auto-resizing image uploads (bye-bye 1MB Firebase crash) Intro clip WhatsApp-style voice recorder No clunky reloads on chat delete/switch Dedicated Operator Dashboard to handle incoming messages Actual hosting so u can try it: https://megpt-rosy.vercel.app/ COMMENT WHAT I SHUD ADD NEXT
fixed shi
fixed the site and made it look more sloppy. Site is live!
Ships:
megpt ship log finally shipped megpt. it looks like an ai chat interface on the outside, but its actually just a human sitting behind an admin panel replying live in real time. total time logged actual wall-clock time: 7h 20m hackatime tracked total: ~2 what got built fake ai UI: dark mode layout, custom prompt chips, fullscreen splash video intro on startup real-time backend: firestore onSnapshot listeners syncing messages instantly between user and admin admin portal (admin.html): hidden dashboard to control responses, delete chats, and reply live media support: browser microphone voice memos + client-side canvas compression for images easter eggs: typing herobrine triggers a screen glitch effect, creeper triggers aww man security lockdown: locked down firestore security rules so only the admin account can edit or wipe database documents (fixed after someone inspected element mid-chat) tech stack vanilla html / javascript tailwind css (cdn) firebase (firestore + auth) vercel for hosting lessons learned firebase config keys on frontend are fine, but wide open firestore rules will get you audited mid-chat in devtools zero-build vanilla js + tailwind is the fastest way to ship a lightweight prototype ship status deployed and live on vercel. ( https://megpt-rosy.vercel.app ) project complete....
|
1793562662.6423583
|
1793649062.6423583
|
|
17074
|
measure counter by @bbrb546 | Stardance
|
bbrb546
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: measure counter by @bbrb546 | Stardance
|
1793177301.656778
|
1793782101.656778
|
|
57250
|
meaw by @aatriv38 | Stardance
|
aatriv38
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: meaw by @aatriv38 | Stardance
|
1793426002.4325995
|
1794030802.4325995
|
|
57251
|
meaw by @aatriv38 | Stardance
|
aatriv38
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: meaw by @aatriv38 | Stardance
|
1793426003.380182
|
1794030803.380182
|
|
11648
|
mechanical light switch cover by @mrpickles55 | St mechanical light switch cover by @mrpickles55 | Stardance...
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mechanical light switch cover by @mrpickles Title: mechanical light switch cover by @mrpickles55 | Stardance...
|
1793296469.0794144
|
1793901269.0794144
|
|
33991
|
mechanicus by @redbigz | Stardance
|
redbigz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mechanicus by @redbigz | Stardance
|
1793480131.4303763
|
1794084931.4303763
|
|
30540
|
medal holder xc runner by @ | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: medal holder xc runner by @ | Stardance
|
1793361426.2208412
|
1793966226.2208412
|
|
10096
|
media-deck by @seseemo | Stardance
|
seseemo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: media-deck by @seseemo | Stardance
|
1793371935.3952541
|
1793976735.3952541
|
|
13705
|
media-embeddings by @aditiwa | Stardance
|
aditiwa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: media-embeddings by @aditiwa | Stardance
|
1793238661.5273848
|
1793843461.5273848
|
|
17129
|
mediassist by @ibrahimzahid038 | Stardance
|
ibrahimzahid038
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mediassist by @ibrahimzahid038 | Stardance
|
1793530386.9779644
|
1794135186.9779644
|
|
47549
|
medical diabetes information website by @otiliamun medical diabetes information website by @otiliamuntean48 | Stardance...
|
otiliamuntean48
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: medical diabetes information website by @ot Title: medical diabetes information website by @otiliamuntean48 | Stardance...
|
1793184838.0232377
|
1793789638.0232377
|
|
50072
|
medora by @pizzalover125 | Stardance
|
pizzalover125
|
0
|
16.25
|
0
|
[]
|
[{"post_id": 55803, "ts": "202 [{"post_id": 55803, "ts": "2024-08-04T00:00:00Z", "hours": 0.5, "text": "ok what i did last time was kind of a waste didn’t really need that lets work on the actual CAD ok took me a bit to get here i made a bunch of mistakes idk this feels so odd im going to lock in on the other project and come back to ts"}, {"post_id": 55802, "ts": "2024-07-29T00:00:00Z", "hours": 2.0, "text": "bruhhh this got deleted ok ill rewrite basically, i found a THT LED on KiCAD that Claude didn’t know about i made the schematic i tried to find the dimensions on Dollar Tree’s website i calculated the LED position with Claude PCB: ok im making it a little bit longer noice im going to print ts out ok i printed two pages out the dimensions feel right the LEDs feel centered i cant be sure tho so ig ill just go with it i had to update the library it works! time to start CAD ok i was thinking to have two seperate panels but im just going to have display under the thing ok i dont want to work on CAD ngl ill make a render of the PCB made it! its not the best or anything but it looks cool ok lowk this was unneccesary cause ill prob change some stuff but its still cool"}, {"post_id": 55801, "ts": "2024-07-28T00:00:00Z", "hours": 4.0, "text": "i went to the dollar store today i got a pill organizer im going to make it smart! $5 BOM THT components so its easy to assemble im starting with taking measurements it took so long for some reason but i got it done ive never used calipers before i always just use a GrabCAD model i got calipers from OpenSauce so ill just use those i also needed to use rulers because calipers were too small test print time! it was originally bigger, but Raygen told me to make it 1mm tall so i did that! first is too tall but not wide enough changed dimensions a little bit hopefully it works this time 2nd one didn’t work 3rd works but not ideal 4th ones the charm ok it works could be a bit wider but im done with test prints ok i need to figure out where to put LEDs uhhh ill just work on KiCAD rn this is going to require A LOT of prototyping i’ve been trying to find a kicad model for so long i do not want to make my own kicad model looks like i cant use THT neopixels ill just use RGB leds ok looks like i can’t do THT thats unfortunate"}, {"post_id": 55800, "ts": "2024-07-27T00:00:00Z", "hours": 2.5, "text": "PCBWay reached out to sponsor my hackathon my hackathon was too close, so I said we could collaborate in the future i also asked if they could sponsor this project they said yes! i just need to update PCB + repo done! will email now ok i need to fix 3d print also right now, it’s not printable the handles and the rectangle on both sides is too big of an overhang so ill split the handles added holes made the handle used calipers IRL to gauge what dimensions i need noice! will adjust the dimensions ok im going to figure out how long ts will take to print container: 4h45m, 212g lid top: 49m14s, 33g lid bottom: 1h33m, 64g handles: 18m32s, 7g thats in total: 7h 25m, 316 g i think ill need to add 1kg filament because i’ll likely need to reprint stuff apparently 1 screw isn’t enough ok i need to add 2 screws nice! i added 3 screws cause why not i might not use all of them; we’ll see new cutout also larger"}, {"post_id": 55799, "ts": "2024-07-26T00:00:00Z", "hours": 1.0, "text": "ok i realilze i have a problem i have to fix it ok that ended up fixing it idk how im going to print this cause supports wouldn’t work… or would they i asked in Slack hopefully someone responds i downloaded the EllieGrid app to see how it works i will use this for my app brainstormed what pages will be on the site idk if i should journal this here"}, {"post_id": 55798, "ts": "2024-07-25T00:00:00Z", "hours": 0.75, "text": "i want to render this cause why not imported it into Fusion there was some stuff wrong with it but i ended up fixing it I asked Claude to help me after struggles, i got this!"}, {"post_id": 55797, "ts": "2024-07-24T00:00:00Z", "hours": 0.5, "text": "trying to make an exploded view looks weird ngl modeled the magnet looks good!"}, {"post_id": 55796, "ts": "2024-07-22T00:00:00Z", "hours": 2.0, "text": "ok its time to lock in im submitting this to Congressional App Challenge added slot i want to add magnets not enough space i added the holes added more holes looks pretty ugly im ready to submit almost it looks really ugly will fix later im going to create a BOM rq this doesn’t count hotplate im going to figure out how much it would cost for 100 ok it comes out to around $25/unit ill figure that out later ok im going to set up repo for submission prepared the repo!"}, {"post_id": 55795, "ts": "2024-07-03T00:00:00Z", "hours": 1.5, "text": "going to redesign schematic with neopixels ok i dont think i need to model it exactly like the other thing planning to do 8 containers with a CAD of 200 x 100 mm thats what claude came up with pretty nice added mounting holes; took wayyy longer than expected noice 3d view looks pretty clean, ngl i will create case now lets start afresh just realized it wouldn’t work because the USB-C is too far away redesigned it to be 198.5 mm wide so its easy to plug in made it 195 x 95 cause it looks too thin in CAD still kinda thin, ngl going to make it even smaller PCB 190 x 100 now! hanging over the edge it was also mis-centered fixed that as well nvm not centered voila! will design lid to lid looks like an ominous box im going to flip the MCU so it is thinner fixed! made top part thinner where LEDs will be so it shines brighter still looks like a box ngl duo-tone design container!"}, {"post_id": 55794, "ts": "2024-06-29T00:00:00Z", "hours": 0.5, "text": "going to make top holes now done need to make it better ok i think ill need to hotplate this because its too thick going to use neopixels cause they are better and I could make this sleeker im going to use WS2812B"}, {"post_id": 55793, "ts": "2024-06-23T00:00:00Z", "hours": 1.0, "text": "ok ill come back to this lets design the case idk if I even need a PCB it makes it a lot cleaner tho im just going to restart it cause i messed something up took way longer than it should have fixed this resistor i misplaced thinned it down added holes… time to make the top!"}]...
|
Title: medora by @pizzalover125 | Stardance
Devlo Title: medora by @pizzalover125 | Stardance
Devlogs:
ok ill come back to this lets design the case idk if I even need a PCB it makes it a lot cleaner tho im just going to restart it cause i messed something up took way longer than it should have fixed this resistor i misplaced thinned it down added holes… time to make the top!
going to make top holes now done need to make it better ok i think ill need to hotplate this because its too thick going to use neopixels cause they are better and I could make this sleeker im going to use WS2812B
going to redesign schematic with neopixels ok i dont think i need to model it exactly like the other thing planning to do 8 containers with a CAD of 200 x 100 mm thats what claude came up with pretty nice added mounting holes; took wayyy longer than expected noice 3d view looks pretty clean, ngl i will create case now lets start afresh just realized it wouldn’t work because the USB-C is too far away redesigned it to be 198.5 mm wide so its easy to plug in made it 195 x 95 cause it looks too thin in CAD still kinda thin, ngl going to make it even smaller PCB 190 x 100 now! hanging over the edge it was also mis-centered fixed that as well nvm not centered voila! will design lid to lid looks like an ominous box im going to flip the MCU so it is thinner fixed! made top part thinner where LEDs will be so it shines brighter still looks like a box ngl duo-tone design container!
ok its time to lock in im submitting this to Congressional App Challenge added slot i want to add magnets not enough space i added the holes added more holes looks pretty ugly im ready to submit almost it looks really ugly will fix later im going to create a BOM rq this doesn’t count hotplate im going to figure out how much it would cost for 100 ok it comes out to around $25/unit ill figure that out later ok im going to set up repo for submission prepared the repo!
trying to make an exploded view looks weird ngl modeled the magnet looks good!
i want to render this cause why not imported it into Fusion there was some stuff wrong with it but i ended up fixing it I asked Claude to help me after struggles, i got this!
ok i realilze i have a problem i have to fix it ok that ended up fixing it idk how im going to print this cause supports wouldn’t work… or would they i asked in Slack hopefully someone responds i downloaded the EllieGrid app to see how it works i will use this for my app brainstormed what pages will be on the site idk if i should journal this here
PCBWay reached out to sponsor my hackathon my hackathon was too close, so I said we could collaborate in the future i also asked if they could sponsor this project they said yes! i just need to update PCB + repo done! will email now ok i need to fix 3d print also right now, it’s not printable the handles and the rectangle on both sides is too big of an overhang so ill split the handles added holes made the handle used calipers IRL to gauge what dimensions i need noice! will adjust the dimensions ok im going to figure out how long ts will take to print container: 4h45m, 212g lid top: 49m14s, 33g lid bottom: 1h33m, 64g handles: 18m32s, 7g thats in total: 7h 25m, 316 g i think ill need to add 1kg filament because i’ll likely need to reprint stuff apparently 1 screw isn’t enough ok i need to add 2 screws nice! i added 3 screws cause why not i might not use all of them; we’ll see new cutout also larger
i went to the dollar store today i got a pill organizer im going to make it smart! $5 BOM THT components so its easy to assemble im starting with taking measurements it took so long for some reason but i got it done ive never used calipers before i always just use a GrabCAD model i got calipers from OpenSauce so ill just use those i also needed to use rulers because calipers were too small test print time! it was originally bigger, but Raygen told me to make it 1mm tall so i did that! first is too tall but not wide enough changed dimensions a little bit hopefully it works this time 2nd one didn’t work 3rd works but not ideal 4th ones the charm ok it works could be a bit wider but im done with test prints ok i need to figure out where to put LEDs uhhh ill just work on KiCAD rn this is going to require A LOT of prototyping i’ve been trying to find a kicad model for so long i do not want to make my own kicad model looks like i cant use THT neopixels ill just use RGB leds ok looks like i can’t do THT thats unfortunate
bruhhh this got deleted ok ill rewrite basically, i found a THT LED on KiCAD that Claude didn’t know about i made the schematic i tried to find the dimensions on Dollar Tree’s website i calculated the LED position with Claude PCB: ok im making it a little bit longer noice im going to print ts out ok i printed two pages out the dimensions feel right the LEDs feel centered i cant be sure tho so ig ill just go with it i had to update the library it works! time to start CAD ok i was thinking to have two seperate panels but im just going to have display under the thing ok i dont want to work on CAD ngl ill make a render of the PCB made it! its not the best or anything but it looks cool ok lowk this was unneccesary cause ill prob change some stuff but its still cool
ok what i did last time was kind of a waste didn’t really need that lets work on the actual CAD ok took me a bit to get here i made a bunch of mistakes idk this feels so odd im going to lock in on the other project and come back to ts...
|
1793584605.8943598
|
1794448605.8943598
|
|
6733
|
mega chad robot by @hassan | Stardance
|
hassan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mega chad robot by @hassan | Stardance
|
1793242493.059153
|
1793847293.059153
|
|
27507
|
megaboard(3x4)matrix+rotary encoder by @HUMI | Sta megaboard(3x4)matrix+rotary encoder by @HUMI | Stardance...
|
HUMI
|
0
|
16.22
|
0
|
[]
|
[{"post_id": 40871, "ts": "202 [{"post_id": 40871, "ts": "2026-08-04T17:46:39Z", "hours": 1.1336, "text": "ok so i finished making the git hub repo and had some problems but some guy helped my on slack and i submited my macropad!!!! finaly"}, {"post_id": 40087, "ts": "2026-08-03T13:57:14Z", "hours": 1.7503, "text": "IT TURNED OUT MY PCB WAS TOO BIG BY 4MM ok so i was abaut to finish up the project and when i clikced on the “SUBBMIT YOUR PROJECT”in the guide i read there that the pcb needed to be max 100mm x 100mm and my was 104mm so i needed to do another redisign witch i thought was gona be hard to move ale the holes and whatnot in the case but it tured out that it wasnt that hard and now it tured out wah better so i moved one of the mounting holes to the middle witch gave me more space for the rotary encoder so i moved it up witch gives it more space from other keys and the space above the keys got smaler (4mm)but then i saw that i could shrink it even more abaut 5mm and now it looks way cleaner so i think that its good that i needed to make my pcb smaler OH and i made some new keybinds tho the code basic stuff like cntr + C and cntr+V now the only thing i need to do is make an github repo and im am done! WISH ME LUCK"}, {"post_id": 37200, "ts": "2026-07-29T18:54:41Z", "hours": 0.7836, "text": "today i decided to make the board kmk not qmk since i heard it was easier and tbh it proably was it was easy to understand the github page and its wery easy to code it i only was able to create a txt file and not the axual main.py/code.py file since i dont have the microcontroler yet and i cant create those but i still have all the code if you are making a macro pad i highly reckomend using kmk the hole thing took like 45m its realy easy i think i am done now i only need too make a github repo and stuff like that and i will be done"}, {"post_id": 25309, "ts": "2026-07-09T15:01:59Z", "hours": 0.6169, "text": "finaly finished my case today tbh it was only minor changes and fileting the hole thing to make it more finished but besides i decided to go with some m3-6mm screws i faund on amazon and i didin,t make a knob for the rotary encoder bc it wasn,t specified witch encoder i am gona get so i will make that onece i get the part so i know what i am dealing with. the case and the pcb took me araund 12,5h bc of some problems and redisigns (check out the rest of devlogs) witch is crasy tbh like i thought that this was gonna take my like 5h max but here we are now comes the real chalenge the firmware bc i had minor experience with electronics and cad but it will be my first with the QMK Firmware and i had some basics in coding with phyton but it was realy unsignificant"}, {"post_id": 24267, "ts": "2026-07-07T18:38:54Z", "hours": 2.5589, "text": "today i made the hole pcb more slim to reduce the distance beetwen the keykaps and the case to hide more of the pcb since its plateless i modifaid the case to the new dimencions of the pcb and made the bottom and the top part of it and i faund out that my hole design was wrong since the screw are too long (16MM) witch ruins ewerything so i will either just build it with shorter ones or my hole project is cooked. the worst thing is that i realy havent thought abaut the screws so the holes are only the lenght of the heat insearts (realy short) + like 1mm although i think its posible to somehow fit it but it might be wery hard to do so and its a bbumer bc the case is fire atleast in my oppinion and i know that some are better but i had to compromise on some things bc of the plateless design and some other stuf"}, {"post_id": 22962, "ts": "2026-07-05T17:15:44Z", "hours": 3.1425, "text": "today while exporting my stl pcb file kicad crashed and my design wasnt saved and i lost my progres although it took me like 30m to fix it it still was a huge setback for me so i thought that i tasnt 5mm too close but to far and changed it but later i learned that it was acualy 5mm too close i just added +0.04mm instead of +0.2 mm to acaunt for clearence(i swear this mistake alone costed me like 2h of my life) besides i decided to make this macropad platles and now it will be held on by columns from below and srews in using heat inserts and also suport colums in betwen the rows of keykaps today i also asigned all of my keycaps and the rotary encoder a 3d model to make it more easy to design the enclousure"}, {"post_id": 21483, "ts": "2026-07-03T13:42:50Z", "hours": 1.3836, "text": "decided to add an rotary encoder to my macropad! it looks realy better now also bc i added it i needet to mace adustments to the pcb rauting as the module was moved and i also added global labels to my shematic to make it look more readable"}, {"post_id": 21078, "ts": "2026-07-02T21:09:40Z", "hours": 2.5619, "text": "i started making the encasing for the pcb but when i tried to center it something wasńt adding upp the plate was off and a difrent size from my pcb and after grueling 40m of work i faund out that the switches were 0,05mm to close to eachorther .and i started fixing them its all fine now then i realized how ong my case was and how i would get so much space in the front and decided to try and make it smaleler i thought that i could place it on the back of the pcb but it was interupting the pins i still dont know how they did that in the diy guide but i will look into it ps i had some isues with the 3d model libraries"}, {"post_id": 18594, "ts": "2026-06-29T19:41:41Z", "hours": 1.0169, "text": "it turned out that i placed the swiches to far apart (big mistake) and had to rebild the hole pcb placment and rauting but now its way beter organized and rauted bc i learned from a yt vid on how to properly do it"}, {"post_id": 18179, "ts": "2026-06-29T07:05:09Z", "hours": 1.2725, "text": "got the shematics done and the pcb rauted"}]...
|
Title: megaboard(3x4)matrix+rotary encoder by @HUM Title: megaboard(3x4)matrix+rotary encoder by @HUMI | Stardance
Devlogs:
got the shematics done and the pcb rauted
it turned out that i placed the swiches to far apart (big mistake) and had to rebild the hole pcb placment and rauting but now its way beter organized and rauted bc i learned from a yt vid on how to properly do it
i started making the encasing for the pcb but when i tried to center it something wasńt adding upp the plate was off and a difrent size from my pcb and after grueling 40m of work i faund out that the switches were 0,05mm to close to eachorther .and i started fixing them its all fine now then i realized how ong my case was and how i would get so much space in the front and decided to try and make it smaleler i thought that i could place it on the back of the pcb but it was interupting the pins i still dont know how they did that in the diy guide but i will look into it ps i had some isues with the 3d model libraries
decided to add an rotary encoder to my macropad! it looks realy better now also bc i added it i needet to mace adustments to the pcb rauting as the module was moved and i also added global labels to my shematic to make it look more readable
today while exporting my stl pcb file kicad crashed and my design wasnt saved and i lost my progres although it took me like 30m to fix it it still was a huge setback for me so i thought that i tasnt 5mm too close but to far and changed it but later i learned that it was acualy 5mm too close i just added +0.04mm instead of +0.2 mm to acaunt for clearence(i swear this mistake alone costed me like 2h of my life) besides i decided to make this macropad platles and now it will be held on by columns from below and srews in using heat inserts and also suport colums in betwen the rows of keykaps today i also asigned all of my keycaps and the rotary encoder a 3d model to make it more easy to design the enclousure
today i made the hole pcb more slim to reduce the distance beetwen the keykaps and the case to hide more of the pcb since its plateless i modifaid the case to the new dimencions of the pcb and made the bottom and the top part of it and i faund out that my hole design was wrong since the screw are too long (16MM) witch ruins ewerything so i will either just build it with shorter ones or my hole project is cooked. the worst thing is that i realy havent thought abaut the screws so the holes are only the lenght of the heat insearts (realy short) + like 1mm although i think its posible to somehow fit it but it might be wery hard to do so and its a bbumer bc the case is fire atleast in my oppinion and i know that some are better but i had to compromise on some things bc of the plateless design and some other stuf
finaly finished my case today tbh it was only minor changes and fileting the hole thing to make it more finished but besides i decided to go with some m3-6mm screws i faund on amazon and i didin,t make a knob for the rotary encoder bc it wasn,t specified witch encoder i am gona get so i will make that onece i get the part so i know what i am dealing with. the case and the pcb took me araund 12,5h bc of some problems and redisigns (check out the rest of devlogs) witch is crasy tbh like i thought that this was gonna take my like 5h max but here we are now comes the real chalenge the firmware bc i had minor experience with electronics and cad but it will be my first with the QMK Firmware and i had some basics in coding with phyton but it was realy unsignificant
today i decided to make the board kmk not qmk since i heard it was easier and tbh it proably was it was easy to understand the github page and its wery easy to code it i only was able to create a txt file and not the axual main.py/code.py file since i dont have the microcontroler yet and i cant create those but i still have all the code if you are making a macro pad i highly reckomend using kmk the hole thing took like 45m its realy easy i think i am done now i only need too make a github repo and stuff like that and i will be done
IT TURNED OUT MY PCB WAS TOO BIG BY 4MM ok so i was abaut to finish up the project and when i clikced on the “SUBBMIT YOUR PROJECT”in the guide i read there that the pcb needed to be max 100mm x 100mm and my was 104mm so i needed to do another redisign witch i thought was gona be hard to move ale the holes and whatnot in the case but it tured out that it wasnt that hard and now it tured out wah better so i moved one of the mounting holes to the middle witch gave me more space for the rotary encoder so i moved it up witch gives it more space from other keys and the space above the keys got smaler (4mm)but then i saw that i could shrink it even more abaut 5mm and now it looks way cleaner so i think that its good that i needed to make my pcb smaler OH and i made some new keybinds tho the code basic stuff like cntr + C and cntr+V now the only thing i need to do is make an github repo and im am done! WISH ME LUCK
ok so i finished making the git hub repo and had some problems but some guy helped my on slack and i submited my macropad!!!! finaly...
|
1793433002.124076
|
1794037802.124076
|
|
44431
|
megacrawl by @adith | Stardance
|
adith
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: megacrawl by @adith | Stardance
|
1793274556.7552176
|
1793879356.7552176
|
|
480
|
mein coke by @ht614r | Stardance
|
ht614r
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: mein coke by @ht614r | Stardance
|
1793551889.1440625
|
1794156689.1440625
|