|
59428
|
WebOS by @reaue | Stardance
|
reaue
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T10:41:15Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I created a website which works like an OS with openable and closeable windows that can be draggable. There is three apps, the first one is a welcom app which explains the project, the second one is a note app which retains what you have written in the localStorage and then a Rock Paper Scissors app where you play against the computer. What was challenging? The challenging part was the last app because, it’s totally my own idea so I had to search info and fix bugs by myself with google. What are proud of? I’m proud of the render of the translucent window effect, and the global design and features of the OS. I have learned a lot on web development. What should people know so they can test your project. If you want to try this project, it’s online here : https://reaue.github.io/WebOS/ .", "repo": "https://github.com/reaue/WebOS", "demo": "https://reaue.github.io/WebOS/"}]...
|
[{"post_id": 64134, "ts": "202 [{"post_id": 64134, "ts": "2026-09-08T10:29:06Z", "hours": 0.3222, "text": "Devlog 3 - The final one ! I added a README to explain and show all features of my personnal OS. I finished everything to be ready for the ship. Now let’s ship it !"}, {"post_id": 64112, "ts": "2026-09-08T09:45:58Z", "hours": 1.0883, "text": "Devlog 2 - Adding my own App ! I added a “Rock Paper Scissors Shoot” in the OS, you played against the computer (which select his move with Math.random()) and there is also a score."}, {"post_id": 64091, "ts": "2026-09-08T08:30:19Z", "hours": 3.9694, "text": "Devlog 1 - Working on the SpaceOS. I started the WebOS 1 mission to created my own OS. I did it in a space style. I very happy with the design and the actual way to open, drag and close windows. Now let’s start to create my own App."}]...
|
Title: WebOS by @reaue | Stardance
Devlogs:
Devlo Title: WebOS by @reaue | Stardance
Devlogs:
Devlog 1 - Working on the SpaceOS. I started the WebOS 1 mission to created my own OS. I did it in a space style. I very happy with the design and the actual way to open, drag and close windows. Now let’s start to create my own App.
Devlog 2 - Adding my own App ! I added a “Rock Paper Scissors Shoot” in the OS, you played against the computer (which select his move with Math.random()) and there is also a score.
Devlog 3 - The final one ! I added a README to explain and show all features of my personnal OS. I finished everything to be ready for the ship. Now let’s ship it !
Ships:
What did you make? I created a website which works like an OS with openable and closeable windows that can be draggable. There is three apps, the first one is a welcom app which explains the project, the second one is a note app which retains what you have written in the localStorage and then a Rock Paper Scissors app where you play against the computer. What was challenging? The challenging part was the last app because, it’s totally my own idea so I had to search info and fix bugs by myself with google. What are proud of? I’m proud of the render of the translucent window effect, and the global design and features of the OS. I have learned a lot on web development. What should people know so they can test your project. If you want to try this project, it’s online here : https://reaue.github.io/WebOS/ ....
|
1793130836.31405
|
1793217236.31405
|
|
59479
|
solary by @saidcim | Stardance
|
saidcim
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T10:15:34Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a space-themed New Tab page and styled it like a terminal. I hope you will like it ☺", "repo": "https://github.com/saidcim/solary", "demo": "https://saidcim.github.io/solary/"}]...
|
[{"post_id": 64093, "ts": "202 [{"post_id": 64093, "ts": "2026-09-08T08:34:28Z", "hours": 0.5239, "text": "The terminal can search with s, switch between Google, DuckDuckGo and Yahoo, and jump straight to Google, YouTube or GitHub with commands: g , yt , gh . I also added the readme"}, {"post_id": 63880, "ts": "2026-09-07T21:38:03Z", "hours": 1.0731, "text": "I added an info command that provides information about planets and an ls command that compares them."}, {"post_id": 63843, "ts": "2026-09-07T20:30:45Z", "hours": 1.1542, "text": "I’ve added the other planets too (I can’t upload all 7 planets)."}, {"post_id": 63749, "ts": "2026-09-07T18:23:04Z", "hours": 1.1383, "text": "Added an ASCII planet"}, {"post_id": 63698, "ts": "2026-09-07T17:06:25Z", "hours": 1.0833, "text": "Static terminal layout and input loop history on the arrow keys, and Tab completion. Commands register into a table so later work can add them without touching the dispatcher."}]...
|
Title: solary by @saidcim | Stardance
Devlogs:
St Title: solary by @saidcim | Stardance
Devlogs:
Static terminal layout and input loop history on the arrow keys, and Tab completion. Commands register into a table so later work can add them without touching the dispatcher.
Added an ASCII planet
I’ve added the other planets too (I can’t upload all 7 planets).
I added an info command that provides information about planets and an ls command that compares them.
The terminal can search with s, switch between Google, DuckDuckGo and Yahoo, and jump straight to Google, YouTube or GitHub with commands: g , yt , gh . I also added the readme
Ships:
I made a space-themed New Tab page and styled it like a terminal. I hope you will like it ☺...
|
1792878687.0332036
|
1793742687.0332036
|
|
59439
|
ShitOS by @StupendousMaker | Stardance
|
StupendousMaker
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T10:05:13Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So this is a web based os called ShitOS. It doesn’t have any purpose except helping me learn styling in html. I don’t even know who would use it and what would they even use it for????", "repo": "https://github.com/samratveer22-boop/ShitOS-GoldenGate", "demo": "https://samratveer22-boop.github.io/ShitOS-GoldenGate/index.html"}]...
|
[{"post_id": 63644, "ts": "202 [{"post_id": 63644, "ts": "2026-09-07T15:51:20Z", "hours": 0.3103, "text": "ShitOS’ Code is shit too!"}]...
|
Title: ShitOS by @StupendousMaker | Stardance
Dev Title: ShitOS by @StupendousMaker | Stardance
Devlogs:
ShitOS’ Code is shit too!
Ships:
So this is a web based os called ShitOS. It doesn’t have any purpose except helping me learn styling in html. I don’t even know who would use it and what would they even use it for????...
|
1793130838.0242136
|
1793217238.0242136
|
|
8100
|
Crawssembly by @The_Craw | Stardance
|
The_Craw
|
3
|
310.71
|
5664
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T09:56:51Z", "hours": 137.0, "multiplier": 19.59, "payout": 2622, "blessing": "neutral", "text": "CRAWSSEMBLY - New and Improved! “Programming languages are a lie!” This is Crawssembly, the number 1 project on all of stardance! It’s a project that’s been in production for over a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly. What is new? INTERNET SOCKETS! CRAWOS COMMAND LINES! DYNAMIC LABEL JUMPING! IMPROVED DEVICES! DEDICATED PACKAGE SHARING WEBSITE! AND MORE! Check it out for yourself! (Shipped early due to Fraud Squad limitations, Crawssembly is too powerful for Hack Club)", "repo": "https://github.com/Jonah-Crawford/Crawssembly", "demo": "https://crawssembly.ultimatecraw.xyz/"}, {"ship_num": 2, "ts": "2026-07-02T17:49:35Z", "hours": 33.0, "multiplier": 19.65, "payout": 633, "blessing": "neutral", "text": "Crawssembly v1.1.0 ready to ship! “Programming languages are a lie!” This is Crawssembly, a project that’s been in production for almost a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly.", "repo": "https://github.com/Jonah-Crawford/Crawssembly", "demo": "https://crawssembly.ultimatecraw.xyz/"}, {"ship_num": 3, "ts": "2026-06-26T21:15:26Z", "hours": 134.0, "multiplier": 19.78, "payout": 2409, "blessing": "neutral", "text": "Crawssembly: The beginner’s gateway to low-level thinking. \"Programming languages are a lie!\" This is Crawssembly, a project that’s been in production for almost a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly.", "repo": "https://github.com/Jonah-Crawford/Crawssembly", "demo": "https://crawssembly.ultimatecraw.xyz/"}]...
|
[{"post_id": 79047, "ts": "202 [{"post_id": 79047, "ts": "2026-10-12T14:17:02Z", "hours": 5.8211, "text": "idk where these extra hours are coming from, but as long as I don’t ship them, they won’t count towards stardust so I’ll be fine. In the meantime, enjoy craw slop"}, {"post_id": 73135, "ts": "2026-09-24T13:36:27Z", "hours": 0.8872, "text": "It has come to my attention that not everyone who has followed Crawssembly has starred it on GitHub! Please, if you like my project, star it on GitHub at https://github.com/Jonah-Crawford/Crawssembly Thank you."}, {"post_id": 62476, "ts": "2026-09-05T20:43:32Z", "hours": 1.1861, "text": "I’m back! Fraud Squad unbanned me so WE are all having a party at my house Although I can’t use nano apparently anymore… so Crawssembly will be having it’s final ship very very soon"}, {"post_id": 53379, "ts": "2026-08-23T22:12:14Z", "hours": 4.7478, "text": "I’ve been doing much more testing and implementing the network device. Specifically testing the following commands: io net ip , io net addr , io net connect , io net socket , io net port , io net listen , io net accept , io net send , io net protocol , io net block , and io net recv ."}, {"post_id": 52283, "ts": "2026-08-22T12:07:09Z", "hours": 0.5569, "text": "HTTP requests working 🔥 ts is so peak icl"}, {"post_id": 51913, "ts": "2026-08-21T20:28:29Z", "hours": 4.2456, "text": "I’VE ACTUALLY DONE IT 🔥 Networking is now officially part of Crawssembly. Alpha tests on localhost have all passed"}, {"post_id": 51556, "ts": "2026-08-21T10:23:09Z", "hours": 0.3189, "text": "I’ve brought run back from the dead. You can now use run rXX to run a binary value inside the input register as a Crawssembly instruction"}, {"post_id": 51201, "ts": "2026-08-20T18:32:01Z", "hours": 0.4944, "text": "stardance"}, {"post_id": 50613, "ts": "2026-08-19T20:41:05Z", "hours": 1.6864, "text": "I’m finally getting somewhere with the editor, however I’m now having issues with character deletion, and adding characters inside empty newlines"}, {"post_id": 49579, "ts": "2026-08-18T13:50:02Z", "hours": 4.3281, "text": "Still no clue why characters aren’t being saved to memory in my free heap block Slow day today fr"}, {"post_id": 48745, "ts": "2026-08-17T08:45:08Z", "hours": 2.36, "text": "For some reason, I’ve been banned on slack. I don’t know why, since no one will tell me. This is not good news, but luckily it doesn’t seem to be a stardance-wide ban, so I can still do the hackathon."}, {"post_id": 48355, "ts": "2026-08-16T17:45:02Z", "hours": 8.0639, "text": "Lots of work today, sorry for the . I’ve been struggling with the text editor, heap buffers, cursor allocation, character addresses, etc etc… ad infinitum. However, I’m getting close. Rendering is outputting something, although I don’t know why typing doesn’t seem to add anything…"}, {"post_id": 47504, "ts": "2026-08-15T13:39:53Z", "hours": 4.2456, "text": "I’ve added io keyboard mod to create a bitfield of modification key presses for the keyboard device, so now keys like CTRL and TAB can be handled, which lays the foundation for my next project which is making a basic file editor in casm"}, {"post_id": 46783, "ts": "2026-08-14T09:10:12Z", "hours": 4.3825, "text": "Sorry for the but it’s been a hectic couple of days. I got into University! I’ve also been busy taking a look at a CGOL implementation, truly amazing stuff! Go check it out: https://github.com/srxcode/game-of-life-crawssembly"}, {"post_id": 45634, "ts": "2026-08-12T08:01:02Z", "hours": 1.1425, "text": "I’ve separated the old sleep command into sleepms for millisecond waits and sleepus for microsecond waits. Although, microsecond precision is highly dependent on the OS, so it won’t be as accurate as sleepms for smaller values (Say, n<50)"}, {"post_id": 45230, "ts": "2026-08-11T15:52:21Z", "hours": 1.3411, "text": "I’ve merged the new fgo rules to the project, so now fgo points to labels similar to jmp , but fgo 0 now jumps to the label defined in r01 I was having some issues with using git but I got them sorted"}, {"post_id": 45046, "ts": "2026-08-11T09:08:16Z", "hours": 0.8819, "text": "I’m back from camping! (RIP my 60+ day streak) My plans going forward immediately is improving program counter modifications to allow for higher-level concepts to be bootstrapped onto Crawssembly instruction sets. (Image unrelated)"}, {"post_id": 40794, "ts": "2026-08-04T15:32:01Z", "hours": 1.0728, "text": "I’ve been working with @BetterClient to inprove the program counter and bringing back fgo from casm beta. This is also a reminder that I’ll be OOO until next Monday."}, {"post_id": 40209, "ts": "2026-08-03T16:48:57Z", "hours": 1.4692, "text": "I’ve made publishing packages super easy now, all you need to do is craw init to create the package, and then craw pkg publish . As long as you’re signed into CPM and gh, it’ll just work"}, {"post_id": 40094, "ts": "2026-08-03T14:12:19Z", "hours": 1.1475, "text": "I’ve added Markdown support for CPM packages 🔥"}, {"post_id": 40004, "ts": "2026-08-03T11:00:47Z", "hours": 2.5797, "text": "@imakebloatedcode Thank you for your pr for CPM to include OpenAPI scemata, another great addition from the Craw Systems community Most of my time has been reviewing it and making small edits to include the security auth headers for API keys Official Announcement I’m not going to be online through the 5th August to the 10th August, I’ll be camping for those 5* days in a very low-data spot, and I’m almost certainly not taking my laptop. I might be able to get a tiny amount of code on my phone to keep my streak but certainly not enough to engage in my normal conversation on slack or post devlogs"}, {"post_id": 39500, "ts": "2026-08-02T14:31:42Z", "hours": 1.0703, "text": "Package creation and accounts are now working (theoretically) from the command line 🔥"}, {"post_id": 38989, "ts": "2026-08-01T16:48:04Z", "hours": 2.2369, "text": "The account page is looking better, and it’s survived some user testing 🙏 I need to add some boring stuff though like API key listing and said key management"}, {"post_id": 38863, "ts": "2026-08-01T12:58:59Z", "hours": 3.1425, "text": "I’ve been back working on CPM, focused on user accounts."}, {"post_id": 38130, "ts": "2026-07-31T10:56:08Z", "hours": 1.39, "text": "The Crawssembly community is real 🙏 I’ve been reviewing a PR on the GitHub to improve the multiplication script in the CSL ( std/math/multiply.craw )"}, {"post_id": 37274, "ts": "2026-07-29T21:10:18Z", "hours": 0.7014, "text": "I’ve been messing around with --input tag which seems to mess around a bit in the rust vm, but I think I’m getting closer to the cause"}, {"post_id": 36468, "ts": "2026-07-28T16:32:48Z", "hours": 1.0483, "text": "Hack Club seems to have updated the rules on banner images, claiming it has to be an image of your project working. This is no issue for Crawssembly. The new banner is now the output of one of my programs, creating the banner pixel for pixel. This both compiles with the new rule, as it demonstrates Crawssembly functioning, while maintaining its identity."}, {"post_id": 36310, "ts": "2026-07-28T10:47:11Z", "hours": 2.2539, "text": "I’ve discovered that the input file mechanism is broken, so that’s great. I’ve also been adding more commands to CrawOS"}, {"post_id": 35823, "ts": "2026-07-27T14:42:16Z", "hours": 1.9103, "text": "I’ve been adding some very basic commands, such as exit , help , and clear"}, {"post_id": 34854, "ts": "2026-07-25T21:54:23Z", "hours": 2.7158, "text": "Once you get 1 command working, many more will follow! That’s right, a command line written 100% in Crawssembly code 🔥"}, {"post_id": 34296, "ts": "2026-07-24T21:36:54Z", "hours": 0.505, "text": "icl I’ve not done much today, mostly testing the allocation code and it looks up to spec tbh, not much to say"}, {"post_id": 33496, "ts": "2026-07-23T14:28:32Z", "hours": 1.4308, "text": "Stack allocation and freeing appear to work, but I need to do more testing to prove it"}, {"post_id": 32893, "ts": "2026-07-22T10:59:17Z", "hours": 4.3922, "text": "I’m still working on stack allocation, the complex parts are walking the stack properly to get the headers, along with making sure I don’t corrupt any data. The image attached shows the maximum heap block size in blue, with the data taken up by the header of that block in red (top corner)"}, {"post_id": 32353, "ts": "2026-07-21T13:52:27Z", "hours": 1.4989, "text": "I’m going ahead with this schema for heap blocks, the reserved bits can be used for extra features that I might want to add in later versions"}, {"post_id": 32254, "ts": "2026-07-21T09:37:22Z", "hours": 12.9831, "text": "Staff, please remove the time on this devlog, I accidentally left nano open all night. Sorry!"}, {"post_id": 31982, "ts": "2026-07-20T20:21:19Z", "hours": 1.13, "text": "Reading user input isn’t that easy compared to a language like Python, where you can just do input() . Each character has to be processed as soon as the keyboard records a press, and then saved to memory. I’m currently working on a block method that takes every 16 character you type, and allocates a small block on the heap for each press. This is going to be used for my big project"}, {"post_id": 31817, "ts": "2026-07-20T14:36:29Z", "hours": 1.2011, "text": "I’ve decided to add a heap library to complement the stack library. Doing this should make my next idea easier"}, {"post_id": 31759, "ts": "2026-07-20T12:24:31Z", "hours": 0.7053, "text": "Please also star my actual github page! It’s more important than stardance followers 😤😤 https://github.com/Jonah-Crawford/Crawssembly"}, {"post_id": 31691, "ts": "2026-07-20T09:37:05Z", "hours": 1.4242, "text": "Since IEEE 754 single precision can encode much larger numbers than a standard 32-bit binary number, you can use the library to approximate much larger values for computation"}, {"post_id": 31320, "ts": "2026-07-19T16:50:46Z", "hours": 3.3533, "text": "I’ve been working on a IEEE 754 single precision 32-bit floating point number library for CSL, it turns out it’s more difficult than I expected!"}, {"post_id": 31143, "ts": "2026-07-19T09:51:00Z", "hours": 0.7642, "text": "I realised that my documentation had some issues and unfinished sections, so I touched them up"}, {"post_id": 30931, "ts": "2026-07-18T22:37:22Z", "hours": 0.9317, "text": "Added a simple stack library for function calls and other uses, along with some smaller graphics programs such as screen/rectangle_fill.craw This is also my official announcement that I’ll be doing much less programming, due to summer holiday starting now. This is because I can’t program during family time, camping weeks, and other events. In addition, I have University after summer holidays, so this reduced productivity will continue throughout the rest of Stardance. Thank you all for making Crawssembly the number 1 project on stardance!"}, {"post_id": 29811, "ts": "2026-07-16T23:06:00Z", "hours": 0.5503, "text": "67 followers"}, {"post_id": 29415, "ts": "2026-07-16T11:01:49Z", "hours": 0.8972, "text": "I’m currently focusing on adding new functions to the screen library, such as rectangles, using the line program as a primitive"}, {"post_id": 28832, "ts": "2026-07-15T10:34:49Z", "hours": 2.9103, "text": "The initial line algo only works for the 0-octant, but now my new and improved version works for every line angle!"}, {"post_id": 27711, "ts": "2026-07-13T14:37:24Z", "hours": 1.2111, "text": "We have proper line segments working 🔥"}, {"post_id": 27105, "ts": "2026-07-12T11:30:09Z", "hours": 2.2058, "text": "I’ve been adding line functions at the moment, to be honest it’s harder than the circle! Getting the angles right is the hardest"}, {"post_id": 26637, "ts": "2026-07-11T15:56:48Z", "hours": 1.8617, "text": "Circle made 🔥"}, {"post_id": 26568, "ts": "2026-07-11T14:04:16Z", "hours": 2.7844, "text": "Taking a break from CPM to work on some graphics libraries, drawing lines, circles etc…"}, {"post_id": 25954, "ts": "2026-07-10T14:03:02Z", "hours": 2.3158, "text": "Accounts are going to be tricky, more front-end stuff and some complex security back-end is going to make this tricky"}, {"post_id": 25201, "ts": "2026-07-09T09:27:17Z", "hours": 0.7178, "text": "Thinking about user login for the CPM, might implement this soon"}, {"post_id": 24627, "ts": "2026-07-08T10:43:46Z", "hours": 0.66, "text": "Thanks to @Keyboard1000n17 for making the CPM website!"}, {"post_id": 24593, "ts": "2026-07-08T09:25:31Z", "hours": 0.6333, "text": "I won’t be as active over the next couple of days so don’t expect many updates"}, {"post_id": 24123, "ts": "2026-07-07T14:18:16Z", "hours": 3.4186, "text": "I’m not good at css, but I’m trying to make the CPM website simple and easy to use. It’ll take a while but it’s slowly coming together"}, {"post_id": 23750, "ts": "2026-07-06T21:31:52Z", "hours": 0.2561, "text": "It turns out I was way closer than I thought! Publishing your own Crawssembly projects is now out of alpha, into beta (Because only I have an API key atm!)"}, {"post_id": 23730, "ts": "2026-07-06T20:59:27Z", "hours": 1.5481, "text": "Still not too much progress on CPM, but I’m still confident I can get it working"}, {"post_id": 23656, "ts": "2026-07-06T19:20:07Z", "hours": 4.075, "text": "CPM is being difficult, I’ve gone through multiple iterations now of the craw pkg publish command, but I feel like I’m getting close."}, {"post_id": 23514, "ts": "2026-07-06T15:13:35Z", "hours": 1.2278, "text": "I’ve been fighting with my server for a while now, the connection keeps on interrupting. As votes are currently coming in for Crawssembly v1.1.0, I suspect my score will be lower than expected due to the demo and doc websites coming offline randomly."}, {"post_id": 23449, "ts": "2026-07-06T13:09:35Z", "hours": 2.1969, "text": "My issues at the moment are about getting a command, craw pkg pack to create a CPM ready tarball of your project from the command line. That and my server is having a couple of internet issues at the moment which are hindering my progress. This devlog is also an official announcement that I won’t be as active as normal over the next week. I have family coming around so my time programming will be limited. In addition, when summer holiday starts this will continue, which is why most of my time programming is in the June and early July, the rest of stardance will have fewer updates and less time spent on casm."}, {"post_id": 23401, "ts": "2026-07-06T10:39:43Z", "hours": 2.2703, "text": "CPM officially works! The pipeline of Crawssembly Source -> Tarball -> Github -> CPM -> craw pkg install -> executestd functions!"}, {"post_id": 22937, "ts": "2026-07-05T16:19:57Z", "hours": 0.6922, "text": "I forgot to add on the hackatime projects of my time spent on the CPM and tests, mb"}, {"post_id": 22902, "ts": "2026-07-05T15:21:06Z", "hours": 4.3764, "text": "I’ve registered the Crawssembly Package Manager website, some SQLite problems caused some issues but I’m getting there."}, {"post_id": 22103, "ts": "2026-07-04T11:47:12Z", "hours": 0.8486, "text": "I’ve been having some internet issues with my server recently, so my productivity has slowed. However I’m at the final testing stages of linking github repos to get craw install <package> to work. The test is done on a simple repo but it should be enough to see if it works"}, {"post_id": 22080, "ts": "2026-07-04T10:27:02Z", "hours": 1.33, "text": "Compiling from a local tarball works! I’ll be working on the database soon so users can search and download. My plan is that the program is stored as a github repo, similar to cargo ."}, {"post_id": 21459, "ts": "2026-07-03T12:44:46Z", "hours": 2.6692, "text": "Package manager is coming along… slowly. I’m still working on getting a local package to install into the global executestd file inside the home folder, but it’s taking it’s time!"}, {"post_id": 21375, "ts": "2026-07-03T08:43:14Z", "hours": 2.1081, "text": "v1.2.0 is already underway! I’ve spent some time constructing a cargo crate for Crawssembly to allow other rust programs to use Crawssembly’s logic. So now YOU can add Crawssembly to your programs!"}, {"post_id": 20935, "ts": "2026-07-02T17:47:58Z", "hours": 4.0467, "text": "After helping figure out the Stardance bug with projects, Crawssembly v1.1.0 is ready to ship!"}, {"post_id": 20147, "ts": "2026-07-01T18:08:54Z", "hours": 1.3117, "text": "I’ve added the compare branch, for number checks. == , != , > , >= , < , and <= all included"}, {"post_id": 20079, "ts": "2026-07-01T16:25:10Z", "hours": 1.3397, "text": "I’ve added more CSL files, such as math/power.craw , math/abs.craw , and math/modulo.craw"}, {"post_id": 19299, "ts": "2026-06-30T15:54:10Z", "hours": 1.4808, "text": "Basic multiplication and division are the first to enter the CSL! I focused on making them memory efficient rather than time efficient, because using fewer registers makes it easier for beginners to use them in normal programs. And because Crawssembly is very very quick (Almost C level speeds) a couple extra thousand ticks won’t be missed for these first programs"}, {"post_id": 19219, "ts": "2026-06-30T14:16:39Z", "hours": 1.9419, "text": "File execution is now working! You can insert programs using execute path/to/program.craw , this leads to the Crawssembly Standard Library, a collection of useful programs that can be accessed using executestd program.craw , such as multiply or division code."}, {"post_id": 19106, "ts": "2026-06-30T10:40:13Z", "hours": 1.1736, "text": "I’m going to confess here, I was a bit lazy. I decided that, because I could create the time program, I rewarded myself by adding a native ISO 8601 time output command io text iso rXX . Elegant? Yes. Low-Level? Not as much as I would like. But the choice was either make a single line of code to simplify programs like this massively, or wire in a tediously made, messy 350 line program that doesn’t fully account for the 400 leap year rule or leap seconds. Hmm… TLDR; I caved to simplicity. But CrawFS file listing from boot now display file genesis time!"}, {"post_id": 18658, "ts": "2026-06-29T20:58:53Z", "hours": 1.0361, "text": "The time program finally works! I wrapped it in a loop so it reloads every 200ms to make a real-time clock. Soon I’ll port it to the CrawFS system to read file creation dates"}, {"post_id": 18592, "ts": "2026-06-29T19:40:11Z", "hours": 4.485, "text": "It turns out that time resolution is much harder than I thought! It’s taken me a while but I’ve got the program working for CCYY-MM-DD"}, {"post_id": 18335, "ts": "2026-06-29T13:20:35Z", "hours": 3.6708, "text": "CrawFS reading is almost done, but I need to program a way to take a raw Unix timestamp and convert it into a nice iso 8601 format ( CCYY-MM-DD HH:MM:SS ) for the ‘Time created’ field"}, {"post_id": 17965, "ts": "2026-06-28T22:33:13Z", "hours": 1.9408, "text": "Reading a specific file is clearly much harder than reading the boot sector. It turns out that parsing user input is a devious task itself!"}, {"post_id": 17863, "ts": "2026-06-28T20:03:06Z", "hours": 6.4758, "text": "Did someone say boot sectors? That’s right, Crawssembly can now read CrawFS boot sectors and output the file table data! This took a surprisingly long time, as the binary boot sector is very delicate."}, {"post_id": 17529, "ts": "2026-06-28T10:56:52Z", "hours": 2.0917, "text": "I’ve been working on a basic file system, CrawFS , used as a stepping stone towards real ones like FAT16 , FAT32 , and NTFS ."}, {"post_id": 16918, "ts": "2026-06-27T14:08:58Z", "hours": 1.6475, "text": "No time to waste after v1.0.0 is released! I’ve added raw disk sector editing for Crawssembly; an opt-in way of reading and writing to your real disk, rather than a VM. ! THIS COULD DESTROY YOUR COMPUTER ! So only do it if you know what you’re doing, as a single bit change will probably brick your entire machine if you use the --raw-disk option"}, {"post_id": 16497, "ts": "2026-06-26T20:53:01Z", "hours": 0.2767, "text": "The final updates have been made, the github is ready to ship!"}, {"post_id": 16387, "ts": "2026-06-26T17:43:02Z", "hours": 0.4742, "text": "THIS IS IT! The moment I’ve been waiting for almost a year, the first stable release of Crawssembly v1.0.0 ! And what fortune that I get to share it with you people on Stardance!"}, {"post_id": 16247, "ts": "2026-06-26T11:58:09Z", "hours": 2.7383, "text": "Crawssembly is soon to be shipped on version 1.0.0 ! A massive milestone for a project I started ~11 months ago. The raffle discs have been burned, and final preparations are underway for release."}, {"post_id": 15925, "ts": "2026-06-25T21:28:53Z", "hours": 2.8969, "text": "Basic syntax highlighting for nano ! Simply run craw install-nano to gain access to these beautiful new colours when editing .craw files."}, {"post_id": 15761, "ts": "2026-06-25T17:09:48Z", "hours": 3.3403, "text": "RAFFLE UPDATE! The 3 discs have been completed. Soon, Crawssembly will be shipped on it’s first release! Remember to follow Crawssembly before the 1st July 00:00 UTC for your chance to win one of these beautiful pieces of computing history!"}, {"post_id": 15622, "ts": "2026-06-25T12:32:33Z", "hours": 2.0561, "text": "I’ve been working on fixing up the activities in the README.md, and providing possible solutions for each. The image below is a possible output of the activity “Smiling Screen”"}, {"post_id": 15555, "ts": "2026-06-25T09:06:54Z", "hours": 0.6672, "text": "Adding the last features for pong was quite simple, making the computer lag behind a random amount utilises the current millisecond UNIX timestamp, with the least significant 2 bits being used as the ‘reaction time’, along with a per-frame flag to increase this reaction time to solve for repeating loops. The scoring system at this point is just the number of pixels in the top corner, unlike the real pong which used numbers. Perhaps for a later version?"}, {"post_id": 15542, "ts": "2026-06-25T08:21:44Z", "hours": 6.6775, "text": "PONG is very almost finished, all that needs to be done is to fine-tune the computer movement and finish displaying the score."}, {"post_id": 15086, "ts": "2026-06-24T14:51:07Z", "hours": 1.7008, "text": "I’m now moving onto some game examples. I’m working on a basic version of the popular game PONG, the hardest part is going to be the graphics syncing up with the mathematical logic"}, {"post_id": 14404, "ts": "2026-06-23T14:59:26Z", "hours": 1.9525, "text": "The structure of the compiler is complete, but getting it to work is another beast of debugging. I think this is the first program of its kind; the first program where no one, not even me, can understand it fully. A true milestone for Crawssembly"}, {"post_id": 14331, "ts": "2026-06-23T12:57:06Z", "hours": 3.1389, "text": "Integer parsing requires multiplication by 10, which in Base-10 is easy as you can just add a zero at the end. But in binary you can’t do this, as that would be multiplying by 2. So you need to get a bit more creative when multiplying by a known amount in binary. The code below shows how a number, ‘abc’ can be expressed as 100a + 10b + c. This is real code from my Crawssembly compiler written in Crawssembly."}, {"post_id": 13936, "ts": "2026-06-22T21:21:17Z", "hours": 2.0808, "text": "I’ve done a little experiment with a reduced branch of Crawssembly made for tiny ISA’s, with instructions only a single byte wide! An image of what the CPU’s core might look like is shown below."}, {"post_id": 13603, "ts": "2026-06-22T09:14:02Z", "hours": 5.5197, "text": "The trie is complete! Although I’ve still much to do for the compiler, such as per-character parsing, storage of label elements, calculation of register codes, etc…"}, {"post_id": 12777, "ts": "2026-06-20T21:47:41Z", "hours": 1.7731, "text": "7/24 trie branches have been added to the compiler, totalling just under 1000 lines of Crawssembly code, the longest hand-written .craw program ever made!"}, {"post_id": 12486, "ts": "2026-06-20T12:09:00Z", "hours": 6.3061, "text": "Adding branches still takes a while, but it’s much more efficient than testing every character for every instruction. So far I’ve mapped 17 out of ~64 command strings."}, {"post_id": 12022, "ts": "2026-06-19T16:40:42Z", "hours": 7.6139, "text": "I’ll be taking a break over the weekend, as I’ve just completed my final exams and I’m celebrating. I’ll be back proper on Monday. Today I worked on creating a trie for Crawssembly’s commands, which can be used to increase efficiency in my compiler to parse instructions faster. Rather than checking every char for every instruction like cal add -65 r01 ; if r01 = 65, this will be 0 ifz 10 ; continue if 0 cal add -70 r02 ; if r02 = 65, this will be 0 ifz 20 ; continue if 0 etc... I can split each branch into separate instructions, reducing line count and time-to-compile"}, {"post_id": 11550, "ts": "2026-06-18T20:54:02Z", "hours": 1.8203, "text": "Basic structures are coming together for the compiler"}, {"post_id": 11465, "ts": "2026-06-18T18:55:47Z", "hours": 3.2833, "text": "The C emitter function now works to the same standard as Crawssembly Online! In other news, I’m starting to write a Crawssembly compiler in Crawssembly ! This is a big step and proves that Crawssembly’s language is comprehensive enough to take on this task."}, {"post_id": 11201, "ts": "2026-06-18T10:23:03Z", "hours": 4.2258, "text": "I’m working on a way to convert Crawssembly into native ASM language, by writing to a C file and compiling that output."}, {"post_id": 9958, "ts": "2026-06-16T14:20:14Z", "hours": 0.7653, "text": "ATTENTION! The moment has arrived; The CRAWSSEMBLY Raffle! Get the chance to win a LIMITED-EDITION installer and collectable Crawssembly Disc! The disc contains the official compiler, virtual machine, and documentation. Also included are un-released legacy files from development. Simply follow Crawssembly on Stardance to enter your name! Shipping may vary depending on the UK Postal service. There are 3 physical First Edition discs available worldwide. If you’re outside the UK, I may ask you to contribute towards postage if shipping costs are high. The 3 winners will be announced on the 1st of July! So get your entry in before 23:59 UTC 30th June! Don’t miss this opportunity! Follow Crawssembly today and support open-source learning!"}, {"post_id": 9903, "ts": "2026-06-16T12:33:41Z", "hours": 0.4594, "text": "I want to thank the Stardance devs for my Super Star tag! Peak staff fr"}, {"post_id": 9210, "ts": "2026-06-15T13:50:37Z", "hours": 1.9831, "text": "Random number generator has been added to the example group, I used XOR and bit shifts with the new command io time milli , which extracts the current UNIX timestamp in milliseconds, as the seed. Basic, but quite random from a human perspective."}, {"post_id": 9153, "ts": "2026-06-15T10:18:06Z", "hours": 5.0008, "text": "I’ve been working on some examples, the biggest one being a simple calculator."}, {"post_id": 8769, "ts": "2026-06-14T16:05:49Z", "hours": 2.1869, "text": "Graphics bug fixed! Crawssembly for macOS is officially working!"}, {"post_id": 8694, "ts": "2026-06-14T13:21:09Z", "hours": 0.2944, "text": "File input now works for macOS Crawssembly! Run craw myprogram.craw --file myinputs.file to run! (The image is from Linux, not from my Mac because it’s too old for me to log in to stardance and post a ss from it, but I can assure you it works!)"}, {"post_id": 8685, "ts": "2026-06-14T13:00:13Z", "hours": 1.8931, "text": "macOS can now do everything windows can except use the speakers, scan-line free graphics, and access files. These will be the largest source of my time."}, {"post_id": 8634, "ts": "2026-06-14T11:02:36Z", "hours": 1.2475, "text": "I’m currently working on getting macOS support running. At the moment, macOS is only confirmed to work to the same level as Crawssembly Online. Hopefully I can get it to the same standard as Linux and Dos systems!"}, {"post_id": 8214, "ts": "2026-06-13T17:40:18Z", "hours": 1.2083, "text": "My respect to real CPU designers, this is tricky work! The most difficult thing is working with the 256 different registers, that’s lots of wiring to get done."}, {"post_id": 8022, "ts": "2026-06-13T11:56:22Z", "hours": 0.4569, "text": "Dedicated documentation website created, and the new demo is live at https://crawssembly.ultimatecraw.xyz/"}, {"post_id": 8011, "ts": "2026-06-13T11:23:53Z", "hours": 0.9736, "text": "Demo and README in working order, for real this time! The final things to do before shipping: Full macOS functionality: Maybe Add documentation to demo: Yes Add syntax highlighting to demo: Maybe Final Cleanup: Yes"}, {"post_id": 7748, "ts": "2026-06-12T22:53:22Z", "hours": 0.7378, "text": "I don’t usually work with frontend, so the demo won’t look anywhere near as nice as some of the other projects on Stardance, but as long as it’s usable then I’m happy."}, {"post_id": 7722, "ts": "2026-06-12T21:43:33Z", "hours": 0.8628, "text": "Crawssembly demo now working! Luckily it wasn’t as hard as I expected. I’ve tied it to an old URL for now, and it’s basic, but it works. https://demo.ultimatecraw.xyz/"}, {"post_id": 7681, "ts": "2026-06-12T20:38:11Z", "hours": 4.555, "text": "README.md Complete! The final steps is creating the demo! (And maybe getting MacOS working)"}, {"post_id": 7517, "ts": "2026-06-12T15:35:42Z", "hours": 2.0622, "text": "Many thanks to Koy Camerini-Yachdav , who tested Crawssembly on Mac OS! Their efforts go towards helping more people understand how computers actually work. ❤️ In other news, Crawssembly is soon ready for the first official release. I estimate <2 weeks before a ship fully working on both Linux and Windows systems will be made!"}, {"post_id": 7381, "ts": "2026-06-12T09:39:51Z", "hours": 0.5978, "text": "File inputs are finally ready, I think craw now has all it needs for the first release. Exciting times!"}, {"post_id": 7124, "ts": "2026-06-11T22:07:29Z", "hours": 2.2083, "text": "README.md now has documentation about all commands that will be in the first release. I’m yet to make the live demo and the documentation about machine codes though!"}, {"post_id": 7034, "ts": "2026-06-11T19:54:59Z", "hours": 3.0742, "text": "Crawssembly Programs can now be force-quit by pressing CRTL+C. I should have added this long ago, but I added it in the end."}, {"post_id": 6771, "ts": "2026-06-11T10:45:07Z", "hours": 5.2019, "text": "I’ve been doing some user testing, and have made changes to the documentation and program, such as adding craw myfile.craw --dump-decoded and craw myfile.craw --tui commands easy to use and run."}, {"post_id": 6180, "ts": "2026-06-10T11:48:41Z", "hours": 21.6656, "text": "Dynamic graphic size achieved! You can now set the screen size of the Crawssembly program by running craw myfile.craw --screen WIDTHxHEIGHT using the –screen argument."}, {"post_id": 5582, "ts": "2026-06-09T13:09:25Z", "hours": 4.1789, "text": "README.md now contains enough information about Crawssembly to make it Turing Complete. The rest involves storage, input devices, and output service commands."}, {"post_id": 5471, "ts": "2026-06-09T08:19:39Z", "hours": 0.3619, "text": "Crawssembly is officially clear for Windows & Linux OS releases! Mac OS support will hopefully come soon. There may be some linux distros that are special and cause some weird and wonderful problems, but for the generic versions (Think Ubuntu) I’m confident that Crawssembly is compatible."}, {"post_id": 5456, "ts": "2026-06-09T07:45:58Z", "hours": 4.5339, "text": "Never understood what binary actually is? Why is it important, and why are binary skills becoming less important? All this, and more, is revealed in the Crawssembly Project; the ultimate guide to learning the fundamentals of real computer design, and assembly-like languages."}, {"post_id": 4930, "ts": "2026-06-08T15:11:03Z", "hours": 3.2828, "text": "More work done on the docs today. I’m assuming near-zero knowledge about computing to allow all to access the Crawssembly Project"}, {"post_id": 4319, "ts": "2026-06-07T16:05:58Z", "hours": 3.4303, "text": "Most of my efforts today are going to the README.md file, helping beginners get their heads around Assembly-like languages"}, {"post_id": 3567, "ts": "2026-06-06T15:47:13Z", "hours": 1.5453, "text": "Currently working on adding logical branching (‘if’ statements) to CRISP, my high-level language to compile into Crawssembly"}, {"post_id": 2869, "ts": "2026-06-05T18:56:50Z", "hours": 0.5139, "text": "Crawssembly - Initial Post"}]...
|
Title: Crawssembly by @The_Craw | Stardance
Devlo Title: Crawssembly by @The_Craw | Stardance
Devlogs:
Crawssembly - Initial Post
Currently working on adding logical branching (‘if’ statements) to CRISP, my high-level language to compile into Crawssembly
Most of my efforts today are going to the README.md file, helping beginners get their heads around Assembly-like languages
More work done on the docs today. I’m assuming near-zero knowledge about computing to allow all to access the Crawssembly Project
Never understood what binary actually is? Why is it important, and why are binary skills becoming less important? All this, and more, is revealed in the Crawssembly Project; the ultimate guide to learning the fundamentals of real computer design, and assembly-like languages.
Crawssembly is officially clear for Windows & Linux OS releases! Mac OS support will hopefully come soon. There may be some linux distros that are special and cause some weird and wonderful problems, but for the generic versions (Think Ubuntu) I’m confident that Crawssembly is compatible.
README.md now contains enough information about Crawssembly to make it Turing Complete. The rest involves storage, input devices, and output service commands.
Dynamic graphic size achieved! You can now set the screen size of the Crawssembly program by running craw myfile.craw --screen WIDTHxHEIGHT using the –screen argument.
I’ve been doing some user testing, and have made changes to the documentation and program, such as adding craw myfile.craw --dump-decoded and craw myfile.craw --tui commands easy to use and run.
Crawssembly Programs can now be force-quit by pressing CRTL+C. I should have added this long ago, but I added it in the end.
README.md now has documentation about all commands that will be in the first release. I’m yet to make the live demo and the documentation about machine codes though!
File inputs are finally ready, I think craw now has all it needs for the first release. Exciting times!
Many thanks to Koy Camerini-Yachdav , who tested Crawssembly on Mac OS! Their efforts go towards helping more people understand how computers actually work. ❤️ In other news, Crawssembly is soon ready for the first official release. I estimate <2 weeks before a ship fully working on both Linux and Windows systems will be made!
README.md Complete! The final steps is creating the demo! (And maybe getting MacOS working)
Crawssembly demo now working! Luckily it wasn’t as hard as I expected. I’ve tied it to an old URL for now, and it’s basic, but it works. https://demo.ultimatecraw.xyz/
I don’t usually work with frontend, so the demo won’t look anywhere near as nice as some of the other projects on Stardance, but as long as it’s usable then I’m happy.
Demo and README in working order, for real this time! The final things to do before shipping: Full macOS functionality: Maybe Add documentation to demo: Yes Add syntax highlighting to demo: Maybe Final Cleanup: Yes
Dedicated documentation website created, and the new demo is live at https://crawssembly.ultimatecraw.xyz/
My respect to real CPU designers, this is tricky work! The most difficult thing is working with the 256 different registers, that’s lots of wiring to get done.
I’m currently working on getting macOS support running. At the moment, macOS is only confirmed to work to the same level as Crawssembly Online. Hopefully I can get it to the same standard as Linux and Dos systems!
macOS can now do everything windows can except use the speakers, scan-line free graphics, and access files. These will be the largest source of my time.
File input now works for macOS Crawssembly! Run craw myprogram.craw --file myinputs.file to run! (The image is from Linux, not from my Mac because it’s too old for me to log in to stardance and post a ss from it, but I can assure you it works!)
Graphics bug fixed! Crawssembly for macOS is officially working!
I’ve been working on some examples, the biggest one being a simple calculator.
Random number generator has been added to the example group, I used XOR and bit shifts with the new command io time milli , which extracts the current UNIX timestamp in milliseconds, as the seed. Basic, but quite random from a human perspective.
I want to thank the Stardance devs for my Super Star tag! Peak staff fr
ATTENTION! The moment has arrived; The CRAWSSEMBLY Raffle! Get the chance to win a LIMITED-EDITION installer and collectable Crawssembly Disc! The disc contains the official compiler, virtual machine, and documentation. Also included are un-released legacy files from development. Simply follow Crawssembly on Stardance to enter your name! Shipping may vary depending on the UK Postal service. There are 3 physical First Edition discs available worldwide. If you’re outside the UK, I may ask you to contribute towards postage if shipping costs are high. The 3 winners will be announced on the 1st of July! So get your entry in before 23:59 UTC 30th June! Don’t miss this opportunity! Follow Crawssembly today and support open-source learning!
I’m working on a way to convert Crawssembly into native ASM language, by writing to a C file and compiling that output.
The C emitter function now works to the same standard as Crawssembly Online! In other news, I’m starting to write a Crawssembly compiler in Crawssembly ! This is a big step and proves that Crawssembly’s language is comprehensive enough to take on this task.
Basic structures are coming together for the compiler
I’ll be taking a break over the weekend, as I’ve just completed my final exams and I’m celebrating. I’ll be back proper on Monday. Today I worked on creating a trie for Crawssembly’s commands, which can be used to increase efficiency in my compiler to parse instructions faster. Rather than checking every char for every instruction like cal add -65 r01 ; if r01 = 65, this will be 0 ifz 10 ; continue if 0 cal add -70 r02 ; if r02 = 65, this will be 0 ifz 20 ; continue if 0 etc... I can split each branch into separate instructions, reducing line count and time-to-compile
Adding branches still takes a while, but it’s much more efficient than testing every character for every instruction. So far I’ve mapped 17 out of ~64 command strings.
7/24 trie branches have been added to the compiler, totalling just under 1000 lines of Crawssembly code, the longest hand-written .craw program ever made!
The trie is complete! Although I’ve still much to do for the compiler, such as per-character parsing, storage of label elements, calculation of register codes, etc…
I’ve done a little experiment with a reduced branch of Crawssembly made for tiny ISA’s, with instructions only a single byte wide! An image of what the CPU’s core might look like is shown below.
Integer parsing requires multiplication by 10, which in Base-10 is easy as you can just add a zero at the end. But in binary you can’t do this, as that would be multiplying by 2. So you need to get a bit more creative when multiplying by a known amount in binary. The code below shows how a number, ‘abc’ can be expressed as 100a + 10b + c. This is real code from my Crawssembly compiler written in Crawssembly.
The structure of the compiler is complete, but getting it to work is another beast of debugging. I think this is the first program of its kind; the first program where no one, not even me, can understand it fully. A true milestone for Crawssembly
I’m now moving onto some game examples. I’m working on a basic version of the popular game PONG, the hardest part is going to be the graphics syncing up with the mathematical logic
PONG is very almost finished, all that needs to be done is to fine-tune the computer movement and finish displaying the score.
Adding the last features for pong was quite simple, making the computer lag behind a random amount utilises the current millisecond UNIX timestamp, with the least significant 2 bits being used as the ‘reaction time’, along with a per-frame flag to increase this reaction time to solve for repeating loops. The scoring system at this point is just the number of pixels in the top corner, unlike the real pong which used numbers. Perhaps for a later version?
I’ve been working on fixing up the activities in the README.md, and providing possible solutions for each. The image below is a possible output of the activity “Smiling Screen”
RAFFLE UPDATE! The 3 discs have been completed. Soon, Crawssembly will be shipped on it’s first release! Remember to follow Crawssembly before the 1st July 00:00 UTC for your chance to win one of these beautiful pieces of computing history!
Basic syntax highlighting for nano ! Simply run craw install-nano to gain access to these beautiful new colours when editing .craw files.
Crawssembly is soon to be shipped on version 1.0.0 ! A massive milestone for a project I started ~11 months ago. The raffle discs have been burned, and final preparations are underway for release.
THIS IS IT! The moment I’ve been waiting for almost a year, the first stable release of Crawssembly v1.0.0 ! And what fortune that I get to share it with you people on Stardance!
The final updates have been made, the github is ready to ship!
No time to waste after v1.0.0 is released! I’ve added raw disk sector editing for Crawssembly; an opt-in way of reading and writing to your real disk, rather than a VM. ! THIS COULD DESTROY YOUR COMPUTER ! So only do it if you know what you’re doing, as a single bit change will probably brick your entire machine if you use the --raw-disk option
I’ve been working on a basic file system, CrawFS , used as a stepping stone towards real ones like FAT16 , FAT32 , and NTFS .
Did someone say boot sectors? That’s right, Crawssembly can now read CrawFS boot sectors and output the file table data! This took a surprisingly long time, as the binary boot sector is very delicate.
Reading a specific file is clearly much harder than reading the boot sector. It turns out that parsing user input is a devious task itself!
CrawFS reading is almost done, but I need to program a way to take a raw Unix timestamp and convert it into a nice iso 8601 format ( CCYY-MM-DD HH:MM:SS ) for the ‘Time created’ field
It turns out that time resolution is much harder than I thought! It’s taken me a while but I’ve got the program working for CCYY-MM-DD
The time program finally works! I wrapped it in a loop so it reloads every 200ms to make a real-time clock. Soon I’ll port it to the CrawFS system to read file creation dates
I’m going to confess here, I was a bit lazy. I decided that, because I could create the time program, I rewarded myself by adding a native ISO 8601 time output command io text iso rXX . Elegant? Yes. Low-Level? Not as much as I would like. But the choice was either make a single line of code to simplify programs like this massively, or wire in a tediously made, messy 350 line program that doesn’t fully account for the 400 leap year rule or leap seconds. Hmm… TLDR; I caved to simplicity. But CrawFS file listing from boot now display file genesis time!
File execution is now working! You can insert programs using execute path/to/program.craw , this leads to the Crawssembly Standard Library, a collection of useful programs that can be accessed using executestd program.craw , such as multiply or division code.
Basic multiplication and division are the first to enter the CSL! I focused on making them memory efficient rather than time efficient, because using fewer registers makes it easier for beginners to use them in normal programs. And because Crawssembly is very very quick (Almost C level speeds) a couple extra thousand ticks won’t be missed for these first programs
I’ve added more CSL files, such as math/power.craw , math/abs.craw , and math/modulo.craw
I’ve added the compare branch, for number checks. == , != , > , >= , < , and <= all included
After helping figure out the Stardance bug with projects, Crawssembly v1.1.0 is ready to ship!
v1.2.0 is already underway! I’ve spent some time constructing a cargo crate for Crawssembly to allow other rust programs to use Crawssembly’s logic. So now YOU can add Crawssembly to your programs!
Package manager is coming along… slowly. I’m still working on getting a local package to install into the global executestd file inside the home folder, but it’s taking it’s time!
Compiling from a local tarball works! I’ll be working on the database soon so users can search and download. My plan is that the program is stored as a github repo, similar to cargo .
I’ve been having some internet issues with my server recently, so my productivity has slowed. However I’m at the final testing stages of linking github repos to get craw install <package> to work. The test is done on a simple repo but it should be enough to see if it works
I’ve registered the Crawssembly Package Manager website, some SQLite problems caused some issues but I’m getting there.
I forgot to add on the hackatime projects of my time spent on the CPM and tests, mb
CPM officially works! The pipeline of Crawssembly Source -> Tarball -> Github -> CPM -> craw pkg install -> executestd functions!
My issues at the moment are about getting a command, craw pkg pack to create a CPM ready tarball of your project from the command line. That and my server is having a couple of internet issues at the moment which are hindering my progress. This devlog is also an official announcement that I won’t be as active as normal over the next week. I have family coming around so my time programming will be limited. In addition, when summer holiday starts this will continue, which is why most of my time programming is in the June and early July, the rest of stardance will have fewer updates and less time spent on casm.
I’ve been fighting with my server for a while now, the connection keeps on interrupting. As votes are currently coming in for Crawssembly v1.1.0, I suspect my score will be lower than expected due to the demo and doc websites coming offline randomly.
CPM is being difficult, I’ve gone through multiple iterations now of the craw pkg publish command, but I feel like I’m getting close.
Still not too much progress on CPM, but I’m still confident I can get it working
It turns out I was way closer than I thought! Publishing your own Crawssembly projects is now out of alpha, into beta (Because only I have an API key atm!)
I’m not good at css, but I’m trying to make the CPM website simple and easy to use. It’ll take a while but it’s slowly coming together
I won’t be as active over the next couple of days so don’t expect many updates
Thanks to @Keyboard1000n17 for making the CPM website!
Thinking about user login for the CPM, might implement this soon
Accounts are going to be tricky, more front-end stuff and some complex security back-end is going to make this tricky
Taking a break from CPM to work on some graphics libraries, drawing lines, circles etc…
Circle made 🔥
I’ve been adding line functions at the moment, to be honest it’s harder than the circle! Getting the angles right is the hardest
We have proper line segments working 🔥
The initial line algo only works for the 0-octant, but now my new and improved version works for every line angle!
I’m currently focusing on adding new functions to the screen library, such as rectangles, using the line program as a primitive
67 followers
Added a simple stack library for function calls and other uses, along with some smaller graphics programs such as screen/rectangle_fill.craw This is also my official announcement that I’ll be doing much less programming, due to summer holiday starting now. This is because I can’t program during family time, camping weeks, and other events. In addition, I have University after summer holidays, so this reduced productivity will continue throughout the rest of Stardance. Thank you all for making Crawssembly the number 1 project on stardance!
I realised that my documentation had some issues and unfinished sections, so I touched them up
I’ve been working on a IEEE 754 single precision 32-bit floating point number library for CSL, it turns out it’s more difficult than I expected!
Since IEEE 754 single precision can encode much larger numbers than a standard 32-bit binary number, you can use the library to approximate much larger values for computation
Please also star my actual github page! It’s more important than stardance followers 😤😤 https://github.com/Jonah-Crawford/Crawssembly
I’ve decided to add a heap library to complement the stack library. Doing this should make my next idea easier
Reading user input isn’t that easy compared to a language like Python, where you can just do input() . Each character has to be processed as soon as the keyboard records a press, and then saved to memory. I’m currently working on a block method that takes every 16 character you type, and allocates a small block on the heap for each press. This is going to be used for my big project
Staff, please remove the time on this devlog, I accidentally left nano open all night. Sorry!
I’m going ahead with this schema for heap blocks, the reserved bits can be used for extra features that I might want to add in later versions
I’m still working on stack allocation, the complex parts are walking the stack properly to get the headers, along with making sure I don’t corrupt any data. The image attached shows the maximum heap block size in blue, with the data taken up by the header of that block in red (top corner)
Stack allocation and freeing appear to work, but I need to do more testing to prove it
icl I’ve not done much today, mostly testing the allocation code and it looks up to spec tbh, not much to say
Once you get 1 command working, many more will follow! That’s right, a command line written 100% in Crawssembly code 🔥
I’ve been adding some very basic commands, such as exit , help , and clear
I’ve discovered that the input file mechanism is broken, so that’s great. I’ve also been adding more commands to CrawOS
Hack Club seems to have updated the rules on banner images, claiming it has to be an image of your project working. This is no issue for Crawssembly. The new banner is now the output of one of my programs, creating the banner pixel for pixel. This both compiles with the new rule, as it demonstrates Crawssembly functioning, while maintaining its identity.
I’ve been messing around with --input tag which seems to mess around a bit in the rust vm, but I think I’m getting closer to the cause
The Crawssembly community is real 🙏 I’ve been reviewing a PR on the GitHub to improve the multiplication script in the CSL ( std/math/multiply.craw )
I’ve been back working on CPM, focused on user accounts.
The account page is looking better, and it’s survived some user testing 🙏 I need to add some boring stuff though like API key listing and said key management
Package creation and accounts are now working (theoretically) from the command line 🔥
@imakebloatedcode Thank you for your pr for CPM to include OpenAPI scemata, another great addition from the Craw Systems community Most of my time has been reviewing it and making small edits to include the security auth headers for API keys Official Announcement I’m not going to be online through the 5th August to the 10th August, I’ll be camping for those 5* days in a very low-data spot, and I’m almost certainly not taking my laptop. I might be able to get a tiny amount of code on my phone to keep my streak but certainly not enough to engage in my normal conversation on slack or post devlogs
I’ve added Markdown support for CPM packages 🔥
I’ve made publishing packages super easy now, all you need to do is craw init to create the package, and then craw pkg publish . As long as you’re signed into CPM and gh, it’ll just work
I’ve been working with @BetterClient to inprove the program counter and bringing back fgo from casm beta. This is also a reminder that I’ll be OOO until next Monday.
I’m back from camping! (RIP my 60+ day streak) My plans going forward immediately is improving program counter modifications to allow for higher-level concepts to be bootstrapped onto Crawssembly instruction sets. (Image unrelated)
I’ve merged the new fgo rules to the project, so now fgo points to labels similar to jmp , but fgo 0 now jumps to the label defined in r01 I was having some issues with using git but I got them sorted
I’ve separated the old sleep command into sleepms for millisecond waits and sleepus for microsecond waits. Although, microsecond precision is highly dependent on the OS, so it won’t be as accurate as sleepms for smaller values (Say, n<50)
Sorry for the but it’s been a hectic couple of days. I got into University! I’ve also been busy taking a look at a CGOL implementation, truly amazing stuff! Go check it out: https://github.com/srxcode/game-of-life-crawssembly
I’ve added io keyboard mod to create a bitfield of modification key presses for the keyboard device, so now keys like CTRL and TAB can be handled, which lays the foundation for my next project which is making a basic file editor in casm
Lots of work today, sorry for the . I’ve been struggling with the text editor, heap buffers, cursor allocation, character addresses, etc etc… ad infinitum. However, I’m getting close. Rendering is outputting something, although I don’t know why typing doesn’t seem to add anything…
For some reason, I’ve been banned on slack. I don’t know why, since no one will tell me. This is not good news, but luckily it doesn’t seem to be a stardance-wide ban, so I can still do the hackathon.
Still no clue why characters aren’t being saved to memory in my free heap block Slow day today fr
I’m finally getting somewhere with the editor, however I’m now having issues with character deletion, and adding characters inside empty newlines
stardance
I’ve brought run back from the dead. You can now use run rXX to run a binary value inside the input register as a Crawssembly instruction
I’VE ACTUALLY DONE IT 🔥 Networking is now officially part of Crawssembly. Alpha tests on localhost have all passed
HTTP requests working 🔥 ts is so peak icl
I’ve been doing much more testing and implementing the network device. Specifically testing the following commands: io net ip , io net addr , io net connect , io net socket , io net port , io net listen , io net accept , io net send , io net protocol , io net block , and io net recv .
I’m back! Fraud Squad unbanned me so WE are all having a party at my house Although I can’t use nano apparently anymore… so Crawssembly will be having it’s final ship very very soon
It has come to my attention that not everyone who has followed Crawssembly has starred it on GitHub! Please, if you like my project, star it on GitHub at https://github.com/Jonah-Crawford/Crawssembly Thank you.
idk where these extra hours are coming from, but as long as I don’t ship them, they won’t count towards stardust so I’ll be fine. In the meantime, enjoy craw slop
Ships:
Crawssembly: The beginner’s gateway to low-level thinking. "Programming languages are a lie!" This is Crawssembly, a project that’s been in production for almost a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly.
Crawssembly v1.1.0 ready to ship! “Programming languages are a lie!” This is Crawssembly, a project that’s been in production for almost a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly.
CRAWSSEMBLY - New and Improved! “Programming languages are a lie!” This is Crawssembly, the number 1 project on all of stardance! It’s a project that’s been in production for over a year. It is an educational assembly-like programming language that teaches users how computers actually work. Programming languages like Python, Ruby, and Java pull the wool over your eyes by abstraction and simplification. Crawssembly is the first step to seeing clearly. What is new? INTERNET SOCKETS! CRAWOS COMMAND LINES! DYNAMIC LABEL JUMPING! IMPROVED DEVICES! DEDICATED PACKAGE SHARING WEBSITE! AND MORE! Check it out for yourself! (Shipped early due to Fraud Squad limitations, Crawssembly is too powerful for Hack Club)...
|
1793120035.3715525
|
1793206435.3715525
|
|
40621
|
ZweiCFD by @toiabzahoor | Stardance
|
toiabzahoor
|
2
|
51.0
|
883
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T09:54:49Z", "hours": 18.0, "multiplier": 15.77, "payout": 287, "blessing": "neutral", "text": "Hello Guys! I am back with An improved version of ZweiCFD. Last time, everyone recommended a few things to improve on ZweiCFD , which i have been working hard to do! I have also added Custom Models, A CLI interface, heat colormap (which shows velocity of the wind on the model) , 3d vortex cores using Q criterion, surface pressure distribution curve. I have also added a polar sweep function which lets you select from a range of AoA to see how the drag, lift varies. If anyone is new, They can take a look below this Ship to understand what ZweiCFD is. I Have Also tried to Compile binaries for different OS systems, and i’d like you guys to show me how it works on your end so that i may fix it ASAP. Thank you!", "repo": "https://github.com/toiabzahoor/ZweiCFD", "demo": "https://github.com/Toiabzahoor/ZweiCFD/releases/tag/ZweiCFD"}, {"ship_num": 2, "ts": "2026-08-09T06:47:25Z", "hours": 33.0, "multiplier": 18.19, "payout": 596, "blessing": "neutral", "text": "ZweiCFD: A Real-Time 3D Fluid Dynamics Simulator! Hey Everyone! I’m super excited to ship my first project ZweiCFD , an interactive Computational Fluid Dynamics (CFD) solver and visualization tool I built from scratch. Have you ever wanted to just make a model and see how air flows around it? This is the simulator for that! What it does: Real-Time Aerodynamics: You can adjust the Angle of Attack (AOA), speed, thickness, and camber of an airfoil on the go, and the solver recalculates the airflow instantly. Rich 3D Visuals: Generates velocity heatmaps, streamlines, and slices to visualize exactly how the fluid is behaving. How it was made Built entirely in C++ using Qt6 for the UI and VTK for the heavy-duty 3D rendering. Powered by a custom 3D Lattice Boltzmann Method (LBM) volumetric solver (using a D3Q19 discrete velocity model). Uses Signed Distance Fields (SDF) to handle the complex math of arbitrary boundaries and real-time obstacle drawing. Rest Of The Documentation Is Available On My Github Page! The journey To be completely honest, building this solo while managing my studies has been brutal. My laptop is pretty low-end, so debugging the 3D flap airfoil simulation tanked my compute resources and I had to sideline some 2D features entirely to get the 3D working because it kept interfering. Also, Sitting on the laptop with my chronic pain is very painful for me, so if there are some rough edges, please tell me as it would boost my motivation to work! If you are on Windows, you can download the .exe (with all the VTK DLLs bundled!) from my repo and tinker around with it. I would absolutely love your feedback, reviews, or even just some stars on the repo to help me push this to the next level! :3 For The People Who Need To Take A Look At How It Works: https://youtu.be/mjVsJX-nruM", "repo": "https://github.com/toiabzahoor/ZweiCFD", "demo": "https://github.com/Toiabzahoor/ZweiCFD/releases/tag/ZweiCFD"}]...
|
[{"post_id": 64114, "ts": "202 [{"post_id": 64114, "ts": "2026-09-08T09:50:03Z", "hours": 3.2444, "text": "Finally, I think I have worked enough on zweicfd, i think i will close the chapter on this project. everyone, thank you for supporting me till now! it has really helped my life alot. and i appreciate every bit of support from everyone! i have also tried my best to upload the binaries for linux and macos, and i would like your humble opinion if you face any issues. i would be sure to help you in any way i can!"}, {"post_id": 58895, "ts": "2026-08-31T13:48:56Z", "hours": 6.5239, "text": "Hello! it has been a while since i have dropped a devlog because i have been busy with my doctor visits, so i apologise for the delay! i have added many features to ZweiCFD, like the color heatmap which tells you how the pressure distribution on your model is! I have also added a polar sweep function which lets you simulate for many angles and configurations and plot how the force ,drag angle relate! I am really out of ideas on what to do next, So it would be really helpful to recieve your feedback on what to do next!"}, {"post_id": 53689, "ts": "2026-08-24T11:18:14Z", "hours": 4.2728, "text": "Hey Everyone! I am back with some new additions to ZweiCFD! First, I wanted to maximize the compute for massive simulations, so I’ve added a headless CLI mode and added a function where you can scale the grid up or down (depends on how big your model is / how accurate you want to trace the model). If you are running this on a lower-end device like my laptop, or if you just want to dedicate 100% of your CPU to the physics without running the rendering simultaneously , you can now run the solver entirely from the command line! Second, based on some great feedback, I’ve integrated .vti file exporting. now you can also export your high-resolution flow data generated by ZweiCFD directly into industry-standard tools like ParaView for deep, professional-grade analysis(if anyone is an expert at paraview, please let me know what you think. I would love to hear from a professional so i can tailor to their needs!). Let me know what you think!"}, {"post_id": 52861, "ts": "2026-08-23T07:10:04Z", "hours": 4.1683, "text": "Thank you everyone for supporting my project so much! I am really grateful for all of the support everyone has given me!. Now, I finally have more motivation to work on this project! Currently, as many people recommended, I was working on import functionality of any custom models you may have. It is currently in progress so I appreciate your patience as the latest won’t be reflected on github. Also, I plan to also make a web version of ZweiCFD which would run easily on any platform (Which would be very tough but I think i can make it). Thank you for your time!"}, {"post_id": 43767, "ts": "2026-08-09T06:01:56Z", "hours": 4.4875, "text": "Finally My Last Devlog Before I Ship! I’ve Fixed most of the issues and uploaded the build binary along with the necessary libraries to my releases in github for you guys to try, Thank you very much for your support till now!"}, {"post_id": 42780, "ts": "2026-08-07T17:38:52Z", "hours": 6.8753, "text": "it has finally been starting to look very decent. I had to do a major architectural shift to VTK and QT. and it turned out very good. I am feeling burned out these days. i dont really know if i can keep up the motivation to work on this. but ill try my best! thank you for checking out."}, {"post_id": 40901, "ts": "2026-08-04T18:38:47Z", "hours": 4.6822, "text": "i have been working to make the simulation more pleasing to look at . also, trying to model complex shapes and adding stuff like .obj support, lets see how that goes. have been working on some optimization features, so the github commit may take some more time. Thank you for checking out!"}, {"post_id": 40171, "ts": "2026-08-03T16:02:52Z", "hours": 3.0133, "text": "the 3d interface is under work, although there are major issues with making the equations work in 3d and other stuff so you wont find this version on github. your patience is appreciated!!"}, {"post_id": 39536, "ts": "2026-08-02T15:42:10Z", "hours": 3.975, "text": "i moved most of the calculations onto the gpu so having alot of particles will be easier to render. plus, now testing complex shapes and writing boundary layer equations and some approximation methods to hug around the shape. also i am planning to add 3d next, which will be tough. wish me luck!"}, {"post_id": 38960, "ts": "2026-08-01T16:07:01Z", "hours": 3.5236, "text": "have done a great session. added coloring, and added more equations like lattice-boltzmann method (recovering the navier stokes). thank you for taking a look!"}, {"post_id": 38389, "ts": "2026-07-31T18:54:12Z", "hours": 1.9697, "text": "working on it more, now modelling the equations and physics. havent commited this part to github yet due to some bugs here and there. thank you for checking out!"}, {"post_id": 37775, "ts": "2026-07-30T18:06:55Z", "hours": 1.6783, "text": "Got it fixed. also added some new stuff, and added the wind effect (the lines, yes they move). although i have to incorporate the equations next time. before that, i have to study up on it as this is a topic i havent really studied much about :)"}, {"post_id": 36261, "ts": "2026-07-28T07:51:57Z", "hours": 2.0814, "text": "still working on it. although the graphics arent looking too good yet. Have to stop here for lunch and some rest for my leg, will start work later to fix this."}, {"post_id": 35874, "ts": "2026-07-27T16:20:21Z", "hours": 0.4969, "text": "currently, as i’ve initialized this project. just working to make the files tidy and clean and adding some basic stuff."}]...
|
Title: ZweiCFD by @toiabzahoor | Stardance
Devlog Title: ZweiCFD by @toiabzahoor | Stardance
Devlogs:
currently, as i’ve initialized this project. just working to make the files tidy and clean and adding some basic stuff.
still working on it. although the graphics arent looking too good yet. Have to stop here for lunch and some rest for my leg, will start work later to fix this.
Got it fixed. also added some new stuff, and added the wind effect (the lines, yes they move). although i have to incorporate the equations next time. before that, i have to study up on it as this is a topic i havent really studied much about :)
working on it more, now modelling the equations and physics. havent commited this part to github yet due to some bugs here and there. thank you for checking out!
have done a great session. added coloring, and added more equations like lattice-boltzmann method (recovering the navier stokes). thank you for taking a look!
i moved most of the calculations onto the gpu so having alot of particles will be easier to render. plus, now testing complex shapes and writing boundary layer equations and some approximation methods to hug around the shape. also i am planning to add 3d next, which will be tough. wish me luck!
the 3d interface is under work, although there are major issues with making the equations work in 3d and other stuff so you wont find this version on github. your patience is appreciated!!
i have been working to make the simulation more pleasing to look at . also, trying to model complex shapes and adding stuff like .obj support, lets see how that goes. have been working on some optimization features, so the github commit may take some more time. Thank you for checking out!
it has finally been starting to look very decent. I had to do a major architectural shift to VTK and QT. and it turned out very good. I am feeling burned out these days. i dont really know if i can keep up the motivation to work on this. but ill try my best! thank you for checking out.
Finally My Last Devlog Before I Ship! I’ve Fixed most of the issues and uploaded the build binary along with the necessary libraries to my releases in github for you guys to try, Thank you very much for your support till now!
Thank you everyone for supporting my project so much! I am really grateful for all of the support everyone has given me!. Now, I finally have more motivation to work on this project! Currently, as many people recommended, I was working on import functionality of any custom models you may have. It is currently in progress so I appreciate your patience as the latest won’t be reflected on github. Also, I plan to also make a web version of ZweiCFD which would run easily on any platform (Which would be very tough but I think i can make it). Thank you for your time!
Hey Everyone! I am back with some new additions to ZweiCFD! First, I wanted to maximize the compute for massive simulations, so I’ve added a headless CLI mode and added a function where you can scale the grid up or down (depends on how big your model is / how accurate you want to trace the model). If you are running this on a lower-end device like my laptop, or if you just want to dedicate 100% of your CPU to the physics without running the rendering simultaneously , you can now run the solver entirely from the command line! Second, based on some great feedback, I’ve integrated .vti file exporting. now you can also export your high-resolution flow data generated by ZweiCFD directly into industry-standard tools like ParaView for deep, professional-grade analysis(if anyone is an expert at paraview, please let me know what you think. I would love to hear from a professional so i can tailor to their needs!). Let me know what you think!
Hello! it has been a while since i have dropped a devlog because i have been busy with my doctor visits, so i apologise for the delay! i have added many features to ZweiCFD, like the color heatmap which tells you how the pressure distribution on your model is! I have also added a polar sweep function which lets you simulate for many angles and configurations and plot how the force ,drag angle relate! I am really out of ideas on what to do next, So it would be really helpful to recieve your feedback on what to do next!
Finally, I think I have worked enough on zweicfd, i think i will close the chapter on this project. everyone, thank you for supporting me till now! it has really helped my life alot. and i appreciate every bit of support from everyone! i have also tried my best to upload the binaries for linux and macos, and i would like your humble opinion if you face any issues. i would be sure to help you in any way i can!
Ships:
ZweiCFD: A Real-Time 3D Fluid Dynamics Simulator! Hey Everyone! I’m super excited to ship my first project ZweiCFD , an interactive Computational Fluid Dynamics (CFD) solver and visualization tool I built from scratch. Have you ever wanted to just make a model and see how air flows around it? This is the simulator for that! What it does: Real-Time Aerodynamics: You can adjust the Angle of Attack (AOA), speed, thickness, and camber of an airfoil on the go, and the solver recalculates the airflow instantly. Rich 3D Visuals: Generates velocity heatmaps, streamlines, and slices to visualize exactly how the fluid is behaving. How it was made Built entirely in C++ using Qt6 for the UI and VTK for the heavy-duty 3D rendering. Powered by a custom 3D Lattice Boltzmann Method (LBM) volumetric solver (using a D3Q19 discrete velocity model). Uses Signed Distance Fields (SDF) to handle the complex math of arbitrary boundaries and real-time obstacle drawing. Rest Of The Documentation Is Available On My Github Page! The journey To be completely honest, building this solo while managing my studies has been brutal. My laptop is pretty low-end, so debugging the 3D flap airfoil simulation tanked my compute resources and I had to sideline some 2D features entirely to get the 3D working because it kept interfering. Also, Sitting on the laptop with my chronic pain is very painful for me, so if there are some rough edges, please tell me as it would boost my motivation to work! If you are on Windows, you can download the .exe (with all the VTK DLLs bundled!) from my repo and tinker around with it. I would absolutely love your feedback, reviews, or even just some stars on the repo to help me push this to the next level! :3 For The People Who Need To Take A Look At How It Works: https://youtu.be/mjVsJX-nruM
Hello Guys! I am back with An improved version of ZweiCFD. Last time, everyone recommended a few things to improve on ZweiCFD , which i have been working hard to do! I have also added Custom Models, A CLI interface, heat colormap (which shows velocity of the wind on the model) , 3d vortex cores using Q criterion, surface pressure distribution curve. I have also added a polar sweep function which lets you select from a range of AoA to see how the drag, lift varies. If anyone is new, They can take a look below this Ship to understand what ZweiCFD is. I Have Also tried to Compile binaries for different OS systems, and i’d like you guys to show me how it works on your end so that i may fix it ASAP. Thank you!...
|
1793084256.694402
|
1793170656.694402
|
|
58331
|
ESP32-PNA by @vasilije | Stardance
|
vasilije
|
1
|
7.17
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T09:33:13Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "ESP32 PNA ( Pocket Network Analyser) is a handheld device that lets you scan nearby Wi-Fi networks, discover BLE devices, and detect activity across the 2.4 GHz band. This uses a 0.96-inch OLED and 4 buttons for controls. It responds well, captures all the signals well, and most of all looks super cool. In the next few days Ill upload a KiCAD schematic, PCB and a DXF file for the enclosure that will probably be laser cut", "repo": "https://github.com/VMechLAB/ESP32_PNA", "demo": "https://github.com/VMechLAB/ESP32_PNA/releases/tag/V1.0"}]...
|
[{"post_id": 64111, "ts": "202 [{"post_id": 64111, "ts": "2026-09-08T09:43:17Z", "hours": 2.1736, "text": "V1.1 is on GitHub now and I forgot to post a devlog before shipping the project 🤦♂️. But ok, everything is still uploaded and ready to use. Hope you have fun using the project as much as I had making it."}, {"post_id": 63773, "ts": "2026-09-07T18:47:56Z", "hours": 0.8608, "text": "Put up a RELEASE V1.0 FINALLY, but there’s a lot to fix in the project. Love how this project has finally brought me back to my hardware side; I’ve been into software for too long, and I miss building stuff. Also, should I say this is a Hardware of a Software project? I guess a mix of both worlds."}, {"post_id": 63558, "ts": "2026-09-07T14:01:16Z", "hours": 2.0672, "text": "Been fixing the code alot. It had a crazy amount of errors but now it works very well. Will do some more fixing and then posting it"}, {"post_id": 63464, "ts": "2026-09-07T10:24:06Z", "hours": 1.7564, "text": "Fixed ALOT of errors and nowwwww finally going to start debugging the hardware YAY so happy. But its gonna be worth it hopefully"}, {"post_id": 61765, "ts": "2026-09-04T20:32:58Z", "hours": 0.5542, "text": "Just started on it. Soon enough Ill relese the CAD files and Schematic. Just thinking what software to make it in either gonna be in KiCAD or smrth similar. It is quite simple to connect tbh"}]...
|
Title: ESP32-PNA by @vasilije | Stardance
Devlogs Title: ESP32-PNA by @vasilije | Stardance
Devlogs:
Just started on it. Soon enough Ill relese the CAD files and Schematic. Just thinking what software to make it in either gonna be in KiCAD or smrth similar. It is quite simple to connect tbh
Fixed ALOT of errors and nowwwww finally going to start debugging the hardware YAY so happy. But its gonna be worth it hopefully
Been fixing the code alot. It had a crazy amount of errors but now it works very well. Will do some more fixing and then posting it
Put up a RELEASE V1.0 FINALLY, but there’s a lot to fix in the project. Love how this project has finally brought me back to my hardware side; I’ve been into software for too long, and I miss building stuff. Also, should I say this is a Hardware of a Software project? I guess a mix of both worlds.
V1.1 is on GitHub now and I forgot to post a devlog before shipping the project 🤦♂️. But ok, everything is still uploaded and ready to use. Hope you have fun using the project as much as I had making it.
Ships:
ESP32 PNA ( Pocket Network Analyser) is a handheld device that lets you scan nearby Wi-Fi networks, discover BLE devices, and detect activity across the 2.4 GHz band. This uses a 0.96-inch OLED and 4 buttons for controls. It responds well, captures all the signals well, and most of all looks super cool. In the next few days Ill upload a KiCAD schematic, PCB and a DXF file for the enclosure that will probably be laser cut...
|
1792875205.1789298
|
1793739205.1789298
|
|
57770
|
DinoBot 🦖🦖 by @folk0297 | Stardance
|
folk0297
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T08:17:25Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made DinoBot, it is a fun Slack bot that lets users discover dinosaur facts, get random dinosaurs, and compare different dinos using simple slash commands. it was quite a fun project and i would recommend this to make one time if you are a beginner. you can follow the guide it make things A LOT EASIER. The most challenging part was connecting the bot to Slack, handling commands correctly, and deploying it on Nest to keep it running. I’m most proud of turning a simple idea into a working 24/7 Slack bot that people can actually use and interact with.", "repo": "https://github.com/folks0297/dinoBot", "demo": "https://hackclub.enterprise.slack.com/archives/C0C0ASD4QNP"}]...
|
[{"post_id": 62175, "ts": "202 [{"post_id": 62175, "ts": "2026-09-05T13:10:55Z", "hours": 1.5608, "text": "devlog #1 of my project no. 3. so in this project i have made my own slack bot called DinoBot .i have added some slash commands like : /dino-fact , as the name suggest it tells the facts of a specific dino which name you will type. /dino-random , it chooses the random dino from the data and tell facts about it /dino-compare , it will show the comparison between two dinos which name you are gonna type here. honestly,it was very fun project and i really enjoyed making it specially setting things up in terminal for the first time was pretty fun!! i hope you guys will try it too:)"}]...
|
Title: DinoBot 🦖🦖 by @folk0297 | Stardance
Devlog Title: DinoBot 🦖🦖 by @folk0297 | Stardance
Devlogs:
devlog #1 of my project no. 3. so in this project i have made my own slack bot called DinoBot .i have added some slash commands like : /dino-fact , as the name suggest it tells the facts of a specific dino which name you will type. /dino-random , it chooses the random dino from the data and tell facts about it /dino-compare , it will show the comparison between two dinos which name you are gonna type here. honestly,it was very fun project and i really enjoyed making it specially setting things up in terminal for the first time was pretty fun!! i hope you guys will try it too:)
Ships:
I made DinoBot, it is a fun Slack bot that lets users discover dinosaur facts, get random dinosaurs, and compare different dinos using simple slash commands. it was quite a fun project and i would recommend this to make one time if you are a beginner. you can follow the guide it make things A LOT EASIER. The most challenging part was connecting the bot to Slack, handling commands correctly, and deploying it on Nest to keep it running. I’m most proud of turning a simple idea into a working 24/7 Slack bot that people can actually use and interact with....
|
1793123467.9803932
|
1793209867.9803932
|
|
53451
|
Cookiecuttr by @solxmn | Stardance
|
solxmn
|
1
|
4.59
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T08:07:33Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’m done! The basic idea is still pretty small: get cookie banners out of the way, show how long an article might take, and help me find my place again when I have to stop reading. The cookie skipper took more work than I expected. It had to recognize common consent platforms while searching for the deny button. Some reject buttons were titled I do not agree , which is easy to miss if you only look for buttons named “reject” or “decline”, and not even mentioning the localization options. I ended up checking the surrounding markup and several kinds of button metadata while keeping the actual click logic reject-only. The reading badge had its own set of edge cases. Articles do not all use the same HTML, and some of them fill in their content after the page loads. I added duplicate protection, a force-show action, and a guard against counting the same badge repeatedly when the toggle is switched on and off. The marker feature grew out of a practical annoyance: closing a tab should not mean losing the article and the exact place I reached. There are now three slots, each with a name and optional timestamp. Returning to one finds the original tab if it is still open, otherwise opens the page and restores the saved position. Chrome needed an extra fix here because the popup closes as soon as a new tab is created, so the background script has to finish the handoff. I kept the Chrome and Firefox versions in sync as I went. They share the popup, content, and background behaviour, with the expected Manifest V3 difference in Firefox’s background setup. Firefox also required the local-only data collection declaration before the add-on could be submitted, however it is not present as of version v1.0.0 if you download it via github. The popup went through a surprising number of small redesigns. I started with a dark three-stat layout, then moved toward the more formal looking version that is there now. It is not trying to be flashy; it just makes the automation visible and gives you control over it. Settings, markers, and stats stay in local extension storage. After the tests passed and the Firefox submission was accepted, I finally called it finished. It is a small tool, but it removes what I think are a few annoyances that show up every time I read online.", "repo": "https://github.com/Fraczdev/CookieCuttr/tree/master", "demo": "https://addons.mozilla.org/en-US/firefox/addon/cookiecuttr/"}]...
|
[{"post_id": 73728, "ts": "202 [{"post_id": 73728, "ts": "2026-09-25T19:53:56Z", "hours": 1.5869, "text": "Adjusted a few inconsistencies in the overall logic, updated the manifest.json to include the necessary permissions, and made some other changes to ensure the extension complies with the Firefox Add-on Marketplace requirements."}, {"post_id": 64082, "ts": "2026-09-08T07:48:39Z", "hours": 1.2419, "text": "This will be my last devlog for this project :] I: Added everything needed in manifest.json in order to actually upload the project; Uploaded the Firefox extension to Firefox Add-ons marketplace, and it got accepted; Revised the banner detection logic so the extension can handle more consent platforms and common variations in their markup; Checked and fixed inconsistencies between the chrome and firefox version while respecting the differences between their manifest v3 implementations, and more will ship soon"}, {"post_id": 60733, "ts": "2026-09-03T09:15:58Z", "hours": 1.0414, "text": "General Improvements, UI and Features Reworked the popup layout, gave it a more formal look with wider spacing. Redesigned sections, improved the logic, and made the reset action smaller and cleaner. Added reading markers with three save slots, editable names, optional timestamps, site labels, and cross-tab return support. You can now save a position, switch tabs, and jump back to the checkpoint later. Improved the cookie skipper logic with site-specific handling, broader cookie-control detection, debounced mutation scans, and safer reject-only behavior. - Also fixed reading-badge stats related bugs, added a force-show badge button, and made settings update without refreshing the page. Added contract tests for both Chrome and Firefox builds. Features The extension currently has 3 main features: 1. Cookie Banner Skipper Automatically detects cookie and consent banners, then selects reject or necessary-only options instead of accepting tracking cookies. It supports common consent platforms, site-specific handling, and broader detection based on cookie-related buttons, IDs, classes, and labels. 2. Reading Time Badge Displays an estimated reading time and word count on longer articles. The badge can be dismissed, and the Show reading badge button can force it to appear when automatic detection doesn’t recognize the page. 3. Reading markers/Timestamps Provides three customizable save slots for reading positions. Each marker can have its own name, optional timestamp and scroll position marker. The URL is still kept next to the name, in case you forget. Markers CAN be used from another tab or reopened automatically in a new tab when the original page is no longer open."}, {"post_id": 53269, "ts": "2026-08-23T18:37:35Z", "hours": 0.4694, "text": "Getting started Worked on the UI, Logo and reading logic. Simplified it a lot, because otherwise it’d be too complex for such a simple,short project like this. So far it’s going great, haven’t encountered a lot of issues/bugs yet."}]...
|
Title: Cookiecuttr by @solxmn | Stardance
Devlogs Title: Cookiecuttr by @solxmn | Stardance
Devlogs:
Getting started Worked on the UI, Logo and reading logic. Simplified it a lot, because otherwise it’d be too complex for such a simple,short project like this. So far it’s going great, haven’t encountered a lot of issues/bugs yet.
General Improvements, UI and Features Reworked the popup layout, gave it a more formal look with wider spacing. Redesigned sections, improved the logic, and made the reset action smaller and cleaner. Added reading markers with three save slots, editable names, optional timestamps, site labels, and cross-tab return support. You can now save a position, switch tabs, and jump back to the checkpoint later. Improved the cookie skipper logic with site-specific handling, broader cookie-control detection, debounced mutation scans, and safer reject-only behavior. - Also fixed reading-badge stats related bugs, added a force-show badge button, and made settings update without refreshing the page. Added contract tests for both Chrome and Firefox builds. Features The extension currently has 3 main features: 1. Cookie Banner Skipper Automatically detects cookie and consent banners, then selects reject or necessary-only options instead of accepting tracking cookies. It supports common consent platforms, site-specific handling, and broader detection based on cookie-related buttons, IDs, classes, and labels. 2. Reading Time Badge Displays an estimated reading time and word count on longer articles. The badge can be dismissed, and the Show reading badge button can force it to appear when automatic detection doesn’t recognize the page. 3. Reading markers/Timestamps Provides three customizable save slots for reading positions. Each marker can have its own name, optional timestamp and scroll position marker. The URL is still kept next to the name, in case you forget. Markers CAN be used from another tab or reopened automatically in a new tab when the original page is no longer open.
This will be my last devlog for this project :] I: Added everything needed in manifest.json in order to actually upload the project; Uploaded the Firefox extension to Firefox Add-ons marketplace, and it got accepted; Revised the banner detection logic so the extension can handle more consent platforms and common variations in their markup; Checked and fixed inconsistencies between the chrome and firefox version while respecting the differences between their manifest v3 implementations, and more will ship soon
Adjusted a few inconsistencies in the overall logic, updated the manifest.json to include the necessary permissions, and made some other changes to ensure the extension complies with the Firefox Add-on Marketplace requirements.
Ships:
I’m done! The basic idea is still pretty small: get cookie banners out of the way, show how long an article might take, and help me find my place again when I have to stop reading. The cookie skipper took more work than I expected. It had to recognize common consent platforms while searching for the deny button. Some reject buttons were titled I do not agree , which is easy to miss if you only look for buttons named “reject” or “decline”, and not even mentioning the localization options. I ended up checking the surrounding markup and several kinds of button metadata while keeping the actual click logic reject-only. The reading badge had its own set of edge cases. Articles do not all use the same HTML, and some of them fill in their content after the page loads. I added duplicate protection, a force-show action, and a guard against counting the same badge repeatedly when the toggle is switched on and off. The marker feature grew out of a practical annoyance: closing a tab should not mean losing the article and the exact place I reached. There are now three slots, each with a name and optional timestamp. Returning to one finds the original tab if it is still open, otherwise opens the page and restores the saved position. Chrome needed an extra fix here because the popup closes as soon as a new tab is created, so the background script has to finish the handoff. I kept the Chrome and Firefox versions in sync as I went. They share the popup, content, and background behaviour, with the expected Manifest V3 difference in Firefox’s background setup. Firefox also required the local-only data collection declaration before the add-on could be submitted, however it is not present as of version v1.0.0 if you download it via github. The popup went through a surprising number of small redesigns. I started with a dark three-stat layout, then moved toward the more formal looking version that is there now. It is not trying to be flashy; it just makes the automation visible and gives you control over it. Settings, markers, and stats stay in local extension storage. After the tests passed and the Firefox submission was accepted, I finally called it finished. It is a small tool, but it removes what I think are a few annoyances that show up every time I read online....
|
1793083696.9575593
|
1793170096.9575593
|
|
57440
|
shaazOS by @shaaz | Stardance
|
shaaz
|
2
|
11.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T07:16:09Z", "hours": 1.0, "multiplier": 5.4, "payout": 4, "blessing": "neutral", "text": "i made the upgraded version of shaazOS for webOS 2 mission…..i made somew crazy things and it looks like real os btw….the challenging part in this mission was making recent bar and a terminal:(…but it was more fun…………:)", "repo": "https://github.com/shaazumer066-bot/shaazOS", "demo": "https://shaazumer066-bot.github.io/shaazOS/"}, {"ship_num": 2, "ts": "2026-09-05T01:23:20Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made shaazOS, This is the best personal project i’ve ever made:)…In this project i faced many errors and some other stuff..It was fun btw… It includes: Functional File Explorer Settings with wallpaper and accent-color customization Calculator Keep Notes Contacts Gallery Focus Timer App search bar Minimize, maximize, and close window controls This was a really fun project to build, and I learned a lot about JavaScript, DOM manipulation, and creating interactive UI systems!", "repo": "https://github.com/shaazumer066-bot/shaazOS", "demo": "https://shaazumer066-bot.github.io/shaazOS/"}]...
|
[{"post_id": 64075, "ts": "202 [{"post_id": 64075, "ts": "2026-09-08T07:12:32Z", "hours": 0.2914, "text": "finished webOS 2 for shaazOS………….. added a functional terminal with slash commands, a recent apps bar, customizable desktop widgets with enable/disable controls, and an OS loading screen…….. also improved the overall desktop experience while keeping the existing webOS 1 apps and customization features. webOS 2 is now a more interactive and personalized web-based operating system."}, {"post_id": 64064, "ts": "2026-09-08T06:23:03Z", "hours": 0.4881, "text": "Started working on webOS 2 for shaazOS…… WebOS 1 already had the basic desktop, applications, File Explorer, Settings, app search, wallpaper customization, accent colors, and several built-in apps………..For WebOS 2, I want to take it further and make it feel more like a real operating system instead of just a collection of web apps…………The main features I am planning are functional terminal with slash commands, recent apps bar , Customizable desktop widgets, An OS boot/loading screen……….The goal is to make the system more interactive, customizable, and unique while keeping the original WebOS 1 features working."}, {"post_id": 61878, "ts": "2026-09-05T01:16:00Z", "hours": 0.3825, "text": "Today I worked on shaazOS, my web-based operating system project.I added a functional File Explorer with folders, files, navigation, back, home, and refresh buttons.I also improved the Settings app with customizable accent colors and wallpapers.The app search bar can now find apps like Settings and File Explorer.I also worked on window controls such as minimize, maximize, and close, while keeping the same glass-style theme across the OS. It is ready!!!!:)"}, {"post_id": 61605, "ts": "2026-09-04T16:19:48Z", "hours": 0.2506, "text": "look at this calculator! I just customized it.."}, {"post_id": 61587, "ts": "2026-09-04T15:59:27Z", "hours": 9.655, "text": "Finally!!!!! Its here!!! my own webOS.. this was really amazing.. I made it with my own ideas, designs etc.. this is one of the best project i have ever made….you can check this, in my shaazOS there are amazing apps like settings app where you can change themes and accent colors.. and many more amazing apps!!!"}]...
|
Title: shaazOS by @shaaz | Stardance
Devlogs:
Fin Title: shaazOS by @shaaz | Stardance
Devlogs:
Finally!!!!! Its here!!! my own webOS.. this was really amazing.. I made it with my own ideas, designs etc.. this is one of the best project i have ever made….you can check this, in my shaazOS there are amazing apps like settings app where you can change themes and accent colors.. and many more amazing apps!!!
look at this calculator! I just customized it..
Today I worked on shaazOS, my web-based operating system project.I added a functional File Explorer with folders, files, navigation, back, home, and refresh buttons.I also improved the Settings app with customizable accent colors and wallpapers.The app search bar can now find apps like Settings and File Explorer.I also worked on window controls such as minimize, maximize, and close, while keeping the same glass-style theme across the OS. It is ready!!!!:)
Started working on webOS 2 for shaazOS…… WebOS 1 already had the basic desktop, applications, File Explorer, Settings, app search, wallpaper customization, accent colors, and several built-in apps………..For WebOS 2, I want to take it further and make it feel more like a real operating system instead of just a collection of web apps…………The main features I am planning are functional terminal with slash commands, recent apps bar , Customizable desktop widgets, An OS boot/loading screen……….The goal is to make the system more interactive, customizable, and unique while keeping the original WebOS 1 features working.
finished webOS 2 for shaazOS………….. added a functional terminal with slash commands, a recent apps bar, customizable desktop widgets with enable/disable controls, and an OS loading screen…….. also improved the overall desktop experience while keeping the existing webOS 1 apps and customization features. webOS 2 is now a more interactive and personalized web-based operating system.
Ships:
I made shaazOS, This is the best personal project i’ve ever made:)…In this project i faced many errors and some other stuff..It was fun btw… It includes: Functional File Explorer Settings with wallpaper and accent-color customization Calculator Keep Notes Contacts Gallery Focus Timer App search bar Minimize, maximize, and close window controls This was a really fun project to build, and I learned a lot about JavaScript, DOM manipulation, and creating interactive UI systems!
i made the upgraded version of shaazOS for webOS 2 mission…..i made somew crazy things and it looks like real os btw….the challenging part in this mission was making recent bar and a terminal:(…but it was more fun…………:)...
|
1792878520.2754254
|
1793742520.2754254
|
|
56203
|
SpacePulserProPomodoro by @Turjo0599 | Stardance
|
Turjo0599
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T06:07:39Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Pomodoro APP with a window having nasa’s info fetched which has img , title and description of their picture of the day. Moreover, I included a Pomodoro timer and music player to help the user to focus.", "repo": "https://github.com/Ahetasamul1212/MySpacePulserPro", "demo": "https://ahetasamul1212.github.io/MySpacePulserPro/?utm_source"}]...
|
[{"post_id": 64043, "ts": "202 [{"post_id": 64043, "ts": "2026-09-08T05:28:03Z", "hours": 0.3731, "text": "My SpaceAppPomodoro is deployed check it out, feel free to inform me what do you think and what changes should I make?"}, {"post_id": 63482, "ts": "2026-09-07T11:16:22Z", "hours": 9.5069, "text": "This is my very own SpaceAppPomodoro, make sure to check it out"}]...
|
Title: SpacePulserProPomodoro by @Turjo0599 | Star Title: SpacePulserProPomodoro by @Turjo0599 | Stardance
Devlogs:
This is my very own SpaceAppPomodoro, make sure to check it out
My SpaceAppPomodoro is deployed check it out, feel free to inform me what do you think and what changes should I make?
Ships:
I made a Pomodoro APP with a window having nasa’s info fetched which has img , title and description of their picture of the day. Moreover, I included a Pomodoro timer and music player to help the user to focus....
|
1793116036.909545
|
1793202436.909545
|
|
39249
|
My own site! by @1kehuynh | Stardance
|
1kehuynh
|
1
|
19.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T06:07:02Z", "hours": 19.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hi, after 19+ hours, my website is finally done. It has html, css, and some javascript. I’d say half of those hours are because I was procrastinating and just can’t decide what the website should actually look like, and the other half actually writing code. I just couldn’t decide what the website should look like and what the color schemes should be so I kept doing random colors and random css and hoping the website would look okay through trial and error. Hopefully my website looks okay now i guess and hopefully the color scheme is okay. How does everyone else choose a good color scheme/layout for the website?", "repo": "https://github.com/1kehuynh/my-personal-site", "demo": "https://1kehuynh.github.io/my-personal-site/"}]...
|
[{"post_id": 63392, "ts": "202 [{"post_id": 63392, "ts": "2026-09-07T06:08:49Z", "hours": 3.66, "text": "I’m still working on the site but getting close. I finished the socials page so now the links actually lead to places. I’m also starting to work on the projects page and I’m going to tweak the about me page."}, {"post_id": 62591, "ts": "2026-09-06T01:50:08Z", "hours": 5.7547, "text": "I decided to completely revamp the css/colors of my site. I decided to use a different color theme so I hope it looks better?"}, {"post_id": 60057, "ts": "2026-09-02T05:15:54Z", "hours": 4.4131, "text": "My site has colors now. I worked on the css a lot, and the front page is finished I think. It was really annoying to constantly adjust the colors to find which colors look the best and I just basically did random combinations of CSS until I thought the site looked okay."}, {"post_id": 58590, "ts": "2026-08-31T01:58:40Z", "hours": 5.2358, "text": "Hi this is my first project and this is my first devpost. As you can see, I’m working on my website. I have all the pages I plan to have and now plan on adding more content and styling. I think the content for the about me and the front page is okay enough but I plan on styling it more so it looks better."}]...
|
Title: My own site! by @1kehuynh | Stardance
Devl Title: My own site! by @1kehuynh | Stardance
Devlogs:
Hi this is my first project and this is my first devpost. As you can see, I’m working on my website. I have all the pages I plan to have and now plan on adding more content and styling. I think the content for the about me and the front page is okay enough but I plan on styling it more so it looks better.
My site has colors now. I worked on the css a lot, and the front page is finished I think. It was really annoying to constantly adjust the colors to find which colors look the best and I just basically did random combinations of CSS until I thought the site looked okay.
I decided to completely revamp the css/colors of my site. I decided to use a different color theme so I hope it looks better?
I’m still working on the site but getting close. I finished the socials page so now the links actually lead to places. I’m also starting to work on the projects page and I’m going to tweak the about me page.
Ships:
Hi, after 19+ hours, my website is finally done. It has html, css, and some javascript. I’d say half of those hours are because I was procrastinating and just can’t decide what the website should actually look like, and the other half actually writing code. I just couldn’t decide what the website should look like and what the color schemes should be so I kept doing random colors and random css and hoping the website would look okay through trial and error. Hopefully my website looks okay now i guess and hopefully the color scheme is okay. How does everyone else choose a good color scheme/layout for the website?...
|
1793087356.5501292
|
1793173756.5501292
|
|
55928
|
VFRAME by @Paachu | Stardance
|
Paachu
|
1
|
11.0
|
177
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T05:49:52Z", "hours": 11.0, "multiplier": 16.79, "payout": 177, "blessing": "neutral", "text": "VFRAME – A video maker Software Uh Video Maker software? Like Clipchamp? No This is a project which i tried to fix a problem The video editors are bit complex for those who we call senior citizens . some of em like to make video with very basic structure, but cant make it due to the complexity and digital gap I am bridging that digital gap using a very basic video maker VFRAME Challanges i faced 🥹 Made as website planning to host in nest , as well nest dont give public ipv4 so I dropped and rewrited code to make as a desktop software Pyside6 and html Ui QoL Improvements Auto clear up tmp files for saving storage Nice looking Ui Limitations will take time propotional to length of audio and yeah ugly terminal will show up along with window. For Every mind who want to make narrative videos especially Senior citizens, from a Gen Alpha - Vasudev Download Setup from https://editor.vasudevonden.in", "repo": "https://github.com/Along-the-skies/video-editor", "demo": "https://editor.vasudevonden.in/"}]...
|
[{"post_id": 64050, "ts": "202 [{"post_id": 64050, "ts": "2026-09-08T05:39:42Z", "hours": 1.0228, "text": "VFRAME Download page deployed After a huge work, VFRAME is ready to ship started as a webapp ended as a Desktop software Download setup from https://editor.vasudevonden.in"}, {"post_id": 63102, "ts": "2026-09-06T18:32:00Z", "hours": 0.6372, "text": "VFRAME – EXTRA DEVLOG New NAME IS HERE = \" VFRAME \""}, {"post_id": 62841, "ts": "2026-09-06T11:29:28Z", "hours": 1.1939, "text": "Video Maker Software - Day 7 WEll Completed Website –> Software change currently Building exe"}, {"post_id": 61624, "ts": "2026-09-04T16:52:03Z", "hours": 1.3206, "text": "Video Maker Software - Day 6 Switched to desktop software due to nest’s ip limitations Pyside6 Ui still uses fastapi and HTML CSS JS Aw Man This gonna be peak !"}, {"post_id": 61518, "ts": "2026-09-04T13:57:03Z", "hours": 1.5167, "text": "Video make website - Day 5 (late) completed work 😁 added a opensource like donate page (no idea if its allowed so rn placeholder) but . but.. HOW AM I SUPPOSED TO DEPLOY ! Gotta burn the head"}, {"post_id": 60252, "ts": "2026-09-02T14:41:34Z", "hours": 0.6167, "text": "Video Editor Website - Day 4 Name Lf Not a big deal today. simply got inspired by new style from ranked YSWS will i get sued? Lol"}, {"post_id": 59703, "ts": "2026-09-01T16:58:14Z", "hours": 1.3036, "text": "Video Editor Website - Day 3 Still Lf a name !! Completed first step of wiring frontend to server Working 🥳 .🪲👀"}, {"post_id": 59046, "ts": "2026-08-31T17:08:11Z", "hours": 0.7228, "text": "Video Editor Website - Day 2 Still Lf a name ! Aw Crap hackatime is down? my 2 hour is missing Today I made the frontend side I guess HTML CSS home page is made 😋✌️"}, {"post_id": 58007, "ts": "2026-08-30T10:53:21Z", "hours": 1.4631, "text": "Video Editor Website - Day 1 Completed backend server FastAPI ffmpeg server clean up Next > Frontend Still looking for a better name"}, {"post_id": 57520, "ts": "2026-08-29T18:03:12Z", "hours": 0.7631, "text": "Video editor website If you got a better name after reading description, Please Comment it down Made with love — for retired ones, from a Gen Alpha ."}]...
|
Title: VFRAME by @Paachu | Stardance
Devlogs:
Vid Title: VFRAME by @Paachu | Stardance
Devlogs:
Video editor website If you got a better name after reading description, Please Comment it down Made with love — for retired ones, from a Gen Alpha .
Video Editor Website - Day 1 Completed backend server FastAPI ffmpeg server clean up Next > Frontend Still looking for a better name
Video Editor Website - Day 2 Still Lf a name ! Aw Crap hackatime is down? my 2 hour is missing Today I made the frontend side I guess HTML CSS home page is made 😋✌️
Video Editor Website - Day 3 Still Lf a name !! Completed first step of wiring frontend to server Working 🥳 .🪲👀
Video Editor Website - Day 4 Name Lf Not a big deal today. simply got inspired by new style from ranked YSWS will i get sued? Lol
Video make website - Day 5 (late) completed work 😁 added a opensource like donate page (no idea if its allowed so rn placeholder) but . but.. HOW AM I SUPPOSED TO DEPLOY ! Gotta burn the head
Video Maker Software - Day 6 Switched to desktop software due to nest’s ip limitations Pyside6 Ui still uses fastapi and HTML CSS JS Aw Man This gonna be peak !
Video Maker Software - Day 7 WEll Completed Website –> Software change currently Building exe
VFRAME – EXTRA DEVLOG New NAME IS HERE = " VFRAME "
VFRAME Download page deployed After a huge work, VFRAME is ready to ship started as a webapp ended as a Desktop software Download setup from https://editor.vasudevonden.in
Ships:
VFRAME – A video maker Software Uh Video Maker software? Like Clipchamp? No This is a project which i tried to fix a problem The video editors are bit complex for those who we call senior citizens . some of em like to make video with very basic structure, but cant make it due to the complexity and digital gap I am bridging that digital gap using a very basic video maker VFRAME Challanges i faced 🥹 Made as website planning to host in nest , as well nest dont give public ipv4 so I dropped and rewrited code to make as a desktop software Pyside6 and html Ui QoL Improvements Auto clear up tmp files for saving storage Nice looking Ui Limitations will take time propotional to length of audio and yeah ugly terminal will show up along with window. For Every mind who want to make narrative videos especially Senior citizens, from a Gen Alpha - Vasudev Download Setup from https://editor.vasudevonden.in...
|
1793101780.8357968
|
1793188180.8357968
|
|
10440
|
tyse by @Tawhidulh | Stardance
|
Tawhidulh
|
1
|
18.0
|
135
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T05:40:51Z", "hours": 18.0, "multiplier": 7.46, "payout": 135, "blessing": "neutral", "text": "I created a meta search-engine. Initially I wanted it to have a full fledged crawler, but I realized I needed lots of resources (money) t make it actually usable. Instead, I decided to transition to a searxng wrapper. I am proud that I was able to make the backend work as I had very little knowledge of spring and spring-boot.", "repo": "https://github.com/Tawhidulh1/tyse", "demo": "https://tyse.tea.hackclub.app/"}]...
|
[{"post_id": 64044, "ts": "202 [{"post_id": 64044, "ts": "2026-09-08T05:30:33Z", "hours": 6.3647, "text": "The basic search engine is complete, I added css and made it look nicer. Still need to polish the backend and add more features."}, {"post_id": 38542, "ts": "2026-08-01T00:28:03Z", "hours": 6.6828, "text": "The backend for the search engine is mostly done, I need to fix some issues with elasticsearch database and make it look good. The current index is being fetched and saved into elasticsearch through searxng as I do not have the resources to run the crawler/fetch the indexes myself, though I did add a prototype crawler. Currently this is how it works: User searches a query -> find the best results with the given query through elasticsearch, if it does not exist it fallbacks to searxng from port 8888 -> then display the result to user. This is so that I could save the search results as continue to use it, I plan on adding some sort of timer or something to update the index for outdated searches. As seen in the video, there are clearly some issues with overlapping searches."}, {"post_id": 14326, "ts": "2026-06-23T12:42:05Z", "hours": 5.0281, "text": "I added a single threaded basic web crawler for my search engine. I have yet to implement a queue system to act as the Url Frontier, instead it is a single List of String(s) to represent Url’s. This was my first time making a web crawler as well as my first time working with JSoup."}]...
|
Title: tyse by @Tawhidulh | Stardance
Devlogs:
I Title: tyse by @Tawhidulh | Stardance
Devlogs:
I added a single threaded basic web crawler for my search engine. I have yet to implement a queue system to act as the Url Frontier, instead it is a single List of String(s) to represent Url’s. This was my first time making a web crawler as well as my first time working with JSoup.
The backend for the search engine is mostly done, I need to fix some issues with elasticsearch database and make it look good. The current index is being fetched and saved into elasticsearch through searxng as I do not have the resources to run the crawler/fetch the indexes myself, though I did add a prototype crawler. Currently this is how it works: User searches a query -> find the best results with the given query through elasticsearch, if it does not exist it fallbacks to searxng from port 8888 -> then display the result to user. This is so that I could save the search results as continue to use it, I plan on adding some sort of timer or something to update the index for outdated searches. As seen in the video, there are clearly some issues with overlapping searches.
The basic search engine is complete, I added css and made it look nicer. Still need to polish the backend and add more features.
Ships:
I created a meta search-engine. Initially I wanted it to have a full fledged crawler, but I realized I needed lots of resources (money) t make it actually usable. Instead, I decided to transition to a searxng wrapper. I am proud that I was able to make the backend work as I had very little knowledge of spring and spring-boot....
|
1793148682.3689642
|
1793235082.3689642
|
|
57166
|
CipherOS by @Athan | Stardance
|
Athan
|
1
|
13.32
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T05:38:19Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made cipherosso thats its not a fake macos (saw a lot of them so tried smth else) the page is kindoff a corkboard. polaroids on the left are the apps. folders are windows. drag the tab (the little grip), scribbly x closes it, click a folder to yank it to the front. no min no max no resize. no password as required +_+ hard part was making it look like a desk and not a tutorial. cork grain, manila folders, polaroids with red pins. also stuffing the windows so they werent emptyyy. notebook actually saves clues in this browser. CASE 0 is the missing campfire flagship hoodies (L/M/S) cuz i didnt have shop photos so theyre sad silhouettes with a ? which ngl could be better, I’amma try asking for the pics on slack. im proud the page IS ACTUALLY LIKE a corkboard and that the shredder still says evidence destroyed: 0 suspiciously clean, i left it like that on purpose rn ;) to test: open https://cipheros.techxtreme.me (if its asleep try https://cipheros-ten.vercel.app ). poke the polaroids around ig. drag a folder. pin a note, refresh, it should still be there. dont lose the pins hehe I have a lot in mind for v2, I had already noted down everything in few markdowns, So I amma start v2 after this ship igg", "repo": "https://github.com/its-techxtreme/cipheros", "demo": "https://cipheros-ten.vercel.app"}]...
|
[{"post_id": 65670, "ts": "202 [{"post_id": 65670, "ts": "2026-09-10T23:42:31Z", "hours": 1.6486, "text": "Devlog #8 New properties for the Yarn & a Clock app In the last devlog, I added the red strings kind of yarn that link folders to the windows of the apps, but it was always a straight line. So, during this devlog, what I tried to do was I made it so that the yarn actually bends, so that it gives the it much more natural look as if the yarn was actually connected to the app window, and due to gravity it was bending down a bit. That’s the kind of look I was trying to imitate. Next, I also added a clock-like app. like it can be accessed via clicking on the time in the top right corner. and it just shows the clock in a bigger window. Also regarding the yarn, it is now such that whenever I open an app window, the yarn obviously gets connected but after that. Lemme explain with a example. For example, let’s say i open the shredder, so the yarn is connected from the shredder file to the shredder app window. and whenever i move the window and place it somewhere on the corkboard, lets say some another corner of the webos, and if i close the window now, then the yarn, gets pinned to the corkboard in that location. So basically, it remembers where the last time the window was closed. And it pins the yarn as if it was pinned to the corkboard using a thumb pin."}, {"post_id": 64852, "ts": "2026-09-09T15:25:27Z", "hours": 3.0975, "text": "Devlog #7 Did many visual Changes Basically, last time what I did was I rewrote all of mostly codebase, made some changes myself and so that it is written by me. and also optimized it a bit . After that, i optimized a lot more of the codebase what i did in this devlog next is first of all i thought about trying to give it a new font style. i personally prefer font that is very easy to read and is much more spacey-spacey so, that’s what I did basically for right now. also added like this yarn structure. so like now when the windows open, that polaroid picture is actually connected to the window using you know, red kind of a yarn thing. like how those detectives actually have those many polaroids and pictures on a board, and then it’s all connected by these red and different strings, and in the end, they find the evidence. That’s the kind of thing that I’m trying over here. Gonna start working on the design overhaul nexttt :D"}, {"post_id": 64669, "ts": "2026-09-09T07:59:33Z", "hours": 1.5783, "text": "DEVLOGG this one is a short devlog compared to those from others Mostly the changes were done in the code, I rewrote majority of the code and made it more efficient, also rewrote README, as it was lacking many things."}, {"post_id": 64026, "ts": "2026-09-08T04:20:27Z", "hours": 1.0061, "text": "devlog #4 Shipping the desk next ig (WebOS 1) In the lastestt log i stuffed the folders. this one is just me putting the desk on the internet so someone else can knock the polaroids around :) Then wrote a real readme. not a one liner. two screenshots of the actual corkboard, and they actually show up on github this time. Live name is https://cipheros.techxtreme.me because i was not gonna ship a random vercel hash as the only url as always (gotta maximise the use of the domain i bought Tho obv vercel is still behind it at https://cipheros-ten.vercel.app if namecheap is taking a nap. Repo is public as it already was. btw added a mit license, cuz why not drag the tab, scribbly x closes, pins open stuff, notes stick in this browser, CASE 0 is the missing campfire hoodies, no password and the rest of the case story are a plan for next ship. v1 is the desk and all. if you open it and it looks like a corkboard thats because the PAGE IS THE corkboard. thats the bit."}, {"post_id": 63461, "ts": "2026-09-07T10:20:34Z", "hours": 2.9547, "text": "devlog #3 stuffed the folders (finally) the desk was awake but empty. like i bought manila folders and forgot to put paper in them. thats the part that was annoying me. notebook actually takes clues now. you type, hit pin note, they stay even if you refresh. scratch button is there because some notes are just me lying to myself at 1am 😂 Case files has little folder cards. desk map, active case, loop pile, and CASE 0. CASE 0 is the missing campfire flagship hoodies (L, M, S), stamped “MISSING”. no real shop photos so theyre sad hoodie silhouettes with a big ? which honestly fits.the shredder says evidence destroyed: 0. suspiciously clean. i didnt feed it anything on purpose. bugs i had to fight after stuffing it: notes would explode if localstorage had garbage the clue box was stretching like it wanted the whole folder hoodie window was too skinny so polaroids were eating each other extra click listeners on the pins were doing double duty for no reason anyway the apps exist now. next its gonna be readme then ship if everything works well on vercel ig"}, {"post_id": 61721, "ts": "2026-09-04T19:18:44Z", "hours": 1.6581, "text": "DEVLOGGG #2 // the board kinda woke up a little last log was basically html bones sitting on a white page like a sad school assignment. now it actually looks like cipheros. Cork wall is in. tape bar is in. the apps are polaroids pinned on the side, with red yarn doing the whole detective-board thing. i also made the windows look like manila folders instead of random browser boxes, so now the page has a personality and not just div div div energy. then i made the dead stuff wake up: [x] clock stopped saying --:-- [x] pins open their windows now [x] the tiny x actually closes folders [x] clicking a folder brings it to the front [x] dragging from the folder tab works mini chaos moment: the html got cursed for a bit and kept getting extra quote marks at the bottom. it was one of those bugs where everything works but the file looks haunted, so i cleaned that before calling it done +_+ still not doing the real apps yet. notebook doesnt save. CASE 0 is still just the missing hoodie folder waiting for photos. shredder is still empty, which is suspicious but fine. next iamma make the windows actually contain stuff. notes, files, hoodie photos. the desk is awake now, it just needs evidence."}, {"post_id": 60302, "ts": "2026-09-02T16:06:41Z", "hours": 1.6378, "text": "devlog #1 started cipheros :) ok so i wanted a WebOS that felt like a detective board, not another fake macos. Today I started with html only. no colors, no fonts, just boxes with names on them. Tape bar has CipherOS and a clock that says --:-- like its buffering forever. four pins (notebook, files, hoodies, shredder). five windows dumped on the page so i can see them. vscode kept fighting me on tags ngl. it loads tho. nothing works yet lol. next i make it look like cork. anyway thats the start"}]...
|
Title: CipherOS by @Athan | Stardance
Devlogs:
de Title: CipherOS by @Athan | Stardance
Devlogs:
devlog #1 started cipheros :) ok so i wanted a WebOS that felt like a detective board, not another fake macos. Today I started with html only. no colors, no fonts, just boxes with names on them. Tape bar has CipherOS and a clock that says --:-- like its buffering forever. four pins (notebook, files, hoodies, shredder). five windows dumped on the page so i can see them. vscode kept fighting me on tags ngl. it loads tho. nothing works yet lol. next i make it look like cork. anyway thats the start
DEVLOGGG #2 // the board kinda woke up a little last log was basically html bones sitting on a white page like a sad school assignment. now it actually looks like cipheros. Cork wall is in. tape bar is in. the apps are polaroids pinned on the side, with red yarn doing the whole detective-board thing. i also made the windows look like manila folders instead of random browser boxes, so now the page has a personality and not just div div div energy. then i made the dead stuff wake up: [x] clock stopped saying --:-- [x] pins open their windows now [x] the tiny x actually closes folders [x] clicking a folder brings it to the front [x] dragging from the folder tab works mini chaos moment: the html got cursed for a bit and kept getting extra quote marks at the bottom. it was one of those bugs where everything works but the file looks haunted, so i cleaned that before calling it done +_+ still not doing the real apps yet. notebook doesnt save. CASE 0 is still just the missing hoodie folder waiting for photos. shredder is still empty, which is suspicious but fine. next iamma make the windows actually contain stuff. notes, files, hoodie photos. the desk is awake now, it just needs evidence.
devlog #3 stuffed the folders (finally) the desk was awake but empty. like i bought manila folders and forgot to put paper in them. thats the part that was annoying me. notebook actually takes clues now. you type, hit pin note, they stay even if you refresh. scratch button is there because some notes are just me lying to myself at 1am 😂 Case files has little folder cards. desk map, active case, loop pile, and CASE 0. CASE 0 is the missing campfire flagship hoodies (L, M, S), stamped “MISSING”. no real shop photos so theyre sad hoodie silhouettes with a big ? which honestly fits.the shredder says evidence destroyed: 0. suspiciously clean. i didnt feed it anything on purpose. bugs i had to fight after stuffing it: notes would explode if localstorage had garbage the clue box was stretching like it wanted the whole folder hoodie window was too skinny so polaroids were eating each other extra click listeners on the pins were doing double duty for no reason anyway the apps exist now. next its gonna be readme then ship if everything works well on vercel ig
devlog #4 Shipping the desk next ig (WebOS 1) In the lastestt log i stuffed the folders. this one is just me putting the desk on the internet so someone else can knock the polaroids around :) Then wrote a real readme. not a one liner. two screenshots of the actual corkboard, and they actually show up on github this time. Live name is https://cipheros.techxtreme.me because i was not gonna ship a random vercel hash as the only url as always (gotta maximise the use of the domain i bought Tho obv vercel is still behind it at https://cipheros-ten.vercel.app if namecheap is taking a nap. Repo is public as it already was. btw added a mit license, cuz why not drag the tab, scribbly x closes, pins open stuff, notes stick in this browser, CASE 0 is the missing campfire hoodies, no password and the rest of the case story are a plan for next ship. v1 is the desk and all. if you open it and it looks like a corkboard thats because the PAGE IS THE corkboard. thats the bit.
DEVLOGG this one is a short devlog compared to those from others Mostly the changes were done in the code, I rewrote majority of the code and made it more efficient, also rewrote README, as it was lacking many things.
Devlog #7 Did many visual Changes Basically, last time what I did was I rewrote all of mostly codebase, made some changes myself and so that it is written by me. and also optimized it a bit . After that, i optimized a lot more of the codebase what i did in this devlog next is first of all i thought about trying to give it a new font style. i personally prefer font that is very easy to read and is much more spacey-spacey so, that’s what I did basically for right now. also added like this yarn structure. so like now when the windows open, that polaroid picture is actually connected to the window using you know, red kind of a yarn thing. like how those detectives actually have those many polaroids and pictures on a board, and then it’s all connected by these red and different strings, and in the end, they find the evidence. That’s the kind of thing that I’m trying over here. Gonna start working on the design overhaul nexttt :D
Devlog #8 New properties for the Yarn & a Clock app In the last devlog, I added the red strings kind of yarn that link folders to the windows of the apps, but it was always a straight line. So, during this devlog, what I tried to do was I made it so that the yarn actually bends, so that it gives the it much more natural look as if the yarn was actually connected to the app window, and due to gravity it was bending down a bit. That’s the kind of look I was trying to imitate. Next, I also added a clock-like app. like it can be accessed via clicking on the time in the top right corner. and it just shows the clock in a bigger window. Also regarding the yarn, it is now such that whenever I open an app window, the yarn obviously gets connected but after that. Lemme explain with a example. For example, let’s say i open the shredder, so the yarn is connected from the shredder file to the shredder app window. and whenever i move the window and place it somewhere on the corkboard, lets say some another corner of the webos, and if i close the window now, then the yarn, gets pinned to the corkboard in that location. So basically, it remembers where the last time the window was closed. And it pins the yarn as if it was pinned to the corkboard using a thumb pin.
Ships:
i made cipherosso thats its not a fake macos (saw a lot of them so tried smth else) the page is kindoff a corkboard. polaroids on the left are the apps. folders are windows. drag the tab (the little grip), scribbly x closes it, click a folder to yank it to the front. no min no max no resize. no password as required +_+ hard part was making it look like a desk and not a tutorial. cork grain, manila folders, polaroids with red pins. also stuffing the windows so they werent emptyyy. notebook actually saves clues in this browser. CASE 0 is the missing campfire flagship hoodies (L/M/S) cuz i didnt have shop photos so theyre sad silhouettes with a ? which ngl could be better, I’amma try asking for the pics on slack. im proud the page IS ACTUALLY LIKE a corkboard and that the shredder still says evidence destroyed: 0 suspiciously clean, i left it like that on purpose rn ;) to test: open https://cipheros.techxtreme.me (if its asleep try https://cipheros-ten.vercel.app ). poke the polaroids around ig. drag a folder. pin a note, refresh, it should still be there. dont lose the pins hehe I have a lot in mind for v2, I had already noted down everything in few markdowns, So I amma start v2 after this ship igg...
|
1792878432.2312036
|
1793742432.2312036
|
|
59634
|
Webos by @Veert | Stardance
|
Veert
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T05:11:16Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a modern and simple Os hope you guys enjoy it will further improve it with the feedback i get", "repo": "https://github.com/VrSchool11/Web-os1", "demo": "https://vrschool11.github.io/Web-os1/"}]...
|
[{"post_id": 64035, "ts": "202 [{"post_id": 64035, "ts": "2026-09-08T05:07:27Z", "hours": 0.5333, "text": "Installed Some music into the music player"}, {"post_id": 64023, "ts": "2026-09-08T04:13:54Z", "hours": 0.3775, "text": "Working on some improvements like the ability to enter your name"}, {"post_id": 63967, "ts": "2026-09-08T01:49:44Z", "hours": 4.1533, "text": "Started Working on the project and started designing and tweaking the ui"}]...
|
Title: Webos by @Veert | Stardance
Devlogs:
Start Title: Webos by @Veert | Stardance
Devlogs:
Started Working on the project and started designing and tweaking the ui
Working on some improvements like the ability to enter your name
Installed Some music into the music player
Ships:
I made a modern and simple Os hope you guys enjoy it will further improve it with the feedback i get...
|
1793141468.9898398
|
1793227868.9898398
|
|
58920
|
My own site! by @Aahan_Patel | Stardance
|
Aahan_Patel
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T04:13:47Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple webpage for my personal projects working on it to make it better", "repo": "https://github.com/AahanPatel2312/laughing-bassoon", "demo": "https://aahanpatel2312.github.io/laughing-bassoon/"}]...
|
[{"post_id": 63980, "ts": "202 [{"post_id": 63980, "ts": "2026-09-08T02:22:38Z", "hours": 2.62, "text": "My own website for airship"}]...
|
Title: My own site! by @Aahan_Patel | Stardance
D Title: My own site! by @Aahan_Patel | Stardance
Devlogs:
My own website for airship
Ships:
I made a simple webpage for my personal projects working on it to make it better...
|
1793108927.8622508
|
1793195327.8622508
|
|
44689
|
Inventory Management System by @Vedant_Daga | Star Inventory Management System by @Vedant_Daga | Stardance...
|
Vedant_Daga
|
2
|
10.0
|
115
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T04:02:26Z", "hours": 3.0, "multiplier": 8.87, "payout": 30, "blessing": "neutral", "text": "Inventory Management System an electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use. try it: https://inventory-system-manager.vercel.app sign up with any username and password. what it does projects hold parts. tear one down and say what happened to each: returned, soldered in, or broken. only the last two leave your inventory shopping list builds itself from what your builds asked for and couldn’t get every quantity change is logged. 10k and 10KΩ get caught as one resistor and merged fixed since last ship search matches every word, so “LCD display” works filter by tag, package and value without typing remove button sits inside the project table no more reloading to see new shopping list items shopping list exports to csv or text a real front page phone layout: buttons stack full width, tables scroll opt-in public roster test suite is back, 228 green how to test it sign up, parts > import, paste 10k resistor, 180, 10k, through-hole, passive new project, ask for more than you own, check the bench for the shortfall tear down, mark some soldered, submit, then reopen and watch it come back add 10K ohm and watch duplicates catch it", "repo": "https://github.com/DagaVedant/Inventory-Management-System", "demo": "https://inventory-system-manager.vercel.app/accounts/login/?next=/"}, {"ship_num": 2, "ts": "2026-08-24T15:08:02Z", "hours": 7.0, "multiplier": 12.82, "payout": 85, "blessing": "neutral", "text": "Inventory Management System its a electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use for a new project. try it: https://web-production-d6073.up.railway.app demo login: demo / stardancedemo what it is almost all of the other inventory tool assumes that once a part is used, it never comes back, which work for warehouses, not smaller projects start a project, it holds parts. tear it down, say what happened to each one: returned, soldered in, or broken only soldered and broken actually leave your inventory shopping list builds itself out of what your live builds asked for and couldn’t get every quantity change is logged with the balance it produced and the project that caused it 10k and 10KΩ are one resistor to me and two rows to a database. it catches those and merges them what was hard picking what to store. i store owned only, and compute held and available, so they can’t drift apart allocation used to refuse you if you were short. that meant a project could never be short, which meant the shopping list had nothing to build from. had to let it take what exists and record the rest making teardown undoable needed a whole extra field, because returned parts come from two different places and mixing them makes it unreversible fuzzy matching without being too fuzzy. 4.7k and 47k are different resistors so you can’t just strip punctuation tests found 4 bugs i thought were fine. 2 of them were failing silently what im proud of the ledger. every number on the site has a receipt, and there’s a command that recounts and tells you if it’s lying teardown being reversible. it was a one way door and that was scary to use how to test it log in as demo, go to bench open weather station , hit tear down, mark a few soldered and a few broken, submit watch owned drop, then hit reopen and watch it all come back bench again for the shopping list. 12 parts short across live builds click any part for its history table. every row says what changed and what it left behind parts > duplicates . 10k / 10KΩ and 470uF / 470 µF are sitting there as separate rows. merge one and watch the quantities add up or add a part called 10K ohm yourself and watch it get caught immediately", "repo": "https://github.com/DagaVedant/Inventory-Management-System", "demo": "https://inventory-system-manager.vercel.app/accounts/login/?next=/"}]...
|
[{"post_id": 64017, "ts": "202 [{"post_id": 64017, "ts": "2026-09-08T03:57:26Z", "hours": 1.7586, "text": "Devlog 4: Adding all the reviewer feedback went through every review from the last ship and fixed what was asked for. search : “LCD display” found nothing because the whole phrase had to match one field. now every word has to match somewhere. filters : tag, package and value dropdowns next to the search box, so you can cross-check values without typing. remove button : it sat outside the project table. it is inside the row now stale pages : you had to reload to see new shopping list items. that was the back button showing a cached page. fixed. shopping list export : download it as csv or plain text. front page : the root url used to bounce you to the login form. now it explains the idea and shows the bench. phones : below 600px the button rows stack full width, forms go one field per line, and wide tables scroll in their own box. roster : opt-in from settings. your bench goes on a public list with its part count, busiest tags and biggest stacks."}, {"post_id": 55213, "ts": "2026-08-26T19:30:38Z", "hours": 1.6142, "text": "Devlog 3 bug fixes getting all the ready to reship (reviewers pointed out a few things) not that many features will add tons more after feedback from this ship"}, {"post_id": 51947, "ts": "2026-08-21T22:01:35Z", "hours": 4.4806, "text": "ANYONE REVIEWING OR RATING, THE RAILWAY URL IS CLOSED AND I SWITCHED TO VERCEL. GO TO THE GITHUB OR THE PROJECT DETAILS Devlog 2 - Inventory Management System what changed the app tracks WHY a number moved now, not just what it is add stock, recount, teardown loss: all logged with a running balance a part’s page reads like a bank statement teardown can be undone (it was permanent before, on a 2 click button) shopping list that isnt tied to a project, for “im running low on 10ks” duplicate detection + merge. 10k, 10 K and 10kΩ are one resistor to a human and 3 rows to a database tags actually do smth now: click to filter, autocomplete, rename everywhere sortable columns, bench dashboard, paste-a-list import, rate limiting, backups bugs (the fun part save meeeeeeeee 🙏 ) making a part skipped the ledger completely. worked fine cuz the views covered it, which is how that survives until someone adds a 5th path deliveries read a stale number and left parts on the shopping list AFTER they arrived. silent, no error, nothing a literal backspace char got into a regex from shell escaping so it could never match. found it cuz 10kohms refused to fold into 10k named a flag --stdout and django remapped its own stdout kwarg onto it. backups looked fine and wrote to nowhere"}, {"post_id": 42237, "ts": "2026-08-06T21:06:01Z", "hours": 2.1522, "text": "Devlog 1 - Inventory Management System basically all of the sensors i own (A LOTTTTT) all live in one giant bin (ill send a pic of it in the next devlog trust). so recently, my dad fried me because i bought the same temperature sensor i bought like 3 weeks ago or smth (DHT22 for anyone intrested). basically what im building is a web app that acts like a inventory system for all my sensors. the thing that makes this diff from a spreadsheet or google docs is that this is SUPPOSED to be able to track ur parts are in use, soldered, broken, or available (not even close to there yet) the main reason i chose that type of system is because when i tried using a spreadsheet (ik, 1900s) it worked until i made more than 2 projects. with one project it works perfectly, but i have multiple projects at a time, each either on a perfboard or soldered down. and then some of them smoke, burn out, or even are faulty. the main thing about this app is that its going to be able to store what parts were used in ur project, and when u say u disassembled it, it will automatically move those parts back based on what you said — soldered, broken, reuseable . the empty app right now the app is literally empty. its just the Django admin page. i just spent some time getting everything linked like a new repo, railway app, postgres database, etc. i wanted to deploy everything rn rather than later cuz i dont want it to be a pain once i get to shipping this. it took like 2ish hours in total so not that bad, and basically none of it was using Django other than the admin page. the main problem i faced was ModuleNotFoundError: No module named '________' (shh i left it blank). i saved a new start command and a predeploy command so it works better. next four models, and figuring out the right formula to make sure that ur parts dont randomly start increasing — i tried creating a small POC algorithm and it went from having 2 DHT22’s to 5 DHT22’s after two fake projects."}]...
|
Title: Inventory Management System by @Vedant_Daga Title: Inventory Management System by @Vedant_Daga | Stardance
Devlogs:
Devlog 1 - Inventory Management System basically all of the sensors i own (A LOTTTTT) all live in one giant bin (ill send a pic of it in the next devlog trust). so recently, my dad fried me because i bought the same temperature sensor i bought like 3 weeks ago or smth (DHT22 for anyone intrested). basically what im building is a web app that acts like a inventory system for all my sensors. the thing that makes this diff from a spreadsheet or google docs is that this is SUPPOSED to be able to track ur parts are in use, soldered, broken, or available (not even close to there yet) the main reason i chose that type of system is because when i tried using a spreadsheet (ik, 1900s) it worked until i made more than 2 projects. with one project it works perfectly, but i have multiple projects at a time, each either on a perfboard or soldered down. and then some of them smoke, burn out, or even are faulty. the main thing about this app is that its going to be able to store what parts were used in ur project, and when u say u disassembled it, it will automatically move those parts back based on what you said — soldered, broken, reuseable . the empty app right now the app is literally empty. its just the Django admin page. i just spent some time getting everything linked like a new repo, railway app, postgres database, etc. i wanted to deploy everything rn rather than later cuz i dont want it to be a pain once i get to shipping this. it took like 2ish hours in total so not that bad, and basically none of it was using Django other than the admin page. the main problem i faced was ModuleNotFoundError: No module named '________' (shh i left it blank). i saved a new start command and a predeploy command so it works better. next four models, and figuring out the right formula to make sure that ur parts dont randomly start increasing — i tried creating a small POC algorithm and it went from having 2 DHT22’s to 5 DHT22’s after two fake projects.
ANYONE REVIEWING OR RATING, THE RAILWAY URL IS CLOSED AND I SWITCHED TO VERCEL. GO TO THE GITHUB OR THE PROJECT DETAILS Devlog 2 - Inventory Management System what changed the app tracks WHY a number moved now, not just what it is add stock, recount, teardown loss: all logged with a running balance a part’s page reads like a bank statement teardown can be undone (it was permanent before, on a 2 click button) shopping list that isnt tied to a project, for “im running low on 10ks” duplicate detection + merge. 10k, 10 K and 10kΩ are one resistor to a human and 3 rows to a database tags actually do smth now: click to filter, autocomplete, rename everywhere sortable columns, bench dashboard, paste-a-list import, rate limiting, backups bugs (the fun part save meeeeeeeee 🙏 ) making a part skipped the ledger completely. worked fine cuz the views covered it, which is how that survives until someone adds a 5th path deliveries read a stale number and left parts on the shopping list AFTER they arrived. silent, no error, nothing a literal backspace char got into a regex from shell escaping so it could never match. found it cuz 10kohms refused to fold into 10k named a flag --stdout and django remapped its own stdout kwarg onto it. backups looked fine and wrote to nowhere
Devlog 3 bug fixes getting all the ready to reship (reviewers pointed out a few things) not that many features will add tons more after feedback from this ship
Devlog 4: Adding all the reviewer feedback went through every review from the last ship and fixed what was asked for. search : “LCD display” found nothing because the whole phrase had to match one field. now every word has to match somewhere. filters : tag, package and value dropdowns next to the search box, so you can cross-check values without typing. remove button : it sat outside the project table. it is inside the row now stale pages : you had to reload to see new shopping list items. that was the back button showing a cached page. fixed. shopping list export : download it as csv or plain text. front page : the root url used to bounce you to the login form. now it explains the idea and shows the bench. phones : below 600px the button rows stack full width, forms go one field per line, and wide tables scroll in their own box. roster : opt-in from settings. your bench goes on a public list with its part count, busiest tags and biggest stacks.
Ships:
Inventory Management System its a electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use for a new project. try it: https://web-production-d6073.up.railway.app demo login: demo / stardancedemo what it is almost all of the other inventory tool assumes that once a part is used, it never comes back, which work for warehouses, not smaller projects start a project, it holds parts. tear it down, say what happened to each one: returned, soldered in, or broken only soldered and broken actually leave your inventory shopping list builds itself out of what your live builds asked for and couldn’t get every quantity change is logged with the balance it produced and the project that caused it 10k and 10KΩ are one resistor to me and two rows to a database. it catches those and merges them what was hard picking what to store. i store owned only, and compute held and available, so they can’t drift apart allocation used to refuse you if you were short. that meant a project could never be short, which meant the shopping list had nothing to build from. had to let it take what exists and record the rest making teardown undoable needed a whole extra field, because returned parts come from two different places and mixing them makes it unreversible fuzzy matching without being too fuzzy. 4.7k and 47k are different resistors so you can’t just strip punctuation tests found 4 bugs i thought were fine. 2 of them were failing silently what im proud of the ledger. every number on the site has a receipt, and there’s a command that recounts and tells you if it’s lying teardown being reversible. it was a one way door and that was scary to use how to test it log in as demo, go to bench open weather station , hit tear down, mark a few soldered and a few broken, submit watch owned drop, then hit reopen and watch it all come back bench again for the shopping list. 12 parts short across live builds click any part for its history table. every row says what changed and what it left behind parts > duplicates . 10k / 10KΩ and 470uF / 470 µF are sitting there as separate rows. merge one and watch the quantities add up or add a part called 10K ohm yourself and watch it get caught immediately
Inventory Management System an electronics parts inventory that tracks how many of each part you own, how many are in projects, and how many you can actually use. try it: https://inventory-system-manager.vercel.app sign up with any username and password. what it does projects hold parts. tear one down and say what happened to each: returned, soldered in, or broken. only the last two leave your inventory shopping list builds itself from what your builds asked for and couldn’t get every quantity change is logged. 10k and 10KΩ get caught as one resistor and merged fixed since last ship search matches every word, so “LCD display” works filter by tag, package and value without typing remove button sits inside the project table no more reloading to see new shopping list items shopping list exports to csv or text a real front page phone layout: buttons stack full width, tables scroll opt-in public roster test suite is back, 228 green how to test it sign up, parts > import, paste 10k resistor, 180, 10k, through-hole, passive new project, ask for more than you own, check the bench for the shortfall tear down, mark some soldered, submit, then reopen and watch it come back add 10K ohm and watch duplicates catch it...
|
1793098546.1352954
|
1793184946.1352954
|
|
10267
|
Rubik's Cube Algorithm Finder by @pi | Stardan Rubik's Cube Algorithm Finder by @pi | Stardance...
|
pi
|
1
|
17.33
|
149
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T03:56:02Z", "hours": 17.0, "multiplier": 8.73, "payout": 149, "blessing": "neutral", "text": "Search a Rubik’s Cube for short algorithms that solve a scramble or reach a target pattern. I made this project after I learned to solve a Rubik’s Cube. See, I have this bad habit of taking something I like and automating it. On the bright side, I now have a program that can automatically solve a Rubik’s Cube, much faster than I can! To run the Python program, follow the steps linked in the Try Project section.", "repo": "https://github.com/anagram-of-pi/rubik_cube_algorithm_finder", "demo": "https://alg-finder-install.netlify.app/"}]...
|
[{"post_id": 65701, "ts": "202 [{"post_id": 65701, "ts": "2026-09-11T01:04:58Z", "hours": 0.3286, "text": "Added a real demo :) My ship got denied because I hadn’t set up a proper demo (eg, wasn’t on PyPi or a binary) so I just spent 20 minutes doing that. I’m just posting a devlog for the record."}, {"post_id": 64009, "ts": "2026-09-08T03:41:45Z", "hours": 2.23, "text": "I haven’t worked on this in a very long time, haha So I stopped working on my Rubik’s Cube solver a while ago because it was more or less complete. I never actually submitted it though! I just spent a few hours cleaning up the repo, fixing some stuff, etc.. It is now presentable and shippable! I’m not sure exactly how to do this but my demo is actually a hosted web page giving instructions on how to install and run it. It’s not one line but actually two (one for cloning and one for pip install-ing) but I hope that’s okay. Thanks all!"}, {"post_id": 5070, "ts": "2026-06-08T19:05:36Z", "hours": 0.5742, "text": "My program found solutions that I’ve never seen before :) * I told it to find an algorithm that takes an F2L pair out (e.g., R U R’ U’). If you are not familiar with the Rubik’s cube, I told it to find a sequence of moves that would result in a certain state. * I knew about one, very common sequence (R U R’ U’) and it found 17 others that I had never seen before, in about a minute of search time. * Now all that’s left is to optimize it so it can find longer algorithms!"}, {"post_id": 5040, "ts": "2026-06-08T18:19:17Z", "hours": 3.435, "text": "This was meant to be a quick side project. I have now spent more time on this than my main project. What happened??"}, {"post_id": 4401, "ts": "2026-06-07T18:36:41Z", "hours": 4.5167, "text": "Successfully searched up to depth 6 (meet-in-the-middle, so essentially up to 12) and solved a 10 move scramble in 50 seconds! * This program solved a rubik’s cube that had been scrambled with “F R U’ B’ D’ R’ L F’ B U’”, so ten moves. It correctly found the optimal 10 move solution, as well as many others. * This is Python, and I’m already running 18 searches in parallel, so I’m not sure if I’ll be able to improve the raw speed, but I hope to prune more and maybe even do a heuristic-based search in the future. * I’m planning on doing some more with this that may involve loosening the constraints. That may or may not speed it up."}, {"post_id": 3956, "ts": "2026-06-07T02:49:40Z", "hours": 2.6847, "text": "Well I thought this would be a quick project. 2.5 hours of programming later: It was not. * Since the last devlog, I have a Rubik’s Cube represented correctly in the code now, and it can make moves. All I have left to do for this part of the project is to fix the str method that returns a visualization of the cube. Right now, it gets the orientation mixed up on up and down quarter turns, but it shouldn’t be too much debugging… * Here’s a screenshot of it working next to it not working:"}, {"post_id": 3854, "ts": "2026-06-06T22:30:51Z", "hours": 3.6764, "text": "This project is very difficult to debug! It’s just a big lookup table that I entered in by hand… I’m sure I made many typos, so that will be fun."}]...
|
Title: Rubik's Cube Algorithm Finder by @pi | Title: Rubik's Cube Algorithm Finder by @pi | Stardance
Devlogs:
This project is very difficult to debug! It’s just a big lookup table that I entered in by hand… I’m sure I made many typos, so that will be fun.
Well I thought this would be a quick project. 2.5 hours of programming later: It was not. * Since the last devlog, I have a Rubik’s Cube represented correctly in the code now, and it can make moves. All I have left to do for this part of the project is to fix the str method that returns a visualization of the cube. Right now, it gets the orientation mixed up on up and down quarter turns, but it shouldn’t be too much debugging… * Here’s a screenshot of it working next to it not working:
Successfully searched up to depth 6 (meet-in-the-middle, so essentially up to 12) and solved a 10 move scramble in 50 seconds! * This program solved a rubik’s cube that had been scrambled with “F R U’ B’ D’ R’ L F’ B U’”, so ten moves. It correctly found the optimal 10 move solution, as well as many others. * This is Python, and I’m already running 18 searches in parallel, so I’m not sure if I’ll be able to improve the raw speed, but I hope to prune more and maybe even do a heuristic-based search in the future. * I’m planning on doing some more with this that may involve loosening the constraints. That may or may not speed it up.
This was meant to be a quick side project. I have now spent more time on this than my main project. What happened??
My program found solutions that I’ve never seen before :) * I told it to find an algorithm that takes an F2L pair out (e.g., R U R’ U’). If you are not familiar with the Rubik’s cube, I told it to find a sequence of moves that would result in a certain state. * I knew about one, very common sequence (R U R’ U’) and it found 17 others that I had never seen before, in about a minute of search time. * Now all that’s left is to optimize it so it can find longer algorithms!
I haven’t worked on this in a very long time, haha So I stopped working on my Rubik’s Cube solver a while ago because it was more or less complete. I never actually submitted it though! I just spent a few hours cleaning up the repo, fixing some stuff, etc.. It is now presentable and shippable! I’m not sure exactly how to do this but my demo is actually a hosted web page giving instructions on how to install and run it. It’s not one line but actually two (one for cloning and one for pip install-ing) but I hope that’s okay. Thanks all!
Added a real demo :) My ship got denied because I hadn’t set up a proper demo (eg, wasn’t on PyPi or a binary) so I just spent 20 minutes doing that. I’m just posting a devlog for the record.
Ships:
Search a Rubik’s Cube for short algorithms that solve a scramble or reach a target pattern. I made this project after I learned to solve a Rubik’s Cube. See, I have this bad habit of taking something I like and automating it. On the bright side, I now have a program that can automatically solve a Rubik’s Cube, much faster than I can! To run the Python program, follow the steps linked in the Try Project section....
|
1793119644.1547196
|
1793206044.1547196
|
|
51612
|
Star Chase by @Hanthar | Stardance
|
Hanthar
|
1
|
9.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T03:33:42Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Star Chase What is it? I made a WarioWare-inspired game called Star Chase, which consists of three minigames that are all less than 10 secs long. It is a completely free-to-play game that you can access on itch.io. Challenges and Success Until almost two-thirds of the way into completing the game codes, time tracking was a major underlying problem for me. I ultimately figured it out near the end, but by then, I had lost close to 14 hrs of my coding time. However, it wasn’t all bad because the insufficient time recorded on Stardance led me to create a third minigame almost completely from scratch! I am very proud of how much I was able to code on my own, given that this was my first time using any official coding language. (Still can’t believe I made it) This is a very simple game, and all you really need to play is your arrow keys, space bar, cursor control, and, of course, the link to this game. I really tried my hardest creating this game, and I hope you enjoy it as much as I enjoyed making it! :)", "repo": "https://github.com/HT-AstroXcalibur5315/WarioWareGame", "demo": "https://ht-astroxcalibur5315.itch.io/star-chase"}]...
|
[{"post_id": 63933, "ts": "202 [{"post_id": 63933, "ts": "2026-09-08T00:24:23Z", "hours": 4.5239, "text": "Devlog #5 Finished my third minigame, and now, with the extra 4.5 hrs I logged, I’ve officially surpassed the 5 hr requirement! Yayyyy… I WAS gonna ship it today, but itch.io is down right now, so I can’t really upload my game and finalize shipping just yet. It is a real bummer, but I guess I’ll just keep working on the game and improving it for another day then. Today, I finished coding the entire Minigame 3 script and animated my UFOs so that they move from side to side now. I tried to get the laser beam/bullet I shoot to disappear after hitting a UFO, but I still haven’t figured that out yet. I guess the server error gives me a chance to fix that bug. Anyways, tomorrow I’ll definitely be taking a look at that and if time permits, maybe even add some music and sound effects. (*forgot to make the ship a banana ship, will do tmr hopefully) P.S. I have no idea what happened to my attachments. I swear I only uploaded one."}, {"post_id": 63107, "ts": "2026-09-06T18:40:17Z", "hours": 1.7967, "text": "Devlog #4 Never mind, I lied; I’m not going to ship it just yet. Don’t want to risk shipping it before Stardance “officially” records 5+ hours of my coding. :) Anyway, today, I worked on adding a third minigame, which I intend to be kind of like a WarioWare version of Space Invaders. (Come to think of it, maybe I should make the ship a banana ship.) I finished the layout and player controls today, so I just need to add the game script and edit the README before it’s potentially ready for its first ship! (Hoping for tomorrow. Back on the grind I go)"}, {"post_id": 62624, "ts": "2026-09-06T02:56:27Z", "hours": 1.5539, "text": "Devlog #3 I finally figured out all the time-tracking issues and actually ended up finishing my entire project AND my README in the 12 days since my last devlog. I’ve made it all more aesthetically pleasing now with new and improved fonts, and the game actually has winner and death screens now. Yayyyy… Star Chase is all set and already uploaded to itch.io. All I have left to do is do some final checks and get it ready for shipping! I’d like to thank @Shreyansh for helping me with my time-tracking; as my first-ever Stardance project, I don’t know what I’d have done without her support. Thank you. And to all the other WarioWareGame creators for giving me the inspiration I needed for my project, thank you. This project had a whole bunch of highs and lows, but you all made it possible. I am thrilled to have actually coded something that works for the first time and, all the learning opportunities were ones I’ll never forget. Here is a look at what my final game will feature. (I couldn’t post 6 screenshots, so the exact minigame layouts will have to stay a secret. The second one IS quite a bit different since the last devlog tho :P)"}, {"post_id": 53923, "ts": "2026-08-24T17:01:20Z", "hours": 0.3475, "text": "Devlog #2 I’ve finally finished my two required minigames, plus the title and intermission, and am now working on my winner and death screens. The coding went quite well for both games, but I had a little trouble connecting the scenes, as this is my first time using any programming language. I was wondering why there was no winning in the platformer game, but it turns out the signals weren’t connected properly! After I debugged that bit, I worked a little on my clicker game, where the buttons would not hide after being clicked, but that was an easy fix with a few extra lines of code. I’m still thinking of making the buttons smaller to make it a little harder, though. Time tracking is still giving me problems, but the advice I’ve been receiving is extremely helpful, so thank you for that. After I finish the last two components, I’m thinking I might ship it first before adding any new minigames, but that part is still undecided."}, {"post_id": 52027, "ts": "2026-08-22T02:01:53Z", "hours": 0.2994, "text": "As of right now, I’ve started on my second minigame of this compilation. This just so happens to be my first devlog, not because I’ve been lazy, but rather, because I’ve been having tons of problems with my time tracking. It’s been tracking alright, but it always goes to this invalid block, named «LAST PROJECT», instead of going under my actual game blocks, which is insanely annoying. It worked once the other day, but now it’s back to the errors. I’m still trying to figure it out, but if anyone knows the trick, feel free to help me out here."}]...
|
Title: Star Chase by @Hanthar | Stardance
Devlogs Title: Star Chase by @Hanthar | Stardance
Devlogs:
As of right now, I’ve started on my second minigame of this compilation. This just so happens to be my first devlog, not because I’ve been lazy, but rather, because I’ve been having tons of problems with my time tracking. It’s been tracking alright, but it always goes to this invalid block, named «LAST PROJECT», instead of going under my actual game blocks, which is insanely annoying. It worked once the other day, but now it’s back to the errors. I’m still trying to figure it out, but if anyone knows the trick, feel free to help me out here.
Devlog #2 I’ve finally finished my two required minigames, plus the title and intermission, and am now working on my winner and death screens. The coding went quite well for both games, but I had a little trouble connecting the scenes, as this is my first time using any programming language. I was wondering why there was no winning in the platformer game, but it turns out the signals weren’t connected properly! After I debugged that bit, I worked a little on my clicker game, where the buttons would not hide after being clicked, but that was an easy fix with a few extra lines of code. I’m still thinking of making the buttons smaller to make it a little harder, though. Time tracking is still giving me problems, but the advice I’ve been receiving is extremely helpful, so thank you for that. After I finish the last two components, I’m thinking I might ship it first before adding any new minigames, but that part is still undecided.
Devlog #3 I finally figured out all the time-tracking issues and actually ended up finishing my entire project AND my README in the 12 days since my last devlog. I’ve made it all more aesthetically pleasing now with new and improved fonts, and the game actually has winner and death screens now. Yayyyy… Star Chase is all set and already uploaded to itch.io. All I have left to do is do some final checks and get it ready for shipping! I’d like to thank @Shreyansh for helping me with my time-tracking; as my first-ever Stardance project, I don’t know what I’d have done without her support. Thank you. And to all the other WarioWareGame creators for giving me the inspiration I needed for my project, thank you. This project had a whole bunch of highs and lows, but you all made it possible. I am thrilled to have actually coded something that works for the first time and, all the learning opportunities were ones I’ll never forget. Here is a look at what my final game will feature. (I couldn’t post 6 screenshots, so the exact minigame layouts will have to stay a secret. The second one IS quite a bit different since the last devlog tho :P)
Devlog #4 Never mind, I lied; I’m not going to ship it just yet. Don’t want to risk shipping it before Stardance “officially” records 5+ hours of my coding. :) Anyway, today, I worked on adding a third minigame, which I intend to be kind of like a WarioWare version of Space Invaders. (Come to think of it, maybe I should make the ship a banana ship.) I finished the layout and player controls today, so I just need to add the game script and edit the README before it’s potentially ready for its first ship! (Hoping for tomorrow. Back on the grind I go)
Devlog #5 Finished my third minigame, and now, with the extra 4.5 hrs I logged, I’ve officially surpassed the 5 hr requirement! Yayyyy… I WAS gonna ship it today, but itch.io is down right now, so I can’t really upload my game and finalize shipping just yet. It is a real bummer, but I guess I’ll just keep working on the game and improving it for another day then. Today, I finished coding the entire Minigame 3 script and animated my UFOs so that they move from side to side now. I tried to get the laser beam/bullet I shoot to disappear after hitting a UFO, but I still haven’t figured that out yet. I guess the server error gives me a chance to fix that bug. Anyways, tomorrow I’ll definitely be taking a look at that and if time permits, maybe even add some music and sound effects. (*forgot to make the ship a banana ship, will do tmr hopefully) P.S. I have no idea what happened to my attachments. I swear I only uploaded one.
Ships:
Star Chase What is it? I made a WarioWare-inspired game called Star Chase, which consists of three minigames that are all less than 10 secs long. It is a completely free-to-play game that you can access on itch.io. Challenges and Success Until almost two-thirds of the way into completing the game codes, time tracking was a major underlying problem for me. I ultimately figured it out near the end, but by then, I had lost close to 14 hrs of my coding time. However, it wasn’t all bad because the insufficient time recorded on Stardance led me to create a third minigame almost completely from scratch! I am very proud of how much I was able to code on my own, given that this was my first time using any official coding language. (Still can’t believe I made it) This is a very simple game, and all you really need to play is your arrow keys, space bar, cursor control, and, of course, the link to this game. I really tried my hardest creating this game, and I hope you enjoy it as much as I enjoyed making it! :)...
|
1793141634.356363
|
1793228034.356363
|
|
39244
|
My Portfolio by @Harpaavan108 | Stardance
|
Harpaavan108
|
3
|
51.0
|
792
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T02:40:17Z", "hours": 13.0, "multiplier": 18.14, "payout": 243, "blessing": "neutral", "text": "Ship #2 for My Portfolio This is my second ship for this project. Since my first ship, I have mainly just added some small features to increase the UX. A lot of these changes were features that I had seen on websites that I liked. So when the time came to bedazzle my website, I implemented these features in my own website. One really consistent thing that I noticed while implementing these features, is that a lot of features are quite simple to implement once you understand the basic logic. I also noticed that once you add these small features, it can make a great effect on the UX, and that the few hours you put into the little things, can have a huge impact and create a great impression on those who visit your website. New Features I added a cool gradient horizontal scroll bar that fills up as you scroll down. I thought this was a super cool feature and required some simple JS logic to implement. The next thing was a loading page. It is a quite simple one, just having a gradient filled circle outline which spins to show a loading effect. Again a small feature just to add nice feel from the moment a person opens the webpage. The next thing was a scroll fade up reveal to everything in the site. I really like seeing this effect on other websites as well, so I wanted to implement it into my website as well I added media queries because I saw how bad the website looked on the phone, and it was just really annoying me. So I took the time to add that just in case I ever had to show anyone my webpage on the phone. After that, I decided to upload some of my certificates onto the website so people could very them, just to add another level of validity. However, instead of making the images open in another tab, I made them open in a modal that stays in the browser tab. I thought this was a super cool effect. Last thing was that I added my photo. To do this, I made it so that when someone hovered over my about me card, it would have a flip animation and on the other side my photo would show. I thought this was a nice and subtle was to implement my photo, without messing up any other styling on the page. Learning JS A lot of these features were implemented with JS, especially ones that were triggered with user input. I will acknowledge that I used AI to help with understanding JS logic for some of these features, and debugging as well, but I also learned along the way. I find JS much more complicated than HTML and CSS, and I think that I have really come far in understanding and implementing it. For examples, I can assign elements and add and remove classes based on user input. I still have some trouble with syntax, and that causes a lot of my problems, but I am really starting to get the hang of JS. I think that JS can create some really neat animations and effects, so I want to learn and understand this language, so that I can let others experience the cool things that I see on other websites. Overall I spent a lot of time on this project, and put in hours even after school started. It is a really personal project. I have come really far since I first started this project and I have grown confident in understanding and writing code and achieve the desired results. I probably will not work on this project after this ship, and will instead turn to other projects that I have pending. Please enjoy this project. If you have any suggestions, let me know in the review or as a comment, and I will try to implement it. Thank You!! Below is a picture of my stardance certificate in the modal that I made, and the other is a picture of the spinning gradient loader. Enjoy!!!", "repo": "https://github.com/Harpaavan-S/my-personal-website", "demo": "https://harpaavan-s.github.io/my-personal-website/"}, {"ship_num": 2, "ts": "2026-08-17T04:39:55Z", "hours": 37.0, "multiplier": 14.92, "payout": 549, "blessing": "neutral", "text": "My Portfolio Project Hi! Welcome to my Stardance project. In this project, I made a personal portfolio website so I could showcase my work. Especially as I enter high school this year, I wanted to have a platform to record all of my progress and have a way to display it to the public. I also wanted to get more experience with coding. Over the past few years, I have done like super mini project in HTML and CSS, but this website is one of my first fully developed projects, and that I have coded all by myself. So I took this opportunity to properly learn HTML and CSS, and also introduce myself to languages like JS and GLSL. Features The website has 6 sections that I made: Hero About Me Projects Experience Achievements Contact Here are some features of my website: The website has an interactive navbar which links to each section in the webpage. There is also a logo in the corner which will link to the Hero section. The navbar has a frosted glass look, which makes blurs the background behind it. The title in the Hero section (which is my name), has a rainbow gradient applied to it. The cool part is that the gradient moves and loops in the name, so the gradient is always moving slowly. This is actually applied to all of the section headings in the webpage. Each card in every section has a frosted glass look applied to it, so it will blur the background behind it. They also enlarge and brighten when you hover over them. The cursor is a small white dot instead of a regular cursor, which enlarges and turns light purple when hovering over a link to communicate to the user that the link is clickable and will lead somewhere. One of the main highlights is the background, which is a shader background made with GLSL, WebGL, and Three.js. The background is an animated gradient. It is also interactive as it will respond to the cursor on the screen. It is one of the key aspects that really make this website shine, and what really makes this project unique and different from other ones. The Easy and Hard Parts Easy Part There were some really easy parts while building this. One was building the HTML layout. After I understood the basics of making classes and organizing texts and everything, it was quite easy to start filling out info for all of the sections. I thought it would be like a really big thing to fill in all of that info, but turned out it wasn’t quite hard. Hard Part There were also hard parts. One main one was the shader background. First it took a really long time to code the first draft of that, as I had to make a shader in GLSL and then import Three.js, and all of that. But then that first draft didn’t work, so then it took me a really long time to debug the code as I had to look through everything for like typos and all that. I did use AI for this part, but it was still a really long and hard process, going back and forth trying to see what was wrong. But in the end it was totally worth it. Overall Overall, I spent a lot of time and effort in this project. One thing that I really wanted to do was make just that I documented all of my progress frequently in devlogs, and I think that I achieved that because all of the 13 devlogs that I have written are pretty detailed. I also wanted to make this unique to me, and I think that the shader background achieved that and just brought the project to a new level. I really hope you enjoy it, and I am happy to take any feedback. I hope to constantly keep updating this project over the next few years. Otherwise, I might add some new features to it (including a scroll bar) in the next month before Stardance ends and I get too busy with school. Below you can view some screenshots of each section of the website (it doesn’t let me upload a video, or else I would’ve done that). Enjoy!!!", "repo": "https://github.com/Harpaavan-S/my-personal-website", "demo": "https://harpaavan-s.github.io/my-personal-website/"}, {"ship_num": 3, "ts": "2026-07-26T23:22:26Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am working on my personal portfolio. Right now I am just working and crafting the sections and filling in some info. I still have to work on styling and go through all of the sections. But for now I am going to ship", "repo": "https://github.com/Harpaavan-S/my-personal-website", "demo": "https://harpaavan-s.github.io/my-personal-website/"}]...
|
[{"post_id": 63958, "ts": "202 [{"post_id": 63958, "ts": "2026-09-08T01:36:41Z", "hours": 2.1653, "text": "Devlog # 17 This is my final devlog before I ship! I wanted to add a picture of myself in the website so I tried to find a way to do that. I decided that I will make it so that the about me card will flip when hovered over and on the other side will be my image. I thought it would be pretty simple, so I began working on it at 12 last night thinking I could finished it in about 30 minutes. Turns out I was wrong. It took me more than two hours just to get a card to flip and show my image. It was a pain, but the end result looks really neat. Current Progress To make the flip card, I had to restyle the entire about me section. I used a W3Schools tutorial, but i couldn’t end up working well with it, so then I turned to AI for debugging, because I had so many div layers for that card, and then I finally styled it to look good. The effect looks really good though. As well, I decided to publish everything to Github as well now because I hadn’t published anything for the past couple of days so yeah. Then I found a problem with the images not getting pulled correctly, so then I had to transfer all of those to a public/ folder and then adjust the file paths for all of them in my code, and then reload and redeploy like a bajillion times. So it was a lengthy process, but I finally got it working publically, Next Steps My next step is to ship. I really hope I get rated good because I want a pebble time 2. After this I will begin to work on my next project for the remainder of the event, which is a new tab page. After that, I am done with Stardance, as I also have a lot of school work now. So I will ship soon!!"}, {"post_id": 63201, "ts": "2026-09-06T21:23:17Z", "hours": 4.7169, "text": "Devlog #16 So I decided to implement some feedback that I got from the last ship. One piece of this was adding my actual certificates into the website, so people could actually view them in the webpage. So I took some time to scan all my certificates. Creating the links wasn’t quite hard, and at first I thought about just letting it open in a new tab, but then I decided to create a modal just to enhance the UX. Current Progress I decided to add all my certificates into the webpage, just to add a layer of validity to my work. The first part was finding all of the certificates. Whatever I had, I added them to my GitHub repo, and just linked the relative paths in the webpage. The ones which I had online, I just drag and dropped into the repo, while the physical ones I had to scan and then add in. So that took a while, but wasn’t too tedious of a process. After that, I just made a “View ->” sign that appears when you hover over the card, and that is actually a link to the image. Then I decided to make a modal. I realized it actually isn’t too hard, but the JS logic is a but complicated. I styled the modal in CSS, and then just added a .open class to it which was activated when you click the link. So I’m starting to understand JS logic, the only thing that I have trouble with now is writing like proper syntax, as I still have trouble with writing the correct syntax, and that can cause some problems. So then I styled how the image looks in the modal. At first I though about add ing a X to close the modal, but then I made it so then if you press outside the image, then the modal disappears. Some of my UCMAS achievements do not have images attached to them because I couldn’t find actualy certificates for them, so I might take pictures of my trophies to put there, but I haven’t got to that yet, and I don’t want to put low-quality images. So those are still empty, but almost everything else is filled, so now you can go and view those. Next Steps I literally don’t have anything left to do on this, so I think the next step is to just ship. I will take a break from this project and begin to work on my next one, which will be making a cool new tab page from my browser. So expect a ship soon. If anyone has any suggestions on something to add, you can let me know! Below is an image of my stardance certificate shown in the modal on the page."}, {"post_id": 57641, "ts": "2026-08-29T21:00:28Z", "hours": 2.5014, "text": "Devlog #15 This will be a fairly short devlog. I spent this block adding media queries to my CSS code because I opened the website on my phone, and it just looked so wrong to me, so I spent some time doing that. I figured out a great way to simulate a phone screen in my browser using DevTools so I was able to adjust everything through that. Current Progress The plan was that I was going to do media queries at first, but I thought it would be too complicated so I held it off. Now I was kinda forced to after seeing how bad the webpage looked on a phone screen. I realized you just have to make on CSS rule for media queries using media (max-width: 768px) {} . I decided to use 768px because that is like a standard width, but I mainly tested it on 400px width. After that, I opened two windows with my code and as I went through it, I would add a media query rule in the other window. So I conquered my fear of media queries, and addressed that issue. Next Steps I am looking for things to do. One piece of feedback that I got was that my cards had hover effects that made them look like buttons, but had no button effects, so it was kinda misleading. So to fix this, I’m thinking of like scanning my certificates and uploading them as pictures that people can view in the browser. So that’s my next step. To accompany this, I might also do like a redesign of the website, like just adjusting some of the features. Also, I’m thinking of adding a dark mode/light mode feature on it. Below is a quick video of the site on a device with a width of 400px."}, {"post_id": 53562, "ts": "2026-08-24T04:58:54Z", "hours": 4.0317, "text": "Devlog #14 So I started working on it further before my project even got fully rated, so this is my first devlog after shipping my portfolio! During this block, I just added some small features that just overall polished my site a bit more. A lot of these features were added in JS, and I think I actually am starting to get the hang of JS in the way that I actually am starting to understand how to identify objects using const and like how to select them using document.querySelector . So I think I am starting to learn, and just working with these little features just got me a little more familar with JS. I also got the hang of CSS animations, as before I had a little trouble understanding keyframes, but now it makes sense, so it was a good block. Current Progress I added three main things to my website, each of which use JS in them, and I will explain how. The first thing that I added was a scroll progress bar at the top. I really wanted to add this onto website, as I really liked seeing them on other websites, and I styled it to match my theme, and it just looks super good. I make a horizontal bar in my navbar for this, and it has a rainbow gradient. Basically, JS detects where the person is at the website, and just adjusts the scale based on that to show the bar. At first, I made it so it would expand as I scrolled, but then the rainbow was like squished at the beginning, and then I adjusted it so that it actually revealed the bar as I scrolled down, so like same idea but just applied to a different thing. I looks super cool now. The next thing that I added was a loading page. I tried to look into some videos for this, but I ended up making a super simple gradient ring that was animated (again to spin a rainbow). For this, I like made a loader page, which covered the whole view. In it, I made a circle which had a rainbow conic gradient, and then just animated it in CSS to rotate to 360 degrees over the course of like 1.2 seconds. I then used JS to add a class which made the loader disappear and like unresponsive to any pointer controls when the site finished loading. It also looks super good and totally matches the vibe of the site. So yeah, super happy with that. The last thing that I added was like a scroll fade up reveal effect to almost everything in my site, like the cards and the headings and everything. Again, this was a pretty simple trick that I used. Basically you set the object a set number of pixels (like I used 30px) down on the Y axis and turn the opacity down, and then when JS detects the object as the person scrolls, it just moves it up to 0px on the Y axis and goes to full opacity, and it ends up looking super sleek. That little touch just upped the whole website. I was actually looking to add this feature in the beginning of my site, but I never got to it mainly because it used JS, so now I took the chance to add it in. A lot of these features were ones that I saw in like cool websites. So like I’m always on the lookout for cool features, and these were some that I thought really made a website look more polished, and I realized that they are not actually that hard to build once you understand the core concept. Through these I really got better in JS, and upped my skills in CSS, so it was a good block. Next Steps I really do not have anything left to add in this project. Like I even added extra stuff. Please, if you guys have any suggestions, comment them so I can implement them. I will attach a video of my site so you guys can see what its like. One thing I might consider adding is like a easter egg thing or some like sequence or action that will generate a cool surprise. I have to still think about that. But right now I have almost nothing left to do. I actually might ship this again just to get the hours counted in. Below you can see the loading and the scroll fade up reveal and the scroll progress bar at the top."}, {"post_id": 48639, "ts": "2026-08-17T03:42:49Z", "hours": 7.0575, "text": "Devlog #13 (Last Devlog Before Ship) I am finally done with my website. Please read the NEXT STEPS section of this devlog as I have favour to ask you guys . I spent 7 hours of my life building a shader background for my website, but it totally paid off in the end because now I have a really cool, interactive, animated gradient background. I used GLSL to write a shader, and WebGL and Three.js to implement it into my website. I used a video tutorial and some AI debugging to achieve the effect, but it really was a learning process, as I had to install all the tools for it and then work with those, so I learned how to use those. Because of this, I also spent some time updating my README. Current Progress First of all, it took me a really long time to find a good tutorial to make a background, because I really wanted an animated one to show my blur effect and really add a pop to my website. To acheive a shader background I watched a video tutorial from Codegrid, which explained everything really nicely and was quite quick, so I was able to write the code. After though, the background didn’t quite show, so then I used the help of AI to help debug the code and get it working. After I finally got it to work, I spent some time adjusting colors, and brush strength and size, and then distortion amount and fluid decay and all of that stuff until I found the perfect values for a super good looking background. Overall, it was definately worth the time and added a really nice touch to my webpage. I also updated by README, because now the user will need to install some dependencies for this webpage because of the addition of Three.js and everything. So I updated the README to include proper instructions for that and so it explained some more features of my website. I really polished it up, because it was kinda messy before, so I got it ready for a ship. I also changed my cursor one last time. What I had before was a <div> element in HTML following my actual cursor using mousemove in JS, and my actual cursor was hidden in CSS. However, it was like lagging behind and that was starting to show on my new background. So instead, I just made my cursor a little white dot in CSS by liking making a svg file and linking it to the cursor. It just improved user interaction a lot be removing any lag between an following element and the actual cursor. There is still the feature where it will turn bigger and light purple when hovering over a link. Next Steps My next step is to ship!!! However, I have to ask you guys for something. I need some color suggestions for my background. I got a nice one right now that is like dark purplish, but I want your guys’ suggestions on what type of gradient I should make. I can put 4 colors into the gradient. You can use the attached video below to view how the shader looks on the hero page. I do have glass cards, so I don’t want something too light, but it could make a nice addition in a dark gradient. So please put some suggestions in the comments!!! Thank you!!! I will ship right after this, but I will for sure try to look over some color suggestions and experiment around with them. I might try to use one before I ship the final version of the website, so please put some suggestions. Expect a ship really soon."}, {"post_id": 46584, "ts": "2026-08-13T22:23:45Z", "hours": 4.4961, "text": "Devlog #12 This block was mainly dedicated towards making my site look a lot more aesthetic. I spent over 4 hours just tinkering with JS and fonts and color combos and everything, trying to find the perfect combos and fonts that looked super good. I am overall very happy with the progress that I made in this amount of time. At first I thought that the site looked good even without any styling because of my color gradients and all of that, but I just realized how much better it is with like better fonts, and like the small things, like moving gradients instead of static ones. So this whole block was just dedicated to making my site look better. Current Progress The first thing that I did was change my cursor. For this I had to use JS. I changed the cursor to just be like a little white dot with a nice glow around it, and then when it hovers over like a link, then it gets a bit bigger and turns into a light purple color. In JS, I figured out how to like grab an element from CSS, and then use like states, like mousemove to have like a specific action, and then like have the dot follow my actual cursor, but super close so it seems like that is the cursor. And then I hid my actual mouse to really sell the illusion. For the hover thing, I created a hover class in CSS, and then added that class when the mouse “entered” a link, and removed it when it “left” the link. The next thing I did was make the gradients on my text like circle around, so the gradient was always moving around and it looked like dynamic. I actually got this idea from the Hack Club website because in there they have a moving gradient on the text. For this, I actually did not need any JS, and instead just make a looping animation in CSS for the background of the text. I first did it only for the Hero title, but then I liked it so much that I added it to all of the section headings so yeah I thought was a really nice addition The next thing that I did was to edit my skill icons. I mentioned in a previous devlog when I was styling the About Me section, that the little subtitle for each skill was showing on the top of it, so then for skills in the bottom row, it was covering the skill on top. I also used JS for this fix. I first made a class for the subtitle on the bottom, and then again in JS made it so if it was detected to be lower, that class would apply The last thing I did was change the fonts. I am really happy I did this, because the site just looks so much better with different fonts. I imported all of my fonts from Google Fonts. I inserted the link in the <head> section and then used that font family in CSS. I did a lot of like comparing and swithcing around and researching and all of that just to find good fonts, and I have a really bad habit of like taking a lot of time on these kind of things, and it wasn’t even getting tracked on Hackatime, so I tried to do it quickly. I found some really nice fonts for the headings and titles so I am super happy with that. Next Steps Now the only thing left to do that I still havent gotten around to yet is making a really nice background in JS. I really want to make an animation background, because I think that will be like a unique aspect of my website. The main thing I really want that for is the glassmorphism effect that I have on the cards. On a plain dark background, you can’t tell at all that there is a glass effect. But with a sick background that moves, you can see that shapes blur under the cards. So I think that is the last thing to do, because I finished up all the small little details. However, I also think this will be the longest and hardest part because of its complexity in JS so yeah. I am really hoping to ship soon after 1 or 2 more devlogs. Below is a video of the new hero section with cool fonts and a moving gradient background."}, {"post_id": 45456, "ts": "2026-08-11T22:41:43Z", "hours": 3.7847, "text": "Devlog #11 I have finally finished styling my whole website in CSS. It was such a long process, but I really think that I learned how to code in CSS. Position and display no longer confuse me and I have gotten the hang of adding cool effects to me elements. I am really liking the theme of my website, but I still have more to do. Right now, I have a lot of empty space in my website. Because all of my cards are glassmorphism, I am planning to use JS to make really neat background just to add like a nice touch and really sell the website, but that might be after the first ship. I am also planning to change some fonts and all that, so still a lot to do. Current Progress I finished the Achievements and Contact section and also styled my footer. I made a masonry style layout for the achievements, and I think the design turned out really neat. At first, I thought I would use a flexbox or a grid, but then I saw that I could just make a fized number of columns and the text would just automatically arrange itself. So I used that instead of getting all tangled up in like flex and grid properties and all of that. But then it actually made it like vertically ordered, but I wanted it horizontally, so I took the time to like arrange them so that the layout would appear even and it would look like it was horizontally arranged, when in reality it is actually vertically arranged but in a weird way. It makes more sense when you look at it. I also finished the Contact section. This was quite easy. I just styled it like the Hero and added two little icons: one to my email, and the other to my github, so yeah that was pretty simple. I first thought of adding a contact form, but then I realized that that needed a backend, so I decided against that. Again, if I want, I might add it later in the future, but for now I will leave it at just to two icons. So mainly I finished those two sections in this block. One more cool thing that I discovered was how to make links open to a new page, because while I was trying out links it was bugging me that it was always opening in that page, so this really put my mind to ease a bit, and makes navigation a bit easier. Next Steps I am planning to ship very soon. I am thinking of just adding some finishing touches before shipping the first version, like some font changes. I might also just try to play around in JS, and like get a feel of it, Because I think that a cool background will really take it to the top, so I will play around a bit with that. i’m also thinking about adding like scroll up effects, especially for like my experience timeline. But yeah next steps might just to be to polish it up just a bit before shipping. I am super excited to try out JS, and hope that the final product will be awesome. Below is a picture of the masonry effect of the achievements section."}, {"post_id": 44357, "ts": "2026-08-10T02:05:02Z", "hours": 3.055, "text": "Devlog #10 I have finished the Experiences section of the website. This section was for sure a lot trickier than I thought it would be. The hardest part was trying to figure out how to arrange the boxes in a vertical but staggered order, so I could build the timeline. However, on the upside, I was able to quickly do styling, because a lot of the colors and like hover effects and everything was already set up in my code from styling the previous section, so that did not take too much time. Overall, I really like how this section turned out, and I think it is a bit different from the rest of the sections. Current Progress I completed the Experience section. This one is styled a bit differently from the other two. In this one, the timeline in centered and it goes longer than the length of the screen. The about me section and the projects section were all set to be as tall as the screen itself using height: 100dvh , but this one is actually dictated by the length of the cards, and then I added some padding at the bottom to separate it from the next section. The tricky part was to actually make the timeline affect. At first I did some research and thought or using pseudo elements in CSS to create a line through the middle of the page and arrange the boxes beside it. But that was way too complicated and didn’t seem to work for me, so I decided to arrange the boxes first and then add the line later. To arrange the boxes, I first centered them vertically in the middle of the screen, and then gave half of them one class and the other half another class. Then I pushed one class completely to the right, and the other to the left and that created a staggered timeline look. Then I needed to add a line through it. To do this, I created an empty <div> tag at the beginning of my experience section and then styled it as a line as long as my experience cards and then filled it with a rainbow gradient to kinda match my theme. I also added tiny circles using the same method to the timeline wherever their was a card to kinda just make it look cooler. I will acknowledge that I did use a bit of AI for this section to research the different ways to position the boxes, but otherwise I implemented all code by myself and I did not copy paste anything in. I really think this section introduced me to the flexibility in CSS, and how to manipulate different rules and elements to get the desired effect. Next Steps I am now going to work on the Achievements section. I am planning on making this section like a staggering kinda page of acheivements, like not quite even, just like a mosaic, because there is a lot of content in this section. For a kind of visualizer, I am planning to kinda style it like a pinterest page so like staggered and just fitting together. I just hope that it doesn’t turn out to jaggedy or uneven at the end of that part, and that it doesn’t take too long to organize them to look like at least like reasonably even at that. Hopefully I finish this section pretty quick, like just an hour or 2, and then I will quickly finish up the contact section as well, so then I will post a devlog of those two, but yeah I will see. I think I am getting close to a ship so keep an eye out for the next few days. Below you can see like the full experience timeline like zoomed out and I am hovering over the first card."}, {"post_id": 43667, "ts": "2026-08-09T01:57:34Z", "hours": 3.26, "text": "Devlog #9 I finished the Project section of the website. I also took some time to like style and experiment with some like hovering effects in the website. I also figured out how to color texts with gradients, so I changed all of my main section headings to cool colorful pastel gradients. I also made each glass card look cool when you hover over it. I also made some of the text like get bigger or show cool stuff when you hover over it. So yeah. I really think I am getting the hang of CSS. Most importantly, I think that I am able to use resources from the internet and apply them accordingly to my website. This block was mainly like a styling portion to kinda experiment and apply some aesthetics to my site. Current Progress I finished the Projects section. This section was much easier to arrange. Instead of using display: flexbox I used display: grid to help position each of the cards into an organized layout. What I really like about this display is that it automatically does all the math itself and gives each card its own equal amount of space so that they look even on the page. I got 4 nice cards for each project. I also styled the the heading to look like a gradient. I figured out that you make the background image a gradient, and then clip it to the text, and then just make the text clear so that the color shows. So I made all the headings look like that. Another thing that I did was use box-shadow to make the cards look cool when I hover over them. I realized that there are a lot of elements for the box-shadow, though once you figure them out, its not too complicated. So then I applied the box shadow effect to everything in the website that it would look good on. So yeah that was also a learning experience. I also figured out how to make a specific thing appear once you hover over like a bigger topic. So like I made some text a bit bigger or like an element appear when i hover over the whole card. You add the hover rule for the big card, and then add the class for the specific element, and then do your ending look. I used that for some things. So I really got some styling done to make my website like look better. Next Steps I will now work on the Experience section. I have around 6 cards for this. For this section, I am planning on making like a scrolling timeline to showcase like all of the past stuff in a chronological order. This might be tricky because up until now I was using the height: 100dvh to determine how big a section would be, but this one is going to have to different from that because of its scrolling nature. So yeah. But I think I am really getting the hang of positioning and display. and how to manipulate objects between different rules. I am starting to realize that code is not as strict as I thought it was. Like I thought everything needs to be like letter precise, but you have a bit space to improvise and experiment. So I can actually code a bit in CSS. I really enjoying styling things, like the gradient texts or like hover effects, so I am going to make sure to include those things in this next section as well. I am excited to get to work and encounter this new challenge. Below is a picture of the Projects sections and I am hovering over the first card, so you can see the hover effect."}, {"post_id": 43107, "ts": "2026-08-08T06:12:14Z", "hours": 3.0431, "text": "Devlog #8 I am finished the About Me section. I came across a problem though. In the pills, I want it to be like that when I hover over the pill, the name of that skill shows above it in a small text. However, pills in the bottom row, their text will start to hover into the pill of the next row, so that messes up the thing. BUT, if I add a space, it will look like a really weird gap between the rows. I did some research and I read that I might need to use some JS to fix, so like pills on the bottom, their text shows on the bottom, and pills on the top, their text shows on the top. So I am going to leave that for now, and work on it after I am done with the rest of the webpage. Current Progress Right now I finished position the stuff for the About Me section. I found this part really complicated, especially with the little icons. I ended up having to add more classes in my HTML to style them accordingly in CSS. Again, I still have a bit of problems with positioning, but I am starting to get the hang of like display , margin , padding , and gap , and how they work with different classes to arrange and organize everything. I also learned how to use transition to just make thing shift smoothly when you hover one them. This section took me a really long time because I had to arrange the about me text and all of my skills. I figured out where like display: relative and display: absolute are used, because I then had to arrange my text so that it was like positioned vertically 110% and horizontally 50% of the icon, so they helped in that. Otherwise, this part really familirized me a bit more with CSS. I especially got the hang of like background and border styling, and how to experiment with corner rounding and different colors and transitions and all of that, so I think this section was really a learning experience. Next Steps I will now begin to work on the Projects section. For this section I am just thinking making cards for each project each with a glassy effect behind it. Because I am giving each element like a glass effect, I am planning on making a super cool background later once I finished the site in JS so that the glass effect really shows and provides a unique aspect to my website. I think this section will be a lot simpler, but I will have to add more classes in HTML to do this I think. A tricky part might be to style the links, because I have links to all of my projects and their repositories, so yeah. Once I figure out the positioning of the cards, its practically smooth sailing from there, because like adjust font sizes and colors are like pretty easy for me. I might even make like the glass lighten up when I hover. One thing I want to experiment with is with box-shadow so that a shadow shows underneath the card. So I will play around with that. Otherwise, I am excited to continue working on this. The layout for this section is similar to the rest, so I think from here I will begin to quickly finish up the rest of the sections. You can view the about me page here. I am hovering over the HTML pill, and you can see the text over it."}, {"post_id": 41119, "ts": "2026-08-05T03:35:16Z", "hours": 3.1164, "text": "Devlog #7 I finished creating the navbar and have finally started on the CSS. Now because I am a complete beginner to CSS, I did use some help of AI just to kinda get the hang of like rules and all the different like properties. I DID NOT copy paste anything from AI. This is a project that I am doing to learn HTML and CSS. I actually want to learn this, and AI is just assisting me. I completed the navbar in CSS, and started on the Hero section. Right now positioning for CSS is confusing me a bit, so I need to work on that a bit more. The Hero was fairly easy as in the text, and I haven’t added much to it, but I figured out how to center it. The next steps will be to work on the about me section. Current Progress I finished up the navbar by quickly making a list of links at the very top of my html that went to each section. I also added a logo in the other corner (which is just my initials for now) which will link back to the hero page, like the top of the webpage. I was able to add a nice frosty glass effect the navbar, which was pretty simple. All you got to do is make the background like a little translucent and then add a blur effect. I thought it would be super hard, but it actually wasn’t. I am probably going to use this same formula for the glass cards of each section. My plan is to make them more interactive as I continue, but for right now I will just keep it at that. For the hero, the plan is to just make my name and a short subtitle below, and then add a cool effect around it. For now I just mapped out the area of the hero section. I realized that 100vh is the same as the whole area of the screen, so that is perfect for the hero section. I set the height to that. I also learned that you could access text from within sections that you have id’ed, ex. like I could access the <p> text in the hero section by using the rule #hero p {} so that was pretty neat. Like I mentioned, I used AI to help with some of the centering stuff, because there are a lot of rules for that. I also learned a lot about default positioning, and relative, and fixed positioning. I decided to use position: fixed; for the navbar so it stays on the page the whole time. I still need to get the hang of positioning, but as I begin the next sections, I think I will learn to do that on my own. Next Steps I finished the Hero section for now for CSS, so I will start with the About Me sections. Again this section will have like a blurb about me and then little icons of all of the skills that I know. This is for sure going to be a lot more trickier than the Hero section. My plan is to first try and do the basic styling on my own, and then refer to other resources to polish it up. I am probably going to use the glass effect for the about me blurb and then as a little background behind each icons, like a little drop. I am excited to get this part complete because right now I just have like a very long list of large images in the website, (which are the icons for the skills) that are taking up like the whole screen and I am so ready to get rid of those and just clean up the webpage a bit. After those are organized into the skills, then everything will just be a little cleaner. I am planning to organize the skills based on software, hardware, and then others. The icons are already organized in HTML, so I am excited to begin tomorrow on styling the next section. The navbar is glassy, its just because there is nothing under it to be blurred thats why it doesn’t show."}, {"post_id": 40465, "ts": "2026-08-04T00:41:21Z", "hours": 2.0869, "text": "Devlog #6 I have finally finished the HTML section. I have organized all of my sections and filled in enough information to make a complete portfolio website. I’m not going to worry about any more of the info and just continue on to CSS and styling my website, I think this is going to be a lot more tricky because now I have to arrange and order everything and make it look pleasing and smooth. Right now I am going for a darker vibe. I don’t have like a specific theme, but I might add like hints of color around the website. I am planning on making like cards that each have a glass morphism effect. Current Progress Right now I filled in the skills sections. Like I said before, I am planning to just show the icon on a glassy back. I am going to back it so that when the person hovers over it, it will show like a text of what the skill actually is like the name. I learned how to use a <snap> tag, which is kinda like <div> tag but it doesn’t need it’s own line, so you can kinda group things inside groups without like tabbing again. I put it on the labels for each skill so I could style it separately from the icon in CSS. I was able to get icons for every skill in there. I used Devicon for some programming languages and Flaticon for some of the other ones. I finally got the hang of images. They show on the preview so I think they will show in GitHub pages later as well when I publish them. I still have to see but I think that a succes because in my first devlog the images actually didn’t work, so this is good. Right now they are huge, but I will fix them in CSS. I put them all in the same class, so I think it won’t be too hard. Next Steps I actually forgot to make a navbar, so I will quickly make a navbar and then begin CSS. I don’t thing a navbar will be too hard because it is just links. I will most likely keep it as a header at the top, and just apply a nice glassmorphism effect to it. But yeah, I actually got to make a navbar in HTML, so not completely done with that, but after that I will for sure be done. I might not post a devlog after building the navbar and might just move onto CSS, but it depends on how much time it will take. If it takes more than an hour, then I’ll post a devlog, other than that, I wil post one after some work with CSS, maybe after making the hero section. Below are the some of the image from Flaticon"}, {"post_id": 40271, "ts": "2026-08-03T18:12:42Z", "hours": 1.47, "text": "Devlog #5 I am still working on the HTML portion, but I am nearing completion. I think that the next devlog that I post will be the last one of HTML, and after that I will start to move onto CSS. Speaking of CSS, I am still deciding whether I want to experiment with JS for this project. I have no experience in JS, so it might be like a later thing I want to add after I finish the initial draft of the project. I think it will make it look super smooth with cool animations, but I am still deciding, I think the amount of time I will spend in CSS will decide whether I want to use JS or not. Current Progress I have now added some cards to the Awards section. This one did not take too long because I was able to figure out the tags quite easily because by now I have experimented a lot with them. One thing I learned how to do was to create lists in HTML. It was quite simple. Once you figure out the tags then it is pretty easy. I have a lot of awards that are like issued from a single organization and then some standalone ones, so I used the <ul> tag to create an unordered list and the <li> to add each item to my list. Overall I am planning to make like a card mosaic. Because they are all going to be like different sizes, so they will look kind of like a Pinterest post with like broken blocks, but fit nicely together. I think that will be the simplest way to style it in CSS right now, so I am going with that. Overall, this did not take as long as I expected. I actually already had a document ready, so many were just copied from there. Next Steps I have already filled out the Contact section. I just linked my email and added a little description. I don’t have a lot of forms of contact , so I am going to stick to just email. Now I am going to work on adding my skills, because that is in the about me section. I am not going to actually write it but instead add like little logos for each like skill so that is the next step. I am planning to separate them by like software, and hardware, and like other maybe, but I am going to work on that next. Again I hope that the next devlog will be the last for HTML before I begin CSS."}, {"post_id": 38499, "ts": "2026-07-31T22:25:20Z", "hours": 3.4719, "text": "Devlog #4 I have filled in some more sections of my webpage. I am still at the HTML portion. Right now the webpage looks like really bad when I view, and it’s tempting for me to move right to CSS to begin styling, but I think it will be easier for me in the long run if I finish all of the HTML now, at least all of the sections. Of course, if I move onto CSS, it won’t mean that I’m completely done with HTML, I will always be adding more stuff and I find ways to improve my website. Current Progress So before I had filled out the Projects section. I was working with GitHub a lot, uploading my projects so I could link them. I also had to use the Github desktop app to upload some files. Because I had opened the website repository in my VSCode desktop app, I think that something got mixed up, and the file didn’t save properly, so then my whole projects section got deleted. I had to spend some time filling that in again, though it wasn’t too hard the second time because the live preview in the browser still had the text in it, and I had already created all of the links again. Then I made sure that my files would autosave, and that the repository was properly linked. After I pushed the commits to Github to save it there, and I will do the same after posting this devlog. After that I began to fill in the Experience section, and that was mainly the majority of this time block. Again, I had to like go back and kinda figure out the dates of everything. I am thinking like a timeline style for this one, and that I will have like a little card for each thing. The plan is to make a scrolling website, so that each card will like appear as you scroll down. I have got a good solid like 6 cards of stuff, so for now I am done with that section. I learned more about like div and section tags during this. I also learned the effect of applying classes to text, as it seperates it from other text when styling it in CSS. I applied it to the date text in the experience sections, so that the time frame will be like a little substitle, different from the actual text in the card. Next Steps I am probably done for today. Next, I will start to work on the awards sections. A challenge will be to organize those sections because like I have many awards from a specific section but then some are just standalone, so I still a have to figure out how to organize the sections in HTML and how to apply the section and div tags. However, I don’t think I will use the section tag, as that may only be for sections that will be in the navbar. But organizing the awards using div and applying different classes will be tricky and hard to keep organizing. i want to make sure that I continue and keep my code nice and clean so that CSS styling is easy."}, {"post_id": 37296, "ts": "2026-07-29T22:04:53Z", "hours": 1.9631, "text": "Devlog #3 I have started to fill in some more information about myself in the webpage. The plan is that I will first constuct the HTML layout and fill in all of the sections. Because I am still a high student, my portfolio will look a bit different because I am not actually advertising a service or anything like that. The order that I am planning to go in is the following: Hero About Me (along with skills) Projects Experience Achievements/Awards Contact Current Progress Right now I have constructed each of the sections in HTML. I am using the section tag to separate each of the parts that I just described above so that I can link them using a navbar, though I have not created anything for a navbar yet. One thing that confused me for a while was the difference between section and div tags. After some research, I realized that section actually separates the parts in the HTML file, while the div just like adds an invisible containor around the parts and doesn’t actually effect the HTMl at all. It just like groups them together. The section tag is great for the navbar. I am using the div tag for like sub sections, like for an individual project within the Projects section. This will help later with design as I am planning to make like each project a card on the screen. That brings me to my next thing. Right now I have filled in around 3 projects that I have made. The biggest hurdle was that not all of them were on Github, so I had to go back into my files and like refresh by brain on those past projects. I wanted to have links to projects in the website, so some of my past projects, I had to spend like an hour or two just trying to upload those and get the repositories set. I have attched 3 projects so far. I will probably add more, but for now I think I will move on Next Steps Next, I am going to start filling in some of the other sections, like the About Me section. I am still thinking on how to display the Experience section, but I will start filling in that section too. I will also begin to organize like the subsections for each section and begin to build a navbar. By the end of the week, I hope to have like a basic HTML structure with all of the sections roughly filled in, and then I will move onto CSS. I think the biggest challenge will be to organize everything neatly for experiences and achievements. But otherwise I am looking forward to start filling those in."}, {"post_id": 35488, "ts": "2026-07-26T23:14:47Z", "hours": 0.8378, "text": "I have kinda gotten a sense of how I want my site to be like. For the portfolio, I will kinda have around 5 sections: Hero, About Me, Projects, Achievements. and Contact. I am think of a kinda dark aesthethic theme with neon accents in there. I am also thinking that I will make like each section themed to what I have achievemed or what is added in that section. Right now I have added a gradient to my background and written some stuff in the about me section. I have also added a link to my astrobounce project which is also here on stardance."}, {"post_id": 35031, "ts": "2026-07-26T06:02:46Z", "hours": 0.3153, "text": "My personal site. Right now I am just getting started on this website. Mainly this project will be for me to learn basic HTML and some more CSS code. I want the end goal to be a nice smooth and polished site. I have still yet to pick a theme. Right now the only hurdle I have encountered is that the image isn’t uploading properly into the website, so I will be looking into that and trying to fix that. Otherwise I am only planning to spend a couple more hours. I might plan to make this a personal portfolio site for myself as I enter high school to help showcase some of my experiences and achievements. But I am still deciding on the theme. And that will be in a later devlog."}]...
|
Title: My Portfolio by @Harpaavan108 | Stardance
Title: My Portfolio by @Harpaavan108 | Stardance
Devlogs:
My personal site. Right now I am just getting started on this website. Mainly this project will be for me to learn basic HTML and some more CSS code. I want the end goal to be a nice smooth and polished site. I have still yet to pick a theme. Right now the only hurdle I have encountered is that the image isn’t uploading properly into the website, so I will be looking into that and trying to fix that. Otherwise I am only planning to spend a couple more hours. I might plan to make this a personal portfolio site for myself as I enter high school to help showcase some of my experiences and achievements. But I am still deciding on the theme. And that will be in a later devlog.
I have kinda gotten a sense of how I want my site to be like. For the portfolio, I will kinda have around 5 sections: Hero, About Me, Projects, Achievements. and Contact. I am think of a kinda dark aesthethic theme with neon accents in there. I am also thinking that I will make like each section themed to what I have achievemed or what is added in that section. Right now I have added a gradient to my background and written some stuff in the about me section. I have also added a link to my astrobounce project which is also here on stardance.
Devlog #3 I have started to fill in some more information about myself in the webpage. The plan is that I will first constuct the HTML layout and fill in all of the sections. Because I am still a high student, my portfolio will look a bit different because I am not actually advertising a service or anything like that. The order that I am planning to go in is the following: Hero About Me (along with skills) Projects Experience Achievements/Awards Contact Current Progress Right now I have constructed each of the sections in HTML. I am using the section tag to separate each of the parts that I just described above so that I can link them using a navbar, though I have not created anything for a navbar yet. One thing that confused me for a while was the difference between section and div tags. After some research, I realized that section actually separates the parts in the HTML file, while the div just like adds an invisible containor around the parts and doesn’t actually effect the HTMl at all. It just like groups them together. The section tag is great for the navbar. I am using the div tag for like sub sections, like for an individual project within the Projects section. This will help later with design as I am planning to make like each project a card on the screen. That brings me to my next thing. Right now I have filled in around 3 projects that I have made. The biggest hurdle was that not all of them were on Github, so I had to go back into my files and like refresh by brain on those past projects. I wanted to have links to projects in the website, so some of my past projects, I had to spend like an hour or two just trying to upload those and get the repositories set. I have attched 3 projects so far. I will probably add more, but for now I think I will move on Next Steps Next, I am going to start filling in some of the other sections, like the About Me section. I am still thinking on how to display the Experience section, but I will start filling in that section too. I will also begin to organize like the subsections for each section and begin to build a navbar. By the end of the week, I hope to have like a basic HTML structure with all of the sections roughly filled in, and then I will move onto CSS. I think the biggest challenge will be to organize everything neatly for experiences and achievements. But otherwise I am looking forward to start filling those in.
Devlog #4 I have filled in some more sections of my webpage. I am still at the HTML portion. Right now the webpage looks like really bad when I view, and it’s tempting for me to move right to CSS to begin styling, but I think it will be easier for me in the long run if I finish all of the HTML now, at least all of the sections. Of course, if I move onto CSS, it won’t mean that I’m completely done with HTML, I will always be adding more stuff and I find ways to improve my website. Current Progress So before I had filled out the Projects section. I was working with GitHub a lot, uploading my projects so I could link them. I also had to use the Github desktop app to upload some files. Because I had opened the website repository in my VSCode desktop app, I think that something got mixed up, and the file didn’t save properly, so then my whole projects section got deleted. I had to spend some time filling that in again, though it wasn’t too hard the second time because the live preview in the browser still had the text in it, and I had already created all of the links again. Then I made sure that my files would autosave, and that the repository was properly linked. After I pushed the commits to Github to save it there, and I will do the same after posting this devlog. After that I began to fill in the Experience section, and that was mainly the majority of this time block. Again, I had to like go back and kinda figure out the dates of everything. I am thinking like a timeline style for this one, and that I will have like a little card for each thing. The plan is to make a scrolling website, so that each card will like appear as you scroll down. I have got a good solid like 6 cards of stuff, so for now I am done with that section. I learned more about like div and section tags during this. I also learned the effect of applying classes to text, as it seperates it from other text when styling it in CSS. I applied it to the date text in the experience sections, so that the time frame will be like a little substitle, different from the actual text in the card. Next Steps I am probably done for today. Next, I will start to work on the awards sections. A challenge will be to organize those sections because like I have many awards from a specific section but then some are just standalone, so I still a have to figure out how to organize the sections in HTML and how to apply the section and div tags. However, I don’t think I will use the section tag, as that may only be for sections that will be in the navbar. But organizing the awards using div and applying different classes will be tricky and hard to keep organizing. i want to make sure that I continue and keep my code nice and clean so that CSS styling is easy.
Devlog #5 I am still working on the HTML portion, but I am nearing completion. I think that the next devlog that I post will be the last one of HTML, and after that I will start to move onto CSS. Speaking of CSS, I am still deciding whether I want to experiment with JS for this project. I have no experience in JS, so it might be like a later thing I want to add after I finish the initial draft of the project. I think it will make it look super smooth with cool animations, but I am still deciding, I think the amount of time I will spend in CSS will decide whether I want to use JS or not. Current Progress I have now added some cards to the Awards section. This one did not take too long because I was able to figure out the tags quite easily because by now I have experimented a lot with them. One thing I learned how to do was to create lists in HTML. It was quite simple. Once you figure out the tags then it is pretty easy. I have a lot of awards that are like issued from a single organization and then some standalone ones, so I used the <ul> tag to create an unordered list and the <li> to add each item to my list. Overall I am planning to make like a card mosaic. Because they are all going to be like different sizes, so they will look kind of like a Pinterest post with like broken blocks, but fit nicely together. I think that will be the simplest way to style it in CSS right now, so I am going with that. Overall, this did not take as long as I expected. I actually already had a document ready, so many were just copied from there. Next Steps I have already filled out the Contact section. I just linked my email and added a little description. I don’t have a lot of forms of contact , so I am going to stick to just email. Now I am going to work on adding my skills, because that is in the about me section. I am not going to actually write it but instead add like little logos for each like skill so that is the next step. I am planning to separate them by like software, and hardware, and like other maybe, but I am going to work on that next. Again I hope that the next devlog will be the last for HTML before I begin CSS.
Devlog #6 I have finally finished the HTML section. I have organized all of my sections and filled in enough information to make a complete portfolio website. I’m not going to worry about any more of the info and just continue on to CSS and styling my website, I think this is going to be a lot more tricky because now I have to arrange and order everything and make it look pleasing and smooth. Right now I am going for a darker vibe. I don’t have like a specific theme, but I might add like hints of color around the website. I am planning on making like cards that each have a glass morphism effect. Current Progress Right now I filled in the skills sections. Like I said before, I am planning to just show the icon on a glassy back. I am going to back it so that when the person hovers over it, it will show like a text of what the skill actually is like the name. I learned how to use a <snap> tag, which is kinda like <div> tag but it doesn’t need it’s own line, so you can kinda group things inside groups without like tabbing again. I put it on the labels for each skill so I could style it separately from the icon in CSS. I was able to get icons for every skill in there. I used Devicon for some programming languages and Flaticon for some of the other ones. I finally got the hang of images. They show on the preview so I think they will show in GitHub pages later as well when I publish them. I still have to see but I think that a succes because in my first devlog the images actually didn’t work, so this is good. Right now they are huge, but I will fix them in CSS. I put them all in the same class, so I think it won’t be too hard. Next Steps I actually forgot to make a navbar, so I will quickly make a navbar and then begin CSS. I don’t thing a navbar will be too hard because it is just links. I will most likely keep it as a header at the top, and just apply a nice glassmorphism effect to it. But yeah, I actually got to make a navbar in HTML, so not completely done with that, but after that I will for sure be done. I might not post a devlog after building the navbar and might just move onto CSS, but it depends on how much time it will take. If it takes more than an hour, then I’ll post a devlog, other than that, I wil post one after some work with CSS, maybe after making the hero section. Below are the some of the image from Flaticon
Devlog #7 I finished creating the navbar and have finally started on the CSS. Now because I am a complete beginner to CSS, I did use some help of AI just to kinda get the hang of like rules and all the different like properties. I DID NOT copy paste anything from AI. This is a project that I am doing to learn HTML and CSS. I actually want to learn this, and AI is just assisting me. I completed the navbar in CSS, and started on the Hero section. Right now positioning for CSS is confusing me a bit, so I need to work on that a bit more. The Hero was fairly easy as in the text, and I haven’t added much to it, but I figured out how to center it. The next steps will be to work on the about me section. Current Progress I finished up the navbar by quickly making a list of links at the very top of my html that went to each section. I also added a logo in the other corner (which is just my initials for now) which will link back to the hero page, like the top of the webpage. I was able to add a nice frosty glass effect the navbar, which was pretty simple. All you got to do is make the background like a little translucent and then add a blur effect. I thought it would be super hard, but it actually wasn’t. I am probably going to use this same formula for the glass cards of each section. My plan is to make them more interactive as I continue, but for right now I will just keep it at that. For the hero, the plan is to just make my name and a short subtitle below, and then add a cool effect around it. For now I just mapped out the area of the hero section. I realized that 100vh is the same as the whole area of the screen, so that is perfect for the hero section. I set the height to that. I also learned that you could access text from within sections that you have id’ed, ex. like I could access the <p> text in the hero section by using the rule #hero p {} so that was pretty neat. Like I mentioned, I used AI to help with some of the centering stuff, because there are a lot of rules for that. I also learned a lot about default positioning, and relative, and fixed positioning. I decided to use position: fixed; for the navbar so it stays on the page the whole time. I still need to get the hang of positioning, but as I begin the next sections, I think I will learn to do that on my own. Next Steps I finished the Hero section for now for CSS, so I will start with the About Me sections. Again this section will have like a blurb about me and then little icons of all of the skills that I know. This is for sure going to be a lot more trickier than the Hero section. My plan is to first try and do the basic styling on my own, and then refer to other resources to polish it up. I am probably going to use the glass effect for the about me blurb and then as a little background behind each icons, like a little drop. I am excited to get this part complete because right now I just have like a very long list of large images in the website, (which are the icons for the skills) that are taking up like the whole screen and I am so ready to get rid of those and just clean up the webpage a bit. After those are organized into the skills, then everything will just be a little cleaner. I am planning to organize the skills based on software, hardware, and then others. The icons are already organized in HTML, so I am excited to begin tomorrow on styling the next section. The navbar is glassy, its just because there is nothing under it to be blurred thats why it doesn’t show.
Devlog #8 I am finished the About Me section. I came across a problem though. In the pills, I want it to be like that when I hover over the pill, the name of that skill shows above it in a small text. However, pills in the bottom row, their text will start to hover into the pill of the next row, so that messes up the thing. BUT, if I add a space, it will look like a really weird gap between the rows. I did some research and I read that I might need to use some JS to fix, so like pills on the bottom, their text shows on the bottom, and pills on the top, their text shows on the top. So I am going to leave that for now, and work on it after I am done with the rest of the webpage. Current Progress Right now I finished position the stuff for the About Me section. I found this part really complicated, especially with the little icons. I ended up having to add more classes in my HTML to style them accordingly in CSS. Again, I still have a bit of problems with positioning, but I am starting to get the hang of like display , margin , padding , and gap , and how they work with different classes to arrange and organize everything. I also learned how to use transition to just make thing shift smoothly when you hover one them. This section took me a really long time because I had to arrange the about me text and all of my skills. I figured out where like display: relative and display: absolute are used, because I then had to arrange my text so that it was like positioned vertically 110% and horizontally 50% of the icon, so they helped in that. Otherwise, this part really familirized me a bit more with CSS. I especially got the hang of like background and border styling, and how to experiment with corner rounding and different colors and transitions and all of that, so I think this section was really a learning experience. Next Steps I will now begin to work on the Projects section. For this section I am just thinking making cards for each project each with a glassy effect behind it. Because I am giving each element like a glass effect, I am planning on making a super cool background later once I finished the site in JS so that the glass effect really shows and provides a unique aspect to my website. I think this section will be a lot simpler, but I will have to add more classes in HTML to do this I think. A tricky part might be to style the links, because I have links to all of my projects and their repositories, so yeah. Once I figure out the positioning of the cards, its practically smooth sailing from there, because like adjust font sizes and colors are like pretty easy for me. I might even make like the glass lighten up when I hover. One thing I want to experiment with is with box-shadow so that a shadow shows underneath the card. So I will play around with that. Otherwise, I am excited to continue working on this. The layout for this section is similar to the rest, so I think from here I will begin to quickly finish up the rest of the sections. You can view the about me page here. I am hovering over the HTML pill, and you can see the text over it.
Devlog #9 I finished the Project section of the website. I also took some time to like style and experiment with some like hovering effects in the website. I also figured out how to color texts with gradients, so I changed all of my main section headings to cool colorful pastel gradients. I also made each glass card look cool when you hover over it. I also made some of the text like get bigger or show cool stuff when you hover over it. So yeah. I really think I am getting the hang of CSS. Most importantly, I think that I am able to use resources from the internet and apply them accordingly to my website. This block was mainly like a styling portion to kinda experiment and apply some aesthetics to my site. Current Progress I finished the Projects section. This section was much easier to arrange. Instead of using display: flexbox I used display: grid to help position each of the cards into an organized layout. What I really like about this display is that it automatically does all the math itself and gives each card its own equal amount of space so that they look even on the page. I got 4 nice cards for each project. I also styled the the heading to look like a gradient. I figured out that you make the background image a gradient, and then clip it to the text, and then just make the text clear so that the color shows. So I made all the headings look like that. Another thing that I did was use box-shadow to make the cards look cool when I hover over them. I realized that there are a lot of elements for the box-shadow, though once you figure them out, its not too complicated. So then I applied the box shadow effect to everything in the website that it would look good on. So yeah that was also a learning experience. I also figured out how to make a specific thing appear once you hover over like a bigger topic. So like I made some text a bit bigger or like an element appear when i hover over the whole card. You add the hover rule for the big card, and then add the class for the specific element, and then do your ending look. I used that for some things. So I really got some styling done to make my website like look better. Next Steps I will now work on the Experience section. I have around 6 cards for this. For this section, I am planning on making like a scrolling timeline to showcase like all of the past stuff in a chronological order. This might be tricky because up until now I was using the height: 100dvh to determine how big a section would be, but this one is going to have to different from that because of its scrolling nature. So yeah. But I think I am really getting the hang of positioning and display. and how to manipulate objects between different rules. I am starting to realize that code is not as strict as I thought it was. Like I thought everything needs to be like letter precise, but you have a bit space to improvise and experiment. So I can actually code a bit in CSS. I really enjoying styling things, like the gradient texts or like hover effects, so I am going to make sure to include those things in this next section as well. I am excited to get to work and encounter this new challenge. Below is a picture of the Projects sections and I am hovering over the first card, so you can see the hover effect.
Devlog #10 I have finished the Experiences section of the website. This section was for sure a lot trickier than I thought it would be. The hardest part was trying to figure out how to arrange the boxes in a vertical but staggered order, so I could build the timeline. However, on the upside, I was able to quickly do styling, because a lot of the colors and like hover effects and everything was already set up in my code from styling the previous section, so that did not take too much time. Overall, I really like how this section turned out, and I think it is a bit different from the rest of the sections. Current Progress I completed the Experience section. This one is styled a bit differently from the other two. In this one, the timeline in centered and it goes longer than the length of the screen. The about me section and the projects section were all set to be as tall as the screen itself using height: 100dvh , but this one is actually dictated by the length of the cards, and then I added some padding at the bottom to separate it from the next section. The tricky part was to actually make the timeline affect. At first I did some research and thought or using pseudo elements in CSS to create a line through the middle of the page and arrange the boxes beside it. But that was way too complicated and didn’t seem to work for me, so I decided to arrange the boxes first and then add the line later. To arrange the boxes, I first centered them vertically in the middle of the screen, and then gave half of them one class and the other half another class. Then I pushed one class completely to the right, and the other to the left and that created a staggered timeline look. Then I needed to add a line through it. To do this, I created an empty <div> tag at the beginning of my experience section and then styled it as a line as long as my experience cards and then filled it with a rainbow gradient to kinda match my theme. I also added tiny circles using the same method to the timeline wherever their was a card to kinda just make it look cooler. I will acknowledge that I did use a bit of AI for this section to research the different ways to position the boxes, but otherwise I implemented all code by myself and I did not copy paste anything in. I really think this section introduced me to the flexibility in CSS, and how to manipulate different rules and elements to get the desired effect. Next Steps I am now going to work on the Achievements section. I am planning on making this section like a staggering kinda page of acheivements, like not quite even, just like a mosaic, because there is a lot of content in this section. For a kind of visualizer, I am planning to kinda style it like a pinterest page so like staggered and just fitting together. I just hope that it doesn’t turn out to jaggedy or uneven at the end of that part, and that it doesn’t take too long to organize them to look like at least like reasonably even at that. Hopefully I finish this section pretty quick, like just an hour or 2, and then I will quickly finish up the contact section as well, so then I will post a devlog of those two, but yeah I will see. I think I am getting close to a ship so keep an eye out for the next few days. Below you can see like the full experience timeline like zoomed out and I am hovering over the first card.
Devlog #11 I have finally finished styling my whole website in CSS. It was such a long process, but I really think that I learned how to code in CSS. Position and display no longer confuse me and I have gotten the hang of adding cool effects to me elements. I am really liking the theme of my website, but I still have more to do. Right now, I have a lot of empty space in my website. Because all of my cards are glassmorphism, I am planning to use JS to make really neat background just to add like a nice touch and really sell the website, but that might be after the first ship. I am also planning to change some fonts and all that, so still a lot to do. Current Progress I finished the Achievements and Contact section and also styled my footer. I made a masonry style layout for the achievements, and I think the design turned out really neat. At first, I thought I would use a flexbox or a grid, but then I saw that I could just make a fized number of columns and the text would just automatically arrange itself. So I used that instead of getting all tangled up in like flex and grid properties and all of that. But then it actually made it like vertically ordered, but I wanted it horizontally, so I took the time to like arrange them so that the layout would appear even and it would look like it was horizontally arranged, when in reality it is actually vertically arranged but in a weird way. It makes more sense when you look at it. I also finished the Contact section. This was quite easy. I just styled it like the Hero and added two little icons: one to my email, and the other to my github, so yeah that was pretty simple. I first thought of adding a contact form, but then I realized that that needed a backend, so I decided against that. Again, if I want, I might add it later in the future, but for now I will leave it at just to two icons. So mainly I finished those two sections in this block. One more cool thing that I discovered was how to make links open to a new page, because while I was trying out links it was bugging me that it was always opening in that page, so this really put my mind to ease a bit, and makes navigation a bit easier. Next Steps I am planning to ship very soon. I am thinking of just adding some finishing touches before shipping the first version, like some font changes. I might also just try to play around in JS, and like get a feel of it, Because I think that a cool background will really take it to the top, so I will play around a bit with that. i’m also thinking about adding like scroll up effects, especially for like my experience timeline. But yeah next steps might just to be to polish it up just a bit before shipping. I am super excited to try out JS, and hope that the final product will be awesome. Below is a picture of the masonry effect of the achievements section.
Devlog #12 This block was mainly dedicated towards making my site look a lot more aesthetic. I spent over 4 hours just tinkering with JS and fonts and color combos and everything, trying to find the perfect combos and fonts that looked super good. I am overall very happy with the progress that I made in this amount of time. At first I thought that the site looked good even without any styling because of my color gradients and all of that, but I just realized how much better it is with like better fonts, and like the small things, like moving gradients instead of static ones. So this whole block was just dedicated to making my site look better. Current Progress The first thing that I did was change my cursor. For this I had to use JS. I changed the cursor to just be like a little white dot with a nice glow around it, and then when it hovers over like a link, then it gets a bit bigger and turns into a light purple color. In JS, I figured out how to like grab an element from CSS, and then use like states, like mousemove to have like a specific action, and then like have the dot follow my actual cursor, but super close so it seems like that is the cursor. And then I hid my actual mouse to really sell the illusion. For the hover thing, I created a hover class in CSS, and then added that class when the mouse “entered” a link, and removed it when it “left” the link. The next thing I did was make the gradients on my text like circle around, so the gradient was always moving around and it looked like dynamic. I actually got this idea from the Hack Club website because in there they have a moving gradient on the text. For this, I actually did not need any JS, and instead just make a looping animation in CSS for the background of the text. I first did it only for the Hero title, but then I liked it so much that I added it to all of the section headings so yeah I thought was a really nice addition The next thing that I did was to edit my skill icons. I mentioned in a previous devlog when I was styling the About Me section, that the little subtitle for each skill was showing on the top of it, so then for skills in the bottom row, it was covering the skill on top. I also used JS for this fix. I first made a class for the subtitle on the bottom, and then again in JS made it so if it was detected to be lower, that class would apply The last thing I did was change the fonts. I am really happy I did this, because the site just looks so much better with different fonts. I imported all of my fonts from Google Fonts. I inserted the link in the <head> section and then used that font family in CSS. I did a lot of like comparing and swithcing around and researching and all of that just to find good fonts, and I have a really bad habit of like taking a lot of time on these kind of things, and it wasn’t even getting tracked on Hackatime, so I tried to do it quickly. I found some really nice fonts for the headings and titles so I am super happy with that. Next Steps Now the only thing left to do that I still havent gotten around to yet is making a really nice background in JS. I really want to make an animation background, because I think that will be like a unique aspect of my website. The main thing I really want that for is the glassmorphism effect that I have on the cards. On a plain dark background, you can’t tell at all that there is a glass effect. But with a sick background that moves, you can see that shapes blur under the cards. So I think that is the last thing to do, because I finished up all the small little details. However, I also think this will be the longest and hardest part because of its complexity in JS so yeah. I am really hoping to ship soon after 1 or 2 more devlogs. Below is a video of the new hero section with cool fonts and a moving gradient background.
Devlog #13 (Last Devlog Before Ship) I am finally done with my website. Please read the NEXT STEPS section of this devlog as I have favour to ask you guys . I spent 7 hours of my life building a shader background for my website, but it totally paid off in the end because now I have a really cool, interactive, animated gradient background. I used GLSL to write a shader, and WebGL and Three.js to implement it into my website. I used a video tutorial and some AI debugging to achieve the effect, but it really was a learning process, as I had to install all the tools for it and then work with those, so I learned how to use those. Because of this, I also spent some time updating my README. Current Progress First of all, it took me a really long time to find a good tutorial to make a background, because I really wanted an animated one to show my blur effect and really add a pop to my website. To acheive a shader background I watched a video tutorial from Codegrid, which explained everything really nicely and was quite quick, so I was able to write the code. After though, the background didn’t quite show, so then I used the help of AI to help debug the code and get it working. After I finally got it to work, I spent some time adjusting colors, and brush strength and size, and then distortion amount and fluid decay and all of that stuff until I found the perfect values for a super good looking background. Overall, it was definately worth the time and added a really nice touch to my webpage. I also updated by README, because now the user will need to install some dependencies for this webpage because of the addition of Three.js and everything. So I updated the README to include proper instructions for that and so it explained some more features of my website. I really polished it up, because it was kinda messy before, so I got it ready for a ship. I also changed my cursor one last time. What I had before was a <div> element in HTML following my actual cursor using mousemove in JS, and my actual cursor was hidden in CSS. However, it was like lagging behind and that was starting to show on my new background. So instead, I just made my cursor a little white dot in CSS by liking making a svg file and linking it to the cursor. It just improved user interaction a lot be removing any lag between an following element and the actual cursor. There is still the feature where it will turn bigger and light purple when hovering over a link. Next Steps My next step is to ship!!! However, I have to ask you guys for something. I need some color suggestions for my background. I got a nice one right now that is like dark purplish, but I want your guys’ suggestions on what type of gradient I should make. I can put 4 colors into the gradient. You can use the attached video below to view how the shader looks on the hero page. I do have glass cards, so I don’t want something too light, but it could make a nice addition in a dark gradient. So please put some suggestions in the comments!!! Thank you!!! I will ship right after this, but I will for sure try to look over some color suggestions and experiment around with them. I might try to use one before I ship the final version of the website, so please put some suggestions. Expect a ship really soon.
Devlog #14 So I started working on it further before my project even got fully rated, so this is my first devlog after shipping my portfolio! During this block, I just added some small features that just overall polished my site a bit more. A lot of these features were added in JS, and I think I actually am starting to get the hang of JS in the way that I actually am starting to understand how to identify objects using const and like how to select them using document.querySelector . So I think I am starting to learn, and just working with these little features just got me a little more familar with JS. I also got the hang of CSS animations, as before I had a little trouble understanding keyframes, but now it makes sense, so it was a good block. Current Progress I added three main things to my website, each of which use JS in them, and I will explain how. The first thing that I added was a scroll progress bar at the top. I really wanted to add this onto website, as I really liked seeing them on other websites, and I styled it to match my theme, and it just looks super good. I make a horizontal bar in my navbar for this, and it has a rainbow gradient. Basically, JS detects where the person is at the website, and just adjusts the scale based on that to show the bar. At first, I made it so it would expand as I scrolled, but then the rainbow was like squished at the beginning, and then I adjusted it so that it actually revealed the bar as I scrolled down, so like same idea but just applied to a different thing. I looks super cool now. The next thing that I added was a loading page. I tried to look into some videos for this, but I ended up making a super simple gradient ring that was animated (again to spin a rainbow). For this, I like made a loader page, which covered the whole view. In it, I made a circle which had a rainbow conic gradient, and then just animated it in CSS to rotate to 360 degrees over the course of like 1.2 seconds. I then used JS to add a class which made the loader disappear and like unresponsive to any pointer controls when the site finished loading. It also looks super good and totally matches the vibe of the site. So yeah, super happy with that. The last thing that I added was like a scroll fade up reveal effect to almost everything in my site, like the cards and the headings and everything. Again, this was a pretty simple trick that I used. Basically you set the object a set number of pixels (like I used 30px) down on the Y axis and turn the opacity down, and then when JS detects the object as the person scrolls, it just moves it up to 0px on the Y axis and goes to full opacity, and it ends up looking super sleek. That little touch just upped the whole website. I was actually looking to add this feature in the beginning of my site, but I never got to it mainly because it used JS, so now I took the chance to add it in. A lot of these features were ones that I saw in like cool websites. So like I’m always on the lookout for cool features, and these were some that I thought really made a website look more polished, and I realized that they are not actually that hard to build once you understand the core concept. Through these I really got better in JS, and upped my skills in CSS, so it was a good block. Next Steps I really do not have anything left to add in this project. Like I even added extra stuff. Please, if you guys have any suggestions, comment them so I can implement them. I will attach a video of my site so you guys can see what its like. One thing I might consider adding is like a easter egg thing or some like sequence or action that will generate a cool surprise. I have to still think about that. But right now I have almost nothing left to do. I actually might ship this again just to get the hours counted in. Below you can see the loading and the scroll fade up reveal and the scroll progress bar at the top.
Devlog #15 This will be a fairly short devlog. I spent this block adding media queries to my CSS code because I opened the website on my phone, and it just looked so wrong to me, so I spent some time doing that. I figured out a great way to simulate a phone screen in my browser using DevTools so I was able to adjust everything through that. Current Progress The plan was that I was going to do media queries at first, but I thought it would be too complicated so I held it off. Now I was kinda forced to after seeing how bad the webpage looked on a phone screen. I realized you just have to make on CSS rule for media queries using media (max-width: 768px) {} . I decided to use 768px because that is like a standard width, but I mainly tested it on 400px width. After that, I opened two windows with my code and as I went through it, I would add a media query rule in the other window. So I conquered my fear of media queries, and addressed that issue. Next Steps I am looking for things to do. One piece of feedback that I got was that my cards had hover effects that made them look like buttons, but had no button effects, so it was kinda misleading. So to fix this, I’m thinking of like scanning my certificates and uploading them as pictures that people can view in the browser. So that’s my next step. To accompany this, I might also do like a redesign of the website, like just adjusting some of the features. Also, I’m thinking of adding a dark mode/light mode feature on it. Below is a quick video of the site on a device with a width of 400px.
Devlog #16 So I decided to implement some feedback that I got from the last ship. One piece of this was adding my actual certificates into the website, so people could actually view them in the webpage. So I took some time to scan all my certificates. Creating the links wasn’t quite hard, and at first I thought about just letting it open in a new tab, but then I decided to create a modal just to enhance the UX. Current Progress I decided to add all my certificates into the webpage, just to add a layer of validity to my work. The first part was finding all of the certificates. Whatever I had, I added them to my GitHub repo, and just linked the relative paths in the webpage. The ones which I had online, I just drag and dropped into the repo, while the physical ones I had to scan and then add in. So that took a while, but wasn’t too tedious of a process. After that, I just made a “View ->” sign that appears when you hover over the card, and that is actually a link to the image. Then I decided to make a modal. I realized it actually isn’t too hard, but the JS logic is a but complicated. I styled the modal in CSS, and then just added a .open class to it which was activated when you click the link. So I’m starting to understand JS logic, the only thing that I have trouble with now is writing like proper syntax, as I still have trouble with writing the correct syntax, and that can cause some problems. So then I styled how the image looks in the modal. At first I though about add ing a X to close the modal, but then I made it so then if you press outside the image, then the modal disappears. Some of my UCMAS achievements do not have images attached to them because I couldn’t find actualy certificates for them, so I might take pictures of my trophies to put there, but I haven’t got to that yet, and I don’t want to put low-quality images. So those are still empty, but almost everything else is filled, so now you can go and view those. Next Steps I literally don’t have anything left to do on this, so I think the next step is to just ship. I will take a break from this project and begin to work on my next one, which will be making a cool new tab page from my browser. So expect a ship soon. If anyone has any suggestions on something to add, you can let me know! Below is an image of my stardance certificate shown in the modal on the page.
Devlog # 17 This is my final devlog before I ship! I wanted to add a picture of myself in the website so I tried to find a way to do that. I decided that I will make it so that the about me card will flip when hovered over and on the other side will be my image. I thought it would be pretty simple, so I began working on it at 12 last night thinking I could finished it in about 30 minutes. Turns out I was wrong. It took me more than two hours just to get a card to flip and show my image. It was a pain, but the end result looks really neat. Current Progress To make the flip card, I had to restyle the entire about me section. I used a W3Schools tutorial, but i couldn’t end up working well with it, so then I turned to AI for debugging, because I had so many div layers for that card, and then I finally styled it to look good. The effect looks really good though. As well, I decided to publish everything to Github as well now because I hadn’t published anything for the past couple of days so yeah. Then I found a problem with the images not getting pulled correctly, so then I had to transfer all of those to a public/ folder and then adjust the file paths for all of them in my code, and then reload and redeploy like a bajillion times. So it was a lengthy process, but I finally got it working publically, Next Steps My next step is to ship. I really hope I get rated good because I want a pebble time 2. After this I will begin to work on my next project for the remainder of the event, which is a new tab page. After that, I am done with Stardance, as I also have a lot of school work now. So I will ship soon!!
Ships:
I am working on my personal portfolio. Right now I am just working and crafting the sections and filling in some info. I still have to work on styling and go through all of the sections. But for now I am going to ship
My Portfolio Project Hi! Welcome to my Stardance project. In this project, I made a personal portfolio website so I could showcase my work. Especially as I enter high school this year, I wanted to have a platform to record all of my progress and have a way to display it to the public. I also wanted to get more experience with coding. Over the past few years, I have done like super mini project in HTML and CSS, but this website is one of my first fully developed projects, and that I have coded all by myself. So I took this opportunity to properly learn HTML and CSS, and also introduce myself to languages like JS and GLSL. Features The website has 6 sections that I made: Hero About Me Projects Experience Achievements Contact Here are some features of my website: The website has an interactive navbar which links to each section in the webpage. There is also a logo in the corner which will link to the Hero section. The navbar has a frosted glass look, which makes blurs the background behind it. The title in the Hero section (which is my name), has a rainbow gradient applied to it. The cool part is that the gradient moves and loops in the name, so the gradient is always moving slowly. This is actually applied to all of the section headings in the webpage. Each card in every section has a frosted glass look applied to it, so it will blur the background behind it. They also enlarge and brighten when you hover over them. The cursor is a small white dot instead of a regular cursor, which enlarges and turns light purple when hovering over a link to communicate to the user that the link is clickable and will lead somewhere. One of the main highlights is the background, which is a shader background made with GLSL, WebGL, and Three.js. The background is an animated gradient. It is also interactive as it will respond to the cursor on the screen. It is one of the key aspects that really make this website shine, and what really makes this project unique and different from other ones. The Easy and Hard Parts Easy Part There were some really easy parts while building this. One was building the HTML layout. After I understood the basics of making classes and organizing texts and everything, it was quite easy to start filling out info for all of the sections. I thought it would be like a really big thing to fill in all of that info, but turned out it wasn’t quite hard. Hard Part There were also hard parts. One main one was the shader background. First it took a really long time to code the first draft of that, as I had to make a shader in GLSL and then import Three.js, and all of that. But then that first draft didn’t work, so then it took me a really long time to debug the code as I had to look through everything for like typos and all that. I did use AI for this part, but it was still a really long and hard process, going back and forth trying to see what was wrong. But in the end it was totally worth it. Overall Overall, I spent a lot of time and effort in this project. One thing that I really wanted to do was make just that I documented all of my progress frequently in devlogs, and I think that I achieved that because all of the 13 devlogs that I have written are pretty detailed. I also wanted to make this unique to me, and I think that the shader background achieved that and just brought the project to a new level. I really hope you enjoy it, and I am happy to take any feedback. I hope to constantly keep updating this project over the next few years. Otherwise, I might add some new features to it (including a scroll bar) in the next month before Stardance ends and I get too busy with school. Below you can view some screenshots of each section of the website (it doesn’t let me upload a video, or else I would’ve done that). Enjoy!!!
Ship #2 for My Portfolio This is my second ship for this project. Since my first ship, I have mainly just added some small features to increase the UX. A lot of these changes were features that I had seen on websites that I liked. So when the time came to bedazzle my website, I implemented these features in my own website. One really consistent thing that I noticed while implementing these features, is that a lot of features are quite simple to implement once you understand the basic logic. I also noticed that once you add these small features, it can make a great effect on the UX, and that the few hours you put into the little things, can have a huge impact and create a great impression on those who visit your website. New Features I added a cool gradient horizontal scroll bar that fills up as you scroll down. I thought this was a super cool feature and required some simple JS logic to implement. The next thing was a loading page. It is a quite simple one, just having a gradient filled circle outline which spins to show a loading effect. Again a small feature just to add nice feel from the moment a person opens the webpage. The next thing was a scroll fade up reveal to everything in the site. I really like seeing this effect on other websites as well, so I wanted to implement it into my website as well I added media queries because I saw how bad the website looked on the phone, and it was just really annoying me. So I took the time to add that just in case I ever had to show anyone my webpage on the phone. After that, I decided to upload some of my certificates onto the website so people could very them, just to add another level of validity. However, instead of making the images open in another tab, I made them open in a modal that stays in the browser tab. I thought this was a super cool effect. Last thing was that I added my photo. To do this, I made it so that when someone hovered over my about me card, it would have a flip animation and on the other side my photo would show. I thought this was a nice and subtle was to implement my photo, without messing up any other styling on the page. Learning JS A lot of these features were implemented with JS, especially ones that were triggered with user input. I will acknowledge that I used AI to help with understanding JS logic for some of these features, and debugging as well, but I also learned along the way. I find JS much more complicated than HTML and CSS, and I think that I have really come far in understanding and implementing it. For examples, I can assign elements and add and remove classes based on user input. I still have some trouble with syntax, and that causes a lot of my problems, but I am really starting to get the hang of JS. I think that JS can create some really neat animations and effects, so I want to learn and understand this language, so that I can let others experience the cool things that I see on other websites. Overall I spent a lot of time on this project, and put in hours even after school started. It is a really personal project. I have come really far since I first started this project and I have grown confident in understanding and writing code and achieve the desired results. I probably will not work on this project after this ship, and will instead turn to other projects that I have pending. Please enjoy this project. If you have any suggestions, let me know in the review or as a comment, and I will try to implement it. Thank You!! Below is a picture of my stardance certificate in the modal that I made, and the other is a picture of the spinning gradient loader. Enjoy!!!...
|
1793137713.3870604
|
1793224113.3870604
|
|
16776
|
The Twistpad by @Cloud4D | Stardance
|
Cloud4D
|
1
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T02:19:35Z", "hours": 16.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a hackpad! I have decided to call my hackpad a Twistpad, since it has two rotary encoders. The Twistpad features a 3x3 grid of 9 keys, and two dials which are coded for volume and video playback. The 9 keys are mapped to F13-F21, meaning you can map it to anything you desire yourself quickly with no hassle. The case features a nice conical USB cutout to help guide the cable in, and there’s a wonderful little window in the top to peer inside at the brain of the device, the seeeduino!", "repo": "https://github.com/Cloud4D/Twistpad/blob/main/README.md", "demo": ""}]...
|
[{"post_id": 25618, "ts": "202 [{"post_id": 25618, "ts": "2026-07-10T00:28:26Z", "hours": 0.7325, "text": "Shipping time! Yeah, it’s time to finally ship my project, after waiting for the form to be fixed, and learning that I actually need to post more devlogs in order to actually count my hours, I’m about to fill out the submission form and ship my project :). Its been quite a ride."}, {"post_id": 13882, "ts": "2026-06-22T19:07:55Z", "hours": 1.1472, "text": "I found a problem, and fixed the problem. When coding, I noticed that I had messed up my matrix, so I went back to my schematic, fixed the schematic, fixed the PCB (thankfully it was easy), and then put the new PCB into the CAD model. Later, I plan on fixing my files and then finishing up the code, and then I should be done! I’ve attached a picture of the fixed schematic to this devlog."}, {"post_id": 12885, "ts": "2026-06-21T03:22:25Z", "hours": 7.2889, "text": "Time for my third devlog. I suppose I should be posting more, but the time tracker keeps bugging and I can’t write after finishing a amount of time. Between now and 4 days ago, I managed to finish up the case, I tackled multiple problems, such as figuring out holes and dimensions for the USB cutout and the rotary encoders and all that. I also made it all white so thats nice, better than that gray. I filleted the corners (I used that a bunch in the past few days), messed with geometry to make my cool little window to view into the Seeeduino module, realized that the window interfered with the keycaps, had to delete the window and make a new one, all fun stuff. The USB cutout was fun to make as a sketch, since I got to mess around with lines and rectangles to fillet the corners to make a rectangle with rounded corners and then realizing I could’ve just made a rectangle and filleted that, but oh well, it’s the joy of learning. I then formatted my files to get them ready for submission, and now I tackle the firmware. Wish me luck. Also Lapse still refuses to connect to Hackatime, I have 16 hours and 11 minutes on Lapse but only 5 hours and 25 minutes on Hackatime?? I hope it fixes itself soon."}, {"post_id": 10151, "ts": "2026-06-16T19:25:11Z", "hours": 5.3075, "text": "It’s been a while since I posted a devlog. I just got a bit busy but I guess it is time to sum up everything in I have done in the past few days! After finishing the guide hackpad, I took it upon myself to build my own custom hackpad (name pending). To begin, I went into Kicad’s schematics editor and created a schematic, using a matrix (thank you Gemini for teaching me what it is). I settled on a 3x3 keyboard with two dials, and after fiddling around with the layout and wiring and footprints and all that fun stuff, I was able to go to the PCB editor. This is where I spent the most amount of time. I spent about a day working through layouts of the LEDs, diodes, switches, and the Seeeduino. After that day, I tackled wiring everything up, and learned about vias. I don’t know what we’d do without them… they’re so helpful. I thought I was all good once I finished wiring things up… until I opened the DRC and ran it to find 500 errors. After changing some of the constraints, and realizing that I should make my 5V wire a bit wider, I managed to get the DRC down to around 100 errors, most of them being clearance errors. I spent a third day just fixing those and getting it down to 9 errors, all of which being simple silkscreen warnings. I also realized that my LEDs were existing in the same place as my switches, so I had to go back and redo ALL of the wiring for those, and then realized I was using the wrong footprint, and then I once more had to go back and redo all the wiring (lots of fun), but once I did that and fixed some issues with Edge.cuts, my PCB was all good to go! Finally we get to today, where I exported my PCB and put it into Fusion360, and drew and extruded the base and walls of the case (standoffs tomorrow). Also I don’t know why it only says I logged 3 hours, I’ve logged around 8 since my last post…"}, {"post_id": 7829, "ts": "2026-06-13T02:06:43Z", "hours": 1.5553, "text": "Fusion360 is very confusing… I did quite a bit of work today! I started by finishing up my PCB design on Kicad, which was quite fun. I’m looking forward to designing my own PCB. Designing the case on Fusion360 was a bit frustrating, since my only 3D modeling experience was with tinkercad a few years ago. ChatGPT was a big help in helping me understand the softwares. Using what I’ve learned here with the guide and whatnot, I’m excited to build my own custom macropad (maybe with a few dials to spice things up)"}]...
|
Title: The Twistpad by @Cloud4D | Stardance
Devlo Title: The Twistpad by @Cloud4D | Stardance
Devlogs:
Fusion360 is very confusing… I did quite a bit of work today! I started by finishing up my PCB design on Kicad, which was quite fun. I’m looking forward to designing my own PCB. Designing the case on Fusion360 was a bit frustrating, since my only 3D modeling experience was with tinkercad a few years ago. ChatGPT was a big help in helping me understand the softwares. Using what I’ve learned here with the guide and whatnot, I’m excited to build my own custom macropad (maybe with a few dials to spice things up)
It’s been a while since I posted a devlog. I just got a bit busy but I guess it is time to sum up everything in I have done in the past few days! After finishing the guide hackpad, I took it upon myself to build my own custom hackpad (name pending). To begin, I went into Kicad’s schematics editor and created a schematic, using a matrix (thank you Gemini for teaching me what it is). I settled on a 3x3 keyboard with two dials, and after fiddling around with the layout and wiring and footprints and all that fun stuff, I was able to go to the PCB editor. This is where I spent the most amount of time. I spent about a day working through layouts of the LEDs, diodes, switches, and the Seeeduino. After that day, I tackled wiring everything up, and learned about vias. I don’t know what we’d do without them… they’re so helpful. I thought I was all good once I finished wiring things up… until I opened the DRC and ran it to find 500 errors. After changing some of the constraints, and realizing that I should make my 5V wire a bit wider, I managed to get the DRC down to around 100 errors, most of them being clearance errors. I spent a third day just fixing those and getting it down to 9 errors, all of which being simple silkscreen warnings. I also realized that my LEDs were existing in the same place as my switches, so I had to go back and redo ALL of the wiring for those, and then realized I was using the wrong footprint, and then I once more had to go back and redo all the wiring (lots of fun), but once I did that and fixed some issues with Edge.cuts, my PCB was all good to go! Finally we get to today, where I exported my PCB and put it into Fusion360, and drew and extruded the base and walls of the case (standoffs tomorrow). Also I don’t know why it only says I logged 3 hours, I’ve logged around 8 since my last post…
Time for my third devlog. I suppose I should be posting more, but the time tracker keeps bugging and I can’t write after finishing a amount of time. Between now and 4 days ago, I managed to finish up the case, I tackled multiple problems, such as figuring out holes and dimensions for the USB cutout and the rotary encoders and all that. I also made it all white so thats nice, better than that gray. I filleted the corners (I used that a bunch in the past few days), messed with geometry to make my cool little window to view into the Seeeduino module, realized that the window interfered with the keycaps, had to delete the window and make a new one, all fun stuff. The USB cutout was fun to make as a sketch, since I got to mess around with lines and rectangles to fillet the corners to make a rectangle with rounded corners and then realizing I could’ve just made a rectangle and filleted that, but oh well, it’s the joy of learning. I then formatted my files to get them ready for submission, and now I tackle the firmware. Wish me luck. Also Lapse still refuses to connect to Hackatime, I have 16 hours and 11 minutes on Lapse but only 5 hours and 25 minutes on Hackatime?? I hope it fixes itself soon.
I found a problem, and fixed the problem. When coding, I noticed that I had messed up my matrix, so I went back to my schematic, fixed the schematic, fixed the PCB (thankfully it was easy), and then put the new PCB into the CAD model. Later, I plan on fixing my files and then finishing up the code, and then I should be done! I’ve attached a picture of the fixed schematic to this devlog.
Shipping time! Yeah, it’s time to finally ship my project, after waiting for the form to be fixed, and learning that I actually need to post more devlogs in order to actually count my hours, I’m about to fill out the submission form and ship my project :). Its been quite a ride.
Ships:
I made a hackpad! I have decided to call my hackpad a Twistpad, since it has two rotary encoders. The Twistpad features a 3x3 grid of 9 keys, and two dials which are coded for volume and video playback. The 9 keys are mapped to F13-F21, meaning you can map it to anything you desire yourself quickly with no hassle. The case features a nice conical USB cutout to help guide the cable in, and there’s a wonderful little window in the top to peer inside at the brain of the device, the seeeduino!...
|
1793130839.7357664
|
1793217239.7357664
|
|
59280
|
Personal Slack bot by @AbhrajitGogoi | Stardance
|
AbhrajitGogoi
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T02:09:50Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hello World!! This is my personal slack bot project call “THE GB-BOT”. It is a fun basic bot which can tell you the weather in 5 cities, a cute fact about cats and the quote of the day. It also has a /gb-bot-help command to show you the available commands. try it at: https://hackclub.enterprise.slack.com/archives/C0P5NE354 Available commands: - /gb-bot-ping : Check bot latency - /gb-bot-catfact : Get a random cute cat fact - /gb-bot-qotd : Get the quote of the day - /gb-bot-weather : View current weather for selected cities - /gb-bot-help : Display the command list The container part was the thing I understood the least. I have no experience with linux and honestly i was blindly following the guide and hope the bot would get deployed without any issues which it did and i am grateful for that. Phew. This is only a basic bot up to this point. I will also be working on a V2.0 which would be more niche and tailored to my personality. THE GB BOT V2.0 coming soon!!!", "repo": "https://github.com/Abhrajit-Gogoi/gb-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 63517, "ts": "202 [{"post_id": 63517, "ts": "2026-09-07T12:47:58Z", "hours": 0.7358, "text": "GB-BOT V1.0 complete!!!! Added a cat fact command and a quote of the day command. It was way easier than the weather app.. . The V1.0 is complete and ready to ship. It was a short but memorable journey. Signing off!!!!!….."}, {"post_id": 63500, "ts": "2026-09-07T11:58:23Z", "hours": 1.1861, "text": "added a weather command /gb-bot-weather. it fetched the weather data for 5 cities and has a dropdown you can select from. it took longer than i thought it would and i also had to look up the community to help me fix bugs."}, {"post_id": 63463, "ts": "2026-09-07T10:22:53Z", "hours": 0.675, "text": "Initial devlog Created the slack bot and added basic latency and help commands as shown in the guide. Will now try to figure out to add a profile pic and new commands……."}]...
|
Title: Personal Slack bot by @AbhrajitGogoi | Star Title: Personal Slack bot by @AbhrajitGogoi | Stardance
Devlogs:
Initial devlog Created the slack bot and added basic latency and help commands as shown in the guide. Will now try to figure out to add a profile pic and new commands…….
added a weather command /gb-bot-weather. it fetched the weather data for 5 cities and has a dropdown you can select from. it took longer than i thought it would and i also had to look up the community to help me fix bugs.
GB-BOT V1.0 complete!!!! Added a cat fact command and a quote of the day command. It was way easier than the weather app.. . The V1.0 is complete and ready to ship. It was a short but memorable journey. Signing off!!!!!…..
Ships:
Hello World!! This is my personal slack bot project call “THE GB-BOT”. It is a fun basic bot which can tell you the weather in 5 cities, a cute fact about cats and the quote of the day. It also has a /gb-bot-help command to show you the available commands. try it at: https://hackclub.enterprise.slack.com/archives/C0P5NE354 Available commands: - /gb-bot-ping : Check bot latency - /gb-bot-catfact : Get a random cute cat fact - /gb-bot-qotd : Get the quote of the day - /gb-bot-weather : View current weather for selected cities - /gb-bot-help : Display the command list The container part was the thing I understood the least. I have no experience with linux and honestly i was blindly following the guide and hope the bot would get deployed without any issues which it did and i am grateful for that. Phew. This is only a basic bot up to this point. I will also be working on a V2.0 which would be more niche and tailored to my personality. THE GB BOT V2.0 coming soon!!!...
|
1792878616.6386704
|
1793742616.6386704
|
|
5885
|
"FTC" Concept Robot by @akhilatyam | Stard "FTC" Concept Robot by @akhilatyam | Stardance...
|
akhilatyam
|
2
|
27.0
|
377
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T02:00:19Z", "hours": 16.0, "multiplier": 13.83, "payout": 218, "blessing": "neutral", "text": "Presenting IRISv3, ship number 2!!! I would like to thank all those who have been a part of my journey, but lets get into it! To preface, most stuff I cover here is covered far more in depth in my readme, I suggest you read that as well. This project is NOT a part of First, or any other program, and is simply a learning experience for me. My last FTC season ended with a loss at state, mainly due to poor robot design, while I am no longer on my team, I decided to learn how to properly cad. Through this, I have created IRISv3!! What is it? It is a bot with a 3 artifact wide intake, 3 artifact hopper, a 360* turret, and a flip out parking mechanism! The onshape link will show you the robot, and the readme will provide an in depth view of its creation and thought process. Thank you for taking your time to review, hope you like it!", "repo": "https://github.com/Akhil-Atyam/IRISv3/", "demo": "https://cad.onshape.com/documents/06fbe5ed49f948d063feffdc/w/066c47fa9ac4b7611539e011/e/148f884616f1735568a81366?renderMode=0&uiState=6a3341bfd2cc085c33aab87a"}, {"ship_num": 2, "ts": "2026-06-19T00:16:11Z", "hours": 11.0, "multiplier": 14.03, "payout": 159, "blessing": "neutral", "text": "Presenting IRISv3!!! IRISv3 is a vast improvement of my teams original robot design and is designed to be a competitive robot in this years First Tech Challenge game, Decode. It has a 16 inch wide intake which can intake 3 artifacts at once, a 3 artifact large magazine, and a 360 degree turret to score. This robot taught me a lot about cad, as I am relatively new to it. Most parts can be CNC, 3d printed, or bought online at Rev Robotics, or GoBilda. If you are on any FIRST team, whether it be FLL FTC or FRC I do hope that you see this and end up liking the design off of it. Have a great day everyone!", "repo": "https://github.com/Akhil-Atyam/IRISv3/", "demo": "https://cad.onshape.com/documents/06fbe5ed49f948d063feffdc/w/066c47fa9ac4b7611539e011/e/148f884616f1735568a81366?renderMode=0&uiState=6a3341bfd2cc085c33aab87a"}]...
|
[{"post_id": 63895, "ts": "202 [{"post_id": 63895, "ts": "2026-09-07T22:22:18Z", "hours": 4.0853, "text": "#Devlog 7: The end for now, adjustable hood, thicker plates, and blender renders. Hello guys, and welcome, to one of the final devlogs of this series!!!! Next time you see me, hopefully it will be my ship, but lets go over my progress shall we? Adjustable hood Much awaited, as mentioned in my last devlog, my only way of controlling shots was through adjusting rpm, which is very power expensive and takes time, which isn’t ideal. This is why we now have a servo powered hood! You can try this for yourself by rotating the white part of the hood.We can now quickly adjust our shooting curve, meaning faster Shoot On the Move!!! (Credits to Rafin from 14469 for some help on the hood) ##Thicker plates Now this is something I’ll admit my friends have told me FOREVER about and I was too busy to figure out why my pocketing tool didn’t work, turns out my tool radius was too high. Now that its turned down, we can actually have thicker bars! This should hopefully drastically increase durability. (0.1 -> 0.22-0.3) ##Blender renders In preperation for my ship, I have begun the process of rendering. By the time this devlog is posted, my renders should be done, and atleast my banner is a render photo now. I have never really used blender much, so this is a decent learning curve for me. I would like to thank EVERYONE who supported me during this journey, and I hope you appreciate what this project taught me and hopefully you like it too!"}, {"post_id": 62579, "ts": "2026-09-06T01:22:14Z", "hours": 5.4958, "text": "Devlog 6: Parking Mech Pt2, Rubber bands, and more! Hey guys, this is a decently lengthy devlog, so lets get into it! Parking Mech My parking mech is done! My main problem, as you saw in the last devlog is that I only had around 20 degrees of room to deploy my bellypan cause I was hitting a bar, what was my solution? Getting rid of the bar. In all seriousness, I put out a small hole in the bar that way, the arm that connects my motor and bellypan can move through. Now, we can lay all the way flat, but there is still a large footprint, as anything that touches the ground adds to my footprint. So I added a small bar that should hopefully work to reduce my footprint (anything that touches the ground) Rubber bands Following advice from my last ship, I realized it was important for people to actually know where rubber bands were. Or atleast some what to understand. For now, I have added rubber bands, but I might end up making them a bit less opaque as its hard to see inside right now. Random other changes Removed that random spur gear on the back of Shooter, thats useless Added a light bar to the back of bot and an LED to the shooter. Future plans Odometry pods, this would be amazing Adjustable hood shooter, right now I can only adjust RPM, which takes time and is expensive on power, which I know all to well can kill matches. An adjustable hood would save so much power. Quite a long post, but hopefully ship #2 soon! Thanks! PS: On image one, top is old, bottom is new."}, {"post_id": 60553, "ts": "2026-09-02T23:37:55Z", "hours": 4.1261, "text": "Devlog 5: Parking Mechanism, Part 1 Hey guys! My first main content devlog after my last ship. One of the things I left out on my first ship is a parking mechanism. One of the unique things about this challenge is the parking bonus, where if 2 bots are fully within a 18x18 zone, we get 30 points (compared to 10 for just one) I decided to build a parking mechanism for this! This is partially inspired by 10255’s design, but only for the bellypan. Motor mount and ratchet is all uniquely mine. The motor First things first, how am I going to power it? Luckily, I have one motor left out of my 8 motor limit, so its simple as that, just adding a motor! But what RPM exactly? GoBilda, where I really like to get motors from has a multitude of options. I decided to go with 30 rpm, because i feel that would be more than strong enough to lift my robot. The ratchet But whats stopping it from falling back down after i climb??? Thats why I decided to make a small inline ratchet! Hopefully, it isnt meant to hold things for long of course, but it should be long enough to last atleast 3 seconds, which is the minimum for parks. The bellypan Now this part is a wip, this will be covered in part two. But for now, its just a polycarb sheet. (thank you pic collage for the collage tool im lowk abusing it) First image is part of my inspo btw, the other 2 are my CAD."}, {"post_id": 52651, "ts": "2026-08-22T21:55:34Z", "hours": 2.4314, "text": "Reship!! Hey guys, unfortunately my project did not pass my first ship. So I’m here to fix it. (according to shipwrights due to the specifics of my design it is ok to simply show a small 3dprinter version that unfortunately broke and a previous iteration that actually was built.) This is just a devlog for my images and stuff to be here. Video of it below https://youtu.be/BBkzpUcLwDI CLARIFICATION: This robot has never competed, is meant to be competed with, or any other relation with first. While the previous iterations shown are competition bots, this bot is not. This is simply a proof of concept of a competitive bot that I used in order to learn CAD. This project was created solely for my practice and to be presented under Stardance."}, {"post_id": 11651, "ts": "2026-06-19T00:02:33Z", "hours": 0.5117, "text": "Devlog 3 : Magazine and shooter Hello guys! This time we have most of the robot done, time for an overview! Magazine The Magazine is based off a rubber band design, this way we have compliance so that we do not have to spam wheels. If you look in the photos, you can see a set of blue and black wheels, those two are connected by rubber bands. Addressing one of the concerns in my ship: The balls should not fall out. since the ramp has a hole in the center ideally the artifacts should self center and the rubber bands should hold it in place (Something I have personally seen on a real robot). I also faced another major problem, how do I get my artifacts from my mag to my shooter? Due to the form factor of my build needing a turntable, I can’t just directly send it straight into the turret, as it wouldn’t reach without adding like 50 rollers. (large rollers would collide into my turntable housing) So i devised a counter roller, which is mounted in the rear and can speedily feed things into my shooter! (this is shown in the 2nd slide image on the bottom right, look for the 2 sets of black rollers near the green ball) Shooter I decided to go for a turret, although several teams have had major success in a straight shooter (shoutout to my goats 30564). This was because I felt that shooting on the move and shooting no matter where we are is what makes something competitive, and it also is a test of my cad skills. I took inspiration of the Andymark turntable, but the form factor wouldn’t work here, so I took the bearing and put it on a custom plate. For the turret itself, its a single 6K rpm motor, which from my previous experiences was more than enough, we also have a Limelight (vision camera) on the shooter for accurate localization."}, {"post_id": 8413, "ts": "2026-06-13T23:47:37Z", "hours": 9.3075, "text": "Devlog 2: The intake Hello again guys! Welcome back to more CAD Chronicles Today, I have our intake created. There are many different types of intakes I’ve seen this year, rubber band, vector wheel, and surgical tubing. All of these have pros and cons, so lets go over them. Rubber band: Rubber band intakes is what my team used back when I was on it. It is simple, effective, and once you touch an artifact, you keep it, there is very little wrong with it. But, it is harder with those to have the intake extend the entire width of the bot, so you might not be able to intake 3 artifacts at once. Vector wheels Now theres 2 kinds, fixed, and pivoting (where the wheels can move up and down to comply with the artifacts). I decided, that for auto strategy since we might be contacting multiple artifacts at once, to go with a fixed design for this. Vector wheels can easily span the entire width of a bot, and also funnel into the center. Surgical tubing This one is a nice one, basically for those who have not seen them, it is a form of intake where there is a central hub, and tubes stick out of the hub, almost like a fan. These are supposed to catch on to artifacts and pull them in. While these are pretty good, they do not have centering and also are quite large, so they do tend to stick out the bot. Now what did I pick? You might be able to tell from my image, but I ended up picking a vector wheel intake! I decided this was the best course of action, because I can easily intake 3 artifact wide, which is good for far zone cycling and also auto pattern cycling, and also it has centering. You will see in my next devlog why centering is important!"}, {"post_id": 1503, "ts": "2026-06-03T15:58:34Z", "hours": 1.5769, "text": "Devlog #1 : The beginnings Hello guys! Welcome to my project! I would like to thank you guys for checking my project out and here I’m gonna outline a bit of what I am going to do. What is my goal? I want to create a competitive FTC style bot! My last season on my team was last year, we got to state but we placed around 20th. This year, me and my friends will hopefully start a new team, but I need to learn CAD so that I am actually well equipped to do work. I decided that cadding a robot is the best way to do this! I decided on a couple goals. I want a vector intake (to maximize possible intaking area) As much custom cnc parts as possible (both a challenge for me and also conserves space) A turret (IMO most competitive bots use a turret so time to join that league) Those 3 goals will shape the rest of this project. Drivetrain My first thing was beginning my drivetrain, as you can see below I got around half of it done so far. Sketching is a bit awkward but I’m getting the hang of it. Hopefully this works out well!"}]...
|
Title: "FTC" Concept Robot by @akhilatyam Title: "FTC" Concept Robot by @akhilatyam | Stardance
Devlogs:
Devlog #1 : The beginnings Hello guys! Welcome to my project! I would like to thank you guys for checking my project out and here I’m gonna outline a bit of what I am going to do. What is my goal? I want to create a competitive FTC style bot! My last season on my team was last year, we got to state but we placed around 20th. This year, me and my friends will hopefully start a new team, but I need to learn CAD so that I am actually well equipped to do work. I decided that cadding a robot is the best way to do this! I decided on a couple goals. I want a vector intake (to maximize possible intaking area) As much custom cnc parts as possible (both a challenge for me and also conserves space) A turret (IMO most competitive bots use a turret so time to join that league) Those 3 goals will shape the rest of this project. Drivetrain My first thing was beginning my drivetrain, as you can see below I got around half of it done so far. Sketching is a bit awkward but I’m getting the hang of it. Hopefully this works out well!
Devlog 2: The intake Hello again guys! Welcome back to more CAD Chronicles Today, I have our intake created. There are many different types of intakes I’ve seen this year, rubber band, vector wheel, and surgical tubing. All of these have pros and cons, so lets go over them. Rubber band: Rubber band intakes is what my team used back when I was on it. It is simple, effective, and once you touch an artifact, you keep it, there is very little wrong with it. But, it is harder with those to have the intake extend the entire width of the bot, so you might not be able to intake 3 artifacts at once. Vector wheels Now theres 2 kinds, fixed, and pivoting (where the wheels can move up and down to comply with the artifacts). I decided, that for auto strategy since we might be contacting multiple artifacts at once, to go with a fixed design for this. Vector wheels can easily span the entire width of a bot, and also funnel into the center. Surgical tubing This one is a nice one, basically for those who have not seen them, it is a form of intake where there is a central hub, and tubes stick out of the hub, almost like a fan. These are supposed to catch on to artifacts and pull them in. While these are pretty good, they do not have centering and also are quite large, so they do tend to stick out the bot. Now what did I pick? You might be able to tell from my image, but I ended up picking a vector wheel intake! I decided this was the best course of action, because I can easily intake 3 artifact wide, which is good for far zone cycling and also auto pattern cycling, and also it has centering. You will see in my next devlog why centering is important!
Devlog 3 : Magazine and shooter Hello guys! This time we have most of the robot done, time for an overview! Magazine The Magazine is based off a rubber band design, this way we have compliance so that we do not have to spam wheels. If you look in the photos, you can see a set of blue and black wheels, those two are connected by rubber bands. Addressing one of the concerns in my ship: The balls should not fall out. since the ramp has a hole in the center ideally the artifacts should self center and the rubber bands should hold it in place (Something I have personally seen on a real robot). I also faced another major problem, how do I get my artifacts from my mag to my shooter? Due to the form factor of my build needing a turntable, I can’t just directly send it straight into the turret, as it wouldn’t reach without adding like 50 rollers. (large rollers would collide into my turntable housing) So i devised a counter roller, which is mounted in the rear and can speedily feed things into my shooter! (this is shown in the 2nd slide image on the bottom right, look for the 2 sets of black rollers near the green ball) Shooter I decided to go for a turret, although several teams have had major success in a straight shooter (shoutout to my goats 30564). This was because I felt that shooting on the move and shooting no matter where we are is what makes something competitive, and it also is a test of my cad skills. I took inspiration of the Andymark turntable, but the form factor wouldn’t work here, so I took the bearing and put it on a custom plate. For the turret itself, its a single 6K rpm motor, which from my previous experiences was more than enough, we also have a Limelight (vision camera) on the shooter for accurate localization.
Reship!! Hey guys, unfortunately my project did not pass my first ship. So I’m here to fix it. (according to shipwrights due to the specifics of my design it is ok to simply show a small 3dprinter version that unfortunately broke and a previous iteration that actually was built.) This is just a devlog for my images and stuff to be here. Video of it below https://youtu.be/BBkzpUcLwDI CLARIFICATION: This robot has never competed, is meant to be competed with, or any other relation with first. While the previous iterations shown are competition bots, this bot is not. This is simply a proof of concept of a competitive bot that I used in order to learn CAD. This project was created solely for my practice and to be presented under Stardance.
Devlog 5: Parking Mechanism, Part 1 Hey guys! My first main content devlog after my last ship. One of the things I left out on my first ship is a parking mechanism. One of the unique things about this challenge is the parking bonus, where if 2 bots are fully within a 18x18 zone, we get 30 points (compared to 10 for just one) I decided to build a parking mechanism for this! This is partially inspired by 10255’s design, but only for the bellypan. Motor mount and ratchet is all uniquely mine. The motor First things first, how am I going to power it? Luckily, I have one motor left out of my 8 motor limit, so its simple as that, just adding a motor! But what RPM exactly? GoBilda, where I really like to get motors from has a multitude of options. I decided to go with 30 rpm, because i feel that would be more than strong enough to lift my robot. The ratchet But whats stopping it from falling back down after i climb??? Thats why I decided to make a small inline ratchet! Hopefully, it isnt meant to hold things for long of course, but it should be long enough to last atleast 3 seconds, which is the minimum for parks. The bellypan Now this part is a wip, this will be covered in part two. But for now, its just a polycarb sheet. (thank you pic collage for the collage tool im lowk abusing it) First image is part of my inspo btw, the other 2 are my CAD.
Devlog 6: Parking Mech Pt2, Rubber bands, and more! Hey guys, this is a decently lengthy devlog, so lets get into it! Parking Mech My parking mech is done! My main problem, as you saw in the last devlog is that I only had around 20 degrees of room to deploy my bellypan cause I was hitting a bar, what was my solution? Getting rid of the bar. In all seriousness, I put out a small hole in the bar that way, the arm that connects my motor and bellypan can move through. Now, we can lay all the way flat, but there is still a large footprint, as anything that touches the ground adds to my footprint. So I added a small bar that should hopefully work to reduce my footprint (anything that touches the ground) Rubber bands Following advice from my last ship, I realized it was important for people to actually know where rubber bands were. Or atleast some what to understand. For now, I have added rubber bands, but I might end up making them a bit less opaque as its hard to see inside right now. Random other changes Removed that random spur gear on the back of Shooter, thats useless Added a light bar to the back of bot and an LED to the shooter. Future plans Odometry pods, this would be amazing Adjustable hood shooter, right now I can only adjust RPM, which takes time and is expensive on power, which I know all to well can kill matches. An adjustable hood would save so much power. Quite a long post, but hopefully ship #2 soon! Thanks! PS: On image one, top is old, bottom is new.
#Devlog 7: The end for now, adjustable hood, thicker plates, and blender renders. Hello guys, and welcome, to one of the final devlogs of this series!!!! Next time you see me, hopefully it will be my ship, but lets go over my progress shall we? Adjustable hood Much awaited, as mentioned in my last devlog, my only way of controlling shots was through adjusting rpm, which is very power expensive and takes time, which isn’t ideal. This is why we now have a servo powered hood! You can try this for yourself by rotating the white part of the hood.We can now quickly adjust our shooting curve, meaning faster Shoot On the Move!!! (Credits to Rafin from 14469 for some help on the hood) ##Thicker plates Now this is something I’ll admit my friends have told me FOREVER about and I was too busy to figure out why my pocketing tool didn’t work, turns out my tool radius was too high. Now that its turned down, we can actually have thicker bars! This should hopefully drastically increase durability. (0.1 -> 0.22-0.3) ##Blender renders In preperation for my ship, I have begun the process of rendering. By the time this devlog is posted, my renders should be done, and atleast my banner is a render photo now. I have never really used blender much, so this is a decent learning curve for me. I would like to thank EVERYONE who supported me during this journey, and I hope you appreciate what this project taught me and hopefully you like it too!
Ships:
Presenting IRISv3!!! IRISv3 is a vast improvement of my teams original robot design and is designed to be a competitive robot in this years First Tech Challenge game, Decode. It has a 16 inch wide intake which can intake 3 artifacts at once, a 3 artifact large magazine, and a 360 degree turret to score. This robot taught me a lot about cad, as I am relatively new to it. Most parts can be CNC, 3d printed, or bought online at Rev Robotics, or GoBilda. If you are on any FIRST team, whether it be FLL FTC or FRC I do hope that you see this and end up liking the design off of it. Have a great day everyone!
Presenting IRISv3, ship number 2!!! I would like to thank all those who have been a part of my journey, but lets get into it! To preface, most stuff I cover here is covered far more in depth in my readme, I suggest you read that as well. This project is NOT a part of First, or any other program, and is simply a learning experience for me. My last FTC season ended with a loss at state, mainly due to poor robot design, while I am no longer on my team, I decided to learn how to properly cad. Through this, I have created IRISv3!! What is it? It is a bot with a 3 artifact wide intake, 3 artifact hopper, a 360* turret, and a flip out parking mechanism! The onshape link will show you the robot, and the readme will provide an in depth view of its creation and thought process. Thank you for taking your time to review, hope you like it!...
|
1793119702.7704167
|
1793206102.7704167
|
|
53955
|
chirag-portfolio by @chiraglol | Stardance
|
chiraglol
|
1
|
12.0
|
95
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T01:08:15Z", "hours": 12.0, "multiplier": 7.67, "payout": 95, "blessing": "neutral", "text": "After 3 whole years of not updating my portfolio even once, I finally redesigned it from scratch. Lowkey proud of myself for building this with bare minimum usage of AI especially considering I normally suck at design but hey it looks really nice! Integrated the hackatime API to fetch live statistics about my VSCode usage and also last.fm API to display what music I’m listening to at the moment or what I last listened to. Learnt about cached components in Next.js so that’s always a plus :D Hope y’all love it too, and i would love some design suggestions :)", "repo": "https://github.com/chirag350/new-portfolio", "demo": "https://chirag.dev"}]...
|
[{"post_id": 63945, "ts": "202 [{"post_id": 63945, "ts": "2026-09-08T00:57:59Z", "hours": 2.4542, "text": "Last commit before shipping :D! Loved working on actually designing and making a frontend all by myself with bare minimum use of AI Worked on adding a contact section, my socials and a footer. Improved glow all along and fixed scrolling on mobile. See ya until the next one!"}, {"post_id": 62612, "ts": "2026-09-06T02:36:10Z", "hours": 2.135, "text": "overexposed video for some reason but improved glow (much less than you can see in the vid) and implemented state management using zustand (zustand»»»»>) to change nav glow upon scroll using interaction observer"}, {"post_id": 62206, "ts": "2026-09-05T13:57:15Z", "hours": 2.1869, "text": "made the projects section for my portfolio listing all the projects i’ve made over the years"}, {"post_id": 60726, "ts": "2026-09-03T09:08:05Z", "hours": 0.7322, "text": "worked on mobile navigation and improved layout for mobile (give suggestions 😋)"}, {"post_id": 60688, "ts": "2026-09-03T07:09:00Z", "hours": 1.4556, "text": "integrated the hackatime api to pull weekly statistics"}, {"post_id": 58523, "ts": "2026-08-30T23:19:03Z", "hours": 3.3631, "text": "A portfolio for myself, not much done yet but hey! still in the works :) love the catppuccin icons 😋"}]...
|
Title: chirag-portfolio by @chiraglol | Stardance
Title: chirag-portfolio by @chiraglol | Stardance
Devlogs:
A portfolio for myself, not much done yet but hey! still in the works :) love the catppuccin icons 😋
integrated the hackatime api to pull weekly statistics
worked on mobile navigation and improved layout for mobile (give suggestions 😋)
made the projects section for my portfolio listing all the projects i’ve made over the years
overexposed video for some reason but improved glow (much less than you can see in the vid) and implemented state management using zustand (zustand»»»»>) to change nav glow upon scroll using interaction observer
Last commit before shipping :D! Loved working on actually designing and making a frontend all by myself with bare minimum use of AI Worked on adding a contact section, my socials and a footer. Improved glow all along and fixed scrolling on mobile. See ya until the next one!
Ships:
After 3 whole years of not updating my portfolio even once, I finally redesigned it from scratch. Lowkey proud of myself for building this with bare minimum usage of AI especially considering I normally suck at design but hey it looks really nice! Integrated the hackatime API to fetch live statistics about my VSCode usage and also last.fm API to display what music I’m listening to at the moment or what I last listened to. Learnt about cached components in Next.js so that’s always a plus :D Hope y’all love it too, and i would love some design suggestions :)...
|
1793102114.3120172
|
1793188514.3120172
|
|
51315
|
Poker by @jinjin | Stardance
|
jinjin
|
3
|
58.0
|
102
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T23:45:14Z", "hours": 31.0, "multiplier": 1.13, "payout": 35, "blessing": "neutral", "text": "I made Stardance Hold’em, a browser-based Texas Hold’em game where you play against 3 AI opponents using virtual Stardance Stars. I started with a basic poker table and gradually built out the actual game logic, including dealing, blinds, betting, community cards, hand evaluation and showdowns. I also added things like a leaderboard, daily rewards, session stats, emotes, animations and power-ups such as Peek Card, Double Pot and 2nd Chance Swap. One of the more challenging parts was getting the poker logic right, especially comparing hands and handling things like split pots and the different stages of a hand. I also spent quite a bit of time making the UI feel polished rather than just having a functional poker game. I’m most proud of how much the project grew from the original idea. It’s now something you can actually sit down and play, with the AI, progression systems and lots of small interactions making it feel more like a complete game. Everything uses virtual points only — there is no real-money wagering.", "repo": "https://github.com/jinjintt89-cmyk/Poker", "demo": "https://poker2-nu.vercel.app/"}, {"ship_num": 2, "ts": "2026-09-04T23:43:51Z", "hours": 24.0, "multiplier": 5.45, "payout": 65, "blessing": "neutral", "text": "So I am reshipping this project, i hope you guys like it", "repo": "https://github.com/jinjintt89-cmyk/Poker", "demo": "https://poker2-nu.vercel.app/"}, {"ship_num": 3, "ts": "2026-08-20T07:33:57Z", "hours": 3.0, "multiplier": 1.01, "payout": 2, "blessing": "neutral", "text": "Please give me 15 stars i always give everyone else. Please pass on kindness", "repo": "https://github.com/jinjintt89-cmyk/Poker", "demo": "https://poker2-nu.vercel.app/"}]...
|
[{"post_id": 63423, "ts": "202 [{"post_id": 63423, "ts": "2026-09-07T08:04:44Z", "hours": 7.6525, "text": "Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game."}, {"post_id": 62942, "ts": "2026-09-06T14:24:44Z", "hours": 7.0783, "text": "Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game."}, {"post_id": 62712, "ts": "2026-09-06T06:17:32Z", "hours": 5.3728, "text": "Devlog 1 — getting the table working The table is finally starting to feel like an actual game."}, {"post_id": 62536, "ts": "2026-09-05T23:31:26Z", "hours": 8.8156, "text": "Completly restarting"}, {"post_id": 62126, "ts": "2026-09-05T11:45:41Z", "hours": 2.4, "text": "Adding feedback"}, {"post_id": 61846, "ts": "2026-09-04T23:35:47Z", "hours": 8.2067, "text": "Just trying to get more stars"}, {"post_id": 59214, "ts": "2026-08-31T21:42:42Z", "hours": 3.6156, "text": "Adding autosave feature, took a while"}, {"post_id": 57980, "ts": "2026-08-30T09:53:03Z", "hours": 2.8667, "text": "Writing the code and adding some new things in the shop"}, {"post_id": 57895, "ts": "2026-08-30T07:02:37Z", "hours": 5.4508, "text": "Fixing it trying to get it shipped"}, {"post_id": 57720, "ts": "2026-08-29T23:42:56Z", "hours": 3.4681, "text": "Making the code human"}, {"post_id": 50814, "ts": "2026-08-20T07:17:42Z", "hours": 0.8381, "text": "Just fixing it"}, {"post_id": 50627, "ts": "2026-08-19T21:30:26Z", "hours": 1.7775, "text": "Today I trouble shooted my code"}]...
|
Title: Poker by @jinjin | Stardance
Devlogs:
Toda Title: Poker by @jinjin | Stardance
Devlogs:
Today I trouble shooted my code
Just fixing it
Making the code human
Fixing it trying to get it shipped
Writing the code and adding some new things in the shop
Adding autosave feature, took a while
Just trying to get more stars
Adding feedback
Completly restarting
Devlog 1 — getting the table working The table is finally starting to feel like an actual game.
Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game.
Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game.
Ships:
Please give me 15 stars i always give everyone else. Please pass on kindness
So I am reshipping this project, i hope you guys like it
I made Stardance Hold’em, a browser-based Texas Hold’em game where you play against 3 AI opponents using virtual Stardance Stars. I started with a basic poker table and gradually built out the actual game logic, including dealing, blinds, betting, community cards, hand evaluation and showdowns. I also added things like a leaderboard, daily rewards, session stats, emotes, animations and power-ups such as Peek Card, Double Pot and 2nd Chance Swap. One of the more challenging parts was getting the poker logic right, especially comparing hands and handling things like split pots and the different stages of a hand. I also spent quite a bit of time making the UI feel polished rather than just having a functional poker game. I’m most proud of how much the project grew from the original idea. It’s now something you can actually sit down and play, with the AI, progression systems and lots of small interactions making it feel more like a complete game. Everything uses virtual points only — there is no real-money wagering....
|
1792878456.099987
|
1793742456.099987
|
|
47463
|
SmileyWare by @kira_iovenko | Stardance
|
kira_iovenko
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T23:03:22Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made SmileyWare, a fast-paced game with three different minigames: a platformer, a clicker game, and a maze. The most challenging part was connecting all the minigames and making sure the logic, movement, coordinates, timers, and screens worked together properly. I’m proud that I built the game myself with a little assistance from ChatGPT for debugging issues, created my own sprites and textures, and added my own ideas to the project like moving targets in the clicker game and random star positions in the maze. To test my game, open the demo link and play through the minigames while trying to beat the timer.", "repo": "https://github.com/kira-iovenko/WarioWareGame", "demo": "https://kira-iovenko.github.io/WarioWareGame/"}]...
|
[{"post_id": 63905, "ts": "202 [{"post_id": 63905, "ts": "2026-09-07T22:52:26Z", "hours": 1.7875, "text": "Today, I improved the gameplay and made SmileyWare feel more polished and playful. I fixed the player sprite in the platformer minigame so it faces the direction of movement, added different directions for the top-down character, and made the stars in the clicker minigame move at random speeds and directions. I also updated the winner and death screens to give them more personality."}, {"post_id": 63822, "ts": "2026-09-07T19:54:05Z", "hours": 6.6225, "text": "During last week. I followed the guide to create a platformer minigame and a clicker minigame, then added my own maze minigame. At first, I used default textures and sprites. I connected all the parts of the game, fixed several bugs, and updated the game logic several times to make everything run smoothly. At the end, I created custom textures and sprites in Canva using basic shapes and gradients, and then used my artwork to style all the game scenes."}, {"post_id": 57034, "ts": "2026-08-29T03:21:56Z", "hours": 0.4672, "text": "Today I created the scripts and set up the level scene. It took some time to understand how it works in godot even with all references in the guide, but I managed to get through the steps and it is ready to start building my first minigame next."}, {"post_id": 56389, "ts": "2026-08-28T04:28:05Z", "hours": 0.6444, "text": "Today I started my warioware project in Godot and set up the basic project structure according to guide. I created the title screen with a title and start/settings/quit buttons. I haven’t made my own art yet, so I’m just using the basic visuals for now."}]...
|
Title: SmileyWare by @kira_iovenko | Stardance
De Title: SmileyWare by @kira_iovenko | Stardance
Devlogs:
Today I started my warioware project in Godot and set up the basic project structure according to guide. I created the title screen with a title and start/settings/quit buttons. I haven’t made my own art yet, so I’m just using the basic visuals for now.
Today I created the scripts and set up the level scene. It took some time to understand how it works in godot even with all references in the guide, but I managed to get through the steps and it is ready to start building my first minigame next.
During last week. I followed the guide to create a platformer minigame and a clicker minigame, then added my own maze minigame. At first, I used default textures and sprites. I connected all the parts of the game, fixed several bugs, and updated the game logic several times to make everything run smoothly. At the end, I created custom textures and sprites in Canva using basic shapes and gradients, and then used my artwork to style all the game scenes.
Today, I improved the gameplay and made SmileyWare feel more polished and playful. I fixed the player sprite in the platformer minigame so it faces the direction of movement, added different directions for the top-down character, and made the stars in the clicker minigame move at random speeds and directions. I also updated the winner and death screens to give them more personality.
Ships:
I made SmileyWare, a fast-paced game with three different minigames: a platformer, a clicker game, and a maze. The most challenging part was connecting all the minigames and making sure the logic, movement, coordinates, timers, and screens worked together properly. I’m proud that I built the game myself with a little assistance from ChatGPT for debugging issues, created my own sprites and textures, and added my own ideas to the project like moving targets in the clicker game and random star positions in the maze. To test my game, open the demo link and play through the minigames while trying to beat the timer....
|
1793145290.4704914
|
1793231690.4704914
|
|
19478
|
Searchuse 1.4.4 by @ai_zamden | Stardance
|
ai_zamden
|
3
|
135.0
|
1486
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T22:47:37Z", "hours": 33.0, "multiplier": 11.36, "payout": 340, "blessing": "neutral", "text": "Hey guys, this is my third ship for my turn-based strategy game Searchuse. A lot of you guys suggested to add a tutorial, so I made one, and now it’s a lot easier to figure out how to play the game! I hope you enjoy.", "repo": "https://github.com/aidenzma/Searchuse", "demo": "https://ai-zamden.itch.io/searchuse"}, {"ship_num": 2, "ts": "2026-07-17T01:35:02Z", "hours": 77.0, "multiplier": 14.75, "payout": 853, "blessing": "neutral", "text": "I’ve listened to the people and have tried to make as many improvements as I could. UI has been improved Art has been pixel-adjusted Controls are specified in the README Main Menu button has been added Searchuse is now available on Linux AND Searchuse is now available on BROWSER (itch.io, the demo link) So now everyone is theoretically able to try it! A large portion of my time was spent creating a neural network for the bot (that can only be experienced in Train Bot, there’s a hardcoded bot and a neural network bot.) (The neural network bot is still very inexperienced currently.) (Admittedly, Gemini helped me a lot with setting up that portion of the game.) For specific help in downloading the zips, visit the README.", "repo": "https://github.com/aidenzma/Searchuse", "demo": "https://ai-zamden.itch.io/searchuse"}, {"ship_num": 3, "ts": "2026-06-25T04:03:09Z", "hours": 25.0, "multiplier": 12.05, "payout": 293, "blessing": "neutral", "text": "I made a turn-based strategy game called Searchuse, where you search for and then use various items with different mechanics. A challenge in the process was getting all of the turn-based logic right. (For cooldowns and lasting effects, the timing can be surprisingly complicated to get down.) I’m proud that there aren’t any glaring bugs in the game right now. To play, move around using arrow keys, and press the buttons search or use. There are deeper mechanics you can learn, but the surface-level controls should be intuitive! Here’s the trailer: https://youtu.be/wL6j5aslFXA Join the Discord: https://discord.gg/NpBV6vHc7", "repo": "https://github.com/aidenzma/Searchuse", "demo": "https://ai-zamden.itch.io/searchuse"}]...
|
[{"post_id": 63898, "ts": "202 [{"post_id": 63898, "ts": "2026-09-07T22:44:08Z", "hours": 3.3097, "text": "I’m finished with the tutorial, so now you guys can easily learn how to play Searchuse!"}, {"post_id": 63059, "ts": "2026-09-06T17:21:51Z", "hours": 9.2094, "text": "I’m making a tutorial to teach new users how to play the game, as requested by feedback for my latest ship."}, {"post_id": 36775, "ts": "2026-07-29T01:24:16Z", "hours": 12.9503, "text": "I did a massive overhaul of the inner workings of the inventory system, changing the data tracking from only ints representing the itemIDs to structs which provide a container for data of items. I did this because I had to add individual item durability."}, {"post_id": 34389, "ts": "2026-07-25T02:19:17Z", "hours": 7.4644, "text": "After a long while, some new content is finally added to Searchuse. Introducing: Armor Piercing Rounds: Use with certain weapons to allow damage to be done as if the opponent were wearing no armor! Beretta+: An upgraded version of the Beretta, this weapon allows you to do damage the the enemy’s max health, a groundbreaking new mechanic added in this update. Fixed: Energy Orb edge bug: Now, the Energy Orb and other explosives will explode when hitting the edge of the map instead of not doing anything! Smoke vision bug: A small error in FOV rendering while in a smoked area was fixed. Factory edge bug: A visual glitch that resulted in Factory tiles peeking out from under the greyed out vision area was fixed."}, {"post_id": 29881, "ts": "2026-07-17T01:27:03Z", "hours": 1.3161, "text": "Searchuse is now available on Linux and Browser!"}, {"post_id": 29302, "ts": "2026-07-16T04:03:09Z", "hours": 7.9944, "text": "I’ve made major UI improvements to the game!"}, {"post_id": 26990, "ts": "2026-07-12T03:45:34Z", "hours": 10.4197, "text": "I’ve set up the system so that my hardcoded bot can train the neural network bot. This is gonna be fun!"}, {"post_id": 26063, "ts": "2026-07-10T17:29:06Z", "hours": 8.1575, "text": "I started building a neural network for the bot so that I can train it and it can learn. This is what the data file looks like for all of the weights and nodes."}, {"post_id": 24880, "ts": "2026-07-08T18:45:45Z", "hours": 2.7314, "text": "I coded an algorithm that allows the bot to scan the map, and the resulting data lists are represented here by colors! Red = near mountains & hills Green = near cover (caves & trees) Blue = near loot (buildings)"}, {"post_id": 24522, "ts": "2026-07-08T03:50:22Z", "hours": 15.1186, "text": "I added a world map to Searchuse!"}, {"post_id": 21711, "ts": "2026-07-03T20:06:43Z", "hours": 7.6906, "text": "I’ve upgraded the bot’s intelligence. Instead of only being aware of the enemy when they are in its immediate vision, the bot now remembers where it previously saw the enemy, keeps track of how many opportunities to move the enemy had since then, and precisely calculates all the squares the enemy could be on using a flood fill algorithm, based on how many moves the bot thinks the enemy had. (The eye icons represent what the bot thinks are the possible positions of my player based on where it last saw my player. (Sometimes the player can “escape” the eyes by having more moves than what the bot thinks the player has.) (Otherwise, if the bot is right about how many moves the player has, the player should not be able to move to a square without an eye icon.))"}, {"post_id": 20077, "ts": "2026-07-01T16:24:44Z", "hours": 23.2564, "text": "I worked on the enemy AI for my turn-based game Searchuse. The enemy can now use tools, such as invisibility potions, binoculars, radars, UAVs, and traps like landmines or C4s, and can also get airdrops."}, {"post_id": 15456, "ts": "2026-06-25T03:54:38Z", "hours": 4.6358, "text": "I added a few final features to match my turn-based strategy on Unity to its Scratch predecessor. Added: Hitmarker: When you’re hit with an unsuppressed weapon or bomb, a red arrow appears, telling you in which direction on your player’s character’s body you felt the impact. Cooldown visualiser: When you press c, a visual will show up that will show you all the items you have on cooldown and how many turns it is before you can use them next. 4 turn heavy weapons rule: In the first 4 turns, it is now impossible to find any weapon that totals a damage greater than 25 per turn. 3 weapon limit: You can only carry 3 weapons at a time. (By weapons I mean those that stay in your inventory, so something like Grenade doesn’t count.) If you find another weapon while you’re at your limit, you can choose to switch. Turns text: You can now press t to show the turns text, which is below the moves text and shows how many turns it’s been. Turn indicator: On the bottom of your screen, you’ll now find a green or blue landscape that indicates whose turn it is. (Green meaning your turn, blue meaning the enemy’s turn.)"}, {"post_id": 14868, "ts": "2026-06-24T04:17:21Z", "hours": 2.3808, "text": "Added: Message in a Floating Bottle: Like a book, it gives you a random powerup, but its rarity is lower than that of a book. However, its upside is that it is granted immediately after searching. Can only be found in water. AK-47: The world’s most iconic rifle is now in Searchuse! With 2 shots of 20 damage each, this addition provides more mid-tier weapon choices. AK-74: An upgrade of the AK-47, this gun matches the damage done by the M4A1, but it has a lesser cooldown, making it the more desirable option. Meat Stick: This item provides a solid mid-tier healing option, giving you 40 health in one bite. Spikes: This item gives you three more moves, but takes up an armor slot and provides 0 armor. (my beautiful art below)"}, {"post_id": 14567, "ts": "2026-06-23T18:50:46Z", "hours": 10.5353, "text": "I added a bunch of features, a new item, and fixed some bugs for my turn-based strategy game Searchuse. Added: Replay for when Vital Signs run out Replay for when Binoculars runs out Book: when read, gives you a random skill. These skills range from increasing moves to getting 2 searches per turn, so put on your reading glasses and pick up a book! You can also now press b to see your book inventory. Use arrow keys to navigate. Roll Chances Information: press L to open Roll Chances Information, which will tell you the chances of getting each rarity on each tile when you press search. Use arrow keys to navigate. Changed: Sound when picking up Thermal Vision Goggles Fixed: Not being able to start your turn on bot mode glitch Normalized speeds for UAV animation, texts, and movement"}, {"post_id": 11694, "ts": "2026-06-19T01:46:35Z", "hours": 7.0461, "text": "I added an airdrop to my turn-based strategy game Searchuse, which, instead of one, gives you three options to choose from when you press search."}, {"post_id": 9970, "ts": "2026-06-16T14:36:33Z", "hours": 0.32, "text": "I added a UAV to my turn-based strategy game Searchuse, which tracks down the enemy."}]...
|
Title: Searchuse 1.4.4 by @ai_zamden | Stardance
Title: Searchuse 1.4.4 by @ai_zamden | Stardance
Devlogs:
I added a UAV to my turn-based strategy game Searchuse, which tracks down the enemy.
I added an airdrop to my turn-based strategy game Searchuse, which, instead of one, gives you three options to choose from when you press search.
I added a bunch of features, a new item, and fixed some bugs for my turn-based strategy game Searchuse. Added: Replay for when Vital Signs run out Replay for when Binoculars runs out Book: when read, gives you a random skill. These skills range from increasing moves to getting 2 searches per turn, so put on your reading glasses and pick up a book! You can also now press b to see your book inventory. Use arrow keys to navigate. Roll Chances Information: press L to open Roll Chances Information, which will tell you the chances of getting each rarity on each tile when you press search. Use arrow keys to navigate. Changed: Sound when picking up Thermal Vision Goggles Fixed: Not being able to start your turn on bot mode glitch Normalized speeds for UAV animation, texts, and movement
Added: Message in a Floating Bottle: Like a book, it gives you a random powerup, but its rarity is lower than that of a book. However, its upside is that it is granted immediately after searching. Can only be found in water. AK-47: The world’s most iconic rifle is now in Searchuse! With 2 shots of 20 damage each, this addition provides more mid-tier weapon choices. AK-74: An upgrade of the AK-47, this gun matches the damage done by the M4A1, but it has a lesser cooldown, making it the more desirable option. Meat Stick: This item provides a solid mid-tier healing option, giving you 40 health in one bite. Spikes: This item gives you three more moves, but takes up an armor slot and provides 0 armor. (my beautiful art below)
I added a few final features to match my turn-based strategy on Unity to its Scratch predecessor. Added: Hitmarker: When you’re hit with an unsuppressed weapon or bomb, a red arrow appears, telling you in which direction on your player’s character’s body you felt the impact. Cooldown visualiser: When you press c, a visual will show up that will show you all the items you have on cooldown and how many turns it is before you can use them next. 4 turn heavy weapons rule: In the first 4 turns, it is now impossible to find any weapon that totals a damage greater than 25 per turn. 3 weapon limit: You can only carry 3 weapons at a time. (By weapons I mean those that stay in your inventory, so something like Grenade doesn’t count.) If you find another weapon while you’re at your limit, you can choose to switch. Turns text: You can now press t to show the turns text, which is below the moves text and shows how many turns it’s been. Turn indicator: On the bottom of your screen, you’ll now find a green or blue landscape that indicates whose turn it is. (Green meaning your turn, blue meaning the enemy’s turn.)
I worked on the enemy AI for my turn-based game Searchuse. The enemy can now use tools, such as invisibility potions, binoculars, radars, UAVs, and traps like landmines or C4s, and can also get airdrops.
I’ve upgraded the bot’s intelligence. Instead of only being aware of the enemy when they are in its immediate vision, the bot now remembers where it previously saw the enemy, keeps track of how many opportunities to move the enemy had since then, and precisely calculates all the squares the enemy could be on using a flood fill algorithm, based on how many moves the bot thinks the enemy had. (The eye icons represent what the bot thinks are the possible positions of my player based on where it last saw my player. (Sometimes the player can “escape” the eyes by having more moves than what the bot thinks the player has.) (Otherwise, if the bot is right about how many moves the player has, the player should not be able to move to a square without an eye icon.))
I added a world map to Searchuse!
I coded an algorithm that allows the bot to scan the map, and the resulting data lists are represented here by colors! Red = near mountains & hills Green = near cover (caves & trees) Blue = near loot (buildings)
I started building a neural network for the bot so that I can train it and it can learn. This is what the data file looks like for all of the weights and nodes.
I’ve set up the system so that my hardcoded bot can train the neural network bot. This is gonna be fun!
I’ve made major UI improvements to the game!
Searchuse is now available on Linux and Browser!
After a long while, some new content is finally added to Searchuse. Introducing: Armor Piercing Rounds: Use with certain weapons to allow damage to be done as if the opponent were wearing no armor! Beretta+: An upgraded version of the Beretta, this weapon allows you to do damage the the enemy’s max health, a groundbreaking new mechanic added in this update. Fixed: Energy Orb edge bug: Now, the Energy Orb and other explosives will explode when hitting the edge of the map instead of not doing anything! Smoke vision bug: A small error in FOV rendering while in a smoked area was fixed. Factory edge bug: A visual glitch that resulted in Factory tiles peeking out from under the greyed out vision area was fixed.
I did a massive overhaul of the inner workings of the inventory system, changing the data tracking from only ints representing the itemIDs to structs which provide a container for data of items. I did this because I had to add individual item durability.
I’m making a tutorial to teach new users how to play the game, as requested by feedback for my latest ship.
I’m finished with the tutorial, so now you guys can easily learn how to play Searchuse!
Ships:
I made a turn-based strategy game called Searchuse, where you search for and then use various items with different mechanics. A challenge in the process was getting all of the turn-based logic right. (For cooldowns and lasting effects, the timing can be surprisingly complicated to get down.) I’m proud that there aren’t any glaring bugs in the game right now. To play, move around using arrow keys, and press the buttons search or use. There are deeper mechanics you can learn, but the surface-level controls should be intuitive! Here’s the trailer: https://youtu.be/wL6j5aslFXA Join the Discord: https://discord.gg/NpBV6vHc7
I’ve listened to the people and have tried to make as many improvements as I could. UI has been improved Art has been pixel-adjusted Controls are specified in the README Main Menu button has been added Searchuse is now available on Linux AND Searchuse is now available on BROWSER (itch.io, the demo link) So now everyone is theoretically able to try it! A large portion of my time was spent creating a neural network for the bot (that can only be experienced in Train Bot, there’s a hardcoded bot and a neural network bot.) (The neural network bot is still very inexperienced currently.) (Admittedly, Gemini helped me a lot with setting up that portion of the game.) For specific help in downloading the zips, visit the README.
Hey guys, this is my third ship for my turn-based strategy game Searchuse. A lot of you guys suggested to add a tutorial, so I made one, and now it’s a lot easier to figure out how to play the game! I hope you enjoy....
|
1793130628.4837508
|
1793217028.4837508
|
|
19164
|
BadGPT by @28taidan | Stardance
|
28taidan
|
1
|
121.0
|
1974
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T22:47:09Z", "hours": 121.0, "multiplier": 16.85, "payout": 1974, "blessing": "neutral", "text": "badGPT is a conglomeration of sequential ML projects I did this summer, culminating in a chatbot like ChatGPT or Claude built from scratch using just python and numpy. I started off by building a name generation model, then a Shakespeare writing model, then finally a chatGPT-esque model. The model produces, for the most part, complete gibberish, so this was less a practical project and more an exercise in understanding how everything works. It performs so poorly because it’s so small. Models need a lot of parameters to be able to capture all the nuances required to produce coherent text, which makes the models much slower to train. The final model I made includes around 120,000 parameters, 4 transformer blocks of 4 attention heads each, and 64 tokens of context. It’s based largely on GPT-2, which for reference had about 1.5 billion parameters. Current frontier models, like Anthropic’s fable, have trillions of parameters and can have millions of input tokens, so it makes sense that my model is too small to make much sense at all. Even at its small size, it took my laptop more than 20 hours to train, so scaling up with my current hardware is not feasible. Many people like using libraries like pytorch and tensorflow, which include classes that handle backpropagation (the system that’s at the heart of letting the models learn), but I wanted to start from scratch so I wrote my own. If you wish to try any of my models out, you can visit the demo website (click try project), and click through the tabs to see each of the models. It all runs in your browser. You can also look through the Jupyter notebooks in the Github repository to get a sense of how everything works.", "repo": "https://github.com/Luchik28/BadGPT", "demo": "https://luchik28.github.io/BadGPT/"}]...
|
[{"post_id": 63888, "ts": "202 [{"post_id": 63888, "ts": "2026-09-07T22:03:29Z", "hours": 0.3219, "text": "Fixed up the readme a bit in preparation to ship. Specifically, I added info on what all the files do, but I named them poorly and then forgot what most of them do so it’s kind of confusing."}, {"post_id": 63871, "ts": "2026-09-07T21:24:10Z", "hours": 3.705, "text": "Trained the model a little more, exported it, wrote some UI to make it look more like a chatbot. It still sounds like gibberish. Sometimes I imagine that it’s output changes slightly depending on the context (for example, more numbers if I ask it a number related question, and a list if I ask it for a list, etc), but I’m probably just imagining it, it’s really just gibberish. Still kinda cool tho. You can check out the demo at https://luchik28.github.io/BadGPT/ ."}, {"post_id": 63606, "ts": "2026-09-07T15:13:11Z", "hours": 10.0569, "text": "Added an EOS ID, which is a special token that the model can output to indicate that it’s done. I built a script to insert this in between passages in the training data, so it can learn when it should shut up (otherwise it will yap forever, until it hits the max number of output tokens). This meant I had to retrain the entire model, but got it down to a loss of around 3.46. Obviously, it’s not very good. But I’m pretty sure the only way to improve is to scale up the model size and training time, something I don’t really have the capacity to do (this model trained for 15 hours on my laptop). I will probably continue by adding this model to my demo website, and build a chatGPT like UI, just for fun. After that, I think it might be time to ship!"}, {"post_id": 63248, "ts": "2026-09-06T23:29:21Z", "hours": 8.4769, "text": "Switched to using the fineweb edu dataset, instead of shakespear. This is the dataset I will use to train my actual model on. It’s a highly currated database of the internet, and is similar to what GPT2 was trained on (although the actual db they trained it on is closed source). I also reformated the sampling system so you can put in a query and get a response, as long as the query takes up less tokens than the context. Other than swapping out the training file, it’s the exact same. Next, I will probably implement a special ending token to my tokenizer, and also increase the scale of my model a little bit. I can’t increase it all the way to what Karpathy does in his tutorial (he uses cloud computing, so he paid to rent out like 8 64GB GPUs, or something like that), since I don’t want to spend money training it. However I think I can squeeze a little more out of my laptop."}, {"post_id": 49298, "ts": "2026-08-18T01:13:10Z", "hours": 9.3886, "text": "Started working on a more advanced tokenizer. The tokenizer is what splits the input text from words into numbers, and back again. Before, I was using a 10 dimensional embedding, where each letter is represented by a 10 long array (each value representing a dimension). But current models have much more advanced tokenizers, which often encompass entire words, or parts of words for longer words. This works using Byte Pair Encoding, which turns all of the letters pairs of letters into their utf encodings (usually 8), then iteratively merging the most common consecutive pairs into tokens to add to the vocabulary. You can see how tokenizers work at https://tiktokenizer.vercel.app/ , which is a cool website that lets you play around with stuff like that."}, {"post_id": 42029, "ts": "2026-08-06T16:03:32Z", "hours": 1.1833, "text": "Updated the demo website to include the wavenet model, and the new self-attention shakespear model. You can check it out here ."}, {"post_id": 41371, "ts": "2026-08-05T15:22:03Z", "hours": 1.2797, "text": "I finished training it! It finished with a val loss of around 1.76, it got down to 1.73 but ticked up at the end. The output is pretty good, but not substantially better than the wavenet model. However, it’s vaguely word-like, and took 20 hours to train so I’m not sure how much larger I can make the model before my laptop implodes. Next I will probably try to find a question-answer training dataset, so that I can start training it to answer questions. This step that I’ve been working on is the pre-training step, where I teach the model to basically spit out documents. Next, I have to have it spit out documents that happen to be question-answer documents."}, {"post_id": 41078, "ts": "2026-08-05T01:14:23Z", "hours": 9.7053, "text": "I made a bunch of tiny improvements. I didn’t change the architecture at all, but I did change the optimizer to AdamW. The optimizer is what controls how much each parameter is changed each epoch. Before, I was using a set learning rate, of about .1 for the first 80% of training then decreasing to .01 for the last 20%. Decreasing it at the end is important because as the loss settles into a local minimum, it might not be able to go to the lowest point because it keeps overshooting it since the lr is too high. Conversely, we can’t keep the lr too small the whole time because it might settle into a very tiny local minima that it might have been able to go over with a higher learning rate. It would also take forever. AdamW helps improve the optimizing step by changing the learning rate per parameter, helping the model train as fast as possible without overfitting. Overfitting isn’t really an issue I’m worrying about since my model is pretty small (around 56k params), so it’s not really large enough to learn the ins and outs of my dataset. Anyway I also changed the logging step, so it now logs validation dataset loss in addition to the training dataset loss. I split the dataset into train and validation so I can make sure it’s not overfitting. Currently the val loss is at 1.76, which is a lot better than where we were at before, which makes me hopeful. Training has around another 7,000 epochs to go, but Stardance is yelling at me I should write another devlog now so here you go, Stardance. I’m looking forward to sampling the model and seeing how much it’s improved!"}, {"post_id": 38899, "ts": "2026-08-01T14:11:19Z", "hours": 8.9297, "text": "I implemented self attention! I will try to explain here, but will do a terrible job: basically, what that is, is it lets the model decide what tokens in the input are more important than the others. The first thing I did was scrap the wavenet model, and switched to a simple bigram model. The second thing I implemented was bag of words, which edits the input tokens so every element is the average of that element and all that came before it. This lets all of the tokens “talk” to eachother. This is all fine and dandy but since all the things are averaged then you don’t know where things came from, and positional data is lost, so we lose a lot of resolution and data, so that sucks. So we have to encode positional data. So instead of just averaging all the elements that came before, we expand each averaged element into a list, which has all the elements in a row instead of averaging them into one number. So the first row could be [1, 0, 0] and the second [1, 2, 0] and the third [1, 2, 3], etc. We do this by masking it with the tril function, from numpy (very cool). But this is problematic, because all of the elements are given the exact same weight. A letter 34 characters back gets the same weight as the last character in the input (which is the letter immediately preceding the predicted letter, the output). To fix this, we add self attention! This is modeled after the groundbreaking paper Attention is All You Need, which started the whole AI hype thing. How it works is each token has a linear layer (that multiplies it by learned weights) called the key, and another called the query. The query is kind of like what that token is looking for, and the key is kind of like what that token has. And these can be multiplied with the keys and queries of all the other tokens, and that lets you know which token has the stuff that the most other tokens are looking for, and is thus more important and can be given more weight. That is a single head of attention, there are multiple heads that can specialize in different things. This, in theory, should increase performance. But it also drastically increases the amount of time it takes to train. The model only has ~56k parameters, which is less than half of the wavenet model, but takes a lot more time to do it’s thing. This is the output from the results of more than 13 hours of training. As you can see from the loss function, the loss was decreasing at a steady rate, so more training could probably improve it. Plus, this was at a highish learning rate the whole time (.1) so decreasing it would probably further improve it. But I can’t do anything on my computer while this is training or it runs out of RAM, and I have to use my computer now, so I will be moving on for now."}, {"post_id": 34926, "ts": "2026-07-26T01:22:29Z", "hours": 6.5472, "text": "I increased the block size from 8 characters to 64. This means that instead of the model taking in the previous 8 characters and outputting the next one, it takes in the previous 64 characters and outputs the next. This means that it should be able to keep track of longer words so it doesn’t get lost in them. However, it doesn’t seem to be improving the model too much, although that might be because I haven’t trained it as much as the others. I’ve done roughly 200,000 epochs, which took a long time, since this model is much larger (110,415 parameters vs 45,000), and has 6 hidden layers as apposed to 2, which means it is a lot slower. As you can see in the loss graph, it probably could make further gains, although it seems to be mostly good."}, {"post_id": 33555, "ts": "2026-07-23T16:18:09Z", "hours": 1.5631, "text": "Trained the wavenet architecture on a file with just shakespear in it. It’s got the structure down well, and sometimes can do words and wordlike outputs, but generally spouts straight gibberish. I will try to follow a lecture to build a better Tokenizer and Transformer next time. Right now each character is treated as a token, and embedded into 10 dimensions, it would be better if pairs of characters were treated as tokens and embedded. Increasing the context size could also help, it’s currently an input of the previous 8 characters and outputting 1. This is it’s output:"}, {"post_id": 32988, "ts": "2026-07-22T14:44:00Z", "hours": 8.5858, "text": "Implemented the wavenet architecture. Usually, during the flattening phase, the tensor goes from the shape (batch num, block size, embedding dimensions) to (batch num, block size * embedding dimensions). This squishes all of the embedded characters into one dimension. Wavenet does that more gradually, it slowly merges the different letters. So the first two letter embeddings get squished into one, then the next two, etc, and in the next layer then you have the first 4, then the next four, until by the final layer you have just one group of all the letters, which is the same as the original method, just a much more gradual approach. The first image is the training loss, the huge cliff is when the learning rate decreased. The second image is a visualization of the wavenet architecture from the paper. You can see that in each layer, nearby groups of input get merged together. In the original method, the graph would look like all of the inputs going to the 1st dot in the hidden layer, then continuing up. Next I will be actually building a GPT instead of this names project."}, {"post_id": 32125, "ts": "2026-07-21T02:19:34Z", "hours": 6.8089, "text": "I did a bunch of things to prep for implementing a wavenet architecture, which basically changes the model so instead of taking in all the characters of input at once and squishing them all into the first layer, it gradually puts them in at each separate layer. First, I put more stuff in classes! This didn’t really change the functionality, but instead of embedding the characters and flattening the model in separate chunks, I put them in their own classes so they can get put in the list of layers, and we can just run the input through each layer in the list, and compare it with the target at the end, instead of having half the layers in the list and half as separate chunks, which is a lot smoother. So the entire model is just: model = Sequential ([ Embedding ( vocab_size , n_embd ), FlattenConsecutive ( 2 ), Linear ( n_embd * 2 , n_hidden , bias = False ), BatchNorm1D ( n_hidden ), Tanh (), FlattenConsecutive ( 2 ), Linear ( n_hidden * 2 , n_hidden , bias = False ), BatchNorm1D ( n_hidden ), Tanh (), FlattenConsecutive ( 2 ), Linear ( n_hidden * 2 , n_hidden , bias = False ), BatchNorm1D ( n_hidden ), Tanh (), Linear ( n_hidden , vocab_size ), ]) Which I think is really cool. I also improved the loss graph, previously it looked like the screenshot on the right, because each iteration’s loss is graphed. Because our batch size is 32, which means in each iteration we look at just 32 inputs/output, a good deal of what the loss will be depends on how lucky we are with the input/output. Over a great number of iterations, it averages out into the correct value, though, so to fix the graph, we instead plot the average of every 1000 iterations, which lets us see a lot more detail that otherwise would be lost in the noise (the two loss graphs I added are not of the same model, but you get the idea). Anyway now I’m going to actually implement the wavenet architecture!"}, {"post_id": 29913, "ts": "2026-07-17T02:41:08Z", "hours": 3.23, "text": "I followed Karpathy’s lecture on backpropagation, where he implemented backpropagation manually. In the series, he’s using Pytorch, which does it for you, which is why he’s doing it manually. I’m not using Pytorch, so the only way to do it is to do it manually, so I didn’t get to add too much to the code, I just verified that I had implemented it correctly and learned a bunch. It is still pretty confusing though, and I couldn’t solve any of the exercises in the lecture without watching his explanations. Anyway here’s a name it generated that I think is pretty cool."}, {"post_id": 29276, "ts": "2026-07-16T02:51:51Z", "hours": 0.7719, "text": "Added a demo page! You can check it out here: https://luchik28.github.io/BadGPT/ . I saved the model weights, built a script that reconstructs the model using those weights, and hosted it using github pages."}, {"post_id": 29257, "ts": "2026-07-16T01:45:50Z", "hours": 3.1169, "text": "Put my model into the Layer class, so I can easily create lots of layers. The graph shows the activation distribution by layer. Each layer is pretty similar, as you can see. This devlog marks the end of the fourth lecture in Andrej Karpathy’s makemore series, out of 7, so we’re getting there! That’s just under 8 hours or lecture watched (so I spend roughly 5 minutes coding for every minute of lecture watched). Pretty interesting."}, {"post_id": 25900, "ts": "2026-07-10T12:09:18Z", "hours": 13.8508, "text": "I was playing around with how changing the number of epochs/other variable affected the output, and seeing how that differed to before I implemented Batch normalization, and so tried to put the epochs up a lot. I ended up training it for 20,000,000 epochs, which took like 8 hours, which is why this devlog has so much time logged. It didn’t really improve it much, you can see by the loss graph it didn’t go down very much at all, so I’ll need to change something in how the code works. It was still fun though."}, {"post_id": 24311, "ts": "2026-07-07T20:05:56Z", "hours": 2.4747, "text": "I worked on switching to a Jupyter notebook instead of just a python file, this made it easier since I didn’t have to constantly retrain the model, and also could print out stuff in line. I also added batch normalization, which helps change the range (really the standard deviation) of the values before going into the activation function (tanh) so that the values are more spread out. tanh squishes all values between -1 and 1, so if all of the numbers are greater than 1 or less than -1, then all of the values will essentially be squished to either -1 or 1, which makes the model lose a lot of the data. But if you divide all the numbers so that they are all closer to 0, then the activation function is a lot more spread out and the data is preserved. (I got the photo from google, I think it’s helpful when visualizing it)."}, {"post_id": 20360, "ts": "2026-07-01T22:48:01Z", "hours": 1.0503, "text": "I made a bunch of little improvements, including increasing the character encodings to 10 dimensions up from 2, increasing the epochs to 200,000, and also decreasing the learning rate from .1 to .01 for the laster 50,000 epochs. Although the loss is significantly lower than Andrej Karpathy’s makemore (which I modeled my model after), it’s names are worse. Karpathy got 2.17 ish on the testing dataset, while I got 1.776. However, Karpathy’s generated slightly abnormal but reasonably word-like names, like “jeron” and “ham” while mine where a little more random (“xxxhorlis” is one of them). I’m not sure how to improve from here, I don’t think increasing the epochs will do much, it already took around 10 minutes to train this model, I think we’ll get diminishing returns. I will, as always, continue on to the next video in Karpathy’s series, hoping that his tips will help improve it."}, {"post_id": 17855, "ts": "2026-06-28T19:57:08Z", "hours": 2.8889, "text": "I tuned the learning rate (The magnitude of how much it changes the weights, which is multiplied by the gradient of each weight to get the final change), added better printouts when training (Added a neat progress bar/tracking, output the loss, and a timer), and also using plotmatlib to plot the embeddings. The graph is how the model arranged each letter in space. What’s interesting is similar letters (like the ending character “.” and “e”, which both are commonly found near the end of the word) are in similar spots, so the model has sorted out some sort of meaning from their placements, which I think is pretty cool. The names are still quite nonsensicle, I think I might have to enlarge the model a little bit to improve performance, which means waiting longer for it to train :("}, {"post_id": 15817, "ts": "2026-06-25T18:20:16Z", "hours": 5.8631, "text": "I improved my model based off of Kerpathy’s makeMore part two tutorial and a 2003 paper by bengio et al (link is https://jmlr.org/papers/volume3/tmp/bengio03a.pdf ), it was really interesting. I increased the input size, so it takes in the previous 3 letters as an input instead of 1, and encoded each letter in a two dimensions instead of one hot encoding. I also had to start using numPy due to needing to do efficient matrix multiplication (numPy does it in C in a heavily optimized fashion, I considered trying to do this but decided it was out of the scope of the project). Doing it in just python would be way too slow. I also optimized it a little bit, having it select 32 examples randomly from the data set for each epoch, instead of just using the whole thing, which made it a lot faster while still training over the whole set. Hopefully this will make it produce more accurate results!"}, {"post_id": 12206, "ts": "2026-06-19T22:30:34Z", "hours": 1.1233, "text": "I finally got it to generate some names! They are sampled below. I watched the first half of Andrej Karpathy’s makemore video, and built a 2D array of the number of each instance of a letter following another instance. Then, when generating the name, it takes an array of the number of times in the training set each letter followed the previous letter in the name, multiplies that number by a random number 0 to 1, and chooses the highest number as the next letter in the name. This doesn’t work too well, as shown below, so I will spend some time improving, but it’s a start! Some names it generated are sampled below."}, {"post_id": 11053, "ts": "2026-06-18T02:41:06Z", "hours": 5.3719, "text": "Having completed the MLP I described in my last devlog, I set out to try to follow the next tutorial in the list I found. However, after I listened to the description of it, which is basically just a model that can take in a database of words and produce more words that sound similar, I foolishly believed I could try to build something similar without following the tutorial. I did take the database of names from the tutorial, since I will need those to train the model. I started by transforming the inputs (the previous letter in the word) into numbers, and then the output (a number) back into a letter. My first attempt just put in the ASCII code for the letter, and the rounded down output number. The first issue was I used the entire database to train, which took forever and quickly hit the maximum recursion depth, so I switched to using only the first 500 examples (using the entire database, combined with super high differences between the output and the expected output resulted in the initial loss being 1,934,198,245, compared to a loss of like 4 when just testing my MLP). After that, I got it to actually finish training without crashing, however, the loss didn’t go down, and it always outputted a null character. I realized I had been really stupid, as the tanh function at the end of every neuron in the MLP shrinks the result between -1 and 1, so the result could only ever be the ASCII codes 0 or 1, which are null. So instead, I changed it so instead of outputting the ASCII code directly, it outputs a 27 long array, each index representing a letter (and the last representing end of name), each value at an index represents the probability of that letter being chosen, so to decode the results it just has to find the highest probability, check that it’s not the last element, and add 97 to it’s index to get the ASCII codes (because the letter “a” is at 97, so if it’s index 0 and meant to be “a” it has to adjust). This led it to actually output letters, but it always outputted the same letter, as shown in the screenshot. The loss dropped rapidly and then plateaued at around 2000. I found some bugs (gradient accumilating over time instead of resetting each epoch) and made some changes (instead of inputting an ASCII code, it inputs in the same format as the output), but nothing had any effect. After thinking, I realized that the model is just picking the most common letter, and always outputting it. That’s why the loss can’t get any lower than 2000, because that’s the limit of how good this strategy can get. However, I have no idea how to fix this issue, and somehow teach the model the meaning behind the letters, so I will accept defeat and watch the tutorial, then implement what I learned."}, {"post_id": 9520, "ts": "2026-06-15T21:49:01Z", "hours": 4.8256, "text": "I implemented an MLP, I watched the entire Micrograd explanation by Andrej Karpathy, which was really interesting. I followed along, and played around with tuning my model (that does absolutely nothing useful) to predict stuff better. It has Value objects, which store the data, as well as gradients, and the operation/previous numbers used to create them, as well as all the operations. This can be used to calculate the gradient (or how much each Value object affected the last Value in the chain of operations), which is basically all you need for backpropogation (which is where it goes back and calculates how much each weight/bias affects the final output). It also has classes for each neuron, which is a collection of Values that act as the inputs, the weights (which are randomly generated at the start), and the bias for that nueron. These neurons make up layers, and the layers make up the MLP (multilayer perceptron). I created a couple arrays of inputs, and the desired output, which has the output for each input array. To train it, you have the model predict something, then calculate the loss (or the sum of how far away each prediction was squared), then do the backpropogation (go through each parameter, or each weight and bias), find out how much and in what direction it affected the loss function, and finally change each parameter slightly so it moves the loss in the right direction. As you can see in the screenshot, I got it down pretty low. This will be useful because when I am training my LLM, I will need to use a neural network like this, and get the loss down as low as possible so it predicts better words and produces better results. Karpathy’s video is at https://www.youtube.com/watch?v=VMj-3S1tku0&list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ&index=2 , it’s really quite amazing, I learned so much from it, and I haven’t even learned Calculus yet, which he states is a prerequisite in the description, I highly recommend if you’re interested. Next I will need to work on implementing transformers (which takes in the input (words), and derives meaning from them by encoding them into a vector)."}]...
|
Title: BadGPT by @28taidan | Stardance
Devlogs:
I Title: BadGPT by @28taidan | Stardance
Devlogs:
I implemented an MLP, I watched the entire Micrograd explanation by Andrej Karpathy, which was really interesting. I followed along, and played around with tuning my model (that does absolutely nothing useful) to predict stuff better. It has Value objects, which store the data, as well as gradients, and the operation/previous numbers used to create them, as well as all the operations. This can be used to calculate the gradient (or how much each Value object affected the last Value in the chain of operations), which is basically all you need for backpropogation (which is where it goes back and calculates how much each weight/bias affects the final output). It also has classes for each neuron, which is a collection of Values that act as the inputs, the weights (which are randomly generated at the start), and the bias for that nueron. These neurons make up layers, and the layers make up the MLP (multilayer perceptron). I created a couple arrays of inputs, and the desired output, which has the output for each input array. To train it, you have the model predict something, then calculate the loss (or the sum of how far away each prediction was squared), then do the backpropogation (go through each parameter, or each weight and bias), find out how much and in what direction it affected the loss function, and finally change each parameter slightly so it moves the loss in the right direction. As you can see in the screenshot, I got it down pretty low. This will be useful because when I am training my LLM, I will need to use a neural network like this, and get the loss down as low as possible so it predicts better words and produces better results. Karpathy’s video is at https://www.youtube.com/watch?v=VMj-3S1tku0&list=PLAqhIrjkxbuWI23v9cThsA9GvCAUhRvKZ&index=2 , it’s really quite amazing, I learned so much from it, and I haven’t even learned Calculus yet, which he states is a prerequisite in the description, I highly recommend if you’re interested. Next I will need to work on implementing transformers (which takes in the input (words), and derives meaning from them by encoding them into a vector).
Having completed the MLP I described in my last devlog, I set out to try to follow the next tutorial in the list I found. However, after I listened to the description of it, which is basically just a model that can take in a database of words and produce more words that sound similar, I foolishly believed I could try to build something similar without following the tutorial. I did take the database of names from the tutorial, since I will need those to train the model. I started by transforming the inputs (the previous letter in the word) into numbers, and then the output (a number) back into a letter. My first attempt just put in the ASCII code for the letter, and the rounded down output number. The first issue was I used the entire database to train, which took forever and quickly hit the maximum recursion depth, so I switched to using only the first 500 examples (using the entire database, combined with super high differences between the output and the expected output resulted in the initial loss being 1,934,198,245, compared to a loss of like 4 when just testing my MLP). After that, I got it to actually finish training without crashing, however, the loss didn’t go down, and it always outputted a null character. I realized I had been really stupid, as the tanh function at the end of every neuron in the MLP shrinks the result between -1 and 1, so the result could only ever be the ASCII codes 0 or 1, which are null. So instead, I changed it so instead of outputting the ASCII code directly, it outputs a 27 long array, each index representing a letter (and the last representing end of name), each value at an index represents the probability of that letter being chosen, so to decode the results it just has to find the highest probability, check that it’s not the last element, and add 97 to it’s index to get the ASCII codes (because the letter “a” is at 97, so if it’s index 0 and meant to be “a” it has to adjust). This led it to actually output letters, but it always outputted the same letter, as shown in the screenshot. The loss dropped rapidly and then plateaued at around 2000. I found some bugs (gradient accumilating over time instead of resetting each epoch) and made some changes (instead of inputting an ASCII code, it inputs in the same format as the output), but nothing had any effect. After thinking, I realized that the model is just picking the most common letter, and always outputting it. That’s why the loss can’t get any lower than 2000, because that’s the limit of how good this strategy can get. However, I have no idea how to fix this issue, and somehow teach the model the meaning behind the letters, so I will accept defeat and watch the tutorial, then implement what I learned.
I finally got it to generate some names! They are sampled below. I watched the first half of Andrej Karpathy’s makemore video, and built a 2D array of the number of each instance of a letter following another instance. Then, when generating the name, it takes an array of the number of times in the training set each letter followed the previous letter in the name, multiplies that number by a random number 0 to 1, and chooses the highest number as the next letter in the name. This doesn’t work too well, as shown below, so I will spend some time improving, but it’s a start! Some names it generated are sampled below.
I improved my model based off of Kerpathy’s makeMore part two tutorial and a 2003 paper by bengio et al (link is https://jmlr.org/papers/volume3/tmp/bengio03a.pdf ), it was really interesting. I increased the input size, so it takes in the previous 3 letters as an input instead of 1, and encoded each letter in a two dimensions instead of one hot encoding. I also had to start using numPy due to needing to do efficient matrix multiplication (numPy does it in C in a heavily optimized fashion, I considered trying to do this but decided it was out of the scope of the project). Doing it in just python would be way too slow. I also optimized it a little bit, having it select 32 examples randomly from the data set for each epoch, instead of just using the whole thing, which made it a lot faster while still training over the whole set. Hopefully this will make it produce more accurate results!
I tuned the learning rate (The magnitude of how much it changes the weights, which is multiplied by the gradient of each weight to get the final change), added better printouts when training (Added a neat progress bar/tracking, output the loss, and a timer), and also using plotmatlib to plot the embeddings. The graph is how the model arranged each letter in space. What’s interesting is similar letters (like the ending character “.” and “e”, which both are commonly found near the end of the word) are in similar spots, so the model has sorted out some sort of meaning from their placements, which I think is pretty cool. The names are still quite nonsensicle, I think I might have to enlarge the model a little bit to improve performance, which means waiting longer for it to train :(
I made a bunch of little improvements, including increasing the character encodings to 10 dimensions up from 2, increasing the epochs to 200,000, and also decreasing the learning rate from .1 to .01 for the laster 50,000 epochs. Although the loss is significantly lower than Andrej Karpathy’s makemore (which I modeled my model after), it’s names are worse. Karpathy got 2.17 ish on the testing dataset, while I got 1.776. However, Karpathy’s generated slightly abnormal but reasonably word-like names, like “jeron” and “ham” while mine where a little more random (“xxxhorlis” is one of them). I’m not sure how to improve from here, I don’t think increasing the epochs will do much, it already took around 10 minutes to train this model, I think we’ll get diminishing returns. I will, as always, continue on to the next video in Karpathy’s series, hoping that his tips will help improve it.
I worked on switching to a Jupyter notebook instead of just a python file, this made it easier since I didn’t have to constantly retrain the model, and also could print out stuff in line. I also added batch normalization, which helps change the range (really the standard deviation) of the values before going into the activation function (tanh) so that the values are more spread out. tanh squishes all values between -1 and 1, so if all of the numbers are greater than 1 or less than -1, then all of the values will essentially be squished to either -1 or 1, which makes the model lose a lot of the data. But if you divide all the numbers so that they are all closer to 0, then the activation function is a lot more spread out and the data is preserved. (I got the photo from google, I think it’s helpful when visualizing it).
I was playing around with how changing the number of epochs/other variable affected the output, and seeing how that differed to before I implemented Batch normalization, and so tried to put the epochs up a lot. I ended up training it for 20,000,000 epochs, which took like 8 hours, which is why this devlog has so much time logged. It didn’t really improve it much, you can see by the loss graph it didn’t go down very much at all, so I’ll need to change something in how the code works. It was still fun though.
Put my model into the Layer class, so I can easily create lots of layers. The graph shows the activation distribution by layer. Each layer is pretty similar, as you can see. This devlog marks the end of the fourth lecture in Andrej Karpathy’s makemore series, out of 7, so we’re getting there! That’s just under 8 hours or lecture watched (so I spend roughly 5 minutes coding for every minute of lecture watched). Pretty interesting.
Added a demo page! You can check it out here: https://luchik28.github.io/BadGPT/ . I saved the model weights, built a script that reconstructs the model using those weights, and hosted it using github pages.
I followed Karpathy’s lecture on backpropagation, where he implemented backpropagation manually. In the series, he’s using Pytorch, which does it for you, which is why he’s doing it manually. I’m not using Pytorch, so the only way to do it is to do it manually, so I didn’t get to add too much to the code, I just verified that I had implemented it correctly and learned a bunch. It is still pretty confusing though, and I couldn’t solve any of the exercises in the lecture without watching his explanations. Anyway here’s a name it generated that I think is pretty cool.
I did a bunch of things to prep for implementing a wavenet architecture, which basically changes the model so instead of taking in all the characters of input at once and squishing them all into the first layer, it gradually puts them in at each separate layer. First, I put more stuff in classes! This didn’t really change the functionality, but instead of embedding the characters and flattening the model in separate chunks, I put them in their own classes so they can get put in the list of layers, and we can just run the input through each layer in the list, and compare it with the target at the end, instead of having half the layers in the list and half as separate chunks, which is a lot smoother. So the entire model is just: model = Sequential ([ Embedding ( vocab_size , n_embd ), FlattenConsecutive ( 2 ), Linear ( n_embd * 2 , n_hidden , bias = False ), BatchNorm1D ( n_hidden ), Tanh (), FlattenConsecutive ( 2 ), Linear ( n_hidden * 2 , n_hidden , bias = False ), BatchNorm1D ( n_hidden ), Tanh (), FlattenConsecutive ( 2 ), Linear ( n_hidden * 2 , n_hidden , bias = False ), BatchNorm1D ( n_hidden ), Tanh (), Linear ( n_hidden , vocab_size ), ]) Which I think is really cool. I also improved the loss graph, previously it looked like the screenshot on the right, because each iteration’s loss is graphed. Because our batch size is 32, which means in each iteration we look at just 32 inputs/output, a good deal of what the loss will be depends on how lucky we are with the input/output. Over a great number of iterations, it averages out into the correct value, though, so to fix the graph, we instead plot the average of every 1000 iterations, which lets us see a lot more detail that otherwise would be lost in the noise (the two loss graphs I added are not of the same model, but you get the idea). Anyway now I’m going to actually implement the wavenet architecture!
Implemented the wavenet architecture. Usually, during the flattening phase, the tensor goes from the shape (batch num, block size, embedding dimensions) to (batch num, block size * embedding dimensions). This squishes all of the embedded characters into one dimension. Wavenet does that more gradually, it slowly merges the different letters. So the first two letter embeddings get squished into one, then the next two, etc, and in the next layer then you have the first 4, then the next four, until by the final layer you have just one group of all the letters, which is the same as the original method, just a much more gradual approach. The first image is the training loss, the huge cliff is when the learning rate decreased. The second image is a visualization of the wavenet architecture from the paper. You can see that in each layer, nearby groups of input get merged together. In the original method, the graph would look like all of the inputs going to the 1st dot in the hidden layer, then continuing up. Next I will be actually building a GPT instead of this names project.
Trained the wavenet architecture on a file with just shakespear in it. It’s got the structure down well, and sometimes can do words and wordlike outputs, but generally spouts straight gibberish. I will try to follow a lecture to build a better Tokenizer and Transformer next time. Right now each character is treated as a token, and embedded into 10 dimensions, it would be better if pairs of characters were treated as tokens and embedded. Increasing the context size could also help, it’s currently an input of the previous 8 characters and outputting 1. This is it’s output:
I increased the block size from 8 characters to 64. This means that instead of the model taking in the previous 8 characters and outputting the next one, it takes in the previous 64 characters and outputs the next. This means that it should be able to keep track of longer words so it doesn’t get lost in them. However, it doesn’t seem to be improving the model too much, although that might be because I haven’t trained it as much as the others. I’ve done roughly 200,000 epochs, which took a long time, since this model is much larger (110,415 parameters vs 45,000), and has 6 hidden layers as apposed to 2, which means it is a lot slower. As you can see in the loss graph, it probably could make further gains, although it seems to be mostly good.
I implemented self attention! I will try to explain here, but will do a terrible job: basically, what that is, is it lets the model decide what tokens in the input are more important than the others. The first thing I did was scrap the wavenet model, and switched to a simple bigram model. The second thing I implemented was bag of words, which edits the input tokens so every element is the average of that element and all that came before it. This lets all of the tokens “talk” to eachother. This is all fine and dandy but since all the things are averaged then you don’t know where things came from, and positional data is lost, so we lose a lot of resolution and data, so that sucks. So we have to encode positional data. So instead of just averaging all the elements that came before, we expand each averaged element into a list, which has all the elements in a row instead of averaging them into one number. So the first row could be [1, 0, 0] and the second [1, 2, 0] and the third [1, 2, 3], etc. We do this by masking it with the tril function, from numpy (very cool). But this is problematic, because all of the elements are given the exact same weight. A letter 34 characters back gets the same weight as the last character in the input (which is the letter immediately preceding the predicted letter, the output). To fix this, we add self attention! This is modeled after the groundbreaking paper Attention is All You Need, which started the whole AI hype thing. How it works is each token has a linear layer (that multiplies it by learned weights) called the key, and another called the query. The query is kind of like what that token is looking for, and the key is kind of like what that token has. And these can be multiplied with the keys and queries of all the other tokens, and that lets you know which token has the stuff that the most other tokens are looking for, and is thus more important and can be given more weight. That is a single head of attention, there are multiple heads that can specialize in different things. This, in theory, should increase performance. But it also drastically increases the amount of time it takes to train. The model only has ~56k parameters, which is less than half of the wavenet model, but takes a lot more time to do it’s thing. This is the output from the results of more than 13 hours of training. As you can see from the loss function, the loss was decreasing at a steady rate, so more training could probably improve it. Plus, this was at a highish learning rate the whole time (.1) so decreasing it would probably further improve it. But I can’t do anything on my computer while this is training or it runs out of RAM, and I have to use my computer now, so I will be moving on for now.
I made a bunch of tiny improvements. I didn’t change the architecture at all, but I did change the optimizer to AdamW. The optimizer is what controls how much each parameter is changed each epoch. Before, I was using a set learning rate, of about .1 for the first 80% of training then decreasing to .01 for the last 20%. Decreasing it at the end is important because as the loss settles into a local minimum, it might not be able to go to the lowest point because it keeps overshooting it since the lr is too high. Conversely, we can’t keep the lr too small the whole time because it might settle into a very tiny local minima that it might have been able to go over with a higher learning rate. It would also take forever. AdamW helps improve the optimizing step by changing the learning rate per parameter, helping the model train as fast as possible without overfitting. Overfitting isn’t really an issue I’m worrying about since my model is pretty small (around 56k params), so it’s not really large enough to learn the ins and outs of my dataset. Anyway I also changed the logging step, so it now logs validation dataset loss in addition to the training dataset loss. I split the dataset into train and validation so I can make sure it’s not overfitting. Currently the val loss is at 1.76, which is a lot better than where we were at before, which makes me hopeful. Training has around another 7,000 epochs to go, but Stardance is yelling at me I should write another devlog now so here you go, Stardance. I’m looking forward to sampling the model and seeing how much it’s improved!
I finished training it! It finished with a val loss of around 1.76, it got down to 1.73 but ticked up at the end. The output is pretty good, but not substantially better than the wavenet model. However, it’s vaguely word-like, and took 20 hours to train so I’m not sure how much larger I can make the model before my laptop implodes. Next I will probably try to find a question-answer training dataset, so that I can start training it to answer questions. This step that I’ve been working on is the pre-training step, where I teach the model to basically spit out documents. Next, I have to have it spit out documents that happen to be question-answer documents.
Updated the demo website to include the wavenet model, and the new self-attention shakespear model. You can check it out here .
Started working on a more advanced tokenizer. The tokenizer is what splits the input text from words into numbers, and back again. Before, I was using a 10 dimensional embedding, where each letter is represented by a 10 long array (each value representing a dimension). But current models have much more advanced tokenizers, which often encompass entire words, or parts of words for longer words. This works using Byte Pair Encoding, which turns all of the letters pairs of letters into their utf encodings (usually 8), then iteratively merging the most common consecutive pairs into tokens to add to the vocabulary. You can see how tokenizers work at https://tiktokenizer.vercel.app/ , which is a cool website that lets you play around with stuff like that.
Switched to using the fineweb edu dataset, instead of shakespear. This is the dataset I will use to train my actual model on. It’s a highly currated database of the internet, and is similar to what GPT2 was trained on (although the actual db they trained it on is closed source). I also reformated the sampling system so you can put in a query and get a response, as long as the query takes up less tokens than the context. Other than swapping out the training file, it’s the exact same. Next, I will probably implement a special ending token to my tokenizer, and also increase the scale of my model a little bit. I can’t increase it all the way to what Karpathy does in his tutorial (he uses cloud computing, so he paid to rent out like 8 64GB GPUs, or something like that), since I don’t want to spend money training it. However I think I can squeeze a little more out of my laptop.
Added an EOS ID, which is a special token that the model can output to indicate that it’s done. I built a script to insert this in between passages in the training data, so it can learn when it should shut up (otherwise it will yap forever, until it hits the max number of output tokens). This meant I had to retrain the entire model, but got it down to a loss of around 3.46. Obviously, it’s not very good. But I’m pretty sure the only way to improve is to scale up the model size and training time, something I don’t really have the capacity to do (this model trained for 15 hours on my laptop). I will probably continue by adding this model to my demo website, and build a chatGPT like UI, just for fun. After that, I think it might be time to ship!
Trained the model a little more, exported it, wrote some UI to make it look more like a chatbot. It still sounds like gibberish. Sometimes I imagine that it’s output changes slightly depending on the context (for example, more numbers if I ask it a number related question, and a list if I ask it for a list, etc), but I’m probably just imagining it, it’s really just gibberish. Still kinda cool tho. You can check out the demo at https://luchik28.github.io/BadGPT/ .
Fixed up the readme a bit in preparation to ship. Specifically, I added info on what all the files do, but I named them poorly and then forgot what most of them do so it’s kind of confusing.
Ships:
badGPT is a conglomeration of sequential ML projects I did this summer, culminating in a chatbot like ChatGPT or Claude built from scratch using just python and numpy. I started off by building a name generation model, then a Shakespeare writing model, then finally a chatGPT-esque model. The model produces, for the most part, complete gibberish, so this was less a practical project and more an exercise in understanding how everything works. It performs so poorly because it’s so small. Models need a lot of parameters to be able to capture all the nuances required to produce coherent text, which makes the models much slower to train. The final model I made includes around 120,000 parameters, 4 transformer blocks of 4 attention heads each, and 64 tokens of context. It’s based largely on GPT-2, which for reference had about 1.5 billion parameters. Current frontier models, like Anthropic’s fable, have trillions of parameters and can have millions of input tokens, so it makes sense that my model is too small to make much sense at all. Even at its small size, it took my laptop more than 20 hours to train, so scaling up with my current hardware is not feasible. Many people like using libraries like pytorch and tensorflow, which include classes that handle backpropagation (the system that’s at the heart of letting the models learn), but I wanted to start from scratch so I wrote my own. If you wish to try any of my models out, you can visit the demo website (click try project), and click through the tabs to see each of the models. It all runs in your browser. You can also look through the Jupyter notebooks in the Github repository to get a sense of how everything works....
|
1792875233.3266373
|
1793739233.3266373
|
|
16179
|
Robotics RoboLens by @mira_j_maroni | Stardance
|
mira_j_maroni
|
2
|
140.27
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T22:22:22Z", "hours": 124.0, "multiplier": 16.83, "payout": 0, "blessing": "neutral", "text": "What did I make? Since Ship #1, RoboLens grew from one AI scanner into four connected tools. I added a rules checker that reads the actual FRC game manual (2024–2026) alongside your robot photo so it’s grounded in real rules instead of guessing. I built out a full shared battery tracker. I added a guided camera that walks you through lighting/tilt/framing and auto-captures once the angle looks right. And the biggest addition: a Team Stats & Match Center with four tabs (My Team, Stats, Events, Sim) pulling live data from The Blue Alliance and the FRC Events API, including a season-wide “World Rating,” a matchup simulator with win probabilities, and bookmarking teams to get real push notifications before their matches. I also spent a lot of time on stuff that doesn’t show up as a “feature” but makes the app actually usable: a queue + exponential backoff + retry system so the shared free-tier Gemini key doesn’t randomly fail scans under load, a report button that feeds recurring AI mistakes back into future scans, offline detection so scans fail fast instead of hanging, and a new instant-loading splash screen. What was challenging for me? The AI usage limits were the most persistent problem. Everyone shares one free-tier Gemini key, so scans would fail with no clear pattern whenever enough people hit it at once. I fixed it in stages: first a queue limiting in-flight requests, then automatic retries with backoff (and respecting the retry-after header when Gemini gave one), then finally surfacing that retry status to the user (“High demand. Retrying (2/3)…”) instead of just showing a dead spinner. The guided camera and push notifications both turned into whole rabbit holes of browser-specific pain (iOS Safari blocking camera/notification permissions unless triggered by a direct tap, no live frame streaming on web so I had to build a custom JS-interop layer from scratch, and push not working on iOS at all unless the site’s added to the home screen firs)t. My favorite bug story: the Match Center’s Events tab would spin forever with zero errors. I burned time adding timeouts and retries that did nothing before realizing the real issue. The spinner wasn’t stuck waiting on the network, it was stuck because nothing ever tried. What am I the most proud of? Going from a single-purpose AI scanner to four genuinely useful, connected tools without the codebase turning into spaghetti. I’m also proud that scans now degrade gracefully under load instead of just failing, and that notifications work reliably even though I had zero experience with service workers or VAPID keys before this. And honestly, just sticking with it. 21 devlogs and three months of real iteration based on actual user feedback instead of giving up. What should people know so they can test your project? Live app: https://mirage54321.github.io/RoboLens/ You can log in as a guest for team 4388 to browse batteries without needing an account. Push notifications currently work reliably on desktop browsers and Android (iOS Safari requires the site to be added to your home screen as a bookmark). You can test this by logging into -4388 (Yes, a negative. I needed a number that wouldn’t have a real team). The AI scan/rules tools need a robot photo to test against; if you don’t have one handy, any well-lit photo of mechanical/electrical components will still show you how the flow works.", "repo": "https://github.com/mirage54321/RoboLens", "demo": "https://mirage54321.github.io/RoboLens/"}, {"ship_num": 2, "ts": "2026-06-22T18:39:59Z", "hours": 5.0, "multiplier": 5.73, "payout": 26, "blessing": "neutral", "text": "I made an app for specifically robotics teams (although this could be used for other things too). This is still a work in progress because there is so much more I want to add. I did this project so that I could make something with an AI model and I’m really proud of myself because Flutter was really hard to work with!", "repo": "https://github.com/mirage54321/RoboLens", "demo": "https://mirage54321.github.io/RoboLens/"}]...
|
[{"post_id": 65393, "ts": "202 [{"post_id": 65393, "ts": "2026-09-10T14:37:50Z", "hours": 6.5575, "text": "Devlog #23 -> Fixed the camera disconnect crash from the feedback. Turns out the camera plugin doesn’t actually throw an error when the hardware gets yanked mid-session, it just quietly flips an internal hasError flag and keeps going. Which is why the app was crashing somewhere random instead of failing cleanly. Nothing in my code was listening for that flag, so it just kept trying to read frames and capture photos off a dead controller. Fixed it by adding a listener that actually watches for that error state, cleans everything up, and drops the user onto a proper “Camera disconnected, try again” screen instead of freezing or throwing. Also fixed the retry logic after a failed capture so it doesn’t try to restart a stream on a controller that’s already dead. Next up: the cursor. Someone pointed that out, because every button on web just shows the default arrow. Live app: https://mirage54321.github.io/RoboLens/a"}, {"post_id": 64602, "ts": "2026-09-09T03:43:12Z", "hours": 4.7133, "text": "Devlog #22 -> I was looking at the comments people left me from my ship and the first thing I noticed that I should work on is the load-in page. It is definitely kind of plain. To be honest, I used Claude to help a lot with this one. Making the spinning circle was pretty easy but I had some complex ideas I wanted to put to work and I just didn’t know how to do it. It has a huge radar that has the colors pop up and says “scounting __ teams”. Overall, I am so happy about this new design! Let me know what you guys think! I also added a folder for the photos so it looks more organized! The next thing I plan to work on “loop crashes if the camera disconnects” comment. Live app: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63881, "ts": "2026-09-07T21:41:15Z", "hours": 2.065, "text": "Updates!!! Basically, I’ve been checking to see how many users and views I have. I have google analytics on my project to keep an eye on it. Right now I have 52 users and 163 views. Which honestly, I am pretty dang happy about. (1) I haven’t really been advertising (2) I literally thought it was gonna be like 20 views Woop woop! Okay, now on these past few days I have been working on getting as many hours as possible. I don’t have a personal computer so I am really aiming for literally any of the laptops. Now, programatically I have been working on removing the 3 burst messages for iPhone (it wouldn’t compact itself on the Apple homescreen). FYI: 90% of the time for this was spent removing the 3 burst messages for iPhone and writing Ship #2… so you better be ready for Ship 2! View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63811, "ts": "2026-09-07T19:35:43Z", "hours": 0.7911, "text": "Notifications are working again! Basically, the rebuilding of Render helped fix the issue which is kind of ragebait. I’m getting a little nervous though because I wonder what happens if someone doesn’t reopen the bookmark (because that is how it resets). Would they still get the messages? Will it update automatically? Overall, it works great. I just worry there may be an error that arises (that is a risk with any project honestly). View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63771, "ts": "2026-09-07T18:47:23Z", "hours": 5.1583, "text": "Devlog #19 -> I know I just committed a bunch the last few days. I guess I realized there is only a few days left and I found how to be way more efficent in getting hours. If I just keep this open and something else on another computer and work with them kinda being different windows then I get a lot more time because the switching of windows in the same computer made me keep forgetting to come back and work on the project (and I’m guessing was cutting the time too). Anywho! The most recent changes I have made is removing the ? mark button. I think I was going for a like “about me” thing but I think it was a little redundant and kind of unneccessary to say the least. I added a report button instead (it’s just in the home page). I got this idea from lovable which was something I worked with during my internship. I highkey have been working so much on this project (you can see by all my hours) that I didn’t want to connect it to the backend. It is just a popout that takes you to an gmail link and you can click send. Maybe if I run out of ideas I can add it as a backend. Now, if I am going to be so honest. I have worked a lot on this project and I want to ship but I also want to just crank out some more hours. I’m extremely proud of this project and I need to get it out to the world so that I can get some users! My issues to work on are: Low MongoDB storage for free account Professionalizing (now just looking back over and seeing if there is anything I wanna fix before putting on chief delphi) View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 63405, "ts": "2026-09-07T07:05:48Z", "hours": 8.2653, "text": "Devlog #18 -> Okay, super short devlog just to explain what I am doing. Basically all my hours are spent on fixing the notifications. It is super annoying right now because I am trying to finalize my project and the notifications randomly stop working. I tried clearing out mongoDB and checking on my cron-job and those seem to be working just fine. I’m not sure what to do. I pushed the hours up (for the practice day so I can check it earlier) and redeployed with Render. I shall see tomorrow if it works. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 62347, "ts": "2026-09-05T17:45:39Z", "hours": 8.4539, "text": "Devlog #17 -> Part 3, wrapping this one up Last piece was making the retrying actually visible instead of just quietly happening in the background. Before, if a scan was retrying you’d just stare at a spinner with no idea what was going on. Now the loading screen updates to say something like “High demand. Retrying (2/3)…” so people know the app hasn’t frozen, it’s just waiting its turn. Between the queueing, the backoff retries on both ends, and this messaging, this should turn a lot of what used to be “scan failed, try again” moments into just a few extra seconds of waiting instead. Doesn’t make the free tier limit go away entirely, but it’s a big improvement over what I had. Current problems / what’s next: Low MongoDB storage for free account Professionalizing (before putting on Chief Delphi)"}, {"post_id": 61646, "ts": "2026-09-04T17:29:48Z", "hours": 9.4403, "text": "Devlog #16 -> Part 2, continuing from #15 Got retries working on top of the queue from last time. If Gemini comes back with a 429 (rate limited) or 503 (overloaded) instead of an actual answer, the backend now waits and tries again automatically, using exponential backoff (2s, then 4s, then 8s) instead of hammering it again right away, up to a few attempts before it actually gives up and reports failure. It also checks for a retry-after header first and uses that instead of the backoff timer if Gemini actually tells us how long to wait. Then I mirrored the same idea on the Flutter side, so if the backend’s retries still aren’t enough, the app itself will retry the whole request a couple more times before showing the user an error."}, {"post_id": 60875, "ts": "2026-09-03T14:59:25Z", "hours": 12.3994, "text": "Devlog #15 -> Part 1 (still working on this one!) Finally started actually tackling the AI usage limit problem from devlog #2. Since everyone using the app shares the same free-tier Gemini key, scans would just randomly fail with no real pattern whenever enough people were hitting it at once. Started on the backend side first: instead of letting every incoming scan hit Gemini immediately, I added a little queue that only lets 2 requests be in-flight to Gemini at a time, and everything else waits its turn. Next step is getting it to actually retry instead of just failing after the wait, but that’s for the next devlog."}, {"post_id": 60344, "ts": "2026-09-02T16:57:27Z", "hours": 7.4197, "text": "Devlog #14 -> Part 5 of 5 Finally! This final devlog is about the small tweaks I made in the app. I made it have a new photo Small one, just swapped out one of the app’s images for something more current since the old one was from way back in devlog #1 and didn’t really represent what the app looks like anymore. Nothing technical here, just housekeeping. It kinda works offline I say “kinda” because this isn’t a real offline mode where you can browse cached data with no internet, it’s more like the app now knows when it’s offline and fails fast instead of just hanging. Basically, I added a ConnectivityCheck helper that on web reads navigator.onLine (a free, instant, synchronous browser check for whether the device has a network interface up) so if you’re in airplane mode or your wifi is off, the AI scan screens can immediately say “can’t use this when offline” instead of sitting there for a full request timeout before failing. On native platforms there’s no real equivalent without pulling in a whole new plugin like connectivity_plus, so I just made the stub always report “online” there — an actually-offline phone still gets caught by the AI request’s own timeout/retry handling, just without the instant fail I get on web. One thing worth noting: this only checks if the device thinks it has a network connection, not whether that network actually has working internet behind it. So a wifi network that’s connected but dead will still say “online” here. That case still gets caught eventually, just the slower way through the request timeout instead of instantly. Good enough for now though, this was mostly about killing the most common case of someone trying to scan with their phone in airplane mode and just watching the app hang. I changed the load in screen Went back and reworked the loading screen from devlog #5. It’s now a plain CSS screen sitting directly in index.html instead of living inside the Flutter app itself, which means it can actually paint the instant the page loads, before Flutter has even finished downloading and booting up. That was the whole point: the old version technically only appeared once Flutter itself was far enough along to render it, so there was still a blank/white flash before it. Now there’s a little animated wordmark and spinner (the spinner’s colored arc cycles through the same colors as the logo letters) that fades out and removes itself once Flutter fires its first real frame. While I was in there I also fixed something unrelated but annoying: Flutter’s web service worker by default waits to activate a new version until every open instance of the app is fully closed, which for something people add to their home screen basically never happens naturally. So people could keep opening an old cached version of the app for a long time after I’d pushed updates. Added a bit of JS to force any newly installed service worker to skip that wait and take over immediately (reloading the page once it does), so the next time someone opens the app after I ship something, they actually get it. And that’s it, I’m all caught up! Five devlogs in one sitting was a lot, but future updates should go back to being posted as I actually build them instead of in one giant backlog dump. Current problems / what’s next: Low MongoDB storage for free account Releasing the app (onto chief delphi to get feedback)!! Making it ready to release (working on the ? and report button) Future ideas: team tracker, public chat for teams, judging/interview prep tool, callout tool, round robin generator View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 59335, "ts": "2026-09-01T02:11:53Z", "hours": 9.7772, "text": "Devlog #13 -> Part 4 of 5 Continuing from #12: more on the match center, mostly the stuff that actually broke on me. Biggest bug of the bunch: on the Events tab, tapping into an event was supposed to show “scheduled to attend” info and the competing teams list, but both of those sections would just spin forever, no error, nothing. I assumed it was a network timing issue at first and went down a whole rabbit hole adding timeouts and retry logic that did absolutely nothing. Turns out the actual problem was way dumber: when I pushed the EventDetailScreen with Navigator.push, that screen gets placed in the Overlay as a sibling of the tab tree, not a child of it, meaning it’s NOT under my MatchScope anymore. So the second that screen tried to call MatchScope.of(context), it threw an assertion error immediately, before initState even got the chance to call setState and load anything. The spinner wasn’t stuck because of a slow network, it was stuck because the load call never even ran. Fixed it by just re-wrapping the pushed route in its own MatchScope using the same controller instance. Felt very silly once I found it, but also weirdly satisfying to finally understand. Next was the matchup simulator and win probabilities. On the schedule screen I show a rough “Red 45% / Blue 55%” prediction for each match. My first instinct was to use each event’s own OPR for this, but that falls apart for upcoming events since OPR doesn’t exist until a team has actually played a match there. So instead I based predictions on the season-wide World Rating from the Stats tab (average points across every event a team’s played all season), which actually gives predictions even for a event that hasn’t started yet. Also went back and hooked the push notification bell (from devlog #11) directly into the match center’s top bar now that there’s finally a “your team” + “your event” to actually attach a subscription to. There’s a little pulsing glow animation on the bell the first time you land on a screen where you could enable alerts, just so people notice it’s there instead of it blending into the top bar. Took way too many attempts to get the glow animation timing feeling smooth and not epileptic-seizure-inducing, but I think I landed on something decent. Genuinely didn’t expect the 4th app to take this many devlogs but here we are. One more to wrap up some small stuff and then I think I’m caught up! View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 58655, "ts": "2026-08-31T04:34:12Z", "hours": 9.4486, "text": "Devlog #12 -> Part 3 of 5 Okay, actual 4th app time: Team Stats & Match Center (internally I’ve just been calling it “match” in the code, so if you dig around the file names that’s why). I started by mocking everything out before touching any real API, just so I could get the UI feeling right first. Made an intro screen (basically pitching the three features: match alerts, team stats, matchup simulator) and a fake mockTeams list with made-up EPA numbers just so I had something to look at while building. Once the layout felt right, I started swapping the fake data for real stuff from The Blue Alliance’s API, proxied through my backend the same way I already had set up for the FRC Events API (so I’m not spamming TBA directly from a bunch of client apps and to keep my API key private). Architecture-wise, I did something different from my other three apps: instead of passing state down through a million constructor params, I made a MatchDataController (basically one class holding all the team/event/match data + loading state) and wrapped the whole feature in a MatchScope, which is just an InheritedNotifier. So anywhere in the match center I can just call MatchScope.of(context) and get the controller without threading it through every single widget. Probably overkill for how big this feature ended up being, but once I had 4 tabs and a handful of sub-screens all needing the same data, I was really glad I did it this way instead of my usual pass-everything-into-the-constructor approach. Speaking of tabs, I split it into 4: My Team -> your team’s own info/next match Stats -> a season-wide “World Rating” I calculate from aggregating TBA’s OPR data across events (this was its own whole thing, might do a separate devlog on it someday) Events -> browse every FRC event, filter by time or location, see who’s live right now Sim -> the matchup simulator I keep promising Getting match data to actually parse right from TBA’s JSON took a minute (comp levels like qm/qf/sf/f needed their own label logic, predicted_time vs actual_time needed fallback logic since actual_time barely ever gets posted until after the match is already over, that kind of thing) but nothing too crazy, just tedious model-writing. Devlog #13 is basically a straight continuation of this one, mostly bug stories and the simulator, so be ready for that. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 55760, "ts": "2026-08-27T19:05:53Z", "hours": 4.8611, "text": "Devlog #11 -> Part 2 of 5 Now for the second devlog, I am going to talk about how I got notifications to work. This is the one that ate my week. So the goal: when a match is coming up for a team you bookmarked, get a push notification even if the app/tab isn’t open. That last part is the whole problem, because it means I can’t just pop a normal in-app alert, I actually need real browser push notifications, which meant learning a whole new stack: service workers, VAPID keys, and the Push API. Here’s roughly how it works now ->Subscribe -> user picks a team number + event key, the app asks the browser for notification permission, and if granted it registers a push subscription through the service worker using my VAPID public key. Send to backend -> that subscription (plus team number/event key) gets sent to my Express backend and stored in MongoDB. Actually sending them -> the backend uses the web-push npm package to send the push whenever it detects a match coming up for that team. Getting the Flutter side to talk to any of this was its own adventure, since none of this exists as a nice Dart package, so I had to write a JS interop layer (basically a matchPush object in plain JS that Dart calls into) and wire it up through the same conditional-export trick I used for the guided camera: one file for web, one stub file that just says “unsupported” for native, so the app doesn’t explode on phone builds while I haven’t built native push yet. Problems I ran into (there were many) ->iOS Safari straight up does not support web push at all unless the site has been added to the home screen first. So right now notifications basically only work reliably on desktop browsers and Android, and I have to eventually explain that to iOS users somehow. Permission requests have the same “must be triggered by a direct tap” rule I fought with on the guided camera, so subscribing has to happen from an actual button press, no auto-subscribing on load. Debugging this was rough because half the errors happen silently in the service worker, not in the normal Flutter console, so I was stuck adding console.logs into push.js and checking devtools like a caveman for a while.It works now though! Bookmark a team, subscribe, and you’ll get pinged. Native (phone-installed) push notifications are still a “later” problem since that needs a totally different setup (probably Firebase Cloud Messaging), so for now the stub just returns unsupported on native and I’m keeping my scope to web. Two devlogs about the 4th app itself coming up next, promise. View it here: https://mirage54321.github.io/RoboLens/ P.S. For right now there are 3 notifications that send for iOS I plan to change that though!"}, {"post_id": 54198, "ts": "2026-08-25T02:42:40Z", "hours": 8.6025, "text": "Devlog #10 -> Part 1 of 5 Please don’t hurt me, but I have to post multiple devlogs because I worked on so many things in all this time. It’s a lot of stuff to talk about and I don’t want to write it all into one because it will be super unorganized and hard for me to find in the future. In this first devlog, I am going to talk about how I got bookmarks to work. The idea came from thinking ahead to the match notifier. If someone wants alerts for a match, they need a way to say “these are the teams I care about” without having to retype a team number every single time. So I added a bookmark system using shared_preferences (just storing a list of team numbers locally on the device/browser). You can now star a team from a few places in the app and it’ll save to your bookmarks list, which I’m planning to hook the notifier into so it can just loop through your saved teams instead of asking you every time. This one was honestly pretty painless compared to my usual chaos. The only annoying part was making sure the bookmarked list actually persisted correctly on web (learned my lesson from the MongoDB flutter-web thing, so I tested this one on both platforms before moving on lol). Turns out shared_preferences just works with local storage under the hood on web, so no weird surprises this time. Short devlog, I know, but wait till you see what devlog #11 turned into. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 49268, "ts": "2026-08-17T23:33:09Z", "hours": 6.1139, "text": "Devlog #9 -> Okay, so getting the report button to work was a little finicky. I wasn’t sure what approach to take: I could make it easy by just sending me the reported things and I could look at them and just change the prompt, or I could make it difficult by just feeding every single reported issue back into the AI model so that the AI tries to not make the same mistake (which might be a problem because someone could report something that was actually right), or make it VERY difficult make it feed back into the AI if a similar issues were coming up again and again. Guess which one I chose? Yup, the third. Basically, I decided to store the reports in MongoDB and look for recurring mistakes instead of letting a single report change the AI. That way, if one person reports something incorrectly, it doesn’t immediately affect everyone else’s scans. If the same type of mistake keeps getting reported, I can investigate it and use those reports to improve the AI.This seems really complex, and it was. It took me 4 hours (it says 6 on the devlog but 2 of them was working on the 4th app). Alright, ready for my fourth widget idea………. a match notifier!! Now don’t get too excited. I have more to tell. So, every FRC kid knows that there’s a website called Nexus that sends messages for when your game is going to start so you can get in queue, and it works really well. There’s also this thing I came across called statbotics, and it calculates many things like EPA, and more (I didn’t really stay on that website for too long). So, what I plan to do is combine them. Hopefully, I’m not getting myself into too much of a challenge. This will most definitely be the hardest thing I have ever done on this app. Wish me luck! P.S. I started making the fourth widget before the report button then switched to finish the report button halfway so if you see my commits in a confusing order that’s why. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 43541, "ts": "2026-08-08T21:26:06Z", "hours": 0.3608, "text": "Devlog #8 -> Part 2/2 (part 2 of this devlog) I also posted my app onto reddit (r/FRC) and got some feedback. From the feedback, I got the message that an AI scanner can’t be all that reliable/useful without a user-end customization. I totally agree with this. The problem is that I’m not sure if it is worth it to spend time on adding in customization tools for the AI as there is not a lot of return from it. Therefore, I think that right now the AI’s are at the best product they can be as of now (besides adding functionality to the report button). So, my time would be better spent adding in more apps into the app. On the bright side, there were lots of positive reviews about the battery section! I am now going to work on the report button for the UI because I think it will take less time to add than adding a fourth app. In my next post, I will have a confirmed idea for the fourth app! Things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ (Going to do this first because it is easier) Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Adding fourth ‘app’ ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 43529, "ts": "2026-08-08T21:02:52Z", "hours": 6.3211, "text": "Devlog #7 -> Part 2/2 (but part 1 of this devlog) Okay. This was very annoying to work on because every single time I would edit the code, I would have to recommit in order to see it on the github pages (because the permissions wouldn’t work on the flutter web-server). So, getting the guided camera working on web brought a whole lot of browser-specific issues that don’t show up on native mobile. First, the app would hang on a black loading screen because permission_handler and frame streaming aren’t supported in browsers. I then fixed that by branching on kIsWeb to skip those native-only calls and let the browser’s own getUserMedia prompt handle camera access instead.Next, iOS Safari blocked the camera request outright because it requires permission calls to fire directly from a user tap with no delay -> solved by gating the whole flow behind an explicit “Enable Camera” button instead of auto-starting on page load. Since camera_web doesn’t support live frame streaming and sensors_plus doesn’t handle iOS’s motion permission prompt, live guidance (tilt, brightness, sharpness) had to be rebuilt from scratch for web: a custom JS-interop layer (WebProbe) draws each video frame onto a hidden canvas to sample brightness/sharpness, and separately requests iOS’s DeviceMotionEvent permission to read tilt.That introduced two more subtle bugs (a Dart generics issue causing a null-cast crash in the interop code, and a timing issue where the element wasn’t in the DOM yet when we went looking for it) both fixed with explicit type arguments and a retry loop. With all of that sorted, the guided camera now works consistently across native and web, with live tilt/lighting/sharpness feedback and autocapture. View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 37868, "ts": "2026-07-30T20:50:16Z", "hours": 4.4522, "text": "Devlog #6 -> Part 1/2 Hey! I know it has been awhile since I worked on my project (adding the guided camera has been taking a lot of will power), but I have a new update. I have added the guided camera to the scan screen (which I will add to the rules screen too after it is finished). The process that the guided camera uses is: Startup -> requests camera permission immediately for phone usage (permission_handler) or waits for a tap on “Enable Camera” first for browser usage. Camera setup -> fetches available cameras (from Flutter’s camera plugin), picks the back-facing one (falls back to the first available camera on the device if no back camera is found), sets resolution to high on phone or medium on browser (since browsers often reject high-res requests), then calls initialize() to start the live preview. Manual fallback for taking photos -> the shutter button is always available to captures the photo; this is the primary method right now. Capture -> stops the frame stream (phone only), takes the picture, reads the bytes, then returns them to the previous screen via Navigator.pop(context, bytes). An issue I ran into was camera permissions on iPhone Safari. It worked fine on my laptop but wouldn’t work on my phone. I eventually figured out that iPhones are notorious for always requiring explicit permission prompts, so I solved it by requiring the camera request to be triggered by a direct user tap. Basically, I added an “Enable Camera” button on web that only calls the camera setup when tapped, since iOS Safari silently blocks getUserMedia (instead of showing an error) if there’s any delay between the tap and the request. Now I am working on the flutter comments (“too dark”, “focus”, etc.) because right now those aren’t working. Once I get the live guidance to work, then I will be able to implement an auto-capture (that way the photo is taken when at a good angle). View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 29717, "ts": "2026-07-16T20:11:47Z", "hours": 4.3139, "text": "Devlog #5 -> My app now has a load in screen! Yay! I figured it was necessary just to make my whole app look more professional. It was pretty easy (took lots of time though) to add and I didn’t fall into any huge difficulties. Only a mini one because I tried to make the animation in the home screen class and it got chaotic. Once it was its own file it was quite easy because then I just needed to fix up the UI. Look here if you want to learn more about how to do animations in your own project (if using Flutter): https://docs.flutter.dev/ui/animations I also added a very tiny change to the error message for logging in. Instead of saying “Team already registered”, it tells you to contact my email if you cannot access your team. I guess I got really nervous that someone would try to access their team, and if they couldn’t, they would go and put another team’s number and so on indefinitely. Right now, I think this is a good way to fix the issue, but I’ll add a way to report it in the app; that way, the issue can be solved quicker, and you won’t have to send an email to someone. I did have the idea to make it so there is identification of some sort for each team; however, that would just make the app complex, and my whole goal was to have a simple solution to problems. So, if this app actually does really well in the FRC world, I will add some sort of verification; that way lost accounts can be found, and it would just give all-around easier access. Next, I am going to focus on my long put off task: photo to video. I am not sure how I am going to do this, if I am going to be so honest. My idea for it came fom the Smile Doctors invisalign app where it opens up your camera and tells you things like “go to better lighting” or “move to the left”. However, I think that will be super complex and difficult to implement so I might have to start a lot smaller. Best of luck to myself, I guess! List of current tasks: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 28023, "ts": "2026-07-14T00:50:11Z", "hours": 4.6822, "text": "Devlog #4 -> Hey! I have been working on the issues I talked about in my last devlog. So far I have successfully solved one: How I solved “Connenction to MongoDB working for flutter web but not github?” -> The issue was that GitHub Pages is a static hosting service and couldn’t connect directly to MongoDB. Therefore I had to update the application so the GitHub Pages frontend communicates with the Express backend on Render. Basically, I just modified some of the backend configuration like changing (in very very simple terms): fetch(‘/battery’) to something like fetch(‘ https://ridgeboticsapp.onrender.com/battery ’). I also added a ? mark button so that if clicked on it can tell you a little more about the app. Right now, it is just saying some basic things but I plan to show this app to my friends and see what they think I should add to that text in order to help people figure out what is going on if they just found my app. Finally, I fixed an error I wasn’t even aware of: the name finder for each teams batteries. I made it so when you sign up your team, it will try to search up the team name with that FRC number. However, there would be times where I would sign in as my team and it would show up with some random name like “Robo-Knights” or something weird. I think this was related to the Gemini model because I had used it while testing, soincorrect team names could have been stored and reused instead of being verified. To fix this, I connected my backend to the official FRC Events API. Now, the app sends the team’s FRC number to FIRST to retrieve the official team information to then save the verified team name. This prevents teams from accidentally being assigned another team’s name and makes sure the battery data is connected to the correct FRC team. It was never too big of an issue because I could always just edit the names in MongoDB but having it so it says the name right 100% of the time is just much easier for me. Now my new top things to work on are: If team is signed up but you don’t have access to your team Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) Report button working better to fix the AI’s findings View it here: https://mirage54321.github.io/RoboLens/ P.S. If you are trying things out you can sign in as a guest for 4388 and see my teams batteries"}, {"post_id": 24928, "ts": "2026-07-08T20:05:31Z", "hours": 1.5633, "text": "Devlog #3 -> In the past few days I have been working on adding a battery tracker because I believe that it has the potential to be very helpful to FRC teams. Tracking batteries is always a pain for my team, and other teams I’ve connected with can probably agree with that statement. Batteries can randomly fail by not charging or just full-on dying in two minutes. Although one might assume that keeping track of all this is easy, it truly is not. Having a system to hold records and data, I believe, can be very helpful to teams! I’ve added the third tool to the app: a shared battery tracker where a team can log in with a team number and passcode, add batteries, and mark each one as charging, in use, or available. It also lets you flag a battery as weak or unreliable with a note, so if a battery dies mid-match, the whole team can see that history the next time they’re deciding which one to grab. I even added an option for the AI to recommend which battery to use next based on how long it’s been charged and whether it’s been flagged before. My new challenge for this tool has been working with MongoDB. It stores the data fine, but it wasn’t letting me log in (it kept throwing an error). What confused me more is that when I ran it in Flutter web, it worked just fine. This is what I plan to work on for the next few days. To fix my last problem, which was with the AI saying it had spikes in usage, I changed the message to ask the user to try again because it usually works on the try right after. Right now, this is just a temporary solution until I can find a new AI model. List of things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI Find permanant solution for the AI usage Connenction to MongoDB working for flutter web but not github? Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) View it here: https://mirage54321.github.io/RoboLens/ Log in as guest for team 4388 if you just want to view it. P.S. My logged time is glitching out a bunch and I would love if someone could help me in the #stardance-help on slack."}, {"post_id": 23707, "ts": "2026-07-06T20:19:01Z", "hours": 9.0781, "text": "Devlog #2-> Now that I’ve finished the foundation of my project, I can keep adding tools! On my last ship, I realized I should keep more documentation. So be ready for more devlogs going forward! To get a little more comfortable with what I’m doing, I decided to add another AI scanning tool that I have been thinking about: a rules checker. The general scanner already looked for physical problems like wiring and cracks, but I wanted something that could actually check a robot against the official FRC rulebook. So I added the actual PDFs of past FRC game manuals (2024, 2025, and 2026) and let the user pick which season’s rules to check against. That PDF gets fed into the AI alongside the photo, so instead of relying on whatever general FRC knowledge the model already has (which could be outdated or made up), it’s reading the exact rulebook for that year while it looks at the image. Getting the PDF into the AI request in the first place took some figuring out. I had to load it from the app’s assets, converting it into a format the API would actually accept, and making sure it got sent alongside the image without breaking anything. Once it worked though, the difference was noticeable (the AI’s answers started actually referencing real rules instead of guesses). The bigger challenge was AI usage limits. Not “too many messages” though. Instead, it was more that other people using the same free model at the same time meant my requests were competing with everyone else’s. Half the time a scan would go through fine, and the other half it just wouldn’t, with no real pattern I could find. To fix this I… haven’t yet, honestly. Still an open problem :(. Hoping to hear from you guys for some ideas! I’m a little nervous because AI kind of has a negative connotation in FRC. To address that issue, I’m planning to make the whole app not centered around AI so I’ll be adding more tools. Excited to keep going though, because I just started programming my new idea: adding a battery tracker! View it here: https://mirage54321.github.io/RoboLens/"}, {"post_id": 13860, "ts": "2026-06-22T18:21:53Z", "hours": 4.63, "text": "Devlog #1-> I’ve finished the foundation of my project! The app currently has a simple UI and one AI tool that takes in a photo and tells you what’s wrong with it — whether it’s frayed wiring, loose screws, cracked/bent frames, or corrosion. Goal of my project: cut down the time it takes to find an issue so an FRC team has more time to actually fix the problem, and flag problems a human might miss during a rushed pit-stop check. Working with Flutter to program the UI wasn’t too bad. I’ve always been used to Java and JavaScript, so although Dart isn’t exactly the same, I picked it up pretty fast. I had the most difficulty implementing the AI. I started with an Ollama model, but it was way too slow — it would time out before it ever finished telling me what it noticed in the photo. I then found out Google lets you use a free Gemini model, so I got an API key for that and added it in. The new problem: every time I published my app as a GitHub Page, the API key would get disabled because it wasn’t safe sitting in client-side code. I finally learned the key needs to live on a backend to actually be secure, so I set one up using Render. I’m so proud of how my project is looking so far! Next up, I plan to add more tools, like a rules scanner."}]...
|
Title: Robotics RoboLens by @mira_j_maroni | Stard Title: Robotics RoboLens by @mira_j_maroni | Stardance
Devlogs:
Devlog #1-> I’ve finished the foundation of my project! The app currently has a simple UI and one AI tool that takes in a photo and tells you what’s wrong with it — whether it’s frayed wiring, loose screws, cracked/bent frames, or corrosion. Goal of my project: cut down the time it takes to find an issue so an FRC team has more time to actually fix the problem, and flag problems a human might miss during a rushed pit-stop check. Working with Flutter to program the UI wasn’t too bad. I’ve always been used to Java and JavaScript, so although Dart isn’t exactly the same, I picked it up pretty fast. I had the most difficulty implementing the AI. I started with an Ollama model, but it was way too slow — it would time out before it ever finished telling me what it noticed in the photo. I then found out Google lets you use a free Gemini model, so I got an API key for that and added it in. The new problem: every time I published my app as a GitHub Page, the API key would get disabled because it wasn’t safe sitting in client-side code. I finally learned the key needs to live on a backend to actually be secure, so I set one up using Render. I’m so proud of how my project is looking so far! Next up, I plan to add more tools, like a rules scanner.
Devlog #2-> Now that I’ve finished the foundation of my project, I can keep adding tools! On my last ship, I realized I should keep more documentation. So be ready for more devlogs going forward! To get a little more comfortable with what I’m doing, I decided to add another AI scanning tool that I have been thinking about: a rules checker. The general scanner already looked for physical problems like wiring and cracks, but I wanted something that could actually check a robot against the official FRC rulebook. So I added the actual PDFs of past FRC game manuals (2024, 2025, and 2026) and let the user pick which season’s rules to check against. That PDF gets fed into the AI alongside the photo, so instead of relying on whatever general FRC knowledge the model already has (which could be outdated or made up), it’s reading the exact rulebook for that year while it looks at the image. Getting the PDF into the AI request in the first place took some figuring out. I had to load it from the app’s assets, converting it into a format the API would actually accept, and making sure it got sent alongside the image without breaking anything. Once it worked though, the difference was noticeable (the AI’s answers started actually referencing real rules instead of guesses). The bigger challenge was AI usage limits. Not “too many messages” though. Instead, it was more that other people using the same free model at the same time meant my requests were competing with everyone else’s. Half the time a scan would go through fine, and the other half it just wouldn’t, with no real pattern I could find. To fix this I… haven’t yet, honestly. Still an open problem :(. Hoping to hear from you guys for some ideas! I’m a little nervous because AI kind of has a negative connotation in FRC. To address that issue, I’m planning to make the whole app not centered around AI so I’ll be adding more tools. Excited to keep going though, because I just started programming my new idea: adding a battery tracker! View it here: https://mirage54321.github.io/RoboLens/
Devlog #3 -> In the past few days I have been working on adding a battery tracker because I believe that it has the potential to be very helpful to FRC teams. Tracking batteries is always a pain for my team, and other teams I’ve connected with can probably agree with that statement. Batteries can randomly fail by not charging or just full-on dying in two minutes. Although one might assume that keeping track of all this is easy, it truly is not. Having a system to hold records and data, I believe, can be very helpful to teams! I’ve added the third tool to the app: a shared battery tracker where a team can log in with a team number and passcode, add batteries, and mark each one as charging, in use, or available. It also lets you flag a battery as weak or unreliable with a note, so if a battery dies mid-match, the whole team can see that history the next time they’re deciding which one to grab. I even added an option for the AI to recommend which battery to use next based on how long it’s been charged and whether it’s been flagged before. My new challenge for this tool has been working with MongoDB. It stores the data fine, but it wasn’t letting me log in (it kept throwing an error). What confused me more is that when I ran it in Flutter web, it worked just fine. This is what I plan to work on for the next few days. To fix my last problem, which was with the AI saying it had spikes in usage, I changed the message to ask the user to try again because it usually works on the try right after. Right now, this is just a temporary solution until I can find a new AI model. List of things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI Find permanant solution for the AI usage Connenction to MongoDB working for flutter web but not github? Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) View it here: https://mirage54321.github.io/RoboLens/ Log in as guest for team 4388 if you just want to view it. P.S. My logged time is glitching out a bunch and I would love if someone could help me in the #stardance-help on slack.
Devlog #4 -> Hey! I have been working on the issues I talked about in my last devlog. So far I have successfully solved one: How I solved “Connenction to MongoDB working for flutter web but not github?” -> The issue was that GitHub Pages is a static hosting service and couldn’t connect directly to MongoDB. Therefore I had to update the application so the GitHub Pages frontend communicates with the Express backend on Render. Basically, I just modified some of the backend configuration like changing (in very very simple terms): fetch(‘/battery’) to something like fetch(‘ https://ridgeboticsapp.onrender.com/battery ’). I also added a ? mark button so that if clicked on it can tell you a little more about the app. Right now, it is just saying some basic things but I plan to show this app to my friends and see what they think I should add to that text in order to help people figure out what is going on if they just found my app. Finally, I fixed an error I wasn’t even aware of: the name finder for each teams batteries. I made it so when you sign up your team, it will try to search up the team name with that FRC number. However, there would be times where I would sign in as my team and it would show up with some random name like “Robo-Knights” or something weird. I think this was related to the Gemini model because I had used it while testing, soincorrect team names could have been stored and reused instead of being verified. To fix this, I connected my backend to the official FRC Events API. Now, the app sends the team’s FRC number to FIRST to retrieve the official team information to then save the verified team name. This prevents teams from accidentally being assigned another team’s name and makes sure the battery data is connected to the correct FRC team. It was never too big of an issue because I could always just edit the names in MongoDB but having it so it says the name right 100% of the time is just much easier for me. Now my new top things to work on are: If team is signed up but you don’t have access to your team Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) Report button working better to fix the AI’s findings View it here: https://mirage54321.github.io/RoboLens/ P.S. If you are trying things out you can sign in as a guest for 4388 and see my teams batteries
Devlog #5 -> My app now has a load in screen! Yay! I figured it was necessary just to make my whole app look more professional. It was pretty easy (took lots of time though) to add and I didn’t fall into any huge difficulties. Only a mini one because I tried to make the animation in the home screen class and it got chaotic. Once it was its own file it was quite easy because then I just needed to fix up the UI. Look here if you want to learn more about how to do animations in your own project (if using Flutter): https://docs.flutter.dev/ui/animations I also added a very tiny change to the error message for logging in. Instead of saying “Team already registered”, it tells you to contact my email if you cannot access your team. I guess I got really nervous that someone would try to access their team, and if they couldn’t, they would go and put another team’s number and so on indefinitely. Right now, I think this is a good way to fix the issue, but I’ll add a way to report it in the app; that way, the issue can be solved quicker, and you won’t have to send an email to someone. I did have the idea to make it so there is identification of some sort for each team; however, that would just make the app complex, and my whole goal was to have a simple solution to problems. So, if this app actually does really well in the FRC world, I will add some sort of verification; that way lost accounts can be found, and it would just give all-around easier access. Next, I am going to focus on my long put off task: photo to video. I am not sure how I am going to do this, if I am going to be so honest. My idea for it came fom the Smile Doctors invisalign app where it opens up your camera and tells you things like “go to better lighting” or “move to the left”. However, I think that will be super complex and difficult to implement so I might have to start a lot smaller. Best of luck to myself, I guess! List of current tasks: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Photo to video (that way it can help you find the right orientation for the AI to scan with the best feedback possible) ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/
Devlog #6 -> Part 1/2 Hey! I know it has been awhile since I worked on my project (adding the guided camera has been taking a lot of will power), but I have a new update. I have added the guided camera to the scan screen (which I will add to the rules screen too after it is finished). The process that the guided camera uses is: Startup -> requests camera permission immediately for phone usage (permission_handler) or waits for a tap on “Enable Camera” first for browser usage. Camera setup -> fetches available cameras (from Flutter’s camera plugin), picks the back-facing one (falls back to the first available camera on the device if no back camera is found), sets resolution to high on phone or medium on browser (since browsers often reject high-res requests), then calls initialize() to start the live preview. Manual fallback for taking photos -> the shutter button is always available to captures the photo; this is the primary method right now. Capture -> stops the frame stream (phone only), takes the picture, reads the bytes, then returns them to the previous screen via Navigator.pop(context, bytes). An issue I ran into was camera permissions on iPhone Safari. It worked fine on my laptop but wouldn’t work on my phone. I eventually figured out that iPhones are notorious for always requiring explicit permission prompts, so I solved it by requiring the camera request to be triggered by a direct user tap. Basically, I added an “Enable Camera” button on web that only calls the camera setup when tapped, since iOS Safari silently blocks getUserMedia (instead of showing an error) if there’s any delay between the tap and the request. Now I am working on the flutter comments (“too dark”, “focus”, etc.) because right now those aren’t working. Once I get the live guidance to work, then I will be able to implement an auto-capture (that way the photo is taken when at a good angle). View it here: https://mirage54321.github.io/RoboLens/
Devlog #7 -> Part 2/2 (but part 1 of this devlog) Okay. This was very annoying to work on because every single time I would edit the code, I would have to recommit in order to see it on the github pages (because the permissions wouldn’t work on the flutter web-server). So, getting the guided camera working on web brought a whole lot of browser-specific issues that don’t show up on native mobile. First, the app would hang on a black loading screen because permission_handler and frame streaming aren’t supported in browsers. I then fixed that by branching on kIsWeb to skip those native-only calls and let the browser’s own getUserMedia prompt handle camera access instead.Next, iOS Safari blocked the camera request outright because it requires permission calls to fire directly from a user tap with no delay -> solved by gating the whole flow behind an explicit “Enable Camera” button instead of auto-starting on page load. Since camera_web doesn’t support live frame streaming and sensors_plus doesn’t handle iOS’s motion permission prompt, live guidance (tilt, brightness, sharpness) had to be rebuilt from scratch for web: a custom JS-interop layer (WebProbe) draws each video frame onto a hidden canvas to sample brightness/sharpness, and separately requests iOS’s DeviceMotionEvent permission to read tilt.That introduced two more subtle bugs (a Dart generics issue causing a null-cast crash in the interop code, and a timing issue where the element wasn’t in the DOM yet when we went looking for it) both fixed with explicit type arguments and a retry loop. With all of that sorted, the guided camera now works consistently across native and web, with live tilt/lighting/sharpness feedback and autocapture. View it here: https://mirage54321.github.io/RoboLens/
Devlog #8 -> Part 2/2 (part 2 of this devlog) I also posted my app onto reddit (r/FRC) and got some feedback. From the feedback, I got the message that an AI scanner can’t be all that reliable/useful without a user-end customization. I totally agree with this. The problem is that I’m not sure if it is worth it to spend time on adding in customization tools for the AI as there is not a lot of return from it. Therefore, I think that right now the AI’s are at the best product they can be as of now (besides adding functionality to the report button). So, my time would be better spent adding in more apps into the app. On the bright side, there were lots of positive reviews about the battery section! I am now going to work on the report button for the UI because I think it will take less time to add than adding a fourth app. In my next post, I will have a confirmed idea for the fourth app! Things to work on: Low MongoDB storage for free account Report button on the UI needs to feed into the AI ⭐ (Going to do this first because it is easier) Find solution for Render (takes a long time to power on and first time you try to do anything it always fails) Adding fourth ‘app’ ⭐⭐ View it here: https://mirage54321.github.io/RoboLens/
Devlog #9 -> Okay, so getting the report button to work was a little finicky. I wasn’t sure what approach to take: I could make it easy by just sending me the reported things and I could look at them and just change the prompt, or I could make it difficult by just feeding every single reported issue back into the AI model so that the AI tries to not make the same mistake (which might be a problem because someone could report something that was actually right), or make it VERY difficult make it feed back into the AI if a similar issues were coming up again and again. Guess which one I chose? Yup, the third. Basically, I decided to store the reports in MongoDB and look for recurring mistakes instead of letting a single report change the AI. That way, if one person reports something incorrectly, it doesn’t immediately affect everyone else’s scans. If the same type of mistake keeps getting reported, I can investigate it and use those reports to improve the AI.This seems really complex, and it was. It took me 4 hours (it says 6 on the devlog but 2 of them was working on the 4th app). Alright, ready for my fourth widget idea………. a match notifier!! Now don’t get too excited. I have more to tell. So, every FRC kid knows that there’s a website called Nexus that sends messages for when your game is going to start so you can get in queue, and it works really well. There’s also this thing I came across called statbotics, and it calculates many things like EPA, and more (I didn’t really stay on that website for too long). So, what I plan to do is combine them. Hopefully, I’m not getting myself into too much of a challenge. This will most definitely be the hardest thing I have ever done on this app. Wish me luck! P.S. I started making the fourth widget before the report button then switched to finish the report button halfway so if you see my commits in a confusing order that’s why. View it here: https://mirage54321.github.io/RoboLens/
Devlog #10 -> Part 1 of 5 Please don’t hurt me, but I have to post multiple devlogs because I worked on so many things in all this time. It’s a lot of stuff to talk about and I don’t want to write it all into one because it will be super unorganized and hard for me to find in the future. In this first devlog, I am going to talk about how I got bookmarks to work. The idea came from thinking ahead to the match notifier. If someone wants alerts for a match, they need a way to say “these are the teams I care about” without having to retype a team number every single time. So I added a bookmark system using shared_preferences (just storing a list of team numbers locally on the device/browser). You can now star a team from a few places in the app and it’ll save to your bookmarks list, which I’m planning to hook the notifier into so it can just loop through your saved teams instead of asking you every time. This one was honestly pretty painless compared to my usual chaos. The only annoying part was making sure the bookmarked list actually persisted correctly on web (learned my lesson from the MongoDB flutter-web thing, so I tested this one on both platforms before moving on lol). Turns out shared_preferences just works with local storage under the hood on web, so no weird surprises this time. Short devlog, I know, but wait till you see what devlog #11 turned into. View it here: https://mirage54321.github.io/RoboLens/
Devlog #11 -> Part 2 of 5 Now for the second devlog, I am going to talk about how I got notifications to work. This is the one that ate my week. So the goal: when a match is coming up for a team you bookmarked, get a push notification even if the app/tab isn’t open. That last part is the whole problem, because it means I can’t just pop a normal in-app alert, I actually need real browser push notifications, which meant learning a whole new stack: service workers, VAPID keys, and the Push API. Here’s roughly how it works now ->Subscribe -> user picks a team number + event key, the app asks the browser for notification permission, and if granted it registers a push subscription through the service worker using my VAPID public key. Send to backend -> that subscription (plus team number/event key) gets sent to my Express backend and stored in MongoDB. Actually sending them -> the backend uses the web-push npm package to send the push whenever it detects a match coming up for that team. Getting the Flutter side to talk to any of this was its own adventure, since none of this exists as a nice Dart package, so I had to write a JS interop layer (basically a matchPush object in plain JS that Dart calls into) and wire it up through the same conditional-export trick I used for the guided camera: one file for web, one stub file that just says “unsupported” for native, so the app doesn’t explode on phone builds while I haven’t built native push yet. Problems I ran into (there were many) ->iOS Safari straight up does not support web push at all unless the site has been added to the home screen first. So right now notifications basically only work reliably on desktop browsers and Android, and I have to eventually explain that to iOS users somehow. Permission requests have the same “must be triggered by a direct tap” rule I fought with on the guided camera, so subscribing has to happen from an actual button press, no auto-subscribing on load. Debugging this was rough because half the errors happen silently in the service worker, not in the normal Flutter console, so I was stuck adding console.logs into push.js and checking devtools like a caveman for a while.It works now though! Bookmark a team, subscribe, and you’ll get pinged. Native (phone-installed) push notifications are still a “later” problem since that needs a totally different setup (probably Firebase Cloud Messaging), so for now the stub just returns unsupported on native and I’m keeping my scope to web. Two devlogs about the 4th app itself coming up next, promise. View it here: https://mirage54321.github.io/RoboLens/ P.S. For right now there are 3 notifications that send for iOS I plan to change that though!
Devlog #12 -> Part 3 of 5 Okay, actual 4th app time: Team Stats & Match Center (internally I’ve just been calling it “match” in the code, so if you dig around the file names that’s why). I started by mocking everything out before touching any real API, just so I could get the UI feeling right first. Made an intro screen (basically pitching the three features: match alerts, team stats, matchup simulator) and a fake mockTeams list with made-up EPA numbers just so I had something to look at while building. Once the layout felt right, I started swapping the fake data for real stuff from The Blue Alliance’s API, proxied through my backend the same way I already had set up for the FRC Events API (so I’m not spamming TBA directly from a bunch of client apps and to keep my API key private). Architecture-wise, I did something different from my other three apps: instead of passing state down through a million constructor params, I made a MatchDataController (basically one class holding all the team/event/match data + loading state) and wrapped the whole feature in a MatchScope, which is just an InheritedNotifier. So anywhere in the match center I can just call MatchScope.of(context) and get the controller without threading it through every single widget. Probably overkill for how big this feature ended up being, but once I had 4 tabs and a handful of sub-screens all needing the same data, I was really glad I did it this way instead of my usual pass-everything-into-the-constructor approach. Speaking of tabs, I split it into 4: My Team -> your team’s own info/next match Stats -> a season-wide “World Rating” I calculate from aggregating TBA’s OPR data across events (this was its own whole thing, might do a separate devlog on it someday) Events -> browse every FRC event, filter by time or location, see who’s live right now Sim -> the matchup simulator I keep promising Getting match data to actually parse right from TBA’s JSON took a minute (comp levels like qm/qf/sf/f needed their own label logic, predicted_time vs actual_time needed fallback logic since actual_time barely ever gets posted until after the match is already over, that kind of thing) but nothing too crazy, just tedious model-writing. Devlog #13 is basically a straight continuation of this one, mostly bug stories and the simulator, so be ready for that. View it here: https://mirage54321.github.io/RoboLens/
Devlog #13 -> Part 4 of 5 Continuing from #12: more on the match center, mostly the stuff that actually broke on me. Biggest bug of the bunch: on the Events tab, tapping into an event was supposed to show “scheduled to attend” info and the competing teams list, but both of those sections would just spin forever, no error, nothing. I assumed it was a network timing issue at first and went down a whole rabbit hole adding timeouts and retry logic that did absolutely nothing. Turns out the actual problem was way dumber: when I pushed the EventDetailScreen with Navigator.push, that screen gets placed in the Overlay as a sibling of the tab tree, not a child of it, meaning it’s NOT under my MatchScope anymore. So the second that screen tried to call MatchScope.of(context), it threw an assertion error immediately, before initState even got the chance to call setState and load anything. The spinner wasn’t stuck because of a slow network, it was stuck because the load call never even ran. Fixed it by just re-wrapping the pushed route in its own MatchScope using the same controller instance. Felt very silly once I found it, but also weirdly satisfying to finally understand. Next was the matchup simulator and win probabilities. On the schedule screen I show a rough “Red 45% / Blue 55%” prediction for each match. My first instinct was to use each event’s own OPR for this, but that falls apart for upcoming events since OPR doesn’t exist until a team has actually played a match there. So instead I based predictions on the season-wide World Rating from the Stats tab (average points across every event a team’s played all season), which actually gives predictions even for a event that hasn’t started yet. Also went back and hooked the push notification bell (from devlog #11) directly into the match center’s top bar now that there’s finally a “your team” + “your event” to actually attach a subscription to. There’s a little pulsing glow animation on the bell the first time you land on a screen where you could enable alerts, just so people notice it’s there instead of it blending into the top bar. Took way too many attempts to get the glow animation timing feeling smooth and not epileptic-seizure-inducing, but I think I landed on something decent. Genuinely didn’t expect the 4th app to take this many devlogs but here we are. One more to wrap up some small stuff and then I think I’m caught up! View it here: https://mirage54321.github.io/RoboLens/
Devlog #14 -> Part 5 of 5 Finally! This final devlog is about the small tweaks I made in the app. I made it have a new photo Small one, just swapped out one of the app’s images for something more current since the old one was from way back in devlog #1 and didn’t really represent what the app looks like anymore. Nothing technical here, just housekeeping. It kinda works offline I say “kinda” because this isn’t a real offline mode where you can browse cached data with no internet, it’s more like the app now knows when it’s offline and fails fast instead of just hanging. Basically, I added a ConnectivityCheck helper that on web reads navigator.onLine (a free, instant, synchronous browser check for whether the device has a network interface up) so if you’re in airplane mode or your wifi is off, the AI scan screens can immediately say “can’t use this when offline” instead of sitting there for a full request timeout before failing. On native platforms there’s no real equivalent without pulling in a whole new plugin like connectivity_plus, so I just made the stub always report “online” there — an actually-offline phone still gets caught by the AI request’s own timeout/retry handling, just without the instant fail I get on web. One thing worth noting: this only checks if the device thinks it has a network connection, not whether that network actually has working internet behind it. So a wifi network that’s connected but dead will still say “online” here. That case still gets caught eventually, just the slower way through the request timeout instead of instantly. Good enough for now though, this was mostly about killing the most common case of someone trying to scan with their phone in airplane mode and just watching the app hang. I changed the load in screen Went back and reworked the loading screen from devlog #5. It’s now a plain CSS screen sitting directly in index.html instead of living inside the Flutter app itself, which means it can actually paint the instant the page loads, before Flutter has even finished downloading and booting up. That was the whole point: the old version technically only appeared once Flutter itself was far enough along to render it, so there was still a blank/white flash before it. Now there’s a little animated wordmark and spinner (the spinner’s colored arc cycles through the same colors as the logo letters) that fades out and removes itself once Flutter fires its first real frame. While I was in there I also fixed something unrelated but annoying: Flutter’s web service worker by default waits to activate a new version until every open instance of the app is fully closed, which for something people add to their home screen basically never happens naturally. So people could keep opening an old cached version of the app for a long time after I’d pushed updates. Added a bit of JS to force any newly installed service worker to skip that wait and take over immediately (reloading the page once it does), so the next time someone opens the app after I ship something, they actually get it. And that’s it, I’m all caught up! Five devlogs in one sitting was a lot, but future updates should go back to being posted as I actually build them instead of in one giant backlog dump. Current problems / what’s next: Low MongoDB storage for free account Releasing the app (onto chief delphi to get feedback)!! Making it ready to release (working on the ? and report button) Future ideas: team tracker, public chat for teams, judging/interview prep tool, callout tool, round robin generator View it here: https://mirage54321.github.io/RoboLens/
Devlog #15 -> Part 1 (still working on this one!) Finally started actually tackling the AI usage limit problem from devlog #2. Since everyone using the app shares the same free-tier Gemini key, scans would just randomly fail with no real pattern whenever enough people were hitting it at once. Started on the backend side first: instead of letting every incoming scan hit Gemini immediately, I added a little queue that only lets 2 requests be in-flight to Gemini at a time, and everything else waits its turn. Next step is getting it to actually retry instead of just failing after the wait, but that’s for the next devlog.
Devlog #16 -> Part 2, continuing from #15 Got retries working on top of the queue from last time. If Gemini comes back with a 429 (rate limited) or 503 (overloaded) instead of an actual answer, the backend now waits and tries again automatically, using exponential backoff (2s, then 4s, then 8s) instead of hammering it again right away, up to a few attempts before it actually gives up and reports failure. It also checks for a retry-after header first and uses that instead of the backoff timer if Gemini actually tells us how long to wait. Then I mirrored the same idea on the Flutter side, so if the backend’s retries still aren’t enough, the app itself will retry the whole request a couple more times before showing the user an error.
Devlog #17 -> Part 3, wrapping this one up Last piece was making the retrying actually visible instead of just quietly happening in the background. Before, if a scan was retrying you’d just stare at a spinner with no idea what was going on. Now the loading screen updates to say something like “High demand. Retrying (2/3)…” so people know the app hasn’t frozen, it’s just waiting its turn. Between the queueing, the backoff retries on both ends, and this messaging, this should turn a lot of what used to be “scan failed, try again” moments into just a few extra seconds of waiting instead. Doesn’t make the free tier limit go away entirely, but it’s a big improvement over what I had. Current problems / what’s next: Low MongoDB storage for free account Professionalizing (before putting on Chief Delphi)
Devlog #18 -> Okay, super short devlog just to explain what I am doing. Basically all my hours are spent on fixing the notifications. It is super annoying right now because I am trying to finalize my project and the notifications randomly stop working. I tried clearing out mongoDB and checking on my cron-job and those seem to be working just fine. I’m not sure what to do. I pushed the hours up (for the practice day so I can check it earlier) and redeployed with Render. I shall see tomorrow if it works. View it here: https://mirage54321.github.io/RoboLens/
Devlog #19 -> I know I just committed a bunch the last few days. I guess I realized there is only a few days left and I found how to be way more efficent in getting hours. If I just keep this open and something else on another computer and work with them kinda being different windows then I get a lot more time because the switching of windows in the same computer made me keep forgetting to come back and work on the project (and I’m guessing was cutting the time too). Anywho! The most recent changes I have made is removing the ? mark button. I think I was going for a like “about me” thing but I think it was a little redundant and kind of unneccessary to say the least. I added a report button instead (it’s just in the home page). I got this idea from lovable which was something I worked with during my internship. I highkey have been working so much on this project (you can see by all my hours) that I didn’t want to connect it to the backend. It is just a popout that takes you to an gmail link and you can click send. Maybe if I run out of ideas I can add it as a backend. Now, if I am going to be so honest. I have worked a lot on this project and I want to ship but I also want to just crank out some more hours. I’m extremely proud of this project and I need to get it out to the world so that I can get some users! My issues to work on are: Low MongoDB storage for free account Professionalizing (now just looking back over and seeing if there is anything I wanna fix before putting on chief delphi) View it here: https://mirage54321.github.io/RoboLens/
Notifications are working again! Basically, the rebuilding of Render helped fix the issue which is kind of ragebait. I’m getting a little nervous though because I wonder what happens if someone doesn’t reopen the bookmark (because that is how it resets). Would they still get the messages? Will it update automatically? Overall, it works great. I just worry there may be an error that arises (that is a risk with any project honestly). View it here: https://mirage54321.github.io/RoboLens/
Updates!!! Basically, I’ve been checking to see how many users and views I have. I have google analytics on my project to keep an eye on it. Right now I have 52 users and 163 views. Which honestly, I am pretty dang happy about. (1) I haven’t really been advertising (2) I literally thought it was gonna be like 20 views Woop woop! Okay, now on these past few days I have been working on getting as many hours as possible. I don’t have a personal computer so I am really aiming for literally any of the laptops. Now, programatically I have been working on removing the 3 burst messages for iPhone (it wouldn’t compact itself on the Apple homescreen). FYI: 90% of the time for this was spent removing the 3 burst messages for iPhone and writing Ship #2… so you better be ready for Ship 2! View it here: https://mirage54321.github.io/RoboLens/
Devlog #22 -> I was looking at the comments people left me from my ship and the first thing I noticed that I should work on is the load-in page. It is definitely kind of plain. To be honest, I used Claude to help a lot with this one. Making the spinning circle was pretty easy but I had some complex ideas I wanted to put to work and I just didn’t know how to do it. It has a huge radar that has the colors pop up and says “scounting __ teams”. Overall, I am so happy about this new design! Let me know what you guys think! I also added a folder for the photos so it looks more organized! The next thing I plan to work on “loop crashes if the camera disconnects” comment. Live app: https://mirage54321.github.io/RoboLens/
Devlog #23 -> Fixed the camera disconnect crash from the feedback. Turns out the camera plugin doesn’t actually throw an error when the hardware gets yanked mid-session, it just quietly flips an internal hasError flag and keeps going. Which is why the app was crashing somewhere random instead of failing cleanly. Nothing in my code was listening for that flag, so it just kept trying to read frames and capture photos off a dead controller. Fixed it by adding a listener that actually watches for that error state, cleans everything up, and drops the user onto a proper “Camera disconnected, try again” screen instead of freezing or throwing. Also fixed the retry logic after a failed capture so it doesn’t try to restart a stream on a controller that’s already dead. Next up: the cursor. Someone pointed that out, because every button on web just shows the default arrow. Live app: https://mirage54321.github.io/RoboLens/a
Ships:
I made an app for specifically robotics teams (although this could be used for other things too). This is still a work in progress because there is so much more I want to add. I did this project so that I could make something with an AI model and I’m really proud of myself because Flutter was really hard to work with!
What did I make? Since Ship #1, RoboLens grew from one AI scanner into four connected tools. I added a rules checker that reads the actual FRC game manual (2024–2026) alongside your robot photo so it’s grounded in real rules instead of guessing. I built out a full shared battery tracker. I added a guided camera that walks you through lighting/tilt/framing and auto-captures once the angle looks right. And the biggest addition: a Team Stats & Match Center with four tabs (My Team, Stats, Events, Sim) pulling live data from The Blue Alliance and the FRC Events API, including a season-wide “World Rating,” a matchup simulator with win probabilities, and bookmarking teams to get real push notifications before their matches. I also spent a lot of time on stuff that doesn’t show up as a “feature” but makes the app actually usable: a queue + exponential backoff + retry system so the shared free-tier Gemini key doesn’t randomly fail scans under load, a report button that feeds recurring AI mistakes back into future scans, offline detection so scans fail fast instead of hanging, and a new instant-loading splash screen. What was challenging for me? The AI usage limits were the most persistent problem. Everyone shares one free-tier Gemini key, so scans would fail with no clear pattern whenever enough people hit it at once. I fixed it in stages: first a queue limiting in-flight requests, then automatic retries with backoff (and respecting the retry-after header when Gemini gave one), then finally surfacing that retry status to the user (“High demand. Retrying (2/3)…”) instead of just showing a dead spinner. The guided camera and push notifications both turned into whole rabbit holes of browser-specific pain (iOS Safari blocking camera/notification permissions unless triggered by a direct tap, no live frame streaming on web so I had to build a custom JS-interop layer from scratch, and push not working on iOS at all unless the site’s added to the home screen firs)t. My favorite bug story: the Match Center’s Events tab would spin forever with zero errors. I burned time adding timeouts and retries that did nothing before realizing the real issue. The spinner wasn’t stuck waiting on the network, it was stuck because nothing ever tried. What am I the most proud of? Going from a single-purpose AI scanner to four genuinely useful, connected tools without the codebase turning into spaghetti. I’m also proud that scans now degrade gracefully under load instead of just failing, and that notifications work reliably even though I had zero experience with service workers or VAPID keys before this. And honestly, just sticking with it. 21 devlogs and three months of real iteration based on actual user feedback instead of giving up. What should people know so they can test your project? Live app: https://mirage54321.github.io/RoboLens/ You can log in as a guest for team 4388 to browse batteries without needing an account. Push notifications currently work reliably on desktop browsers and Android (iOS Safari requires the site to be added to your home screen as a bookmark). You can test this by logging into -4388 (Yes, a negative. I needed a number that wouldn’t have a real team). The AI scan/rules tools need a robot photo to test against; if you don’t have one handy, any well-lit photo of mechanical/electrical components will still show you how the flow works....
|
1792875207.636436
|
1793739207.636436
|
|
59513
|
OpenVector Phase 1 by @Blobbie | Stardance
|
Blobbie
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T22:18:55Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple fork on AeroVector for it to be more accurate, was pretty hard b/c of bugs and glitches from the source. I fixed them and will get working on phase 2 where I work on integration with open rocket so you can design something on open rocket and transalate it into a better sim method.", "repo": "https://github.com/BlobbieAbhi/OpenVector", "demo": "https://github.com/BlobbieAbhi/AeroVECTOR-demo"}]...
|
[{"post_id": 63796, "ts": "202 [{"post_id": 63796, "ts": "2026-09-07T19:14:48Z", "hours": 0.2886, "text": "Finished the basic translation layer from open rocket to aerovector for more analysis"}]...
|
Title: OpenVector Phase 1 by @Blobbie | Stardance
Title: OpenVector Phase 1 by @Blobbie | Stardance
Devlogs:
Finished the basic translation layer from open rocket to aerovector for more analysis
Ships:
I made a simple fork on AeroVector for it to be more accurate, was pretty hard b/c of bugs and glitches from the source. I fixed them and will get working on phase 2 where I work on integration with open rocket so you can design something on open rocket and transalate it into a better sim method....
|
1793137737.4054694
|
1793224137.4054694
|
|
51904
|
Szenzei by @zenzei | Stardance
|
zenzei
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T21:37:19Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I gained valuable knowledge about APIs, their functionality, SSH servers, and the hosting of code, as well as Python and backend systems. I developed a Slack bot using Node.js and Slack Bolt, learned to interact with external APIs and manage asynchronous requests, link various services (Slack, Python services, external APIs), and even deploy and host backend code on remote servers via SSH.", "repo": "https://github.com/hossainmahmudchowdhury-boop/slack_bot_-szenzei-", "demo": "https://app.slack.com/client/E09V59WQY1E/C0C07RAPSH1"}]...
|
[{"post_id": 63877, "ts": "202 [{"post_id": 63877, "ts": "2026-09-07T21:35:52Z", "hours": 0.2814, "text": "Now custom fact has been enrolled!"}, {"post_id": 63748, "ts": "2026-09-07T18:22:35Z", "hours": 2.7014, "text": "I have customized my own slack fact instead off APi Ninjas"}, {"post_id": 51175, "ts": "2026-08-20T17:56:25Z", "hours": 0.5422, "text": "Wow I have got the first heart beat!"}]...
|
Title: Szenzei by @zenzei | Stardance
Devlogs:
Wo Title: Szenzei by @zenzei | Stardance
Devlogs:
Wow I have got the first heart beat!
I have customized my own slack fact instead off APi Ninjas
Now custom fact has been enrolled!
Ships:
I gained valuable knowledge about APIs, their functionality, SSH servers, and the hosting of code, as well as Python and backend systems. I developed a Slack bot using Node.js and Slack Bolt, learned to interact with external APIs and manage asynchronous requests, link various services (Slack, Python services, external APIs), and even deploy and host backend code on remote servers via SSH....
|
1793087501.308118
|
1793173901.308118
|
|
59139
|
short-remover by @spectra | Stardance
|
spectra
|
1
|
3.0
|
24
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T21:12:36Z", "hours": 3.0, "multiplier": 7.5, "payout": 24, "blessing": "neutral", "text": "Hi! I made a browser extension that removes Shorts from you Youtube feed. This was a pretty easy project, however I think there’s a real demand for this kind of tool. I made this extension so I can’t be distracted and loose countless hours scrolling for nothing (instead of working on some stardance projects for example :D). The hardest part of this project was understanding how the manifest works, and making it compatible for both chromium-based browsers and Firefox.", "repo": "https://github.com/NaFo44/short-remover", "demo": "https://github.com/NaFo44/short-remover/releases/tag/v1.0.0"}]...
|
[{"post_id": 63862, "ts": "202 [{"post_id": 63862, "ts": "2026-09-07T21:04:04Z", "hours": 0.9675, "text": "Devlog #4: I added the ability to directly remove the “Shorts” button on Youtube’s sidebar, so you no longer feel the urge to scroll instead of being productive!"}, {"post_id": 63809, "ts": "2026-09-07T19:32:49Z", "hours": 1.0094, "text": "Devlog #3: I updated the UI of the Youtube Shorts remover extension! I kept it simple so everyone can easily use it. I might add another option to also hide the “Shorts” button on the sidebar."}, {"post_id": 63462, "ts": "2026-09-07T10:21:01Z", "hours": 0.4053, "text": "Devlog #2: I fixed the compatibility with firefox! If you want to try the short remover extention on Firefox (not the final version, but it’s working):"}, {"post_id": 63197, "ts": "2026-09-06T21:20:44Z", "hours": 0.7589, "text": "Devlog #1: I just started working on a simple browser extension to remove youtube shorts from your feed! It already works, so you can try it."}]...
|
Title: short-remover by @spectra | Stardance
Devl Title: short-remover by @spectra | Stardance
Devlogs:
Devlog #1: I just started working on a simple browser extension to remove youtube shorts from your feed! It already works, so you can try it.
Devlog #2: I fixed the compatibility with firefox! If you want to try the short remover extention on Firefox (not the final version, but it’s working):
Devlog #3: I updated the UI of the Youtube Shorts remover extension! I kept it simple so everyone can easily use it. I might add another option to also hide the “Shorts” button on the sidebar.
Devlog #4: I added the ability to directly remove the “Shorts” button on Youtube’s sidebar, so you no longer feel the urge to scroll instead of being productive!
Ships:
Hi! I made a browser extension that removes Shorts from you Youtube feed. This was a pretty easy project, however I think there’s a real demand for this kind of tool. I made this extension so I can’t be distracted and loose countless hours scrolling for nothing (instead of working on some stardance projects for example :D). The hardest part of this project was understanding how the manifest works, and making it compatible for both chromium-based browsers and Firefox....
|
1793119657.2263544
|
1793206057.2263544
|
|
59061
|
my portfolio by @harry_ | Stardance
|
harry_
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:44:55Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal portfolio website using HTML, CSS, and JavaScript with a Y2K desktop-style interface. Instead of using a normal portfolio layout, the different sections open as draggable windows. The most challenging part was getting the windows to interact correctly, especially dragging, layering, and making sure everything worked together. I’m mostly proud of getting the whole interface working and making the site feel like an actual desktop instead of just a regular webpage. To test it, open the desktop icons and try moving, opening, and interacting with the different windows. You can also resize the browser to test the responsive layout.", "repo": "https://github.com/iamharry0121/portfolio", "demo": "https://iamharry0121.github.io/portfolio/"}]...
|
[{"post_id": 63844, "ts": "202 [{"post_id": 63844, "ts": "2026-09-07T20:32:06Z", "hours": 2.5847, "text": "devlog 2 (final devlog): took a while, but I finished, i did use AI but mostly to make up for my lack of artistic ability, in my opinion, it looks pretty good, its got all the requirements in the bag and i got most of the inspiration from this because of this game called ‘Warframe’ (super fun, should check it out if you got time), and no spoilers but somewhere along mid-late game you get a quest where you kinda travel back in time to 1999 and like you get a old crt screen computer from then called the ‘POM-2’ and its interface looked super retro so i took what i liked from it and huzzah, my portfolio, hope you enjoy!. PS: hit me up on slack if you wanna get into warframe or already play it, i need ppl to play with lol"}, {"post_id": 63258, "ts": "2026-09-06T23:52:40Z", "hours": 1.6131, "text": "devlog 1: started on a portfolio site, got some decent progress, i made it very early 2k/windows 7 themed, it has 1 draggable window, some fake buttons, and some filler text, more will be made."}]...
|
Title: my portfolio by @harry_ | Stardance
Devlog Title: my portfolio by @harry_ | Stardance
Devlogs:
devlog 1: started on a portfolio site, got some decent progress, i made it very early 2k/windows 7 themed, it has 1 draggable window, some fake buttons, and some filler text, more will be made.
devlog 2 (final devlog): took a while, but I finished, i did use AI but mostly to make up for my lack of artistic ability, in my opinion, it looks pretty good, its got all the requirements in the bag and i got most of the inspiration from this because of this game called ‘Warframe’ (super fun, should check it out if you got time), and no spoilers but somewhere along mid-late game you get a quest where you kinda travel back in time to 1999 and like you get a old crt screen computer from then called the ‘POM-2’ and its interface looked super retro so i took what i liked from it and huzzah, my portfolio, hope you enjoy!. PS: hit me up on slack if you wanna get into warframe or already play it, i need ppl to play with lol
Ships:
I made a personal portfolio website using HTML, CSS, and JavaScript with a Y2K desktop-style interface. Instead of using a normal portfolio layout, the different sections open as draggable windows. The most challenging part was getting the windows to interact correctly, especially dragging, layering, and making sure everything worked together. I’m mostly proud of getting the whole interface working and making the site feel like an actual desktop instead of just a regular webpage. To test it, open the desktop icons and try moving, opening, and interacting with the different windows. You can also resize the browser to test the responsive layout....
|
1793116276.7695572
|
1793202676.7695572
|
|
54696
|
mochi_robot_project by @lakshaykhatri780 | Stardan mochi_robot_project by @lakshaykhatri780 | Stardance...
|
lakshaykhatri780
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:28:58Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am building Mochi, an interactive companion desk robot! So far, I have engineered the core non-blocking state machine framework and custom anime-style blinking expressions on the 0.96” OLED display using an ESP32. The biggest challenge was designing the multi-axis motion and transistor sound circuits without having all the hardware components yet. I am shipping this now to unlock project grant funding so I can buy the dual servo motors, ultrasonic sensor, and speaker modules needed to finish the physical PVC pipe body assembly!", "repo": "https://github.com/lakshaykhatri780-tech/mochi_robot_project", "demo": ""}]...
|
[{"post_id": 63770, "ts": "202 [{"post_id": 63770, "ts": "2026-09-07T18:46:22Z", "hours": 1.0558, "text": "Finally mochi shows expressions"}, {"post_id": 63494, "ts": "2026-09-07T11:50:31Z", "hours": 0.95, "text": "Wiring all my components on prefboard"}, {"post_id": 63428, "ts": "2026-09-07T08:36:10Z", "hours": 0.805, "text": "Making a custom circuit for my mochi"}, {"post_id": 62144, "ts": "2026-09-05T12:15:01Z", "hours": 2.0981, "text": "writting the codes for my mochi expressions"}]...
|
Title: mochi_robot_project by @lakshaykhatri780 | Title: mochi_robot_project by @lakshaykhatri780 | Stardance
Devlogs:
writting the codes for my mochi expressions
Making a custom circuit for my mochi
Wiring all my components on prefboard
Finally mochi shows expressions
Ships:
I am building Mochi, an interactive companion desk robot! So far, I have engineered the core non-blocking state machine framework and custom anime-style blinking expressions on the 0.96” OLED display using an ESP32. The biggest challenge was designing the multi-axis motion and transistor sound circuits without having all the hardware components yet. I am shipping this now to unlock project grant funding so I can buy the dual servo motors, ultrasonic sensor, and speaker modules needed to finish the physical PVC pipe body assembly!...
|
1793134092.14275
|
1793220492.14275
|
|
38495
|
Habit Tracker by @FusionLord | Stardance
|
FusionLord
|
1
|
98.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:25:18Z", "hours": 98.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a tool to help people track their habits while keeping it all local so no one else sees your data! I learnt a lot of java and css in this project and mostly had difficulty with the storage system, still quite proud of it though. To test it just use github pages unless you also want to try downloading it to use the html. Have fun :)", "repo": "https://github.com/Fusion-4/Habit-Tracker", "demo": "https://fusion-4.github.io/Habit-Tracker/"}]...
|
[{"post_id": 63828, "ts": "202 [{"post_id": 63828, "ts": "2026-09-07T20:02:54Z", "hours": 4.3703, "text": "Devlog 12- Everything works now! All of the features are officially working on github pages! To recap some of the latest features, you can add a custom background and change transparency, duplicate habit warning, and multiple pages for your habits."}, {"post_id": 63607, "ts": "2026-09-07T15:13:27Z", "hours": 9.4539, "text": "Devlog 11 - I will start tweaking This was meant to be my final devlog-> I fixed a lot of the problems but apparently a lot of the buttons are broken now :/ Hopefully done next update."}, {"post_id": 54881, "ts": "2026-08-26T02:54:32Z", "hours": 10.1897, "text": "Day 8! (I’m procrastinating a lot) Today I finished up the UI transformation so now it can have a custom background and change the opacity of the blocks. (For some reason github pages won’t load the settings ui so for now I’m using live server.) There are a few problems like text clipping into each other which will be fixed next devlog. I also want to fix the calendar date scaling and make it so habit has about 3 it shows and you can click through to see them all without increasing vertical space."}, {"post_id": 49296, "ts": "2026-08-18T01:07:37Z", "hours": 10.2206, "text": "Day 7! (I spent like 2 days on this) I broke the css into multiple parts and made the layout for desktop look much cleaner, now its wider so you don’t have to scroll for 3 years just to find your statistics. I also still need to remove a few things but otherwise this is pretty good. I want to spend the next day making the UI look a little better. I also want to make a separate settings UI so its cleaner overall."}, {"post_id": 44377, "ts": "2026-08-10T02:52:06Z", "hours": 9.9719, "text": "Day 6! I finally finished breaking down the Javascript! Now a lot of features work, such as a bunch of statistics, leaderboard, calendar, and a basic dashboard. I am pretty proud of the storage system I added so you can export and import your data. I don’t know if syncing is possible, if it is I will attempt to add it. I don’t like the fact that I need to scroll (at least on desktop). I plan to fix this but still thing about a good layout. I added a loading screen but its super useless so I will get rid of it. I added a super lazy fix to the css so I need to fix that tmrw."}, {"post_id": 41014, "ts": "2026-08-04T22:12:31Z", "hours": 9.4019, "text": "Day 5 - My javascript is 100% broken I wanted to make this devlog not only to log my hours but explain why I spent 9 hours and am still having problems. I’ve spent some time recoding the project because there were a lot of issues with how I was coding before (aka writing a bunch of code that just didn’t work). I have been working on making the code cleaner and when trying it my Javascript is broken. More and more reasons to break my javascript into multiple files -> Doing that next, hopefully its easy 😭 As you can see its pretty cooked."}, {"post_id": 36161, "ts": "2026-07-28T02:18:57Z", "hours": 9.8558, "text": "… I realized that I cut out half of the code… (I will be back in a few minutes!)"}, {"post_id": 35573, "ts": "2026-07-27T03:22:30Z", "hours": 2.4319, "text": "Day 4 - Part 2! Finally fixed the bug and changed the UI a little more, still feels a little off though. I added a lot of Qol features such as renaming, favoriting, notes, categories, search bar, and a progress bar. You can also now see when you last did the task/habit."}, {"post_id": 35522, "ts": "2026-07-27T00:31:51Z", "hours": 10.0864, "text": "Day 4 of Habit Tracker! Well…. somehow after 10+ hours of coding I didn’t find the bug until now. I spent the whole time adding Qol features but I will fix the bug first before explaining the added features."}, {"post_id": 34954, "ts": "2026-07-26T02:23:37Z", "hours": 10.0533, "text": "Day 3 of Habit Tracker! Today I worked on adding a bunch of UI resizing formats so the phone section now works without squishing the UI. I added a history and daily completion system so now the overall experience is better. I’m thinking of a UI update in the future to make this look more cozy!"}, {"post_id": 34394, "ts": "2026-07-25T02:30:19Z", "hours": 8.3817, "text": "Day 2 of this Project! Today I rebuilt much of the Habit Tracker to create a cleaner foundation for future updates. I redesigned the interface, separated the HTML, CSS, and JavaScript into their own files, and rebuilt the habit system for adding, deleting, and saving habits with Local Storage. This now works on phones and linux but I do want to tweak the theme a little more. I also want to fix the phone support because everything looks a little squished right now. I spent a whole hour trying to get github pages to update after this."}, {"post_id": 33783, "ts": "2026-07-23T23:43:17Z", "hours": 3.9014, "text": "Started the project today! Habit tracker should explain itself, but here is a quick one-liner. - A simple web app for tracking daily habits and building consistent routines. I spent a while making this work and I have a simple GUI built, nothing crazy. As of now you can switch between dark and light mode and add or delete tasks. I also got the system to save data working! A few problems are the emojis and font size not rendering properly on linux, and the java not working on phones. (Will be working on these problems tomorrow) I spent 2 hours after this trying to figure out how to make a commit."}]...
|
Title: Habit Tracker by @FusionLord | Stardance
D Title: Habit Tracker by @FusionLord | Stardance
Devlogs:
Started the project today! Habit tracker should explain itself, but here is a quick one-liner. - A simple web app for tracking daily habits and building consistent routines. I spent a while making this work and I have a simple GUI built, nothing crazy. As of now you can switch between dark and light mode and add or delete tasks. I also got the system to save data working! A few problems are the emojis and font size not rendering properly on linux, and the java not working on phones. (Will be working on these problems tomorrow) I spent 2 hours after this trying to figure out how to make a commit.
Day 2 of this Project! Today I rebuilt much of the Habit Tracker to create a cleaner foundation for future updates. I redesigned the interface, separated the HTML, CSS, and JavaScript into their own files, and rebuilt the habit system for adding, deleting, and saving habits with Local Storage. This now works on phones and linux but I do want to tweak the theme a little more. I also want to fix the phone support because everything looks a little squished right now. I spent a whole hour trying to get github pages to update after this.
Day 3 of Habit Tracker! Today I worked on adding a bunch of UI resizing formats so the phone section now works without squishing the UI. I added a history and daily completion system so now the overall experience is better. I’m thinking of a UI update in the future to make this look more cozy!
Day 4 of Habit Tracker! Well…. somehow after 10+ hours of coding I didn’t find the bug until now. I spent the whole time adding Qol features but I will fix the bug first before explaining the added features.
Day 4 - Part 2! Finally fixed the bug and changed the UI a little more, still feels a little off though. I added a lot of Qol features such as renaming, favoriting, notes, categories, search bar, and a progress bar. You can also now see when you last did the task/habit.
… I realized that I cut out half of the code… (I will be back in a few minutes!)
Day 5 - My javascript is 100% broken I wanted to make this devlog not only to log my hours but explain why I spent 9 hours and am still having problems. I’ve spent some time recoding the project because there were a lot of issues with how I was coding before (aka writing a bunch of code that just didn’t work). I have been working on making the code cleaner and when trying it my Javascript is broken. More and more reasons to break my javascript into multiple files -> Doing that next, hopefully its easy 😭 As you can see its pretty cooked.
Day 6! I finally finished breaking down the Javascript! Now a lot of features work, such as a bunch of statistics, leaderboard, calendar, and a basic dashboard. I am pretty proud of the storage system I added so you can export and import your data. I don’t know if syncing is possible, if it is I will attempt to add it. I don’t like the fact that I need to scroll (at least on desktop). I plan to fix this but still thing about a good layout. I added a loading screen but its super useless so I will get rid of it. I added a super lazy fix to the css so I need to fix that tmrw.
Day 7! (I spent like 2 days on this) I broke the css into multiple parts and made the layout for desktop look much cleaner, now its wider so you don’t have to scroll for 3 years just to find your statistics. I also still need to remove a few things but otherwise this is pretty good. I want to spend the next day making the UI look a little better. I also want to make a separate settings UI so its cleaner overall.
Day 8! (I’m procrastinating a lot) Today I finished up the UI transformation so now it can have a custom background and change the opacity of the blocks. (For some reason github pages won’t load the settings ui so for now I’m using live server.) There are a few problems like text clipping into each other which will be fixed next devlog. I also want to fix the calendar date scaling and make it so habit has about 3 it shows and you can click through to see them all without increasing vertical space.
Devlog 11 - I will start tweaking This was meant to be my final devlog-> I fixed a lot of the problems but apparently a lot of the buttons are broken now :/ Hopefully done next update.
Devlog 12- Everything works now! All of the features are officially working on github pages! To recap some of the latest features, you can add a custom background and change transparency, duplicate habit warning, and multiple pages for your habits.
Ships:
I made a tool to help people track their habits while keeping it all local so no one else sees your data! I learnt a lot of java and css in this project and mostly had difficulty with the storage system, still quite proud of it though. To test it just use github pages unless you also want to try downloading it to use the html. Have fun :)...
|
1793145182.988033
|
1793231582.988033
|
|
59396
|
Unknown-Bot by @Rafey | Stardance
|
Rafey
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:21:36Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built an amazing Slack bot called “Unknown Bot”, using Python and Flask. It has three custom slash commands: /unknown-ping checks if the bot is online, /unknown-joke to send you a random joke, and /unknown-time to show the server time. I deployed the bot online and then connected it to Slack.", "repo": "https://github.com/Rafey47/unknown-slack-bot", "demo": "https://app.slack.com/client/T0C08J4BYSY/C0C08J5ETJQ"}]...
|
[{"post_id": 63772, "ts": "202 [{"post_id": 63772, "ts": "2026-09-07T18:47:26Z", "hours": 0.3633, "text": "Building Unknown, My First Slack Bot. So, I started building a Slack bot called Unknown using Python and Flask. I have set up the project in VS Code, installed the required Python packages, and also created the first working version of the bot. I created three custom Slack slash commands: /unknown-ping, /unknown-joke, and /unknown-time. The local server is working, and the next step is deploying the bot so it can stay online 24/7."}]...
|
Title: Unknown-Bot by @Rafey | Stardance
Devlogs: Title: Unknown-Bot by @Rafey | Stardance
Devlogs:
Building Unknown, My First Slack Bot. So, I started building a Slack bot called Unknown using Python and Flask. I have set up the project in VS Code, installed the required Python packages, and also created the first working version of the bot. I created three custom Slack slash commands: /unknown-ping, /unknown-joke, and /unknown-time. The local server is working, and the next step is deploying the bot so it can stay online 24/7.
Ships:
I built an amazing Slack bot called “Unknown Bot”, using Python and Flask. It has three custom slash commands: /unknown-ping checks if the bot is online, /unknown-joke to send you a random joke, and /unknown-time to show the server time. I deployed the bot online and then connected it to Slack....
|
1793130482.1268506
|
1793216882.1268506
|
|
32292
|
Cozy cafè demo by @dragoncat404 | Stardance
|
dragoncat404
|
2
|
69.0
|
623
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:10:23Z", "hours": 34.0, "multiplier": 5.4, "payout": 183, "blessing": "neutral", "text": "Hi, this is the second ship for my game cozy cafe. This version adds a lot of features, and bug fixes, altough it’s more boring compared to the last one because of some drastic changes I made that will benefit the game in the next version. The most challenging thing in this version was making the shift system that makes the player able to play the game for an undefined amount of time. The most time consuming thing to do was the new drink since the way I made drinks work sucks, it’s very unnecessary complicated. The thing I’m very proud of is the end of shift summary sequence and the drawing, I can’t even describe with words how much I’m proud of it (especially the drawing) Before you play the project and rate it you should know that I’m aware that the game-loop is boring, in the next version I’m gonna change the game loop so that your view is from behing the counter and change a lot of things (kinda like in great pizza good pizza). If you would like to leave feedback of any kind like what you would like to see in the next version, suggestion on new drinks or upgrades feel free to tell them I’ll try to implement all of them as best as I can. In the next version I’m gonna try to also do a tutorial but I can’t promise anything. I don’t have any screenshots that can represent the project in action, so here you go the GIF from github and a picture of cozy, the games mascot", "repo": "https://github.com/Dragon-cat98/Cozy-cafe-demo", "demo": "https://dragoncat420.itch.io/cozy-cafe-demo"}, {"ship_num": 2, "ts": "2026-08-04T18:54:08Z", "hours": 35.0, "multiplier": 12.47, "payout": 440, "blessing": "neutral", "text": "I made a cozy game where you manage a coffe shop in the forest. The most challenging part of making the game was the coffe making mechanic and everything related to it, because there was a lot of problems and there weren’t many tutorials that were useful, so I had to think of ideas and re-think those ideas when they didn’t work. The thing I’m the most proud of is the game art since I’m not the best at drawing, and I think it turned out really well, but the main menu Background is my favourite that I made. This game is a demo and has a really short gameplay(10 min), for the next version I have a lot of things I want to add they’re all written in my notebook, and since the core mechanics are already made adding new features is gonna be easier. The project can be both played in browser on itch.io and be downloaded on itch.io(the instructions on how to install are both on itch and the github readme). Since the controls are mouse and click it can be kinda played on mobile, just that the resolution isn’t made for mobile, but it’s playable", "repo": "https://github.com/Dragon-cat98/Cozy-cafe-demo", "demo": "https://dragoncat420.itch.io/cozy-cafe-demo"}]...
|
[{"post_id": 63765, "ts": "202 [{"post_id": 63765, "ts": "2026-09-07T18:42:17Z", "hours": 3.6419, "text": "Hey everyone, this is the last devlog before shipping the project for the second time. Since last time I’ve done some touch ups like Making some art for the game like the lock so that people understand that it’s locked behind the completion of day 2 Changing the “¥” symbol with a custom made icon Adding the description to the Items in the shop ecc. fixed a bug where the fade in and out effect for starting a new shift would be way too long fixed all the minor bugs that we’re making the playing the uncomfortable had to disable the custom cursor because it would look giant in the actual build of the game And that should be it, I may have forgot something but please forgive me, I finished my notebook where I would write down all the stuff I did Thanks everyone for the support, I can’t wait to rebuild the new gameloop"}, {"post_id": 62376, "ts": "2026-09-05T18:21:25Z", "hours": 9.6569, "text": "Hey Everyone! you might already hev guessed it, The 10 hour limit is very close so I’m making a devlog. things done since last one finished making the shift system in it’s entirety(even if it’s still a bit buggy) the shift system also resets the customers position I’m adding a shop for after the shift where you can buy the drinks and upgrades upgrades and drink upgrades have been moved to the shop (I know it’s a drastic decision but I’ll explain why at the end) I made the art for the end of the shift summary, I’m super proud of it it looks way too good I locked the Orange juice behind the completition of day 2 made the start new shift system I’ve also fixed some leftover bugs from the time system of the shift system done the fade in fade out effect, that I need to tweeak because in some areas it takes too much time explanations I’ve moved the upgrades to the new shop area because after I ship the new version I’ll rework completely the gameplay, if anyone has ever played good pizza, great pizza is going to be familiar with the gameplay, I’ll change the look of it so that you see behing the counter, this is going to make the game way easier to manage and more fun, since this way the customer are going to be a lot easier to implement, and the drink making process is going to be more fun. Hope you’ll understand my decision, I’ve spoken to my friend that also does game dev and he said it’s a good idea. Now the gameplay is more boring? sure but in the next ship it’s going to be (hopefully) a completely different game P.S. the videos aren’t everything I added."}, {"post_id": 58834, "ts": "2026-08-31T12:42:53Z", "hours": 9.4953, "text": "Hey everybody, Sorry if I again went on radio silence but I was partecipating in the brackey game jam 2026.2 with jame gam. Anyways as always I’m being forced to post because of the 10 hour limit so some things are WIP what I’ve done I’ve read the feedback from the ship and a lot of people wanted a tutorial at the start, for now I can’t do that since the game is still in rough shape , but I added a tooltip so that people hopefully understand better how to play Now I’ve got some bad news, in this version I won’t be able to add the custom music changer I talked about in the last devlog, simply because it’s very hard and I couldn’t find any useful tutorials, hopefully in the next version I’ll be able to add it, I’ve like spent 3 hours searching ways to do it but I can’t figure it out I’m adding a shift system where you complete the day and it gives you all the statistics of the day, and maybe I’ll re-work the upgrade feature so that you can upgrade only after the shift ends and maybe add something like rush hour at certain hours, but to do that I’ll need to rework hoe the customers work thanks for the feedback I want to say thank you to all the people that gave feedback to the game I’ll try implementing your feedback, and also thanks for all the comoliments for the game I appreciate it very much Now I’m going back to work see you in the next devlog"}, {"post_id": 45382, "ts": "2026-08-11T19:59:49Z", "hours": 2.2286, "text": "After the last devlog I’ve finished the new drink feature and done some other things, so here’s what Changed: I’ve finished the New drink feature and implemented it with the game I’ve finished the menu where you have to purchase the drinks before having the option to make them, when I’ll add new drinks I’ll put having purchased the previous drink as a requirement to unlock the next one I’ve added a custom cursor I’ve solved the bug where when you dragged an object the object would’nt follow the cursor exactly and would just fly forward, turns out the canvas that was being used was changing into the wrong one since it was manually put in, I’ve changed it to automatically assign the canvas now at the start the kitchen is empty and by purchasing the coffe drink that makes appear the utensils to make coffe Now the next thing to implement is more SFX and other kinds of tracks , I’ll be adding something cool to change the music that’s playing and give the option to import songs to play, this will be the next feature along with some UI improvements like some animations for the menus . I won’t tell yet what the thing to change the music is, because first I want to see if it’s doable Anyways I wont’t be able to work on the game for a few days, because I’ll be away from home and won’t have internet access, but I’ll be doing some redesigns of the game art on my sketchbook during the time being and also researching if the feature can be done."}, {"post_id": 45114, "ts": "2026-08-11T12:13:00Z", "hours": 8.9111, "text": "I’m being forced to post because of the 10h limit this is still work in progress For now since the last post I’ve done: The new drink with all the filling and serving functions Added the new drink as a possible order for the customer added a menu where you purchase the new drinks added a dropdown to select the drink you want to make As I expected adding the new features with the core game logic already done is much easier, I stilll run into bugs but I fix them way more easily, after finishing implementing the drink feature I think I’ll improve the UI, but after that I have to decide on what to do since I do have an idea but I don’t know how long it will take to add and if it’s even worth it, anyway I’ll go back to finishing the new feature"}, {"post_id": 40854, "ts": "2026-08-04T17:20:31Z", "hours": 4.6403, "text": "Hey everyone this is the last devlog of the demo for cozy cafe because the demo version is finished. The last things that I’ve done before finishing it were: -solving some leftover minor bugs -Fixed the random customer skin change because the one customer would have the same skin as the other customer -I’ve made the main menu for the game -I’ve added music to the game -I’ve adde an SFX for when the customers pay For the next version of the game I’ve got a lot of ideas wrote in my notebook, and since the core logic of the game has already been made, these additions should be easy to add, since most of them are visual changes and adding features to already existing mechanics"}, {"post_id": 36471, "ts": "2026-07-28T16:36:15Z", "hours": 9.8586, "text": "Hi everyone, sorry for the radio silence but I was perticipating in the GMTK2026. I’m being forced to post because of the 10h limit, I’ve done a lot of things since the last devlog. I’ve: -Done the core game mechanic of preparing the coffes -Done a LOT of game art, I think I finished all the art for now -I fixed the leftover bugs, now the current version is bug free (I think), they were a lot and many were time consuming -I implemented a random skin change for the customer so that the customer doesn’t feel repetitive I know I’ve said I’ve done a lot of things, but the great majority of the things done were bug fixes and it would take a lot to list them all"}, {"post_id": 30247, "ts": "2026-07-17T17:48:45Z", "hours": 9.6956, "text": "In the last few days I focused on Adding one of the core features of the game and also solving problems about UI and code not collaborating: -I added the new feature that I’ll be expanding in the next few days, for now you prepare the coffes by clicking the button then take the coffes and drag them with the mouse to the white square that sends them to the shelf and increases the counter, by using the third upgrade you can increase the amount of coffes you can make and have on the shelf at the same time, in the next days I’ll be focusing on making art for the game -I drew and added the new coffe shop art -I added a drag&drop system for the kitchen panel -Added the third upgrade with it’s related info, and added real time upgrade prices in the info panel -While making the kitchen panel feature I ran in a logic problem that afer a lot of hours spent trying many ways to fix it, I had to ask claude to help me fix it, the AI actually came up with a genius solution to the problem since my logic for the bool variable was a total mess that I don’t even know how it got so messy -I fixed a bug where if both customers where near the shop you could only serve the one on the right, it was a simple fix, the two canvas where only overlapping eachother -I had to give up the idea of the coffes directly moving on the shelf after preparing them because of transform issues, and use a coffe counter that’s displayed on the shelf, however I like how it turned out -I changed the font to one that Augie from jame gam made, I think it turned out great -It might look like I didn’t do much for having 9h for this devlog, but I swear the problems where mainly caused by addding the new features because the UI just wouldn’t collaborate I geniuenely spent half of the logged time triying to make it work,in the end I asked claude for help and he came up with a genius solution(in my opinion). As I said earlier, I also spent a lot of time triying to make the phisical coffes appear on the shelf but I think the solution i found withe the counetr is better."}, {"post_id": 26822, "ts": "2026-07-11T20:43:58Z", "hours": 2.5356, "text": "Hi everyone, Today I again focused on the UI: -I gave text to the upgrade buttons by giving information on what levek they where, I also made (in my opinion) a pretty good sistem for changingthe level etxt as you upgarde -I added a button that gives information about what each upgrade does, in the future I want show the information by just hovering over the upgrade button -I implemented a feature that my friend suggested, when customers are leaving, above their heads gets displayed how much they’ve payed, this feature wasn’t too easy to program, because I again had to find a way for the game to know when the customer was leaving, but I always haev fun programming these things because I learn a lot of ways, like the fact that if you use a while() loop in the update function, when you press play unity freezes, anyway that wasn’t the real issue, the real issue is that while wanting to delete a gameobject taht I didn’t need, I accidentally deleted the SCRIPTS FOLDER, I panicked when I saw the message and I clicked “cancel” but it was too late, after failing at trying to save the files that I had in VS code, I was about to go retrieve my github code and lose hours of todays progress + hours setting up again the scripts, but then I remembered that if you delete something in unity on windows, the thing doesn’t get totally deleted but goes to the trash bin, so I went to the trash bin with hope and succeded, I restored the folder and magically in unity everything went back to it’s original position, I think I lost 10 years of life by this problem -On the good side I found a super cool font made by Augie from hackclub, she’s the one that runs tha jame gam on slack"}, {"post_id": 26194, "ts": "2026-07-10T21:06:53Z", "hours": 2.7431, "text": "Today i focused on improving the games UI: -I fixed the problem of the ballon by using a UI image and changing it’s sprite(before i has the ballon sprite like a normal game object, to be honest it didn’t take as much as I thought it would to fix this) -The most time was spent making the second upgrade work, because it was a pain understanding the logic to implement the upgrade, wich shortens the time of customers arriving, but it was actually very fun implementig this upgrade bevause I had to think of workarounds around the problems that were coming up -quick side note: in the first devlog i was saying how cool it was VS code autocompletition, quick update it’s starting to piss me off because it’s suggestions aren’t very helpful when i’m implementing totally new features -I added a pause button, wich wasn’t really simple but it’s because I kept getting distracted when setting it up in the UI -added a window that opens and shows a red panel, tomorrow I’ll tell what’s it for -lastly I sent my friend a quick demo to playtest so he can give me some ideas, best decison ever, he gave me some amazing suggestions and gave me inspiration for some other ideas, I did it because I didn’t know what else to add, I hope tomorrow I’ll be able to add some of the ideas"}, {"post_id": 25508, "ts": "2026-07-09T20:30:43Z", "hours": 3.6728, "text": "Today I: -added UI that displays the amount of money you have -Added a very simple ballon that displays a button wich makes you serve the customer -Added one upgrade that increases the money you get from selling, when adding this the panel behind the button kept disappearing when serving the customers, and then I freaked out because the customers weren’t moving after the order, i spent something like 45-50 minutes trying to understand why, in the end somehow the panel of the upgrade somehow ended up in the gamemanagers code, where it should have been the customers ballon panel -added a limit to the amount you could upgrade the shop -then I spent like 30 minutes trying to make a second customer, using the same script as the first one, in the and I made a new script because the previous script was connected to the other scripts and it would have taken too long to do rather than a new script(wich still took long to setup with the other logic in the game), but in the future I hope to find a way to optimize creating new customers by making it easier -after like an hour of me starting todays work when setting up the ballons and trying them by running some playtests, I ran into the most timewasting problem I’ve encountered for now, wich was so stupid but at the same time so frustrating, during the playtests when changing the game window size evrything going out of place especially the buttons and the ballon, I spent most of the time trying what was the problem then I realized that I didn’t change the canvas scale mode to “scale eith screen size”, it doesn’t need to eb said that I felt very dumb after that(I still don’t know why but the ballon + the button still give me problems) -in the next devlog I hope to: fix the ballon problem and to improve it, complete the upgrade list by adding at least 2/3 upgrades"}, {"post_id": 24863, "ts": "2026-07-08T18:30:08Z", "hours": 2.1375, "text": "-Did basic customer logic -Spent 30 minutes trying to understand why the collision trigger didn’t work, discovered that i also needed at least 1 rigidbody 2D -Discovered better ways to exchange data between scripts -Was surprised about how accurate is Visual Studio code auto completition -Unfortunately I only did only the customer basic logic(very basic) because of the time it took to fix all the errors and functions -Next devlog I hope to add a UI that displays Data and implement the game loop by adding upgrades"}]...
|
Title: Cozy cafè demo by @dragoncat404 | Stardance Title: Cozy cafè demo by @dragoncat404 | Stardance
Devlogs:
-Did basic customer logic -Spent 30 minutes trying to understand why the collision trigger didn’t work, discovered that i also needed at least 1 rigidbody 2D -Discovered better ways to exchange data between scripts -Was surprised about how accurate is Visual Studio code auto completition -Unfortunately I only did only the customer basic logic(very basic) because of the time it took to fix all the errors and functions -Next devlog I hope to add a UI that displays Data and implement the game loop by adding upgrades
Today I: -added UI that displays the amount of money you have -Added a very simple ballon that displays a button wich makes you serve the customer -Added one upgrade that increases the money you get from selling, when adding this the panel behind the button kept disappearing when serving the customers, and then I freaked out because the customers weren’t moving after the order, i spent something like 45-50 minutes trying to understand why, in the end somehow the panel of the upgrade somehow ended up in the gamemanagers code, where it should have been the customers ballon panel -added a limit to the amount you could upgrade the shop -then I spent like 30 minutes trying to make a second customer, using the same script as the first one, in the and I made a new script because the previous script was connected to the other scripts and it would have taken too long to do rather than a new script(wich still took long to setup with the other logic in the game), but in the future I hope to find a way to optimize creating new customers by making it easier -after like an hour of me starting todays work when setting up the ballons and trying them by running some playtests, I ran into the most timewasting problem I’ve encountered for now, wich was so stupid but at the same time so frustrating, during the playtests when changing the game window size evrything going out of place especially the buttons and the ballon, I spent most of the time trying what was the problem then I realized that I didn’t change the canvas scale mode to “scale eith screen size”, it doesn’t need to eb said that I felt very dumb after that(I still don’t know why but the ballon + the button still give me problems) -in the next devlog I hope to: fix the ballon problem and to improve it, complete the upgrade list by adding at least 2/3 upgrades
Today i focused on improving the games UI: -I fixed the problem of the ballon by using a UI image and changing it’s sprite(before i has the ballon sprite like a normal game object, to be honest it didn’t take as much as I thought it would to fix this) -The most time was spent making the second upgrade work, because it was a pain understanding the logic to implement the upgrade, wich shortens the time of customers arriving, but it was actually very fun implementig this upgrade bevause I had to think of workarounds around the problems that were coming up -quick side note: in the first devlog i was saying how cool it was VS code autocompletition, quick update it’s starting to piss me off because it’s suggestions aren’t very helpful when i’m implementing totally new features -I added a pause button, wich wasn’t really simple but it’s because I kept getting distracted when setting it up in the UI -added a window that opens and shows a red panel, tomorrow I’ll tell what’s it for -lastly I sent my friend a quick demo to playtest so he can give me some ideas, best decison ever, he gave me some amazing suggestions and gave me inspiration for some other ideas, I did it because I didn’t know what else to add, I hope tomorrow I’ll be able to add some of the ideas
Hi everyone, Today I again focused on the UI: -I gave text to the upgrade buttons by giving information on what levek they where, I also made (in my opinion) a pretty good sistem for changingthe level etxt as you upgarde -I added a button that gives information about what each upgrade does, in the future I want show the information by just hovering over the upgrade button -I implemented a feature that my friend suggested, when customers are leaving, above their heads gets displayed how much they’ve payed, this feature wasn’t too easy to program, because I again had to find a way for the game to know when the customer was leaving, but I always haev fun programming these things because I learn a lot of ways, like the fact that if you use a while() loop in the update function, when you press play unity freezes, anyway that wasn’t the real issue, the real issue is that while wanting to delete a gameobject taht I didn’t need, I accidentally deleted the SCRIPTS FOLDER, I panicked when I saw the message and I clicked “cancel” but it was too late, after failing at trying to save the files that I had in VS code, I was about to go retrieve my github code and lose hours of todays progress + hours setting up again the scripts, but then I remembered that if you delete something in unity on windows, the thing doesn’t get totally deleted but goes to the trash bin, so I went to the trash bin with hope and succeded, I restored the folder and magically in unity everything went back to it’s original position, I think I lost 10 years of life by this problem -On the good side I found a super cool font made by Augie from hackclub, she’s the one that runs tha jame gam on slack
In the last few days I focused on Adding one of the core features of the game and also solving problems about UI and code not collaborating: -I added the new feature that I’ll be expanding in the next few days, for now you prepare the coffes by clicking the button then take the coffes and drag them with the mouse to the white square that sends them to the shelf and increases the counter, by using the third upgrade you can increase the amount of coffes you can make and have on the shelf at the same time, in the next days I’ll be focusing on making art for the game -I drew and added the new coffe shop art -I added a drag&drop system for the kitchen panel -Added the third upgrade with it’s related info, and added real time upgrade prices in the info panel -While making the kitchen panel feature I ran in a logic problem that afer a lot of hours spent trying many ways to fix it, I had to ask claude to help me fix it, the AI actually came up with a genius solution to the problem since my logic for the bool variable was a total mess that I don’t even know how it got so messy -I fixed a bug where if both customers where near the shop you could only serve the one on the right, it was a simple fix, the two canvas where only overlapping eachother -I had to give up the idea of the coffes directly moving on the shelf after preparing them because of transform issues, and use a coffe counter that’s displayed on the shelf, however I like how it turned out -I changed the font to one that Augie from jame gam made, I think it turned out great -It might look like I didn’t do much for having 9h for this devlog, but I swear the problems where mainly caused by addding the new features because the UI just wouldn’t collaborate I geniuenely spent half of the logged time triying to make it work,in the end I asked claude for help and he came up with a genius solution(in my opinion). As I said earlier, I also spent a lot of time triying to make the phisical coffes appear on the shelf but I think the solution i found withe the counetr is better.
Hi everyone, sorry for the radio silence but I was perticipating in the GMTK2026. I’m being forced to post because of the 10h limit, I’ve done a lot of things since the last devlog. I’ve: -Done the core game mechanic of preparing the coffes -Done a LOT of game art, I think I finished all the art for now -I fixed the leftover bugs, now the current version is bug free (I think), they were a lot and many were time consuming -I implemented a random skin change for the customer so that the customer doesn’t feel repetitive I know I’ve said I’ve done a lot of things, but the great majority of the things done were bug fixes and it would take a lot to list them all
Hey everyone this is the last devlog of the demo for cozy cafe because the demo version is finished. The last things that I’ve done before finishing it were: -solving some leftover minor bugs -Fixed the random customer skin change because the one customer would have the same skin as the other customer -I’ve made the main menu for the game -I’ve added music to the game -I’ve adde an SFX for when the customers pay For the next version of the game I’ve got a lot of ideas wrote in my notebook, and since the core logic of the game has already been made, these additions should be easy to add, since most of them are visual changes and adding features to already existing mechanics
I’m being forced to post because of the 10h limit this is still work in progress For now since the last post I’ve done: The new drink with all the filling and serving functions Added the new drink as a possible order for the customer added a menu where you purchase the new drinks added a dropdown to select the drink you want to make As I expected adding the new features with the core game logic already done is much easier, I stilll run into bugs but I fix them way more easily, after finishing implementing the drink feature I think I’ll improve the UI, but after that I have to decide on what to do since I do have an idea but I don’t know how long it will take to add and if it’s even worth it, anyway I’ll go back to finishing the new feature
After the last devlog I’ve finished the new drink feature and done some other things, so here’s what Changed: I’ve finished the New drink feature and implemented it with the game I’ve finished the menu where you have to purchase the drinks before having the option to make them, when I’ll add new drinks I’ll put having purchased the previous drink as a requirement to unlock the next one I’ve added a custom cursor I’ve solved the bug where when you dragged an object the object would’nt follow the cursor exactly and would just fly forward, turns out the canvas that was being used was changing into the wrong one since it was manually put in, I’ve changed it to automatically assign the canvas now at the start the kitchen is empty and by purchasing the coffe drink that makes appear the utensils to make coffe Now the next thing to implement is more SFX and other kinds of tracks , I’ll be adding something cool to change the music that’s playing and give the option to import songs to play, this will be the next feature along with some UI improvements like some animations for the menus . I won’t tell yet what the thing to change the music is, because first I want to see if it’s doable Anyways I wont’t be able to work on the game for a few days, because I’ll be away from home and won’t have internet access, but I’ll be doing some redesigns of the game art on my sketchbook during the time being and also researching if the feature can be done.
Hey everybody, Sorry if I again went on radio silence but I was partecipating in the brackey game jam 2026.2 with jame gam. Anyways as always I’m being forced to post because of the 10 hour limit so some things are WIP what I’ve done I’ve read the feedback from the ship and a lot of people wanted a tutorial at the start, for now I can’t do that since the game is still in rough shape , but I added a tooltip so that people hopefully understand better how to play Now I’ve got some bad news, in this version I won’t be able to add the custom music changer I talked about in the last devlog, simply because it’s very hard and I couldn’t find any useful tutorials, hopefully in the next version I’ll be able to add it, I’ve like spent 3 hours searching ways to do it but I can’t figure it out I’m adding a shift system where you complete the day and it gives you all the statistics of the day, and maybe I’ll re-work the upgrade feature so that you can upgrade only after the shift ends and maybe add something like rush hour at certain hours, but to do that I’ll need to rework hoe the customers work thanks for the feedback I want to say thank you to all the people that gave feedback to the game I’ll try implementing your feedback, and also thanks for all the comoliments for the game I appreciate it very much Now I’m going back to work see you in the next devlog
Hey Everyone! you might already hev guessed it, The 10 hour limit is very close so I’m making a devlog. things done since last one finished making the shift system in it’s entirety(even if it’s still a bit buggy) the shift system also resets the customers position I’m adding a shop for after the shift where you can buy the drinks and upgrades upgrades and drink upgrades have been moved to the shop (I know it’s a drastic decision but I’ll explain why at the end) I made the art for the end of the shift summary, I’m super proud of it it looks way too good I locked the Orange juice behind the completition of day 2 made the start new shift system I’ve also fixed some leftover bugs from the time system of the shift system done the fade in fade out effect, that I need to tweeak because in some areas it takes too much time explanations I’ve moved the upgrades to the new shop area because after I ship the new version I’ll rework completely the gameplay, if anyone has ever played good pizza, great pizza is going to be familiar with the gameplay, I’ll change the look of it so that you see behing the counter, this is going to make the game way easier to manage and more fun, since this way the customer are going to be a lot easier to implement, and the drink making process is going to be more fun. Hope you’ll understand my decision, I’ve spoken to my friend that also does game dev and he said it’s a good idea. Now the gameplay is more boring? sure but in the next ship it’s going to be (hopefully) a completely different game P.S. the videos aren’t everything I added.
Hey everyone, this is the last devlog before shipping the project for the second time. Since last time I’ve done some touch ups like Making some art for the game like the lock so that people understand that it’s locked behind the completion of day 2 Changing the “¥” symbol with a custom made icon Adding the description to the Items in the shop ecc. fixed a bug where the fade in and out effect for starting a new shift would be way too long fixed all the minor bugs that we’re making the playing the uncomfortable had to disable the custom cursor because it would look giant in the actual build of the game And that should be it, I may have forgot something but please forgive me, I finished my notebook where I would write down all the stuff I did Thanks everyone for the support, I can’t wait to rebuild the new gameloop
Ships:
I made a cozy game where you manage a coffe shop in the forest. The most challenging part of making the game was the coffe making mechanic and everything related to it, because there was a lot of problems and there weren’t many tutorials that were useful, so I had to think of ideas and re-think those ideas when they didn’t work. The thing I’m the most proud of is the game art since I’m not the best at drawing, and I think it turned out really well, but the main menu Background is my favourite that I made. This game is a demo and has a really short gameplay(10 min), for the next version I have a lot of things I want to add they’re all written in my notebook, and since the core mechanics are already made adding new features is gonna be easier. The project can be both played in browser on itch.io and be downloaded on itch.io(the instructions on how to install are both on itch and the github readme). Since the controls are mouse and click it can be kinda played on mobile, just that the resolution isn’t made for mobile, but it’s playable
Hi, this is the second ship for my game cozy cafe. This version adds a lot of features, and bug fixes, altough it’s more boring compared to the last one because of some drastic changes I made that will benefit the game in the next version. The most challenging thing in this version was making the shift system that makes the player able to play the game for an undefined amount of time. The most time consuming thing to do was the new drink since the way I made drinks work sucks, it’s very unnecessary complicated. The thing I’m very proud of is the end of shift summary sequence and the drawing, I can’t even describe with words how much I’m proud of it (especially the drawing) Before you play the project and rate it you should know that I’m aware that the game-loop is boring, in the next version I’m gonna change the game loop so that your view is from behing the counter and change a lot of things (kinda like in great pizza good pizza). If you would like to leave feedback of any kind like what you would like to see in the next version, suggestion on new drinks or upgrades feel free to tell them I’ll try to implement all of them as best as I can. In the next version I’m gonna try to also do a tutorial but I can’t promise anything. I don’t have any screenshots that can represent the project in action, so here you go the GIF from github and a picture of cozy, the games mascot...
|
1793138317.0573952
|
1793224717.0573952
|
|
49801
|
StudyBuddy by @abdulqadir | Stardance
|
abdulqadir
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T20:03:00Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built StudyBuddy, a Slack bot with 4 commands. Hardest part was getting it deployed 24/7 on Hack Club Nest — kept hitting network issues with git pushes and had to work around a blocked SSH port by tunneling over 443, plus formatting bugs when creating config files through the terminal. Proud that it’s actually live on the server now, not just running on my laptop", "repo": "https://github.com/Qadir-eng/studybuddy-bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0BQ3P8JTSB"}]...
|
[{"post_id": 57574, "ts": "202 [{"post_id": 57574, "ts": "2026-08-29T19:17:47Z", "hours": 0.345, "text": "Added few commands, probably planning to add more commands. Currently waiting on my pending application for the nest, which will allow it to run 24/7."}]...
|
Title: StudyBuddy by @abdulqadir | Stardance
Devl Title: StudyBuddy by @abdulqadir | Stardance
Devlogs:
Added few commands, probably planning to add more commands. Currently waiting on my pending application for the nest, which will allow it to run 24/7.
Ships:
Built StudyBuddy, a Slack bot with 4 commands. Hardest part was getting it deployed 24/7 on Hack Club Nest — kept hitting network issues with git pushes and had to work around a blocked SSH port by tunneling over 443, plus formatting bugs when creating config files through the terminal. Proud that it’s actually live on the server now, not just running on my laptop...
|
1793148750.5176253
|
1793235150.5176253
|
|
26702
|
Simhub - A gaming macropad by @raghavsharma1214 | Simhub - A gaming macropad by @raghavsharma1214 | Stardance...
|
raghavsharma1214
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T19:56:15Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A custom macropad, where I design a small keyboard to address all of my sim-racing needs. This is mainly a design project for now. I won’t be able to recieve the parts I got funding for (so I didn’t use the funding) before September 30th, so I’m submitting this design. This macropad stands out from other ones because clicking down on the rotary encoder toggles it from custom macro shortcuts to a classic numpad. This is my first time using freecad and KiCAD, so appreciate your feedback. This macropad consists of 12 switches and one rotary encoder with a switch feature. It is designed with a 3d-printable body, so feel free to use whatever colors you want! Same with the rotary encoder knob. Thanks a lot guys, this mission really taught me well about CAD and PCB design. It paved the way to my current project, which you can check in my profile.", "repo": "https://github.com/dogman1214/Simhub/", "demo": ""}]...
|
[{"post_id": 43081, "ts": "202 [{"post_id": 43081, "ts": "2026-08-08T04:53:31Z", "hours": 1.0603, "text": "Just wrapping up the github information"}, {"post_id": 27037, "ts": "2026-07-12T06:25:17Z", "hours": 1.5942, "text": "Everthing is practically done! The github is set up, the demo is linked. I just have to recieve the files. Although I did encounter a big bummer… Apparently I don’t get stardust from this."}, {"post_id": 25759, "ts": "2026-07-10T06:29:01Z", "hours": 8.3925, "text": "blendering and whatnot Trying to see how to improve the example image. But I’m also building the github, along with drafting the silkscreen I’m trying to follow the guide, but improve on eveyrthing, like a better and more extensive readme and whatnot. As per the blender render, I’m taking feedback from my family to see what is too much and what to improve."}, {"post_id": 25178, "ts": "2026-07-09T07:12:30Z", "hours": 2.71, "text": "Blendering and Rendering I imported my model into blender for rendering a nice photo so that people have a good idea what I’m making. Probably will re-render with some adjustments, along with turning on denoise and then adding some artificial ISO noise. But hopefully the first ship is coming by soon!"}, {"post_id": 25033, "ts": "2026-07-08T23:37:59Z", "hours": 0.8453, "text": "just working on refining things not much up"}, {"post_id": 24488, "ts": "2026-07-08T01:54:31Z", "hours": 1.2003, "text": "FreeCAD Slop Adjusting to FreeCAD is difficult after fusion doesn’t work anymore. After long coercion I am able to create a rough sketch that I can develop further. fingers crossed, I can hopefully finish this project nice and tidy!"}, {"post_id": 20501, "ts": "2026-07-02T03:18:12Z", "hours": 2.5833, "text": "Fusion Failed… Fusion CAD software is genuinely terrible. Doesn’t work on my RTX 4080 even after multiple reinstalls. So I switched to FreeCAD. It is pretty different, but I am getting the hang of it. I have completed a lot of the CAD work for this project, so we are getting there, to the point where we are done I guess…"}, {"post_id": 18084, "ts": "2026-06-29T02:29:27Z", "hours": 2.1094, "text": "Trying to fix FUSION. I have ZERO IDEA why fusion isn’t working, just a blank screen. Tried all fixes on the web, but to no avail. Anyone here please help"}, {"post_id": 17310, "ts": "2026-06-28T01:10:19Z", "hours": 0.3333, "text": "Completed all the routing of the PCB I realized that routing is a very sketchy task, especially for someone as inexperienced in this field as me. Fortunately, I found a plugin that does the routing for you! It is called “Autorouting” Please check it out, its really a life-saver. Now onto the CAD portion of this project."}, {"post_id": 17294, "ts": "2026-06-28T00:46:10Z", "hours": 0.7681, "text": "Finished wiring the schematics. I want to use 12 keys so that in the sim-racing game, I can set views, change traction control, brake balance, and all of the intricates. I am also including one rotary encoder for things like volume control, so I can turn down the volume when my parents come by :)"}, {"post_id": 17260, "ts": "2026-06-27T23:47:46Z", "hours": 0.2506, "text": "Setting things up initially. I don’t really know how kicad works, but that’s fine. I’ll learn. The struggle right now, is importing everything. I belive I imported the libraries required, but I can’t find the symbols, which is wierd. Cheers!"}]...
|
Title: Simhub - A gaming macropad by @raghavsharma Title: Simhub - A gaming macropad by @raghavsharma1214 | Stardance
Devlogs:
Setting things up initially. I don’t really know how kicad works, but that’s fine. I’ll learn. The struggle right now, is importing everything. I belive I imported the libraries required, but I can’t find the symbols, which is wierd. Cheers!
Finished wiring the schematics. I want to use 12 keys so that in the sim-racing game, I can set views, change traction control, brake balance, and all of the intricates. I am also including one rotary encoder for things like volume control, so I can turn down the volume when my parents come by :)
Completed all the routing of the PCB I realized that routing is a very sketchy task, especially for someone as inexperienced in this field as me. Fortunately, I found a plugin that does the routing for you! It is called “Autorouting” Please check it out, its really a life-saver. Now onto the CAD portion of this project.
Trying to fix FUSION. I have ZERO IDEA why fusion isn’t working, just a blank screen. Tried all fixes on the web, but to no avail. Anyone here please help
Fusion Failed… Fusion CAD software is genuinely terrible. Doesn’t work on my RTX 4080 even after multiple reinstalls. So I switched to FreeCAD. It is pretty different, but I am getting the hang of it. I have completed a lot of the CAD work for this project, so we are getting there, to the point where we are done I guess…
FreeCAD Slop Adjusting to FreeCAD is difficult after fusion doesn’t work anymore. After long coercion I am able to create a rough sketch that I can develop further. fingers crossed, I can hopefully finish this project nice and tidy!
just working on refining things not much up
Blendering and Rendering I imported my model into blender for rendering a nice photo so that people have a good idea what I’m making. Probably will re-render with some adjustments, along with turning on denoise and then adding some artificial ISO noise. But hopefully the first ship is coming by soon!
blendering and whatnot Trying to see how to improve the example image. But I’m also building the github, along with drafting the silkscreen I’m trying to follow the guide, but improve on eveyrthing, like a better and more extensive readme and whatnot. As per the blender render, I’m taking feedback from my family to see what is too much and what to improve.
Everthing is practically done! The github is set up, the demo is linked. I just have to recieve the files. Although I did encounter a big bummer… Apparently I don’t get stardust from this.
Just wrapping up the github information
Ships:
A custom macropad, where I design a small keyboard to address all of my sim-racing needs. This is mainly a design project for now. I won’t be able to recieve the parts I got funding for (so I didn’t use the funding) before September 30th, so I’m submitting this design. This macropad stands out from other ones because clicking down on the rotary encoder toggles it from custom macro shortcuts to a classic numpad. This is my first time using freecad and KiCAD, so appreciate your feedback. This macropad consists of 12 switches and one rotary encoder with a switch feature. It is designed with a 3d-printable body, so feel free to use whatever colors you want! Same with the rotary encoder knob. Thanks a lot guys, this mission really taught me well about CAD and PCB design. It paved the way to my current project, which you can check in my profile....
|
1793120121.6663642
|
1793206521.6663642
|
|
33711
|
Voc to CSV by @aquafr0stbyte | Stardance
|
aquafr0stbyte
|
1
|
4.55
|
61
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T19:46:33Z", "hours": 4.0, "multiplier": 15.7, "payout": 61, "blessing": "neutral", "text": "It’s a simple website that can export your Vocab into an Excel file. I personally use it to digitise my stuff.", "repo": "https://github.com/AquaFrostByte/Voc/", "demo": "https://voc.lain.onl/"}]...
|
[{"post_id": 77926, "ts": "202 [{"post_id": 77926, "ts": "2026-10-08T20:11:42Z", "hours": 0.5542, "text": "Did some mew and summ prrrruuurrr (i fixed some backend stuff)"}, {"post_id": 63185, "ts": "2026-09-06T21:05:29Z", "hours": 0.8564, "text": "Added a button to copy for Google Sheets (or it should also work with other Spread Sheet software) and a reasource tab with the reasources i have used in the past to learn langueages!"}, {"post_id": 60841, "ts": "2026-09-03T13:53:19Z", "hours": 1.4639, "text": "Test version worked great. But its ugly so i changed some stuff to make it pretty!! Now we have a nice Wallpaper some Glass effects and now you can also import .csv files so you can add to a list :3"}, {"post_id": 60465, "ts": "2026-09-02T20:03:31Z", "hours": 1.5864, "text": "Whoa i started this project becuase i have to do Vocab tests in the 11th grade 😭 So here i am sitting around and uploading all my Vocab so i can processes easyer for anki or NoteBookLLM! This is the First quick wip up of the side. Took about 2~ hours."}]...
|
Title: Voc to CSV by @aquafr0stbyte | Stardance
D Title: Voc to CSV by @aquafr0stbyte | Stardance
Devlogs:
Whoa i started this project becuase i have to do Vocab tests in the 11th grade 😭 So here i am sitting around and uploading all my Vocab so i can processes easyer for anki or NoteBookLLM! This is the First quick wip up of the side. Took about 2~ hours.
Test version worked great. But its ugly so i changed some stuff to make it pretty!! Now we have a nice Wallpaper some Glass effects and now you can also import .csv files so you can add to a list :3
Added a button to copy for Google Sheets (or it should also work with other Spread Sheet software) and a reasource tab with the reasources i have used in the past to learn langueages!
Did some mew and summ prrrruuurrr (i fixed some backend stuff)
Ships:
It’s a simple website that can export your Vocab into an Excel file. I personally use it to digitise my stuff....
|
1793141744.647963
|
1793228144.647963
|
|
26452
|
Orbital by @Mehmet | Stardance
|
Mehmet
|
2
|
32.0
|
390
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T19:39:02Z", "hours": 17.0, "multiplier": 12.19, "payout": 201, "blessing": "neutral", "text": "I built Orbital, the all-in-one project that encompasses whatever you need from a 2D astronomical simulator. When first loading it up, a window titled “Orbital” pops up, and you will see a star right at the center. You can change the window dimensions however you would like, whether fullscreen or resized small. This is where the fun starts: I spent tireless hours implementing a slingshot mechanism where you can intuitively and easily launch “orbitals,” as I like to call them. You can think of these as small planets that you can send to orbit around each other and around bigger stars, masses, and objects that you create yourself. The starting star is just to get you going. Controls and Features: • Navigation: Use the WASD keys and/or arrow keys to navigate around this 2D world and find different orbits across the gigantic canvas. It does not have an end (unless you spend 10 hours of unemployment trying to find it, but I am sure you are not that stubborn). • Mass Adjustment: Use the plus (+) and minus (-) keys to change the mass of the objects you throw into the simulation. • Physics: It runs on full n-body physics; nothing is hard-coded and everything is dynamic. No matter how quirky and interesting your orbits are, they will be solely and originally yours. • Visuals: The colors change up every once in a while. I really tried to make it as minimalist and physics-identifying as possible. • Reset: Press the R key on your keyboard to reset the world and start from a fresh universe, marked by the reset star that kickstarts everything again. I am really proud of the n-body physics because it was surprisingly manageable and cool to work on. Where I really struggled was on advanced merging. Normally, if objects are touching, you can simply merge them. But when objects move super fast, one frame they are far away, and by the next frame, high velocity math teleports them right past or into the other object. If you slingshot a planet relatively fast, it could easily glitch and teleport through objects. To fix this, I had to calculate whether the path the object took from frame 0 to frame 1 intersected any other objects along its trajectory. That was an especially hard, albeit depressing challenge, but nevertheless, it was encountered and defeated so you could enjoy astronomical bliss. Thank you!", "repo": "https://github.com/SameRainbows/Starshell", "demo": "https://github.com/SameRainbows/Orbital/releases/tag/v1.0.0"}, {"ship_num": 2, "ts": "2026-07-05T15:30:25Z", "hours": 15.0, "multiplier": 12.8, "payout": 189, "blessing": "neutral", "text": "Initial Ship Update (v1.0.0) What did I make? I built Orbital , a 2D gravitational physics sandbox created entirely in Python using only standard library modules ( turtle and tkinter ). Orbits are not hardcoded; they emerge dynamically from Newton’s Law of Universal Gravitation calculated between every single body frame-by-frame. You can interactively slingshot planets into orbit, pan a camera infinitely around the universe using WASD or Arrow keys, adjust the laws of physics on the fly using a Tkinter-based HUD, and watch planets collide and merge under the conservation of momentum. What was challenging? The Coordinates Separation: Early on, a planet’s physics position was its drawing position. To build a panning camera, I had to decouple them—creating a 9-element list structure to track world coordinates privately while subtracting camera offsets only for rendering. The “Tunneling” Bug: Fast slingshotted planets would frequently phase straight through the central star between frames. I solved this by implementing Continuous Collision Detection (CCD)—using vector dot-product projection to check if the line segment traveled during a frame intersected the star. Singularity Prevention: As merging planets got infinitesimally close, the gravity force equation approached divide-by-zero, creating infinite force that would sling bodies off screen at lightspeed. I had to write custom logic to disable gravity between two bodies the exact frame they overlap. A Responsive HUD: Nesting Tkinter widgets on a Turtle ScrolledCanvas caused nesting errors. I resolved this by passing the raw screen._root as the parent, and binding the canvas <Configure> event to dynamically slide the widgets so they stay pinned to the top-right corner when resizing. What am I proud of? Conserving Density: When two bodies merge, the new object’s size is calculated using sqrt(r1² + r2²) rather than just adding the radii. This ensures area is conserved, keeping physical density mathematically consistent. Conservation of Momentum: If you launch two equal-mass planets head-on at the same speed, they will perfectly cancel out and stop dead in space upon impact, exactly as real-world physics dictates. What should people know so they can test my project? Slingshot: Click, drag, and release to fling planets into the cosmos. HUD Controls: Adjust the Gravity slider to warp orbits in real-time, and slide the Mass slider to change the size and weight of the next planet you launch. Color Picker: Click the color button to cycle the launching color (the button text dynamically updates to show what is selected). Navigation: Use WASD or Arrow keys to pan the camera around. Rebuilding: Press the Reset button to wipe the board and start a clean universe. No Python installed? Zero-dependency, standalone executables for Windows , macOS , and Linux are automatically built and attached directly to the GitHub Release!", "repo": "https://github.com/SameRainbows/Starshell", "demo": "https://github.com/SameRainbows/Orbital/releases/tag/v1.0.0"}]...
|
[{"post_id": 63802, "ts": "202 [{"post_id": 63802, "ts": "2026-09-07T19:26:27Z", "hours": 1.2872, "text": "I updated the project. I was notified that it initially crashed on macOS, and the arrow keys were a bit janky on macOS as well. All of that has been completely fixed, and I’ve updated the readme and the latest code on GitHub to encompass those changes."}, {"post_id": 38456, "ts": "2026-07-31T20:42:59Z", "hours": 0.3458, "text": "A few cleanups on the size of the grid."}, {"post_id": 37557, "ts": "2026-07-30T11:27:46Z", "hours": 0.4203, "text": "Today I changed the title card of the window that pops up. A few other updates: • I tweaked the final game feel a bit. • I made the initial spawning star spawn in a sort of light yellow color, and I also added that light yellow color to the colors list. • I made sure that the window of the simulation is also in dark mode, so you get more encapsulated in it."}, {"post_id": 37243, "ts": "2026-07-29T20:01:14Z", "hours": 0.3844, "text": "Added a background grid so that you get a sense of spatial bigness and tininess. You get a feel for how big and small your orbitals really are."}, {"post_id": 36907, "ts": "2026-07-29T09:37:56Z", "hours": 0.5981, "text": "I finally got the complex merging done. Before, when an orbital was going too fast, one frame it was at the back of another orbital, and the next frame, it was in front of it. Since its velocity was so high, the radii didn’t ever collide, so it just went through other ones without merging. That was really not acceptable, so I worked a lot on making sure it works. How I did it is actually very interesting: Get the starting position of the moving object and its ending position on the next frame. Get the coordinates of the target object you want to check for a potential merge. Draw a line from where the moving object started to where it ended, and check if the target object is intersecting that line (calculating what percentage along that line the checked object sits). If it intersects, you merge them."}, {"post_id": 34557, "ts": "2026-07-25T11:31:10Z", "hours": 1.9503, "text": "Added some instructions to make it easier, added more colors, and I’m now working on making more rigorous merge logic."}, {"post_id": 31787, "ts": "2026-07-20T13:42:17Z", "hours": 0.7153, "text": "Today I added zooming that works with scrolling up and scrolling down appropriately: when you scroll down, everything gets smaller, and when you scroll up, everything gets bigger. Mass and gravity, of course, stay the same. I made sure that the sling function (basically spawning new orbitals) works flawlessly. Our aim function—which draws that mini press-and-drag indicator to make it easier to see where you are spawning orbitals—is also working with both camera differentiation and zoom differentiation. This way, you can zoom all the way out and still spawn orbitals in the correct way, or zoom all the way in and spawn them super close up. All the physics and rendering works beautifully."}, {"post_id": 31286, "ts": "2026-07-19T15:52:23Z", "hours": 0.4508, "text": "I made some more intuitive user changes: Slingshot Dampening: Now, the slingshot isn’t like an Angry Bird slingshot that propels your particles to the other side of the universe (though you could do that if you want, just open the code). All the slingshot coordinates and values are now multiplied by 0.2. We’re nerfing it a lot, but it seems more intuitive that way. Since you don’t know it’s nerfed, you won’t notice there is a higher capacity. In our case, a higher capacity actually means friction. Don’t get me wrong: it’s not particle friction, because they go super fast. It’s friction when trying to get orbits to work. Repository Tweaks: Calling the script from_scratch.py was killing me, so I found something simpler: orbital.py. It’s much better. I updated the GitHub repository so that the current release is orbital.py (the refactored version). While main.py (the previous version) has a few more features right now, orbital.py is much cleaner. Main.py was more of a learning run, and I feel like I’m bringing my A-game with this new refactor. Look and Feel: I really liked the black background and white orbitals of the previous main.py version, so I changed the clinical-seeming style of from_scratch.py. I scrapped that look and made sure the new orbital.py has some taste."}, {"post_id": 30665, "ts": "2026-07-18T12:54:27Z", "hours": 0.4531, "text": "I fixed the “merging from hell”. The first issue was the radius calculation. When two circles merge, simply adding their radii ( r1 + r2 ) is physically wrong because the combined area grows way too fast. In reality, the area of the circles should add up: A_new = A1 + A2 . By plugging in the area formula π × r² , we get π × r_new² = (π × r1²) + (π × r2²) . The π cancels out completely, leaving r_new = math.sqrt(r1² + r2²) . I updated the collision code with this, and now the combined masses have physically accurate sizes.To make this look right, I also fixed the visual scaling issue. Previously, every particle rendered at shapesize(1, 1) regardless of its actual mass or radius. I changed the instantiator so that a body’s shapesize dynamically scales with its physics radius: self.turt.shapesize(self.radius / 10, self.radius / 10) . Now when objects collide, you can actually see the merged planet grow on the screen.Lastly, I added a quick reset button . Pressing the R key runs a function that loops through the current objects, hides all their turtles to prevent visual ghosts, clears the main objects list, resets the camera back to center coordinates, and spawns a fresh central star"}, {"post_id": 30329, "ts": "2026-07-17T20:01:25Z", "hours": 0.7283, "text": "Hey, I added merging, but it’s “merging out of hell” because I made a very unphysically true and crude (if you’d call it that), but working prototype of merge_collisions and the merge function itself. It works as I intended, but not physically truly. Right now, it adds the radii of the circles themselves. If you think about it, that’s physically wrong because there’s a big difference between adding the areas of the circles versus their radii. That’s something I want to get right, so the next time I’m working on it, I’ll make sure to fix it so that we are adding the areas of the circles rather than their radii. I also found a bit of a problem where the merged objects themselves have a shape size of (1, 1). That’s not right because if you merge two objects with shape size 1, you’d expect the new shape size to be 2. Right now, no matter how many objects you merge, it still stays at 1, resulting in a very, very dense circle. I’m going to change that so we add the areas themselves, and have that new, bigger area update the visual representation of those astronomical objects. I’ll keep you guys updated. See you next time."}, {"post_id": 29651, "ts": "2026-07-16T18:34:38Z", "hours": 2.6961, "text": "Lots of stuff today: Camera movement: I added camera movement to our new refractor. Better version of the sling: The older one just expected you to press, drag, and release without seeing much of an indicator. While that works if you know the program a bit, I think a direct, laser-esque pointer that shows you actively as you’re pressing, dragging, and releasing is more intuitive and easier to work with. So I added that. Now we have intuitive camera movement and intuitive spawning. For this refactor, we won’t have any UI. All the sliders for gravity and mass will be per keyboard or hotkey."}, {"post_id": 27197, "ts": "2026-07-12T15:21:09Z", "hours": 0.7889, "text": "Welcome! Today, I fully migrated to the object-oriented programming architecture. Earlier, the class wasn’t really full OOP; it was just a hidden list factory that appended the stuff via a class instead of doing it manually. I wanted to change that because this is going to be a refactor in an OOP perspective , and that’s what I did.I made sure that all the formulas used the latest changes:1. Earlier, they would use the index of the objects inside the objs list of lists. It would be something like object1 and the index of whichever element it wants to access, like mass , radius , velocity , or coordinates. It was very sloppy, and you had to keep up with what each index meant.2. With an OOP version, you just write object1.mass , object1.x , or object1.vx . Each and every line is more intuitive.I also worked more on the planet spawning . Remember, this is a new file with a different perspective of trying to remake this in an OOP sense, using classes and the benefits that ensue from them.Additionally, today I implemented the balancing of the canvas differences in Tkinter and Turtle :- In Turtle, the (0, 0) coordinate is directly in the middle of the screen .- In Tkinter, it’s at the absolute top left of the screen.You have to make sure that all the formulas and all the logic get the correct version, which in my project is the Turtle version . I added and worked out the logic that would make sure that balance is kept."}, {"post_id": 26600, "ts": "2026-07-11T14:59:24Z", "hours": 0.7944, "text": "Actively working on making Orbital (via the from_scratch.py file) more object-oriented. I think OOP (object-oriented programming) will be a great addition to Orbital because we have lots of stuff that can be simplified. These could be new particles, like new planets, and I think grouping everything into classes would be a better way to handle these. Right now, our sling function just does the same thing again and again. A class that could be called any time we want to make a new particle is probably the way to go. I’ll keep you guys updated."}, {"post_id": 25989, "ts": "2026-07-10T15:20:31Z", "hours": 0.7464, "text": "Today I spent all my time on from_scratch.py to really get to understand the physics of it all. Before, I just relied on a few formulas.That’s why I’m going to try and maximize my gains from this project by re-understanding all the logic and trying to write it from scratch, using only my notes and not looking at any AI or code from main.py .It’s going good! I added quite a few functions:- A distance function- A force function- An angle function (all of these take two objects, by the way — I still have the same objs list, which is a list of lists)- A velocity update function called velo_update that takes an object , a force , angle , and mass , and updates the velocities of those objects depending on their forces, angles, and massMaybe I can cut back on mass . I don’t know why I added it, since we can already get it from the objs list with our object parameter. I’ll look into that.I also created the scaffold for an update function, which is going to be the main function . I added screen.ontimer(update, 10) to run it every 10 milliseconds. It’s just the main scaffold for now, but I’m really focusing on the logic of it all."}, {"post_id": 25611, "ts": "2026-07-10T00:02:56Z", "hours": 3.3097, "text": "Hey, this is another mini devlog. I just wanted to say that while waiting for my initial ship to get reviewed, I was working on reviewing my current code and remembering how every part interacted. I’m doing this by making a from-scratch.py file where I just try to build the general project from the ground up with my direct understanding and recall of it, without looking at every line of code. This is like a mini side quest in the background so that as the file gets big, I don’t lose where I’m going. Right now, it just has the basic functions like distance and force, and has two Python turtles set to circles with different colors. I’m going to build this from the ground up and really focus on the struggle and pain through the process. I want to maximize my gains from this project this way."}, {"post_id": 23423, "ts": "2026-07-06T11:33:26Z", "hours": 0.8419, "text": "The UI was a very wretched default gray, and to be honest, it didn’t look so visually appealing. Mine still isn’t all peaches and cream, but it’s less of a distraction and more of a subtlety in the grand scheme of things. I changed this to a better, harmonizing dark charcoal color that I think goes pretty well with the minimalist design of all-white Orbitals and a pure black background."}, {"post_id": 22825, "ts": "2026-07-05T12:58:40Z", "hours": 0.5425, "text": "Hey, remember the UI I had in earlier? Well, when you change the window size, it just stays hard-coded. If you maximize your window, there’s suddenly a piece of UI that was supposed to help you navigate the simulator that’s in your way. So, I did some math so that the UI is at the perfect top right of any shape and size of the windows you make. It’s a dynamic UI layout, and it’s dynamic enough to survive window resizing. Pretty cool."}, {"post_id": 22811, "ts": "2026-07-05T12:15:42Z", "hours": 1.3161, "text": "Today I added some UI, so we have some actually good interactive elements. We can use sliders to, in real time, update our gravity. And I also added a reset button that basically lets you clean up all the messes and start from a fresh place."}, {"post_id": 22124, "ts": "2026-07-04T12:42:36Z", "hours": 2.3839, "text": "This is not a full devlog. Because I’m typing this on my phone. Came to say that I’m working on adding a minimalistic UI to the project, like small buttons and maybe sliders for mass and color control. Using tkinter, the underlying library in which turtle was built. I don’t have any screenshots with me, so enjoy this photo from my gallery, shot at the beach at night."}, {"post_id": 21435, "ts": "2026-07-03T11:55:53Z", "hours": 3.6731, "text": "Today I added merging. Now, objects that get too close to each other don’t do weird physics-breaking stuff. They intuitively merge into an object with a total mass, total area, and a new velocity depending on the previous velocities. This way, you can actually build complex systems that fall apart in at least an ordered way. There was a slight problem if the objects were going too fast: because of their speed, one frame they would be behind each other and the next frame they would be ahead of each other. I had to do some math to see if the path they took went through the object we were checking. That was a very fun, intuitive piece to work on, and merging now works very intuitively and very well."}, {"post_id": 19114, "ts": "2026-06-30T11:02:05Z", "hours": 1.3767, "text": "Added camera movement with WASD. Now, the objects that run out of your view aren’t lost forever: you can catch up to them with only your keyboard and a few fingers."}, {"post_id": 18601, "ts": "2026-06-29T19:53:31Z", "hours": 2.1206, "text": "I finally added slingshotting! Basically, the planets aren’t hidden in the code itself anymore; they are right at your fingertips. You can spawn planets just by clicking and dragging. It’s that simple. This was a feature I wanted for a very long time, and I’m really satisfied with how it turned out."}, {"post_id": 16991, "ts": "2026-06-27T15:56:02Z", "hours": 0.7453, "text": "Devlog #2 — N-Body Physics Today I implemented dynamic physics and dynamic moving. Basically, before, the move function—the function on a one-millisecond timer that updated everything—was extremely hard-coded. It just used the data of the existing two turtles (the two bodies I made myself), and it definitely wasn’t scalable. So that was what I tackled today. Now, the main function that runs our whole physics simulation is a tad bit less torturous."}, {"post_id": 16363, "ts": "2026-06-26T16:57:58Z", "hours": 2.59, "text": "I’m building Starshell, a 2D astronomical physics simulator in pure Python turtle. No game engine, no physics library—just the standard library, a turtle canvas, and physics and math. The idea in my head is quite simple: I want to simulate how gravity actually works. Bodies with mass attract each other, their paths bend, and orbits merge. Eventually, I want collisions, multi-body chaos, and a UI where you click to place stars and planets. Today’s milestone was the first orbit. To get here, I didn’t just plug in some formulas; I had to build the physics chains from a blank turtle canvas: Distance between two bodies Gravitational force: F = G × (m1 × m2) / r² Direction of that force: atan2(y, x) Force components: splitting into x and y with cos and sin Acceleration: a = F / m Velocity update: adding acceleration each frame Position update: moving the turtle by velocity each frame The orbit isn’t actually hard to code. The planet doesn’t know it’s supposed to go in a circle; I don’t tell it to trace a circle. It just responds to the pull of the star every single frame. The circle is what falls out of the math when the initial velocity is balanced just right. One of the trickiest moments was realizing my gravitational constant (G = 1) made the force so small—around 0.0004—that compared to my velocity of two units per frame, the planet just flew away in a straight line. I couldn’t see any curve at all, let alone an orbit. Cranking the gravity up to something like 1,000 to 1,600 (found by experimentation) made the orbits visible. That moment when the blue dot actually curved and came back around in a full orbit felt very satisfying. Next up, I want multiple bodies that interact with each other, not just a fixed point (aka a star). Follow Along!"}]...
|
Title: Orbital by @Mehmet | Stardance
Devlogs:
I’ Title: Orbital by @Mehmet | Stardance
Devlogs:
I’m building Starshell, a 2D astronomical physics simulator in pure Python turtle. No game engine, no physics library—just the standard library, a turtle canvas, and physics and math. The idea in my head is quite simple: I want to simulate how gravity actually works. Bodies with mass attract each other, their paths bend, and orbits merge. Eventually, I want collisions, multi-body chaos, and a UI where you click to place stars and planets. Today’s milestone was the first orbit. To get here, I didn’t just plug in some formulas; I had to build the physics chains from a blank turtle canvas: Distance between two bodies Gravitational force: F = G × (m1 × m2) / r² Direction of that force: atan2(y, x) Force components: splitting into x and y with cos and sin Acceleration: a = F / m Velocity update: adding acceleration each frame Position update: moving the turtle by velocity each frame The orbit isn’t actually hard to code. The planet doesn’t know it’s supposed to go in a circle; I don’t tell it to trace a circle. It just responds to the pull of the star every single frame. The circle is what falls out of the math when the initial velocity is balanced just right. One of the trickiest moments was realizing my gravitational constant (G = 1) made the force so small—around 0.0004—that compared to my velocity of two units per frame, the planet just flew away in a straight line. I couldn’t see any curve at all, let alone an orbit. Cranking the gravity up to something like 1,000 to 1,600 (found by experimentation) made the orbits visible. That moment when the blue dot actually curved and came back around in a full orbit felt very satisfying. Next up, I want multiple bodies that interact with each other, not just a fixed point (aka a star). Follow Along!
Devlog #2 — N-Body Physics Today I implemented dynamic physics and dynamic moving. Basically, before, the move function—the function on a one-millisecond timer that updated everything—was extremely hard-coded. It just used the data of the existing two turtles (the two bodies I made myself), and it definitely wasn’t scalable. So that was what I tackled today. Now, the main function that runs our whole physics simulation is a tad bit less torturous.
I finally added slingshotting! Basically, the planets aren’t hidden in the code itself anymore; they are right at your fingertips. You can spawn planets just by clicking and dragging. It’s that simple. This was a feature I wanted for a very long time, and I’m really satisfied with how it turned out.
Added camera movement with WASD. Now, the objects that run out of your view aren’t lost forever: you can catch up to them with only your keyboard and a few fingers.
Today I added merging. Now, objects that get too close to each other don’t do weird physics-breaking stuff. They intuitively merge into an object with a total mass, total area, and a new velocity depending on the previous velocities. This way, you can actually build complex systems that fall apart in at least an ordered way. There was a slight problem if the objects were going too fast: because of their speed, one frame they would be behind each other and the next frame they would be ahead of each other. I had to do some math to see if the path they took went through the object we were checking. That was a very fun, intuitive piece to work on, and merging now works very intuitively and very well.
This is not a full devlog. Because I’m typing this on my phone. Came to say that I’m working on adding a minimalistic UI to the project, like small buttons and maybe sliders for mass and color control. Using tkinter, the underlying library in which turtle was built. I don’t have any screenshots with me, so enjoy this photo from my gallery, shot at the beach at night.
Today I added some UI, so we have some actually good interactive elements. We can use sliders to, in real time, update our gravity. And I also added a reset button that basically lets you clean up all the messes and start from a fresh place.
Hey, remember the UI I had in earlier? Well, when you change the window size, it just stays hard-coded. If you maximize your window, there’s suddenly a piece of UI that was supposed to help you navigate the simulator that’s in your way. So, I did some math so that the UI is at the perfect top right of any shape and size of the windows you make. It’s a dynamic UI layout, and it’s dynamic enough to survive window resizing. Pretty cool.
The UI was a very wretched default gray, and to be honest, it didn’t look so visually appealing. Mine still isn’t all peaches and cream, but it’s less of a distraction and more of a subtlety in the grand scheme of things. I changed this to a better, harmonizing dark charcoal color that I think goes pretty well with the minimalist design of all-white Orbitals and a pure black background.
Hey, this is another mini devlog. I just wanted to say that while waiting for my initial ship to get reviewed, I was working on reviewing my current code and remembering how every part interacted. I’m doing this by making a from-scratch.py file where I just try to build the general project from the ground up with my direct understanding and recall of it, without looking at every line of code. This is like a mini side quest in the background so that as the file gets big, I don’t lose where I’m going. Right now, it just has the basic functions like distance and force, and has two Python turtles set to circles with different colors. I’m going to build this from the ground up and really focus on the struggle and pain through the process. I want to maximize my gains from this project this way.
Today I spent all my time on from_scratch.py to really get to understand the physics of it all. Before, I just relied on a few formulas.That’s why I’m going to try and maximize my gains from this project by re-understanding all the logic and trying to write it from scratch, using only my notes and not looking at any AI or code from main.py .It’s going good! I added quite a few functions:- A distance function- A force function- An angle function (all of these take two objects, by the way — I still have the same objs list, which is a list of lists)- A velocity update function called velo_update that takes an object , a force , angle , and mass , and updates the velocities of those objects depending on their forces, angles, and massMaybe I can cut back on mass . I don’t know why I added it, since we can already get it from the objs list with our object parameter. I’ll look into that.I also created the scaffold for an update function, which is going to be the main function . I added screen.ontimer(update, 10) to run it every 10 milliseconds. It’s just the main scaffold for now, but I’m really focusing on the logic of it all.
Actively working on making Orbital (via the from_scratch.py file) more object-oriented. I think OOP (object-oriented programming) will be a great addition to Orbital because we have lots of stuff that can be simplified. These could be new particles, like new planets, and I think grouping everything into classes would be a better way to handle these. Right now, our sling function just does the same thing again and again. A class that could be called any time we want to make a new particle is probably the way to go. I’ll keep you guys updated.
Welcome! Today, I fully migrated to the object-oriented programming architecture. Earlier, the class wasn’t really full OOP; it was just a hidden list factory that appended the stuff via a class instead of doing it manually. I wanted to change that because this is going to be a refactor in an OOP perspective , and that’s what I did.I made sure that all the formulas used the latest changes:1. Earlier, they would use the index of the objects inside the objs list of lists. It would be something like object1 and the index of whichever element it wants to access, like mass , radius , velocity , or coordinates. It was very sloppy, and you had to keep up with what each index meant.2. With an OOP version, you just write object1.mass , object1.x , or object1.vx . Each and every line is more intuitive.I also worked more on the planet spawning . Remember, this is a new file with a different perspective of trying to remake this in an OOP sense, using classes and the benefits that ensue from them.Additionally, today I implemented the balancing of the canvas differences in Tkinter and Turtle :- In Turtle, the (0, 0) coordinate is directly in the middle of the screen .- In Tkinter, it’s at the absolute top left of the screen.You have to make sure that all the formulas and all the logic get the correct version, which in my project is the Turtle version . I added and worked out the logic that would make sure that balance is kept.
Lots of stuff today: Camera movement: I added camera movement to our new refractor. Better version of the sling: The older one just expected you to press, drag, and release without seeing much of an indicator. While that works if you know the program a bit, I think a direct, laser-esque pointer that shows you actively as you’re pressing, dragging, and releasing is more intuitive and easier to work with. So I added that. Now we have intuitive camera movement and intuitive spawning. For this refactor, we won’t have any UI. All the sliders for gravity and mass will be per keyboard or hotkey.
Hey, I added merging, but it’s “merging out of hell” because I made a very unphysically true and crude (if you’d call it that), but working prototype of merge_collisions and the merge function itself. It works as I intended, but not physically truly. Right now, it adds the radii of the circles themselves. If you think about it, that’s physically wrong because there’s a big difference between adding the areas of the circles versus their radii. That’s something I want to get right, so the next time I’m working on it, I’ll make sure to fix it so that we are adding the areas of the circles rather than their radii. I also found a bit of a problem where the merged objects themselves have a shape size of (1, 1). That’s not right because if you merge two objects with shape size 1, you’d expect the new shape size to be 2. Right now, no matter how many objects you merge, it still stays at 1, resulting in a very, very dense circle. I’m going to change that so we add the areas themselves, and have that new, bigger area update the visual representation of those astronomical objects. I’ll keep you guys updated. See you next time.
I fixed the “merging from hell”. The first issue was the radius calculation. When two circles merge, simply adding their radii ( r1 + r2 ) is physically wrong because the combined area grows way too fast. In reality, the area of the circles should add up: A_new = A1 + A2 . By plugging in the area formula π × r² , we get π × r_new² = (π × r1²) + (π × r2²) . The π cancels out completely, leaving r_new = math.sqrt(r1² + r2²) . I updated the collision code with this, and now the combined masses have physically accurate sizes.To make this look right, I also fixed the visual scaling issue. Previously, every particle rendered at shapesize(1, 1) regardless of its actual mass or radius. I changed the instantiator so that a body’s shapesize dynamically scales with its physics radius: self.turt.shapesize(self.radius / 10, self.radius / 10) . Now when objects collide, you can actually see the merged planet grow on the screen.Lastly, I added a quick reset button . Pressing the R key runs a function that loops through the current objects, hides all their turtles to prevent visual ghosts, clears the main objects list, resets the camera back to center coordinates, and spawns a fresh central star
I made some more intuitive user changes: Slingshot Dampening: Now, the slingshot isn’t like an Angry Bird slingshot that propels your particles to the other side of the universe (though you could do that if you want, just open the code). All the slingshot coordinates and values are now multiplied by 0.2. We’re nerfing it a lot, but it seems more intuitive that way. Since you don’t know it’s nerfed, you won’t notice there is a higher capacity. In our case, a higher capacity actually means friction. Don’t get me wrong: it’s not particle friction, because they go super fast. It’s friction when trying to get orbits to work. Repository Tweaks: Calling the script from_scratch.py was killing me, so I found something simpler: orbital.py. It’s much better. I updated the GitHub repository so that the current release is orbital.py (the refactored version). While main.py (the previous version) has a few more features right now, orbital.py is much cleaner. Main.py was more of a learning run, and I feel like I’m bringing my A-game with this new refactor. Look and Feel: I really liked the black background and white orbitals of the previous main.py version, so I changed the clinical-seeming style of from_scratch.py. I scrapped that look and made sure the new orbital.py has some taste.
Today I added zooming that works with scrolling up and scrolling down appropriately: when you scroll down, everything gets smaller, and when you scroll up, everything gets bigger. Mass and gravity, of course, stay the same. I made sure that the sling function (basically spawning new orbitals) works flawlessly. Our aim function—which draws that mini press-and-drag indicator to make it easier to see where you are spawning orbitals—is also working with both camera differentiation and zoom differentiation. This way, you can zoom all the way out and still spawn orbitals in the correct way, or zoom all the way in and spawn them super close up. All the physics and rendering works beautifully.
Added some instructions to make it easier, added more colors, and I’m now working on making more rigorous merge logic.
I finally got the complex merging done. Before, when an orbital was going too fast, one frame it was at the back of another orbital, and the next frame, it was in front of it. Since its velocity was so high, the radii didn’t ever collide, so it just went through other ones without merging. That was really not acceptable, so I worked a lot on making sure it works. How I did it is actually very interesting: Get the starting position of the moving object and its ending position on the next frame. Get the coordinates of the target object you want to check for a potential merge. Draw a line from where the moving object started to where it ended, and check if the target object is intersecting that line (calculating what percentage along that line the checked object sits). If it intersects, you merge them.
Added a background grid so that you get a sense of spatial bigness and tininess. You get a feel for how big and small your orbitals really are.
Today I changed the title card of the window that pops up. A few other updates: • I tweaked the final game feel a bit. • I made the initial spawning star spawn in a sort of light yellow color, and I also added that light yellow color to the colors list. • I made sure that the window of the simulation is also in dark mode, so you get more encapsulated in it.
A few cleanups on the size of the grid.
I updated the project. I was notified that it initially crashed on macOS, and the arrow keys were a bit janky on macOS as well. All of that has been completely fixed, and I’ve updated the readme and the latest code on GitHub to encompass those changes.
Ships:
Initial Ship Update (v1.0.0) What did I make? I built Orbital , a 2D gravitational physics sandbox created entirely in Python using only standard library modules ( turtle and tkinter ). Orbits are not hardcoded; they emerge dynamically from Newton’s Law of Universal Gravitation calculated between every single body frame-by-frame. You can interactively slingshot planets into orbit, pan a camera infinitely around the universe using WASD or Arrow keys, adjust the laws of physics on the fly using a Tkinter-based HUD, and watch planets collide and merge under the conservation of momentum. What was challenging? The Coordinates Separation: Early on, a planet’s physics position was its drawing position. To build a panning camera, I had to decouple them—creating a 9-element list structure to track world coordinates privately while subtracting camera offsets only for rendering. The “Tunneling” Bug: Fast slingshotted planets would frequently phase straight through the central star between frames. I solved this by implementing Continuous Collision Detection (CCD)—using vector dot-product projection to check if the line segment traveled during a frame intersected the star. Singularity Prevention: As merging planets got infinitesimally close, the gravity force equation approached divide-by-zero, creating infinite force that would sling bodies off screen at lightspeed. I had to write custom logic to disable gravity between two bodies the exact frame they overlap. A Responsive HUD: Nesting Tkinter widgets on a Turtle ScrolledCanvas caused nesting errors. I resolved this by passing the raw screen._root as the parent, and binding the canvas <Configure> event to dynamically slide the widgets so they stay pinned to the top-right corner when resizing. What am I proud of? Conserving Density: When two bodies merge, the new object’s size is calculated using sqrt(r1² + r2²) rather than just adding the radii. This ensures area is conserved, keeping physical density mathematically consistent. Conservation of Momentum: If you launch two equal-mass planets head-on at the same speed, they will perfectly cancel out and stop dead in space upon impact, exactly as real-world physics dictates. What should people know so they can test my project? Slingshot: Click, drag, and release to fling planets into the cosmos. HUD Controls: Adjust the Gravity slider to warp orbits in real-time, and slide the Mass slider to change the size and weight of the next planet you launch. Color Picker: Click the color button to cycle the launching color (the button text dynamically updates to show what is selected). Navigation: Use WASD or Arrow keys to pan the camera around. Rebuilding: Press the Reset button to wipe the board and start a clean universe. No Python installed? Zero-dependency, standalone executables for Windows , macOS , and Linux are automatically built and attached directly to the GitHub Release!
I built Orbital, the all-in-one project that encompasses whatever you need from a 2D astronomical simulator. When first loading it up, a window titled “Orbital” pops up, and you will see a star right at the center. You can change the window dimensions however you would like, whether fullscreen or resized small. This is where the fun starts: I spent tireless hours implementing a slingshot mechanism where you can intuitively and easily launch “orbitals,” as I like to call them. You can think of these as small planets that you can send to orbit around each other and around bigger stars, masses, and objects that you create yourself. The starting star is just to get you going. Controls and Features: • Navigation: Use the WASD keys and/or arrow keys to navigate around this 2D world and find different orbits across the gigantic canvas. It does not have an end (unless you spend 10 hours of unemployment trying to find it, but I am sure you are not that stubborn). • Mass Adjustment: Use the plus (+) and minus (-) keys to change the mass of the objects you throw into the simulation. • Physics: It runs on full n-body physics; nothing is hard-coded and everything is dynamic. No matter how quirky and interesting your orbits are, they will be solely and originally yours. • Visuals: The colors change up every once in a while. I really tried to make it as minimalist and physics-identifying as possible. • Reset: Press the R key on your keyboard to reset the world and start from a fresh universe, marked by the reset star that kickstarts everything again. I am really proud of the n-body physics because it was surprisingly manageable and cool to work on. Where I really struggled was on advanced merging. Normally, if objects are touching, you can simply merge them. But when objects move super fast, one frame they are far away, and by the next frame, high velocity math teleports them right past or into the other object. If you slingshot a planet relatively fast, it could easily glitch and teleport through objects. To fix this, I had to calculate whether the path the object took from frame 0 to frame 1 intersected any other objects along its trajectory. That was an especially hard, albeit depressing challenge, but nevertheless, it was encountered and defeated so you could enjoy astronomical bliss. Thank you!...
|
1793116151.5804758
|
1793202551.5804758
|
|
57934
|
energy drink tracker by @Pery | Stardance
|
Pery
|
1
|
6.0
|
18
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T19:08:00Z", "hours": 6.0, "multiplier": 2.89, "payout": 18, "blessing": "neutral", "text": "DONE.", "repo": "https://github.com/davidperyro-stack/energy-drink-tracker", "demo": "https://davidperyro-stack.github.io/energy-drink-tracker/"}]...
|
[{"post_id": 63777, "ts": "202 [{"post_id": 63777, "ts": "2026-09-07T18:51:35Z", "hours": 0.5408, "text": "devlog 8# I can finally say that… the first ship is finally done! ive finally added the pictures!! now i only have the readme.md, setup github pages and im all done!"}, {"post_id": 63708, "ts": "2026-09-07T17:22:21Z", "hours": 0.4089, "text": "devlog 7# Well… i kinda broke it while im trying to add them. BUT HEY good news that ive installed everything what is need! (from all monsters to redbulls. I dont know if there are all the flavours because where i live is kinda limited of few flavours)"}, {"post_id": 63129, "ts": "2026-09-06T19:14:23Z", "hours": 1.3781, "text": "devlog 6# FINALLY THIS IS OVER!!!!!!!!!! ive finally finished the major update (well 90% cuz i need to put the pictures of the cans there). with a little help with claude, THIS IS OVER!!!!!!!"}, {"post_id": 62872, "ts": "2026-09-06T12:20:29Z", "hours": 1.0986, "text": "devlog 5# Soooooooo major update incoming, ive removed the selection list and the new idea will come alive soon! before it was just a list with no pictures, now there will be a popout with all the drinks with a photo of them (check out my artistic drawing to know what im talking about)"}, {"post_id": 61831, "ts": "2026-09-04T22:48:43Z", "hours": 1.3536, "text": "devlog 4# NEW UPDATE Finally decided what color pallate should i use. i had choices from green with grayish colors, simple gray and black and purple with violet and more purple related colors. I think i have problems with violet and purple, BUT WHATEVER. also finally designed the site and made it be compatible with phone too, added EVERY FLAVOUR OF MONSTER AND REDBULL FROM THE ENTIRE EXISTING (please tell me what brand should i add next). LETS NOT FORGET THE MESSAGES BASED ON HOW MUCH CAFFEINE YOU HAD IN TODAY SECTION. (i wont spoiler,either you see on repo or wait until the project is shipped) You might think that the project is finally done. WRONG . i still have to process with what ideas should i do next BUT im thinking in the place where you select the drink you had, it should have info about it and a picture of it, something like this but i hope i can do it, most importanly is the picture one rather than the info about the drink cuz the caffeine amount is enough. (Edit) Forgot to mention that ive used Claude to make a list of every flavour and how much caffeine it has. STAY TUNED FOR MORE UPDATES, BE SURE TO FOLLOW TO PROJECT IF YOU WANT 54000 YEARS OF LUCK"}, {"post_id": 61457, "ts": "2026-09-04T11:57:46Z", "hours": 0.4817, "text": "devlog 3# New stuff here, ive added a button that deletes the drink in the list!"}, {"post_id": 61393, "ts": "2026-09-04T08:58:26Z", "hours": 0.6247, "text": "devlog 2# CAME BACK WITH A NEW UPDATE! Ive removed the stuff from what ive did in devlog 1# because it was stupid. BUT NEW STUFF right now it has a list with monsters and redbulls, what im thinking right now is, YOU (yes you AND YOU if you see this say in the comments what energy drink and the flavour that i should add. YES I WILL USE FORCE IF YOU DONT SAY.) lets leave the jokes apart (or am i not joking ) and focus on project. ive added a list where it has almost every monster flavour and redbulls and right now we have a working counter along side with caffeine in total!"}, {"post_id": 61104, "ts": "2026-09-03T20:33:02Z", "hours": 0.2967, "text": "devlog 1# Im making a energy drink counter. right now it looks like this BUT. in future i will try to add: Choose what energy drink you had (monster strawberry cloud dream, ultra white, etc.) Automatically adds how much caffeine did that energy drink had BEAUTIFUL DESIGN (of course) and counts in total how much energy drink/caffeine you had in a day, a week,a month and in total (in total i mean like since you started tracking it on this site) maybe some messages depending how much caffeine you had in a day (of course some funny stuff cuz, you know im funny? Or am i ) STAY TUNED FOR MORE UPDATES THIS PROJECT WILL BE PERFECT, BETTER THAN PEOPLE WHO MADE AIRFRYIERS (no offense for airfryiers users and creators)"}]...
|
Title: energy drink tracker by @Pery | Stardance
Title: energy drink tracker by @Pery | Stardance
Devlogs:
devlog 1# Im making a energy drink counter. right now it looks like this BUT. in future i will try to add: Choose what energy drink you had (monster strawberry cloud dream, ultra white, etc.) Automatically adds how much caffeine did that energy drink had BEAUTIFUL DESIGN (of course) and counts in total how much energy drink/caffeine you had in a day, a week,a month and in total (in total i mean like since you started tracking it on this site) maybe some messages depending how much caffeine you had in a day (of course some funny stuff cuz, you know im funny? Or am i ) STAY TUNED FOR MORE UPDATES THIS PROJECT WILL BE PERFECT, BETTER THAN PEOPLE WHO MADE AIRFRYIERS (no offense for airfryiers users and creators)
devlog 2# CAME BACK WITH A NEW UPDATE! Ive removed the stuff from what ive did in devlog 1# because it was stupid. BUT NEW STUFF right now it has a list with monsters and redbulls, what im thinking right now is, YOU (yes you AND YOU if you see this say in the comments what energy drink and the flavour that i should add. YES I WILL USE FORCE IF YOU DONT SAY.) lets leave the jokes apart (or am i not joking ) and focus on project. ive added a list where it has almost every monster flavour and redbulls and right now we have a working counter along side with caffeine in total!
devlog 3# New stuff here, ive added a button that deletes the drink in the list!
devlog 4# NEW UPDATE Finally decided what color pallate should i use. i had choices from green with grayish colors, simple gray and black and purple with violet and more purple related colors. I think i have problems with violet and purple, BUT WHATEVER. also finally designed the site and made it be compatible with phone too, added EVERY FLAVOUR OF MONSTER AND REDBULL FROM THE ENTIRE EXISTING (please tell me what brand should i add next). LETS NOT FORGET THE MESSAGES BASED ON HOW MUCH CAFFEINE YOU HAD IN TODAY SECTION. (i wont spoiler,either you see on repo or wait until the project is shipped) You might think that the project is finally done. WRONG . i still have to process with what ideas should i do next BUT im thinking in the place where you select the drink you had, it should have info about it and a picture of it, something like this but i hope i can do it, most importanly is the picture one rather than the info about the drink cuz the caffeine amount is enough. (Edit) Forgot to mention that ive used Claude to make a list of every flavour and how much caffeine it has. STAY TUNED FOR MORE UPDATES, BE SURE TO FOLLOW TO PROJECT IF YOU WANT 54000 YEARS OF LUCK
devlog 5# Soooooooo major update incoming, ive removed the selection list and the new idea will come alive soon! before it was just a list with no pictures, now there will be a popout with all the drinks with a photo of them (check out my artistic drawing to know what im talking about)
devlog 6# FINALLY THIS IS OVER!!!!!!!!!! ive finally finished the major update (well 90% cuz i need to put the pictures of the cans there). with a little help with claude, THIS IS OVER!!!!!!!
devlog 7# Well… i kinda broke it while im trying to add them. BUT HEY good news that ive installed everything what is need! (from all monsters to redbulls. I dont know if there are all the flavours because where i live is kinda limited of few flavours)
devlog 8# I can finally say that… the first ship is finally done! ive finally added the pictures!! now i only have the readme.md, setup github pages and im all done!
Ships:
DONE....
|
1793130474.6631553
|
1793216874.6631553
|
|
15796
|
blowupthenoobs' website by @blowupthenoobs | S blowupthenoobs' website by @blowupthenoobs | Stardance...
|
blowupthenoobs
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T18:48:48Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Got the main stuff laid out on the home page. Still need to integrate some stuff like the art portfolio widgets and whatnot, but that’s going to come in when my google drive clone thingy is further along in completion. Other stuff like the discord widget and nuggets of wisdom are intended to be further worked on, but it is in a good state for right now I think.", "repo": "https://github.com/blowupthenoobs/PortfolioSite", "demo": "https://blowupthenoobs.dev/"}]...
|
[{"post_id": 63382, "ts": "202 [{"post_id": 63382, "ts": "2026-09-07T05:28:55Z", "hours": 0.995, "text": "Finished the basic mockup and such with a couple working features, so I should hopefully be able to qualify for the pulse mission."}, {"post_id": 63360, "ts": "2026-09-07T04:23:56Z", "hours": 0.9889, "text": "Almost finished the mockup. Added random scrolling thing cuz I saw it in someone else’s personal site, lol (It was a thing I was thinking of putting in anyways though. Scrolling’s a nice touch for it tho.)"}, {"post_id": 63337, "ts": "2026-09-07T03:19:28Z", "hours": 1.8997, "text": "Added a music detection widget (powered by a discord-based api)"}, {"post_id": 63215, "ts": "2026-09-06T21:57:32Z", "hours": 2.135, "text": "Finally got to actually working on the main page, lol."}]...
|
Title: blowupthenoobs' website by @blowuptheno Title: blowupthenoobs' website by @blowupthenoobs | Stardance
Devlogs:
Finally got to actually working on the main page, lol.
Added a music detection widget (powered by a discord-based api)
Almost finished the mockup. Added random scrolling thing cuz I saw it in someone else’s personal site, lol (It was a thing I was thinking of putting in anyways though. Scrolling’s a nice touch for it tho.)
Finished the basic mockup and such with a couple working features, so I should hopefully be able to qualify for the pulse mission.
Ships:
Got the main stuff laid out on the home page. Still need to integrate some stuff like the art portfolio widgets and whatnot, but that’s going to come in when my google drive clone thingy is further along in completion. Other stuff like the discord widget and nuggets of wisdom are intended to be further worked on, but it is in a good state for right now I think....
|
1793148444.4276977
|
1793234844.4276977
|
|
12086
|
Hand tracker by @Selim | Stardance
|
Selim
|
2
|
17.0
|
135
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T18:45:43Z", "hours": 15.0, "multiplier": 8.87, "payout": 118, "blessing": "neutral", "text": "I finished the wiring up the servos to the pca9685 board and connected the servos to my 3d printed hand model and its so much fun to use and mess around with, this project is by far my favourite. Its officially done and there are two ways to use it: you can use the website hand tracker just to mess around with it, see the values of the fingers and its reaction speed. Googles media pipe model has issues as you move your hand closer and further from the webcam but there’s nothing I can do to fix as it’s an issue with the model, not my code. grab a pico, pca9685 board, breadboard and some wires, 3d printer/ access to a 3d printer and build the whole project, I will attach the 3d model and wiring diagram once I finish them so anyone can build it from scratch and have their own robotic hand at home!", "repo": "https://github.com/Echo-Sel/Hand-Tracker", "demo": "https://echo-sel.github.io/Hand-Tracker/"}, {"ship_num": 2, "ts": "2026-06-16T21:54:43Z", "hours": 2.0, "multiplier": 9.65, "payout": 17, "blessing": "neutral", "text": "I’ve finally reached a point with this code as to where I feel comfortable moving onto reprinting the hand and cleaning it up, for a potential final product! So far the code can: ✅ Host a website ✅ connect with the browser and host port ✅ allow for webcam access and capture ✅ track finger movements and turn them into percentages (with an overlay) ✅ turns the percentages into numbers that it can decipher ✅ turns the numbers into servo values ✅ move the servo’s within a 5ms time frame (requires external hardware) Next steps: 📥 Motor smoothing to allow for more fluid movements Excluding the code im going to start working on the pcb and adjusting the CAD for the actual hand model to allow for a better looking build. Im really excited to see this project finally come to an end!", "repo": "https://github.com/Echo-Sel/Hand-Tracker", "demo": "https://echo-sel.github.io/Hand-Tracker/"}]...
|
[{"post_id": 60803, "ts": "202 [{"post_id": 60803, "ts": "2026-09-03T12:21:38Z", "hours": 2.9067, "text": "I finally finished all of the functional design for my code and refreshed my html! the big new stuff I changed was the switch over to tiny web and it felt soooo much cleaner and easier to use and just look at. Since the I changed the main structure it took me a while to re organize everything to work with tiny web. I added logging everywhere because I kept running into issues where my could would just stop working, and I refreshed the html because the old colours annoyed me. I think i’m almost done now and i’m so excited to put everything together and test it! (P.S look how much cleaner the terminal output looks im in awe)"}, {"post_id": 26950, "ts": "2026-07-12T01:24:31Z", "hours": 11.99, "text": "This hand code has been traumatizing me for too long, ive restructured it and began adding PID tuning for the motors to turn more smooth and human-like, ive also been trying to bug fix packet loss and random noise being sent back and forth, im going to begin working on the pcb and maybe a third version of the projects CAD! im really excited to finally be finished with the code and take a step back and look at what ive made, hopefully you can all take this step back with me"}, {"post_id": 8292, "ts": "2026-06-13T19:44:41Z", "hours": 1.3464, "text": "Webpage refresh: I added Css to make the website look a lot better and aesthetically pleasing, I also added a slider to allow multiple hands to be tracked. For my next steps I want to add different texts boxes for each hand as currently it gets the percent openness from the least number, not the average."}, {"post_id": 4658, "ts": "2026-06-08T02:01:56Z", "hours": 0.7225, "text": "This was my first ‘real’ project where I work on the design and printing, electrical and programming all of the same system, and its taken me all year but it has been one of the funnest things I’ve done in forever. Ive been working on this project on and off starting last summer, and it has been such an amazing learning experience, I’ve been working on the code recently but with the star dance challenge opening, I thought it would be good to post this here as I continue work on it. What I have here is going to be mainly focused on the programming until I feel good with it, then I’ll move on to and quickly finish the pcb. Please feel free to try out the hand tracking software and provide feedback!"}]...
|
Title: Hand tracker by @Selim | Stardance
Devlogs Title: Hand tracker by @Selim | Stardance
Devlogs:
This was my first ‘real’ project where I work on the design and printing, electrical and programming all of the same system, and its taken me all year but it has been one of the funnest things I’ve done in forever. Ive been working on this project on and off starting last summer, and it has been such an amazing learning experience, I’ve been working on the code recently but with the star dance challenge opening, I thought it would be good to post this here as I continue work on it. What I have here is going to be mainly focused on the programming until I feel good with it, then I’ll move on to and quickly finish the pcb. Please feel free to try out the hand tracking software and provide feedback!
Webpage refresh: I added Css to make the website look a lot better and aesthetically pleasing, I also added a slider to allow multiple hands to be tracked. For my next steps I want to add different texts boxes for each hand as currently it gets the percent openness from the least number, not the average.
This hand code has been traumatizing me for too long, ive restructured it and began adding PID tuning for the motors to turn more smooth and human-like, ive also been trying to bug fix packet loss and random noise being sent back and forth, im going to begin working on the pcb and maybe a third version of the projects CAD! im really excited to finally be finished with the code and take a step back and look at what ive made, hopefully you can all take this step back with me
I finally finished all of the functional design for my code and refreshed my html! the big new stuff I changed was the switch over to tiny web and it felt soooo much cleaner and easier to use and just look at. Since the I changed the main structure it took me a while to re organize everything to work with tiny web. I added logging everywhere because I kept running into issues where my could would just stop working, and I refreshed the html because the old colours annoyed me. I think i’m almost done now and i’m so excited to put everything together and test it! (P.S look how much cleaner the terminal output looks im in awe)
Ships:
I’ve finally reached a point with this code as to where I feel comfortable moving onto reprinting the hand and cleaning it up, for a potential final product! So far the code can: ✅ Host a website ✅ connect with the browser and host port ✅ allow for webcam access and capture ✅ track finger movements and turn them into percentages (with an overlay) ✅ turns the percentages into numbers that it can decipher ✅ turns the numbers into servo values ✅ move the servo’s within a 5ms time frame (requires external hardware) Next steps: 📥 Motor smoothing to allow for more fluid movements Excluding the code im going to start working on the pcb and adjusting the CAD for the actual hand model to allow for a better looking build. Im really excited to see this project finally come to an end!
I finished the wiring up the servos to the pca9685 board and connected the servos to my 3d printed hand model and its so much fun to use and mess around with, this project is by far my favourite. Its officially done and there are two ways to use it: you can use the website hand tracker just to mess around with it, see the values of the fingers and its reaction speed. Googles media pipe model has issues as you move your hand closer and further from the webcam but there’s nothing I can do to fix as it’s an issue with the model, not my code. grab a pico, pca9685 board, breadboard and some wires, 3d printer/ access to a 3d printer and build the whole project, I will attach the 3d model and wiring diagram once I finish them so anyone can build it from scratch and have their own robotic hand at home!...
|
1793098043.6039329
|
1793184443.6039329
|
|
59519
|
SHILPIN ARM CONTROLLER by @Sparsh01 | Stardance
|
Sparsh01
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T18:36:32Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "a python file which control the robotic arm in blender i have used pyserial library to connect python in blender also added arduino ide file to see arm is working or not used claude to find bugs make the movement smooth and convert whole file in .zip file", "repo": "https://github.com/Sparsh230/Shilpin-Robotic-Arm", "demo": "https://drive.google.com/file/d/13zbtRFRpEtjRWoOhVLJjb8KEwAN-hVRs/view?usp=sharing"}]...
|
[{"post_id": 63738, "ts": "202 [{"post_id": 63738, "ts": "2026-09-07T18:06:28Z", "hours": 0.3767, "text": "1st devlog- finnaly wrote the code and the programm is working succesfully on blender after many hours it is workinggg"}]...
|
Title: SHILPIN ARM CONTROLLER by @Sparsh01 | Stard Title: SHILPIN ARM CONTROLLER by @Sparsh01 | Stardance
Devlogs:
1st devlog- finnaly wrote the code and the programm is working succesfully on blender after many hours it is workinggg
Ships:
a python file which control the robotic arm in blender i have used pyserial library to connect python in blender also added arduino ide file to see arm is working or not used claude to find bugs make the movement smooth and convert whole file in .zip file...
|
1793137746.2992415
|
1793224146.2992415
|
|
47939
|
Arjun's Asset Hub by @ar-bh | Stardance
|
ar-bh
|
2
|
43.0
|
629
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T18:07:54Z", "hours": 14.0, "multiplier": 6.56, "payout": 93, "blessing": "neutral", "text": "Arjun’s Asset Hub!! v2.0 — Bigger Store Updates and Quality-of-Life Improvements I’m Arjun, and I’m 14 years old! 👋 Hi everybody! I love game development and animation, so I created a free asset website for myself and other creators like me. 3D Godot 4 Advanced Physics Simulator — A first-person playground where you can grab, throw, push, and destroy physics objects. 🧱 Basic FPS Controller — A beginner-friendly controller with walking, sprinting, jumping, mouse look, and a graybox map. 3D Platformer — A Mario-inspired controller with animated movement, jumping, and an orbital camera. Marble Run Controller — A physics-based marble that rolls around different courses. 3D Bear Controller — An animated bear that can walk and run around a colorful 3D map. 🐻 2D Godot 4 Basic 2D Platformer — A beginner-friendly pixel platformer with sprinting, coyote time, animations, and a Kenney playground. 🕹️ LEGO Blender 🧱 LEGO Arjun — A private LEGO version of me wearing my purple hoodie. LEGO Crying Castle Crasher — An unofficial LEGO-style Blue Knight with rendered scenes and a downloadable Blender file. LEGO Crying Guy — A custom green LEGO character originally created for one of my games. LEGO Person — Another custom character that is still being developed. Fonts Augie Pixel — The downloadable pixel font created by Augie that is used throughout this website. What’s new in v2.0? New 2D and 3D projects Search bars 🔎 Featured stars and orange glows 🌟 Automatic GitHub ZIP downloads Copyable Git clone commands Videos and screenshot galleries 🎥 Better phone and Chromebook scaling Lots of overlap and layout fixes I also recorded demonstration videos, created screenshots, wrote documentation, tested downloads, and published separate open-source repositories. My Basic FPS Controller was accepted onto the official Godot Asset Library ! 🎉 super cool :) I’ve been working all summer for my first gaming console—an XBOX! This is my second and final Asset Hub ship for Stardance, so please try the website and leave an honest review! If everyone gives this an honest review, I’ll have more than enough for the big box! Thank you all SO MUCH for the support!! ❤️", "repo": "https://github.com/ar-bh/arjuns-asset-hub", "demo": "https://ar-bh.github.io/arjuns-asset-hub/"}, {"ship_num": 2, "ts": "2026-08-28T17:15:48Z", "hours": 29.0, "multiplier": 17.64, "payout": 536, "blessing": "neutral", "text": "Arjun’s Asset Hub!! hi everybody, I’m Arjun, I’m 14 years old, and this is my project. I have a deep passion for game-dev and animation so I decided to make this website as a tool for myself, and other people like me too! godot 4 I always make my games in Godot so for my asset store, I added a category called Godot 4 (obviously :) ) So far, this has Simple 3D FPS Controller Mario-like 3D Platformer Marble Run controller and much more to come! i don’t really want to go that in-depth for the lego one because as of right now, it only has 1 asset that is only for me :( but I will be adding more soon!! guys, I’ve been working the entire summer for my first gaming console, an XBOX , and school is starting soon so this is my last ship! if everyone gives this a good review, then I’ll be set! please give me a good review so I can get an xbox, but don’t forget feedback as well! thank you guys SO MUCH for the support!!", "repo": "https://github.com/ar-bh/arjuns-asset-hub", "demo": "https://ar-bh.github.io/arjuns-asset-hub/"}]...
|
[{"post_id": 63734, "ts": "202 [{"post_id": 63734, "ts": "2026-09-07T18:00:28Z", "hours": 0.3167, "text": "if you are a ship reviewer, please give me a good review so I can get an xbox actual devlog below though mostly just updated the readme, before it was only for the previous ship. it had no where as much information and was only suitable for when there were only 2 3d projects and 2 categories. now there are 4 categories and my guess is almost 7 projects in total (averaging about 3 hours each) I really hope this will be my last devlog as in I will have enough points for the big box. One last time, thank you everybody for the support! ive had an amazing summer with this program, learned a lot, yea bye"}, {"post_id": 63716, "ts": "2026-09-07T17:30:49Z", "hours": 5.7436, "text": "SUPER COOL NEW ASSET!! 🔥 ADVANCED PHYSICS ENGINE! watch demo here its super cool it has minions and visit website here finally implemented minions! i think this is the final project of arjun’s asset hub FOR NOW so I wanted to make it huge and revolutionary (especially the video, u should watch it its super cool) so here is the list of what i did obviously made the whole asset of advanced physics simulator tbh its not really a simulator but the name fits kinda so who cares made it featured and also moved my less relevant projects like the bear 🐻 out of the featured section made a super cool demo video, linked above fixed some ui bugs here’s what you can do with this asset! throw around minions pick up and drop stuff (throw by flinging mouse and letting go) throw blocks into walls or the ground to destroy them and make them explode smash minions heads into things or fling them off the map crush minions with the big giant block move around and stuff using my first asset’s basic locomotion customize EVERYTHING toggle on/off debug mode guess that’s about it. gonna ship soon, THANKS EVERYBODY FOR THE SUPPORT!!!!!"}, {"post_id": 62278, "ts": "2026-09-05T15:57:22Z", "hours": 2.8056, "text": "brand new asset! basic 2d platformer! and more changes below these 2 hours were actually pretty fun here are the changes obviously added the new basic 2d platformer asset (made it featured too) split godot 4 category into 2D godot 4 and 3D godot 4 this will allow things to be neater and easier to find stuff for users next time added a better way to distinguish featured projects when not in the home tab by adding a star and an orange glow. you will be able to tell if a project is featured by actually looking through the assets in the store instead of visiting the featured projects page to do make a search thing probably make experience better for phones and weird screens like chromebooks, etc. that’s all, thanks!"}, {"post_id": 61187, "ts": "2026-09-04T00:12:02Z", "hours": 0.5772, "text": "officially added the bear 🐻 asset! this devlog mostly comprised of writing the detailed README.md like I do for all my assets it takes a while because I put a lot of effort it also includes the git commit to make it actually show on the website cool thanks!"}, {"post_id": 60523, "ts": "2026-09-02T22:21:27Z", "hours": 0.3153, "text": "think I’m done, ready to move on (sorry that previous video is corrupted)"}, {"post_id": 59201, "ts": "2026-08-31T21:10:21Z", "hours": 1.7831, "text": "bear sim is proving challenging (feedback pls 🙏) so the only problem rn is that animations are a bit hard to use. I’ve never done code for animations at this level so at least I’m learning I’m starting to think that I should have published this as its own project and maybe I shouldn’t make it under a MIT license bc of how hard I’m working. but it doesnt really matter bc either way im getting an xbox 👏 (Probably hopefully theoretically practically) – ok so yeah give me feedback tell me what you think thanks!"}, {"post_id": 59029, "ts": "2026-08-31T16:44:58Z", "hours": 1.8611, "text": "working on my next asset, a bear sim! 🐻 before I start, let me just express my gratitude. I’m only 134 stardust away from my xbox!! thank you guys so much for the good reviews and great feedback! i can nearly guarantee that I can get it now because of all of you! actual devlog now the next asset is a bear simulator its very unique imo i got a great model from sketchfab that I am so excited to implement properly so I think the end result will be really great! this is definitely going to be on the featured list if it turns out nice thanks for reading and supporting!"}, {"post_id": 56954, "ts": "2026-08-28T23:58:30Z", "hours": 0.8514, "text": "for those reviewing, pls give me a good review so I can get xbox actual devlog below though added new blender lego assets! this includes lego crying castle crasher and lego crying guy (they use the same face) both of these are projects from a while ago but it didn’t take time to add them and there’s also no harm so I just decided to add them bc y not added the website’s font! this font called augie pixel comes from Jame gam which is something you guys should do btw and is hosted by @augie . they made it themselves and I’m really gratefu that it’s free to use that’s all, pls give me good review if your rating btw 🙏"}, {"post_id": 56733, "ts": "2026-08-28T16:35:54Z", "hours": 0.2736, "text": "pre-devlog ship! wish me luck!! still a devlog though so I should probably say what I spent 15m doing love this emoji thing ok so I obviously added the readme! the readme contains: the title (obviously) the logo (obviously #2) what you can find inside this website (the Godot and Blender packs) each feature how to get an asset, basically tutorials a bit more about the actual website credits (me and I talked about how the rest are in each asset’s README) that’s it, wish me luck!"}, {"post_id": 56255, "ts": "2026-08-27T22:55:02Z", "hours": 0.3103, "text": "added the marble controller to my website! I Got lots of support from my fps one so I thought that I would try to mimic its theme and style and stuff using the graybox background. I will admit though that this is not one of my favorite projects so it is definitely not getting the featured tag (you can find the projects that are featured by scrolling down on the home page) I also found that lots of my hackatime projects are not being counted correctly so I had to add them. thanks for the support!"}, {"post_id": 56229, "ts": "2026-08-27T22:05:51Z", "hours": 1.2081, "text": "marble run! new asset for my asset library! this asset uses advanced physics using RigidBody3D i think it’s jupiter, not really sure what the marble texture is not really a fan of the quality of this project so I probably will not be submitting to asset library stay tuned though!"}, {"post_id": 56184, "ts": "2026-08-27T20:24:47Z", "hours": 1.5231, "text": "a few changes NEW CATEGORY! i made the home screen a little less boring by adding a preview of my demo videos as a playlist in the back, kinda faded out. i don’t think it looks that good so I wil probably remove it later and put something else the next category is lego blender! i started this with a lego version of me that I made a while back using mecabricks, will upload new custom self-made minifigs soon stay tuned!"}, {"post_id": 55727, "ts": "2026-08-27T18:18:34Z", "hours": 6.7719, "text": "created the 2nd project for my asest hub! simple 3d platformer you can try it now! the source code is here and the demo video is here Features orbital camera wasd movement with jump and gravity amazingly integrated gdquest model and animations have fun!"}, {"post_id": 53343, "ts": "2026-08-23T20:35:53Z", "hours": 3.2794, "text": "Working website! (prototype) so obviously, there’s the home page then theres the actual store which is like the main part of the project, and then source which is a link to the websites github and then donate which ill probably delete. so far I’ve only added godot 4 as a category and in godot 4 there is my * Basic fps controller which you can see in the last devlog websites turning out pretty good os far, I was thinking of adding animation related categories like lego models (bc I used to make lego animations so it could be fun and helpful) anyway that’s all, thanks for the support!"}, {"post_id": 53098, "ts": "2026-08-23T15:07:58Z", "hours": 7.0828, "text": "created the first project for my asset hub! It’s a basic FPS controller template for Godot 4 access it here and watch the demo video here . Enjoy!"}, {"post_id": 50387, "ts": "2026-08-19T15:35:54Z", "hours": 8.6053, "text": "created my project! and got lots of progress towards my website and my first asset!! got lots of work on the basic fps controller (look at future devlogs for more details because as of now, still in works!) started the website; I’m going for an orange theme like one of my old projects magic chainsaw because I liked how it looks i also made my logo by changing the colors of Godot logo to the colors of the blender logo so it represents the overlap between both (bc both will be present in the free store) don’t forget to smash that like button, thanks!"}]...
|
Title: Arjun's Asset Hub by @ar-bh | Stardance Title: Arjun's Asset Hub by @ar-bh | Stardance
Devlogs:
created my project! and got lots of progress towards my website and my first asset!! got lots of work on the basic fps controller (look at future devlogs for more details because as of now, still in works!) started the website; I’m going for an orange theme like one of my old projects magic chainsaw because I liked how it looks i also made my logo by changing the colors of Godot logo to the colors of the blender logo so it represents the overlap between both (bc both will be present in the free store) don’t forget to smash that like button, thanks!
created the first project for my asset hub! It’s a basic FPS controller template for Godot 4 access it here and watch the demo video here . Enjoy!
Working website! (prototype) so obviously, there’s the home page then theres the actual store which is like the main part of the project, and then source which is a link to the websites github and then donate which ill probably delete. so far I’ve only added godot 4 as a category and in godot 4 there is my * Basic fps controller which you can see in the last devlog websites turning out pretty good os far, I was thinking of adding animation related categories like lego models (bc I used to make lego animations so it could be fun and helpful) anyway that’s all, thanks for the support!
created the 2nd project for my asest hub! simple 3d platformer you can try it now! the source code is here and the demo video is here Features orbital camera wasd movement with jump and gravity amazingly integrated gdquest model and animations have fun!
a few changes NEW CATEGORY! i made the home screen a little less boring by adding a preview of my demo videos as a playlist in the back, kinda faded out. i don’t think it looks that good so I wil probably remove it later and put something else the next category is lego blender! i started this with a lego version of me that I made a while back using mecabricks, will upload new custom self-made minifigs soon stay tuned!
marble run! new asset for my asset library! this asset uses advanced physics using RigidBody3D i think it’s jupiter, not really sure what the marble texture is not really a fan of the quality of this project so I probably will not be submitting to asset library stay tuned though!
added the marble controller to my website! I Got lots of support from my fps one so I thought that I would try to mimic its theme and style and stuff using the graybox background. I will admit though that this is not one of my favorite projects so it is definitely not getting the featured tag (you can find the projects that are featured by scrolling down on the home page) I also found that lots of my hackatime projects are not being counted correctly so I had to add them. thanks for the support!
pre-devlog ship! wish me luck!! still a devlog though so I should probably say what I spent 15m doing love this emoji thing ok so I obviously added the readme! the readme contains: the title (obviously) the logo (obviously #2) what you can find inside this website (the Godot and Blender packs) each feature how to get an asset, basically tutorials a bit more about the actual website credits (me and I talked about how the rest are in each asset’s README) that’s it, wish me luck!
for those reviewing, pls give me a good review so I can get xbox actual devlog below though added new blender lego assets! this includes lego crying castle crasher and lego crying guy (they use the same face) both of these are projects from a while ago but it didn’t take time to add them and there’s also no harm so I just decided to add them bc y not added the website’s font! this font called augie pixel comes from Jame gam which is something you guys should do btw and is hosted by @augie . they made it themselves and I’m really gratefu that it’s free to use that’s all, pls give me good review if your rating btw 🙏
working on my next asset, a bear sim! 🐻 before I start, let me just express my gratitude. I’m only 134 stardust away from my xbox!! thank you guys so much for the good reviews and great feedback! i can nearly guarantee that I can get it now because of all of you! actual devlog now the next asset is a bear simulator its very unique imo i got a great model from sketchfab that I am so excited to implement properly so I think the end result will be really great! this is definitely going to be on the featured list if it turns out nice thanks for reading and supporting!
bear sim is proving challenging (feedback pls 🙏) so the only problem rn is that animations are a bit hard to use. I’ve never done code for animations at this level so at least I’m learning I’m starting to think that I should have published this as its own project and maybe I shouldn’t make it under a MIT license bc of how hard I’m working. but it doesnt really matter bc either way im getting an xbox 👏 (Probably hopefully theoretically practically) – ok so yeah give me feedback tell me what you think thanks!
think I’m done, ready to move on (sorry that previous video is corrupted)
officially added the bear 🐻 asset! this devlog mostly comprised of writing the detailed README.md like I do for all my assets it takes a while because I put a lot of effort it also includes the git commit to make it actually show on the website cool thanks!
brand new asset! basic 2d platformer! and more changes below these 2 hours were actually pretty fun here are the changes obviously added the new basic 2d platformer asset (made it featured too) split godot 4 category into 2D godot 4 and 3D godot 4 this will allow things to be neater and easier to find stuff for users next time added a better way to distinguish featured projects when not in the home tab by adding a star and an orange glow. you will be able to tell if a project is featured by actually looking through the assets in the store instead of visiting the featured projects page to do make a search thing probably make experience better for phones and weird screens like chromebooks, etc. that’s all, thanks!
SUPER COOL NEW ASSET!! 🔥 ADVANCED PHYSICS ENGINE! watch demo here its super cool it has minions and visit website here finally implemented minions! i think this is the final project of arjun’s asset hub FOR NOW so I wanted to make it huge and revolutionary (especially the video, u should watch it its super cool) so here is the list of what i did obviously made the whole asset of advanced physics simulator tbh its not really a simulator but the name fits kinda so who cares made it featured and also moved my less relevant projects like the bear 🐻 out of the featured section made a super cool demo video, linked above fixed some ui bugs here’s what you can do with this asset! throw around minions pick up and drop stuff (throw by flinging mouse and letting go) throw blocks into walls or the ground to destroy them and make them explode smash minions heads into things or fling them off the map crush minions with the big giant block move around and stuff using my first asset’s basic locomotion customize EVERYTHING toggle on/off debug mode guess that’s about it. gonna ship soon, THANKS EVERYBODY FOR THE SUPPORT!!!!!
if you are a ship reviewer, please give me a good review so I can get an xbox actual devlog below though mostly just updated the readme, before it was only for the previous ship. it had no where as much information and was only suitable for when there were only 2 3d projects and 2 categories. now there are 4 categories and my guess is almost 7 projects in total (averaging about 3 hours each) I really hope this will be my last devlog as in I will have enough points for the big box. One last time, thank you everybody for the support! ive had an amazing summer with this program, learned a lot, yea bye
Ships:
Arjun’s Asset Hub!! hi everybody, I’m Arjun, I’m 14 years old, and this is my project. I have a deep passion for game-dev and animation so I decided to make this website as a tool for myself, and other people like me too! godot 4 I always make my games in Godot so for my asset store, I added a category called Godot 4 (obviously :) ) So far, this has Simple 3D FPS Controller Mario-like 3D Platformer Marble Run controller and much more to come! i don’t really want to go that in-depth for the lego one because as of right now, it only has 1 asset that is only for me :( but I will be adding more soon!! guys, I’ve been working the entire summer for my first gaming console, an XBOX , and school is starting soon so this is my last ship! if everyone gives this a good review, then I’ll be set! please give me a good review so I can get an xbox, but don’t forget feedback as well! thank you guys SO MUCH for the support!!
Arjun’s Asset Hub!! v2.0 — Bigger Store Updates and Quality-of-Life Improvements I’m Arjun, and I’m 14 years old! 👋 Hi everybody! I love game development and animation, so I created a free asset website for myself and other creators like me. 3D Godot 4 Advanced Physics Simulator — A first-person playground where you can grab, throw, push, and destroy physics objects. 🧱 Basic FPS Controller — A beginner-friendly controller with walking, sprinting, jumping, mouse look, and a graybox map. 3D Platformer — A Mario-inspired controller with animated movement, jumping, and an orbital camera. Marble Run Controller — A physics-based marble that rolls around different courses. 3D Bear Controller — An animated bear that can walk and run around a colorful 3D map. 🐻 2D Godot 4 Basic 2D Platformer — A beginner-friendly pixel platformer with sprinting, coyote time, animations, and a Kenney playground. 🕹️ LEGO Blender 🧱 LEGO Arjun — A private LEGO version of me wearing my purple hoodie. LEGO Crying Castle Crasher — An unofficial LEGO-style Blue Knight with rendered scenes and a downloadable Blender file. LEGO Crying Guy — A custom green LEGO character originally created for one of my games. LEGO Person — Another custom character that is still being developed. Fonts Augie Pixel — The downloadable pixel font created by Augie that is used throughout this website. What’s new in v2.0? New 2D and 3D projects Search bars 🔎 Featured stars and orange glows 🌟 Automatic GitHub ZIP downloads Copyable Git clone commands Videos and screenshot galleries 🎥 Better phone and Chromebook scaling Lots of overlap and layout fixes I also recorded demonstration videos, created screenshots, wrote documentation, tested downloads, and published separate open-source repositories. My Basic FPS Controller was accepted onto the official Godot Asset Library ! 🎉 super cool :) I’ve been working all summer for my first gaming console—an XBOX! This is my second and final Asset Hub ship for Stardance, so please try the website and leave an honest review! If everyone gives this an honest review, I’ll have more than enough for the big box! Thank you all SO MUCH for the support!! ❤️...
|
1793094812.2786808
|
1793181212.2786808
|
|
43932
|
Abi vault by @jeremy | Stardance
|
jeremy
|
1
|
59.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T17:43:22Z", "hours": 59.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "AbiVault AbiVault is a finance management web app built with Next.js, TypeScript, Tailwind CSS, Supabase, and Clerk . I built it because my school needed a better way to manage the money around our Abitur. Students organize things like the Abiball, parties, fundraising, and merchandise themselves, which means we also have to keep track of income, expenses, budgets, and the current balance. AbiVault is mainly made for Abitur committees and student finance teams . It gives multiple students access to the same financial data and makes it easier to keep everything organized without relying on several spreadsheets, documents, and group chats. Features Track income and expenses Manage transactions and categories View the current balance Create and manage budgets Support multiple users View simple financial statistics Tech Stack Next.js TypeScript Tailwind CSS Supabase for the database and backend Clerk for authentication and user management The main goal is to make managing Abitur finances simpler, more organized, and more transparent for everyone involved.", "repo": "https://github.com/jeremy341/abi-vault/tree/open-source-demo", "demo": "https://abi-vault-demo.vercel.app/"}]...
|
[{"post_id": 63715, "ts": "202 [{"post_id": 63715, "ts": "2026-09-07T17:30:42Z", "hours": 2.5175, "text": "Abi Valut - Last Devlog This phase about cleaning UI elements changing the language of the whole demo website to english and fully preparing it for the offical stardance submission as the offical private one was alredy online for a good while and had near to 0 bugs. Cards This isnt a feature newly added but I just wanted to mention that our system in theory supports cards through gocardless but that isnt setup so its not usable at the moment though the backend exists and for a while even Ui existed but I have removed that. Translation This wasnt so hard just pretty time consuming going over everything and translating every single text. Refelection Pretty proud of myself as I managed to push out a full working apllication of course this isnt 100% selfcoded for example backend features but it is more then fine for what I was aiming to do and It works perfectly. Trying out here is a link to the demo for everybody wanting to try it out. https://abi-vault-demo.vercel.app/"}, {"post_id": 59073, "ts": "2026-08-31T17:57:37Z", "hours": 5.6472, "text": "Abi Vault - Devlog 10 This phase was just about creating a demo website for the stardance people. Creating One new tab and cleaning up the final UI. Finish I finished with fully creating the full application privatly and fixing all bugs Ui and backend and also created one new tab which was interseting. Stardance Demo I made a second copy of my repo removed all clerk dependecies translated all the text from german into english and setup a second Supabase and vercel project this will be used without loging which allows for everybody to use and test it. Next Steps creating the readme, cleaning up a bit and its ready for ship"}, {"post_id": 55712, "ts": "2026-08-27T18:01:07Z", "hours": 9.6378, "text": "Abi Vault - Devlog 9 This phase was mostly about moving everything from development to production, using the actual domain, finalising the system, rewriting a bit of the structure and fixing bugs. UI So I finalised the iPad UI and added multiple simple spinner animations and slide-in animations. I also worked a bit more on the blank states, what the placeholder text should say and how everything should look. Right now I am still in the process of finalising the phone UI, as the blank states fucked it up a bit. Logic I rewrote 2 large sections. As I realised in the last devlog that I couldn’t use a bank API, I needed to rewrite the logic of how the platform worked. I decided to keep the cards and make them a visual representation of the physical cash. I also decided to fully transition the system to being ledger-based, which was pretty obvious since we now don’t have an API. For anybody asking, ledger-based basically just means that the system calculates the balances and tracks how everything is performing based on the values that users manually enter. i also decided to create an invite system link so people cant just signup if they somehow find the software and it only works by getting a link from the Admin. For the Supervisor role its a 30 day link for up to 30 people and for admin its a onetime link for up to 7 days and 1 user. Domain I also decided to buy a domain, which I originally didn’t want to do as I thought Vercel was all I needed. However, Clerk required a custom domain so I could move everything from development to production. Also, for anybody asking, I will not reveal the name of the domain as this is a closed platform. That’s also why I made it as badly SEO-optimised as possible in the metadata. And for anybody wondering, this domain cost me A WHOLE $0.07 a month. Quite expensive if you ask me. Clerk Clerk was quite the hassle because, as mentioned before, my plan was to just use Vercel, but Clerk essentially forced a custom domain onto me. Another thing I didn’t know was that under my student plan I was only allowed 2 roles and wasn’t able to add another custom one. This became a bottleneck as I originally had 3 roles in mind: Student Admin Supervisor In the end I decided to scrap Admin and make it only Student and Supervisor. Supabase This part was quite simple as most of it was already finished. I mainly needed to work on the role permissions and also add a caching system because I noticed that some pages would load for 1–2 seconds every time. That’s just bad UX, especially when it happens even during a simple tab switch. The caching system now keeps already-loaded data available where possible instead of unnecessarily fetching everything again. Next Steps The next steps is now creating a demo version and a better opensoure version so people can use my software without depending on my vercel, supabase and etc. Or maybe I will host another workspace of this exact software for hackclub so people can try it what would be your advise for that?"}, {"post_id": 54706, "ts": "2026-08-25T19:36:18Z", "hours": 8.9725, "text": "Abi Vault - Devlog 8 This phase was mainly about the backend which i have to confess i had to use AI for as it was complicated with supabase clerk and just rotuing everything together. Failed bank API My plan was to allow the use of real bank cards and getting all their information through a bank API, but i missed sth important either you handle all bank apis from all providers yourself or you get a service to do it. The problem is there is no free Opensource service which allows for this and to keep it a buck iam broke asf. So i scraped the Idea and made it only ledger based which means it gets calucalted automatically but you have to write down all transactions and etc. SupaBase This was quite hard as Supabase is hella confusing prob one of the most confusing UI i have ever seen but after some back and forth with the Ai i was able to set it up though i still need to learn a bit as I really didnt undestand what i did there. Clerk this was quite easy clerk really allows for easy synchronisation and it was quite easy to set up the 3 classes admin, supervisor, and student I also made it so the software is request only for the moment so i can send a request with a certain authorisatzion and the User creates their account. But will probally change that soon Next Steps I will probally either get a domain grant or just buy it from my own money and prepare to launch the website over nest. Its nearly finished and the onlz fixes are small UI mismatches, better animation adding things like skelleton loaders and etc."}, {"post_id": 53076, "ts": "2026-08-23T14:18:51Z", "hours": 12.2586, "text": "Abi Vault - Devlog 7 This section was mainly about adding all other pages creating a fully nice looking functionial phone UI and just cleaning up the UI in general. Pages I created the rest of the pages and created place holders for them and now a whole system is in place the only thing left is writing real logic and conecting it to a server to get user auth. Phone UI This was the biggest phase of this Project i first started with scraping our already existing phone UI and started gathering references I decided to use klarna as they got quite the clean UI. I first started with adding the sidebar to the bottom to make it easier accsessible. I also needed quite A long time to make the UI look clean with adding animation for the modals and making them appear from underneath and not spawn in the middle of the screen Next Steps Now that the UI is kinda finished and school starts in 1 week the next step is creating a fully functional backend syncing the application with superbase and other services so I have a first working demo which I can continue working on during the school year."}, {"post_id": 47087, "ts": "2026-08-14T18:38:37Z", "hours": 8.9711, "text": "Abi Vault - Devlog 6 This section was mainly about cleaning up the UI, making the different pages more synchron and creating a more structured UI system for the whole website. UI System I worked on making the design more consistent across the dashboard, transactions and receipts page. Before that many aspects were styled slightly different like the spacing, typography, buttons, dropdowns and card sizes. I started creating shared rules and components so the pages follow the same visual identity and feel more connected. Transactions and Receipts I created and implemented the full transactions page with filters, a filter modal, pagination, placeholder transactions and a structured transaction table. I also created the receipts page with placeholder receipts, status filters, pagination and a modal for adding new receipts. Both pages use the existing Abi Vault sidebar, topbar, colors and general design language. Dashboard Cleanup I added more placeholder transactions to the dashboard so the transaction history feels more complete and does not leave as much empty space. I also added another spending category and adjusted the review section so the right side feels more balanced with the transaction history on the left. 1920px and 2560px A big part of this session was cleaning up the layout for both 1920px and 2560px screens. The layouts looked very different depending on the screen size because of adaptive heights and spacing. I adjusted the cards, rows, table containers and page spacing so the website stays inside the viewport and does not become scrollable on the supported resolutions. The 2560px version was especially difficult because there was a lot of empty space, but simply scaling everything up did not look good. Instead I had to create separate wide-screen adjustments, add more rows and balance the different cards while keeping the 1920px layout unchanged. Results This was a productive session but also quite difficult because many small CSS changes affected multiple pages. The UI now feels much more consistent and the Transactions and Receipts pages are much closer to the final design. I still need to refine some spacing differences between the pages and test everything more carefully, but the main structure is now in place and the beta version is getting closer. For anyone wondering about the phone UI I havent touched it in a while and decided to just create it at the end because its such a hedache"}, {"post_id": 44810, "ts": "2026-08-10T20:43:33Z", "hours": 1.1994, "text": "Abi Vault - Devlog 5 This section was mainly about refining the UI further and fixing some bugs regarding the CSS and how the website look on the phone. Dark Mode I had some bugs with the dark mode becuase as you could see in the video of the last devlog the Clerk system wasnt adjustet as i forgot it. This took quite some while to sync it to ts and css variable but with some AI it was possible. Phone UI This was hell i genuinly couldnt manage fixing the Phone UI and even then i had to change so many different things because the phone ui is just different entirely and you need to hide so many differnt aspects and even replace symbols the most challenging part was reanging the dashboard so it really fits into a phone overview and after getting stuck for 30 minutes i just decided to ask AI and let it expain what was wrong Card customisatzion modal Also worked on the card customisation model cleaning up Ui and implementing restriction like max character limits, dates that arent expired and etc Results pretty uncessful session and didnt code much by hand because it was so difficult also the progress is way to slow so iam going to pick up the pace to atleas have an beta ready at the end of august which is usable."}, {"post_id": 43510, "ts": "2026-08-08T20:33:37Z", "hours": 3.2119, "text": "Abi vault - Devlog 4 This Section was mainly about adding cool effects with Tailwind CSS and refining the UI further. I also used Figma to design the card and saved it as an SVG. Figma This was quite simple and fast. I used references from cards like the ones Klarna uses and designed the card from there. To give it a more metallic look, I used a linear gradient with three stops at a certain angle. The problem was that I worked in the Figma app instead of the browser, and the browser connection kept disconnecting and reconnecting. so i coudlnt track hackatime for it/ Cards The cards are combined with SVG and TSX. The SVG is responsible for the background, including the gradient, border, and rounded corners. The card text is rendered separately in TSX and positioned above the SVG using a layered container. This allows the account name, number, card holder, expiry date, and color to change dynamically. Visual effect The visual effects include a subtle 3D tilt that reacts to the mouse position. The code calculates the mouse position relative to the card and converts it into tilt values for the X and Y axes. These values are saved as CSS variables and used by rotateX() and rotateY() . const relativeX = ( event . clientX - bounds . left ) / bounds . width ; const relativeY = ( event . clientY - bounds . top ) / bounds . height ; const rotateX = ( 0.5 - relativeY ) * 8 ; const rotateY = ( relativeX - 0.5 ) * 8 ; event . currentTarget . style . setProperty ( \" --tilt-x \" , ` ${ rotateX } deg` ); event . currentTarget . style . setProperty ( \" --tilt-y \" , ` ${ rotateY } deg` ); When the mouse leaves, the card resets to 0deg . It also has a diagonal light-sweep animation and slightly lifts on hover. The white card uses a separate metallic gradient and darker shine. Card Logic Cards are stored in React state, and cardIndex controls which card is visible. The modals allow cards to be added, edited, or deleted. Currently, cards reset after refreshing and will later be saved in a database connected to the Clerk user or class. Results Iam pretty proud of myself of the result though I did have to use AI for how to create the Card logic so the text is interactive at first I thought about redrawing the SVG everytime as i did sth smiliar in my README but that didnt make sense, so i asked AI as for the darkmode i needed to watch some tuts and for the same for the tilt and a bit of AI for it"}, {"post_id": 42817, "ts": "2026-08-07T18:48:58Z", "hours": 0.9725, "text": "Abi vault - Devlog 3 This section was more about battling my typscript skills and cleaning up the UI minimal also added the account system easily with clerk bless clear Account system This was quite simple in theory but I had some difficulties making it compatible for both phone and desktop because they should appear in different location and I didnt really know how to do it, but iam really thankfull i choose clerk because of that I dont have to code the account system by scratch and get a easy to use account system Results Was pretty difficult but learn about utilizing hidden and tailwind css to hide certain ui elements on certain devices."}, {"post_id": 42091, "ts": "2026-08-06T17:34:38Z", "hours": 2.4622, "text": "Abi Vault - Devlog 2 Today I focused on making the login system and a simple sidebar utilizing clerk shadcn.ui and lucid react components for the icons Clerk System I integrated Clerk’s prebuilt and components and customized their appearance to match Abi Manager’s clean black-and-white design. Access to the dashboard is protected so only authenticated users can view it. Sidebar This was quite difficult because i never advanced much with my HTMl skills and still havent really done semantic html which i will continue now on free code camp, at first i thought creating it myself was the play and I did and it was difficult but with some googling and AI I managed btu I realised that I wanted to make this fully compabtible with Ai so i decided to use the one from shadcn which already comes with a mobile function. I also noticed while coding that I paster the for the buttons 8 times, so i used that moments to learn how to create reusable componenets Results Pretty good session I am still having difficulties with tailwind as it just feels weird and looks weird to design in the code but its going good"}, {"post_id": 41440, "ts": "2026-08-05T17:33:15Z", "hours": 2.9972, "text": "Abi Vault Day One in this section i did simple setup and mapped the features the app should have About I decided to build this project to finally explore modern web development. So far, I have only created simple websites without many features or animations, but I wanted to create something more modern. Since I am approaching my final years of high school in Germany, we have something called an Abi Party, for which different committees have to collect and manage money. My aim is to create a simple website to track the finances with three account levels. Admin, Commite Members and students affected. The aim is to create a Next.js tailwind website which allows for adding bank account and seeing the money history though the bank Api uploading reciepts and more. Built the Welcome Page and added clerk So i started with building the homepage and learning tailwind, tsx and next.js which was quite weird and took a good while but it wasnt that hard as its similar to html syntax with a js twist. I had difficulties with tailwind as I found myself writing a really long line but I found out you can reference tailwind and just add it in CSS without having everything in the Tsx. I also connected Clerk and set it up. The reason this took so long was because of learning all these new languages but the next post and features should be a lot faster. Next Steps Create the rough system with a tab system simple dashboard and login and signup screen when buttons pressed"}]...
|
Title: Abi vault by @jeremy | Stardance
Devlogs:
Title: Abi vault by @jeremy | Stardance
Devlogs:
Abi Vault Day One in this section i did simple setup and mapped the features the app should have About I decided to build this project to finally explore modern web development. So far, I have only created simple websites without many features or animations, but I wanted to create something more modern. Since I am approaching my final years of high school in Germany, we have something called an Abi Party, for which different committees have to collect and manage money. My aim is to create a simple website to track the finances with three account levels. Admin, Commite Members and students affected. The aim is to create a Next.js tailwind website which allows for adding bank account and seeing the money history though the bank Api uploading reciepts and more. Built the Welcome Page and added clerk So i started with building the homepage and learning tailwind, tsx and next.js which was quite weird and took a good while but it wasnt that hard as its similar to html syntax with a js twist. I had difficulties with tailwind as I found myself writing a really long line but I found out you can reference tailwind and just add it in CSS without having everything in the Tsx. I also connected Clerk and set it up. The reason this took so long was because of learning all these new languages but the next post and features should be a lot faster. Next Steps Create the rough system with a tab system simple dashboard and login and signup screen when buttons pressed
Abi Vault - Devlog 2 Today I focused on making the login system and a simple sidebar utilizing clerk shadcn.ui and lucid react components for the icons Clerk System I integrated Clerk’s prebuilt and components and customized their appearance to match Abi Manager’s clean black-and-white design. Access to the dashboard is protected so only authenticated users can view it. Sidebar This was quite difficult because i never advanced much with my HTMl skills and still havent really done semantic html which i will continue now on free code camp, at first i thought creating it myself was the play and I did and it was difficult but with some googling and AI I managed btu I realised that I wanted to make this fully compabtible with Ai so i decided to use the one from shadcn which already comes with a mobile function. I also noticed while coding that I paster the for the buttons 8 times, so i used that moments to learn how to create reusable componenets Results Pretty good session I am still having difficulties with tailwind as it just feels weird and looks weird to design in the code but its going good
Abi vault - Devlog 3 This section was more about battling my typscript skills and cleaning up the UI minimal also added the account system easily with clerk bless clear Account system This was quite simple in theory but I had some difficulties making it compatible for both phone and desktop because they should appear in different location and I didnt really know how to do it, but iam really thankfull i choose clerk because of that I dont have to code the account system by scratch and get a easy to use account system Results Was pretty difficult but learn about utilizing hidden and tailwind css to hide certain ui elements on certain devices.
Abi vault - Devlog 4 This Section was mainly about adding cool effects with Tailwind CSS and refining the UI further. I also used Figma to design the card and saved it as an SVG. Figma This was quite simple and fast. I used references from cards like the ones Klarna uses and designed the card from there. To give it a more metallic look, I used a linear gradient with three stops at a certain angle. The problem was that I worked in the Figma app instead of the browser, and the browser connection kept disconnecting and reconnecting. so i coudlnt track hackatime for it/ Cards The cards are combined with SVG and TSX. The SVG is responsible for the background, including the gradient, border, and rounded corners. The card text is rendered separately in TSX and positioned above the SVG using a layered container. This allows the account name, number, card holder, expiry date, and color to change dynamically. Visual effect The visual effects include a subtle 3D tilt that reacts to the mouse position. The code calculates the mouse position relative to the card and converts it into tilt values for the X and Y axes. These values are saved as CSS variables and used by rotateX() and rotateY() . const relativeX = ( event . clientX - bounds . left ) / bounds . width ; const relativeY = ( event . clientY - bounds . top ) / bounds . height ; const rotateX = ( 0.5 - relativeY ) * 8 ; const rotateY = ( relativeX - 0.5 ) * 8 ; event . currentTarget . style . setProperty ( " --tilt-x " , ` ${ rotateX } deg` ); event . currentTarget . style . setProperty ( " --tilt-y " , ` ${ rotateY } deg` ); When the mouse leaves, the card resets to 0deg . It also has a diagonal light-sweep animation and slightly lifts on hover. The white card uses a separate metallic gradient and darker shine. Card Logic Cards are stored in React state, and cardIndex controls which card is visible. The modals allow cards to be added, edited, or deleted. Currently, cards reset after refreshing and will later be saved in a database connected to the Clerk user or class. Results Iam pretty proud of myself of the result though I did have to use AI for how to create the Card logic so the text is interactive at first I thought about redrawing the SVG everytime as i did sth smiliar in my README but that didnt make sense, so i asked AI as for the darkmode i needed to watch some tuts and for the same for the tilt and a bit of AI for it
Abi Vault - Devlog 5 This section was mainly about refining the UI further and fixing some bugs regarding the CSS and how the website look on the phone. Dark Mode I had some bugs with the dark mode becuase as you could see in the video of the last devlog the Clerk system wasnt adjustet as i forgot it. This took quite some while to sync it to ts and css variable but with some AI it was possible. Phone UI This was hell i genuinly couldnt manage fixing the Phone UI and even then i had to change so many different things because the phone ui is just different entirely and you need to hide so many differnt aspects and even replace symbols the most challenging part was reanging the dashboard so it really fits into a phone overview and after getting stuck for 30 minutes i just decided to ask AI and let it expain what was wrong Card customisatzion modal Also worked on the card customisation model cleaning up Ui and implementing restriction like max character limits, dates that arent expired and etc Results pretty uncessful session and didnt code much by hand because it was so difficult also the progress is way to slow so iam going to pick up the pace to atleas have an beta ready at the end of august which is usable.
Abi Vault - Devlog 6 This section was mainly about cleaning up the UI, making the different pages more synchron and creating a more structured UI system for the whole website. UI System I worked on making the design more consistent across the dashboard, transactions and receipts page. Before that many aspects were styled slightly different like the spacing, typography, buttons, dropdowns and card sizes. I started creating shared rules and components so the pages follow the same visual identity and feel more connected. Transactions and Receipts I created and implemented the full transactions page with filters, a filter modal, pagination, placeholder transactions and a structured transaction table. I also created the receipts page with placeholder receipts, status filters, pagination and a modal for adding new receipts. Both pages use the existing Abi Vault sidebar, topbar, colors and general design language. Dashboard Cleanup I added more placeholder transactions to the dashboard so the transaction history feels more complete and does not leave as much empty space. I also added another spending category and adjusted the review section so the right side feels more balanced with the transaction history on the left. 1920px and 2560px A big part of this session was cleaning up the layout for both 1920px and 2560px screens. The layouts looked very different depending on the screen size because of adaptive heights and spacing. I adjusted the cards, rows, table containers and page spacing so the website stays inside the viewport and does not become scrollable on the supported resolutions. The 2560px version was especially difficult because there was a lot of empty space, but simply scaling everything up did not look good. Instead I had to create separate wide-screen adjustments, add more rows and balance the different cards while keeping the 1920px layout unchanged. Results This was a productive session but also quite difficult because many small CSS changes affected multiple pages. The UI now feels much more consistent and the Transactions and Receipts pages are much closer to the final design. I still need to refine some spacing differences between the pages and test everything more carefully, but the main structure is now in place and the beta version is getting closer. For anyone wondering about the phone UI I havent touched it in a while and decided to just create it at the end because its such a hedache
Abi Vault - Devlog 7 This section was mainly about adding all other pages creating a fully nice looking functionial phone UI and just cleaning up the UI in general. Pages I created the rest of the pages and created place holders for them and now a whole system is in place the only thing left is writing real logic and conecting it to a server to get user auth. Phone UI This was the biggest phase of this Project i first started with scraping our already existing phone UI and started gathering references I decided to use klarna as they got quite the clean UI. I first started with adding the sidebar to the bottom to make it easier accsessible. I also needed quite A long time to make the UI look clean with adding animation for the modals and making them appear from underneath and not spawn in the middle of the screen Next Steps Now that the UI is kinda finished and school starts in 1 week the next step is creating a fully functional backend syncing the application with superbase and other services so I have a first working demo which I can continue working on during the school year.
Abi Vault - Devlog 8 This phase was mainly about the backend which i have to confess i had to use AI for as it was complicated with supabase clerk and just rotuing everything together. Failed bank API My plan was to allow the use of real bank cards and getting all their information through a bank API, but i missed sth important either you handle all bank apis from all providers yourself or you get a service to do it. The problem is there is no free Opensource service which allows for this and to keep it a buck iam broke asf. So i scraped the Idea and made it only ledger based which means it gets calucalted automatically but you have to write down all transactions and etc. SupaBase This was quite hard as Supabase is hella confusing prob one of the most confusing UI i have ever seen but after some back and forth with the Ai i was able to set it up though i still need to learn a bit as I really didnt undestand what i did there. Clerk this was quite easy clerk really allows for easy synchronisation and it was quite easy to set up the 3 classes admin, supervisor, and student I also made it so the software is request only for the moment so i can send a request with a certain authorisatzion and the User creates their account. But will probally change that soon Next Steps I will probally either get a domain grant or just buy it from my own money and prepare to launch the website over nest. Its nearly finished and the onlz fixes are small UI mismatches, better animation adding things like skelleton loaders and etc.
Abi Vault - Devlog 9 This phase was mostly about moving everything from development to production, using the actual domain, finalising the system, rewriting a bit of the structure and fixing bugs. UI So I finalised the iPad UI and added multiple simple spinner animations and slide-in animations. I also worked a bit more on the blank states, what the placeholder text should say and how everything should look. Right now I am still in the process of finalising the phone UI, as the blank states fucked it up a bit. Logic I rewrote 2 large sections. As I realised in the last devlog that I couldn’t use a bank API, I needed to rewrite the logic of how the platform worked. I decided to keep the cards and make them a visual representation of the physical cash. I also decided to fully transition the system to being ledger-based, which was pretty obvious since we now don’t have an API. For anybody asking, ledger-based basically just means that the system calculates the balances and tracks how everything is performing based on the values that users manually enter. i also decided to create an invite system link so people cant just signup if they somehow find the software and it only works by getting a link from the Admin. For the Supervisor role its a 30 day link for up to 30 people and for admin its a onetime link for up to 7 days and 1 user. Domain I also decided to buy a domain, which I originally didn’t want to do as I thought Vercel was all I needed. However, Clerk required a custom domain so I could move everything from development to production. Also, for anybody asking, I will not reveal the name of the domain as this is a closed platform. That’s also why I made it as badly SEO-optimised as possible in the metadata. And for anybody wondering, this domain cost me A WHOLE $0.07 a month. Quite expensive if you ask me. Clerk Clerk was quite the hassle because, as mentioned before, my plan was to just use Vercel, but Clerk essentially forced a custom domain onto me. Another thing I didn’t know was that under my student plan I was only allowed 2 roles and wasn’t able to add another custom one. This became a bottleneck as I originally had 3 roles in mind: Student Admin Supervisor In the end I decided to scrap Admin and make it only Student and Supervisor. Supabase This part was quite simple as most of it was already finished. I mainly needed to work on the role permissions and also add a caching system because I noticed that some pages would load for 1–2 seconds every time. That’s just bad UX, especially when it happens even during a simple tab switch. The caching system now keeps already-loaded data available where possible instead of unnecessarily fetching everything again. Next Steps The next steps is now creating a demo version and a better opensoure version so people can use my software without depending on my vercel, supabase and etc. Or maybe I will host another workspace of this exact software for hackclub so people can try it what would be your advise for that?
Abi Vault - Devlog 10 This phase was just about creating a demo website for the stardance people. Creating One new tab and cleaning up the final UI. Finish I finished with fully creating the full application privatly and fixing all bugs Ui and backend and also created one new tab which was interseting. Stardance Demo I made a second copy of my repo removed all clerk dependecies translated all the text from german into english and setup a second Supabase and vercel project this will be used without loging which allows for everybody to use and test it. Next Steps creating the readme, cleaning up a bit and its ready for ship
Abi Valut - Last Devlog This phase about cleaning UI elements changing the language of the whole demo website to english and fully preparing it for the offical stardance submission as the offical private one was alredy online for a good while and had near to 0 bugs. Cards This isnt a feature newly added but I just wanted to mention that our system in theory supports cards through gocardless but that isnt setup so its not usable at the moment though the backend exists and for a while even Ui existed but I have removed that. Translation This wasnt so hard just pretty time consuming going over everything and translating every single text. Refelection Pretty proud of myself as I managed to push out a full working apllication of course this isnt 100% selfcoded for example backend features but it is more then fine for what I was aiming to do and It works perfectly. Trying out here is a link to the demo for everybody wanting to try it out. https://abi-vault-demo.vercel.app/
Ships:
AbiVault AbiVault is a finance management web app built with Next.js, TypeScript, Tailwind CSS, Supabase, and Clerk . I built it because my school needed a better way to manage the money around our Abitur. Students organize things like the Abiball, parties, fundraising, and merchandise themselves, which means we also have to keep track of income, expenses, budgets, and the current balance. AbiVault is mainly made for Abitur committees and student finance teams . It gives multiple students access to the same financial data and makes it easier to keep everything organized without relying on several spreadsheets, documents, and group chats. Features Track income and expenses Manage transactions and categories View the current balance Create and manage budgets Support multiple users View simple financial statistics Tech Stack Next.js TypeScript Tailwind CSS Supabase for the database and backend Clerk for authentication and user management The main goal is to make managing Abitur finances simpler, more organized, and more transparent for everyone involved....
|
1793148586.3698738
|
1793234986.3698738
|
|
57546
|
SilverWare by @Robert_null | Stardance
|
Robert_null
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T17:42:41Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a small, short warioware style game i called silverware, as it’s centered around food related stuff. It has: 2 minigames lose screen main menu The hardest part was making the art, I suck at drawing, tho i made all the art myself. Hope y’all like it.", "repo": "https://github.com/maksydab/Silverware", "demo": "https://maksydab.itch.io/silverware"}]...
|
[{"post_id": 62336, "ts": "202 [{"post_id": 62336, "ts": "2026-09-05T17:23:37Z", "hours": 2.1958, "text": "Game is almost finished at least the stuff that tutorial told me to do"}, {"post_id": 61569, "ts": "2026-09-04T15:30:17Z", "hours": 0.85, "text": "Changelog Added a timer like in classic warioware games Added basic background Made the visuals more pleasant games get faster every iteration, tho there’s only this dodging one for now"}, {"post_id": 61076, "ts": "2026-09-03T19:51:23Z", "hours": 3.3133, "text": "added a dodge minigame, where you have to get 3 hot dogs to feed the cat"}]...
|
Title: SilverWare by @Robert_null | Stardance
Dev Title: SilverWare by @Robert_null | Stardance
Devlogs:
added a dodge minigame, where you have to get 3 hot dogs to feed the cat
Changelog Added a timer like in classic warioware games Added basic background Made the visuals more pleasant games get faster every iteration, tho there’s only this dodging one for now
Game is almost finished at least the stuff that tutorial told me to do
Ships:
I made a small, short warioware style game i called silverware, as it’s centered around food related stuff. It has: 2 minigames lose screen main menu The hardest part was making the art, I suck at drawing, tho i made all the art myself. Hope y’all like it....
|
1793112472.8360665
|
1793198872.8360665
|
|
59497
|
Noctalia Battery Graph by @FraI3mega | Stardance
|
FraI3mega
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T17:28:15Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "The project was a a nice and (relatively) quick solution to my problem. The README link that stardance shows is wrong, the correct one is in in the plugin folder, although I it a bit lacking to fit the PR requirements. If you use Noctalia you can easily test it by adding it in the settings", "repo": "https://github.com/FraI3mega/community-plugins/tree/battery-graph/battery-graph", "demo": "https://noctalia.dev/plugins/community/battery-graph"}]...
|
[{"post_id": 63709, "ts": "202 [{"post_id": 63709, "ts": "2026-09-07T17:24:26Z", "hours": 6.79, "text": "Noctalia Battery Graph This project was originally made for Anvil, so please excuse the lack of devlogs. The plugin uses upowerd to read the historic battery charge (in a period set by the user) and then displays it with a set granularity (also given by the user)"}]...
|
Title: Noctalia Battery Graph by @FraI3mega | Star Title: Noctalia Battery Graph by @FraI3mega | Stardance
Devlogs:
Noctalia Battery Graph This project was originally made for Anvil, so please excuse the lack of devlogs. The plugin uses upowerd to read the historic battery charge (in a period set by the user) and then displays it with a set granularity (also given by the user)
Ships:
The project was a a nice and (relatively) quick solution to my problem. The README link that stardance shows is wrong, the correct one is in in the plugin folder, although I it a bit lacking to fit the PR requirements. If you use Noctalia you can easily test it by adding it in the settings...
|
1793134254.5500984
|
1793220654.5500984
|
|
55337
|
My own site! by @deadbeef404 | Stardance
|
deadbeef404
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T17:00:22Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my personal site I made. It honestly came out really good. I didn’t really expect it would turn out this good. I really like it and I also hope that you as well like it :)", "repo": "https://github.com/Loml-1989/ps-site", "demo": "https://tuxotaku.tech/"}]...
|
[{"post_id": 63675, "ts": "202 [{"post_id": 63675, "ts": "2026-09-07T16:36:20Z", "hours": 4.6356, "text": "oh I actually didn’t know that I had to do this TT Idk I’m sorry I genuinely didn’t know that I had to post logs TT"}]...
|
Title: My own site! by @deadbeef404 | Stardance
D Title: My own site! by @deadbeef404 | Stardance
Devlogs:
oh I actually didn’t know that I had to do this TT Idk I’m sorry I genuinely didn’t know that I had to post logs TT
Ships:
This is my personal site I made. It honestly came out really good. I didn’t really expect it would turn out this good. I really like it and I also hope that you as well like it :)...
|
1793145136.6542754
|
1793231536.6542754
|