|
6696
|
Unhinged delivery simulator by @dandanthepenguin | Unhinged delivery simulator by @dandanthepenguin | Stardance...
|
dandanthepenguin
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T00:30:01Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a game in godot. I am really bad at coding, but I like making games, so I used AI for the coding. The remote ip connection is untested, because I don’t have anyone to test it with but I will update it if it doesn’t work.", "repo": "https://github.com/WizardDrake/unhinged-delivery-simulator", "demo": "https://wizarddrake.github.io/unhinged-delivery-simulator/"}]...
|
[{"post_id": 16017, "ts": "202 [{"post_id": 16017, "ts": "2026-06-26T00:18:20Z", "hours": 0.3667, "text": "finished readme.md, added tons of stuff, changed theme."}, {"post_id": 11965, "ts": "2026-06-19T15:08:24Z", "hours": 0.5622, "text": "Npc cars are done. They now drive around perfectly and have no issues."}, {"post_id": 9565, "ts": "2026-06-15T22:47:41Z", "hours": 0.4606, "text": "making some basic features I made some basic features such as delivering packages, picking up packages, and some REALLY dumb npc cars that are really buggy. Things to improve for next update: working npc cars polish multiplayer?"}]...
|
Title: Unhinged delivery simulator by @dandanthepe Title: Unhinged delivery simulator by @dandanthepenguin | Stardance
Devlogs:
making some basic features I made some basic features such as delivering packages, picking up packages, and some REALLY dumb npc cars that are really buggy. Things to improve for next update: working npc cars polish multiplayer?
Npc cars are done. They now drive around perfectly and have no issues.
finished readme.md, added tons of stuff, changed theme.
Ships:
I made a game in godot. I am really bad at coding, but I like making games, so I used AI for the coding. The remote ip connection is untested, because I don’t have anyone to test it with but I will update it if it doesn’t work....
|
1793537643.545871
|
1793624043.545871
|
|
6670
|
strandbeest by @euanripper2 | Stardance
|
euanripper2
|
1
|
4.3
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-03T19:40:07Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i lost sleep trying to get the joints right - once i built it exactly mirrored", "repo": "https://github.com/hackclub/beest", "demo": "https://beest.hackclub.com"}]...
|
[{"post_id": 2593, "ts": "2026 [{"post_id": 2593, "ts": "2026-06-05T06:13:04Z", "hours": 0.3031, "text": "After making one leg and running a motion study to verify the joints constrict it to the right path, i can now copy the legs, mirror them and build a frame to hold them together. You can see the strandbeest emerging!"}, {"post_id": 1648, "ts": "2026-06-03T19:36:01Z", "hours": 3.7797, "text": "Making the model"}]...
|
Title: strandbeest by @euanripper2 | Stardance
De Title: strandbeest by @euanripper2 | Stardance
Devlogs:
Making the model
After making one leg and running a motion study to verify the joints constrict it to the right path, i can now copy the legs, mirror them and build a frame to hold them together. You can see the strandbeest emerging!
Ships:
i lost sleep trying to get the joints right - once i built it exactly mirrored...
|
1793537646.5491874
|
1793624046.5491874
|
|
30366
|
Aglang by @0xf1 | Stardance
|
0xf1
|
2
|
55.0
|
974
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-01T14:45:41Z", "hours": 26.0, "multiplier": 18.44, "payout": 473, "blessing": "neutral", "text": "hello! this is aglang, my own esoteric language made to be similar to assembly. it offers 13 operators, and with those (almost) anything is possible! you can try aglang by either downloading the cli (in the repo the “Source code” button links to) or by using the online interpreter (“Try project” button). if you’re confused and want to learn aglang, try the new interactive course, available on the website in the “learn” section: it will guide you through everything the language can do in only 10 short lessons and exercises. the cli includes an interpreter, a C transpiler and a compiler (note: the compiler needs GCC to be installed)! if you want to develop aglang programs more easily, we even have a vscode extension, with syntax highlighting and statement templates that said, go on and try aglang! its easier than you would expect", "repo": "https://github.com/0xF1dev/aglang", "demo": "https://aglang.0xf1.dev"}, {"ship_num": 2, "ts": "2026-07-15T16:48:54Z", "hours": 29.0, "multiplier": 17.01, "payout": 501, "blessing": "neutral", "text": "hello! this is Aglang , my own esoteric language. an esoteric language (or esolang) is a language made as a joke or to be hard to use , like brainf*ck. my language is made to be really basic: you only have two 8bit registers , and a stack ; there are only 18 valid characters in Aglang, easy to remember, right? in the cli, i implemented both an interpreter (works everywhere) and a compiler (only x86-64 linux); a guide on installation and usage is in its readme, but if you dont want to install it, you can try Aglang in the web interpreter. this project is split into two repositories: the cli at https://github.com/0xF1dev/aglang (main repo) the web interpreter at https://github.com/0xF1dev/aglang-website the website includes some examples and a link to both repos and the documentation. the “Try project” button is linked to the web interpreter (if the domain doesnt work, use https://aglang-website.vercel.app/ ), while the “See source code” takes to the cli’s repository. and now, go crazy and write some code!", "repo": "https://github.com/0xF1dev/aglang", "demo": "https://aglang.0xf1.dev"}]...
|
[{"post_id": 38917, "ts": "202 [{"post_id": 38917, "ts": "2026-08-01T14:43:23Z", "hours": 2.2408, "text": "NOTE FOR THE SHIP: you dont have to try everything! even just the online interpreter is fine, it includes examples! Aglang devlog #12 im ready for the ship! i completed the vscode extension, and (for the third time) I. HATE. MICROSOFT. this might sound excessive, but anyone that ever tried reading their docs can surely understand, right? right…? but finally, after like 2 hours, i made the most basic of extensions! it has syntax highlighting (the thing that i wanted most) and a simple statement templating snippet. and now, i can pretty confidently say that aglang is completed! surely i wont abandon the project, that would just be a waste of the 50 hours i spent on this, but i consider the project to be mostly finished. see ya soon!"}, {"post_id": 38820, "ts": "2026-08-01T11:53:08Z", "hours": 6.4056, "text": "Aglang devlog #11 why did i decide to do this lmao. lets go in order: first of all, i added transpiling! currently, only C is supported as target, but i plan on adding python soon. it actually wasnt that hard, especially considering i basically never wrote C in my life. but this was the least interesting part of this devlog, cause i managed to optimize the compiler a bit! now this… this was hard. but now, when printing many characters in a row (like in the hello world example), instead of printing each character one by one, the full string gets stored in the .text (or .data on windows) section of the assembly and gets printed once! this reduced the size of the hello world program from ~1kb down to 633b, almost half! needless to say that this needed a few attempts… now the project’s folder looks kinda full… but oh well! and i can AGAIN say that GOD I HATE WINDOWS: it took a while to get shadow allocations right, especially since pushing to the stack in aglang means pushing to the stack in assembly too, so i had to keep track of where the old and original pointers were before allocating it. i fully expect this optimization to have some bugs, since i dont really trust the logic i wrote. i didnt add it in the transpile feature, since i imagine that modern c compilers optimize it on their own. now i promise that ill get to writing the vscode extension!"}, {"post_id": 38186, "ts": "2026-07-31T13:34:25Z", "hours": 7.1647, "text": "Aglang devlog #10 well this took a while. so, i came to the conclusion that an lsp server is kinda overkill, so, to make up for it, i decided to make an interactive lesson system on the website, like svelte! and well i didnt expect it to take 7 hours… i have to admit, it came out pretty good! they have code challenges, too :D anyways, for the autocomplete feature, ill still make it into the vscode extension (if i dont give up on that too) oh and i added shareable code in the web interpreter!"}, {"post_id": 37137, "ts": "2026-07-29T16:56:44Z", "hours": 4.7731, "text": "Aglang devlog #9 the windows compiler is here! and i can finally say GOD I HATE WINDOWS why was it so simple in linux with just a syscall and in windows to not pull my hair out i have to link c with the executable lmao but, a wise man once said: the past is gone, think about the future… or something like that idk while i worked on that, i ended up even fixing some problems too, so thats good. and i made the cli a bit prettier too, with spinners! in the meanwhile i was looking at lsp servers too, and they look… overly complicated… yep i guess i already did enough today not gonna get into allthat! see ya tomorrow!"}, {"post_id": 36932, "ts": "2026-07-29T10:32:25Z", "hours": 2.2236, "text": "Aglang devlog #9 there now is a compare statement in aglang! i had this idea for a while, but i thought it would make the language too easy… but i ended up making it anyway! together with it, i made labels too! so if, for example, you wanted to skip a section of code if the number 2 is bigger than 1, you would write it like so: 10?1; $ compare 2 (10 in binary) and 1 (still 1 in binary) $ ^.; $ if 2 is bigger, jump to label . (labels are can only be named with dots, it would have been to easy otherwise :) ) $ (other code...) ~.; $ define label . $ (do more stuff...) and this makes the fibonacci example easier, since now, instead of using counters in the stack, you can simply check if the current number isnt 233 and go back to a previous label. i still have to implement it in the web interpreter, but i guess it shouldnt take long! next step: windows compiler! (note: will probably require mingw to be installed)"}, {"post_id": 36386, "ts": "2026-07-28T13:43:11Z", "hours": 2.83, "text": "Aglang devlog #8 the first ship is done! but before getting to the actual devlog, i want to respond to some of the best feedback i got: why spend 29 (now 32) hours on a joke?: well, you see… uhh… next question please you should see a psychiatrist: i know thanks lmao and now, back to aglang developments! the first version of aglang is finally completed! i want to thank everybody for the feedback i received, it even gave me some ideas, thanks! in these 3 hours, i improved the website, so now instead of just the compiler it even has a full homepage with downloads: this was on my checklist for a while, but first i wanted to ship a first version to get some initial thoughts. next up for this project, i have a two ideas: conditionals and labels: i want to add a way of comparing registers/stack values/literals, and jump to a label or part of the program if that condition is met; with that, aglang would basically be a basic assembly language with a few restrictions windows compiler: the thing thats missing the most in the cli is a windows compiler, and since probably there are quite a few people that use windows more than linux :| and a few other things if i have the time: a vscode extension: this could have themes and docs on the side, minor stuff (i dont think anyone will use aglang in vscode) but idk i wanted to do it an lsp server: for autocompletions, error checking, etc… it could be integrated in more ides too"}, {"post_id": 28961, "ts": "2026-07-15T16:05:27Z", "hours": 3.3708, "text": "Aglang devlog #7 whooo! the documentation is done! im officially ready to ship! i finished writing the documentation and the repo readmes, and im ready to release this into the wild! the docs are availabe in the cli’s repo, but they’re linked in the website too. this took a few days, since i was working on another personal project, but im finally back !"}, {"post_id": 26651, "ts": "2026-07-11T16:17:08Z", "hours": 7.9264, "text": "Aglang devlog #6 the web interpreter is done! after almost 1000 lines of svelte and 8 hours of boredom, im happy to announce that the js implementation of the aglang interpreter is completed! it is now available at https://aglang.0xf1.dev (the dns changes might take some time to fully propagate, so if it isnt loading, it probably will in a few hours…) it is basically a 1:1 copy of the rust code, but prettier! ahem… because of the ui, not the code… and i even designed a logo for it! in it are all the valid characters in aglang. in the meanwhile, i fixed and refactored the loop system in both the js and rust versions. the next steps are writing the docs , preparing a good readme and then i can finally ship the project! see ya then! and p.s. i havent optimized the website for mobile, but i imagine nobody uses stardance on a smartphone, right?"}, {"post_id": 23735, "ts": "2026-07-06T21:08:00Z", "hours": 6.8822, "text": "Aglang devlog #5 no yeah im officially going crazy so, after a bit, the compiler is DONE! now it spits valid x86-64 asm and even automatically compiles it to an executable with gcc! and i even managed to make a fibonacci sequence example program! (it only computes numbers up to 144 since its the highest fibonacci number in the unsigned 8bit integer limit) but to make that, i had to spend HOURS thinking about how to do it. the problem was that in Aglang, you have 2 registers and a stack, and for that fibonacci program i couldnt make it print random ascii characters, but instead the actual numbers in the decimal system: for that i tried making loops that converted a number into the digits that composed it, buuuuut you still need the 2 registers to keep the fibonacci numbers you have! i even surrendered and tried asking gemini, but it would go absolutely CRAZY: it would give really long responses and contradict itself in the code… a bit of like when you ask an ai to give you the seahorse emoji. so, the ultimate solution was to implement a “numeric value” parameter to the stdout argument. therefore, now, if you write something like 01000001>\\#; you would get the actual 65 number instead of the character ‘A’ and all the problems would go to the compiler and assembly! but i dont care now, cus its DONE!!! the next steps, i think, should be making a js interpreter, so that the language can be tried online without downloading anything, so ill work on that tomorrow…"}, {"post_id": 22847, "ts": "2026-07-05T13:48:12Z", "hours": 2.2458, "text": "Aglang devlog #4 it was the comments IT HAD ALWAYS BEEN THE COMMENTS i think im about to go crazy, cuz im trying to manually write assembly to know that the compiler should write, and trying the basic alphabet loop i couldnt get it to work, no matter what it was always printing ▒ . i tried everything, i even managed to get SATAN ITSELF to write my output (check attached image)… but finally… i tried deleting the comments i put with the original aglang line… and it worked. i found out that the stdout token in aglang (“ \\ ”, i even have to write it twice here in the post because stardance has the same problem lmao) was making nasm think that i was trying to escape the newline after the comment, thus making the next assembly line part of the comment. as you can see from the logged time it literally took over 2 hours of my life because of a single backslash."}, {"post_id": 22303, "ts": "2026-07-04T18:16:35Z", "hours": 1.4739, "text": "Aglang devlog #3 so i uhh… kinda refactored everything? i realized that to make the compiler i had 2 options: make a separate project (and repo) integrate it in the existing interpreter the latter option made more sense, because since the project is small i can just split into two commands. so, after 1.30hrs, i managed to split and reorganize the code! now to run the aglang interpreter you can run: aglang run ./main.ag the next step is building the compiler itself, but ill leave that to tomorrow. (and i think itll just support linux elf64 x86-64 architectures, sorry arm friends!) oh wait! i forgot to tell y’all why the name “Aglang”! nothing special actually, “Ag” just stands for “Ugly” lmao"}, {"post_id": 22121, "ts": "2026-07-04T12:36:09Z", "hours": 4.2497, "text": "Aglang devlog #2 the interpreter is done faster than i expected and after some issues i settled on the syntax. ive added comments (kinda hated working on them), changed the input structure a little bit (now the input gets directly stored on the stack). the next step is building a compiler to x86-64 assembly, i dont think i’ll make it for other architectures. i guess it shouldnt be that hard since the language’s features are pretty similar to how assembly works ( obvious foreshadowing ) this example outputs every uppercase letter in the alphabet: 01000001>''; $ move 65 (A char in ascii) to reg2 $ 11010>:; $ push alphabet counter (from A to Z) into stack $ [ $ loop (ends when first value in stack is 0) $ ''>\\; $ output the letter $ 1010>\\; $ newline $ ''+1; $ add 1 to the ascii value to go to the next letter $ :>'; $ move counter to reg1 $ :!; $ pop old counter $ '-1; $ remove 1 from the counter $ '>:; $ push the updated counter to the stack $ ] (the text between the $ are comments)"}, {"post_id": 21635, "ts": "2026-07-03T17:57:37Z", "hours": 3.3219, "text": "Aglang devlog #1 i’m finally building a language! Aglang is an esoteric language (like brainf*ck) with 15 possible characters (not including the 0’s and 1’s of binary literals) where you are given two 8-bit registers and a stack: their values can be moved and deleted and arithmetic operations can be done with their respective characters. i’m currently building an interpreter in Rust, but i hope once im done with that to start creating a compiler to x86-64 assembly. i’ve attached a scheme made in KDE Drawy (i changed it like 8 times already) describing the language (sorry it’s in italian and my writing sucks), an aglang snippet and the parsed output in the interpreter."}]...
|
Title: Aglang by @0xf1 | Stardance
Devlogs:
Aglan Title: Aglang by @0xf1 | Stardance
Devlogs:
Aglang devlog #1 i’m finally building a language! Aglang is an esoteric language (like brainf*ck) with 15 possible characters (not including the 0’s and 1’s of binary literals) where you are given two 8-bit registers and a stack: their values can be moved and deleted and arithmetic operations can be done with their respective characters. i’m currently building an interpreter in Rust, but i hope once im done with that to start creating a compiler to x86-64 assembly. i’ve attached a scheme made in KDE Drawy (i changed it like 8 times already) describing the language (sorry it’s in italian and my writing sucks), an aglang snippet and the parsed output in the interpreter.
Aglang devlog #2 the interpreter is done faster than i expected and after some issues i settled on the syntax. ive added comments (kinda hated working on them), changed the input structure a little bit (now the input gets directly stored on the stack). the next step is building a compiler to x86-64 assembly, i dont think i’ll make it for other architectures. i guess it shouldnt be that hard since the language’s features are pretty similar to how assembly works ( obvious foreshadowing ) this example outputs every uppercase letter in the alphabet: 01000001>''; $ move 65 (A char in ascii) to reg2 $ 11010>:; $ push alphabet counter (from A to Z) into stack $ [ $ loop (ends when first value in stack is 0) $ ''>\; $ output the letter $ 1010>\; $ newline $ ''+1; $ add 1 to the ascii value to go to the next letter $ :>'; $ move counter to reg1 $ :!; $ pop old counter $ '-1; $ remove 1 from the counter $ '>:; $ push the updated counter to the stack $ ] (the text between the $ are comments)
Aglang devlog #3 so i uhh… kinda refactored everything? i realized that to make the compiler i had 2 options: make a separate project (and repo) integrate it in the existing interpreter the latter option made more sense, because since the project is small i can just split into two commands. so, after 1.30hrs, i managed to split and reorganize the code! now to run the aglang interpreter you can run: aglang run ./main.ag the next step is building the compiler itself, but ill leave that to tomorrow. (and i think itll just support linux elf64 x86-64 architectures, sorry arm friends!) oh wait! i forgot to tell y’all why the name “Aglang”! nothing special actually, “Ag” just stands for “Ugly” lmao
Aglang devlog #4 it was the comments IT HAD ALWAYS BEEN THE COMMENTS i think im about to go crazy, cuz im trying to manually write assembly to know that the compiler should write, and trying the basic alphabet loop i couldnt get it to work, no matter what it was always printing ▒ . i tried everything, i even managed to get SATAN ITSELF to write my output (check attached image)… but finally… i tried deleting the comments i put with the original aglang line… and it worked. i found out that the stdout token in aglang (“ \ ”, i even have to write it twice here in the post because stardance has the same problem lmao) was making nasm think that i was trying to escape the newline after the comment, thus making the next assembly line part of the comment. as you can see from the logged time it literally took over 2 hours of my life because of a single backslash.
Aglang devlog #5 no yeah im officially going crazy so, after a bit, the compiler is DONE! now it spits valid x86-64 asm and even automatically compiles it to an executable with gcc! and i even managed to make a fibonacci sequence example program! (it only computes numbers up to 144 since its the highest fibonacci number in the unsigned 8bit integer limit) but to make that, i had to spend HOURS thinking about how to do it. the problem was that in Aglang, you have 2 registers and a stack, and for that fibonacci program i couldnt make it print random ascii characters, but instead the actual numbers in the decimal system: for that i tried making loops that converted a number into the digits that composed it, buuuuut you still need the 2 registers to keep the fibonacci numbers you have! i even surrendered and tried asking gemini, but it would go absolutely CRAZY: it would give really long responses and contradict itself in the code… a bit of like when you ask an ai to give you the seahorse emoji. so, the ultimate solution was to implement a “numeric value” parameter to the stdout argument. therefore, now, if you write something like 01000001>\#; you would get the actual 65 number instead of the character ‘A’ and all the problems would go to the compiler and assembly! but i dont care now, cus its DONE!!! the next steps, i think, should be making a js interpreter, so that the language can be tried online without downloading anything, so ill work on that tomorrow…
Aglang devlog #6 the web interpreter is done! after almost 1000 lines of svelte and 8 hours of boredom, im happy to announce that the js implementation of the aglang interpreter is completed! it is now available at https://aglang.0xf1.dev (the dns changes might take some time to fully propagate, so if it isnt loading, it probably will in a few hours…) it is basically a 1:1 copy of the rust code, but prettier! ahem… because of the ui, not the code… and i even designed a logo for it! in it are all the valid characters in aglang. in the meanwhile, i fixed and refactored the loop system in both the js and rust versions. the next steps are writing the docs , preparing a good readme and then i can finally ship the project! see ya then! and p.s. i havent optimized the website for mobile, but i imagine nobody uses stardance on a smartphone, right?
Aglang devlog #7 whooo! the documentation is done! im officially ready to ship! i finished writing the documentation and the repo readmes, and im ready to release this into the wild! the docs are availabe in the cli’s repo, but they’re linked in the website too. this took a few days, since i was working on another personal project, but im finally back !
Aglang devlog #8 the first ship is done! but before getting to the actual devlog, i want to respond to some of the best feedback i got: why spend 29 (now 32) hours on a joke?: well, you see… uhh… next question please you should see a psychiatrist: i know thanks lmao and now, back to aglang developments! the first version of aglang is finally completed! i want to thank everybody for the feedback i received, it even gave me some ideas, thanks! in these 3 hours, i improved the website, so now instead of just the compiler it even has a full homepage with downloads: this was on my checklist for a while, but first i wanted to ship a first version to get some initial thoughts. next up for this project, i have a two ideas: conditionals and labels: i want to add a way of comparing registers/stack values/literals, and jump to a label or part of the program if that condition is met; with that, aglang would basically be a basic assembly language with a few restrictions windows compiler: the thing thats missing the most in the cli is a windows compiler, and since probably there are quite a few people that use windows more than linux :| and a few other things if i have the time: a vscode extension: this could have themes and docs on the side, minor stuff (i dont think anyone will use aglang in vscode) but idk i wanted to do it an lsp server: for autocompletions, error checking, etc… it could be integrated in more ides too
Aglang devlog #9 there now is a compare statement in aglang! i had this idea for a while, but i thought it would make the language too easy… but i ended up making it anyway! together with it, i made labels too! so if, for example, you wanted to skip a section of code if the number 2 is bigger than 1, you would write it like so: 10?1; $ compare 2 (10 in binary) and 1 (still 1 in binary) $ ^.; $ if 2 is bigger, jump to label . (labels are can only be named with dots, it would have been to easy otherwise :) ) $ (other code...) ~.; $ define label . $ (do more stuff...) and this makes the fibonacci example easier, since now, instead of using counters in the stack, you can simply check if the current number isnt 233 and go back to a previous label. i still have to implement it in the web interpreter, but i guess it shouldnt take long! next step: windows compiler! (note: will probably require mingw to be installed)
Aglang devlog #9 the windows compiler is here! and i can finally say GOD I HATE WINDOWS why was it so simple in linux with just a syscall and in windows to not pull my hair out i have to link c with the executable lmao but, a wise man once said: the past is gone, think about the future… or something like that idk while i worked on that, i ended up even fixing some problems too, so thats good. and i made the cli a bit prettier too, with spinners! in the meanwhile i was looking at lsp servers too, and they look… overly complicated… yep i guess i already did enough today not gonna get into allthat! see ya tomorrow!
Aglang devlog #10 well this took a while. so, i came to the conclusion that an lsp server is kinda overkill, so, to make up for it, i decided to make an interactive lesson system on the website, like svelte! and well i didnt expect it to take 7 hours… i have to admit, it came out pretty good! they have code challenges, too :D anyways, for the autocomplete feature, ill still make it into the vscode extension (if i dont give up on that too) oh and i added shareable code in the web interpreter!
Aglang devlog #11 why did i decide to do this lmao. lets go in order: first of all, i added transpiling! currently, only C is supported as target, but i plan on adding python soon. it actually wasnt that hard, especially considering i basically never wrote C in my life. but this was the least interesting part of this devlog, cause i managed to optimize the compiler a bit! now this… this was hard. but now, when printing many characters in a row (like in the hello world example), instead of printing each character one by one, the full string gets stored in the .text (or .data on windows) section of the assembly and gets printed once! this reduced the size of the hello world program from ~1kb down to 633b, almost half! needless to say that this needed a few attempts… now the project’s folder looks kinda full… but oh well! and i can AGAIN say that GOD I HATE WINDOWS: it took a while to get shadow allocations right, especially since pushing to the stack in aglang means pushing to the stack in assembly too, so i had to keep track of where the old and original pointers were before allocating it. i fully expect this optimization to have some bugs, since i dont really trust the logic i wrote. i didnt add it in the transpile feature, since i imagine that modern c compilers optimize it on their own. now i promise that ill get to writing the vscode extension!
NOTE FOR THE SHIP: you dont have to try everything! even just the online interpreter is fine, it includes examples! Aglang devlog #12 im ready for the ship! i completed the vscode extension, and (for the third time) I. HATE. MICROSOFT. this might sound excessive, but anyone that ever tried reading their docs can surely understand, right? right…? but finally, after like 2 hours, i made the most basic of extensions! it has syntax highlighting (the thing that i wanted most) and a simple statement templating snippet. and now, i can pretty confidently say that aglang is completed! surely i wont abandon the project, that would just be a waste of the 50 hours i spent on this, but i consider the project to be mostly finished. see ya soon!
Ships:
hello! this is Aglang , my own esoteric language. an esoteric language (or esolang) is a language made as a joke or to be hard to use , like brainf*ck. my language is made to be really basic: you only have two 8bit registers , and a stack ; there are only 18 valid characters in Aglang, easy to remember, right? in the cli, i implemented both an interpreter (works everywhere) and a compiler (only x86-64 linux); a guide on installation and usage is in its readme, but if you dont want to install it, you can try Aglang in the web interpreter. this project is split into two repositories: the cli at https://github.com/0xF1dev/aglang (main repo) the web interpreter at https://github.com/0xF1dev/aglang-website the website includes some examples and a link to both repos and the documentation. the “Try project” button is linked to the web interpreter (if the domain doesnt work, use https://aglang-website.vercel.app/ ), while the “See source code” takes to the cli’s repository. and now, go crazy and write some code!
hello! this is aglang, my own esoteric language made to be similar to assembly. it offers 13 operators, and with those (almost) anything is possible! you can try aglang by either downloading the cli (in the repo the “Source code” button links to) or by using the online interpreter (“Try project” button). if you’re confused and want to learn aglang, try the new interactive course, available on the website in the “learn” section: it will guide you through everything the language can do in only 10 short lessons and exercises. the cli includes an interpreter, a C transpiler and a compiler (note: the compiler needs GCC to be installed)! if you want to develop aglang programs more easily, we even have a vscode extension, with syntax highlighting and statement templates that said, go on and try aglang! its easier than you would expect...
|
1793537648.7122638
|
1793624048.7122638
|
|
254
|
GitPilot-n8n: The Autonomous Open Source AI Agent GitPilot-n8n: The Autonomous Open Source AI Agent by @jawadhasan | Stardance...
|
jawadhasan
|
1
|
6.33
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T15:18:40Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a Multi-Agentic workflow that constantly monitors any issues on Github and notifies its developers. It is set up on a repository. I still don’t know how I built it. When I planned it first. it seemed so hard. and when I was building this project, I saw some errors that I never saw before and even after that I had to alter my initial plan. But it works now fortunately.", "repo": "https://github.com/Jawad2011/GitPilot-n8n-The-Autonomous-Open-Source-AI-Agent", "demo": "https://github.com/Jawad2011/Gitpilot-test-sandbox/issues"}]...
|
[{"post_id": 5384, "ts": "2026 [{"post_id": 5384, "ts": "2026-06-09T04:02:28Z", "hours": 0.3336, "text": "Made it demoable, added demo instructions and fixed some typos. Readt re reship."}, {"post_id": 3533, "ts": "2026-06-06T14:52:48Z", "hours": 0.51, "text": "Finally finished writing my README. Now, it’s time to ship my project. I don’t know if it will be good or not but I will try. Let’s see what happens."}, {"post_id": 2787, "ts": "2026-06-05T16:29:50Z", "hours": 2.4467, "text": "Hello, i don’t know but I am struggling a lot. The tool I use is n8n which is an open-source AI Automation tool. But it has many problems and especially I face more struggles because of my server being rented. Firstly, I wanted to use MCP server and built it on my own but unfortunately due to some errors and proxies on which I had no control over, i was unable to connect it. Then, I directly connected it directly my main AI Agent node."}, {"post_id": 1952, "ts": "2026-06-04T06:19:14Z", "hours": 2.5161, "text": "Hello, I worked for about 2 and a half hours trying to write a Python script to parse the data to only find out that Python isn’t installed in the n8n server. I use a student-only n8n server which charges $17 per 3 years. Python3 wasn’t installed there. So, I had to find an alternative and used a Set Node instead. And also added an AI Agent and build a MCP Server so the AI Agent can use the tools without creating a mess in the original workflow."}, {"post_id": 656, "ts": "2026-06-02T05:52:21Z", "hours": 0.4222, "text": "Built the initial phase successfully after debugging and learning that AI Model cannot take raw JSON and you have to stringify it."}]...
|
Title: GitPilot-n8n: The Autonomous Open Source AI Title: GitPilot-n8n: The Autonomous Open Source AI Agent by @jawadhasan | Stardance
Devlogs:
Built the initial phase successfully after debugging and learning that AI Model cannot take raw JSON and you have to stringify it.
Hello, I worked for about 2 and a half hours trying to write a Python script to parse the data to only find out that Python isn’t installed in the n8n server. I use a student-only n8n server which charges $17 per 3 years. Python3 wasn’t installed there. So, I had to find an alternative and used a Set Node instead. And also added an AI Agent and build a MCP Server so the AI Agent can use the tools without creating a mess in the original workflow.
Hello, i don’t know but I am struggling a lot. The tool I use is n8n which is an open-source AI Automation tool. But it has many problems and especially I face more struggles because of my server being rented. Firstly, I wanted to use MCP server and built it on my own but unfortunately due to some errors and proxies on which I had no control over, i was unable to connect it. Then, I directly connected it directly my main AI Agent node.
Finally finished writing my README. Now, it’s time to ship my project. I don’t know if it will be good or not but I will try. Let’s see what happens.
Made it demoable, added demo instructions and fixed some typos. Readt re reship.
Ships:
I built a Multi-Agentic workflow that constantly monitors any issues on Github and notifies its developers. It is set up on a repository. I still don’t know how I built it. When I planned it first. it seemed so hard. and when I was building this project, I saw some errors that I never saw before and even after that I had to alter my initial plan. But it works now fortunately....
|
1793537653.9578214
|
1793624053.9578214
|
|
39862
|
asistende holograma con ia by @jdaviddg077 | Stard asistende holograma con ia by @jdaviddg077 | Stardance...
|
jdaviddg077
|
1
|
67.42
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T01:28:11Z", "hours": 31.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "este es un prototipo del proyecto no es la parte funcional lei e investige en youtube que esto se podia hacer y mi intencion es que ustedes vean que estoy trabajando en el esta es la parte base del peroyecto tambien agrege una ia es llama 3.2 3b en un redmi note 14 para que respondiera y lo hace muy rapido tambien lo intente con una 7b pero aunque respondio se tardo mucho en si esta es una muestra del proyecto", "repo": "https://github.com/jdaviddg077/holograma-asistente-de-ia-", "demo": ""}]...
|
[{"post_id": 61940, "ts": "202 [{"post_id": 61940, "ts": "2026-09-05T03:44:40Z", "hours": 0.5672, "text": "Hi, today we were working on adding more lighting and creating some more detailed spaces."}, {"post_id": 52059, "ts": "2026-08-22T03:16:23Z", "hours": 2.4222, "text": "Hi, today we assembled the sliding system for the hologram projector’s glass; should we paint it or leave it as is?"}, {"post_id": 51404, "ts": "2026-08-21T02:42:19Z", "hours": 1.5711, "text": "Hi! Today we were working on the system to make the hologram move 360 degrees."}, {"post_id": 50720, "ts": "2026-08-20T01:58:48Z", "hours": 1.3008, "text": "Hello again. Today we were cutting the glass and designing a mount that allows it to rotate 360 degrees."}, {"post_id": 45537, "ts": "2026-08-12T02:57:45Z", "hours": 4.0842, "text": "Hi! Today, we finally managed to integrate an AI into the HTML file."}, {"post_id": 44983, "ts": "2026-08-11T03:25:08Z", "hours": 0.3503, "text": "Hi, I’ve been doing quite a lot of things but I’ve had problems with Lapse, so I can’t post many hours at the moment, but I’ll keep in touch."}, {"post_id": 43676, "ts": "2026-08-09T02:31:52Z", "hours": 0.4533, "text": "Hi, today we built the prism for the project; it works quite well, but I’m going to try to improve it."}, {"post_id": 43039, "ts": "2026-08-08T02:54:22Z", "hours": 5.3339, "text": "Hi! Today we worked on the physical part of the hologram. It was a bit complicated, but it is fully functional. Templates for replicating it will be added soon."}, {"post_id": 42407, "ts": "2026-08-07T03:02:07Z", "hours": 9.9328, "text": "Hi, I’m building the website today. A lot of progress has already been made; the only thing left is to connect the AI to the HTML file."}, {"post_id": 41115, "ts": "2026-08-05T03:26:37Z", "hours": 10.4061, "text": "Day 6 of the hologram project: we made quite a few changes today. We started 3D animation, finished the personal website, and began work on the assistant’s website."}, {"post_id": 40461, "ts": "2026-08-04T00:25:13Z", "hours": 8.9503, "text": "Day 5, today we were doing some cheering and also some programming and"}, {"post_id": 39842, "ts": "2026-08-03T03:06:11Z", "hours": 7.3939, "text": "Day 4 of the hologram assistant project: today we built the base of the webpage and added some more animation. Yesterday I asked for a name for the female character, and the winner was @puerta , who suggested “Sisi”—so that’s her new name. Now we need a name for the Minecraft character."}, {"post_id": 39218, "ts": "2026-08-02T01:27:22Z", "hours": 6.8336, "text": "Day 3: Today I animated our second hologram assistant character, but I don’t know what name to give it. If anyone has any ideas for the characters, please write them in the comments."}, {"post_id": 38531, "ts": "2026-07-31T23:47:49Z", "hours": 5.1969, "text": "Day 2: Today I started doing a bit of everything. I began by practicing how to create HTML, then I worked on fixing the model, and after that, I started creating the first animation for the assistant I chose a Minecraft character. Here are the videos."}, {"post_id": 37883, "ts": "2026-07-30T21:29:37Z", "hours": 1.3939, "text": "Day 1: We modeled the base of the hologram where the objects will be placed for it to work"}, {"post_id": 37634, "ts": "2026-07-30T14:50:21Z", "hours": 1.57, "text": "Hello! Day 1 of the hologram assistant project. Today I’m drafting the project plans to give it its final shape; I’ll also be creating digital versions. This is just the first one—there are three in total—and I’ll be posting them later."}]...
|
Title: asistende holograma con ia by @jdaviddg077 Title: asistende holograma con ia by @jdaviddg077 | Stardance
Devlogs:
Hello! Day 1 of the hologram assistant project. Today I’m drafting the project plans to give it its final shape; I’ll also be creating digital versions. This is just the first one—there are three in total—and I’ll be posting them later.
Day 1: We modeled the base of the hologram where the objects will be placed for it to work
Day 2: Today I started doing a bit of everything. I began by practicing how to create HTML, then I worked on fixing the model, and after that, I started creating the first animation for the assistant I chose a Minecraft character. Here are the videos.
Day 3: Today I animated our second hologram assistant character, but I don’t know what name to give it. If anyone has any ideas for the characters, please write them in the comments.
Day 4 of the hologram assistant project: today we built the base of the webpage and added some more animation. Yesterday I asked for a name for the female character, and the winner was @puerta , who suggested “Sisi”—so that’s her new name. Now we need a name for the Minecraft character.
Day 5, today we were doing some cheering and also some programming and
Day 6 of the hologram project: we made quite a few changes today. We started 3D animation, finished the personal website, and began work on the assistant’s website.
Hi, I’m building the website today. A lot of progress has already been made; the only thing left is to connect the AI to the HTML file.
Hi! Today we worked on the physical part of the hologram. It was a bit complicated, but it is fully functional. Templates for replicating it will be added soon.
Hi, today we built the prism for the project; it works quite well, but I’m going to try to improve it.
Hi, I’ve been doing quite a lot of things but I’ve had problems with Lapse, so I can’t post many hours at the moment, but I’ll keep in touch.
Hi! Today, we finally managed to integrate an AI into the HTML file.
Hello again. Today we were cutting the glass and designing a mount that allows it to rotate 360 degrees.
Hi! Today we were working on the system to make the hologram move 360 degrees.
Hi, today we assembled the sliding system for the hologram projector’s glass; should we paint it or leave it as is?
Hi, today we were working on adding more lighting and creating some more detailed spaces.
Ships:
este es un prototipo del proyecto no es la parte funcional lei e investige en youtube que esto se podia hacer y mi intencion es que ustedes vean que estoy trabajando en el esta es la parte base del peroyecto tambien agrege una ia es llama 3.2 3b en un redmi note 14 para que respondiera y lo hace muy rapido tambien lo intente con una 7b pero aunque respondio se tardo mucho en si esta es una muestra del proyecto...
|
1793537656.949511
|
1793624056.949511
|
|
36627
|
Crystal OS by @kuba_ch101 | Stardance
|
kuba_ch101
|
1
|
24.0
|
70
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T19:01:16Z", "hours": 24.0, "multiplier": 2.85, "payout": 70, "blessing": "neutral", "text": "I built a webOS and added some computer graphics to it. My project is called CrystalOS(I just named it after the background render). I made the OS and apps logic in Java Script following the Hack Club’s webOS tutorial. I really learned JS after this project. The render was written in C with OpenGL and compiled to WASM(Web Assembly) using Emscriptem. I also learned Instanced Rendering from this project which is a way to draw multiple times the same geometry.", "repo": "https://github.com/kubach101/CrystalOS/tree/master", "demo": "https://kubach101.github.io/CrystalOS/"}]...
|
[{"post_id": 83380, "ts": "202 [{"post_id": 83380, "ts": "2026-10-27T21:30:01Z", "hours": 0.7761, "text": "I finally added allarm sounds and volume control to the settings."}, {"post_id": 82298, "ts": "2026-10-24T14:27:53Z", "hours": 0.5108, "text": "I added support for other screen sizes and changed the clock font. I am almost ready to ship."}, {"post_id": 75975, "ts": "2026-10-01T19:55:50Z", "hours": 1.2864, "text": "I added this cool animation when you open a window, I came up with it by myself. It is pretty straight forward, you just multiply the position vectors; I also added a real time clock so it looks more like an OS."}, {"post_id": 74032, "ts": "2026-09-26T15:48:49Z", "hours": 3.6783, "text": "I switched to instanced rendering which made everything faster and reduced memory use so I hope the will work on smartphones. I also added this exploding animation which triggers when you open an app, I got inspired by that one tony stark meme where he makes a big sphere out of holograms."}, {"post_id": 39779, "ts": "2026-08-02T23:35:58Z", "hours": 3.5822, "text": "I made the calculator and timer logic, the notepad needs a little bit of work but is mostly done. Then I tried to style everything to fit the theme."}, {"post_id": 33215, "ts": "2026-07-22T22:22:29Z", "hours": 1.8053, "text": "Started making the notepad and calculator"}, {"post_id": 32628, "ts": "2026-07-21T22:18:57Z", "hours": 4.6233, "text": "I finnished the windows! Needed to rework the logic and this time I followed the tutorial. It really helped me especially with organizing the functions."}, {"post_id": 31678, "ts": "2026-07-20T09:00:59Z", "hours": 1.4744, "text": "I started on some OS things, for now I’ve done some style and logic for the windows but I still need to make the icons open them. icon source: https://www.svgrepo.com"}, {"post_id": 31134, "ts": "2026-07-19T09:14:11Z", "hours": 1.5031, "text": "I fixed the rendering artifacts and started making the desktop."}, {"post_id": 30897, "ts": "2026-07-18T21:24:40Z", "hours": 3.6961, "text": "I almost finnished the background. The only things left are those random giant triangles and I cant figure out what is the cause."}, {"post_id": 30616, "ts": "2026-07-18T10:33:54Z", "hours": 1.5528, "text": "Hello, I just started making my web OS. Today I made the back groud rendering pipeline. The render will be quite basic and I took some code from my other projects so it took me less time than ussual. The background will be made randomly positioned, low-polly shapes(like this in the screen). I want them to look like crystals. I want to finnish the render and then make the actual site, but I still need to make random shape generation and add some movement"}]...
|
Title: Crystal OS by @kuba_ch101 | Stardance
Devl Title: Crystal OS by @kuba_ch101 | Stardance
Devlogs:
Hello, I just started making my web OS. Today I made the back groud rendering pipeline. The render will be quite basic and I took some code from my other projects so it took me less time than ussual. The background will be made randomly positioned, low-polly shapes(like this in the screen). I want them to look like crystals. I want to finnish the render and then make the actual site, but I still need to make random shape generation and add some movement
I almost finnished the background. The only things left are those random giant triangles and I cant figure out what is the cause.
I fixed the rendering artifacts and started making the desktop.
I started on some OS things, for now I’ve done some style and logic for the windows but I still need to make the icons open them. icon source: https://www.svgrepo.com
I finnished the windows! Needed to rework the logic and this time I followed the tutorial. It really helped me especially with organizing the functions.
Started making the notepad and calculator
I made the calculator and timer logic, the notepad needs a little bit of work but is mostly done. Then I tried to style everything to fit the theme.
I switched to instanced rendering which made everything faster and reduced memory use so I hope the will work on smartphones. I also added this exploding animation which triggers when you open an app, I got inspired by that one tony stark meme where he makes a big sphere out of holograms.
I added this cool animation when you open a window, I came up with it by myself. It is pretty straight forward, you just multiply the position vectors; I also added a real time clock so it looks more like an OS.
I added support for other screen sizes and changed the clock font. I am almost ready to ship.
I finally added allarm sounds and volume control to the settings.
Ships:
I built a webOS and added some computer graphics to it. My project is called CrystalOS(I just named it after the background render). I made the OS and apps logic in Java Script following the Hack Club’s webOS tutorial. I really learned JS after this project. The render was written in C with OpenGL and compiled to WASM(Web Assembly) using Emscriptem. I also learned Instanced Rendering from this project which is a way to draw multiple times the same geometry....
|
1793537666.2965662
|
1793624066.2965662
|
|
9583
|
My awesome macropad! by @Elnur | Stardance
|
Elnur
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-06T13:38:19Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made macropad. Learned how to work in kiCAD", "repo": "https://github.com/ElnurMavlonov/macropad_hardware", "demo": ""}]...
|
[{"post_id": 3462, "ts": "2026 [{"post_id": 3462, "ts": "2026-06-06T12:38:17Z", "hours": 0.2625, "text": "Today, I did something crazy. At 2:00 PM, I had absolutely no idea what to do, but I had this intense urge to finally learn KiCad. I just wanted to build something and figure it out. Fast forward to 5:30 PM, and it’s finally done! The peace of mind I feel right now is incredible. big thanks to whoever made the guide."}]...
|
Title: My awesome macropad! by @Elnur | Stardance
Title: My awesome macropad! by @Elnur | Stardance
Devlogs:
Today, I did something crazy. At 2:00 PM, I had absolutely no idea what to do, but I had this intense urge to finally learn KiCad. I just wanted to build something and figure it out. Fast forward to 5:30 PM, and it’s finally done! The peace of mind I feel right now is incredible. big thanks to whoever made the guide.
Ships:
I made macropad. Learned how to work in kiCAD...
|
1793537668.4611304
|
1793624068.4611304
|
|
28626
|
PECKO-platformer by @Miyako | Stardance
|
Miyako
|
1
|
35.0
|
92
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T06:35:39Z", "hours": 35.0, "multiplier": 2.97, "payout": 92, "blessing": "neutral", "text": "so i made a platformer game where you have to collect all the coins while avioding the enemy to reach the end and game finish since its my first game aside from angry bird i made with completely based on tutorial here i did follow tutorial and then made changes in the game as i’m new to it so i struggled alot finding the tools and and what type of code i should write for adding this particular function through i learn alot while making this game and also did few things completely by myself so i’m a bit happy that i learned in a way", "repo": "https://github.com/miyakostarry/PECKO-platformer", "demo": "https://miyakostarry.itch.io/peckos-coin-rush"}]...
|
[{"post_id": 25160, "ts": "202 [{"post_id": 25160, "ts": "2026-07-09T06:31:35Z", "hours": 1.3122, "text": "so finnaly i made all the finnaly changes and now i’m about to ship my first project"}, {"post_id": 24705, "ts": "2026-07-08T13:57:28Z", "hours": 4.1006, "text": "🎮 Devlog #8 – The Finish Line! Pecko is Complete 🐥✨ Today was one of the biggest days of this project—I officially finished Pecko! The last feature I worked on was the tutorial dialogue. I wanted the game to feel welcoming, so instead of showing all the instructions at once, I created a typewriter effect where the text appears one character at a time, just like someone is typing. While implementing it, I learned how await, create_timer(), and the timeout signal work together to pause the code briefly before displaying the next letter. Like every game development session, things didn’t work perfectly on the first try. I ran into the “Invalid assignment of property ‘text’ on a base object of type ‘null instance’” error because my script couldn’t find the correct Label node. After checking my scene tree and correcting the node path, the dialogue started working as expected. I also spent time improving the dialogue itself. Instead of plain instructions, I gave Pecko a bit of personality: “Pecko loves shiny gold and never leaves a coin behind! Help him collect every single coin to complete the level.” I also added a helpful tip to let players know they can press Esc at any time to open the Pause Menu. While experimenting, I tried to make only the word Esc appear in a different color. That’s when I discovered that a normal Label can’t color individual words and that RichTextLabel is the proper node for styled text. Even though I didn’t implement it yet, I learned something new about Godot’s UI system. Finally, after weeks of learning, debugging, fixing bugs, adding coins, enemies, checkpoints, timers, a pause menu, settings, notifications, and polishing the gameplay… Pecko is complete. This project taught me far more than just how to make a platformer. I learned how scenes connect together, how signals simplify communication between objects, how CanvasLayer keeps UI fixed on the screen, how to debug Godot errors, and how to turn an idea into a playable game. This isn’t the end—it’s the beginning. My first game is finished, and I’m excited to build even bigger and better games in the future. 🎉 Project Status: Completed (ps - really satisfied with it because while coding i got my python revised as gdscript kind of similar to it though few things were that took me realy long time to understand but its fine i’m new to godot i’m still learning )"}, {"post_id": 24050, "ts": "2026-07-07T10:52:23Z", "hours": 2.7417, "text": "Devlog – The Settings Menu Strikes Back ⚙️Today’s goal was simple: add a settings menu to the game.At first, I thought it would be a quick task, but it turned into one of those classic “why isn’t this working?” moments. After setting up the settings button and trying to connect everything, I kept running into errors. The menu refused to behave the way I expected, and I spent a good amount of time checking node paths, signals, scene hierarchy, and scripts to figure out what had gone wrong.It was one of those bugs where everything looked correct, yet the game had other plans.After carefully going through the setup step by step, I finally found the issue, fixed it, and… it worked! 🎉 The settings menu opened exactly as intended, and seeing it function properly after all that debugging was incredibly satisfying.Today’s biggest lesson wasn’t just about creating a settings menu—it was about staying patient while debugging. Every error forced me to understand Godot a little better, and solving it felt like a small victory.Progress made today:Added the settings menu.Tracked down and fixed the setup error.Successfully got the settings menu working.Learned more about debugging UI and scene connections in Godot.Every bug solved is another level unlocked as a game developer. On to the next feature!"}, {"post_id": 23843, "ts": "2026-07-07T00:50:34Z", "hours": 6.7011, "text": "Devlog #5 – Pause Menu, Audio & More! 🎮Made some solid progress on my platformer today!What’s New⏸️ Added a Pause Menu that can be opened with the Escape key.▶️ Added Resume functionality to continue the game.🔄 Added a Restart button to reload the current level.🏠 Added a Back to Menu button.❌ Added a Quit button to close the game.🪙 Added coin collection sound effects.💥 Added a hurt/death sound effect for the kill zone.🎵 Added background music to make the game feel more alive.ChallengesThe biggest challenge was understanding how pausing works in Godot. I had to learn how CanvasLayer, get_tree().paused, scene changes, and button signals all work together. I also spent time debugging audio issues and figuring out where different sounds should be controlled.What’s Next⚙️ Add a Settings menu.🔊 Allow players to toggle music and sound effects on and off.✨ Continue polishing the gameplay and UI.I’m still learning Godot and game development, but every feature I finish helps me understand a little more. Looking forward to sharing the next update!"}, {"post_id": 22128, "ts": "2026-07-04T12:59:28Z", "hours": 4.7683, "text": "Devlog – Day 2: UI Improvements & Coin CollectionToday I focused on improving the core gameplay loop and adding user interface elements to make the game feel more complete.What I worked onAdded a coin counter that updates whenever the player collects a coin.Connected the score system to a Label inside a CanvasLayer, ensuring the UI stays fixed on the screen even when the camera or player moves.Continued refining the coin collection logic, making sure the score increases correctly when a coin is picked up.Began implementing a Congratulations message that appears after collecting all the coins. While working on this, I encountered a node path error (Node not found), which helped me better understand how Godot searches for nodes relative to the current scene.Explored how to use CanvasLayer to display UI elements such as score, win messages, and future game notifications.Learned about different ways to create a countdown timer, including using Godot’s built-in Timer node and creating a timer with _process(delta).ChallengesThe biggest issue today was accessing UI nodes from the correct script. I learned that using an incorrect node path causes Godot to search relative to the current node, resulting in a “Node not found” error. Understanding the scene tree and node hierarchy made it much easier to troubleshoot these issues.Next StepsFinish the “Congratulations” screen after all coins are collected.Add a countdown timer to create a time-based challenge.Implement a “Time’s Up” or “Game Over” screen if the player runs out of time.Continue polishing the UI and overall gameplay experience.Overall, today was focused on connecting gameplay mechanics with the user interface. Although I ran into a few errors, they helped me gain a better understanding of Godot’s scene tree and node system, making future UI development much easier."}, {"post_id": 21545, "ts": "2026-07-03T15:50:26Z", "hours": 10.5783, "text": "Devlog #3 – Start Menu, Coin Win Condition, and a UI Challenge 🎮 Made some nice progress on my Godot platformer today! I added a simple start menu, so the game now begins from a proper title screen instead of jumping straight into gameplay. It already feels much more like an actual game. I also implemented a win condition. Once the player collects all the coins in the level, the game automatically returns to the start menu. It’s a simple feature, but it completes the gameplay loop and makes the level feel finished. The biggest challenge today was the coin counter UI. I wanted to display the number of collected coins on the screen using a CanvasLayer and a Label. It sounded straightforward, but I ran into issues with node paths, CanvasLayer setup, and null instance errors while trying to update the label from my game logic. After moving things around and experimenting with different approaches, I realized I still need to clean up how my GameManager communicates with the UI. So the score display isn’t finished yet, but I understand the problem much better than when I started. Even though everything didn’t work on the first try, today was a reminder that game development is often about debugging and understanding how different systems connect together. Progress today: ✅ Added a start menu. ✅ Player returns to the start menu after collecting all coins. ✅ Started implementing a coin counter UI. 🛠️ Still debugging the score display."}, {"post_id": 19175, "ts": "2026-06-30T13:13:33Z", "hours": 1.4728, "text": "so basically i added slimes as enemy and it was my first time using libresprite and oh god even though it was so simple i loved it best part of making slime is that as beginner you don’t have to draw the walking sprite sheet that feels hard and another few things i added is that while playing you can use A key as Left Arrow key and D key as right Arrow key and W key and SpaceBar as jump key and another things i have added is the frames for jumping, and running and also when the knight enters the kill zone that basically the slime it falls off the platform and also when right is pressed it turns right and when left is prrssed it turns left and i have done same thing with slime it changes left to right when it collide with some body"}, {"post_id": 18983, "ts": "2026-06-30T04:44:54Z", "hours": 3.7025, "text": "so currently i made few more tiles here and added moew coins and also i’m planing to add enemy here so that it look cool and that asset pack have those and i will use everything that those sprite sheeet or asset pack contain and another thing i was wondering to add i’m sure but a pop up coin when the player enters in scene ? well i’m not sure about that pop up thing never used before but will try it"}]...
|
Title: PECKO-platformer by @Miyako | Stardance
De Title: PECKO-platformer by @Miyako | Stardance
Devlogs:
so currently i made few more tiles here and added moew coins and also i’m planing to add enemy here so that it look cool and that asset pack have those and i will use everything that those sprite sheeet or asset pack contain and another thing i was wondering to add i’m sure but a pop up coin when the player enters in scene ? well i’m not sure about that pop up thing never used before but will try it
so basically i added slimes as enemy and it was my first time using libresprite and oh god even though it was so simple i loved it best part of making slime is that as beginner you don’t have to draw the walking sprite sheet that feels hard and another few things i added is that while playing you can use A key as Left Arrow key and D key as right Arrow key and W key and SpaceBar as jump key and another things i have added is the frames for jumping, and running and also when the knight enters the kill zone that basically the slime it falls off the platform and also when right is pressed it turns right and when left is prrssed it turns left and i have done same thing with slime it changes left to right when it collide with some body
Devlog #3 – Start Menu, Coin Win Condition, and a UI Challenge 🎮 Made some nice progress on my Godot platformer today! I added a simple start menu, so the game now begins from a proper title screen instead of jumping straight into gameplay. It already feels much more like an actual game. I also implemented a win condition. Once the player collects all the coins in the level, the game automatically returns to the start menu. It’s a simple feature, but it completes the gameplay loop and makes the level feel finished. The biggest challenge today was the coin counter UI. I wanted to display the number of collected coins on the screen using a CanvasLayer and a Label. It sounded straightforward, but I ran into issues with node paths, CanvasLayer setup, and null instance errors while trying to update the label from my game logic. After moving things around and experimenting with different approaches, I realized I still need to clean up how my GameManager communicates with the UI. So the score display isn’t finished yet, but I understand the problem much better than when I started. Even though everything didn’t work on the first try, today was a reminder that game development is often about debugging and understanding how different systems connect together. Progress today: ✅ Added a start menu. ✅ Player returns to the start menu after collecting all coins. ✅ Started implementing a coin counter UI. 🛠️ Still debugging the score display.
Devlog – Day 2: UI Improvements & Coin CollectionToday I focused on improving the core gameplay loop and adding user interface elements to make the game feel more complete.What I worked onAdded a coin counter that updates whenever the player collects a coin.Connected the score system to a Label inside a CanvasLayer, ensuring the UI stays fixed on the screen even when the camera or player moves.Continued refining the coin collection logic, making sure the score increases correctly when a coin is picked up.Began implementing a Congratulations message that appears after collecting all the coins. While working on this, I encountered a node path error (Node not found), which helped me better understand how Godot searches for nodes relative to the current scene.Explored how to use CanvasLayer to display UI elements such as score, win messages, and future game notifications.Learned about different ways to create a countdown timer, including using Godot’s built-in Timer node and creating a timer with _process(delta).ChallengesThe biggest issue today was accessing UI nodes from the correct script. I learned that using an incorrect node path causes Godot to search relative to the current node, resulting in a “Node not found” error. Understanding the scene tree and node hierarchy made it much easier to troubleshoot these issues.Next StepsFinish the “Congratulations” screen after all coins are collected.Add a countdown timer to create a time-based challenge.Implement a “Time’s Up” or “Game Over” screen if the player runs out of time.Continue polishing the UI and overall gameplay experience.Overall, today was focused on connecting gameplay mechanics with the user interface. Although I ran into a few errors, they helped me gain a better understanding of Godot’s scene tree and node system, making future UI development much easier.
Devlog #5 – Pause Menu, Audio & More! 🎮Made some solid progress on my platformer today!What’s New⏸️ Added a Pause Menu that can be opened with the Escape key.▶️ Added Resume functionality to continue the game.🔄 Added a Restart button to reload the current level.🏠 Added a Back to Menu button.❌ Added a Quit button to close the game.🪙 Added coin collection sound effects.💥 Added a hurt/death sound effect for the kill zone.🎵 Added background music to make the game feel more alive.ChallengesThe biggest challenge was understanding how pausing works in Godot. I had to learn how CanvasLayer, get_tree().paused, scene changes, and button signals all work together. I also spent time debugging audio issues and figuring out where different sounds should be controlled.What’s Next⚙️ Add a Settings menu.🔊 Allow players to toggle music and sound effects on and off.✨ Continue polishing the gameplay and UI.I’m still learning Godot and game development, but every feature I finish helps me understand a little more. Looking forward to sharing the next update!
Devlog – The Settings Menu Strikes Back ⚙️Today’s goal was simple: add a settings menu to the game.At first, I thought it would be a quick task, but it turned into one of those classic “why isn’t this working?” moments. After setting up the settings button and trying to connect everything, I kept running into errors. The menu refused to behave the way I expected, and I spent a good amount of time checking node paths, signals, scene hierarchy, and scripts to figure out what had gone wrong.It was one of those bugs where everything looked correct, yet the game had other plans.After carefully going through the setup step by step, I finally found the issue, fixed it, and… it worked! 🎉 The settings menu opened exactly as intended, and seeing it function properly after all that debugging was incredibly satisfying.Today’s biggest lesson wasn’t just about creating a settings menu—it was about staying patient while debugging. Every error forced me to understand Godot a little better, and solving it felt like a small victory.Progress made today:Added the settings menu.Tracked down and fixed the setup error.Successfully got the settings menu working.Learned more about debugging UI and scene connections in Godot.Every bug solved is another level unlocked as a game developer. On to the next feature!
🎮 Devlog #8 – The Finish Line! Pecko is Complete 🐥✨ Today was one of the biggest days of this project—I officially finished Pecko! The last feature I worked on was the tutorial dialogue. I wanted the game to feel welcoming, so instead of showing all the instructions at once, I created a typewriter effect where the text appears one character at a time, just like someone is typing. While implementing it, I learned how await, create_timer(), and the timeout signal work together to pause the code briefly before displaying the next letter. Like every game development session, things didn’t work perfectly on the first try. I ran into the “Invalid assignment of property ‘text’ on a base object of type ‘null instance’” error because my script couldn’t find the correct Label node. After checking my scene tree and correcting the node path, the dialogue started working as expected. I also spent time improving the dialogue itself. Instead of plain instructions, I gave Pecko a bit of personality: “Pecko loves shiny gold and never leaves a coin behind! Help him collect every single coin to complete the level.” I also added a helpful tip to let players know they can press Esc at any time to open the Pause Menu. While experimenting, I tried to make only the word Esc appear in a different color. That’s when I discovered that a normal Label can’t color individual words and that RichTextLabel is the proper node for styled text. Even though I didn’t implement it yet, I learned something new about Godot’s UI system. Finally, after weeks of learning, debugging, fixing bugs, adding coins, enemies, checkpoints, timers, a pause menu, settings, notifications, and polishing the gameplay… Pecko is complete. This project taught me far more than just how to make a platformer. I learned how scenes connect together, how signals simplify communication between objects, how CanvasLayer keeps UI fixed on the screen, how to debug Godot errors, and how to turn an idea into a playable game. This isn’t the end—it’s the beginning. My first game is finished, and I’m excited to build even bigger and better games in the future. 🎉 Project Status: Completed (ps - really satisfied with it because while coding i got my python revised as gdscript kind of similar to it though few things were that took me realy long time to understand but its fine i’m new to godot i’m still learning )
so finnaly i made all the finnaly changes and now i’m about to ship my first project
Ships:
so i made a platformer game where you have to collect all the coins while avioding the enemy to reach the end and game finish since its my first game aside from angry bird i made with completely based on tutorial here i did follow tutorial and then made changes in the game as i’m new to it so i struggled alot finding the tools and and what type of code i should write for adding this particular function through i learn alot while making this game and also did few things completely by myself so i’m a bit happy that i learned in a way...
|
1793537671.5699399
|
1793624071.5699399
|
|
2981
|
College Filter by @Quantalabs | Stardance
|
Quantalabs
|
1
|
4.0
|
33
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T01:51:51Z", "hours": 4.0, "multiplier": 8.28, "payout": 33, "blessing": "neutral", "text": "I made a simple web app that filters through colleges using public Common Data Set data. Currently, CDS files aren’t accessible to the public to filter through in a central space, so this app lets you enter in different preferences. There’s a lot of things I want to add, such as better layout and more filtering options, as well as displaying more useful information on the frontend. One of the hardest parts was figuring out how to reduce the time it took to find the colleges, since I have to send a lot of different request. I realized, since most of this data is constant for basically the entire year, until a new class of students are admitted, I can cache the data once and use a local copy. Adding this drastically reduced loading times to roughly <1 second per request.", "repo": "https://github.com/Quantalabs/filter", "demo": "https://proj.rvind.cc/filter/"}]...
|
[{"post_id": 16631, "ts": "202 [{"post_id": 16631, "ts": "2026-06-27T01:41:37Z", "hours": 0.7819, "text": "I had a lot of issues when deploying, mainly because the server took too long to respond. So, I added a cache file that just stores gpa and private/public school data for each school, so that the app doesn’t need to send thousands of requests for a valid school. Now, response times are down to a couple seconds at most, but usually <1 second, which I’m okay with for now."}, {"post_id": 14164, "ts": "2026-06-23T04:40:54Z", "hours": 2.2414, "text": "Added actual filtering functionality using collegedata.fyi to get CDS data. I’m having issues distinguishing between public and private, so I may remove that functionality or try and distinguish schools by if they charge different in- and out-of-state tuition. (yes i did create an object that has all 50 states split among 5 different regions)"}, {"post_id": 13972, "ts": "2026-06-22T22:42:34Z", "hours": 1.0111, "text": "I setup the express project and landing page so far. I used the MD.css retro framework to style the website. I added a bit of other CSS to make the form look a bit better. I currently have a couple criteria by which users can filter schools (the actual filtering functionality will be implemented soon)"}]...
|
Title: College Filter by @Quantalabs | Stardance
Title: College Filter by @Quantalabs | Stardance
Devlogs:
I setup the express project and landing page so far. I used the MD.css retro framework to style the website. I added a bit of other CSS to make the form look a bit better. I currently have a couple criteria by which users can filter schools (the actual filtering functionality will be implemented soon)
Added actual filtering functionality using collegedata.fyi to get CDS data. I’m having issues distinguishing between public and private, so I may remove that functionality or try and distinguish schools by if they charge different in- and out-of-state tuition. (yes i did create an object that has all 50 states split among 5 different regions)
I had a lot of issues when deploying, mainly because the server took too long to respond. So, I added a cache file that just stores gpa and private/public school data for each school, so that the app doesn’t need to send thousands of requests for a valid school. Now, response times are down to a couple seconds at most, but usually <1 second, which I’m okay with for now.
Ships:
I made a simple web app that filters through colleges using public Common Data Set data. Currently, CDS files aren’t accessible to the public to filter through in a central space, so this app lets you enter in different preferences. There’s a lot of things I want to add, such as better layout and more filtering options, as well as displaying more useful information on the frontend. One of the hardest parts was figuring out how to reduce the time it took to find the colleges, since I have to send a lot of different request. I realized, since most of this data is constant for basically the entire year, until a new class of students are admitted, I can cache the data once and use a local copy. Adding this drastically reduced loading times to roughly <1 second per request....
|
1793537678.540991
|
1793624078.540991
|
|
37720
|
EagleOS by @EagleShreyash | Stardance
|
EagleShreyash
|
1
|
12.44
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T18:55:58Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first real website. Its was really fun and the jams were really helpful the most challenging part was fixing the drag and close function bug on startup of the the welcome window took me hours to fix. One feature that I personally added was the translucent windows which i think look really cool and i’ve tried to make it eagle themed matching my allias so i hope you all like it :)", "repo": "https://github.com/eagleshreyash/EagleOs", "demo": "https://eagleshreyash.github.io/EagleOs/"}]...
|
[{"post_id": 49595, "ts": "202 [{"post_id": 49595, "ts": "2026-08-18T14:09:24Z", "hours": 2.4367, "text": "Two New App Addition >Adler Timer: fully Functional. pause,reset and choose time Works perfectly >Eagle Music: Base window is ready Functions are remaining This is turning Out so Good,I Haven’t decided which songs to put into the playlist So you guys can comment and Request your Favourite Songs and II’l Add them. Signing Out :)) -EagleShreyash"}, {"post_id": 47095, "ts": "2026-08-14T18:50:44Z", "hours": 1.1658, "text": "Fixed all bugs releated drag and close window function during starting. The project is finally ready to ship:))"}, {"post_id": 45880, "ts": "2026-08-12T16:49:06Z", "hours": 2.8367, "text": "Just completed The First App The Hawk Notes >Added Transparent Windows (Will be shipping it soon) Adding the code photoes in this devlog Stay tuned for the Next Devlog:)"}, {"post_id": 37532, "ts": "2026-07-30T10:46:25Z", "hours": 2.7444, "text": "#DEVLOG 2 >Featured Added- welcome window is now draggable; you can close the window and repoen it by clicking eagle logo at top. Starting to look like an Os Really excited about howits gonna turn out Stay tuned for next Devlog of EagleOs:)."}, {"post_id": 35780, "ts": "2026-07-27T12:54:21Z", "hours": 3.4856, "text": "This is the first look on eagleOs. Keypoints: >Top bar >Working Clock ;Currently working to make the window Draggable, Closable, and Openable. Will be posting second Devlog Soon. Stay Tuned:)"}]...
|
Title: EagleOS by @EagleShreyash | Stardance
Devl Title: EagleOS by @EagleShreyash | Stardance
Devlogs:
This is the first look on eagleOs. Keypoints: >Top bar >Working Clock ;Currently working to make the window Draggable, Closable, and Openable. Will be posting second Devlog Soon. Stay Tuned:)
#DEVLOG 2 >Featured Added- welcome window is now draggable; you can close the window and repoen it by clicking eagle logo at top. Starting to look like an Os Really excited about howits gonna turn out Stay tuned for next Devlog of EagleOs:).
Just completed The First App The Hawk Notes >Added Transparent Windows (Will be shipping it soon) Adding the code photoes in this devlog Stay tuned for the Next Devlog:)
Fixed all bugs releated drag and close window function during starting. The project is finally ready to ship:))
Two New App Addition >Adler Timer: fully Functional. pause,reset and choose time Works perfectly >Eagle Music: Base window is ready Functions are remaining This is turning Out so Good,I Haven’t decided which songs to put into the playlist So you guys can comment and Request your Favourite Songs and II’l Add them. Signing Out :)) -EagleShreyash
Ships:
I made my first real website. Its was really fun and the jams were really helpful the most challenging part was fixing the drag and close function bug on startup of the the welcome window took me hours to fix. One feature that I personally added was the translucent windows which i think look really cool and i’ve tried to make it eagle themed matching my allias so i hope you all like it :)...
|
1793537687.5964017
|
1793624087.5964017
|
|
17942
|
Cyber OS by @Ann_with_an_e | Stardance
|
Ann_with_an_e
|
2
|
48.0
|
655
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T01:12:54Z", "hours": 28.0, "multiplier": 14.07, "payout": 394, "blessing": "neutral", "text": "What I made: Cyber OS is an interactive, web-based OS. It has multiple applications, with closable, draggable windows with a z-index. There are roughly twelve applications in total, not counting the ones on the top bar. While I would love to ramble about all my applications, here are the ones I’m most proud of! In-Filter-Traitor: An application that filters your photos to either black and white, or a two-toned image that you can choose the shadows and highlights of! Ever felt your photos could benefit from a few more Gotham vibes? Never? Well, that’s disappointing. POST-IT: A virtual sticky note! I really love it mostly due to the design that may or may not have been a direct rip-off from the app in windows. It’s silly, but I’m happy that I managed to recreate it. Terminal: It lets you control the OS by practicing the ancient art of typing orange runes into a dark void. If you don’t know what to type, the void will inform you. Easter Egg! It just occurred to me that I may be overhyping this. Anyway, this is how it works- on the last slide of the sidebar there is an app called Comms. You will not be able to access it without a password. The password is hidden somewhere within the OS. There’s a window called Developer Logs that might tell you what Comms does, but not the password. If you’re short of time, or not up for a treasure hunt, the password is in my README with a spoiler warning! Also tell me if my hiding place was too obvious lol. Feeling Lost? Something not working? Please go through the README, I do think it covers most of the quirks you might encounter. Any application that’s un-intuitive has ⓘ. If you’re confused, click on it! If its anything that isn’t covered between the two, tell me! I’ll make sure to fix it up. What I’m proud of This took me so much time to make. I’m really proud that I managed to do this regularly between school, classes and competitions. I’m really bad at time management so this is a huge win for me! I’m also really proud of the fact that I’m able to debug stuff myself now a bit more. Before I needed to constantly google why my console was showing up an error, and how to fix it. Now I can somewhat understand why my code glitched, and the steps I can take to remedy it. I had so much fun making this, and now I’m going to be slightly lost now lol. But anyway, I put a lot of heart into this project, and I really hope that its visible! Thank you all for following along!", "repo": "https://github.com/syntax-error4O4/Cyber-OS", "demo": "https://syntax-error4o4.github.io/Cyber-OS/"}, {"ship_num": 2, "ts": "2026-06-20T08:35:30Z", "hours": 20.0, "multiplier": 13.37, "payout": 261, "blessing": "neutral", "text": "#Overview Cyber OS is a web based OS that is interactive with multiple draggable and closable windows. It has a hand-drawn background with a unique color palette inspired from cyberpunk and old CRT monitors. #Applications -Archive of Words: An application that introduces you to the most obscure words English has to offer. Have you ever wanted to win a crossword by knowing an eight letter word for theft? Well, here’s your chance! -Painterly: A standard painting application with a small twist- a pure black canvas and colors catered specifically for contrast without looking overwhelming. It also features a brush size changer, undo and redo buttons -Calculator: Your standard run-of-the-mill application for basic arithmetic computations -Display Settings: Distinct display settings meant to mimic the look of an old school CRT monitor. They can also be turned off, if they are not to the users’ liking. -Desktop Companion: An animated pixel sprite at the bottom right that keeps you company as you go about your work. _ I honestly found that learning code while actively creating a project was so much more enjoyable. I ran into so many hurdles, especially with the js code, from formatting to naming mishaps. I did learn more from making those mistakes than just knowing about them. I did want to create a few more interesting applications, but I need to learn a bit more before trying them. Keep an eye out! I’m incredibly proud of how this turned out. And I hope you’ll love it too! Cheers!", "repo": "https://github.com/syntax-error4O4/Cyber-OS", "demo": "https://syntax-error4o4.github.io/Cyber-OS/"}]...
|
[{"post_id": 23336, "ts": "202 [{"post_id": 23336, "ts": "2026-07-06T07:03:50Z", "hours": 2.4808, "text": "What I added Okay, you guys; this might just be the most complete this project has ever been. I only did minor additions here, so here goes- I made add the buttons with text on them hover uniformly. Its slightly superficial, but I just wanted them to be uniform. I added information buttons on the header for certain apps that might have quirks or be un-intuitive to navigate. Tbh I copied the code for my first information button pop-up and just added a different letter in front of it. I also added wallpapers! You now have six wallpapers to choose from. Initially I wanted to draw all of them. The default background I drew btw, but I just don’t have the time for it rn, so maybe in the future. So someone reviewed and told me my project doesn’t work in comet. I didn’t really know what comet was until I looked it up. There are a lot of differing opinions on what it could have been, so I have no clue. If someone has any idea, do reach out. Finally, I organized my html. Its strange to see how many comments I made towards the beginning, telling exactly what a div did. I was really unfamiliar with making page of that size, even if it wasn’t much. This time I didn’t go overboard in commenting and organising it I don’t have git so now I need to update my files on github, and edit the README. Once that’s done, its time to ship! Super excited for that"}, {"post_id": 22919, "ts": "2026-07-05T15:47:40Z", "hours": 4.1128, "text": "What I Added I think this might just be my best app yet. I created an app called Terminal, which is a ripoff PowerShell. I had so much fun making it! There are multiple commands, some which run an animation, and others that perform simple tasks. When I was done with Terminal, I saw that I had exactly 11 apps. Which is a great number, don’t get me wrong, but I wanted an even twelve. Hence-Comms. My final app. You need a password to access it. Where you may get the password? That’s up to you to click around and find out. If you’re curious enough to know what it is, but not enough to explore, I’ll put it in my READMe when I ship this! Because I do want everyone to be able to use all applications, if you don’t feel like a treasure hunt. It’s a pretty cool app that you miiighht need if you want to access another window. I added another button on the Top Bar. It opens up a window, that may or may not be related to Comms. Be warned, it probably might tell you exactly what Comms is but not how to access it. This window allows you to use whatever you find in Comms to good use! I also made the two-tone filter update while you choose the colours. I also discovered the Go Live extension, which has worked wonders for both my refresh button and my console, which kept showing me the phrase unsafe URL for every image I loaded. I’m glad it finally found peace in its security"}, {"post_id": 22203, "ts": "2026-07-04T15:40:02Z", "hours": 7.6867, "text": "What I Added I added a third slide to my sidebar, which means we get a new group of apps! With context to my last post about practicing DRY, I decided to parse through my code to see how much I could cut down. There was so much! I was under-using my classes so much, its crazy. Or so many places I didn’t make a class at all and just copy-pasted the styles on the buttons. I did my level best to fix all of that without breaking anything. My code looks much better now. Thanks for the tip, random reviewer I do not know-I finally saw the light lol. I made an app to place filters on images! Right now there’s a B&W filter and two toned filter the user can choose. There’s also an info button on the header if there’s any confusion. I feel like I’ll be adding that info button in a few more places. I also made a calendar. Okay, I’m going to vent here a little, feel free to scroll. This is mostly abt all the issues I ran into while coding-and all of it is very dumb. I learnt that I apparently didn’t know that its calendar not calender. Also I switch between American and British English a lot, so my html and js did NOT match in their spelling of “grey”. Istg, I make my own life harder at times. In the same vein, a similar naming mishap caused my js to break- it was at the end of the file, and hidden enough that its not visible while using. When I wrote the code for my calendar it didn’t work. I thought I made a mistake. I spent so much time rewriting, googling, getting frustrated. A lot of places it mentioned maybe the script wasn’t being defered properly. I was like nope, everything else works fine. I put the logic into the html script, it worked. I thought it was a mistake in the punctuation or indent and left it at that. Later in the day when I returned to make another app, it obviously did not work- I went through the same cycle. This time I was stubborn and didn’t want to put it in the html. I literally exhausted all possible options until I realized I could just check the console. There I did find an error, not in my calendar code, not in the app I was making, but in the filter app. I went through the five stages of grief in that second lol. I have no idea why I spelled grey differently. There should be a spellcheck while coding too. English is not my native language, so it could be a bit excusable, but I feel so dumb rn. You live and learn ig."}, {"post_id": 21307, "ts": "2026-07-03T04:55:00Z", "hours": 7.8197, "text": "So first of all, I got my payout! Thank you so much to everyone who voted and gave me feedback. All your suggestions were really great and I’ve started to fix some of the bugs you guys found. I would have probably not have found out about the zooming thing because I never zoom in lol. What I Added So, I added a task manager. It’s basically a to-do list, where you can list the stuff you need to get done and check the box once it is. Initially it was just a button the hid itself. Out of curiosity I googled and found out there is a way to add a checkbox! You make an input element and give it the type “checkbox”. I rewrote my code to add that. Then I made a stopwatch and timer thing. The js felt really hard to write, so I asked a friend for help and she basically guided and explained the logic to me. The timer style was modelled of that of my phone, which meant you needed to scroll to set the time. But the scrolling was interpreted as dragging by my dragging code, so I needed a fix. Right now, you need to click on the text and press the arrow keys to navigate it. I understand that it might not be very intuitive, so I added a pop-up warning. I also added a few more tracks to my song app along with a scroll bar. I implemented some suggestions from the reviews, like making the window offset at the centre instead of the top left and it has made such a difference. I also understood I was repeating myself a lot in the code as someone pointed out. I’m trying my best to be mindful and code effectively now! In the interest of transparency, I was making a weather app that could check your weather. I ran into a lot of issues on the first half itself. I spent a lot of time trying to fix it. At one point, it messed up all my other code, so I had to delete it. At least an hour or three was wasted in that. I feel like it’s a bit unfair of me to count that so I’ll turn off my tracker the next time I code. Idk, it just makes me feel like I’m cheating to count those hours when nothing really came out of it. Anyways, here’s the progress pic!"}, {"post_id": 17495, "ts": "2026-06-28T09:39:53Z", "hours": 5.9353, "text": "What I added: I really wanted to make a music player next, so that’s what I set upon making. I already knew that I wanted to make it look like an iPod. This app now can mute, skip to songs on the playlist, show you the menu and pause. It will also play on the background while the app is both open or closed until the song is over. Next up is a POST-IT app. It create multiple post its, change colours and has multiple formatting options. This was even more fun to make than the music player lol. My icon accidently hides behind the ipod icon, so I do need to fix that. Its pretty straightforward but I feel to lazy rn. I realized that if I were to keep making more features, my page was going to look really cluttered. I thought of adding another sidebar but decided against it. I instead made two buttons under the sidebar and grouped all my apps into two. So, when the current group is active, the other app icons are hidden, and by clicking the next button you can see the next group of apps. This is your reminder that you can make art with anything- even with a limited colour palette. So why not make it on my webOS? If you want more options, I just added an opacity slider and an option to choose your own colours."}, {"post_id": 12411, "ts": "2026-06-20T08:01:12Z", "hours": 0.9375, "text": "So this project is finally ready to ship. Sorry for the formatting on the last devlog, I didn’t realize they added Markdown. I’m sure that must have been a nightmare to read through! What I Did (Final Touches) I felt the buttons could use some pizzaz so I changed the background to black, the text and the border to orange. It looks so much better! Check out the calculator, it looks amazing now. Finally, I added a small animated pixel sprite on the bottom right of the screen. This sprite is just pure randomness personified. I had so much fun picking it out. — I created my GitHub repo and edited my README to look a little better. When I generated the link for my webpage on GitHub Pages, my top bar was cut off!?!? At that point, I was genuinely so frustrated. It wouldn’t fix no matter what I tried. In the end, I just generated a new link and it somehow showed up!? How? Great question, I have no idea. I’m so glad I finally finished this OS! I never got around to thinking of a name so it’s just gonna stay as Cyber-OS lol. I really never thought I would be able to make this, even when I started with the mission. I’m glad I stuck to it. Thanks for following along with me! Go check my OS out yourselves! Cheers!"}, {"post_id": 11343, "ts": "2026-06-18T15:37:20Z", "hours": 4.7439, "text": "What I’m Making : A custom web-based OS that I’ve taken to calling Cyber OS (cool name pending) What I’ve Done so Far: –So today might not have been the most productive day in creating something new per say. A lot of my time was spent refining features already available. Case in point, today I 1) Changed the content of one of my applications from interesting proses to words instead. I do maintain a list of obscure words, so it was really fun to pick which ones made the cut 2) I changed the canvas of my painting application from black to white and muted the colors available to fit my theme more. 3) I fixed an error in my calculator that involved exponents. I also changed the display to be slightly more neater. 4) I created an application to alter display settings. Most of the filters available are inspired from those old televisions, those really chunky cathode ray ones. I didn’t quite do it justice though I do think I might ship this as an initial version when I get the time. Not really sure about it, I’m really indecisive. Anyways, here’s the customary progress pic!"}, {"post_id": 10067, "ts": "2026-06-16T17:26:06Z", "hours": 4.5239, "text": "What I’m making -So I’m actively working on a custom built OS that I’ve been calling Cyber OS because I can’t think of a great name yet. I plan to make applications?/windows? for my hobbies, which are pretty wide ranging. From art to math to literature, the goal is to have something for everyone. What I’ve done -Quick recap, I made an information window, drew the background, and made a scalable code for closing and dragging windows. I then created my first app that is a small archive of phrases that I came across while reading that I particularly liked. -Update time! I made an application for drawing. It has eight colors, undo and redo buttons and a feature to change the brush size. What I struggled with -This time I had more of an issue making the code by myself. Most of the time was spent debugging tbh. I had a really major issue with the colors not showing up on the canvas. It was really a learning experience fixing that. I also realized that the brush slider just made my entire window move. So I changed it to an number input based thing. I ran into a few issues with the slider too, but managed to solve it relatively quicker. All in all, I’m really proud of all the progress I made. Cheers!"}, {"post_id": 8643, "ts": "2026-06-14T11:25:49Z", "hours": 6.5003, "text": "What I’m Making -A web-based OS that I’m calling Cyber OS currently. I’m a person with really diverse interests, so I’m creating something that will hopefully spark your interest too. What I’ve Done -Major style updates -Drew an app icon -made a draggable and closable window -connected the app and the window -created hover effects for each button -organized my code Next session I’ll probably begin creating the next app. I also want to make a task bar of sorts. Despite doing my best to keep my code clean its really messy rn. I’ll build the app in another file and then bring it over to my OS. Overall a really productive day, but I’m pretty pleased with the results. The progress from my previous logs is really visible. I’m knackered though, so I’m off for the day. Cheers!"}, {"post_id": 8174, "ts": "2026-06-13T16:56:20Z", "hours": 2.3675, "text": "What I’m Making -I’m working on a web-based OS that I’ve been calling Cyber OS (cool name pending) What I’ve added -a top bar -an active clock -a draggable and closable information button What I struggled with -I made a few mistakes with naming variables, which took me a lot longer to identify that it should have. -I couldn’t figure out why my page was a little larger than my screen. I kept having to scroll. I deleted a few lines of formatting and re-wrote it. Didn’t really work out. A second of googling later, I found out about the overflow button?/function? Phew. That was a relief. Cheers!"}, {"post_id": 8062, "ts": "2026-06-13T13:49:52Z", "hours": 1.0553, "text": "What I’m making: -I’m working on a Web-OS that I’ve named Cyber OS. What I’ve done so far -I created the welcome box and stylized it -Drew a wallpaper for the background What I struggled with -Mainly I had a bit of an issue with Github, because I couldn’t figure out why my time wasn’t logging when I was coding in an active workspace. Eventually I decided to copy the code I wrote to my VS editor and upload the project in Github later. I did loose around half an hour but uk….you do what you must."}]...
|
Title: Cyber OS by @Ann_with_an_e | Stardance
Dev Title: Cyber OS by @Ann_with_an_e | Stardance
Devlogs:
What I’m making: -I’m working on a Web-OS that I’ve named Cyber OS. What I’ve done so far -I created the welcome box and stylized it -Drew a wallpaper for the background What I struggled with -Mainly I had a bit of an issue with Github, because I couldn’t figure out why my time wasn’t logging when I was coding in an active workspace. Eventually I decided to copy the code I wrote to my VS editor and upload the project in Github later. I did loose around half an hour but uk….you do what you must.
What I’m Making -I’m working on a web-based OS that I’ve been calling Cyber OS (cool name pending) What I’ve added -a top bar -an active clock -a draggable and closable information button What I struggled with -I made a few mistakes with naming variables, which took me a lot longer to identify that it should have. -I couldn’t figure out why my page was a little larger than my screen. I kept having to scroll. I deleted a few lines of formatting and re-wrote it. Didn’t really work out. A second of googling later, I found out about the overflow button?/function? Phew. That was a relief. Cheers!
What I’m Making -A web-based OS that I’m calling Cyber OS currently. I’m a person with really diverse interests, so I’m creating something that will hopefully spark your interest too. What I’ve Done -Major style updates -Drew an app icon -made a draggable and closable window -connected the app and the window -created hover effects for each button -organized my code Next session I’ll probably begin creating the next app. I also want to make a task bar of sorts. Despite doing my best to keep my code clean its really messy rn. I’ll build the app in another file and then bring it over to my OS. Overall a really productive day, but I’m pretty pleased with the results. The progress from my previous logs is really visible. I’m knackered though, so I’m off for the day. Cheers!
What I’m making -So I’m actively working on a custom built OS that I’ve been calling Cyber OS because I can’t think of a great name yet. I plan to make applications?/windows? for my hobbies, which are pretty wide ranging. From art to math to literature, the goal is to have something for everyone. What I’ve done -Quick recap, I made an information window, drew the background, and made a scalable code for closing and dragging windows. I then created my first app that is a small archive of phrases that I came across while reading that I particularly liked. -Update time! I made an application for drawing. It has eight colors, undo and redo buttons and a feature to change the brush size. What I struggled with -This time I had more of an issue making the code by myself. Most of the time was spent debugging tbh. I had a really major issue with the colors not showing up on the canvas. It was really a learning experience fixing that. I also realized that the brush slider just made my entire window move. So I changed it to an number input based thing. I ran into a few issues with the slider too, but managed to solve it relatively quicker. All in all, I’m really proud of all the progress I made. Cheers!
What I’m Making : A custom web-based OS that I’ve taken to calling Cyber OS (cool name pending) What I’ve Done so Far: –So today might not have been the most productive day in creating something new per say. A lot of my time was spent refining features already available. Case in point, today I 1) Changed the content of one of my applications from interesting proses to words instead. I do maintain a list of obscure words, so it was really fun to pick which ones made the cut 2) I changed the canvas of my painting application from black to white and muted the colors available to fit my theme more. 3) I fixed an error in my calculator that involved exponents. I also changed the display to be slightly more neater. 4) I created an application to alter display settings. Most of the filters available are inspired from those old televisions, those really chunky cathode ray ones. I didn’t quite do it justice though I do think I might ship this as an initial version when I get the time. Not really sure about it, I’m really indecisive. Anyways, here’s the customary progress pic!
So this project is finally ready to ship. Sorry for the formatting on the last devlog, I didn’t realize they added Markdown. I’m sure that must have been a nightmare to read through! What I Did (Final Touches) I felt the buttons could use some pizzaz so I changed the background to black, the text and the border to orange. It looks so much better! Check out the calculator, it looks amazing now. Finally, I added a small animated pixel sprite on the bottom right of the screen. This sprite is just pure randomness personified. I had so much fun picking it out. — I created my GitHub repo and edited my README to look a little better. When I generated the link for my webpage on GitHub Pages, my top bar was cut off!?!? At that point, I was genuinely so frustrated. It wouldn’t fix no matter what I tried. In the end, I just generated a new link and it somehow showed up!? How? Great question, I have no idea. I’m so glad I finally finished this OS! I never got around to thinking of a name so it’s just gonna stay as Cyber-OS lol. I really never thought I would be able to make this, even when I started with the mission. I’m glad I stuck to it. Thanks for following along with me! Go check my OS out yourselves! Cheers!
What I added: I really wanted to make a music player next, so that’s what I set upon making. I already knew that I wanted to make it look like an iPod. This app now can mute, skip to songs on the playlist, show you the menu and pause. It will also play on the background while the app is both open or closed until the song is over. Next up is a POST-IT app. It create multiple post its, change colours and has multiple formatting options. This was even more fun to make than the music player lol. My icon accidently hides behind the ipod icon, so I do need to fix that. Its pretty straightforward but I feel to lazy rn. I realized that if I were to keep making more features, my page was going to look really cluttered. I thought of adding another sidebar but decided against it. I instead made two buttons under the sidebar and grouped all my apps into two. So, when the current group is active, the other app icons are hidden, and by clicking the next button you can see the next group of apps. This is your reminder that you can make art with anything- even with a limited colour palette. So why not make it on my webOS? If you want more options, I just added an opacity slider and an option to choose your own colours.
So first of all, I got my payout! Thank you so much to everyone who voted and gave me feedback. All your suggestions were really great and I’ve started to fix some of the bugs you guys found. I would have probably not have found out about the zooming thing because I never zoom in lol. What I Added So, I added a task manager. It’s basically a to-do list, where you can list the stuff you need to get done and check the box once it is. Initially it was just a button the hid itself. Out of curiosity I googled and found out there is a way to add a checkbox! You make an input element and give it the type “checkbox”. I rewrote my code to add that. Then I made a stopwatch and timer thing. The js felt really hard to write, so I asked a friend for help and she basically guided and explained the logic to me. The timer style was modelled of that of my phone, which meant you needed to scroll to set the time. But the scrolling was interpreted as dragging by my dragging code, so I needed a fix. Right now, you need to click on the text and press the arrow keys to navigate it. I understand that it might not be very intuitive, so I added a pop-up warning. I also added a few more tracks to my song app along with a scroll bar. I implemented some suggestions from the reviews, like making the window offset at the centre instead of the top left and it has made such a difference. I also understood I was repeating myself a lot in the code as someone pointed out. I’m trying my best to be mindful and code effectively now! In the interest of transparency, I was making a weather app that could check your weather. I ran into a lot of issues on the first half itself. I spent a lot of time trying to fix it. At one point, it messed up all my other code, so I had to delete it. At least an hour or three was wasted in that. I feel like it’s a bit unfair of me to count that so I’ll turn off my tracker the next time I code. Idk, it just makes me feel like I’m cheating to count those hours when nothing really came out of it. Anyways, here’s the progress pic!
What I Added I added a third slide to my sidebar, which means we get a new group of apps! With context to my last post about practicing DRY, I decided to parse through my code to see how much I could cut down. There was so much! I was under-using my classes so much, its crazy. Or so many places I didn’t make a class at all and just copy-pasted the styles on the buttons. I did my level best to fix all of that without breaking anything. My code looks much better now. Thanks for the tip, random reviewer I do not know-I finally saw the light lol. I made an app to place filters on images! Right now there’s a B&W filter and two toned filter the user can choose. There’s also an info button on the header if there’s any confusion. I feel like I’ll be adding that info button in a few more places. I also made a calendar. Okay, I’m going to vent here a little, feel free to scroll. This is mostly abt all the issues I ran into while coding-and all of it is very dumb. I learnt that I apparently didn’t know that its calendar not calender. Also I switch between American and British English a lot, so my html and js did NOT match in their spelling of “grey”. Istg, I make my own life harder at times. In the same vein, a similar naming mishap caused my js to break- it was at the end of the file, and hidden enough that its not visible while using. When I wrote the code for my calendar it didn’t work. I thought I made a mistake. I spent so much time rewriting, googling, getting frustrated. A lot of places it mentioned maybe the script wasn’t being defered properly. I was like nope, everything else works fine. I put the logic into the html script, it worked. I thought it was a mistake in the punctuation or indent and left it at that. Later in the day when I returned to make another app, it obviously did not work- I went through the same cycle. This time I was stubborn and didn’t want to put it in the html. I literally exhausted all possible options until I realized I could just check the console. There I did find an error, not in my calendar code, not in the app I was making, but in the filter app. I went through the five stages of grief in that second lol. I have no idea why I spelled grey differently. There should be a spellcheck while coding too. English is not my native language, so it could be a bit excusable, but I feel so dumb rn. You live and learn ig.
What I Added I think this might just be my best app yet. I created an app called Terminal, which is a ripoff PowerShell. I had so much fun making it! There are multiple commands, some which run an animation, and others that perform simple tasks. When I was done with Terminal, I saw that I had exactly 11 apps. Which is a great number, don’t get me wrong, but I wanted an even twelve. Hence-Comms. My final app. You need a password to access it. Where you may get the password? That’s up to you to click around and find out. If you’re curious enough to know what it is, but not enough to explore, I’ll put it in my READMe when I ship this! Because I do want everyone to be able to use all applications, if you don’t feel like a treasure hunt. It’s a pretty cool app that you miiighht need if you want to access another window. I added another button on the Top Bar. It opens up a window, that may or may not be related to Comms. Be warned, it probably might tell you exactly what Comms is but not how to access it. This window allows you to use whatever you find in Comms to good use! I also made the two-tone filter update while you choose the colours. I also discovered the Go Live extension, which has worked wonders for both my refresh button and my console, which kept showing me the phrase unsafe URL for every image I loaded. I’m glad it finally found peace in its security
What I added Okay, you guys; this might just be the most complete this project has ever been. I only did minor additions here, so here goes- I made add the buttons with text on them hover uniformly. Its slightly superficial, but I just wanted them to be uniform. I added information buttons on the header for certain apps that might have quirks or be un-intuitive to navigate. Tbh I copied the code for my first information button pop-up and just added a different letter in front of it. I also added wallpapers! You now have six wallpapers to choose from. Initially I wanted to draw all of them. The default background I drew btw, but I just don’t have the time for it rn, so maybe in the future. So someone reviewed and told me my project doesn’t work in comet. I didn’t really know what comet was until I looked it up. There are a lot of differing opinions on what it could have been, so I have no clue. If someone has any idea, do reach out. Finally, I organized my html. Its strange to see how many comments I made towards the beginning, telling exactly what a div did. I was really unfamiliar with making page of that size, even if it wasn’t much. This time I didn’t go overboard in commenting and organising it I don’t have git so now I need to update my files on github, and edit the README. Once that’s done, its time to ship! Super excited for that
Ships:
#Overview Cyber OS is a web based OS that is interactive with multiple draggable and closable windows. It has a hand-drawn background with a unique color palette inspired from cyberpunk and old CRT monitors. #Applications -Archive of Words: An application that introduces you to the most obscure words English has to offer. Have you ever wanted to win a crossword by knowing an eight letter word for theft? Well, here’s your chance! -Painterly: A standard painting application with a small twist- a pure black canvas and colors catered specifically for contrast without looking overwhelming. It also features a brush size changer, undo and redo buttons -Calculator: Your standard run-of-the-mill application for basic arithmetic computations -Display Settings: Distinct display settings meant to mimic the look of an old school CRT monitor. They can also be turned off, if they are not to the users’ liking. -Desktop Companion: An animated pixel sprite at the bottom right that keeps you company as you go about your work. _ I honestly found that learning code while actively creating a project was so much more enjoyable. I ran into so many hurdles, especially with the js code, from formatting to naming mishaps. I did learn more from making those mistakes than just knowing about them. I did want to create a few more interesting applications, but I need to learn a bit more before trying them. Keep an eye out! I’m incredibly proud of how this turned out. And I hope you’ll love it too! Cheers!
What I made: Cyber OS is an interactive, web-based OS. It has multiple applications, with closable, draggable windows with a z-index. There are roughly twelve applications in total, not counting the ones on the top bar. While I would love to ramble about all my applications, here are the ones I’m most proud of! In-Filter-Traitor: An application that filters your photos to either black and white, or a two-toned image that you can choose the shadows and highlights of! Ever felt your photos could benefit from a few more Gotham vibes? Never? Well, that’s disappointing. POST-IT: A virtual sticky note! I really love it mostly due to the design that may or may not have been a direct rip-off from the app in windows. It’s silly, but I’m happy that I managed to recreate it. Terminal: It lets you control the OS by practicing the ancient art of typing orange runes into a dark void. If you don’t know what to type, the void will inform you. Easter Egg! It just occurred to me that I may be overhyping this. Anyway, this is how it works- on the last slide of the sidebar there is an app called Comms. You will not be able to access it without a password. The password is hidden somewhere within the OS. There’s a window called Developer Logs that might tell you what Comms does, but not the password. If you’re short of time, or not up for a treasure hunt, the password is in my README with a spoiler warning! Also tell me if my hiding place was too obvious lol. Feeling Lost? Something not working? Please go through the README, I do think it covers most of the quirks you might encounter. Any application that’s un-intuitive has ⓘ. If you’re confused, click on it! If its anything that isn’t covered between the two, tell me! I’ll make sure to fix it up. What I’m proud of This took me so much time to make. I’m really proud that I managed to do this regularly between school, classes and competitions. I’m really bad at time management so this is a huge win for me! I’m also really proud of the fact that I’m able to debug stuff myself now a bit more. Before I needed to constantly google why my console was showing up an error, and how to fix it. Now I can somewhat understand why my code glitched, and the steps I can take to remedy it. I had so much fun making this, and now I’m going to be slightly lost now lol. But anyway, I put a lot of heart into this project, and I really hope that its visible! Thank you all for following along!...
|
1793537701.1198997
|
1793624101.1198997
|
|
10873
|
GALAXY SIMULATION by @BIG_JO | Stardance
|
BIG_JO
|
1
|
20.09
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T17:27:32Z", "hours": 17.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Galaxy Simulation, basically a small physics simulation where you can mess around with planets, gravity, orbits and collisions. You can add planets, change their properties, click on them to see their information and experiment with how gravity affects everything. The hardest part was definitely getting the physics to actually work properly. At first I was just trying to make the planets orbit the sun, but once I started adding gravity and collisions things got way more complicated. I had quite a few bugs where planets would do completely unexpected things, and I also had to work on performance because having too many objects could make it lag. I’m most proud of how much the project developed over time. The first version was really basic compared to what it is now, so seeing the progression through all my devlogs is probably my favourite part. To test it, just add some planets and experiment with their positions, sizes and gravity. Try making normal orbits, unstable orbits and just seeing what happens when planets get too close to each other. There isn’t really one “correct” way to use it — half the fun is breaking the simulation and seeing what happens.", "repo": "https://github.com/joseph777-e/GALAXY-SIMULATION", "demo": "https://galaxy-simulation.vercel.app/"}]...
|
[{"post_id": 77232, "ts": "202 [{"post_id": 77232, "ts": "2026-10-06T06:03:54Z", "hours": 1.1569, "text": "so today i spent most of my time tryin to rewrite all the whle css file and i got to go to scool so i will continue later"}, {"post_id": 67945, "ts": "2026-09-14T08:28:13Z", "hours": 0.7372, "text": "today i was just rewriting some parts of my java script code cause apparently it got more than 30 percent ai usage but like how should u expect me to write a whole physics movement in javascript like bro i genuinly suck at it"}, {"post_id": 62305, "ts": "2026-09-05T16:37:40Z", "hours": 1.1922, "text": "jus realised there was something wrong with the roche limit and had to be fixed i think the comets were very close to the sun so i made them go a bitt further… and i also truly despise javascript :)"}, {"post_id": 59055, "ts": "2026-08-31T17:23:40Z", "hours": 2.1892, "text": "so am finally done with the polishing of this website its not too complicated actually ts simple but can help visually represent gravity and how it work in space with diferrent bodies and like it might not be too much accurate but it still work and is not too laggy as some physics websites tend to be it work on literally any device if it laggs tho it might be becaus too many bodies are show"}, {"post_id": 50241, "ts": "2026-08-19T11:58:25Z", "hours": 1.0178, "text": "so i was checking for buggs and trying to add some features but i think the project is just done and neeeds nothing more or less and its been time i end it so i can concentrate on other projects that i want to finalise too."}, {"post_id": 40222, "ts": "2026-08-03T17:01:04Z", "hours": 1.5722, "text": "so its been long since i made a devlog today i tried to fix the old solar system problem by making them more spaced out and it kinda worked a bitt am still trying to get how to make it really work illbe working onn it with the help of some AI cause am genuinly lost rn"}, {"post_id": 20050, "ts": "2026-07-01T15:43:01Z", "hours": 2.0194, "text": "here is some updates for today i am trying to make the planets orbit the sun correctly in solar system mode without eventually crashing into the sun too quick. and i didnt post a devlog kinda for too long i actually kinda lazy to post them and i always forget about them"}, {"post_id": 9765, "ts": "2026-06-16T06:20:01Z", "hours": 3.2556, "text": "so i am currently working on the bodies limit creation and so far, it’s not going well…. everything lags when the body limit hits and i really don’t know why i think this day will be long but at least am done with the exams so i can spend as much time as i need…btw if u see where the problem is dont hesitate to comment it 😭"}, {"post_id": 8095, "ts": "2026-06-13T14:50:40Z", "hours": 2.9064, "text": "so it been a while since i posted a devlog there was a bug in my java code that was making everything to not work or display but i was finally able to get it and fix it and am also in my exam period so i cant stay on the project for too long unfortunately and yeah. i added some new features too a spawn body limit becuse the more bodies are made the more laggy its and it might even make the animation to stop depends on your computer like mine it was really lagging alot and i had to add that features anyways i hope ill soon be able to finish it and launch it …btw the body limit doesnt work too well just yet i just wanted to make a devlog and infrom of my progress."}, {"post_id": 4835, "ts": "2026-06-08T11:03:50Z", "hours": 2.7894, "text": "you can now click on the bodies and displays their information and can chnage their gravity individually"}, {"post_id": 4158, "ts": "2026-06-07T11:25:30Z", "hours": 1.2694, "text": "i just started, it’s basically a space simulation u can add planets and make black holes with 2stars colliding with gravity effects and stuff"}]...
|
Title: GALAXY SIMULATION by @BIG_JO | Stardance
D Title: GALAXY SIMULATION by @BIG_JO | Stardance
Devlogs:
i just started, it’s basically a space simulation u can add planets and make black holes with 2stars colliding with gravity effects and stuff
you can now click on the bodies and displays their information and can chnage their gravity individually
so it been a while since i posted a devlog there was a bug in my java code that was making everything to not work or display but i was finally able to get it and fix it and am also in my exam period so i cant stay on the project for too long unfortunately and yeah. i added some new features too a spawn body limit becuse the more bodies are made the more laggy its and it might even make the animation to stop depends on your computer like mine it was really lagging alot and i had to add that features anyways i hope ill soon be able to finish it and launch it …btw the body limit doesnt work too well just yet i just wanted to make a devlog and infrom of my progress.
so i am currently working on the bodies limit creation and so far, it’s not going well…. everything lags when the body limit hits and i really don’t know why i think this day will be long but at least am done with the exams so i can spend as much time as i need…btw if u see where the problem is dont hesitate to comment it 😭
here is some updates for today i am trying to make the planets orbit the sun correctly in solar system mode without eventually crashing into the sun too quick. and i didnt post a devlog kinda for too long i actually kinda lazy to post them and i always forget about them
so its been long since i made a devlog today i tried to fix the old solar system problem by making them more spaced out and it kinda worked a bitt am still trying to get how to make it really work illbe working onn it with the help of some AI cause am genuinly lost rn
so i was checking for buggs and trying to add some features but i think the project is just done and neeeds nothing more or less and its been time i end it so i can concentrate on other projects that i want to finalise too.
so am finally done with the polishing of this website its not too complicated actually ts simple but can help visually represent gravity and how it work in space with diferrent bodies and like it might not be too much accurate but it still work and is not too laggy as some physics websites tend to be it work on literally any device if it laggs tho it might be becaus too many bodies are show
jus realised there was something wrong with the roche limit and had to be fixed i think the comets were very close to the sun so i made them go a bitt further… and i also truly despise javascript :)
today i was just rewriting some parts of my java script code cause apparently it got more than 30 percent ai usage but like how should u expect me to write a whole physics movement in javascript like bro i genuinly suck at it
so today i spent most of my time tryin to rewrite all the whle css file and i got to go to scool so i will continue later
Ships:
I made Galaxy Simulation, basically a small physics simulation where you can mess around with planets, gravity, orbits and collisions. You can add planets, change their properties, click on them to see their information and experiment with how gravity affects everything. The hardest part was definitely getting the physics to actually work properly. At first I was just trying to make the planets orbit the sun, but once I started adding gravity and collisions things got way more complicated. I had quite a few bugs where planets would do completely unexpected things, and I also had to work on performance because having too many objects could make it lag. I’m most proud of how much the project developed over time. The first version was really basic compared to what it is now, so seeing the progression through all my devlogs is probably my favourite part. To test it, just add some planets and experiment with their positions, sizes and gravity. Try making normal orbits, unstable orbits and just seeing what happens when planets get too close to each other. There isn’t really one “correct” way to use it — half the fun is breaking the simulation and seeing what happens....
|
1793537706.0367844
|
1793624106.0367844
|
|
13645
|
Top Chatter - a discord bot by @muhamm38 | Stardan Top Chatter - a discord bot by @muhamm38 | Stardance...
|
muhamm38
|
1
|
7.0
|
52
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T19:48:44Z", "hours": 7.0, "multiplier": 7.76, "payout": 52, "blessing": "neutral", "text": "I made Top Chatter , a discord bot that tracks message data on servers and ranks people by who talks the most in the server. It has multiple commands so you can see who talked the most throughout different time periods. You can see in the last month, last week, last day, and all time who has the most messages. It is running Python using the discord.py library. It uses a sqlite3 database to store messages so the commands can run instantly. Instead of using Discord API’s to scrape the messages which takes very long and can crash easily, I made it so when the bot joins the server it sends a dm to the owner asking permission to scan the entire server for its previous message data, then it adds it to its database. If for some reason the dm isn’t sent (bot is offline or owner’s dms are closed) if you try to do a command like /all-time it tells you the bot has not scanned the past messages and you need to have an admin do the /setup command to have it get all the previous message data. Challenges Some challenges I went through were these: Transition to database storage. Initially every command was using discord apis to get the message data and display them in a leaderboard, that took very long and crashed very often. To solve this I switched to using a local sqlite3 database. When building the feature to scan old messages, the bot was accidentally wiping out data from previous channels as it moved to the next one. I had to completely rewrite the logic so the bot compiled everything across the entire server into a Python tracking dictionary first, and then saved it all to the database at the very end. Deploying the server had some issues but with the help of AI (yes I know ai everyone hates it but I had too) I was able to figure it out and get it hoted. How to Test Click the link to invite the bot to a discord server. If you are the owner it should dm you and then click the setup button to get it setup. 2.5 If owner has dm’s closed or isn’t responding to it, if you’re an admin, run the /setup command to set it up manually Type / to see the full UI menu of commands, ranging from /last-100-messages to /all-time, enjoy!", "repo": "https://github.com/iloveallah123/top-chatter-discord-bot", "demo": "https://discord.gg/g87c4mmTg"}]...
|
[{"post_id": 24907, "ts": "202 [{"post_id": 24907, "ts": "2026-07-08T19:34:07Z", "hours": 1.9919, "text": "Devlog 4 I finally moved all the time-based commands like /last-hour , /last-day , and /last-week to pull directly from the SQLite database instead of using the discord api to scrape thousands of messages. This makes the bot way faster and more reliable since it doesn’t have to calculate everything on the fly anymore. I was also able to add a brand new /last-month command. I also worked on polishing the experience and making the initial message scanning easier. Sometimes server owners have their DMs closed, so the bot would fail to send the automatic setup button when it joined. To fix this, I added a manual /setup command. Now, if the bot misses the DM, someone can just run the command themselves to start the background scan. It makes the onboarding process a lot smoother and prevents the bot from getting stuck. I finally got the bot hosted on a server! I moved it off my local computer and onto Hack Club Nest. I used PM2 to keep it running in the background permanently. This will probably be my final devlog as to be honest I’ve accomplished everything I wanted to with this bot and I feel very good about it because it has 1 core purpose and it does that purpose very well. I want to move on to other projects so I will probably ship it. If you want to try the bot out for yourself and add it to your server you can use this link: ( https://discord.com/oauth2/authorize?client_id=1514369908085887037&permissions=8&integration_type=0&scope=bot+applications.commands )"}, {"post_id": 23110, "ts": "2026-07-05T21:19:15Z", "hours": 1.8086, "text": "Devlog 3: I’ve made a lot of progress on the bot and changed how it tracks server activity and message data! I moved the bot away from using the Discord API to scrape the data because that took way too long and wasn’t efficient. For the all-time command, it now dms the owner of the server to ask them for permission to get the data from the server (using discord api) then it adds that data into an sqlite database. I set up an automatic table layout that tracks users by their permanent Discord user_id rather than their display name. This completely prevents leaderboard tracking bugs if a user decides to change their server nickname. Next, I added into the real-time event system. The bot now logs and adds to message counts instantly as they are sent in real-time, meaning we don’t have to wait for slow api scrapes anymore. I also updated the /all-time command to pull directly from this local database instantly. I might update the other commands but for now its just using the discord api. To make the system scaleable, I added a full-server data sync. When the bot joins a new server, it sends a DM to the owner with a green setup button. Clicking it runs a background scan across all text channels to build the database. I ran into two big bugs while setting this up: The bot was accidentally wiping out data from previous channels as it moved to the next one. I fixed this by making the bot compile everything across the entire server into a tracking dictionary first, and then saving it all to the database at the very end. I had to restructure the database schema to use a combined primary key of (guild_id, user_id). This keeps counts completely isolated so a user’s stats on one server never leak into another server. Lastly, I added stats.db to the .gitignore file so it isn’t committed to github. Next steps: I might just ship it with these core features (definitely not for a sticker or anything 😂 🙏) I will try and continue to work on it and somehow find away to integrate VC support. This would need me to: Build a VC tracking system to see who spends the most time in voice channels over days, weeks, and all-time. I might also in the future update the leaderboard messages from the commands to have embeds so it looks cleaner and more professional using discord embeds. Thank you for reading my 3rd devlog! Edit: OH YEAH I just remembered I’m gonna host it on a server so I don’t need it running locally all the time."}, {"post_id": 11381, "ts": "2026-06-18T16:57:56Z", "hours": 1.6392, "text": "Devlog 2: I finally finished adding the core message tracking features! I made some slash commands that let users track the top chatters over different time periods. I created the /last-hour , /last-day , and /last-week commands. I used Python’s datetime module to calculate an exact time period and then look back through the channel history to count up the messages. I also added a defer() function to each command so the bot can safely process the data without timing out or breaking. When implementing the /all-time command, I realized that downloading every single message ever sent could easily crash the bot. To fix this, I built a custom warning button using. Now, the bot sends a warning message with a Confirm & Run button, and it will only start the process if a user explicitly clicks it. I ran into a frustrating issue with Git where my .env file kept getting included in my commits even though it was listed in my .gitignore . I learned that because Git tracked the file early on, it was ignoring the ignore rules. I used the terminal to untrack it and was able to keep it ignored. Next I will be working on moving the bot away from API scraping and into local storage. I will be working on the following thiings: Setting up a SQLite database within the project. Logging and counting messages in real-time as they are sent. Rewriting the leaderboard commands to pull from the database instead of loading history from discord APIs. Thank you for reading my 2nd devlog!"}, {"post_id": 9000, "ts": "2026-06-15T00:18:52Z", "hours": 1.2375, "text": "Devlog 1: I was able to get the discord bot online and running! Set up the basic framework using Python and the discord.py library. I got it connected to discord and online and made it print a confirmation message to terminal when it’s online. I also used canva to make some custom art for the discord profile picture and the banner to make it look more professional and give it some personality. I ran into some SSL certificate verification errors when running the bot which was annoying to debug and fix. I used Github Copilot to help me debug and solve the issues and I figured out that I had to point Python to the certifi certificate bundle. Once I restarted and ran it again, the bot connected successfully. Next I will be working on the core features of the bot which are: A command that lets you see who has the most messages in a server within the last day. A command for most within the last week. A command for most messages all time in the server. These are the core basic features I plan to implement, I have other ideas like commands to see who spent time in vc (voice chat) in the same pattern as the messages commands and more things like that. Thank you for reading my 1st devlog!"}]...
|
Title: Top Chatter - a discord bot by @muhamm38 | Title: Top Chatter - a discord bot by @muhamm38 | Stardance
Devlogs:
Devlog 1: I was able to get the discord bot online and running! Set up the basic framework using Python and the discord.py library. I got it connected to discord and online and made it print a confirmation message to terminal when it’s online. I also used canva to make some custom art for the discord profile picture and the banner to make it look more professional and give it some personality. I ran into some SSL certificate verification errors when running the bot which was annoying to debug and fix. I used Github Copilot to help me debug and solve the issues and I figured out that I had to point Python to the certifi certificate bundle. Once I restarted and ran it again, the bot connected successfully. Next I will be working on the core features of the bot which are: A command that lets you see who has the most messages in a server within the last day. A command for most within the last week. A command for most messages all time in the server. These are the core basic features I plan to implement, I have other ideas like commands to see who spent time in vc (voice chat) in the same pattern as the messages commands and more things like that. Thank you for reading my 1st devlog!
Devlog 2: I finally finished adding the core message tracking features! I made some slash commands that let users track the top chatters over different time periods. I created the /last-hour , /last-day , and /last-week commands. I used Python’s datetime module to calculate an exact time period and then look back through the channel history to count up the messages. I also added a defer() function to each command so the bot can safely process the data without timing out or breaking. When implementing the /all-time command, I realized that downloading every single message ever sent could easily crash the bot. To fix this, I built a custom warning button using. Now, the bot sends a warning message with a Confirm & Run button, and it will only start the process if a user explicitly clicks it. I ran into a frustrating issue with Git where my .env file kept getting included in my commits even though it was listed in my .gitignore . I learned that because Git tracked the file early on, it was ignoring the ignore rules. I used the terminal to untrack it and was able to keep it ignored. Next I will be working on moving the bot away from API scraping and into local storage. I will be working on the following thiings: Setting up a SQLite database within the project. Logging and counting messages in real-time as they are sent. Rewriting the leaderboard commands to pull from the database instead of loading history from discord APIs. Thank you for reading my 2nd devlog!
Devlog 3: I’ve made a lot of progress on the bot and changed how it tracks server activity and message data! I moved the bot away from using the Discord API to scrape the data because that took way too long and wasn’t efficient. For the all-time command, it now dms the owner of the server to ask them for permission to get the data from the server (using discord api) then it adds that data into an sqlite database. I set up an automatic table layout that tracks users by their permanent Discord user_id rather than their display name. This completely prevents leaderboard tracking bugs if a user decides to change their server nickname. Next, I added into the real-time event system. The bot now logs and adds to message counts instantly as they are sent in real-time, meaning we don’t have to wait for slow api scrapes anymore. I also updated the /all-time command to pull directly from this local database instantly. I might update the other commands but for now its just using the discord api. To make the system scaleable, I added a full-server data sync. When the bot joins a new server, it sends a DM to the owner with a green setup button. Clicking it runs a background scan across all text channels to build the database. I ran into two big bugs while setting this up: The bot was accidentally wiping out data from previous channels as it moved to the next one. I fixed this by making the bot compile everything across the entire server into a tracking dictionary first, and then saving it all to the database at the very end. I had to restructure the database schema to use a combined primary key of (guild_id, user_id). This keeps counts completely isolated so a user’s stats on one server never leak into another server. Lastly, I added stats.db to the .gitignore file so it isn’t committed to github. Next steps: I might just ship it with these core features (definitely not for a sticker or anything 😂 🙏) I will try and continue to work on it and somehow find away to integrate VC support. This would need me to: Build a VC tracking system to see who spends the most time in voice channels over days, weeks, and all-time. I might also in the future update the leaderboard messages from the commands to have embeds so it looks cleaner and more professional using discord embeds. Thank you for reading my 3rd devlog! Edit: OH YEAH I just remembered I’m gonna host it on a server so I don’t need it running locally all the time.
Devlog 4 I finally moved all the time-based commands like /last-hour , /last-day , and /last-week to pull directly from the SQLite database instead of using the discord api to scrape thousands of messages. This makes the bot way faster and more reliable since it doesn’t have to calculate everything on the fly anymore. I was also able to add a brand new /last-month command. I also worked on polishing the experience and making the initial message scanning easier. Sometimes server owners have their DMs closed, so the bot would fail to send the automatic setup button when it joined. To fix this, I added a manual /setup command. Now, if the bot misses the DM, someone can just run the command themselves to start the background scan. It makes the onboarding process a lot smoother and prevents the bot from getting stuck. I finally got the bot hosted on a server! I moved it off my local computer and onto Hack Club Nest. I used PM2 to keep it running in the background permanently. This will probably be my final devlog as to be honest I’ve accomplished everything I wanted to with this bot and I feel very good about it because it has 1 core purpose and it does that purpose very well. I want to move on to other projects so I will probably ship it. If you want to try the bot out for yourself and add it to your server you can use this link: ( https://discord.com/oauth2/authorize?client_id=1514369908085887037&permissions=8&integration_type=0&scope=bot+applications.commands )
Ships:
I made Top Chatter , a discord bot that tracks message data on servers and ranks people by who talks the most in the server. It has multiple commands so you can see who talked the most throughout different time periods. You can see in the last month, last week, last day, and all time who has the most messages. It is running Python using the discord.py library. It uses a sqlite3 database to store messages so the commands can run instantly. Instead of using Discord API’s to scrape the messages which takes very long and can crash easily, I made it so when the bot joins the server it sends a dm to the owner asking permission to scan the entire server for its previous message data, then it adds it to its database. If for some reason the dm isn’t sent (bot is offline or owner’s dms are closed) if you try to do a command like /all-time it tells you the bot has not scanned the past messages and you need to have an admin do the /setup command to have it get all the previous message data. Challenges Some challenges I went through were these: Transition to database storage. Initially every command was using discord apis to get the message data and display them in a leaderboard, that took very long and crashed very often. To solve this I switched to using a local sqlite3 database. When building the feature to scan old messages, the bot was accidentally wiping out data from previous channels as it moved to the next one. I had to completely rewrite the logic so the bot compiled everything across the entire server into a Python tracking dictionary first, and then saved it all to the database at the very end. Deploying the server had some issues but with the help of AI (yes I know ai everyone hates it but I had too) I was able to figure it out and get it hoted. How to Test Click the link to invite the bot to a discord server. If you are the owner it should dm you and then click the setup button to get it setup. 2.5 If owner has dm’s closed or isn’t responding to it, if you’re an admin, run the /setup command to set it up manually Type / to see the full UI menu of commands, ranging from /last-100-messages to /all-time, enjoy!...
|
1793537708.178301
|
1793624108.178301
|
|
29776
|
Glancer by @Maarxius | Stardance
|
Maarxius
|
2
|
25.0
|
272
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-31T07:35:39Z", "hours": 1.0, "multiplier": 5.05, "payout": 0, "blessing": "neutral", "text": "Glancer: Final Devlog Glancer is meant to be a stand-in for TRMNL. I had an idea that I’d use it as an always-on desktop application running from a Mac, allowing you to control your calendar, connect your music, and do some other pretty interesting things. Honestly, building this has been a journey in and of itself. I’ve had fun adding photos of people, coding, learning how to do stuff, and well, anything really. It’s been a really interesting experience getting to experiment with different things and slowly turn an idea into an actual working project. What changed: For my last update, not much has changed apart from a few commit changes, some small bug fixes, and a lot of troubleshooting on my end. The troubleshooting wasn’t counted correctly in my original estimate, so I’d probably add another two hours to the total. What I’m proud of: In the end, I’m really proud of what I managed to do because this is my first time ever creating a project like this. Working around 25 hours on something might not seem like a lot, but it took me roughly two months to get here. Throughout that time, I learned a lot, experimented with different things, and had to figure out plenty of problems along the way. Honestly, it was really, really fun, and I’m happy with what I managed to create. So yeah!", "repo": "https://github.com/vismaysjayaram/glancer-desktop-view", "demo": "https://vismaysjayaram.github.io/glancer-desktop-view/"}, {"ship_num": 2, "ts": "2026-07-19T19:31:32Z", "hours": 24.0, "multiplier": 11.32, "payout": 272, "blessing": "neutral", "text": "Glancer Glancer is an always-on desk display designed to be passive, useful, and unobtrusive. The idea was simple: take a retired iPad Mini and turn it into something that could sit on a desk, plugged in, and display useful information without needing constant interaction. It was heavily inspired by Terminal, especially the idea that something passive could still become incredibly useful. I also wanted to explore the idea of reusing old technology instead of letting it become e-waste. Turning an old iPad that would otherwise sit unused into something functional felt like a pretty big win. What I made Glancer is a web app connected to a local computer. The iPad acts as the display, while a Python Flask server running on a Mac collects information, processes it, and sends it to the dashboard. The project includes a clock, weather card using the OpenWeather API, French vocabulary card, photo carousel, calendar, and a music card showing the current song, artist, playback progress, and an animated equalizer. The interesting part wasn’t just making the cards themselves, but building the system behind them. I created Python scripts, a Flask API, AppleScript integrations, calendar parsing, and JavaScript functions to dynamically update everything. Challenges The biggest challenge was definitely the calendar. AppleScript worked well with Music, but Calendar was a completely different story. Recurring events caused a lot of issues, and trying to parse Apple’s calendar data was much harder than expected. Eventually I had to learn about CalDAV and different calendar parsing methods to make it work. JavaScript was also a challenge, although in a more enjoyable way. Learning how objects and properties worked, and how to structure functions to update different parts of the dashboard, was a really useful experience. CSS also caused problems because the target device was an older iPad Mini. Features that worked perfectly on my computer did not always work on older versions of Safari, so a lot of time went into testing, fixing layouts, and making sure everything looked correct on the actual device. What I’m proud of The thing I’m most proud of is that I built the entire system myself. This project was less about writing a lot of code and more about solving problems. The calendar especially taught me a lot about handling messy data and transforming it into something useful. I also learned how to communicate with macOS using AppleScript, create local APIs with Flask, and have different devices communicate over a network. Learning Flask was probably one of the biggest milestones. Being able to run a local application on my network and have another device connect to it opens up a lot of possibilities for future projects. How to test it To run Glancer, you will need a Mac, Python 3, a display with a resolution of 1024×768 CSS pixels, and an Apple ID/iCloud account with a calendar. The full setup guide, installation instructions, and future updates can be found in the GitHub README. A working demo can be found on that side too. Glancer started as a simple HTML dashboard, but it became something much more. It is now a fully connected application that can communicate with my computer and display real-time information on an old device. I’m really happy with how it turned out.", "repo": "https://github.com/vismaysjayaram/glancer-desktop-view", "demo": "https://vismaysjayaram.github.io/glancer-desktop-view/"}]...
|
[{"post_id": 85376, "ts": "202 [{"post_id": 85376, "ts": "2026-10-31T07:31:19Z", "hours": 0.2808, "text": "Devlog: Final This is the proper, final devlog. Not much happened during 16 minutes of coding, but a lot changed. Mainly around the IPAD crashing TBH, I spent ages fiddling with settings to get the venv env to work properly. Apart from that, some github coding was fixed. I had so much fun, thank you so much for this program!"}, {"post_id": 35983, "ts": "2026-07-27T19:40:33Z", "hours": 0.845, "text": "Devlog 5! This session was mostly about polishing Glancer rather than adding new features.I started by improving how text overflow is handled, especially on the music and French dictionary cards. Long titles now scroll much more smoothly instead of being abruptly cut off.I also fixed a bug where portrait photos weren’t displaying correctly in the photo carousel, and spent some time stress testing the dashboard. Leaving it running for a while exposed a few bugs with cards cycling over time, which I was able to fix.The last big improvement was setting up a launchd service for the Flask server. Instead of manually starting it from Terminal every time, it now launches automatically in the background when my Mac starts, making Glancer feel much more like a proper application.No major new features this time, but a lot of small improvements that make the dashboard much nicer to use every day."}, {"post_id": 31178, "ts": "2026-07-19T11:36:55Z", "hours": 0.745, "text": "Devlog 5: Glancer is done, and it was fun! i touched up some fo the read-me, added the demo, and just polished a couple of things. Overall, it was really great View it Here!: https://vismaysjayaram.github.io/glancer-desktop-view/ Comment your thoughts please! I’ll add more dog photos to the demo if you comment!"}, {"post_id": 30790, "ts": "2026-07-18T17:59:13Z", "hours": 3.6592, "text": "Devlog 4! It’s finally done. After a lot of work, Glancer is finally feature complete. Before finishing everything off though, I decided to test it on an actual iPad instead of just my desktop browser. I’m really glad I did, because it immediately exposed a bunch of bugs caused by deprecated CSS. After a bit of trial and error (and Googling), I managed to iron them out. The first new feature I tackled was the photo carousel. Originally my plan was to have the iPad handle everything locally, but I quickly realised that wasn’t a great idea. Since I already had a Flask server running, it made much more sense to let it serve the photos as well. I ended up using what I’ve affectionately named the YOLO (You Only Load Once) method. The browser loads a photo, keeps displaying it until it eventually errors, then simply requests the next one from the server. It’s surprisingly simple, but it works really well. I also added photo shuffling and a photo counter, which rounded out the card nicely. After that I moved onto the French card, my mot du jour. That one was pretty straightforward. The hardest part was actually finding a good word list. After spending way too long looking, I gave up and had AI generate one that I could use instead. The final boss was the calendar. Compared to what I expected, the frontend was easy. The backend definitely wasn’t. There were plenty of Python bugs, Apple Calendar quirks and recurring event weirdness to work through, but eventually everything clicked into place and I finally got today’s events showing correctly. And with that… Glancer is done. There are still a few things I’d like to polish and test, but as far as the original vision goes, it’s complete. It’s honestly really satisfying seeing it all come together. What started as a simple dashboard idea is now something I actually use, and that’s a pretty cool feeling. Sure, i had to cut a lot of features, but i think what i lost, i gained thrice more."}, {"post_id": 30126, "ts": "2026-07-17T13:26:51Z", "hours": 8.3861, "text": "Devlog 3! Return of the killer Adblocker! This session was basically split into two parts: the weather card and the media card. The weather card was pretty simple, the media card absolutely was not. I started with the weather card as a bit of a warm up. I used the OpenWeather API to grab the data and then spent most of my time getting everything to display nicely. The one thing I wasn’t expecting was how annoying SVGs are in plain HTML. I ended up making one massive lookup table full of SVG markup so I could swap icons depending on the weather. Is it elegant? No. Did it work? Yep. After that I moved onto the main boss fight of this devlog: the media card. Unlike the weather card, this one actually needed the frontend and backend to communicate. That meant learning Flask for the first time. Surprisingly, Flask was really enjoyable to work with. Setting up routes and returning JSON was much easier than I expected. Then came AppleScript. Honestly, AppleScript wasn’t nearly as bad as I’d heard. It’s probably one of the most readable programming languages I’ve used. I used it to grab information from the Music app like the current song, artist, duration and playback position, then passed all of that through Flask so the browser could fetch it as JSON. Of course, nothing ever works the first time. One thing that really annoyed me was discovering that my ad blocker was blocking the HTTP requests to my own local Flask server. Good on it for doing its job, but it made debugging miserable. I downloaded another browser to test it… only to realise it also had a built-in ad blocker. In the end I gave up and switched to Safari. I didn’t even know Safari had DevTools, but they’re actually pretty decent. Once the backend was working I started designing the actual card. I tried a bunch of layouts before settling on one with the song title, artist, progress bar and a little animated equalizer. I also wanted playback controls and album art, but they just made the card feel cramped, so I scrapped both ideas. The JavaScript was honestly the hardest part. Nothing was particularly difficult, it was just lots of connecting everything together and trying not to confuse myself with variable names. I split everything into smaller functions so I could update different parts of the card independently, and I also got to experiment with try and catch for error handling. The rest of the session was mostly bug fixing, CSS animations and fighting JavaScript every step of the way. Overall this felt like a pretty big milestone. Glancer isn’t just displaying static information anymore. It’s actually talking to my Mac in real time, which makes it feel a lot more like a real application than just another webpage."}, {"post_id": 23352, "ts": "2026-07-06T07:59:13Z", "hours": 7.31, "text": "Devlog 2! Just got to work on the actual HTML progress. Eight hours later here’s what I’ve got.I started by quickly laying out the grid with CSS and HTML. I was going through my last devlog and decided to get straight into the first card the clock.The clock is running on Bebas Neue, centered and it uses a simple JS setup. I had no idea you could animate things with CSS like that, which was actually pretty fun to figure out.After that I moved on to the calendar since I hadn’t really planned it out properly. That kicked off what I’m calling the calendar arc and yeah it was painful.The calendar itself is pretty simple. It shows your next event, how much time is left, and the event details etc etc. But it ended up taking a lot of JavaScript work. Nothing complex just really annoying to deal with.What really got me was how JavaScript handles constants. How assigning something to a const doesn’t always create a fresh copy it just links back to the original reference. I had no idea about that.Eventually I got the calendar working, added a bit of styling and that was basically the full eight hours."}, {"post_id": 22117, "ts": "2026-07-04T12:23:22Z", "hours": 3.9717, "text": "Devlog 1: Hey there, excited to start my project Glancer. It’s an ambient desk display that will show the time, weather, my 3d printer status, maybe a media player, my calendar, and a selected photo that I plan to keep. I’m designing the system to run on an iPad Mini 2 (d original) , which makes CSS and HTML much easier since I only need to define a single area. I spent a crazy amount of time trying to understand how to define CSS headings and grids. Even though I only have to work with a single display resolution, it didn’t save me from going through way too many Web3Schools pages. who designed css? Who hurt you? Overall, it looks like it will turn into a great project. I also plan to add a Mac side screen acting as a pseudo-server-thingie, which could provide the iPad with data about the printer, weather, and more; though I might also just have the iPad handle everything directly. I spent a couple of hours designing and sketching before moving into Figma to prototype it. I’m now working on the actual code and I’m excited to see how it turns out. Overall, a solid amount of work done before starting development."}]...
|
Title: Glancer by @Maarxius | Stardance
Devlogs:
Title: Glancer by @Maarxius | Stardance
Devlogs:
Devlog 1: Hey there, excited to start my project Glancer. It’s an ambient desk display that will show the time, weather, my 3d printer status, maybe a media player, my calendar, and a selected photo that I plan to keep. I’m designing the system to run on an iPad Mini 2 (d original) , which makes CSS and HTML much easier since I only need to define a single area. I spent a crazy amount of time trying to understand how to define CSS headings and grids. Even though I only have to work with a single display resolution, it didn’t save me from going through way too many Web3Schools pages. who designed css? Who hurt you? Overall, it looks like it will turn into a great project. I also plan to add a Mac side screen acting as a pseudo-server-thingie, which could provide the iPad with data about the printer, weather, and more; though I might also just have the iPad handle everything directly. I spent a couple of hours designing and sketching before moving into Figma to prototype it. I’m now working on the actual code and I’m excited to see how it turns out. Overall, a solid amount of work done before starting development.
Devlog 2! Just got to work on the actual HTML progress. Eight hours later here’s what I’ve got.I started by quickly laying out the grid with CSS and HTML. I was going through my last devlog and decided to get straight into the first card the clock.The clock is running on Bebas Neue, centered and it uses a simple JS setup. I had no idea you could animate things with CSS like that, which was actually pretty fun to figure out.After that I moved on to the calendar since I hadn’t really planned it out properly. That kicked off what I’m calling the calendar arc and yeah it was painful.The calendar itself is pretty simple. It shows your next event, how much time is left, and the event details etc etc. But it ended up taking a lot of JavaScript work. Nothing complex just really annoying to deal with.What really got me was how JavaScript handles constants. How assigning something to a const doesn’t always create a fresh copy it just links back to the original reference. I had no idea about that.Eventually I got the calendar working, added a bit of styling and that was basically the full eight hours.
Devlog 3! Return of the killer Adblocker! This session was basically split into two parts: the weather card and the media card. The weather card was pretty simple, the media card absolutely was not. I started with the weather card as a bit of a warm up. I used the OpenWeather API to grab the data and then spent most of my time getting everything to display nicely. The one thing I wasn’t expecting was how annoying SVGs are in plain HTML. I ended up making one massive lookup table full of SVG markup so I could swap icons depending on the weather. Is it elegant? No. Did it work? Yep. After that I moved onto the main boss fight of this devlog: the media card. Unlike the weather card, this one actually needed the frontend and backend to communicate. That meant learning Flask for the first time. Surprisingly, Flask was really enjoyable to work with. Setting up routes and returning JSON was much easier than I expected. Then came AppleScript. Honestly, AppleScript wasn’t nearly as bad as I’d heard. It’s probably one of the most readable programming languages I’ve used. I used it to grab information from the Music app like the current song, artist, duration and playback position, then passed all of that through Flask so the browser could fetch it as JSON. Of course, nothing ever works the first time. One thing that really annoyed me was discovering that my ad blocker was blocking the HTTP requests to my own local Flask server. Good on it for doing its job, but it made debugging miserable. I downloaded another browser to test it… only to realise it also had a built-in ad blocker. In the end I gave up and switched to Safari. I didn’t even know Safari had DevTools, but they’re actually pretty decent. Once the backend was working I started designing the actual card. I tried a bunch of layouts before settling on one with the song title, artist, progress bar and a little animated equalizer. I also wanted playback controls and album art, but they just made the card feel cramped, so I scrapped both ideas. The JavaScript was honestly the hardest part. Nothing was particularly difficult, it was just lots of connecting everything together and trying not to confuse myself with variable names. I split everything into smaller functions so I could update different parts of the card independently, and I also got to experiment with try and catch for error handling. The rest of the session was mostly bug fixing, CSS animations and fighting JavaScript every step of the way. Overall this felt like a pretty big milestone. Glancer isn’t just displaying static information anymore. It’s actually talking to my Mac in real time, which makes it feel a lot more like a real application than just another webpage.
Devlog 4! It’s finally done. After a lot of work, Glancer is finally feature complete. Before finishing everything off though, I decided to test it on an actual iPad instead of just my desktop browser. I’m really glad I did, because it immediately exposed a bunch of bugs caused by deprecated CSS. After a bit of trial and error (and Googling), I managed to iron them out. The first new feature I tackled was the photo carousel. Originally my plan was to have the iPad handle everything locally, but I quickly realised that wasn’t a great idea. Since I already had a Flask server running, it made much more sense to let it serve the photos as well. I ended up using what I’ve affectionately named the YOLO (You Only Load Once) method. The browser loads a photo, keeps displaying it until it eventually errors, then simply requests the next one from the server. It’s surprisingly simple, but it works really well. I also added photo shuffling and a photo counter, which rounded out the card nicely. After that I moved onto the French card, my mot du jour. That one was pretty straightforward. The hardest part was actually finding a good word list. After spending way too long looking, I gave up and had AI generate one that I could use instead. The final boss was the calendar. Compared to what I expected, the frontend was easy. The backend definitely wasn’t. There were plenty of Python bugs, Apple Calendar quirks and recurring event weirdness to work through, but eventually everything clicked into place and I finally got today’s events showing correctly. And with that… Glancer is done. There are still a few things I’d like to polish and test, but as far as the original vision goes, it’s complete. It’s honestly really satisfying seeing it all come together. What started as a simple dashboard idea is now something I actually use, and that’s a pretty cool feeling. Sure, i had to cut a lot of features, but i think what i lost, i gained thrice more.
Devlog 5: Glancer is done, and it was fun! i touched up some fo the read-me, added the demo, and just polished a couple of things. Overall, it was really great View it Here!: https://vismaysjayaram.github.io/glancer-desktop-view/ Comment your thoughts please! I’ll add more dog photos to the demo if you comment!
Devlog 5! This session was mostly about polishing Glancer rather than adding new features.I started by improving how text overflow is handled, especially on the music and French dictionary cards. Long titles now scroll much more smoothly instead of being abruptly cut off.I also fixed a bug where portrait photos weren’t displaying correctly in the photo carousel, and spent some time stress testing the dashboard. Leaving it running for a while exposed a few bugs with cards cycling over time, which I was able to fix.The last big improvement was setting up a launchd service for the Flask server. Instead of manually starting it from Terminal every time, it now launches automatically in the background when my Mac starts, making Glancer feel much more like a proper application.No major new features this time, but a lot of small improvements that make the dashboard much nicer to use every day.
Devlog: Final This is the proper, final devlog. Not much happened during 16 minutes of coding, but a lot changed. Mainly around the IPAD crashing TBH, I spent ages fiddling with settings to get the venv env to work properly. Apart from that, some github coding was fixed. I had so much fun, thank you so much for this program!
Ships:
Glancer Glancer is an always-on desk display designed to be passive, useful, and unobtrusive. The idea was simple: take a retired iPad Mini and turn it into something that could sit on a desk, plugged in, and display useful information without needing constant interaction. It was heavily inspired by Terminal, especially the idea that something passive could still become incredibly useful. I also wanted to explore the idea of reusing old technology instead of letting it become e-waste. Turning an old iPad that would otherwise sit unused into something functional felt like a pretty big win. What I made Glancer is a web app connected to a local computer. The iPad acts as the display, while a Python Flask server running on a Mac collects information, processes it, and sends it to the dashboard. The project includes a clock, weather card using the OpenWeather API, French vocabulary card, photo carousel, calendar, and a music card showing the current song, artist, playback progress, and an animated equalizer. The interesting part wasn’t just making the cards themselves, but building the system behind them. I created Python scripts, a Flask API, AppleScript integrations, calendar parsing, and JavaScript functions to dynamically update everything. Challenges The biggest challenge was definitely the calendar. AppleScript worked well with Music, but Calendar was a completely different story. Recurring events caused a lot of issues, and trying to parse Apple’s calendar data was much harder than expected. Eventually I had to learn about CalDAV and different calendar parsing methods to make it work. JavaScript was also a challenge, although in a more enjoyable way. Learning how objects and properties worked, and how to structure functions to update different parts of the dashboard, was a really useful experience. CSS also caused problems because the target device was an older iPad Mini. Features that worked perfectly on my computer did not always work on older versions of Safari, so a lot of time went into testing, fixing layouts, and making sure everything looked correct on the actual device. What I’m proud of The thing I’m most proud of is that I built the entire system myself. This project was less about writing a lot of code and more about solving problems. The calendar especially taught me a lot about handling messy data and transforming it into something useful. I also learned how to communicate with macOS using AppleScript, create local APIs with Flask, and have different devices communicate over a network. Learning Flask was probably one of the biggest milestones. Being able to run a local application on my network and have another device connect to it opens up a lot of possibilities for future projects. How to test it To run Glancer, you will need a Mac, Python 3, a display with a resolution of 1024×768 CSS pixels, and an Apple ID/iCloud account with a calendar. The full setup guide, installation instructions, and future updates can be found in the GitHub README. A working demo can be found on that side too. Glancer started as a simple HTML dashboard, but it became something much more. It is now a fully connected application that can communicate with my computer and display real-time information on an old device. I’m really happy with how it turned out.
Glancer: Final Devlog Glancer is meant to be a stand-in for TRMNL. I had an idea that I’d use it as an always-on desktop application running from a Mac, allowing you to control your calendar, connect your music, and do some other pretty interesting things. Honestly, building this has been a journey in and of itself. I’ve had fun adding photos of people, coding, learning how to do stuff, and well, anything really. It’s been a really interesting experience getting to experiment with different things and slowly turn an idea into an actual working project. What changed: For my last update, not much has changed apart from a few commit changes, some small bug fixes, and a lot of troubleshooting on my end. The troubleshooting wasn’t counted correctly in my original estimate, so I’d probably add another two hours to the total. What I’m proud of: In the end, I’m really proud of what I managed to do because this is my first time ever creating a project like this. Working around 25 hours on something might not seem like a lot, but it took me roughly two months to get here. Throughout that time, I learned a lot, experimented with different things, and had to figure out plenty of problems along the way. Honestly, it was really, really fun, and I’m happy with what I managed to create. So yeah!...
|
1793537709.3653798
|
1793624109.3653798
|
|
38042
|
VoidSeed by @otzpt | Stardance
|
otzpt
|
1
|
12.53
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-15T13:29:08Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My aim was never been to create a useful replacement for ChatGPT; instead, I decided to understand what goes on inside a language model and so I created the transformer, the training loop, the tokenizer/data pipeline, and the retrieval layer myself. It went through two phases: 24M parameters trained on TinyStories as the starter experiment 155M parameters trained on ~2B tokens of security documentation Full-text retrieval using SQLite FTS5 A custom training pipeline that includes the use of mixed precision, checkpointing, and cosine LR scheduling, etc. The model is awful at actually answering questions ; that’s basically the whole point. While they are able to generate coherent text and the more extensive model can make use of the security documentation that has been retrieved, don’t expect anything like frontier-model level reasoning; it’s a small model designed to learn from existing models rather than to replace those which cost millions to train. From this project I learned more regarding transformers, training, data, retrieval, and the actual situation with small models than I would have if I had just used an existing framework.", "repo": "https://github.com/otzpt/VOIDSEED", "demo": "https://llmwebsite-pink.vercel.app/"}]...
|
[{"post_id": 75917, "ts": "202 [{"post_id": 75917, "ts": "2026-10-01T16:34:14Z", "hours": 1.5283, "text": "Fix for ship The Ship was rejected for AI readme (wrong banner and AI written AI usage declaration, but this is not smt that counts time towards devlog so it’s not going to be mentioned) which I had already re-written, so I thought what could maybe fix the ship issue, and an idea came to mind: if the readme sounds AI written then I will fully re-write the readme from scratch and only use AI to fix typos (ex: LMM to LLM or then to than), so that is what I did, I re-wrote the entire readme. The problem There was a big problem: it had been so long I didn’t remember the code well, so I had to study the entire code base because of the readme. In the process, I found a bug in chat.py , which luckily was a quick fix, just a if there. Extra If you are wondering why the devlog is 1h and 30m, I also don’t know. If I had to guess, it is that I re-wrote the readme a first time and didn’t make the devlog, so there is that extra that could also be why it got rejected for the same reason as before (AI readme)."}, {"post_id": 45247, "ts": "2026-08-11T16:19:57Z", "hours": 1.7969, "text": "tiny-llm: KV-cache, a public API, and shipping the whole thing Last devlog left off with the 100M model trained and RAG wired into chat.py , generating in ~50s per reply. This one covers making that fast, and getting the whole pipeline live on the internet. Understanding KV-cache Without a cache, every new token recalculates K/V for all tokens already processed, even though those values haven’t changed. The KV cache keeps them around and only computes K/V for the new token. Three real changes to model.py : CausalSelfAttention.forward now takes an optional kv_cache , concatenates new K/V onto it along the sequence dimension, and returns the updated cache. The causal mask only applies when there’s no cache. With a cache, the new token’s query attends over the entire K/V (past + new), and since generation only ever feeds one new token at a time once a cache exists, there’s no future position to accidentally see. “No mask” is the correct causal mask in that case, not an approximation. Position embeddings need to be absolute, not relative to the current call. With a cache, x is only the new tokens, so position 0 here is really past_length in the full sequence, pulled from the cached K’s sequence-length dimension. Before relying on the cache, I added a correctness check: run the whole sequence normally, then one token at a time through the cache, compare logits with torch.allclose . They matched. Wanted to confirm correctness before worrying about performance. Wiring it into generation chat.py and backend.py now do a prefill (whole prompt through the model once, building the initial cache) followed by decode steps that only pass the newest token plus the accumulated cache, instead of re-encoding a sliding window every step. Deploying: Nest, Vercel, and bugs that only show up live Backend/model : FastAPI on Hack Club Nest (Stardance’s rules don’t allow Hugging Face for hosting), running as a systemd service, bound to 127.0.0.1 behind Caddy for TLS. Frontend : static HTML/CSS/JS on Vercel, auto-deployed via GitHub Actions. Real bugs surfaced by going live: addMessage() never returned the div it created, so every successful reply crashed setting .textContent on undefined , landing in the catch block and showing an error even when the backend answered correctly. Live on the public demo before it got caught. The rate limiter keyed on a spoofable query parameter instead of the real client IP. Fixed by reading X-Forwarded-For ’s last hop, which only Caddy can set here. No protection against concurrent requests on a 2-vCPU, 1.5GB box with a documented prior OOM kill. Queuing behind a lock still pushed memory to the ceiling, so it became a 503 (fail fast) instead. A missing message field crashed inside search() . Now returns 400 first. The model’s sanity-check block ran on every import, not just direct execution. Gated behind if __name__ == \"__main__\": . The result /generate went from ~50s to ~4.0s, a ~12.5x speedup, same model, same box, real public HTTPS endpoint. Verified live, not assumed. What’s running now A GPT trained from scratch, retrieval-augmented over real security docs, served with KV-cache inference behind a rate-limited public API. Every piece went through a review pass that caught real, live bugs before calling it done. The model’s output quality at 100M params is the physical ceiling of this scale, not a bug to fix, that was always the outcome of training something this size from nothing. Getting the whole stack this far, correctly, is the milestone."}, {"post_id": 45049, "ts": "2026-08-11T09:30:36Z", "hours": 1.1694, "text": "tiny-llm: the 100M model is trained, and RAG is wired in The 100M parameter run is done. 976,562 steps on a 2B-token corpus, and chat.py now pulls retrieved passages before generating instead of relying on memorized weights. The problem, and the fix Started out wanting this model trained purely on security content (HackTricks, PayloadsAllTheThings, SecLists, GTFOBins, CheatSheetSeries, wstg). All of that combined comes to about 6.73M tokens. Compute-optimal for a 100M model is around 2B tokens, real security wikis just don’t reach that scale, and no amount of repo-hunting was going to fix that 300x gap. The solution i found was blend the 6.73M security tokens into a 2B-token corpus, topped up with FineWeb-Edu for general English coverage. The model gets real security-domain exposure plus enough general text to actually hold together grammatically, not by inventing security content that doesn’t exist, but by being upfront about what’s actually available. The training run d_model=768, n_heads=12, n_layer=12 4x the previous 24M config. Config changes were straightforward, getting a resumable 50-hour run right was the actual work: Checkpoint pruning — early on, checkpoints/ silently grew to 561GB before a torch.save call failed with a disk-full error mid-write. Fixed by keeping only the 5 most recent checkpoints on every save, removing older ones automatically. torch.compile ordering — resuming from a checkpoint failed with a state_dict key mismatch the first time, because model = torch.compile(model) was running before the resume logic loaded the weights. Compiled models get every parameter name prefixed with _orig_mod. , so loading a plain checkpoint into a compiled model (or vice versa) breaks. Fixed by moving the resume block to before the torch.compile call — load into the “bare” model first, compile after. Verified resume actually works — killed the process mid-run, restarted, confirmed it picked up exactly where it left off (same step, same loss) before trusting it for the full 50 hours unattended. Final loss landed around 3.5–3.8 (train and val tracking closely) — expected for a corpus this heterogeneous (security docs + general web text) compared to the tighter 1.4–1.8 range on TinyStories. Wiring in retrieval A 100M model isn’t going to reliably “know” security facts from 6.73M tokens seen once inside a 2B-token corpus — so instead of hoping the weights memorized it, chat.py now retrieves first: User’s prompt goes to a local SQLite FTS5 search index built over the same repos/ content used in training Top-k matching passages come back with source, heading, and BM25 relevance score Those passages get prepended to the prompt as context before the model generates Straightforward in concept, but ran into block_size=256 limits fast, retrieved passages plus the question can easily blow past what the model was trained to handle positionally. Fixed by truncating the encoded prompt to the last 256 tokens before generation, keeping the question and “Answer:” cue intact even if some of the retrieved context gets cut from the front. What actually happens now Asked “What is SQL injection?” — with retrieval wired in, the model opens with something closer to on-topic (“one of the most powerful tools available to attackers”) instead of pure noise, but drifts into plausible-sounding but fabricated details a few sentences in. That’s the honest result at this scale: retrieval gives it real information to start from, but staying faithful to that context for 100 generated tokens is past what 100M parameters can reliably do. Better than without retrieval, not a fix for the underlying scale limit."}, {"post_id": 42260, "ts": "2026-08-06T21:44:21Z", "hours": 1.7903, "text": "tiny-llm: 24M model trained, and it actually generates coherent stories Picked up from the last devlog — train.py was working (fp16, grad clipping, val loss, checkpointing), but only tested on 2000 steps. This one covers finishing the training setup, the real 4-hour run, and getting the model talking through a CLI. Cosine LR with warmup Added a proper learning rate schedule before committing to a long run: Warmup — LR ramps up linearly from 0 to the target (3e-4) over the first 2000 steps, instead of hitting the model with full LR while the weights are still random. Cosine decay — after warmup, LR follows a cosine curve down toward 0 over the rest of training, so the model settles into finer adjustments by the end instead of taking large steps the whole way through. Nothing exotic here — PyTorch doesn’t need a library for this, just a function that computes the right LR for the current step and gets applied to the optimizer’s param groups each iteration. The real run 474M tokens (the full TinyStories corpus), which comes out to ~231,445 steps at batch_size=8, block_size=256 . Ran for about 4 hours on the RTX 2080 Super: step 0: train loss 11.01 val loss 10.62 step 231000: train loss 1.48 val loss 1.49 step 231400: train loss 1.82 val loss 1.69 Train and val loss tracked closely the entire run — no overfitting. Loss in the 1.4–1.8 range by the end, a solid result for a from-scratch 24M model on this corpus. sample.py: watching it actually generate Wrote a script to load a checkpoint and generate text autoregressively — feed in a prompt, predict the next token, append it, repeat. Had to fix two small but important bugs along the way: torch.arange and torch.triu inside the model default to creating tensors on CPU even when everything else is on GPU — same device-mismatch class of bug as during training, fixed the same way ( device=x.device ). Loading the checkpoint failed at first because torch.compile prefixes every parameter name with _orig_mod. — stripped it with a quick dict comprehension before calling load_state_dict . First real generation, prompted with “once upon a time”: once upon a time, there was a fish named Fin. Fin was very brave and always had a big challenge to do. One day, Fin asked his friend, Sally, “Will you marry me?” Sally said, “Yes, Fin! Let’s go!” Fin and Sally had a big adventure in the ocean… Not perfect logic (fish swimming through an ocean “full of fish to eat” is a little off), but grammatically solid, consistent character names throughout, and a real narrative arc. Exactly what you’d expect from a well-trained 24M model on TinyStories. chat.py: a quick interactive loop Wrapped the generation code in a while True loop so the model loads once and takes prompts repeatedly instead of restarting for every single generation. Worth noting for anyone trying this themselves: this is a base model , not an instruction-tuned chat model — it doesn’t “answer” prompts, it just continues them as text. Say “hello” and it treats that as the opening of a story, not a greeting to respond to. That’s expected behavior at this stage, not a bug — instruction-following is a separate fine-tuning step for later. What’s next The full pipeline — prepare.py → train.py → sample.py/chat.py — is confirmed working end-to-end, from raw dataset to a model you can actually talk to (in the “continues your text” sense). Next up: scaling to the 100M-param run on a 2B-token corpus, this time blending real security-focused text (HackTricks, PayloadsAllTheThings, and others) with general web text, plus a retrieval index so the model can pull in relevant passages instead of relying purely on memorized weights."}, {"post_id": 40820, "ts": "2026-08-04T16:14:21Z", "hours": 1.0447, "text": "tiny-llm: train.py works, and the model is actually learning model.py and prepare.py were done, but nothing had actually been trained yet. This devlog covers train.py and the first real smoke test on the 24M-parameters config. Writing train.py Wrote the training loop the same way as the model piece by piece, understanding each part before moving on: get_batch — pulls random windows from the memmapped .bin files. x is a block of tokens, y is the same block shifted by one position (next-token prediction). Understanding why y is just x shifted by 1 was one of those small moments where next-token prediction actually clicked. Mixed precision (fp16 + GradScaler) — my GPU (RTX 2080 Super, Turing) doesn’t have real bf16 tensor cores, so fp16 with a GradScaler is the right call. The scaler exists because fp16 has a much narrower range than fp32 — small gradients can underflow to zero and silently vanish. The scaler multiplies the loss up before backward() and unscales before step() , so nothing gets lost in the process. Gradient clipping — caps the gradient norm at 1.0 before the optimizer step, to stop occasional exploding gradients from wrecking a good run. Validation loss — evaluates on a held-out batch from val.bin every 100 steps, wrapped in model.eval() + @torch.no_grad() , so I can actually tell if the model is generalizing instead of just memorizing. Checkpointing — saves model + optimizer state every 1000 steps. Training a real run for tens of hours without this would be a great way to lose everything to one crash. Debugging session Hit two device-mismatch errors early on — torch.arange and torch.triu both default to creating tensors on CPU, even when the rest of the model is on the GPU. Fixed by explicitly passing device=x.device wherever a new tensor gets created inside the model. Small bug, but a good reminder that PyTorch doesn’t infer device placement for you. First real run Ran the 24M-param smoke test ( n_layer=6, n_head=6, n_embd=384, block_size=256 ) on TinyStories, ~470M tokens, for 2000 steps on my RTX 2080 Super: step 0: train loss 11.01 val loss 10.62 step 1000: train loss 3.34 val loss 3.47 step 1900: train loss 2.89 val loss 3.10 Loss starts right around ln(50257) ≈ 10.8 , which is exactly what you’d expect from a model guessing uniformly over the vocabulary before it’s learned anything. Train and val loss track each other closely the whole way down — no sign of overfitting, which is what I wanted to confirm before committing to a much longer run. What’s next The full pipeline is confirmed working end-to-end: prepare.py → get_batch → model.py → train.py , all on my own hardware. Next step is adding a cosine learning rate schedule with warmup, then moving on to the actual 100M-param run. PS: train.py had some AI usage"}, {"post_id": 36434, "ts": "2026-07-28T15:39:08Z", "hours": 5.0886, "text": "tiny-llm: getting the data pipeline and model architecture in place Before writing any model code, I needed a way to actually get training data into a usable format. prepare.py handles that: it streams a dataset from HuggingFace (starting with TinyStories, ~470M tokens), tokenizes it with the GPT-2 BPE tokenizer via tiktoken , and writes it out as flat uint16 arrays split into train.bin and val.bin . A few details mattered here even though I didn’t write this part myself: Tokens are stored as uint16 instead of the more obvious int32 / int64 — GPT-2’s vocab is 50,257 tokens, which fits comfortably under 65,536, so uint16 cuts file size in half for free. The split between train/val happens per document , not per token. Each story gets an end-of-text token appended, and documents are randomly assigned to train or val as a whole — so a story never gets cut in half across the train/val boundary and leaks information. Files are written so they can be read later with np.memmap , meaning the corpus never has to fit in RAM — training just maps the file and reads slices from disk on demand. With the data pipeline sorted, I moved on to the part I actually wanted to understand deeply: the model itself. That’s model.py , CausalSelfAttention , MLP , Block , and GPT , all written and shape-tested from scratch. Having both pieces done means the two “boring but necessary” and “the actual point of the project” halves are finally connected: real tokenized text on one end, a transformer architecture ready to consume it on the other. Next: train.py — wiring prepare.py ’s output into model.py via memmap batching, cross-entropy loss, AdamW, and a training loop."}]...
|
Title: VoidSeed by @otzpt | Stardance
Devlogs:
ti Title: VoidSeed by @otzpt | Stardance
Devlogs:
tiny-llm: getting the data pipeline and model architecture in place Before writing any model code, I needed a way to actually get training data into a usable format. prepare.py handles that: it streams a dataset from HuggingFace (starting with TinyStories, ~470M tokens), tokenizes it with the GPT-2 BPE tokenizer via tiktoken , and writes it out as flat uint16 arrays split into train.bin and val.bin . A few details mattered here even though I didn’t write this part myself: Tokens are stored as uint16 instead of the more obvious int32 / int64 — GPT-2’s vocab is 50,257 tokens, which fits comfortably under 65,536, so uint16 cuts file size in half for free. The split between train/val happens per document , not per token. Each story gets an end-of-text token appended, and documents are randomly assigned to train or val as a whole — so a story never gets cut in half across the train/val boundary and leaks information. Files are written so they can be read later with np.memmap , meaning the corpus never has to fit in RAM — training just maps the file and reads slices from disk on demand. With the data pipeline sorted, I moved on to the part I actually wanted to understand deeply: the model itself. That’s model.py , CausalSelfAttention , MLP , Block , and GPT , all written and shape-tested from scratch. Having both pieces done means the two “boring but necessary” and “the actual point of the project” halves are finally connected: real tokenized text on one end, a transformer architecture ready to consume it on the other. Next: train.py — wiring prepare.py ’s output into model.py via memmap batching, cross-entropy loss, AdamW, and a training loop.
tiny-llm: train.py works, and the model is actually learning model.py and prepare.py were done, but nothing had actually been trained yet. This devlog covers train.py and the first real smoke test on the 24M-parameters config. Writing train.py Wrote the training loop the same way as the model piece by piece, understanding each part before moving on: get_batch — pulls random windows from the memmapped .bin files. x is a block of tokens, y is the same block shifted by one position (next-token prediction). Understanding why y is just x shifted by 1 was one of those small moments where next-token prediction actually clicked. Mixed precision (fp16 + GradScaler) — my GPU (RTX 2080 Super, Turing) doesn’t have real bf16 tensor cores, so fp16 with a GradScaler is the right call. The scaler exists because fp16 has a much narrower range than fp32 — small gradients can underflow to zero and silently vanish. The scaler multiplies the loss up before backward() and unscales before step() , so nothing gets lost in the process. Gradient clipping — caps the gradient norm at 1.0 before the optimizer step, to stop occasional exploding gradients from wrecking a good run. Validation loss — evaluates on a held-out batch from val.bin every 100 steps, wrapped in model.eval() + @torch.no_grad() , so I can actually tell if the model is generalizing instead of just memorizing. Checkpointing — saves model + optimizer state every 1000 steps. Training a real run for tens of hours without this would be a great way to lose everything to one crash. Debugging session Hit two device-mismatch errors early on — torch.arange and torch.triu both default to creating tensors on CPU, even when the rest of the model is on the GPU. Fixed by explicitly passing device=x.device wherever a new tensor gets created inside the model. Small bug, but a good reminder that PyTorch doesn’t infer device placement for you. First real run Ran the 24M-param smoke test ( n_layer=6, n_head=6, n_embd=384, block_size=256 ) on TinyStories, ~470M tokens, for 2000 steps on my RTX 2080 Super: step 0: train loss 11.01 val loss 10.62 step 1000: train loss 3.34 val loss 3.47 step 1900: train loss 2.89 val loss 3.10 Loss starts right around ln(50257) ≈ 10.8 , which is exactly what you’d expect from a model guessing uniformly over the vocabulary before it’s learned anything. Train and val loss track each other closely the whole way down — no sign of overfitting, which is what I wanted to confirm before committing to a much longer run. What’s next The full pipeline is confirmed working end-to-end: prepare.py → get_batch → model.py → train.py , all on my own hardware. Next step is adding a cosine learning rate schedule with warmup, then moving on to the actual 100M-param run. PS: train.py had some AI usage
tiny-llm: 24M model trained, and it actually generates coherent stories Picked up from the last devlog — train.py was working (fp16, grad clipping, val loss, checkpointing), but only tested on 2000 steps. This one covers finishing the training setup, the real 4-hour run, and getting the model talking through a CLI. Cosine LR with warmup Added a proper learning rate schedule before committing to a long run: Warmup — LR ramps up linearly from 0 to the target (3e-4) over the first 2000 steps, instead of hitting the model with full LR while the weights are still random. Cosine decay — after warmup, LR follows a cosine curve down toward 0 over the rest of training, so the model settles into finer adjustments by the end instead of taking large steps the whole way through. Nothing exotic here — PyTorch doesn’t need a library for this, just a function that computes the right LR for the current step and gets applied to the optimizer’s param groups each iteration. The real run 474M tokens (the full TinyStories corpus), which comes out to ~231,445 steps at batch_size=8, block_size=256 . Ran for about 4 hours on the RTX 2080 Super: step 0: train loss 11.01 val loss 10.62 step 231000: train loss 1.48 val loss 1.49 step 231400: train loss 1.82 val loss 1.69 Train and val loss tracked closely the entire run — no overfitting. Loss in the 1.4–1.8 range by the end, a solid result for a from-scratch 24M model on this corpus. sample.py: watching it actually generate Wrote a script to load a checkpoint and generate text autoregressively — feed in a prompt, predict the next token, append it, repeat. Had to fix two small but important bugs along the way: torch.arange and torch.triu inside the model default to creating tensors on CPU even when everything else is on GPU — same device-mismatch class of bug as during training, fixed the same way ( device=x.device ). Loading the checkpoint failed at first because torch.compile prefixes every parameter name with _orig_mod. — stripped it with a quick dict comprehension before calling load_state_dict . First real generation, prompted with “once upon a time”: once upon a time, there was a fish named Fin. Fin was very brave and always had a big challenge to do. One day, Fin asked his friend, Sally, “Will you marry me?” Sally said, “Yes, Fin! Let’s go!” Fin and Sally had a big adventure in the ocean… Not perfect logic (fish swimming through an ocean “full of fish to eat” is a little off), but grammatically solid, consistent character names throughout, and a real narrative arc. Exactly what you’d expect from a well-trained 24M model on TinyStories. chat.py: a quick interactive loop Wrapped the generation code in a while True loop so the model loads once and takes prompts repeatedly instead of restarting for every single generation. Worth noting for anyone trying this themselves: this is a base model , not an instruction-tuned chat model — it doesn’t “answer” prompts, it just continues them as text. Say “hello” and it treats that as the opening of a story, not a greeting to respond to. That’s expected behavior at this stage, not a bug — instruction-following is a separate fine-tuning step for later. What’s next The full pipeline — prepare.py → train.py → sample.py/chat.py — is confirmed working end-to-end, from raw dataset to a model you can actually talk to (in the “continues your text” sense). Next up: scaling to the 100M-param run on a 2B-token corpus, this time blending real security-focused text (HackTricks, PayloadsAllTheThings, and others) with general web text, plus a retrieval index so the model can pull in relevant passages instead of relying purely on memorized weights.
tiny-llm: the 100M model is trained, and RAG is wired in The 100M parameter run is done. 976,562 steps on a 2B-token corpus, and chat.py now pulls retrieved passages before generating instead of relying on memorized weights. The problem, and the fix Started out wanting this model trained purely on security content (HackTricks, PayloadsAllTheThings, SecLists, GTFOBins, CheatSheetSeries, wstg). All of that combined comes to about 6.73M tokens. Compute-optimal for a 100M model is around 2B tokens, real security wikis just don’t reach that scale, and no amount of repo-hunting was going to fix that 300x gap. The solution i found was blend the 6.73M security tokens into a 2B-token corpus, topped up with FineWeb-Edu for general English coverage. The model gets real security-domain exposure plus enough general text to actually hold together grammatically, not by inventing security content that doesn’t exist, but by being upfront about what’s actually available. The training run d_model=768, n_heads=12, n_layer=12 4x the previous 24M config. Config changes were straightforward, getting a resumable 50-hour run right was the actual work: Checkpoint pruning — early on, checkpoints/ silently grew to 561GB before a torch.save call failed with a disk-full error mid-write. Fixed by keeping only the 5 most recent checkpoints on every save, removing older ones automatically. torch.compile ordering — resuming from a checkpoint failed with a state_dict key mismatch the first time, because model = torch.compile(model) was running before the resume logic loaded the weights. Compiled models get every parameter name prefixed with _orig_mod. , so loading a plain checkpoint into a compiled model (or vice versa) breaks. Fixed by moving the resume block to before the torch.compile call — load into the “bare” model first, compile after. Verified resume actually works — killed the process mid-run, restarted, confirmed it picked up exactly where it left off (same step, same loss) before trusting it for the full 50 hours unattended. Final loss landed around 3.5–3.8 (train and val tracking closely) — expected for a corpus this heterogeneous (security docs + general web text) compared to the tighter 1.4–1.8 range on TinyStories. Wiring in retrieval A 100M model isn’t going to reliably “know” security facts from 6.73M tokens seen once inside a 2B-token corpus — so instead of hoping the weights memorized it, chat.py now retrieves first: User’s prompt goes to a local SQLite FTS5 search index built over the same repos/ content used in training Top-k matching passages come back with source, heading, and BM25 relevance score Those passages get prepended to the prompt as context before the model generates Straightforward in concept, but ran into block_size=256 limits fast, retrieved passages plus the question can easily blow past what the model was trained to handle positionally. Fixed by truncating the encoded prompt to the last 256 tokens before generation, keeping the question and “Answer:” cue intact even if some of the retrieved context gets cut from the front. What actually happens now Asked “What is SQL injection?” — with retrieval wired in, the model opens with something closer to on-topic (“one of the most powerful tools available to attackers”) instead of pure noise, but drifts into plausible-sounding but fabricated details a few sentences in. That’s the honest result at this scale: retrieval gives it real information to start from, but staying faithful to that context for 100 generated tokens is past what 100M parameters can reliably do. Better than without retrieval, not a fix for the underlying scale limit.
tiny-llm: KV-cache, a public API, and shipping the whole thing Last devlog left off with the 100M model trained and RAG wired into chat.py , generating in ~50s per reply. This one covers making that fast, and getting the whole pipeline live on the internet. Understanding KV-cache Without a cache, every new token recalculates K/V for all tokens already processed, even though those values haven’t changed. The KV cache keeps them around and only computes K/V for the new token. Three real changes to model.py : CausalSelfAttention.forward now takes an optional kv_cache , concatenates new K/V onto it along the sequence dimension, and returns the updated cache. The causal mask only applies when there’s no cache. With a cache, the new token’s query attends over the entire K/V (past + new), and since generation only ever feeds one new token at a time once a cache exists, there’s no future position to accidentally see. “No mask” is the correct causal mask in that case, not an approximation. Position embeddings need to be absolute, not relative to the current call. With a cache, x is only the new tokens, so position 0 here is really past_length in the full sequence, pulled from the cached K’s sequence-length dimension. Before relying on the cache, I added a correctness check: run the whole sequence normally, then one token at a time through the cache, compare logits with torch.allclose . They matched. Wanted to confirm correctness before worrying about performance. Wiring it into generation chat.py and backend.py now do a prefill (whole prompt through the model once, building the initial cache) followed by decode steps that only pass the newest token plus the accumulated cache, instead of re-encoding a sliding window every step. Deploying: Nest, Vercel, and bugs that only show up live Backend/model : FastAPI on Hack Club Nest (Stardance’s rules don’t allow Hugging Face for hosting), running as a systemd service, bound to 127.0.0.1 behind Caddy for TLS. Frontend : static HTML/CSS/JS on Vercel, auto-deployed via GitHub Actions. Real bugs surfaced by going live: addMessage() never returned the div it created, so every successful reply crashed setting .textContent on undefined , landing in the catch block and showing an error even when the backend answered correctly. Live on the public demo before it got caught. The rate limiter keyed on a spoofable query parameter instead of the real client IP. Fixed by reading X-Forwarded-For ’s last hop, which only Caddy can set here. No protection against concurrent requests on a 2-vCPU, 1.5GB box with a documented prior OOM kill. Queuing behind a lock still pushed memory to the ceiling, so it became a 503 (fail fast) instead. A missing message field crashed inside search() . Now returns 400 first. The model’s sanity-check block ran on every import, not just direct execution. Gated behind if __name__ == "__main__": . The result /generate went from ~50s to ~4.0s, a ~12.5x speedup, same model, same box, real public HTTPS endpoint. Verified live, not assumed. What’s running now A GPT trained from scratch, retrieval-augmented over real security docs, served with KV-cache inference behind a rate-limited public API. Every piece went through a review pass that caught real, live bugs before calling it done. The model’s output quality at 100M params is the physical ceiling of this scale, not a bug to fix, that was always the outcome of training something this size from nothing. Getting the whole stack this far, correctly, is the milestone.
Fix for ship The Ship was rejected for AI readme (wrong banner and AI written AI usage declaration, but this is not smt that counts time towards devlog so it’s not going to be mentioned) which I had already re-written, so I thought what could maybe fix the ship issue, and an idea came to mind: if the readme sounds AI written then I will fully re-write the readme from scratch and only use AI to fix typos (ex: LMM to LLM or then to than), so that is what I did, I re-wrote the entire readme. The problem There was a big problem: it had been so long I didn’t remember the code well, so I had to study the entire code base because of the readme. In the process, I found a bug in chat.py , which luckily was a quick fix, just a if there. Extra If you are wondering why the devlog is 1h and 30m, I also don’t know. If I had to guess, it is that I re-wrote the readme a first time and didn’t make the devlog, so there is that extra that could also be why it got rejected for the same reason as before (AI readme).
Ships:
My aim was never been to create a useful replacement for ChatGPT; instead, I decided to understand what goes on inside a language model and so I created the transformer, the training loop, the tokenizer/data pipeline, and the retrieval layer myself. It went through two phases: 24M parameters trained on TinyStories as the starter experiment 155M parameters trained on ~2B tokens of security documentation Full-text retrieval using SQLite FTS5 A custom training pipeline that includes the use of mixed precision, checkpointing, and cosine LR scheduling, etc. The model is awful at actually answering questions ; that’s basically the whole point. While they are able to generate coherent text and the more extensive model can make use of the security documentation that has been retrieved, don’t expect anything like frontier-model level reasoning; it’s a small model designed to learn from existing models rather than to replace those which cost millions to train. From this project I learned more regarding transformers, training, data, retrieval, and the actual situation with small models than I would have if I had just used an existing framework....
|
1793537712.4286544
|
1793624112.4286544
|
|
24362
|
Personal Portfolio Website by @mohan | Stardance
|
mohan
|
1
|
7.0
|
26
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-02T01:49:44Z", "hours": 7.0, "multiplier": 3.86, "payout": 26, "blessing": "neutral", "text": "I made a website to show my projects and extracurriculars. I learned a lot about HTML, especially making image carousels, which was significantly more complicated than I think it should have been. It was fun adding content and building my website from scratch. Something that I guess is important to know is that I mostly focus on hardware engineering projects and extracurriculars, so I didn’t have a ton of webdev skills going in to this. Most of it I learned while coding the website, which made it take a while at first. However, a lot of the stuff I used many times so I only had to learn it once. I also had fun playing with the click to collapse part because it was satisfying, especially once I got the right animations. Its important to know that the LinkedIn connect element might not show up if you aren’t signed into LinkedIn. There is nothing I can do about this as it is something I embedded using code provided by LinkedIn.", "repo": "https://github.com/eastmohan/mohan-east-website", "demo": "https://mohan-east.vercel.app/"}]...
|
[{"post_id": 20451, "ts": "202 [{"post_id": 20451, "ts": "2026-07-02T01:32:36Z", "hours": 3.9714, "text": "I made a lot of substantial changes, but I think my website is now done. The home page is now significantly more interesting with the featured projects. Many of the changes I made were just content on the extracurriculars and projects pages, but I learned how to add image carousels which was cool. The navbar also now shows what page you’re on. Seems like I need to do more software projects to balance out the software section of my projects page."}, {"post_id": 14803, "ts": "2026-06-24T01:27:30Z", "hours": 1.7322, "text": "I did a lot of formatting work and started to do project stuff. I now have one hardware project there and it should be easy (other than the actual content) to add other hardware and software projects to my website. For the hardware one I have, I embedded the build demo video. I also put the connect with me stuff on the home page as well as the connect page. There is now a tab icon, too. The website is now deployed at https://mohan-east.vercel.app/"}, {"post_id": 14056, "ts": "2026-06-23T01:14:19Z", "hours": 0.9164, "text": "I started the home page, developed the connect page, and worked on CSS. I had to get creative to get rid of a weird LinkedIn badge glitch - I had to add a border encroaching on the badge to hide the weird border."}]...
|
Title: Personal Portfolio Website by @mohan | Star Title: Personal Portfolio Website by @mohan | Stardance
Devlogs:
I started the home page, developed the connect page, and worked on CSS. I had to get creative to get rid of a weird LinkedIn badge glitch - I had to add a border encroaching on the badge to hide the weird border.
I did a lot of formatting work and started to do project stuff. I now have one hardware project there and it should be easy (other than the actual content) to add other hardware and software projects to my website. For the hardware one I have, I embedded the build demo video. I also put the connect with me stuff on the home page as well as the connect page. There is now a tab icon, too. The website is now deployed at https://mohan-east.vercel.app/
I made a lot of substantial changes, but I think my website is now done. The home page is now significantly more interesting with the featured projects. Many of the changes I made were just content on the extracurriculars and projects pages, but I learned how to add image carousels which was cool. The navbar also now shows what page you’re on. Seems like I need to do more software projects to balance out the software section of my projects page.
Ships:
I made a website to show my projects and extracurriculars. I learned a lot about HTML, especially making image carousels, which was significantly more complicated than I think it should have been. It was fun adding content and building my website from scratch. Something that I guess is important to know is that I mostly focus on hardware engineering projects and extracurriculars, so I didn’t have a ton of webdev skills going in to this. Most of it I learned while coding the website, which made it take a while at first. However, a lot of the stuff I used many times so I only had to learn it once. I also had fun playing with the click to collapse part because it was satisfying, especially once I got the right animations. Its important to know that the LinkedIn connect element might not show up if you aren’t signed into LinkedIn. There is nothing I can do about this as it is something I embedded using code provided by LinkedIn....
|
1793537714.5062728
|
1793624114.5062728
|
|
22646
|
Sprout: Your personal Desktop Daemon that makes su Sprout: Your personal Desktop Daemon that makes sure you take breaks! by @LaraCroft | Stardance...
|
LaraCroft
|
1
|
4.0
|
49
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T02:53:47Z", "hours": 4.0, "multiplier": 12.6, "payout": 49, "blessing": "neutral", "text": "I created a plant pot style desktop daemon that manages and tracks your posture and the amount of time you stay behind your desk without breaks. The lightweight user interface handles the visual rendering, native Windows system tray lifecycle, and Pomodoro timing variables, while silently spawning the local Python virtual environment to monitor your posture via an integrated webcam feed.", "repo": "https://github.com/botW-programmer/sprout", "demo": "https://github.com/botW-programmer/sprout/releases/tag/v1.1.0"}]...
|
[{"post_id": 27483, "ts": "202 [{"post_id": 27483, "ts": "2026-07-13T02:51:23Z", "hours": 2.5956, "text": "It’s been a few weeks since I last worked on sprout. Honestly, SAT prep has been taking up the majority of my time. I spent around an hour of unrecorded time just reading through my code and a bunch of notes I left for myself. After getting myself caught up, I shifted my sight to my goals. I immediately realized I hated the bulky, standard application window. It felt too clunky for a focus app. I decided to completely pivot the design: instead of a full app, I wanted a tiny, transparent, aesthetic widget that just floats quietly on the desktop. It’s been a while since I last programmed a widget, so it took me a while to catch up. The second I tried to make the window transparent, my entire CSS layout completely collapsed. The background started tiling infinitely, my assets disappeared, and the drag-handle completely broke. The Tauri v2 migration also messed me up. Tauri completely overhauled how they handle security permissions, system tray icons, and background shell processes. I spent way too long staring at my screen just trying to figure out why my Python AI backend wouldn’t launch. But after rewriting the main.js file from scratch and working on the Rust config files, I made some progress. Here is what is actually working in V1.0.0: UI: It’s a tiny, frosted-glass widget with a shimmering pastel title bar. AI core: The Python computer vision script now boots up invisibly in the background the second you open the app. No more messing with terminals. System Tray: It minimizes straight to the Windows tray, keeping your taskbar clean. My favorite part, the pomodoro timer: A fully functional, click-to-start Pomodoro timer that hooks directly into native Windows notifications to tell you to take a break. I packaged the whole thing into a distributable .msi installer and added it onto GitHub Releases. It is completely open-source and officially out. It was a bit annoying, but seeing my little plant sitting on my desktop, actually tracking my posture without crashing, makes it totally worth it."}, {"post_id": 12375, "ts": "2026-06-20T06:16:01Z", "hours": 1.3683, "text": "I felt really productive after today! I started “Sprout”, which is a wellness daemon that perks up when you take breaks and droops down when you stay seated for too long. Here’s what I did today: I busted my “ghost chair” bug My camera kept thinking that my empty chair is a person, so when I got up to take breaks, it would keep a skeletal frame on my chair. I fixed it by implementing a visibility heuristic filter. I essentially told my webcam that unless it is 60% that it detects a human nose, it shouldn’t recognize the object infront of it as human. Headless Originally, to test-run the project, I had 2 windows up: my actual project and my webcam with a skeletal structure pasted over me. I just stripped out the GUI code from my vision_sensor webcam code so that it would stop appearing. Notifications I had to install a native Rust plugin to bypass the browser security so that my code could communicate directly with Windows OS. When my JS gave me an import error (since I’m using Vanilla JS without a bundler), I just edited tauri.conf.json to recognize Tauri’s tools globally. Native desktop achieved! I created my assets! Using LibreSprite, I drew my Sprout (cat themed plant pot) and background, and enabled some simple asynchronous JS loops to animate them! - Goals for tomorrow: I need to remove the ugly text and glassmorphic box I implemented earlier for testing, and create my own text-based assets. (P.S. I dropped my finished assets below for anyone interested. They're really low quality since they're meant for a small window)"}]...
|
Title: Sprout: Your personal Desktop Daemon that m Title: Sprout: Your personal Desktop Daemon that makes sure you take breaks! by @LaraCroft | Stardance
Devlogs:
I felt really productive after today! I started “Sprout”, which is a wellness daemon that perks up when you take breaks and droops down when you stay seated for too long. Here’s what I did today: I busted my “ghost chair” bug My camera kept thinking that my empty chair is a person, so when I got up to take breaks, it would keep a skeletal frame on my chair. I fixed it by implementing a visibility heuristic filter. I essentially told my webcam that unless it is 60% that it detects a human nose, it shouldn’t recognize the object infront of it as human. Headless Originally, to test-run the project, I had 2 windows up: my actual project and my webcam with a skeletal structure pasted over me. I just stripped out the GUI code from my vision_sensor webcam code so that it would stop appearing. Notifications I had to install a native Rust plugin to bypass the browser security so that my code could communicate directly with Windows OS. When my JS gave me an import error (since I’m using Vanilla JS without a bundler), I just edited tauri.conf.json to recognize Tauri’s tools globally. Native desktop achieved! I created my assets! Using LibreSprite, I drew my Sprout (cat themed plant pot) and background, and enabled some simple asynchronous JS loops to animate them! - Goals for tomorrow: I need to remove the ugly text and glassmorphic box I implemented earlier for testing, and create my own text-based assets. (P.S. I dropped my finished assets below for anyone interested. They're really low quality since they're meant for a small window)
It’s been a few weeks since I last worked on sprout. Honestly, SAT prep has been taking up the majority of my time. I spent around an hour of unrecorded time just reading through my code and a bunch of notes I left for myself. After getting myself caught up, I shifted my sight to my goals. I immediately realized I hated the bulky, standard application window. It felt too clunky for a focus app. I decided to completely pivot the design: instead of a full app, I wanted a tiny, transparent, aesthetic widget that just floats quietly on the desktop. It’s been a while since I last programmed a widget, so it took me a while to catch up. The second I tried to make the window transparent, my entire CSS layout completely collapsed. The background started tiling infinitely, my assets disappeared, and the drag-handle completely broke. The Tauri v2 migration also messed me up. Tauri completely overhauled how they handle security permissions, system tray icons, and background shell processes. I spent way too long staring at my screen just trying to figure out why my Python AI backend wouldn’t launch. But after rewriting the main.js file from scratch and working on the Rust config files, I made some progress. Here is what is actually working in V1.0.0: UI: It’s a tiny, frosted-glass widget with a shimmering pastel title bar. AI core: The Python computer vision script now boots up invisibly in the background the second you open the app. No more messing with terminals. System Tray: It minimizes straight to the Windows tray, keeping your taskbar clean. My favorite part, the pomodoro timer: A fully functional, click-to-start Pomodoro timer that hooks directly into native Windows notifications to tell you to take a break. I packaged the whole thing into a distributable .msi installer and added it onto GitHub Releases. It is completely open-source and officially out. It was a bit annoying, but seeing my little plant sitting on my desktop, actually tracking my posture without crashing, makes it totally worth it.
Ships:
I created a plant pot style desktop daemon that manages and tracks your posture and the amount of time you stay behind your desk without breaks. The lightweight user interface handles the visual rendering, native Windows system tray lifecycle, and Pomodoro timing variables, while silently spawning the local Python virtual environment to monitor your posture via an integrated webcam feed....
|
1793537717.515125
|
1793624117.515125
|
|
23723
|
Python Calculator by @Sahild | Stardance
|
Sahild
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T15:12:49Z", "hours": 0.0, "multiplier": 1.0, "payout": 0, "blessing": "neutral", "text": "shipped: python calculator a terminal based calculator with a menu system, input validation and ascii art banners supports addition subtraction multiplication and division. handles bad input and division by zero without crashing. github", "repo": "https://github.com/sahilchess/python-calculator", "demo": "https://github.com/sahilchess/python-calculator/releases/tag/v1"}]...
|
[{"post_id": 17647, "ts": "202 [{"post_id": 17647, "ts": "2026-06-28T15:11:02Z", "hours": 0.2789, "text": "python calculator devlog built a terminal calculator in python today. nothing really big. i did this for the sticker the main thing i wanted was a clean menu system so i used a numbered list and sys.exit() to handle the exit case gracefully. sys.exit() was the cool thing i found that makes the code exit without all these error messages in the terminal. additionally, also added input validation so if you pick a choice outside 1-5 it tells you instead of just crashing. one fun thing: added ascii art at the start and end using multiline print statements. the banner at the top took a while to get right because the spacing kept breaking. also handled division by zero explicitly since thats a pretty common edge case that trips people up. next steps: maybe add a loop so you can do multiple calculations without rerunning the script"}]...
|
Title: Python Calculator by @Sahild | Stardance
D Title: Python Calculator by @Sahild | Stardance
Devlogs:
python calculator devlog built a terminal calculator in python today. nothing really big. i did this for the sticker the main thing i wanted was a clean menu system so i used a numbered list and sys.exit() to handle the exit case gracefully. sys.exit() was the cool thing i found that makes the code exit without all these error messages in the terminal. additionally, also added input validation so if you pick a choice outside 1-5 it tells you instead of just crashing. one fun thing: added ascii art at the start and end using multiline print statements. the banner at the top took a while to get right because the spacing kept breaking. also handled division by zero explicitly since thats a pretty common edge case that trips people up. next steps: maybe add a loop so you can do multiple calculations without rerunning the script
Ships:
shipped: python calculator a terminal based calculator with a menu system, input validation and ascii art banners supports addition subtraction multiplication and division. handles bad input and division by zero without crashing. github...
|
1793537719.634682
|
1793624119.634682
|
|
29808
|
İ built my first webos running the super mario bro İ built my first webos running the super mario bros3 by @cqwea | Stardance...
|
cqwea
|
2
|
2.52
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T21:00:02Z", "hours": 0.0, "multiplier": 3.19, "payout": 1, "blessing": "neutral", "text": "i faxed a major bug fixes that led to a crash and created a readme for the ship to get public on my first webos that can run a game", "repo": "https://github.com/cqwea/firstwebos", "demo": "https://cqweaos.netlify.app/main/"}, {"ship_num": 2, "ts": "2026-07-03T20:17:07Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "it was my first try of building a webos and i made it run a mario game", "repo": "https://github.com/cqwea/firstwebos", "demo": "https://cqweaos.netlify.app/main/"}]...
|
[{"post_id": 24001, "ts": "202 [{"post_id": 24001, "ts": "2026-07-07T08:46:09Z", "hours": 0.5228, "text": "after some work i coded my own snake game and ill ship it after i add a tutorial for the games and localstorage to keep your notes from not dissapearing ( thanks for the people rewieved my ideas and told me to do these )"}, {"post_id": 21752, "ts": "2026-07-03T20:56:07Z", "hours": 0.2667, "text": "so i fixed some major bugs and fixed the readme so my ship will get accepted"}, {"post_id": 21717, "ts": "2026-07-03T20:12:26Z", "hours": 1.6697, "text": "İ managed to get super mario bros. 3 on my webos !"}]...
|
Title: İ built my first webos running the super ma Title: İ built my first webos running the super mario bros3 by @cqwea | Stardance
Devlogs:
İ managed to get super mario bros. 3 on my webos !
so i fixed some major bugs and fixed the readme so my ship will get accepted
after some work i coded my own snake game and ill ship it after i add a tutorial for the games and localstorage to keep your notes from not dissapearing ( thanks for the people rewieved my ideas and told me to do these )
Ships:
it was my first try of building a webos and i made it run a mario game
i faxed a major bug fixes that led to a crash and created a readme for the ship to get public on my first webos that can run a game...
|
1793537722.5588872
|
1793624122.5588872
|
|
17994
|
Palette Forge by @DimensionLess | Stardance
|
DimensionLess
|
1
|
5.48
|
31
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T11:53:40Z", "hours": 4.0, "multiplier": 8.22, "payout": 31, "blessing": "neutral", "text": "Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours.", "repo": "https://github.com/6255127/Pallet-Forge", "demo": "https://6255127.github.io/Pallet-Forge/"}]...
|
[{"post_id": 19856, "ts": "202 [{"post_id": 19856, "ts": "2026-07-01T08:06:32Z", "hours": 0.4772, "text": "i added some new feature like figma tokens s as it is very useful when using figma and made sure all the export features are working properly"}, {"post_id": 19319, "ts": "2026-06-30T16:24:44Z", "hours": 1.0075, "text": "I fixed the Readme and also the UI , I used 21st.dev as for my UI and removed the unnecessary features and polished the app"}, {"post_id": 8604, "ts": "2026-06-14T09:40:04Z", "hours": 3.7442, "text": "Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours."}]...
|
Title: Palette Forge by @DimensionLess | Stardance Title: Palette Forge by @DimensionLess | Stardance
Devlogs:
Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours.
I fixed the Readme and also the UI , I used 21st.dev as for my UI and removed the unnecessary features and polished the app
i added some new feature like figma tokens s as it is very useful when using figma and made sure all the export features are working properly
Ships:
Every time a developer builds a UI, they waste hours just picking colors. You look at a reference image, try to guess the hex codes, check if they look good together, test if the text is readable, and repeat until something works. It’s frustrating and eats into time that should be spent actually building. PaletteForge fixes this in one step. Upload any image and instantly get a complete color system — extracted colors, assigned roles, accessibility checks, font suggestions, and a presentation theme. Thirty seconds instead of two hours....
|
1793537724.6938143
|
1793624124.6938143
|
|
1264
|
Sneko bot by @akisarke | Stardance
|
akisarke
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-18T16:19:16Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own slack bot for the first time! I’m very proud of myself since i didn’t ever make a slack bot. If you want to try it you can go to the repo here: https://github.com/aleksaingh/sneko-bot", "repo": "https://github.com/akisarke/sneko-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BJJJ6JCLU"}]...
|
[{"post_id": 451, "ts": "2026- [{"post_id": 451, "ts": "2026-06-01T21:36:49Z", "hours": 0.4819, "text": "I have added 7 commands to my new slack bot Sneko Bot. The commands are: /as-help - Lists all of the commands /as-myping - Check the bot’s latency /as-dadjoke - Get a random dad joke /as-catfact - Get a random cat fact /as-dog - Get a random dog picture /as-fact - Get a random useless fact /as-weather [city] Get the weather for a city I quickly whipped up an icon for the bot in Photoshop it isn’t something special but it’s fine for me tbh. I really enjoyed scripting the bot in javascript, idk i found it really fun."}]...
|
Title: Sneko bot by @akisarke | Stardance
Devlogs Title: Sneko bot by @akisarke | Stardance
Devlogs:
I have added 7 commands to my new slack bot Sneko Bot. The commands are: /as-help - Lists all of the commands /as-myping - Check the bot’s latency /as-dadjoke - Get a random dad joke /as-catfact - Get a random cat fact /as-dog - Get a random dog picture /as-fact - Get a random useless fact /as-weather [city] Get the weather for a city I quickly whipped up an icon for the bot in Photoshop it isn’t something special but it’s fine for me tbh. I really enjoyed scripting the bot in javascript, idk i found it really fun.
Ships:
I made my own slack bot for the first time! I’m very proud of myself since i didn’t ever make a slack bot. If you want to try it you can go to the repo here: https://github.com/aleksaingh/sneko-bot...
|
1793537726.7154539
|
1793624126.7154539
|
|
10231
|
Hollow Knight Pinball Playfield by @AgentAxolotl | Hollow Knight Pinball Playfield by @AgentAxolotl | Stardance...
|
AgentAxolotl
|
1
|
28.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-24T17:31:39Z", "hours": 28.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I Made: I used CAD (onshape specifically) to model my custom pinball playfield for my Hollow Knight Pinball Machine. It is based on my original physical rough draft prototype and also expands on it with more holes for things like inserts that are too complicated to cut by hand. It will be CNC cut and will be populated (have other components like the mechanical pieces and lights) in a future project. The main goal of this project was to learn CAD while also reducing the time, effort, and errors caused by trying to do this by hand. Some of the models for the holes of various features can be reused by others in the future. Challenges: Learning CAD was definitely a massive learning curve but luckily I know a decent number of people who were able to answer all my questions. I think this is pretty obvious in my devlogs as you can see how I got significantly faster and more capable throughout the process. Modeling the inserts and target cut outs were among the more complicated shapes and were quite a challenge especially for someone who had never done CAD before. I had dimensions from other people in the space but free onshape can struggle with dxf files. I do think templates were very helpful and I hope someone else will also use these in the future, especially the target which I did from scratch. What I’m Most Proud Of: I am most proud of the shooter lane, I go into it in more detail in my readme but I basically used a tilted plane and a v shape and then curved the edges and I think it turned out about as close to a real machine as possible while matching the shorter length I need for my specific design. I am also proud of the target design which I did all on my own. My measurements were also very accurate when I came back and checked it against my physical draft when I was done and I was quite worried it would not match up. Finally I am most proud of basically learning CAD from the ground up which is a major skill that will help me in the future and make many future projects easier. How You Can Machine This Yourself: The onshape files are linked here and there is a .step in the github. The general process is that it should be machined out of plywood on a CNC machine however there are more detailed instructions in the readme. The other thing you may find useful is the templates for inserts and targets (you can find them in the onshape) as this will make it easier for you to make your own machine with your own design if you want. Other components like slingshots and lower plainfield third (which is fairly standard) can be found in there as well. Thanks for rating and good luck on your own projects!", "repo": "https://github.com/SamHughes112/Hollow-Knight-Pinball", "demo": ""}]...
|
[{"post_id": 14856, "ts": "202 [{"post_id": 14856, "ts": "2026-06-24T03:48:18Z", "hours": 4.0136, "text": "This will probably be my last devlog before I ship. Most of time was spent on fine tuning positions, remeasuring things, and checking that I had all the holes I needed. Some of the more major changes included the ball trough (the big oval thing at the bottom for holding balls when they are not in play), the holes in the corners to let wires through for lighting (top right has two one for 5v and one for 48v since the 48 can sometimes mess with data to the RGBs on the 5v), and fixing the shooter lane insert. By being set into the playfield the plunger can hit it better/more consistently and it was definitely up there for one of the most difficult things I have done for this project. In the end I used a very slightly sloped plane with a shape of a V on it which I then extruded forwards and backwards. I then curved the edges to be a bit smoother though it did require me to be creative."}, {"post_id": 13167, "ts": "2026-06-21T15:34:18Z", "hours": 11.0439, "text": "I have made a lot of progress and am probably getting close to shipping. In the past couple days I finished adding all the inserts (I think) as well as almost all the posts I have two left but they will be hard to measure. The only other things I have to do is put a slope for the shooter lane (like where the ball comes from), add a couple more cutouts for switches, and add some holes at the bottom and at the back for some wires since I’m sure I will need that at some point and if not they will covered when I build it out."}, {"post_id": 9706, "ts": "2026-06-16T03:48:15Z", "hours": 4.4953, "text": "Well I had some major setbacks unfortunately the model I had used as a base for the shooter lane and other standard stuff like the holes under the apron (metal piece at the bottom of the games where your ball drains through and a new one pops out of) was measured wrong and by a significant margin so I had to restart that and try to work from a different file type to try to create one that has unfortunately a lot less that I can reuse meaning I had to remeasure and remodel a lot of that myself and then reposition everything I had already put on their. At least I had the shapes of inserts already and obviously me CAD skills have improved a lot so it was fairly doable. I learned my lesson I guess 🤷♂️. I also quickly threw together some more groups of inserts that will go in soon."}, {"post_id": 8476, "ts": "2026-06-14T03:04:59Z", "hours": 4.2267, "text": "I finished modeling the last rounded rectangle along with some more complicated shapes I will need in the future then designed the layout (for the map not the shots) and added some inserts to the map as well as putting some in the inlanes though those were easy next up is adjusting a couple of other positions since I screwed up my side rail measurements (they should be 3/4 and I though they were 1/2 inch)."}, {"post_id": 6037, "ts": "2026-06-10T04:06:47Z", "hours": 3.8192, "text": "Working on modeling holes for the inserts it was coming along well though I did have some problems with onshape not liking some of the file types I was giving it. The labels on the circles are kind of hard to read but basically tell me what diameter it is so I don’t use the wrong one. One more to go thats a 1 1/2 by 1 5/8 rectangle but I’m definitely getting much faster. (idk why my images are being weird maybe try opening them in a new tab)"}]...
|
Title: Hollow Knight Pinball Playfield by @AgentAx Title: Hollow Knight Pinball Playfield by @AgentAxolotl | Stardance
Devlogs:
Working on modeling holes for the inserts it was coming along well though I did have some problems with onshape not liking some of the file types I was giving it. The labels on the circles are kind of hard to read but basically tell me what diameter it is so I don’t use the wrong one. One more to go thats a 1 1/2 by 1 5/8 rectangle but I’m definitely getting much faster. (idk why my images are being weird maybe try opening them in a new tab)
I finished modeling the last rounded rectangle along with some more complicated shapes I will need in the future then designed the layout (for the map not the shots) and added some inserts to the map as well as putting some in the inlanes though those were easy next up is adjusting a couple of other positions since I screwed up my side rail measurements (they should be 3/4 and I though they were 1/2 inch).
Well I had some major setbacks unfortunately the model I had used as a base for the shooter lane and other standard stuff like the holes under the apron (metal piece at the bottom of the games where your ball drains through and a new one pops out of) was measured wrong and by a significant margin so I had to restart that and try to work from a different file type to try to create one that has unfortunately a lot less that I can reuse meaning I had to remeasure and remodel a lot of that myself and then reposition everything I had already put on their. At least I had the shapes of inserts already and obviously me CAD skills have improved a lot so it was fairly doable. I learned my lesson I guess 🤷♂️. I also quickly threw together some more groups of inserts that will go in soon.
I have made a lot of progress and am probably getting close to shipping. In the past couple days I finished adding all the inserts (I think) as well as almost all the posts I have two left but they will be hard to measure. The only other things I have to do is put a slope for the shooter lane (like where the ball comes from), add a couple more cutouts for switches, and add some holes at the bottom and at the back for some wires since I’m sure I will need that at some point and if not they will covered when I build it out.
This will probably be my last devlog before I ship. Most of time was spent on fine tuning positions, remeasuring things, and checking that I had all the holes I needed. Some of the more major changes included the ball trough (the big oval thing at the bottom for holding balls when they are not in play), the holes in the corners to let wires through for lighting (top right has two one for 5v and one for 48v since the 48 can sometimes mess with data to the RGBs on the 5v), and fixing the shooter lane insert. By being set into the playfield the plunger can hit it better/more consistently and it was definitely up there for one of the most difficult things I have done for this project. In the end I used a very slightly sloped plane with a shape of a V on it which I then extruded forwards and backwards. I then curved the edges to be a bit smoother though it did require me to be creative.
Ships:
What I Made: I used CAD (onshape specifically) to model my custom pinball playfield for my Hollow Knight Pinball Machine. It is based on my original physical rough draft prototype and also expands on it with more holes for things like inserts that are too complicated to cut by hand. It will be CNC cut and will be populated (have other components like the mechanical pieces and lights) in a future project. The main goal of this project was to learn CAD while also reducing the time, effort, and errors caused by trying to do this by hand. Some of the models for the holes of various features can be reused by others in the future. Challenges: Learning CAD was definitely a massive learning curve but luckily I know a decent number of people who were able to answer all my questions. I think this is pretty obvious in my devlogs as you can see how I got significantly faster and more capable throughout the process. Modeling the inserts and target cut outs were among the more complicated shapes and were quite a challenge especially for someone who had never done CAD before. I had dimensions from other people in the space but free onshape can struggle with dxf files. I do think templates were very helpful and I hope someone else will also use these in the future, especially the target which I did from scratch. What I’m Most Proud Of: I am most proud of the shooter lane, I go into it in more detail in my readme but I basically used a tilted plane and a v shape and then curved the edges and I think it turned out about as close to a real machine as possible while matching the shorter length I need for my specific design. I am also proud of the target design which I did all on my own. My measurements were also very accurate when I came back and checked it against my physical draft when I was done and I was quite worried it would not match up. Finally I am most proud of basically learning CAD from the ground up which is a major skill that will help me in the future and make many future projects easier. How You Can Machine This Yourself: The onshape files are linked here and there is a .step in the github. The general process is that it should be machined out of plywood on a CNC machine however there are more detailed instructions in the readme. The other thing you may find useful is the templates for inserts and targets (you can find them in the onshape) as this will make it easier for you to make your own machine with your own design if you want. Other components like slingshots and lower plainfield third (which is fairly standard) can be found in there as well. Thanks for rating and good luck on your own projects!...
|
1793537735.1629808
|
1793624135.1629808
|
|
901
|
Kern by @AntKru | Stardance
|
AntKru
|
4
|
165.0
|
3160
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T08:05:12Z", "hours": 22.0, "multiplier": 19.22, "payout": 421, "blessing": "neutral", "text": "What I did In the latest release I improved the usability of the CLI and added a PCI driver. On the ahci branch I have worked on an AHCI (Used for reading from SATA drives) driver, but it isn’t finished yet. What was challenging The AHCI driver is very difficult to implement and is far from ready (The AHCI controller can now be initialized by the kernel, but it can’t read from drives, yet). For this reason I decided not to include it in the release, but if you want to see what I worked on check out the ahci branch! What I am proud of I really enjoyed writing the AHCI driver, it is a cool feeling to have two manuals opened at the same time and trying to understand what they want to tell you. Even though the driver isn’t finished yet, I put much work into it. How to try the kernel Video In the README of the git repo is a video, where you can see the latest release in action. Release ISO I’ve linked the release page, where you can download the ISO and run it with QEMU: qemu-system-x86_64 kern.iso Note for macOS users: If you want to run it on macOS with UTM, you have to force a PS/2 controller: https://docs.getutm.app/settings-qemu/qemu/#force-ps2-controller Building the kernel If you want to build the kernel, for example to check out the ahci branch, follow the build instructions in the README.", "repo": "https://gitlab.com/AntKru/kern", "demo": "https://gitlab.com/AntKru/kern/-/releases/"}, {"ship_num": 2, "ts": "2026-09-20T16:46:53Z", "hours": 65.0, "multiplier": 19.56, "payout": 1269, "blessing": "neutral", "text": "I have released the next version of my own kernel! The biggest feature I added is multitasking. While it doesn’t look that special, it was actually very difficult to make my kernel switch between different tasks! Here are some notes on how to try the project: If you don’t want/can’t run it, you can look at the video in the readme. If you want to run it on macOS with UTM, you have to force a PS/2 controller: https://docs.getutm.app/settings-qemu/qemu/#force-ps2-controller", "repo": "https://gitlab.com/AntKru/kern", "demo": "https://gitlab.com/AntKru/kern/-/releases/"}, {"ship_num": 3, "ts": "2026-07-24T06:30:43Z", "hours": 48.0, "multiplier": 19.83, "payout": 961, "blessing": "neutral", "text": "I added a CLI the kernel, which was possible, because I finally have a keyboard driver! It only took so long, because it was actually difficult to write it: I thought I have to program the PIC, but it was already disabled so I had to learn the more complicated APIC. There is a demo video in the README if you don’t want to run the kernel. If you want to run it on macOS with UTM, you have to force a PS/2 controller: https://docs.getutm.app/settings-qemu/qemu/#force-ps2-controller", "repo": "https://gitlab.com/AntKru/kern", "demo": "https://gitlab.com/AntKru/kern/-/releases/"}, {"ship_num": 4, "ts": "2026-06-20T14:34:14Z", "hours": 30.0, "multiplier": 17.21, "payout": 509, "blessing": "neutral", "text": "I made an x86_64 kernel using the limine boot protocol. I don’t know what the most difficult thing was, as even most basic things are very complicated for me as a beginner in osdev. I still have to learn much and the kernel will be improved, but I thing it kind of works now. I have a video demo in the readme, if you don’t have qemu . When building, remember to clone the submodules ( git submodule init && git submodule update ). You need xorriso to build the ISO. Sorry for mixing meson and make , but in the README is a guide. Please use clang, gcc is very complicated.", "repo": "https://gitlab.com/AntKru/kern", "demo": "https://gitlab.com/AntKru/kern/-/releases/"}]...
|
[{"post_id": 83618, "ts": "202 [{"post_id": 83618, "ts": "2026-10-28T07:52:57Z", "hours": 2.9653, "text": "Usability improvements As I won’t be able to finish the AHCI driver, I decided to improve the usability. I added dbg/dbgclr commands to allow easier debugging by only printing specific debug messages. The CLI got some big improvements, it will now detect commands even with trailing spaces. the loglevel command was renamed to logl for faster typing. Both logl and dbg accept their input now as CLI arguments instead of asking the user themselves. Roadmap After stardance I will probably take a little break, but then I want to continue on the AHCI driver, so that I finally can read files from SATA drives! And even after that, there are many more things to explore, like ELF loading, USB, Networking…"}, {"post_id": 83009, "ts": "2026-10-26T15:28:48Z", "hours": 7.9342, "text": "AHCI update I continued working on AHCI, the memory management problem was actually a problem in my AHCI driver…. Anyway, the AHCI driver has made some progress. I sadly couldn’t post for such a long time, as there where no visible changes, so here is a screenshot of some debugging messages I added while working on it. The initialization code is almost finished, but I am still very far away from reading actual files. Roadmap As stardance is ending soon, I will try to do some stuff users actually see and finish AHCI later. One idea I had is to add a command to only show specific debug messages. I also will update the demo to demonstrate more recent features."}, {"post_id": 79283, "ts": "2026-10-13T09:56:47Z", "hours": 4.6628, "text": "Memory management problems… It seems like there was a critical bug sleeping inside my memory manager. It appeared since I started using the PMM in my AHCI driver, but I think the problem is in the virtual memory manager. For this reason I am working currently on the memory manager instead of the AHCI driver. Roadmap As soon as I fix the MM, I will continue on the AHCI driver. It probably won’t be finished until the end of stardance."}, {"post_id": 76791, "ts": "2026-10-04T16:08:54Z", "hours": 2.6242, "text": "AHCI! (SATA) I am jumping a little bit fast form PCI to AHCI, but I think the PCI driver is as good as I need it right now, and if I learn that it isn’t, I will fix it. Anyway, I am starting to work on AHCI! This is really cool, as this allows me to communicate to storage devices! At the moment the kernel just lists connected devices, but that’s just the beginning! Roadmap The AHCI driver is in a very early stage, and it will take me a lot of time to finish, as AHCI is relatively complicated and the documentation isn’t written for beginners like me ;-)"}, {"post_id": 74920, "ts": "2026-09-28T16:27:51Z", "hours": 3.6928, "text": "PCI! I am starting to write a PCI driver, which opens a new world to me! As you can see, the kernel is already able to print some information on boot about connected PCI devices. I also added a function that can search for a specific PCI device by it’s class, which will help me to implement drivers for specific PCI devices. Roadmap The real reason I am implementing PCI is that I need it to find the AHCI controller. The AHCI controller can be used to access connected storage devices, which is my long-term goal."}, {"post_id": 71311, "ts": "2026-09-20T16:38:40Z", "hours": 1.3486, "text": "Release 0.3.0 I finished the release, including the new borders command! The visible bugs that I found are also fixed, please report them if you find some! Roadmap The kernel isn’t finished yet, I will continue to improve it and see how far I will get."}, {"post_id": 70750, "ts": "2026-09-19T18:15:14Z", "hours": 4.075, "text": "Final improvements before the next release Status bar I moved the status bar from the bottom to the top and removed the borders, in my opinion it looks better this way. Framebuffer borders I am already working on a new command which will make it possible to see the borders of the framebuffer in QEMU. This will be useful for debugging while keeping the UI simple. Bugs There are still some obvious bugs: My printf() implementation seems to break with invalid format strings and I have a bug in my memory manager which prevents me from merging the command showing the screen borders into main. Roadmap I will try to fix the bugs, but the features are now complete. I want to release the new version tomorrow."}, {"post_id": 68765, "ts": "2026-09-15T18:23:31Z", "hours": 7.8061, "text": "printf compatability I improved the printf() compatability, so that I can pad numbers with or 0 . This is very useful, for example I now can use it to display time and date properly. Roadmap I don’t know yet what’s the next thing to do, maybe I will ship soon."}, {"post_id": 63678, "ts": "2026-09-07T16:41:58Z", "hours": 4.1103, "text": "Status bar! I added a status bar which show the current time. It is very basic, but makes the OS look way more friendlier in my opinion. Sorry for the weird messages in the main window, I am currently debugging my printf implementation. Roadmap I still have a problem with printing dates: The year 2006 would be printed as 206 , because the RTC has seperate registers for year and century, so if century is 20 and year is 6 it prints 206."}, {"post_id": 58325, "ts": "2026-08-30T18:21:09Z", "hours": 2.6081, "text": "“Windows” I am making it possible to split the framebuffer into multiple views. This should make it more easy to have a more advanced UI than a CLI already inside the kernel. Hopefully there will be user processes at some point, but I want to have a nice looking OS before that. Roadmap I still have to fix some things (as visible on the screenshot). After that, I can try to make use of it and add a status bar or a separate command window."}, {"post_id": 55470, "ts": "2026-08-27T10:27:14Z", "hours": 4.5317, "text": "RTC The kernel can now read the current time from the Computer’s RTC! At the moment, you can’t select the time zone, so the time is probably in UTC, depending on how the computer is configured. Roadmap I am planning to improve the use experience, for example by using multiple “windows”, to maybe even have a status bar."}, {"post_id": 52423, "ts": "2026-08-22T15:29:50Z", "hours": 4.2389, "text": "GCC support I added GCC support, which should (hopefully) make debugging easier for me. I can’t show it really on the screenshot, trust me, it is compiled with gcc! Roadmap I have still bugs in my multitasking system. Currently I get a page fault when compiling with optimization > -O2 with clang, the next step is to test it with GCC."}, {"post_id": 47914, "ts": "2026-08-16T05:50:20Z", "hours": 2.6892, "text": "Mutexes I implemented a simple mutex (which isn’t perfect yet, but it works). As visible on the screenshot, I used it to make it impossible for the test tasks to print at the same time. One problem with it is that it currently runs hlt after releasing a mutex so that a different task has a chance to acquire it, which doesn’t seem like the best solution to me. Roadmap I am making the terminal position atomic, so that I don’t need mutexes for output, which I can not use in interrupt handlers"}, {"post_id": 46418, "ts": "2026-08-13T16:41:17Z", "hours": 5.8897, "text": "Multitasking! I fixed the last bug (that I could find) and multitasking works now! On the screenshot you can see two tasks trying to print the numbers 0-19 at the same time. The CLI even waits until the tasks are finished! Road map The output is still a little bit broken, so I want to implement output buffering and mutexes, so that multiple threads can’t print at the same time."}, {"post_id": 44770, "ts": "2026-08-10T19:26:17Z", "hours": 6.2656, "text": "Multitasking… I am still working on multitasking, but I am stuck currently. I am trying to modify the stack frame so that asm_switch_task is called after iretq , but it doesn’t work. As you can see on the screenshot, I get a page fault as soon as it tries to switch tasks (in the debugging process I had it switch 2-3 times before it crashes, which is not really better) Road map My highest priority is to get task switching to work consistently. After that, I will see what I can polish."}, {"post_id": 43900, "ts": "2026-08-09T10:50:40Z", "hours": 2.4128, "text": "SSE register state switching! The kernel will now switch the SSE register state lazily, but I still have two problems: The Part for the registers in the TCB must be 16 byte aligned, which it currently not guaranteed The interrupt handlers are not allowed to use SSE instructions, but I have no way of verifying this Road map I think it is time to write a version of malloc() which can guarantee a specified alignment. After that, I can try to actually switch tasks automatically with a simple scheduler! I will probably use the PIT interrupt to switch to the next task in a list."}, {"post_id": 42570, "ts": "2026-08-07T11:56:52Z", "hours": 4.5606, "text": "It probably doesn’t sound special, but it is as important as everything else: SSE support SSE is an extension of the CPU which has 16 128-bit registers, but is rarely used. This means, that saving all of these registers every time a task switch occurs would cost some performance. For this reason, the CPU has a bit that can be set to indicate that a task switch occurred. In most cases, nothing happens and the registers are kept in their original state. But if a task needs to use SSE instructions, the CPU generates an interrupt, which manually saves the SSE registers. This is what I am working on currently. Custom ISR wrapper All interrupt handlers use now my custom wrappers, which made possible that I can work on SSE support."}, {"post_id": 40940, "ts": "2026-08-04T19:52:16Z", "hours": 5.0347, "text": "Array optimization (Screenshot 1) I now actually optimized the dynamic array type, which means that it allocates memory in bigger chunks instead of every time an element is added / removed. In the process I added some debug logging, so typing is now very difficult if you don’t know how it works with log level LOG_DEBUG . Custom ISR wrapper (Screenshot 2) I finally decided to implement my own wrapper for ISRs instead of relying on __attribute__((interrupt)) . This should allow me to use floating point math with the FPU in the future. Also, I can now read more registers on interrupt (screenshot). Road map I am currently working on making all ISRs compatible with my wrapper. Then I will continue trying to get multitasking to work."}, {"post_id": 38897, "ts": "2026-08-01T14:03:43Z", "hours": 6.4275, "text": "Multitasking (Screenshot 1) I decided to try to implement multitasking! The kernel can now switch tasks, but only one time. This is the first step in direction of real multitasking, but I still have much to do. It is interesting to see, How I realize how bad my implementations I did earlier are, because I don’t fully understand them. But now I can improve them! Dynamic arrays (Screenshot 2) I made a quick implementation of dynamic arrays for the keyboard driver, but as I realized that I need them to store a list of tasks, I decided to implement one optimized implementation I can use everywhere. I have implemented a very simple version and use it in the keyboard driver, but it isn’t optimized yet. In fact, it’s even worse than the one I had earlier in the keyboard driver, because every modification now requires a reallocation. Road map I am going to optimize dynamic arrays, and then continue with multitasking."}, {"post_id": 36558, "ts": "2026-07-28T19:08:32Z", "hours": 2.8569, "text": "PIT I quickly wrote a simple PIT (Programmable Interval Timer) driver, so that I have a basic sleep function. It isn’t really useful at the moment and not thread safe, but as it was very simple I thought why not? APIC I realized that MADT I/O APIC overrides also override the flags of entries, so I am using these now unless it’s overridden by the user. Road map As I have now a simple keyboard driver, I want to work on something new. Some things I am considering: Multitasking Filesystems ELF loading PCI USB All of this topics are completely new to me, so I will pick the one that looks the most simple and probably fail anyway."}, {"post_id": 33535, "ts": "2026-07-23T15:58:35Z", "hours": 2.3419, "text": "I am shipping soon! Some little improvements in messages I improved some messages, so that the kernel looks more polished to new users. v0.2.0 I released a new version, which is what I am shipping soon (if nothing goes wrong). It includes an interactive CLI, which was made possible with the new keyboard driver. I improved the scrolling performance a lot, which I personally really enjoy! Finally, I fixed a bug when printing numbers, so the printed memory map now has (mostly) correct addresses."}, {"post_id": 32511, "ts": "2026-07-21T18:56:41Z", "hours": 3.1614, "text": "The kernel is now interactive! Demo CLI I added a demo CLI (you can see it on the screenshot) where you can exit properly, run tests or view the old demo! Keyboard driver I had to fix some bugs with the keyboard driver, but now I think it works okay enough that the CLI is stable (previously, it kept parts from the old buffer when reading it again) Road map I want to add more features to the CLI, such as setting the log level. As you can see on the screenshot, the debug output disturbs the CLI."}, {"post_id": 31826, "ts": "2026-07-20T14:47:46Z", "hours": 5.0328, "text": "I FINALLY get interrupts from the keyboard! PS/2 Keyboard driver The problem was, that I mistook the IRQ number for the interrupt vector when calling my own function! Now I can start expanding my keyboard driver. Currently, it already prints the pressed keys to the screen, as you can see on the screen shot. Performance improvements when scrolling After I finished the interrupt stuff, I can focus on improving the TTY in other areas, like the performance. I am using now memset() and memcpy() functions when scrolling the frame buffer, which itself is not an improvement: I optimized the two functions to use copy 8-byte blocks ad uint64_t instead of each byte individually, which made a significant difference. Scrolling with KVM acceleration is now almost instant on my PC, and without it is as fast as it was before with acceleration. Road map I want to improve the TTY with things like buffering, which should improve the performance even more. When I have a solid TTY, I can rework the demo and ship again."}, {"post_id": 30816, "ts": "2026-07-18T19:00:05Z", "hours": 6.3653, "text": "I am still far away from getting interrupts from the keyboard, but I am still learning much and making progress on other parts of the kernel! PMM I added support for mapping pages manually, which means that I can program now the APICs! While debugging this, I also improved my Page Fault handler, which you can see on the screenshot. APIC driver The APIC driver should now be able to configure IRQs on the I/O APIC to get delivered to the local APIC, but I can’t test it as I still don’t know why I can’t get interrupts from the keyboard :-( Road Map I am still working on getting interrupts from the keyboard, which is my main goal before the next ship. I currently suspect that my PS/2 driver is broken."}, {"post_id": 29069, "ts": "2026-07-15T18:32:01Z", "hours": 7.5669, "text": "I prefer this devlog format, so I will stick to it. I/O APIC As I explained earlier, I need to configure the APIC to get interrupts. I think I only need the I/O APIC and not the local APIC, if I understand the limine documentation correctly. But when trying to access it’s registers, I got a page fault. It seems like I need to manually map the registers to virtual memory, which brings me to… Physical Memory Manager I need to do what I already feared when starting to write the PMM, manually editing page tables. I am working on a function which will map pages (Including the I/O APIC registers) to virtual addresses. For this, I need to walk the complete paging structure: PML4 (from cr3) -> PDPT -> PD -> PT I can already parse it until I have the PT’s address, but when accessing the PT I get a page fault, as you can see on the screenshot. Road map I just wanted to post this update so that the next devlog is not too long. I will continue to work on the PMM, until I can access the I/O APIC’s registers."}, {"post_id": 24628, "ts": "2026-07-08T10:52:11Z", "hours": 8.3475, "text": "I did not post for some time, so this devlog will be relatively long. PS/2 driver (Screenshot 1) I wanted to get the PIC to work, but as I had no idea why it didn’t work I thought that the PS/2 Controller might not be in a functioning state. So, I wrote a PS/2 driver which initializes the Controller, and also detects connected devices! PIC -> APIC After that, I finally found out that limine already sets up the APIC, which means that the PIC is no longer functional. So I decided that my next big goal is to learn how ACPI and APIC work… ACPI (Screenshot 2) As you can see on the screenshots, I started working on an ACPI driver, which is already able to find tables like the MADT, which I need to find the APICs UEFI This does not have anything to do with the progress of my project, but I learned how to use UEFI in QEMU, so that I can debug my ACPI driver better. Road map I will have to learn now how APICs work, so that I can get interrupts from the keyboard. Then, I can improve the keyboard driver, which should make the kernel way more fun to use!"}, {"post_id": 20746, "ts": "2026-07-02T13:20:11Z", "hours": 6.0672, "text": "I have finished implementing the memory manager! free() will now call pmm_free() to free unused pages. At the moment it does not make any difference, but if I want to extend the PMM it will have saved me the work. Also, I split the demo from the main function so that it is more maintainable. Log messages with the log level DEBUG will now only appear in debug builds. This made the output much more readable, as you can see in the screenshots."}, {"post_id": 19208, "ts": "2026-06-30T14:00:38Z", "hours": 9.6128, "text": "I have added a simple memory manager to my kernel! It was only possible with the help from kmos , a project I found while voting. I didn’t know how to start writing a physical memory manager, but in that kernel I found that I have to use the limine HHDM request to have simple access to physical addresses. Then I could implement the rest completely myself. The last thing left to do until I’m satisfied with my memory manager, is to free pages in the PMM after using free()"}, {"post_id": 12539, "ts": "2026-06-20T14:12:50Z", "hours": 0.8414, "text": "Now I am actually shipping! I had a bug that occured only when compiling with optimization level 2 or higher (which I used in the release CI). As I am working now on a Debian machine, I made it also compile on Debian stable by not requiring a new objcopy version. On the screenshot you can see the bug."}, {"post_id": 11482, "ts": "2026-06-18T19:17:02Z", "hours": 4.0292, "text": "I will ship the kernel now for the first time! I added a libk (like a libc but for the kernel) and implemented some cool functions like printf(), which I could use for cool error messages with hex numbers like the one on the screenshot."}, {"post_id": 9395, "ts": "2026-06-15T18:55:28Z", "hours": 2.4939, "text": "I sadly don’t have much to say, because I did make almost no progress. I am trying to use the PIC to get interrupts from the keyboard, but it doesn’t work for some reason. Maybe I will try to use APIC instead, but it’s more complicated."}, {"post_id": 8627, "ts": "2026-06-14T10:44:21Z", "hours": 2.2619, "text": "I finally figured out how I can integrate the external library! Now I can skip instructions when an interrupt is executed and continue execution"}, {"post_id": 7621, "ts": "2026-06-12T19:00:11Z", "hours": 1.0647, "text": "I just wanted to implement an interrupt handler specific to divide error, but it turned out to be way more difficult than I thought! To continue execution after the interrupt, I have to manually increment the instruction pointer manually. But to know by which amount, I need to now the size of the whole instruction. To find it I wanted to use a library called Zydis, but I could not get it to compile, because clang generates calls to memset() and memcpy() . As I can not link with the standard library, I will have to find a solution tomorrow."}, {"post_id": 5837, "ts": "2026-06-09T19:37:29Z", "hours": 3.1153, "text": "I added a demo to show the features of my kernel. The kernel is almost ready for the first ship!"}, {"post_id": 4373, "ts": "2026-06-07T18:00:51Z", "hours": 3.2469, "text": "After giving up on the memory manager, I added logging and very basic interrupt handling. I will ship the project when I have a demo of all the features and published ISOs."}, {"post_id": 3530, "ts": "2026-06-06T14:47:32Z", "hours": 2.2575, "text": "As I have now a very basic way to interact with the kernel, I will try to move on to more complex topics. At the moment I try to understand how memory management exactly works (specifically, how to write a physical memory manager), but it’s difficult to find information about it. Until now, I have requested a memory map from limine and can display it in a table."}, {"post_id": 3364, "ts": "2026-06-06T07:57:08Z", "hours": 1.7286, "text": "I implemented enter key press detection before doing anything else, so that I can interact somehow with the kernel. I did it with IO Ports instead of interrupts for now (because I don’t know how to set up interrupts), which means it only works with PS/2 Keyboards. Luckily, qemu shows the keyboard as a PS/2 Keyboard."}, {"post_id": 2308, "ts": "2026-06-04T18:38:28Z", "hours": 2.5331, "text": "I have added a normal font which makes things way simpler. I also improved the general tty: scrolling, new lines and tabs work now!"}, {"post_id": 1458, "ts": "2026-06-03T14:42:11Z", "hours": 1.7617, "text": "I spend so much time to fix a stupid bug (taking the address of a pointer instead of the address stored in the pointer), but know I can display characters from my ugly psf2 font! At least I learned more about gdb."}, {"post_id": 957, "ts": "2026-06-02T18:43:29Z", "hours": 3.0825, "text": "I implemented a set_pixel function, so that I can set specific pixels on the framebuffer. The next step will probably be to display text, maybe with a font made with psfedit, my project for flavortown. I also published my code on GitLab, which means I will try to build ISOs with gitlab CI at some point."}, {"post_id": 294, "ts": "2026-06-01T15:23:58Z", "hours": 1.1658, "text": "I have started to work on my kernel! I just set up my project structure but it does not work as you can see on the screenshot. I will look at it tomorrow. I have already tried to write a kernel earlier this week, but it was an i686 kernel with multiboot 2. Also, I had to copy much code from the limine template, but I will go beyond that when the kernel runs. This means, that I have a weird mix of makefile and meson, as the example uses make but I prefer meson. As I do not want to set up long mode myself, my new kernel uses limine instead of multiboot. My current plan is to get it to run and then publish the source code. Later, I might try to remove make completely and only rely on meson for building the iso."}]...
|
Title: Kern by @AntKru | Stardance
Devlogs:
I hav Title: Kern by @AntKru | Stardance
Devlogs:
I have started to work on my kernel! I just set up my project structure but it does not work as you can see on the screenshot. I will look at it tomorrow. I have already tried to write a kernel earlier this week, but it was an i686 kernel with multiboot 2. Also, I had to copy much code from the limine template, but I will go beyond that when the kernel runs. This means, that I have a weird mix of makefile and meson, as the example uses make but I prefer meson. As I do not want to set up long mode myself, my new kernel uses limine instead of multiboot. My current plan is to get it to run and then publish the source code. Later, I might try to remove make completely and only rely on meson for building the iso.
I implemented a set_pixel function, so that I can set specific pixels on the framebuffer. The next step will probably be to display text, maybe with a font made with psfedit, my project for flavortown. I also published my code on GitLab, which means I will try to build ISOs with gitlab CI at some point.
I spend so much time to fix a stupid bug (taking the address of a pointer instead of the address stored in the pointer), but know I can display characters from my ugly psf2 font! At least I learned more about gdb.
I have added a normal font which makes things way simpler. I also improved the general tty: scrolling, new lines and tabs work now!
I implemented enter key press detection before doing anything else, so that I can interact somehow with the kernel. I did it with IO Ports instead of interrupts for now (because I don’t know how to set up interrupts), which means it only works with PS/2 Keyboards. Luckily, qemu shows the keyboard as a PS/2 Keyboard.
As I have now a very basic way to interact with the kernel, I will try to move on to more complex topics. At the moment I try to understand how memory management exactly works (specifically, how to write a physical memory manager), but it’s difficult to find information about it. Until now, I have requested a memory map from limine and can display it in a table.
After giving up on the memory manager, I added logging and very basic interrupt handling. I will ship the project when I have a demo of all the features and published ISOs.
I added a demo to show the features of my kernel. The kernel is almost ready for the first ship!
I just wanted to implement an interrupt handler specific to divide error, but it turned out to be way more difficult than I thought! To continue execution after the interrupt, I have to manually increment the instruction pointer manually. But to know by which amount, I need to now the size of the whole instruction. To find it I wanted to use a library called Zydis, but I could not get it to compile, because clang generates calls to memset() and memcpy() . As I can not link with the standard library, I will have to find a solution tomorrow.
I finally figured out how I can integrate the external library! Now I can skip instructions when an interrupt is executed and continue execution
I sadly don’t have much to say, because I did make almost no progress. I am trying to use the PIC to get interrupts from the keyboard, but it doesn’t work for some reason. Maybe I will try to use APIC instead, but it’s more complicated.
I will ship the kernel now for the first time! I added a libk (like a libc but for the kernel) and implemented some cool functions like printf(), which I could use for cool error messages with hex numbers like the one on the screenshot.
Now I am actually shipping! I had a bug that occured only when compiling with optimization level 2 or higher (which I used in the release CI). As I am working now on a Debian machine, I made it also compile on Debian stable by not requiring a new objcopy version. On the screenshot you can see the bug.
I have added a simple memory manager to my kernel! It was only possible with the help from kmos , a project I found while voting. I didn’t know how to start writing a physical memory manager, but in that kernel I found that I have to use the limine HHDM request to have simple access to physical addresses. Then I could implement the rest completely myself. The last thing left to do until I’m satisfied with my memory manager, is to free pages in the PMM after using free()
I have finished implementing the memory manager! free() will now call pmm_free() to free unused pages. At the moment it does not make any difference, but if I want to extend the PMM it will have saved me the work. Also, I split the demo from the main function so that it is more maintainable. Log messages with the log level DEBUG will now only appear in debug builds. This made the output much more readable, as you can see in the screenshots.
I did not post for some time, so this devlog will be relatively long. PS/2 driver (Screenshot 1) I wanted to get the PIC to work, but as I had no idea why it didn’t work I thought that the PS/2 Controller might not be in a functioning state. So, I wrote a PS/2 driver which initializes the Controller, and also detects connected devices! PIC -> APIC After that, I finally found out that limine already sets up the APIC, which means that the PIC is no longer functional. So I decided that my next big goal is to learn how ACPI and APIC work… ACPI (Screenshot 2) As you can see on the screenshots, I started working on an ACPI driver, which is already able to find tables like the MADT, which I need to find the APICs UEFI This does not have anything to do with the progress of my project, but I learned how to use UEFI in QEMU, so that I can debug my ACPI driver better. Road map I will have to learn now how APICs work, so that I can get interrupts from the keyboard. Then, I can improve the keyboard driver, which should make the kernel way more fun to use!
I prefer this devlog format, so I will stick to it. I/O APIC As I explained earlier, I need to configure the APIC to get interrupts. I think I only need the I/O APIC and not the local APIC, if I understand the limine documentation correctly. But when trying to access it’s registers, I got a page fault. It seems like I need to manually map the registers to virtual memory, which brings me to… Physical Memory Manager I need to do what I already feared when starting to write the PMM, manually editing page tables. I am working on a function which will map pages (Including the I/O APIC registers) to virtual addresses. For this, I need to walk the complete paging structure: PML4 (from cr3) -> PDPT -> PD -> PT I can already parse it until I have the PT’s address, but when accessing the PT I get a page fault, as you can see on the screenshot. Road map I just wanted to post this update so that the next devlog is not too long. I will continue to work on the PMM, until I can access the I/O APIC’s registers.
I am still far away from getting interrupts from the keyboard, but I am still learning much and making progress on other parts of the kernel! PMM I added support for mapping pages manually, which means that I can program now the APICs! While debugging this, I also improved my Page Fault handler, which you can see on the screenshot. APIC driver The APIC driver should now be able to configure IRQs on the I/O APIC to get delivered to the local APIC, but I can’t test it as I still don’t know why I can’t get interrupts from the keyboard :-( Road Map I am still working on getting interrupts from the keyboard, which is my main goal before the next ship. I currently suspect that my PS/2 driver is broken.
I FINALLY get interrupts from the keyboard! PS/2 Keyboard driver The problem was, that I mistook the IRQ number for the interrupt vector when calling my own function! Now I can start expanding my keyboard driver. Currently, it already prints the pressed keys to the screen, as you can see on the screen shot. Performance improvements when scrolling After I finished the interrupt stuff, I can focus on improving the TTY in other areas, like the performance. I am using now memset() and memcpy() functions when scrolling the frame buffer, which itself is not an improvement: I optimized the two functions to use copy 8-byte blocks ad uint64_t instead of each byte individually, which made a significant difference. Scrolling with KVM acceleration is now almost instant on my PC, and without it is as fast as it was before with acceleration. Road map I want to improve the TTY with things like buffering, which should improve the performance even more. When I have a solid TTY, I can rework the demo and ship again.
The kernel is now interactive! Demo CLI I added a demo CLI (you can see it on the screenshot) where you can exit properly, run tests or view the old demo! Keyboard driver I had to fix some bugs with the keyboard driver, but now I think it works okay enough that the CLI is stable (previously, it kept parts from the old buffer when reading it again) Road map I want to add more features to the CLI, such as setting the log level. As you can see on the screenshot, the debug output disturbs the CLI.
I am shipping soon! Some little improvements in messages I improved some messages, so that the kernel looks more polished to new users. v0.2.0 I released a new version, which is what I am shipping soon (if nothing goes wrong). It includes an interactive CLI, which was made possible with the new keyboard driver. I improved the scrolling performance a lot, which I personally really enjoy! Finally, I fixed a bug when printing numbers, so the printed memory map now has (mostly) correct addresses.
PIT I quickly wrote a simple PIT (Programmable Interval Timer) driver, so that I have a basic sleep function. It isn’t really useful at the moment and not thread safe, but as it was very simple I thought why not? APIC I realized that MADT I/O APIC overrides also override the flags of entries, so I am using these now unless it’s overridden by the user. Road map As I have now a simple keyboard driver, I want to work on something new. Some things I am considering: Multitasking Filesystems ELF loading PCI USB All of this topics are completely new to me, so I will pick the one that looks the most simple and probably fail anyway.
Multitasking (Screenshot 1) I decided to try to implement multitasking! The kernel can now switch tasks, but only one time. This is the first step in direction of real multitasking, but I still have much to do. It is interesting to see, How I realize how bad my implementations I did earlier are, because I don’t fully understand them. But now I can improve them! Dynamic arrays (Screenshot 2) I made a quick implementation of dynamic arrays for the keyboard driver, but as I realized that I need them to store a list of tasks, I decided to implement one optimized implementation I can use everywhere. I have implemented a very simple version and use it in the keyboard driver, but it isn’t optimized yet. In fact, it’s even worse than the one I had earlier in the keyboard driver, because every modification now requires a reallocation. Road map I am going to optimize dynamic arrays, and then continue with multitasking.
Array optimization (Screenshot 1) I now actually optimized the dynamic array type, which means that it allocates memory in bigger chunks instead of every time an element is added / removed. In the process I added some debug logging, so typing is now very difficult if you don’t know how it works with log level LOG_DEBUG . Custom ISR wrapper (Screenshot 2) I finally decided to implement my own wrapper for ISRs instead of relying on __attribute__((interrupt)) . This should allow me to use floating point math with the FPU in the future. Also, I can now read more registers on interrupt (screenshot). Road map I am currently working on making all ISRs compatible with my wrapper. Then I will continue trying to get multitasking to work.
It probably doesn’t sound special, but it is as important as everything else: SSE support SSE is an extension of the CPU which has 16 128-bit registers, but is rarely used. This means, that saving all of these registers every time a task switch occurs would cost some performance. For this reason, the CPU has a bit that can be set to indicate that a task switch occurred. In most cases, nothing happens and the registers are kept in their original state. But if a task needs to use SSE instructions, the CPU generates an interrupt, which manually saves the SSE registers. This is what I am working on currently. Custom ISR wrapper All interrupt handlers use now my custom wrappers, which made possible that I can work on SSE support.
SSE register state switching! The kernel will now switch the SSE register state lazily, but I still have two problems: The Part for the registers in the TCB must be 16 byte aligned, which it currently not guaranteed The interrupt handlers are not allowed to use SSE instructions, but I have no way of verifying this Road map I think it is time to write a version of malloc() which can guarantee a specified alignment. After that, I can try to actually switch tasks automatically with a simple scheduler! I will probably use the PIT interrupt to switch to the next task in a list.
Multitasking… I am still working on multitasking, but I am stuck currently. I am trying to modify the stack frame so that asm_switch_task is called after iretq , but it doesn’t work. As you can see on the screenshot, I get a page fault as soon as it tries to switch tasks (in the debugging process I had it switch 2-3 times before it crashes, which is not really better) Road map My highest priority is to get task switching to work consistently. After that, I will see what I can polish.
Multitasking! I fixed the last bug (that I could find) and multitasking works now! On the screenshot you can see two tasks trying to print the numbers 0-19 at the same time. The CLI even waits until the tasks are finished! Road map The output is still a little bit broken, so I want to implement output buffering and mutexes, so that multiple threads can’t print at the same time.
Mutexes I implemented a simple mutex (which isn’t perfect yet, but it works). As visible on the screenshot, I used it to make it impossible for the test tasks to print at the same time. One problem with it is that it currently runs hlt after releasing a mutex so that a different task has a chance to acquire it, which doesn’t seem like the best solution to me. Roadmap I am making the terminal position atomic, so that I don’t need mutexes for output, which I can not use in interrupt handlers
GCC support I added GCC support, which should (hopefully) make debugging easier for me. I can’t show it really on the screenshot, trust me, it is compiled with gcc! Roadmap I have still bugs in my multitasking system. Currently I get a page fault when compiling with optimization > -O2 with clang, the next step is to test it with GCC.
RTC The kernel can now read the current time from the Computer’s RTC! At the moment, you can’t select the time zone, so the time is probably in UTC, depending on how the computer is configured. Roadmap I am planning to improve the use experience, for example by using multiple “windows”, to maybe even have a status bar.
“Windows” I am making it possible to split the framebuffer into multiple views. This should make it more easy to have a more advanced UI than a CLI already inside the kernel. Hopefully there will be user processes at some point, but I want to have a nice looking OS before that. Roadmap I still have to fix some things (as visible on the screenshot). After that, I can try to make use of it and add a status bar or a separate command window.
Status bar! I added a status bar which show the current time. It is very basic, but makes the OS look way more friendlier in my opinion. Sorry for the weird messages in the main window, I am currently debugging my printf implementation. Roadmap I still have a problem with printing dates: The year 2006 would be printed as 206 , because the RTC has seperate registers for year and century, so if century is 20 and year is 6 it prints 206.
printf compatability I improved the printf() compatability, so that I can pad numbers with or 0 . This is very useful, for example I now can use it to display time and date properly. Roadmap I don’t know yet what’s the next thing to do, maybe I will ship soon.
Final improvements before the next release Status bar I moved the status bar from the bottom to the top and removed the borders, in my opinion it looks better this way. Framebuffer borders I am already working on a new command which will make it possible to see the borders of the framebuffer in QEMU. This will be useful for debugging while keeping the UI simple. Bugs There are still some obvious bugs: My printf() implementation seems to break with invalid format strings and I have a bug in my memory manager which prevents me from merging the command showing the screen borders into main. Roadmap I will try to fix the bugs, but the features are now complete. I want to release the new version tomorrow.
Release 0.3.0 I finished the release, including the new borders command! The visible bugs that I found are also fixed, please report them if you find some! Roadmap The kernel isn’t finished yet, I will continue to improve it and see how far I will get.
PCI! I am starting to write a PCI driver, which opens a new world to me! As you can see, the kernel is already able to print some information on boot about connected PCI devices. I also added a function that can search for a specific PCI device by it’s class, which will help me to implement drivers for specific PCI devices. Roadmap The real reason I am implementing PCI is that I need it to find the AHCI controller. The AHCI controller can be used to access connected storage devices, which is my long-term goal.
AHCI! (SATA) I am jumping a little bit fast form PCI to AHCI, but I think the PCI driver is as good as I need it right now, and if I learn that it isn’t, I will fix it. Anyway, I am starting to work on AHCI! This is really cool, as this allows me to communicate to storage devices! At the moment the kernel just lists connected devices, but that’s just the beginning! Roadmap The AHCI driver is in a very early stage, and it will take me a lot of time to finish, as AHCI is relatively complicated and the documentation isn’t written for beginners like me ;-)
Memory management problems… It seems like there was a critical bug sleeping inside my memory manager. It appeared since I started using the PMM in my AHCI driver, but I think the problem is in the virtual memory manager. For this reason I am working currently on the memory manager instead of the AHCI driver. Roadmap As soon as I fix the MM, I will continue on the AHCI driver. It probably won’t be finished until the end of stardance.
AHCI update I continued working on AHCI, the memory management problem was actually a problem in my AHCI driver…. Anyway, the AHCI driver has made some progress. I sadly couldn’t post for such a long time, as there where no visible changes, so here is a screenshot of some debugging messages I added while working on it. The initialization code is almost finished, but I am still very far away from reading actual files. Roadmap As stardance is ending soon, I will try to do some stuff users actually see and finish AHCI later. One idea I had is to add a command to only show specific debug messages. I also will update the demo to demonstrate more recent features.
Usability improvements As I won’t be able to finish the AHCI driver, I decided to improve the usability. I added dbg/dbgclr commands to allow easier debugging by only printing specific debug messages. The CLI got some big improvements, it will now detect commands even with trailing spaces. the loglevel command was renamed to logl for faster typing. Both logl and dbg accept their input now as CLI arguments instead of asking the user themselves. Roadmap After stardance I will probably take a little break, but then I want to continue on the AHCI driver, so that I finally can read files from SATA drives! And even after that, there are many more things to explore, like ELF loading, USB, Networking…
Ships:
I made an x86_64 kernel using the limine boot protocol. I don’t know what the most difficult thing was, as even most basic things are very complicated for me as a beginner in osdev. I still have to learn much and the kernel will be improved, but I thing it kind of works now. I have a video demo in the readme, if you don’t have qemu . When building, remember to clone the submodules ( git submodule init && git submodule update ). You need xorriso to build the ISO. Sorry for mixing meson and make , but in the README is a guide. Please use clang, gcc is very complicated.
I added a CLI the kernel, which was possible, because I finally have a keyboard driver! It only took so long, because it was actually difficult to write it: I thought I have to program the PIC, but it was already disabled so I had to learn the more complicated APIC. There is a demo video in the README if you don’t want to run the kernel. If you want to run it on macOS with UTM, you have to force a PS/2 controller: https://docs.getutm.app/settings-qemu/qemu/#force-ps2-controller
I have released the next version of my own kernel! The biggest feature I added is multitasking. While it doesn’t look that special, it was actually very difficult to make my kernel switch between different tasks! Here are some notes on how to try the project: If you don’t want/can’t run it, you can look at the video in the readme. If you want to run it on macOS with UTM, you have to force a PS/2 controller: https://docs.getutm.app/settings-qemu/qemu/#force-ps2-controller
What I did In the latest release I improved the usability of the CLI and added a PCI driver. On the ahci branch I have worked on an AHCI (Used for reading from SATA drives) driver, but it isn’t finished yet. What was challenging The AHCI driver is very difficult to implement and is far from ready (The AHCI controller can now be initialized by the kernel, but it can’t read from drives, yet). For this reason I decided not to include it in the release, but if you want to see what I worked on check out the ahci branch! What I am proud of I really enjoyed writing the AHCI driver, it is a cool feeling to have two manuals opened at the same time and trying to understand what they want to tell you. Even though the driver isn’t finished yet, I put much work into it. How to try the kernel Video In the README of the git repo is a video, where you can see the latest release in action. Release ISO I’ve linked the release page, where you can download the ISO and run it with QEMU: qemu-system-x86_64 kern.iso Note for macOS users: If you want to run it on macOS with UTM, you have to force a PS/2 controller: https://docs.getutm.app/settings-qemu/qemu/#force-ps2-controller Building the kernel If you want to build the kernel, for example to check out the ahci branch, follow the build instructions in the README....
|
1793537743.2754834
|
1793624143.2754834
|
|
39329
|
Slickify by @Brandt | Stardance
|
Brandt
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T21:19:55Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finished making Slickify, a Slack bot that adds silly modifiers to your messages! /slickify-ping: Simple ping command /slickify-slickify: Adds 😎s in between words in your message /slickify-smallify: Shrinks all the characters in your message to the best of its ability (due to Unicode limitations it’s not entirely possible)", "repo": "https://github.com/BranditTheBandit/slickify", "demo": "https://hackclub.enterprise.slack.com/archives/C0BKQJ8RGDB"}]...
|
[{"post_id": 34446, "ts": "202 [{"post_id": 34446, "ts": "2026-07-25T05:12:16Z", "hours": 0.3817, "text": "Silly Slack bot with message modifiers is done! /slickify-slickify (would just be /slickify but I shall follow the will of the guide) just adds 😎s between each word in the message by splitting it up into an array and prepending the emoji /slickify-smallify shrinks your message to the best of its abilities by replacing each character according to a predefined array, but due to limitations in Unicode it can’t shrink a lot of things"}]...
|
Title: Slickify by @Brandt | Stardance
Devlogs:
S Title: Slickify by @Brandt | Stardance
Devlogs:
Silly Slack bot with message modifiers is done! /slickify-slickify (would just be /slickify but I shall follow the will of the guide) just adds 😎s between each word in the message by splitting it up into an array and prepending the emoji /slickify-smallify shrinks your message to the best of its abilities by replacing each character according to a predefined array, but due to limitations in Unicode it can’t shrink a lot of things
Ships:
I finished making Slickify, a Slack bot that adds silly modifiers to your messages! /slickify-ping: Simple ping command /slickify-slickify: Adds 😎s in between words in your message /slickify-smallify: Shrinks all the characters in your message to the best of its ability (due to Unicode limitations it’s not entirely possible)...
|
1793537746.4371145
|
1793624146.4371145
|
|
38159
|
Live Asteroid Sim by @cognitayohan | Stardance
|
cognitayohan
|
1
|
3.42
|
20
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T00:04:01Z", "hours": 3.0, "multiplier": 7.44, "payout": 20, "blessing": "neutral", "text": "Ship #1: Live Asteroid Sim is ready for its very first ship! This app is an interactive 3D simulator displaying real-time near-Earth asteroids from NASA NeoWs API with orbits, size, speed, and approach vectors. It utilizes the live API to display real data and simulation of asteroids and their threat to the Earth. The app also includes simulators of impact damage as well as DART (Planetary Defense) for protecting the Earth from incoming asteroids.", "repo": "https://github.com/robot3-track/Asteroid3D", "demo": "https://asteroidsim.vercel.app"}]...
|
[{"post_id": 44728, "ts": "202 [{"post_id": 44728, "ts": "2026-08-10T17:43:52Z", "hours": 0.4247, "text": "Live Asteroid 3D simulator Devlog 5 After reviewing a few community requests, I decided to work on the UI a bit more and also fix scaling differences to help users understand the scope of the app."}, {"post_id": 34896, "ts": "2026-07-25T23:59:05Z", "hours": 0.2994, "text": "Live Asteroid 3D simulator Devlog 4 Now the app has a better globe model and a more accurate SVG moon layer!"}, {"post_id": 34888, "ts": "2026-07-25T23:32:36Z", "hours": 0.8439, "text": "Live Asteroid 3D simulator Devlog 3 Two new features have been added to the simulator! Now you can simulate protecting the earth and also viewing the impact on the Earth."}, {"post_id": 34705, "ts": "2026-07-25T17:05:30Z", "hours": 0.9014, "text": "Live Asteroid 3D simulator Devlog 2 I added more safety checks as well as new Android build files for Github Artifact runs! I also fixed broken UI aspects by editing text and orientation of objects."}, {"post_id": 32777, "ts": "2026-07-22T04:55:09Z", "hours": 0.7817, "text": "Live Asteroid 3D Simulator Devlog 1 Today I made my initial build of my project, Live Asteroid Sim 3D. The app is built off of React Next.js as well as using Three.js for the modeling of the Earth and the Asteroids. The purpose of the app is to use NASA’s API to extract current live data on asteroids to educate the population on current hazards and asteroid routes. For purposes of the simulation, the distances of the asteroids from the earth is truncated compared to the distance from the earth to the moon because if I were to make it as of scale, it would be way too hard for the user to locate the asteroids admist the empty space. However, I provided data tables that clearly depict the actual live values of the asteroids as well as comparison for easy visualization. Hope you all enjoy the project, I have much more to code to add on!"}]...
|
Title: Live Asteroid Sim by @cognitayohan | Starda Title: Live Asteroid Sim by @cognitayohan | Stardance
Devlogs:
Live Asteroid 3D Simulator Devlog 1 Today I made my initial build of my project, Live Asteroid Sim 3D. The app is built off of React Next.js as well as using Three.js for the modeling of the Earth and the Asteroids. The purpose of the app is to use NASA’s API to extract current live data on asteroids to educate the population on current hazards and asteroid routes. For purposes of the simulation, the distances of the asteroids from the earth is truncated compared to the distance from the earth to the moon because if I were to make it as of scale, it would be way too hard for the user to locate the asteroids admist the empty space. However, I provided data tables that clearly depict the actual live values of the asteroids as well as comparison for easy visualization. Hope you all enjoy the project, I have much more to code to add on!
Live Asteroid 3D simulator Devlog 2 I added more safety checks as well as new Android build files for Github Artifact runs! I also fixed broken UI aspects by editing text and orientation of objects.
Live Asteroid 3D simulator Devlog 3 Two new features have been added to the simulator! Now you can simulate protecting the earth and also viewing the impact on the Earth.
Live Asteroid 3D simulator Devlog 4 Now the app has a better globe model and a more accurate SVG moon layer!
Live Asteroid 3D simulator Devlog 5 After reviewing a few community requests, I decided to work on the UI a bit more and also fix scaling differences to help users understand the scope of the app.
Ships:
Ship #1: Live Asteroid Sim is ready for its very first ship! This app is an interactive 3D simulator displaying real-time near-Earth asteroids from NASA NeoWs API with orbits, size, speed, and approach vectors. It utilizes the live API to display real data and simulation of asteroids and their threat to the Earth. The app also includes simulators of impact damage as well as DART (Planetary Defense) for protecting the Earth from incoming asteroids....
|
1793537748.4766426
|
1793624148.4766426
|
|
35274
|
DracolaxOS by @aerixsystemlabs | Stardance
|
aerixsystemlabs
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T21:55:56Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Custom OS with Claude web using C and assembly. This project is one of the most time consuming , I had many problems with kernel panic and the OS File System. The first time I started to make GUI, I was so hipped that I completely forgot to implement Widgets to the OS, it already had many apps and stuff, then I noticed why buttons were not working how they should and why text inputs were broken, it was because everything was “hand made”. Some details to take not are that the OS doesnt create a partition yet, so if you wanna try to on a real hardware, it may break.", "repo": "https://github.com/aerixsystem/DracolaxOS", "demo": "https://github.com/aerixsystem/DracolaxOS/releases/tag/v1.0-beta"}]...
|
[{"post_id": 42256, "ts": "202 [{"post_id": 42256, "ts": "2026-08-06T21:37:07Z", "hours": 1.1217, "text": "Hello Everyone, This is my 2nd Stardance devlog ( 06/08/2026 ). For the past few days I have been working on Dracolax OS, improving the GUI mode and kernel. I Got: FPU ( Floating-Point Unit ) support updated; Integrated STB libraries to build out a custom TTF font engine; I didnt implement TTF to the entire GUI mode, since I am still testing. Alongside general GUI improvements (Widgets). Here is a video of me using my OS on vbox (Oracle VirtualBox):"}, {"post_id": 29119, "ts": "2026-07-15T19:42:25Z", "hours": 0.4161, "text": "Hello everyone! I hope all are doing great. My name is Yunis, and I am from Mozambique. I am making a custom OS using C and Assembly ! This is my current focus, Finishing GUI mode of it. Oh and btw, I am using Claude from Web to make this project. Here is a screenshot of how it currently looks!"}]...
|
Title: DracolaxOS by @aerixsystemlabs | Stardance
Title: DracolaxOS by @aerixsystemlabs | Stardance
Devlogs:
Hello everyone! I hope all are doing great. My name is Yunis, and I am from Mozambique. I am making a custom OS using C and Assembly ! This is my current focus, Finishing GUI mode of it. Oh and btw, I am using Claude from Web to make this project. Here is a screenshot of how it currently looks!
Hello Everyone, This is my 2nd Stardance devlog ( 06/08/2026 ). For the past few days I have been working on Dracolax OS, improving the GUI mode and kernel. I Got: FPU ( Floating-Point Unit ) support updated; Integrated STB libraries to build out a custom TTF font engine; I didnt implement TTF to the entire GUI mode, since I am still testing. Alongside general GUI improvements (Widgets). Here is a video of me using my OS on vbox (Oracle VirtualBox):
Ships:
I made a Custom OS with Claude web using C and assembly. This project is one of the most time consuming , I had many problems with kernel panic and the OS File System. The first time I started to make GUI, I was so hipped that I completely forgot to implement Widgets to the OS, it already had many apps and stuff, then I noticed why buttons were not working how they should and why text inputs were broken, it was because everything was “hand made”. Some details to take not are that the OS doesnt create a partition yet, so if you wanna try to on a real hardware, it may break....
|
1793537750.5515015
|
1793624150.5515015
|
|
40105
|
USB 2.0 Hub by @Stylt | Stardance
|
Stylt
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T17:34:11Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Project Summary: Custom USB 2.0 Hub • What I designed: Designed a custom 4-port USB 2.0 High-Speed hub using the CH334F controller, featuring a modern USB-C input and four classic USB-A outputs. • What was challenging: Routing the high-speed USB data lines. The data pairs were swapped, forcing me to drop down using vias to route underneath. This disrupted the signal skew, requiring precise tuning and length matching to correct it while maintaining the strict 90Ω differential impedance. • What I’m proud of: The clean PCB layout and the extensive GND via stitching, which ensures a rock-solid return path. I’m also proud of integrating essential hardware protections—like USBLC6 ESD protection, an overcurrent fuse, and per-port indicator LEDs—making the board highly robust and safe.", "repo": "https://github.com/Stylt1/usb2.0hub", "demo": ""}]...
|
[{"post_id": 35303, "ts": "202 [{"post_id": 35303, "ts": "2026-07-26T16:56:00Z", "hours": 5.1167, "text": "View this project on CADLAB.io . usb2.0hub 🚀 USB 2.0 High-Speed Hub This project is a custom-designed 4-port USB 2.0 hub built around the WCH CH334F controller. It is optimized for stable data transmission. ⚡ Core Specifications Protocol: USB 2.0 High-Speed Transfer Rate: Up to 480 Mbps Controller IC: CH334F Upstream Port: 1x USB [Type-C] (Connection to PC/Host) Downstream Ports: 4x USB [Type-A] (Connection for peripherals) 🛡️ Protection & Diagnostics 💡 Status LEDs: Each downstream port features a dedicated indicator LED that lights up to confirm when a device is successfully connected. ⚡ ESD Protection: All USB data lines are equipped with USBLC6-2SC6 TVS diode arrays to safeguard against Electrostatic Discharge (ESD). 🔥 Overcurrent Protection: The power circuitry includes a built-in overcurrent fuse to protect the hub and connected peripherals from power surges or short circuits. 🛠️ PCB Design & Stackup To ensure signal integrity and proper 90Ω differential impedance for the USB data lines, the board is designed as a 4-layer PCB . Layer Stackup: Top Layer: Signal (Main high-speed routing and components) Inner Layer 1: GND Plane (Solid ground reference) Inner Layer 2: Power Plane (Power distribution) Bottom Layer: Second Signal (Low-speed routing and signal crossovers) (When I was making the PCB I couldn’t timelapse it so I posted empty lapse. On estimate it took me about 5 hours)"}]...
|
Title: USB 2.0 Hub by @Stylt | Stardance
Devlogs: Title: USB 2.0 Hub by @Stylt | Stardance
Devlogs:
View this project on CADLAB.io . usb2.0hub 🚀 USB 2.0 High-Speed Hub This project is a custom-designed 4-port USB 2.0 hub built around the WCH CH334F controller. It is optimized for stable data transmission. ⚡ Core Specifications Protocol: USB 2.0 High-Speed Transfer Rate: Up to 480 Mbps Controller IC: CH334F Upstream Port: 1x USB [Type-C] (Connection to PC/Host) Downstream Ports: 4x USB [Type-A] (Connection for peripherals) 🛡️ Protection & Diagnostics 💡 Status LEDs: Each downstream port features a dedicated indicator LED that lights up to confirm when a device is successfully connected. ⚡ ESD Protection: All USB data lines are equipped with USBLC6-2SC6 TVS diode arrays to safeguard against Electrostatic Discharge (ESD). 🔥 Overcurrent Protection: The power circuitry includes a built-in overcurrent fuse to protect the hub and connected peripherals from power surges or short circuits. 🛠️ PCB Design & Stackup To ensure signal integrity and proper 90Ω differential impedance for the USB data lines, the board is designed as a 4-layer PCB . Layer Stackup: Top Layer: Signal (Main high-speed routing and components) Inner Layer 1: GND Plane (Solid ground reference) Inner Layer 2: Power Plane (Power distribution) Bottom Layer: Second Signal (Low-speed routing and signal crossovers) (When I was making the PCB I couldn’t timelapse it so I posted empty lapse. On estimate it took me about 5 hours)
Ships:
Project Summary: Custom USB 2.0 Hub • What I designed: Designed a custom 4-port USB 2.0 High-Speed hub using the CH334F controller, featuring a modern USB-C input and four classic USB-A outputs. • What was challenging: Routing the high-speed USB data lines. The data pairs were swapped, forcing me to drop down using vias to route underneath. This disrupted the signal skew, requiring precise tuning and length matching to correct it while maintaining the strict 90Ω differential impedance. • What I’m proud of: The clean PCB layout and the extensive GND via stitching, which ensures a rock-solid return path. I’m also proud of integrating essential hardware protections—like USBLC6 ESD protection, an overcurrent fuse, and per-port indicator LEDs—making the board highly robust and safe....
|
1793537753.4775343
|
1793624153.4775343
|
|
38605
|
GMTK game jam by @connie_19 | Stardance
|
connie_19
|
1
|
10.29
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T20:27:11Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "for my submission for GMTK 2026 i made a simple clicker game with a bunch of mini games/tasks that get progressively harder", "repo": "", "demo": ""}]...
|
[{"post_id": 35058, "ts": "202 [{"post_id": 35058, "ts": "2026-07-26T07:33:53Z", "hours": 0.2856, "text": "please note github is not currently up to date i just realised all my previous commits didn’t push so i’m just trying to fix these!"}, {"post_id": 34812, "ts": "2026-07-25T20:24:58Z", "hours": 1.2972, "text": "final changes to UI rendering and alignment issues with anchors etc in godot. updated the font to look a bit cleaner and set the display mode to ‘viewport’ to ensure it maintains the same aspect ratio across all devices. game is officialy submitted to itch.io!"}, {"post_id": 34751, "ts": "2026-07-25T18:43:44Z", "hours": 2.3233, "text": "game coming together nicely! added custom themes for each section (one example shown below) to ensure it has a very minimalistic design. also added background music and a confetti effect centered at the mouse cursor when the game ends and user successfully gets to 100 clicks!"}, {"post_id": 34042, "ts": "2026-07-24T14:15:09Z", "hours": 1.9717, "text": "completed all mini games below is shown the projectiles chasing the mouse (each time they hit it decreases the score) the screenshot is kinda bad but difficult when have to take mouse out of frame for screenshot 🫣) next improving the UI im going to add custom colour themes and improve the appearance of buttons as well as adding a game over screen :)"}, {"post_id": 33485, "ts": "2026-07-23T13:57:23Z", "hours": 2.2956, "text": "added next stages to the game! math popup window took a lot more work than anticipated but i think the final result was very clean and windows xp-ish. final push now 2 more minigames and then work on UI a bit :)"}, {"post_id": 33379, "ts": "2026-07-23T08:23:06Z", "hours": 2.2828, "text": "got the idea for the game and made the very basic first few stages (first basic clicks to lure user into false sense of security, then random movement, then duplicate false buttons that decrease score) as well as very simple UI.. next will implement the more difficult phases and then make UI more interesting :)"}]...
|
Title: GMTK game jam by @connie_19 | Stardance
De Title: GMTK game jam by @connie_19 | Stardance
Devlogs:
got the idea for the game and made the very basic first few stages (first basic clicks to lure user into false sense of security, then random movement, then duplicate false buttons that decrease score) as well as very simple UI.. next will implement the more difficult phases and then make UI more interesting :)
added next stages to the game! math popup window took a lot more work than anticipated but i think the final result was very clean and windows xp-ish. final push now 2 more minigames and then work on UI a bit :)
completed all mini games below is shown the projectiles chasing the mouse (each time they hit it decreases the score) the screenshot is kinda bad but difficult when have to take mouse out of frame for screenshot 🫣) next improving the UI im going to add custom colour themes and improve the appearance of buttons as well as adding a game over screen :)
game coming together nicely! added custom themes for each section (one example shown below) to ensure it has a very minimalistic design. also added background music and a confetti effect centered at the mouse cursor when the game ends and user successfully gets to 100 clicks!
final changes to UI rendering and alignment issues with anchors etc in godot. updated the font to look a bit cleaner and set the display mode to ‘viewport’ to ensure it maintains the same aspect ratio across all devices. game is officialy submitted to itch.io!
please note github is not currently up to date i just realised all my previous commits didn’t push so i’m just trying to fix these!
Ships:
for my submission for GMTK 2026 i made a simple clicker game with a bunch of mini games/tasks that get progressively harder...
|
1793537755.4950552
|
1793624155.4950552
|
|
37385
|
Screen break timer by @Sigis | Stardance
|
Sigis
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T12:34:18Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an eye break timer program using python. It helps you to stop eye fatigue from screen by looking 20 ft away from screen for 20s every 20min. It is very useful while spending long gaming or coding sessions to get a reminder to take a short break.", "repo": "https://github.com/Sigis5/Eye-break-timer", "demo": "https://github.com/Sigis5/Eye-break-timer/releases/tag/Main"}]...
|
[{"post_id": 33455, "ts": "202 [{"post_id": 33455, "ts": "2026-07-23T13:08:12Z", "hours": 1.4908, "text": "Devlog Final | Eye Break timer Over the couple days, in my free time I decided to brush up on my Python knowledge. So I decided to make a simple Python script which would beep every 20 minutes to remind you to take a break. It uses plyer library to pop out notifications in the right bottom corner."}]...
|
Title: Screen break timer by @Sigis | Stardance
D Title: Screen break timer by @Sigis | Stardance
Devlogs:
Devlog Final | Eye Break timer Over the couple days, in my free time I decided to brush up on my Python knowledge. So I decided to make a simple Python script which would beep every 20 minutes to remind you to take a break. It uses plyer library to pop out notifications in the right bottom corner.
Ships:
I made an eye break timer program using python. It helps you to stop eye fatigue from screen by looking 20 ft away from screen for 20s every 20min. It is very useful while spending long gaming or coding sessions to get a reminder to take a short break....
|
1793537758.481725
|
1793624158.481725
|
|
37938
|
HCAI by @techieaaryan | Stardance
|
techieaaryan
|
1
|
13.0
|
93
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T19:50:27Z", "hours": 13.0, "multiplier": 7.35, "payout": 93, "blessing": "neutral", "text": "I made a lightweight AI command-line interface powered by Hack Club AI. Why I made this? I came to know about OpenCode, yes the AI coding agent and I loved the feature of switching between AI models. Like I can use Claude for Frontend, ChatGPT for Backend and Gemini or Qwen models for simple question and answer. But guess what? It is not allowed to use, I asked people on the Slack about why it is not allowed, they told me that because it can let the AI modify files on the computer, that’s why it is not allowed. So I decided upon making one of my own terminal based program. What does it do? You can change whichever model you want to use as per the user’s choice and requirements for the work directly from your terminal with just one simple command. It won’t take control of the user’s computer to modify files, just a simple Q/A between AI model and the user. Features I was impressed of how much it is good and also better than I have imagined it to be. Like user can directly access the models available by writing a single command and even if it will be from the other provider it will change the provider too as well as model of course. There are commands I have made, you use /help for seeing the commands and what they do (also for more detail for the command check out my GitHub repo for this project and read “README”). It handles error very nicely and user friendly too! How to use it? Don’t clone GitHub repo or somehow download the course code for it. I have published it on PyPI so you can directly install the package from there on your computer via terminal (I have provided with the demo link which is the page of my package on PyPI and also provide a user friendly documentation). What next? (important) I decided upon releasing v1.0.0 version of the HCAI, but during polishing I improved it so much that I released v1.0.1 after an hour of initial v1.0.0 release, on GitHub and PyPI both (Note: the version I am shipping is v1.0.1). Also when I was making the database, there were only 338 models available, but today when I will ship this project the number of models have been increased. So when the v1.0.2 will have the remaining models too, also the package will handle more and rare Errors too (making it user friendly also) and will minimize credit burns (the plan for v1.0.2 is as of now this, who knows I might end up adding more feature in future and improve it). Thank you!!", "repo": "https://github.com/Aaryan410/HCAI", "demo": "https://pypi.org/project/hcai/"}]...
|
[{"post_id": 34229, "ts": "202 [{"post_id": 34229, "ts": "2026-07-24T19:12:41Z", "hours": 2.7881, "text": "HCAI Devlog #2 (Final) HCAI is ready to use now. What new? I was gonna release v1.0.0 but then during polishing I improved it so much that after 1 hour of releasing v1.0.0 on GitHub I released v1.0.1 on GitHub 🥀. I published my package on PyPI also so you can directly use it on your terminal by installing that package. Also handled storing your chats with the AI so that you can continue where you left off. I improved error handling and made it more user friendly. Made commands that you can use with the package. What does it do? Basically it provides you a way you can switch between different AI models you want to as per your work requirements, so that you can minimize the credit burn and maximize the productivity with the free quota provided by Hack Club. You can even switch between with a command like /use in between the session. About v1.0.2 Well when I made the database there were only 338 models at that time, now the models have increased on the day I will ship it, so will add that models in the v1.0.2 release which will shortly come in the near future. Will reduce credit burn more as to make AI remember the history of the chats where the user left off. For more information visit my GitHub, and my documentation on PyPI, just search “hcai” on ‘pypi.org’ or you can directly visit it through the demo link of the project I will provide you with when I ship the project."}, {"post_id": 33947, "ts": "2026-07-24T08:54:15Z", "hours": 9.8619, "text": "HCAI Devlog #1 What is HCAI? HCAI is a terminal based dev tool I am making for programmers in Hack Club using Hack Club AI APIs for their software/program they are building. What problem is solved? Well I was thinking of using OpenCode for my software projects in Stardance but then I found out that Hack Club don’t allow it for their AI API keys. The reason I wanted to use OpenCode was to switch between AI models so that I can use credits efficiently, for ex. I might use Claude Opus 4.8 or Sonnet 5 for frontend, ChatGPT for backend stuff and Gemini or some Qwen models (light models) for simple question and answer. OpenCode does the same but it is a AI Coding Agent so it might be used to write code for the program, giving access of the files to modify code, so it is not allowed and it is completely understandable why it is not allowed. What does it do? HCAI is almost same but you can’t give access to your files to HCAI, so AI will not be directly able to modify the users file who is using HCAI. HCAI will work on the users terminal and will give the flexibility to user to switch between models to use AI credits efficiently and minimize useless credit burns and maximize the productivity with the free quota given by Hack Club. The user can directly start a session in terminal with whichever model they want and then can switch between the models they prefer for the type of work they are doing. The best part now, your chat history will be saved , so for ex. if you first used Claude then switched to ChatGPT and then again switched to Gemini then came back to using Claude, you can directly continue the conversation you left on when switched to ChatGPT, and also the same for ChatGPT and Gemini too. How much completed and what next? I already hit 9+ hours of work time on this project in 2 days, that’s why I am writing this Devlog 🥀 , I was thinking that I might ship the project by writing the first Devlog itself but can’t manage time efficiently and it is larger project than I expected so yea I will finish it in next 1-2 days max (might be even earlier, who knows?). I have completed the setup for the user, made the database of the AI models provided by Hack Club, made a model pulling engine, and right now working on making an engine where to send prompt directly from the terminal and retrieving answer from the model inside the terminal. Something I guess…….🥀 It will be made in near future, till then follow me out so that you can use it whenever it is released. Also check out my other projects too ."}]...
|
Title: HCAI by @techieaaryan | Stardance
Devlogs: Title: HCAI by @techieaaryan | Stardance
Devlogs:
HCAI Devlog #1 What is HCAI? HCAI is a terminal based dev tool I am making for programmers in Hack Club using Hack Club AI APIs for their software/program they are building. What problem is solved? Well I was thinking of using OpenCode for my software projects in Stardance but then I found out that Hack Club don’t allow it for their AI API keys. The reason I wanted to use OpenCode was to switch between AI models so that I can use credits efficiently, for ex. I might use Claude Opus 4.8 or Sonnet 5 for frontend, ChatGPT for backend stuff and Gemini or some Qwen models (light models) for simple question and answer. OpenCode does the same but it is a AI Coding Agent so it might be used to write code for the program, giving access of the files to modify code, so it is not allowed and it is completely understandable why it is not allowed. What does it do? HCAI is almost same but you can’t give access to your files to HCAI, so AI will not be directly able to modify the users file who is using HCAI. HCAI will work on the users terminal and will give the flexibility to user to switch between models to use AI credits efficiently and minimize useless credit burns and maximize the productivity with the free quota given by Hack Club. The user can directly start a session in terminal with whichever model they want and then can switch between the models they prefer for the type of work they are doing. The best part now, your chat history will be saved , so for ex. if you first used Claude then switched to ChatGPT and then again switched to Gemini then came back to using Claude, you can directly continue the conversation you left on when switched to ChatGPT, and also the same for ChatGPT and Gemini too. How much completed and what next? I already hit 9+ hours of work time on this project in 2 days, that’s why I am writing this Devlog 🥀 , I was thinking that I might ship the project by writing the first Devlog itself but can’t manage time efficiently and it is larger project than I expected so yea I will finish it in next 1-2 days max (might be even earlier, who knows?). I have completed the setup for the user, made the database of the AI models provided by Hack Club, made a model pulling engine, and right now working on making an engine where to send prompt directly from the terminal and retrieving answer from the model inside the terminal. Something I guess…….🥀 It will be made in near future, till then follow me out so that you can use it whenever it is released. Also check out my other projects too .
HCAI Devlog #2 (Final) HCAI is ready to use now. What new? I was gonna release v1.0.0 but then during polishing I improved it so much that after 1 hour of releasing v1.0.0 on GitHub I released v1.0.1 on GitHub 🥀. I published my package on PyPI also so you can directly use it on your terminal by installing that package. Also handled storing your chats with the AI so that you can continue where you left off. I improved error handling and made it more user friendly. Made commands that you can use with the package. What does it do? Basically it provides you a way you can switch between different AI models you want to as per your work requirements, so that you can minimize the credit burn and maximize the productivity with the free quota provided by Hack Club. You can even switch between with a command like /use in between the session. About v1.0.2 Well when I made the database there were only 338 models at that time, now the models have increased on the day I will ship it, so will add that models in the v1.0.2 release which will shortly come in the near future. Will reduce credit burn more as to make AI remember the history of the chats where the user left off. For more information visit my GitHub, and my documentation on PyPI, just search “hcai” on ‘pypi.org’ or you can directly visit it through the demo link of the project I will provide you with when I ship the project.
Ships:
I made a lightweight AI command-line interface powered by Hack Club AI. Why I made this? I came to know about OpenCode, yes the AI coding agent and I loved the feature of switching between AI models. Like I can use Claude for Frontend, ChatGPT for Backend and Gemini or Qwen models for simple question and answer. But guess what? It is not allowed to use, I asked people on the Slack about why it is not allowed, they told me that because it can let the AI modify files on the computer, that’s why it is not allowed. So I decided upon making one of my own terminal based program. What does it do? You can change whichever model you want to use as per the user’s choice and requirements for the work directly from your terminal with just one simple command. It won’t take control of the user’s computer to modify files, just a simple Q/A between AI model and the user. Features I was impressed of how much it is good and also better than I have imagined it to be. Like user can directly access the models available by writing a single command and even if it will be from the other provider it will change the provider too as well as model of course. There are commands I have made, you use /help for seeing the commands and what they do (also for more detail for the command check out my GitHub repo for this project and read “README”). It handles error very nicely and user friendly too! How to use it? Don’t clone GitHub repo or somehow download the course code for it. I have published it on PyPI so you can directly install the package from there on your computer via terminal (I have provided with the demo link which is the page of my package on PyPI and also provide a user friendly documentation). What next? (important) I decided upon releasing v1.0.0 version of the HCAI, but during polishing I improved it so much that I released v1.0.1 after an hour of initial v1.0.0 release, on GitHub and PyPI both (Note: the version I am shipping is v1.0.1). Also when I was making the database, there were only 338 models available, but today when I will ship this project the number of models have been increased. So when the v1.0.2 will have the remaining models too, also the package will handle more and rare Errors too (making it user friendly also) and will minimize credit burns (the plan for v1.0.2 is as of now this, who knows I might end up adding more feature in future and improve it). Thank you!!...
|
1793537762.0744245
|
1793624162.0744245
|
|
9570
|
Capital Chaos by @sol4r_on_hackclub | Stardance
|
sol4r_on_hackclub
|
1
|
171.6
|
3336
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T19:42:41Z", "hours": 171.0, "multiplier": 19.54, "payout": 3336, "blessing": "neutral", "text": "Welcome to Capital Chaos! One of Stardance’s most awaited projects ;) (hopefully anyways) We’ve got chaos, a bunch of random events, a boss fight and so much more for you to explore. SKIP if you are on Linux/MacOS (or you can vote based on the videos - completely up to you) as I only have a windows executable for now. I am honestly super proud of this, and the community built around this game. I hope you enjoy it as well. There have been TONNES of challenges, such as pathfinding, the initial grid also seemed really daunting. To the vacancy count which was literally plaguing me for the past MONTH and got fixed today (it was one line… i know.. maybe I should have used AI). But besides, it’s a sick project. I hope you all love it. Unzip the file in the release and it should be good to go. READ THE README FOR INSTRUCTIONS AND CONTROLS!! THERE IS NO TUTORIAL Read the story, watch the videos if you can and just enjoy the game! It will be on steam in 8-9 months so maybe subscribe?", "repo": "https://github.com/Sol4rOnGit/PocketCity", "demo": "https://github.com/Sol4rOnGit/PocketCity/releases"}]...
|
[{"post_id": 57569, "ts": "202 [{"post_id": 57569, "ts": "2026-08-29T19:13:24Z", "hours": 0.5961, "text": "Thank you all so much for the support! Framework 12 is on it’s way (and this wait is painful). After 171 hours! 19.54x is actually insane and I appreciate it a lot. Join the Discord! I made a discord (click above) and i’ll give you all an early supporter role before I put it out on YouTube and stuff for the “wishlist” when the full game comes out (if you want to stay in touch after stardance is done. ALSO IF YOU COMMENTED WHILE THE GAME WAS STILL CALLED POCKET CITY DM ME ILL GIVE U A SPECIAL ROLE The game beta is still up and you can try it out Currently just doing some minor stuff to the game (Fixed some normal/easy mode not settings correct phases. B2 Bomber should destroy itself and stop the nuke siren once launched), and slowly adding a tutorial but I’m like 90% focused on revising for uni entrance exams"}, {"post_id": 52586, "ts": "2026-08-22T19:35:44Z", "hours": 3.4139, "text": "BETA TEST! Nvm I have to devlog my final changes But lemme talk to those stardance reviewers real quick. Scroll down to see the endless content of my story, and all the community feedback (also on my youtube). Playing the game is a bit of a learning curve so you can watch my videos and stuff on it as well. I’d say watch this one: Boss Fight for the boss fight and maybe one of the other ones that you find interesting. Maybe this one because it has over 1,000 views and still climbing! The game is released there but it is windows only for now (i will release linux and maybe mac on the actual release game don’t worry but I’m super restricted for time right now) SKIP IF YOU’RE ON LINUX / MAC For everyone: Changes: Amended GameAudioManager to adjust for max voices which uses a List based system that appends and unappends. Boss fight also toggles and untoggles the game audio dependant on each audio source, because the game could currently have hundreds or even thousands of audio source which is really bad optimisation. So each audio source that I want to track has a ManagedAudioSource attached which automatically registers and unregisters itself from the GameAudioManager. I also edited the boss fight to make it a touch harder and amended the moves ;) And come and beta test NOWWW. leave all your comments, suggestions etc. on THE NEW DISCORD COMMUNITY!! or youtube, i’ll read it all and, again, thank you all for your support . I don’t know what to put as the image so here."}, {"post_id": 51908, "ts": "2026-08-21T20:18:25Z", "hours": 8.8033, "text": "Final DevLog before First Ship - Boss Battle I don’t think words can explain what I made so click here to watch a video on my probably final major addition (no pressure) & also help with a small dilemma I have. NO!! that does not mean this game will stop development, but i think i finally have enough hours (+10-15 more safety) to get a Framework 12! (and then i will be able to crack on with entrance exams - so i guess development will slow a touch). Of course I’ll ship once the game is polished enough. You might see a devlog or two from the “Capital Chaos Website” - follow me ;) I really hope you guys all enjoy it and now I need to do the readme and stuff. I also realised I was one of the most viewed on Stardance which is honestly amazing and I appreciate all of the support :) And thank you to all the new friends I’ve made and all the followers and commenters. It’s honestly been insane."}, {"post_id": 49800, "ts": "2026-08-18T18:52:58Z", "hours": 3.8472, "text": "Game Sountrack? But before I talk about that, lemme just say the game audio is almost finished, we have menu sounds for clicks and stuff, and i added support for main menu music. The firetruck hoses actually do stuff, floods sound like floods, theres some peaceful background nature sounds and yeah it makes the game feel so much nicer. although i forgot place sounds which was a massive oversight. also my wifi is still working. no idea why, but not complaining. and i’m cooking on a soundtrack lowk although none of it seems correlated in any way and idk how i’ll make it fit into this game but you know what maybe it’ll just all go into some random album. None of the hours put into these songs count but its okay. i’m no pro tho so. all i’ll say is i love some bass"}, {"post_id": 49147, "ts": "2026-08-17T19:36:51Z", "hours": 2.6206, "text": "I’m getting new wifi lol, & 150 hours so yeah i won’t be here and probably will have to post a 10 hour thing BUT on the plus side, we got a nice death screen that has a bunch of quotes that you can read below [SerializeField] private string[] quotes = { \"Opportunities multiply as they are seized \\n - Sun Tzu\", \"If you are going through hell, keep going \\n - Winston Churchill\", \"No empire was built on the first draft\", \"Fall seven times, stand up eight\", \"That which does not kill us, makes us stronger \\n - Friedrich Nietzsche\", \"Out of ash, a new foundation\", \"I have not failed. I just found 10,000 ways that don't work \\n - Thomas Edison\", \"A man is not finished when he is defeated. He is finished when he quits \\n - Richard M. Nixon\", \"It does not matter how slowly you go as long as you do not stop \\n - Confucius\", \"Out of difficulties grow miracles \\n - Jean de La Bruyère\", \"The greater the obstactle, the more glory in overcoming it \\n - Molière\", \"A Pocket Sized City is too small for your ambition. Build again \\n - The Dev\", \"Success usually comes to those who are too busy to be looking for it \\n - Henry David Thoreau\", \"Go big or go home\", \"You can't give up just yet. Stay determined... \\n - Undertale\" }; Maybe you’ll catch the little easter egg there as well ;) Working on adding game audio!! and probably finally enough hours to get the framework 12 (btw I wouldn’t recommend this as a daily laptop (f13 better), I just want something I can write on lol)"}, {"post_id": 48073, "ts": "2026-08-16T11:08:59Z", "hours": 3.8794, "text": "INSANE tree optimisations Went from 60-80 fps @ 4K to 400-450 (in game). Yes a 6 to 7x increase. How you ask? GPU Mesh Instance drawing offloading the CPU work of handling thousands of game objects. In English, I’m no longer spawning thousands of tree objects, but instead telling the GPU to draw the tree instances every frame. This seems quite unintuitive because you’re now drawing thousands of things every second. BUT this means that there are no game objects, so the CPU doesn’t even know that these exist. Also the GPU draws it thousands of times anyways. A game object handles transforms, rotations, etc. that the CPU has to keep track of whether it is active or not. This had the added benefit of the trees having no overhead when the trees are disabled, so you regain all of your framerate! Also I used some neat little script that combined the meshes all together in the GameObject prefab. Now it really should be able to run on your potato PC/Laptop. Combine script using UnityEngine; public class MeshCombineUtility : MonoBehaviour { [ContextMenu(\"Combine Children Meshes\")] public void Combine() { MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; Matrix4x4 matrix = transform.worldToLocalMatrix; for (int i = 0; i < meshFilters.Length; i++) { if (meshFilters[i].gameObject == gameObject) continue; combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = matrix * meshFilters[i].transform.localToWorldMatrix; } Mesh combinedMesh = new Mesh(); combinedMesh.CombineMeshes(combine, true, true); #if UNITY_EDITOR string directory = $\"Assets/Assets/Mesh/Tree/{gameObject.name}.asset\"; UnityEditor.AssetDatabase.CreateAsset(combinedMesh, directory); UnityEditor.AssetDatabase.SaveAssets(); Debug.Log($\"Combined mesh saved to {directory}\"); #endif } } Draw section of GPU Mesh Instancing private void DrawTreeMeshes() { if (treeMesh == null || treeMaterial == null) return; foreach (var kvp in generatedChunks) { ChunkData chunk = kvp.Value; if (chunk.spawnedTrees == null || chunk.spawnedTrees.Count == 0) continue; int batchSize = 1023; int totalTrees = chunk.spawnedTrees.Count; for(int i = 0; i < totalTrees; i+=batchSize) { int length = Mathf.Min(batchSize, totalTrees - i); Matrix4x4[] subMatrices = new Matrix4x4[length]; for (int j = 0; j < length; j++) { subMatrices[j] = chunk.spawnedTrees[i + j].matrix; } int meshIndex = Mathf.Abs(chunk.chunkCord.GetHashCode() + i) % treeMesh.Length; Graphics.DrawMeshInstanced(treeMesh[meshIndex], 0, treeMaterial, subMatrices, length); } } }"}, {"post_id": 47547, "ts": "2026-08-15T14:59:51Z", "hours": 1.4756, "text": "You won’t believe it. I got it working FIRST TRY That’s actually crazy to be honest. Tells you how much expirience those 8 hours of menu development have given me. Someone give me a Unity menu doctorate or sum But on a serious note, we have game difficulty selection and its all nice and self contained. With controller support of course. You can see we have Previous Saves but that isn’t really functional yet. One of the things I learnt is to never rely on the UI giving you the data, only the click, so you’d manually add the elements and then call .value or .isOn respective to the component, and the same goes for dropdowns although I didn’t use one here. Let me know if you think it looks clean or any improvements to the UI readability, etc."}, {"post_id": 47161, "ts": "2026-08-14T20:58:41Z", "hours": 10.3042, "text": "I HATE Menus (in Unity at least) Genuinely hate them. But yeah we got settings menu working (which genuinely took like 5-6 hours because of stupid unity legacy stuff vs new stuff and then unity 6 vs 2023 version stuff i was used to) AHHHH I don’t remember it being this painful in Godot to be honest so maybe Godot is better for that? i had to get rid of VSync because it only worked on refresh. Created a debug menu to test performance, just to see that the only useful thing there was FPS and like RAM usage, and some engine stuff like active Rigidbodys. I couldn’t see the CPU utilisation or GPU utilisation which was… the thing I wanted to see. Although don’t worry performance does seem to be reasonable and early to mid game I can push over 1000 FPS on potato settings (specs at bottom if you care about them). It does obviously go down as the game continues on, but I think it’s quite optimised. Even with shadows its on 500+ FPS with a mid sized down. Although adding trees will quarter your FPS numbers. but it looks pretty so there’s your tradeoff. Although problematically if you turn trees off and you had already generated trees the fps stays low even though you’re not rendering it? I don’t know why unity is so weird. The game is quite unbalanced, but we’re in the final polishing stages (my target is 150 hours for the framework and hopefully it’s secure! (vote nice and high thanks - i did put a lot of effort into this game.) Up next: Difficulty selection Polishing Rebalancing updates Release!"}, {"post_id": 45186, "ts": "2026-08-11T14:41:21Z", "hours": 5.9322, "text": "NEW NAME!!! Flash Floods + Main Menu If you remember, Pocket City is a game that already exists so now it’s called Capital Chaos. Thank you YouTube comments! And all of you as well, for the suggestions. Ofc new video to go with it: watch by clicking here! I created flash floods that.. well flood the entire map. It’s meant to be a little toned down of a disaster, thats more survivable because it gives the game a touch more balance. It stops all services from working, so that could be detrimental during a virus attack. But on the other hand, it stops every single fire and prevents new ones and explosions. A lifesaver if theres a nuke, it gets completely nullified. Also new main menu, I think it looks pretty neat. Especially compared to the old one."}, {"post_id": 43501, "ts": "2026-08-08T20:10:46Z", "hours": 9.3828, "text": "Nukes… from a plane A famous plane. The B2 Bomber. Idk gng I got bored. No but it drops a nuke that decimates everything in a decent radius and then sets everything in a bigger radius on fire, and now we have a new rare event called a “military invasion”.. that spawns like 8 helicotpers AS WELL as the b2 bomber. The B2 Bomber starts a few clicks out and then flies toward the set target building. Then it drops the nuke, and you have a few seconds to try and kill the nuke before it kills you, and on impact (yes we are finally using rigidbodys as they are intended) it explodes. You better have that turret system ready. Of course, it’s clearly not enough. So maybe I’ll add a anti-missile system as a YouTube comment said. Speaking of YouTube, thank you for all the support :) 100+ comments goes crazy, and we’re on 73 subs up from the previous 29 literally 3 weeks ago. Not subscribed? Help a fellow dev out: TechScope Channel"}, {"post_id": 36089, "ts": "2026-07-27T23:24:15Z", "hours": 6.7969, "text": "WORKING AIR DEFENCE + ATTACK HELICOPTERS So we got working air defence turrets with some predictive aiming, and attack helicopters that shoot missiles at random buildings. Although you’re unlikely to get 3 attack helicopters at once… for now. The helicopters blades do spin, they bob up and down, they go towards buildings. They shoot out these missiles, which pathfind their way to the targetted building. They all have a healthsystem which means that the turrets do some damage on collisions only though, one turret might take a while but two (or the 7 you see below) will MOW them down. Still have to hook it all up to the Finance Manager, Special Building placement and other boring stuff, but… I need more IDEAS!! (read this thx) …for more Military stuff that can be added. Tank wars? Who knows. I was thinking of a military invasion as being one of the rare events which spawns like 10 missiles and 5 attack helicopters and maybe a B2 bomber or some stuff. I also need more allied options, maybe I’ll add like an anti-bomb turret that is specifically for the B2 bomber or something and does 100000 damage. Or maybe your own airbase that spawns an allied helicopter and now you have dogwars. or maybe your own plane. idk So yes @Adam_Lotfalla this is what the helicopter was for. Yay more things to worry about!!! Still have integrations left! I’ll see you (hopefully) tomorrow once that’s done. but its midnight now so goodbye."}, {"post_id": 35447, "ts": "2026-07-26T21:18:10Z", "hours": 1.8178, "text": "Hmmmm… What’s cooking? (Blender just WON’T count toward my hours but prolly spent 2-3 extra hours here) The helicopter blades actually spin. And W Unity particle system for the missile."}, {"post_id": 33603, "ts": "2026-07-23T17:37:47Z", "hours": 2.6228, "text": "I NEED YOUR HELP Pocket City already exists as a game. I know this is stupid and I should have checked this before starting since I had the intention of publishing it to steam but here we are. If you want more details, or more knowledge about the game check this video out: Video Oops…"}, {"post_id": 32074, "ts": "2026-07-20T23:48:35Z", "hours": 6.6703, "text": "UFOs in an Alien Invasion 💔💔 The second rare event addition to Pocket City! Get a chunk of your population zapped up by some not so friendly aliens… Any more ideas, let me know below! But it was pretty neat to implement. 3D modelled it and everything. 3 hours of doing god knows what. Tried to figure quality settings out and probably did smth else but was too busy with the World Cup to remember what I did. Probably bug fixes and stuff. Oh yeah and you see a pretty cool ripple pulse thing that propogates through the map. Although it is a little weak right now but i’ll fix that next time. Super tired. mb"}, {"post_id": 27226, "ts": "2026-07-12T16:41:03Z", "hours": 4.4661, "text": "Bugs are genuinely taking the life out of me Genuinely the worst thing ever. I STILL can’t figure it out but I had to post my weekly devlog anyways. Can you believe we’re 28 weeks into 2026??! Here’s the chaos where I accidentally created a “Pocket Empire” (Day 1105) Watch the video (click the title) if you wanna see how I ended up here and a minor crash out. very minor."}, {"post_id": 26578, "ts": "2026-07-11T14:19:18Z", "hours": 9.2114, "text": "I’m being forced to post Yeah thanks stardance. 10 hour limit for what. Probably spam filter. Also MASSIVE BUG(s). One is that the game just randomly deletes all the buildings from a chunk. No idea why, I’ve been at it for so long. Another issue is the stupid vacancy counter which has been broken FOREVER but atleast now it doesn’t go negative. I have a serious feeling I will have to spend a week just POLISHING the game. Whatever, Currently working through a new feature of allowing you to use your money that you spent so long accumulating to try and fix the chaos that you went through. This is done through the “Council FX” which I may rename if you guys can think of a better name, and you can see the countless things to do such as: Taking On DEBT!! YAY!! 100k that gains 1% every day. Seems low.. but it will pile up very quickly since it’s compound interest. Overclocking the grid for free placement + infinite water/power Maximising Housing/Business revenue Curing all infections … and many more as well as the ??? at level 100… who knows what that does. £2.5 million btw. Of course, those levels are the XP, which has finally given that a use. And no you wont be at level 11000 just like that, i’m just being lazy for testing. Also rebalanced so that all of the commercial buildings have ~10-15% of their previous employment caps. So that you’re not just spamming residential. It also makes industrial more useful as they have more employers even though they produce less money."}, {"post_id": 23054, "ts": "2026-07-05T19:50:43Z", "hours": 2.3469, "text": "Main menu 👀 I need help. UI clearly isn’t for me"}, {"post_id": 22419, "ts": "2026-07-04T21:33:08Z", "hours": 7.5172, "text": "CRIME!!! + C# Generics I added Arson and added a Police manager that goes out and solves these crimes. Lots more to come, let me know of any ideas you have! But before that let me teach you ALL something. C# Generics. I had a bunch of scripts that all did ABOUT the same thing but with different. This was FindClosestHospital, FindClosestFireStation and the thing I was adding which was FindClosestPoliceStation. It felt quire redundant to copy the same lines but instead of Hopsital it was replaced with FireStation or PoliceStation. //Generic functions private T FindClosestReachableService<T>(Vector2Int targetPos, Func<T, bool> hasAvailableVehicles, out List<Vector2Int> bestRoute) where T : Building { T closestBuilding = null; bestRoute = null; int shortestRouteLength = int.MaxValue; bool foundBuildingOfThisType = false; foreach (var kvp in gridManager.GetMapGrid()) { GridManager.GridTile tile = kvp.Value; if (tile.buildingScript != null && tile.buildingScript is T serviceBuilding) { foundBuildingOfThisType = true; if (!hasAvailableVehicles(serviceBuilding)) continue; List<Vector2Int> testRoute = CalculateRoadPath(tile.buildingScript.gridPos, targetPos); if (testRoute == null || testRoute.Count == 0) continue; if (testRoute.Count < shortestRouteLength) { shortestRouteLength = testRoute.Count; bestRoute = testRoute; closestBuilding = serviceBuilding; } } } if (!foundBuildingOfThisType) { bestRoute = null; return null; } return closestBuilding; } Above is an example of the C# generic. We have “T” type, and I think this is a good place to learn about them. Instead of defining the function as returning something like Building , we make T a type. and you can see it passed in a little <T> after the function name. We can also pass in entire functions like Func<T, bool> which is utilised as shown below: Building bestStation = FindClosestReachableService<PoliceStation>(building.gridPos, ps => ps.HasPolice(), out route); you can see ps => ps.HasPolice() calls that out. And finally, to define what T is meant to be, I’ve added where T : Building . You can do this many times, such as by having both a T as well as a U! and you’d have a repeated where T : Building where U: PotatoChips or something idk what U is meant to be bro. This was my first time using it but it’s pretty cool and if you’re using C# I’d recommend learning it as it saved me like 200 lines of code and changing something 3 times to change the same thing! And yes, I added a third thing which is Arson! which is a crime based thing, and you have a visual that shows up as a timer. if a police doesn’t solve the crime it sets on fire. It’s not too bad but it adds a use for the police, with much more to come for the police to deal with in the future! Also added asteroid BOMBARDMENT as a debuff. Yeah it’s brutal. 3 strikes… thats up to 108 tiles DESTROYED and set on fire. And of course, the image is from a youtube video: Click me!"}, {"post_id": 20327, "ts": "2026-07-01T22:02:59Z", "hours": 4.1806, "text": "BETTER UI + XP At the top of the image you can see a little progress bar… yep I’ve added XP now. Got plans for that, probably going to allow you to unlock stuff later. Like the lockdown ability etc. The UI has been overhauled. The actual images are a touch on the placeholder side apart from the road but it looks pretty good. You cycle between road, zoning and special building placement with 1, 2 and 3. Use R to rotate between the modes like residential, commercial and industrial zoning as well as Utilities & Emergency for the special buildings. Then finally T to rotate between those specific buildings. Complicated? Maybe? But it’s also a lot faster. I have completely lost my muscle memory of spamming R like the “good old days” though. Looks good? Bad? Horrible update and the game should never be changed ever again? Best update in the world and I should win £1 trillion? What do you think?"}, {"post_id": 17186, "ts": "2026-06-27T21:52:31Z", "hours": 9.9433, "text": "MAKE IT RAIN ASTEROIDS Pretty long run honestly. But before that, let’s talk about retrofitting your buildings. Earthquakes are pretty bad. Very bad when you loose your 100k building in a moment. So upgrade it. Yes it’ll cost you 35 to 55k now. But is your peace of mind worth that? And I added asteroids! These fly down and annihilate everything in a 3 unit radius and then set everything else in the 6 unit radius on fire. Lots of minor bug fixes as well, trying to get the game really polished now. Some rejigging of the game’s back end, such as creating a new abstract class for employer and reworking the systems to ensure that they run more smoothly and I believe almost finally fixing the unemployment/vacancy problem. I say almost because every 5 runs I see the game yell at me that it didn’t count something correctly but honestly I’ve spent so long on this I don’t even know if it’d be harder to just rewrite the entire employment system. For more detail, see my video linked below! See if you guys like it, my first proper long form I Added ASTEROIDS that ANNIHILATE your Adorable City And boy will this thing cook your economy."}, {"post_id": 15293, "ts": "2026-06-24T20:46:40Z", "hours": 7.6331, "text": "POLITICS!! + Debugging Hell v2 I mean I guess it is? Not too sure. Event Manager completely overhauled. Double events now no longer have the chance of repeating the same event. Created a new GameEffects script which just takes a bunch of simple code away from EventManager and plays the basic functions such as the “tax revenue increases” which you see below. This was quite a headache to create, and I severely underestimated how much time this would take. I have 2 extra nested classes inside of EventManager for Political Question and Political Scenario. [... inside EventManager.cs ...] public class PoliticalQuestion { public string Question; public TaskCompletionSource<bool> TaskCompletionSource = new TaskCompletionSource<bool>(); public Action onAccept; public PoliticalQuestion(string question, Action onAccept) { Question = question; this.onAccept = onAccept; } } public class PoliticalScenario { public string description; public Action runnable; public PoliticalScenario(string featureDescription, Action functionality) { description = featureDescription; runnable = functionality; } } [Header(\"Political Question Variables\")] public List<PoliticalQuestion> PendingQuestions = new List<PoliticalQuestion>(); public event Action onQueueChanged; private PoliticalScenario[] goodFeatures; private PoliticalScenario[] badFeatures; The political question is sent off to the UI manager, which displays it as shown below. Then it handles user input pressing Y/Enter or N/Esc to accept the user choice, and returns it back to the Event Manager. Seems simple enough, yet there are many ways to do it but I think that the above implementation works the best out of all the ones that I tried. I attempted to use Game Manager as a middleman but that did not work out - so I resorted to passing an entire class. The political scenario allows for the string to actually do something, so that the game knows what to process and what the user agreed to without creating a bunch of variables, and can allow for stacked political question events which is nice. Game’s looking really neat, and the multipliers and stuff can make the game go very crazy very quickly. Too much of a good thing is a bad thing!! Debugged the entire system for like a solid 3 hours it was actually bad. Came first in the UK tho!! I’m back after those 6 exams are done. Yes I know the UI looks pretty bad but it’s good enough for pre-beta testing. Oh yeah, speaking of UI everything is more bold. Figured out how to do that."}, {"post_id": 14641, "ts": "2026-06-23T20:29:50Z", "hours": 2.74, "text": "I HAVE A PLANN For the spinal sprint toward completion. Should end up taking me to hour 70-75? Then we polish the UI and add a main menu… lacking feature I guess. Anyways, reorganised the code base and split game manager up, created folders and fixed dependencies for everything. There is now an event manager, which handles all of the events separately, and as you can see from this simple to-do list (should my next project be the to do list to end all to do lists with calendar integration and stuff???) that I have completed the first bit “Weighted Event system”. So now nothing has an equal chance of happening! Also as a side effect made adding new effects a lot easier due to the nested WeightedEvents class which was similar to an idea I had in my old minecraft mod plugin and transferred the skills across the languages. Quite nice neat code actually, that isn’t 600 lines long, so I can quickly show it to you below. It’s very applicable and I believe I have used it twice or three times in the past 4 months alone. The declarations for the events now look like this, very centralised and easy to add/remove events and modify the weightings. Called in the Start() function. weightedEvents.Add(new WeightedEvent(\"Nothing\", 20, () => { })); weightedEvents.Add(new WeightedEvent(\"Earthquake\", 5, Earthquake)); weightedEvents.Add(new WeightedEvent(\"Fire\", 40, SetBuildingOnFire)); weightedEvents.Add(new WeightedEvent(\"Virus\", 20, () => { TriggerVirusOutbreak(); } )); and the class is just simply storing the name, the weight and a weighted Event. public class WeightedEvent { public string name; public int weight; public Action weightedEvent; public WeightedEvent(string name, int weight, Action weightedEvent) { this.name = name; this.weight = weight; this.weightedEvent = weightedEvent; } } we do need to store the total weight which happens on the Start() function currently. When playRandomEvent() is called, we increase the cursor by the event’s weight until it is greater than the rolled random number between 0 and the total weight, at which point the class’ event is called. Broke nothing in the end! That’s great isn’t it, especially after migrating a bunch of “legacy” code. Hopefully didn’t jinx it."}, {"post_id": 12737, "ts": "2026-06-20T20:33:13Z", "hours": 4.3403, "text": "Okay now i SUCK at my own video game. Don’t worry it’s hard mode. Also lost 2 hours of work somewhere cuz it didn’t save? Don’t understand how. That’s always great isn’t it. But still, 62 days in and I’m fried because of one silly mistake I made 40 days ago. Really teaches you consequences I guess. Spent my time completely overhauling how everything works. You used to make too much money, so I made the revenue even more population based, by making the max revenue a multiplier of the max population. Completely rewrote the losing population, unemployment and vacancy calculations to prevent strange negative numbers which was irritating me for the past one and a half weeks. Also overhauled the inflation to use a formula instead of a very rudimentary lookup table from if statements which is staged into a end-game (130 days+) and early game stage with 20% and 2% simple interest respectively (no not compound for once - that would make the game too hard. Extreme mode?) The game is actually like a good game now. I don’t know how to explain apart from that though."}, {"post_id": 11524, "ts": "2026-06-18T20:22:52Z", "hours": 2.1214, "text": "I FINALLY LOST IN MY OWN GAME!! Rebalancing the game slowly but surely. Currently added inflation, which increases the price of everything as the days go by. It gets less severe the longer you play but the inflation rate stays high. The game days now vary, take 5 seconds at the start and slowly get faster and faster toward 1.5s linearly. The inflation rate also increases with bands as the game progresses so you need to keep up. This makes the game a good progression, but make one mistake during an earthquake and it might be ggs for you. There is now finally a game over function… although no restart but don’t worry about it. It just pauses the game and tells you that the game is finished. Next up: Detailed Finances, Rubbish? (follow thx)"}, {"post_id": 10848, "ts": "2026-06-17T19:53:45Z", "hours": 1.2564, "text": "Currently rebalancing the video game to make the game progression more realistic as it is currently extremely difficult at the start and stupidly impossible to die toward the end. Completely forgot to tell you guys that you can follow my projects on my YouTube: Video Like & sub if you can… mb for the self promo though. Sadly I have 6 exams next week so the next 2 weeks are most likely going to be slow ones… not dominating the leaderboards anymore."}, {"post_id": 10754, "ts": "2026-06-17T17:25:21Z", "hours": 4.8722, "text": "Working healthcare! The game now has a virus… and it spreads pretty quickly. Houses get infected, added to the random event chances on top of earthquakes and fires. I created hospitals that dispatch ambulances as required. Now all services cost money. Using the same A* algorithm from last time, but a little more complex due to the nature of the virus spreading to random buildings. This requires the game to check for any viruses. I created an UI that displays the day progression, using actions & delegates again. The day length is now no longer fixed, but instead it becomes smaller the longer you stay on the map, to try and add difficulty ramping. The game is currently very difficult at the start and incredibly easy at the end, so I’m trying to reverse this a bit and make it hard at the start but terrible towards the end. Also just realised there’s no ending lol - you just become broke and softlock yourself. Never done it to myself which really speaks out about how UNBALANCED the game is. I think it’s time to work on game balancing now before implementing new features, and over half way to shipping? maybe at 65-80 hours in at this rate?"}, {"post_id": 8771, "ts": "2026-06-14T16:10:08Z", "hours": 4.5692, "text": "WORKING PATHFINDING ON THE GRID! Created new assets so the game looks complete now! You can see the firetruck going from the Fire station all the way to the burning building where it will extinguish it. Yes, it follows the roads as intended and uses the A* algorithm to figure out the best path. And they shoot water out, so visual feedback for everything. This was super fun as it was the first time I’ve implemented the A* in a video game on a grid that procedurally generated. The coal power generator, fire station and fire trucks have models now, I think I made them good enough to fit with the game. Police station and healthcare to still be implemented but it’s looking good so far. This required creating a new services manager, creating a pathfinding script, updating global services and how everything interacts with the fire, and creating reverse pathfinding and small details. It’s coming together really cleanly now."}, {"post_id": 8393, "ts": "2026-06-13T23:23:02Z", "hours": 7.1706, "text": "Debugging HELL I added fires, which you can see in the corner. Unity Particle system actually really cool for that by the way. This forced me to rewrite how fires work and add new bits to the Building parent class. That was fine. Had to update the UI to show you that an earthquake was happening, which works more reliably than last time and I figured the ghost error out. I decided to implement water & energy requirements. Overhauled ChunkManager to allow for this, as each chunk needs enough. If it doesn’t produce enough, it imports from other chunks. If it can’t do that, everyone starts packing it up and leaving. Added this to city stats. Then modelled a cute little water tower as you can see below. Then I added energy, lots of chaos. Trying really hard to avoid circular loops to avoid a stack overflow, but it’s looking pretty good. User warnings now show up, like when an earthquake happens, or if a building burns down or if you can’t do something or don’t have money for something. Now I think I have time to do the fun part - creating chaotic fun stuff to make the city feel even more alive. But it’s looking pretty good right now. It’s getting close to being shipped, almost 40 hours in. Like & follow for the link ;) Now I really need to sleep. OH NO AND REVISE FOR THE PHYSICS TEST ON TUESDAY"}, {"post_id": 8051, "ts": "2026-06-13T13:04:47Z", "hours": 2.0944, "text": "It’s been a really long time since I’ve posted. Some progress going on here. Little sneak peak of the fires… yep. You thought the game was gonna be peaceful? On another 7+ hour sprint today"}, {"post_id": 7093, "ts": "2026-06-11T21:27:16Z", "hours": 4.3672, "text": "Clean codebase always pays off (unless you want to keep your job apparently?) Fixed the vacancies counter, as before I was using = instead of +=. Told you it’s the little things that catch you out. Created a safer version of the draft forceRemoveElement() that accounts for jobs and residents when destroying a building (houses/shops/industry). This now updates the game realistically, e.g. if you destroy a house, then you reduce from the population. If the residents were employed, then it removes positions from buildings. If they were unemployed, then we remove it from the stats. Since I am not storing direct references between buildings but creating a game pool for performance, this makes the operations require lots of calling. This could probably be optimised in the future but I will do that near the first release due to the ever-changing code base. This required updating GameManager.cs to have LosePopulation(), LoseJobs() with a helper RemoveWorkersFromBuildings() function. Luckily the lists in GridMananger that I made like 20 hours ago for “future proofing” came in useful. Finally, you can press F to show city statistics and it updates in real time."}, {"post_id": 6481, "ts": "2026-06-10T22:00:31Z", "hours": 1.0161, "text": "What’s the difference between these two: int maxEmployees = 50; int employees = 25; float taxRevenue = 1500.0f; ONE : float revenue = (employees / maxEmployees) * taxRevenue; TWO: float revenue = (employees * taxRevenue) / maxEmployees; Mathematically, they’re the same. a/b * c = c/b * a However, I missed one thing while coding (a lot harder to see when it’s not just this). They’re both integers. now what C# does is it divides 25/50. we get 0.5. but they’re both integers, so it tries to store it as an integer, which floors it to a 0. Therefore, it’ll suddenly jump to max revenue when the company is full. obviously not what was intended. Option 2 makes you multiply the integer with a float, and stores 25 * 1500 as a float, which can now be nicely divided by 50 to get the value that we inteded. Sometimes… actually, no MOST of the time it’s the little things that catch you out. Anyways, this has very much balanced the game. The companies get as many employees as they can, then grow by 1 employee each day. Their revenue scales with the employee count, so now residential houses are useful for once. If anything, essential. Next up: Road tax, Land tax. This might be the one time you want tax… or maybe it’s too much?"}, {"post_id": 6445, "ts": "2026-06-10T20:48:12Z", "hours": 1.1464, "text": "Sometimes, the most productive thing you can do is destroying everything for a clean slate. So that’s what I did and refactored my codebase, painting my GitHub red. The old city generation code ended up becoming messy spaghetti code that made it difficult to debug and work on it. And that sort of legacy code when I look back in a month is what ends up shelving projects for years on end. This half an hour will save me many in the future. I also removed the cluster expansion method of building expansion completely as it created annoying expansions that didn’t make sense of everything being 1 square off a road. Also created a GameManager and moved aspects of GridManager and FinanceManager to the new script, to try and centralise the logic and stop having random bits such as the day manager in the FinanceMananger, which didn’t make an sense. Also yes, I wasted 20 minutes trying to figure out what was going wrong when I forgot to add GameManager.cs to the scene 💔"}, {"post_id": 6367, "ts": "2026-06-10T18:39:39Z", "hours": 3.0794, "text": "It can’t POSSIBLY BE THAT HARD CAN IT? No but you have to mix up TAGS AND LAYERS. There’s some error you got 5 builds ago but NEVER APPEARED AGAIN. EVEN HOURS INTO TESTING. HOW DID IT FIX ITSELF?! The UI now updates how much you gained in the past day! But anyways, you can finally toggle between the layers… after too much debugging (and realising it was just me being stupid). But it’s okay I’ll hopefully get that laptop from this blood sweat and tears. Look how gorgeous it looks now!"}, {"post_id": 5918, "ts": "2026-06-09T22:00:15Z", "hours": 5.0561, "text": "Did you know it costs more to remove a road than create one?! Strange… Finally have a working economy in the game now! It’s VERY unbalanced. You WILL become very rich. And residential is currently useless, and everything just has a set employee count for now. But that will change soon, and we’ll make the game intelligent. Also the game clock is currently in the Finance Manager which is a little odd so maybe I’ll fix that later. But, I have used actions & delegates to optimise the game handling of the ridiculous amount of scripts for each building that will be running once the cities become larger and larger. Created a UI manager to update the script, which uses the above actions & delegates from the script manager. Created a Finance Manager which led me to have to recode GridManager for monetary support, but that was honestly less painful than it sounds. I also spent a considerable amount of time debugging last post’s Zoning. The code has multiple ways of producing a building and this caused me to have to go back and go through all of the code line by line to figure all the pathways out and debug it eventually. And yes, as promised I made it cost money to zone. Every action, such as creating a road and destroying them cost money and using my amazing research skills of using the first google result, destroying a road costs double placing a road! I think I should sleep. See you soon!"}, {"post_id": 5134, "ts": "2026-06-08T20:27:14Z", "hours": 2.4142, "text": "CITY ZONING! Annoyed that a massive skyscraper decided to spawn right next to a nice cozy cottage? Not anymore! You can zone areas by residential, commercial and industrial. There is also a “No Build” zone for areas that you just want to keep clear for now. This will eventually cost you money, because paperwork is really expensive apparently. (And to keep the game balanced of course). But there’s no money yet. I think you should like & follow to see how the game’s economy works."}, {"post_id": 4989, "ts": "2026-06-08T17:13:15Z", "hours": 2.5267, "text": "Pocket City Dev 5 The terrain was a little bland, so I decided to spice it up with nature. To fill the grid up, I decided to implement trees. Created a few basic tree grid varieties and implemented it into GridManager.cs. However, this forced me to spawn all of the trees in the Start() function which causes a longer loading time, CPU spike and worst of all it makes it so that after the initial radius no more trees spawn. Increasing the radius exponentially increases the amount of trees being added (because each ring has more grid sections to cover). So i had to pivot. I created a new Chunk Manager, split the main grid up into 16x16 chunks, and checked the player camera and only loaded the surrounding chunks. This makes trees spawn around the player continuously. However, this would become laggy as it would happen every frame. Two ways I decided to prevent this: Check if the player had changed chunks. If it’s still the same chunk, early return to skip the entire code process. Check if the nature has already been loaded. Only load if not loaded. This obviously saves on time complexity, and allows me to have the freedom of creating varying tree density. It also makes it so that the trees do not regenerate constantly. And that completes the visuals for now. Probably will add more foliage and other variety in the future, but for now this will suffice. Finally, this has a severe performance penalty. To cater for lower-end devices, I added a toggle which will later come to a settings menu for ~4x the performance without impacting gameplay. Optimisations, such as chunkloading and LODs will be added later to increase the performance with trees, but that will come after the core game is finalised."}, {"post_id": 3868, "ts": "2026-06-06T23:09:38Z", "hours": 2.8567, "text": "Hello everyone! The city is finally generating. They automatically generate alongside roads or try grow in clusters with each other. Game looks pretty sweet. Almost 9 hours in, I think it’s time to get some sleep now."}, {"post_id": 3730, "ts": "2026-06-06T19:33:02Z", "hours": 4.095, "text": "Coming first in the UK leaderboard is pretty honourable. Anyways, working on Pocket City and we’ve almost got generation of buildings and I’ve got a lot of things lined up for this project. I really need that framework 12 💔. The roads have a cursor and you can destroy and create them in a row as well, camera movement is more polished with a sprint key. Got all the building assets and everything ready. What a entry to stardance & hackclub!"}, {"post_id": 3473, "ts": "2026-06-06T12:53:43Z", "hours": 1.3806, "text": "Procedural road addition, so that when you add a tile (which is still done through code currently), it will decide which road layout to add, be it an intersection, 4 way, 3 way, a road turn or anything else. Added clean camera movement with WSAD + scroll as well."}, {"post_id": 3429, "ts": "2026-06-06T11:20:47Z", "hours": 1.0264, "text": "Hello! I’m working on creating a top-down 2D-styled but 3D game where you control a city. I’ve got this grid layout so far and it works fabulously and I somehow got the rotations correct on the first try 🤣"}]...
|
Title: Capital Chaos by @sol4r_on_hackclub | Stard Title: Capital Chaos by @sol4r_on_hackclub | Stardance
Devlogs:
Hello! I’m working on creating a top-down 2D-styled but 3D game where you control a city. I’ve got this grid layout so far and it works fabulously and I somehow got the rotations correct on the first try 🤣
Procedural road addition, so that when you add a tile (which is still done through code currently), it will decide which road layout to add, be it an intersection, 4 way, 3 way, a road turn or anything else. Added clean camera movement with WSAD + scroll as well.
Coming first in the UK leaderboard is pretty honourable. Anyways, working on Pocket City and we’ve almost got generation of buildings and I’ve got a lot of things lined up for this project. I really need that framework 12 💔. The roads have a cursor and you can destroy and create them in a row as well, camera movement is more polished with a sprint key. Got all the building assets and everything ready. What a entry to stardance & hackclub!
Hello everyone! The city is finally generating. They automatically generate alongside roads or try grow in clusters with each other. Game looks pretty sweet. Almost 9 hours in, I think it’s time to get some sleep now.
Pocket City Dev 5 The terrain was a little bland, so I decided to spice it up with nature. To fill the grid up, I decided to implement trees. Created a few basic tree grid varieties and implemented it into GridManager.cs. However, this forced me to spawn all of the trees in the Start() function which causes a longer loading time, CPU spike and worst of all it makes it so that after the initial radius no more trees spawn. Increasing the radius exponentially increases the amount of trees being added (because each ring has more grid sections to cover). So i had to pivot. I created a new Chunk Manager, split the main grid up into 16x16 chunks, and checked the player camera and only loaded the surrounding chunks. This makes trees spawn around the player continuously. However, this would become laggy as it would happen every frame. Two ways I decided to prevent this: Check if the player had changed chunks. If it’s still the same chunk, early return to skip the entire code process. Check if the nature has already been loaded. Only load if not loaded. This obviously saves on time complexity, and allows me to have the freedom of creating varying tree density. It also makes it so that the trees do not regenerate constantly. And that completes the visuals for now. Probably will add more foliage and other variety in the future, but for now this will suffice. Finally, this has a severe performance penalty. To cater for lower-end devices, I added a toggle which will later come to a settings menu for ~4x the performance without impacting gameplay. Optimisations, such as chunkloading and LODs will be added later to increase the performance with trees, but that will come after the core game is finalised.
CITY ZONING! Annoyed that a massive skyscraper decided to spawn right next to a nice cozy cottage? Not anymore! You can zone areas by residential, commercial and industrial. There is also a “No Build” zone for areas that you just want to keep clear for now. This will eventually cost you money, because paperwork is really expensive apparently. (And to keep the game balanced of course). But there’s no money yet. I think you should like & follow to see how the game’s economy works.
Did you know it costs more to remove a road than create one?! Strange… Finally have a working economy in the game now! It’s VERY unbalanced. You WILL become very rich. And residential is currently useless, and everything just has a set employee count for now. But that will change soon, and we’ll make the game intelligent. Also the game clock is currently in the Finance Manager which is a little odd so maybe I’ll fix that later. But, I have used actions & delegates to optimise the game handling of the ridiculous amount of scripts for each building that will be running once the cities become larger and larger. Created a UI manager to update the script, which uses the above actions & delegates from the script manager. Created a Finance Manager which led me to have to recode GridManager for monetary support, but that was honestly less painful than it sounds. I also spent a considerable amount of time debugging last post’s Zoning. The code has multiple ways of producing a building and this caused me to have to go back and go through all of the code line by line to figure all the pathways out and debug it eventually. And yes, as promised I made it cost money to zone. Every action, such as creating a road and destroying them cost money and using my amazing research skills of using the first google result, destroying a road costs double placing a road! I think I should sleep. See you soon!
It can’t POSSIBLY BE THAT HARD CAN IT? No but you have to mix up TAGS AND LAYERS. There’s some error you got 5 builds ago but NEVER APPEARED AGAIN. EVEN HOURS INTO TESTING. HOW DID IT FIX ITSELF?! The UI now updates how much you gained in the past day! But anyways, you can finally toggle between the layers… after too much debugging (and realising it was just me being stupid). But it’s okay I’ll hopefully get that laptop from this blood sweat and tears. Look how gorgeous it looks now!
Sometimes, the most productive thing you can do is destroying everything for a clean slate. So that’s what I did and refactored my codebase, painting my GitHub red. The old city generation code ended up becoming messy spaghetti code that made it difficult to debug and work on it. And that sort of legacy code when I look back in a month is what ends up shelving projects for years on end. This half an hour will save me many in the future. I also removed the cluster expansion method of building expansion completely as it created annoying expansions that didn’t make sense of everything being 1 square off a road. Also created a GameManager and moved aspects of GridManager and FinanceManager to the new script, to try and centralise the logic and stop having random bits such as the day manager in the FinanceMananger, which didn’t make an sense. Also yes, I wasted 20 minutes trying to figure out what was going wrong when I forgot to add GameManager.cs to the scene 💔
What’s the difference between these two: int maxEmployees = 50; int employees = 25; float taxRevenue = 1500.0f; ONE : float revenue = (employees / maxEmployees) * taxRevenue; TWO: float revenue = (employees * taxRevenue) / maxEmployees; Mathematically, they’re the same. a/b * c = c/b * a However, I missed one thing while coding (a lot harder to see when it’s not just this). They’re both integers. now what C# does is it divides 25/50. we get 0.5. but they’re both integers, so it tries to store it as an integer, which floors it to a 0. Therefore, it’ll suddenly jump to max revenue when the company is full. obviously not what was intended. Option 2 makes you multiply the integer with a float, and stores 25 * 1500 as a float, which can now be nicely divided by 50 to get the value that we inteded. Sometimes… actually, no MOST of the time it’s the little things that catch you out. Anyways, this has very much balanced the game. The companies get as many employees as they can, then grow by 1 employee each day. Their revenue scales with the employee count, so now residential houses are useful for once. If anything, essential. Next up: Road tax, Land tax. This might be the one time you want tax… or maybe it’s too much?
Clean codebase always pays off (unless you want to keep your job apparently?) Fixed the vacancies counter, as before I was using = instead of +=. Told you it’s the little things that catch you out. Created a safer version of the draft forceRemoveElement() that accounts for jobs and residents when destroying a building (houses/shops/industry). This now updates the game realistically, e.g. if you destroy a house, then you reduce from the population. If the residents were employed, then it removes positions from buildings. If they were unemployed, then we remove it from the stats. Since I am not storing direct references between buildings but creating a game pool for performance, this makes the operations require lots of calling. This could probably be optimised in the future but I will do that near the first release due to the ever-changing code base. This required updating GameManager.cs to have LosePopulation(), LoseJobs() with a helper RemoveWorkersFromBuildings() function. Luckily the lists in GridMananger that I made like 20 hours ago for “future proofing” came in useful. Finally, you can press F to show city statistics and it updates in real time.
It’s been a really long time since I’ve posted. Some progress going on here. Little sneak peak of the fires… yep. You thought the game was gonna be peaceful? On another 7+ hour sprint today
Debugging HELL I added fires, which you can see in the corner. Unity Particle system actually really cool for that by the way. This forced me to rewrite how fires work and add new bits to the Building parent class. That was fine. Had to update the UI to show you that an earthquake was happening, which works more reliably than last time and I figured the ghost error out. I decided to implement water & energy requirements. Overhauled ChunkManager to allow for this, as each chunk needs enough. If it doesn’t produce enough, it imports from other chunks. If it can’t do that, everyone starts packing it up and leaving. Added this to city stats. Then modelled a cute little water tower as you can see below. Then I added energy, lots of chaos. Trying really hard to avoid circular loops to avoid a stack overflow, but it’s looking pretty good. User warnings now show up, like when an earthquake happens, or if a building burns down or if you can’t do something or don’t have money for something. Now I think I have time to do the fun part - creating chaotic fun stuff to make the city feel even more alive. But it’s looking pretty good right now. It’s getting close to being shipped, almost 40 hours in. Like & follow for the link ;) Now I really need to sleep. OH NO AND REVISE FOR THE PHYSICS TEST ON TUESDAY
WORKING PATHFINDING ON THE GRID! Created new assets so the game looks complete now! You can see the firetruck going from the Fire station all the way to the burning building where it will extinguish it. Yes, it follows the roads as intended and uses the A* algorithm to figure out the best path. And they shoot water out, so visual feedback for everything. This was super fun as it was the first time I’ve implemented the A* in a video game on a grid that procedurally generated. The coal power generator, fire station and fire trucks have models now, I think I made them good enough to fit with the game. Police station and healthcare to still be implemented but it’s looking good so far. This required creating a new services manager, creating a pathfinding script, updating global services and how everything interacts with the fire, and creating reverse pathfinding and small details. It’s coming together really cleanly now.
Working healthcare! The game now has a virus… and it spreads pretty quickly. Houses get infected, added to the random event chances on top of earthquakes and fires. I created hospitals that dispatch ambulances as required. Now all services cost money. Using the same A* algorithm from last time, but a little more complex due to the nature of the virus spreading to random buildings. This requires the game to check for any viruses. I created an UI that displays the day progression, using actions & delegates again. The day length is now no longer fixed, but instead it becomes smaller the longer you stay on the map, to try and add difficulty ramping. The game is currently very difficult at the start and incredibly easy at the end, so I’m trying to reverse this a bit and make it hard at the start but terrible towards the end. Also just realised there’s no ending lol - you just become broke and softlock yourself. Never done it to myself which really speaks out about how UNBALANCED the game is. I think it’s time to work on game balancing now before implementing new features, and over half way to shipping? maybe at 65-80 hours in at this rate?
Currently rebalancing the video game to make the game progression more realistic as it is currently extremely difficult at the start and stupidly impossible to die toward the end. Completely forgot to tell you guys that you can follow my projects on my YouTube: Video Like & sub if you can… mb for the self promo though. Sadly I have 6 exams next week so the next 2 weeks are most likely going to be slow ones… not dominating the leaderboards anymore.
I FINALLY LOST IN MY OWN GAME!! Rebalancing the game slowly but surely. Currently added inflation, which increases the price of everything as the days go by. It gets less severe the longer you play but the inflation rate stays high. The game days now vary, take 5 seconds at the start and slowly get faster and faster toward 1.5s linearly. The inflation rate also increases with bands as the game progresses so you need to keep up. This makes the game a good progression, but make one mistake during an earthquake and it might be ggs for you. There is now finally a game over function… although no restart but don’t worry about it. It just pauses the game and tells you that the game is finished. Next up: Detailed Finances, Rubbish? (follow thx)
Okay now i SUCK at my own video game. Don’t worry it’s hard mode. Also lost 2 hours of work somewhere cuz it didn’t save? Don’t understand how. That’s always great isn’t it. But still, 62 days in and I’m fried because of one silly mistake I made 40 days ago. Really teaches you consequences I guess. Spent my time completely overhauling how everything works. You used to make too much money, so I made the revenue even more population based, by making the max revenue a multiplier of the max population. Completely rewrote the losing population, unemployment and vacancy calculations to prevent strange negative numbers which was irritating me for the past one and a half weeks. Also overhauled the inflation to use a formula instead of a very rudimentary lookup table from if statements which is staged into a end-game (130 days+) and early game stage with 20% and 2% simple interest respectively (no not compound for once - that would make the game too hard. Extreme mode?) The game is actually like a good game now. I don’t know how to explain apart from that though.
I HAVE A PLANN For the spinal sprint toward completion. Should end up taking me to hour 70-75? Then we polish the UI and add a main menu… lacking feature I guess. Anyways, reorganised the code base and split game manager up, created folders and fixed dependencies for everything. There is now an event manager, which handles all of the events separately, and as you can see from this simple to-do list (should my next project be the to do list to end all to do lists with calendar integration and stuff???) that I have completed the first bit “Weighted Event system”. So now nothing has an equal chance of happening! Also as a side effect made adding new effects a lot easier due to the nested WeightedEvents class which was similar to an idea I had in my old minecraft mod plugin and transferred the skills across the languages. Quite nice neat code actually, that isn’t 600 lines long, so I can quickly show it to you below. It’s very applicable and I believe I have used it twice or three times in the past 4 months alone. The declarations for the events now look like this, very centralised and easy to add/remove events and modify the weightings. Called in the Start() function. weightedEvents.Add(new WeightedEvent("Nothing", 20, () => { })); weightedEvents.Add(new WeightedEvent("Earthquake", 5, Earthquake)); weightedEvents.Add(new WeightedEvent("Fire", 40, SetBuildingOnFire)); weightedEvents.Add(new WeightedEvent("Virus", 20, () => { TriggerVirusOutbreak(); } )); and the class is just simply storing the name, the weight and a weighted Event. public class WeightedEvent { public string name; public int weight; public Action weightedEvent; public WeightedEvent(string name, int weight, Action weightedEvent) { this.name = name; this.weight = weight; this.weightedEvent = weightedEvent; } } we do need to store the total weight which happens on the Start() function currently. When playRandomEvent() is called, we increase the cursor by the event’s weight until it is greater than the rolled random number between 0 and the total weight, at which point the class’ event is called. Broke nothing in the end! That’s great isn’t it, especially after migrating a bunch of “legacy” code. Hopefully didn’t jinx it.
POLITICS!! + Debugging Hell v2 I mean I guess it is? Not too sure. Event Manager completely overhauled. Double events now no longer have the chance of repeating the same event. Created a new GameEffects script which just takes a bunch of simple code away from EventManager and plays the basic functions such as the “tax revenue increases” which you see below. This was quite a headache to create, and I severely underestimated how much time this would take. I have 2 extra nested classes inside of EventManager for Political Question and Political Scenario. [... inside EventManager.cs ...] public class PoliticalQuestion { public string Question; public TaskCompletionSource<bool> TaskCompletionSource = new TaskCompletionSource<bool>(); public Action onAccept; public PoliticalQuestion(string question, Action onAccept) { Question = question; this.onAccept = onAccept; } } public class PoliticalScenario { public string description; public Action runnable; public PoliticalScenario(string featureDescription, Action functionality) { description = featureDescription; runnable = functionality; } } [Header("Political Question Variables")] public List<PoliticalQuestion> PendingQuestions = new List<PoliticalQuestion>(); public event Action onQueueChanged; private PoliticalScenario[] goodFeatures; private PoliticalScenario[] badFeatures; The political question is sent off to the UI manager, which displays it as shown below. Then it handles user input pressing Y/Enter or N/Esc to accept the user choice, and returns it back to the Event Manager. Seems simple enough, yet there are many ways to do it but I think that the above implementation works the best out of all the ones that I tried. I attempted to use Game Manager as a middleman but that did not work out - so I resorted to passing an entire class. The political scenario allows for the string to actually do something, so that the game knows what to process and what the user agreed to without creating a bunch of variables, and can allow for stacked political question events which is nice. Game’s looking really neat, and the multipliers and stuff can make the game go very crazy very quickly. Too much of a good thing is a bad thing!! Debugged the entire system for like a solid 3 hours it was actually bad. Came first in the UK tho!! I’m back after those 6 exams are done. Yes I know the UI looks pretty bad but it’s good enough for pre-beta testing. Oh yeah, speaking of UI everything is more bold. Figured out how to do that.
MAKE IT RAIN ASTEROIDS Pretty long run honestly. But before that, let’s talk about retrofitting your buildings. Earthquakes are pretty bad. Very bad when you loose your 100k building in a moment. So upgrade it. Yes it’ll cost you 35 to 55k now. But is your peace of mind worth that? And I added asteroids! These fly down and annihilate everything in a 3 unit radius and then set everything else in the 6 unit radius on fire. Lots of minor bug fixes as well, trying to get the game really polished now. Some rejigging of the game’s back end, such as creating a new abstract class for employer and reworking the systems to ensure that they run more smoothly and I believe almost finally fixing the unemployment/vacancy problem. I say almost because every 5 runs I see the game yell at me that it didn’t count something correctly but honestly I’ve spent so long on this I don’t even know if it’d be harder to just rewrite the entire employment system. For more detail, see my video linked below! See if you guys like it, my first proper long form I Added ASTEROIDS that ANNIHILATE your Adorable City And boy will this thing cook your economy.
BETTER UI + XP At the top of the image you can see a little progress bar… yep I’ve added XP now. Got plans for that, probably going to allow you to unlock stuff later. Like the lockdown ability etc. The UI has been overhauled. The actual images are a touch on the placeholder side apart from the road but it looks pretty good. You cycle between road, zoning and special building placement with 1, 2 and 3. Use R to rotate between the modes like residential, commercial and industrial zoning as well as Utilities & Emergency for the special buildings. Then finally T to rotate between those specific buildings. Complicated? Maybe? But it’s also a lot faster. I have completely lost my muscle memory of spamming R like the “good old days” though. Looks good? Bad? Horrible update and the game should never be changed ever again? Best update in the world and I should win £1 trillion? What do you think?
CRIME!!! + C# Generics I added Arson and added a Police manager that goes out and solves these crimes. Lots more to come, let me know of any ideas you have! But before that let me teach you ALL something. C# Generics. I had a bunch of scripts that all did ABOUT the same thing but with different. This was FindClosestHospital, FindClosestFireStation and the thing I was adding which was FindClosestPoliceStation. It felt quire redundant to copy the same lines but instead of Hopsital it was replaced with FireStation or PoliceStation. //Generic functions private T FindClosestReachableService<T>(Vector2Int targetPos, Func<T, bool> hasAvailableVehicles, out List<Vector2Int> bestRoute) where T : Building { T closestBuilding = null; bestRoute = null; int shortestRouteLength = int.MaxValue; bool foundBuildingOfThisType = false; foreach (var kvp in gridManager.GetMapGrid()) { GridManager.GridTile tile = kvp.Value; if (tile.buildingScript != null && tile.buildingScript is T serviceBuilding) { foundBuildingOfThisType = true; if (!hasAvailableVehicles(serviceBuilding)) continue; List<Vector2Int> testRoute = CalculateRoadPath(tile.buildingScript.gridPos, targetPos); if (testRoute == null || testRoute.Count == 0) continue; if (testRoute.Count < shortestRouteLength) { shortestRouteLength = testRoute.Count; bestRoute = testRoute; closestBuilding = serviceBuilding; } } } if (!foundBuildingOfThisType) { bestRoute = null; return null; } return closestBuilding; } Above is an example of the C# generic. We have “T” type, and I think this is a good place to learn about them. Instead of defining the function as returning something like Building , we make T a type. and you can see it passed in a little <T> after the function name. We can also pass in entire functions like Func<T, bool> which is utilised as shown below: Building bestStation = FindClosestReachableService<PoliceStation>(building.gridPos, ps => ps.HasPolice(), out route); you can see ps => ps.HasPolice() calls that out. And finally, to define what T is meant to be, I’ve added where T : Building . You can do this many times, such as by having both a T as well as a U! and you’d have a repeated where T : Building where U: PotatoChips or something idk what U is meant to be bro. This was my first time using it but it’s pretty cool and if you’re using C# I’d recommend learning it as it saved me like 200 lines of code and changing something 3 times to change the same thing! And yes, I added a third thing which is Arson! which is a crime based thing, and you have a visual that shows up as a timer. if a police doesn’t solve the crime it sets on fire. It’s not too bad but it adds a use for the police, with much more to come for the police to deal with in the future! Also added asteroid BOMBARDMENT as a debuff. Yeah it’s brutal. 3 strikes… thats up to 108 tiles DESTROYED and set on fire. And of course, the image is from a youtube video: Click me!
Main menu 👀 I need help. UI clearly isn’t for me
I’m being forced to post Yeah thanks stardance. 10 hour limit for what. Probably spam filter. Also MASSIVE BUG(s). One is that the game just randomly deletes all the buildings from a chunk. No idea why, I’ve been at it for so long. Another issue is the stupid vacancy counter which has been broken FOREVER but atleast now it doesn’t go negative. I have a serious feeling I will have to spend a week just POLISHING the game. Whatever, Currently working through a new feature of allowing you to use your money that you spent so long accumulating to try and fix the chaos that you went through. This is done through the “Council FX” which I may rename if you guys can think of a better name, and you can see the countless things to do such as: Taking On DEBT!! YAY!! 100k that gains 1% every day. Seems low.. but it will pile up very quickly since it’s compound interest. Overclocking the grid for free placement + infinite water/power Maximising Housing/Business revenue Curing all infections … and many more as well as the ??? at level 100… who knows what that does. £2.5 million btw. Of course, those levels are the XP, which has finally given that a use. And no you wont be at level 11000 just like that, i’m just being lazy for testing. Also rebalanced so that all of the commercial buildings have ~10-15% of their previous employment caps. So that you’re not just spamming residential. It also makes industrial more useful as they have more employers even though they produce less money.
Bugs are genuinely taking the life out of me Genuinely the worst thing ever. I STILL can’t figure it out but I had to post my weekly devlog anyways. Can you believe we’re 28 weeks into 2026??! Here’s the chaos where I accidentally created a “Pocket Empire” (Day 1105) Watch the video (click the title) if you wanna see how I ended up here and a minor crash out. very minor.
UFOs in an Alien Invasion 💔💔 The second rare event addition to Pocket City! Get a chunk of your population zapped up by some not so friendly aliens… Any more ideas, let me know below! But it was pretty neat to implement. 3D modelled it and everything. 3 hours of doing god knows what. Tried to figure quality settings out and probably did smth else but was too busy with the World Cup to remember what I did. Probably bug fixes and stuff. Oh yeah and you see a pretty cool ripple pulse thing that propogates through the map. Although it is a little weak right now but i’ll fix that next time. Super tired. mb
I NEED YOUR HELP Pocket City already exists as a game. I know this is stupid and I should have checked this before starting since I had the intention of publishing it to steam but here we are. If you want more details, or more knowledge about the game check this video out: Video Oops…
Hmmmm… What’s cooking? (Blender just WON’T count toward my hours but prolly spent 2-3 extra hours here) The helicopter blades actually spin. And W Unity particle system for the missile.
WORKING AIR DEFENCE + ATTACK HELICOPTERS So we got working air defence turrets with some predictive aiming, and attack helicopters that shoot missiles at random buildings. Although you’re unlikely to get 3 attack helicopters at once… for now. The helicopters blades do spin, they bob up and down, they go towards buildings. They shoot out these missiles, which pathfind their way to the targetted building. They all have a healthsystem which means that the turrets do some damage on collisions only though, one turret might take a while but two (or the 7 you see below) will MOW them down. Still have to hook it all up to the Finance Manager, Special Building placement and other boring stuff, but… I need more IDEAS!! (read this thx) …for more Military stuff that can be added. Tank wars? Who knows. I was thinking of a military invasion as being one of the rare events which spawns like 10 missiles and 5 attack helicopters and maybe a B2 bomber or some stuff. I also need more allied options, maybe I’ll add like an anti-bomb turret that is specifically for the B2 bomber or something and does 100000 damage. Or maybe your own airbase that spawns an allied helicopter and now you have dogwars. or maybe your own plane. idk So yes @Adam_Lotfalla this is what the helicopter was for. Yay more things to worry about!!! Still have integrations left! I’ll see you (hopefully) tomorrow once that’s done. but its midnight now so goodbye.
Nukes… from a plane A famous plane. The B2 Bomber. Idk gng I got bored. No but it drops a nuke that decimates everything in a decent radius and then sets everything in a bigger radius on fire, and now we have a new rare event called a “military invasion”.. that spawns like 8 helicotpers AS WELL as the b2 bomber. The B2 Bomber starts a few clicks out and then flies toward the set target building. Then it drops the nuke, and you have a few seconds to try and kill the nuke before it kills you, and on impact (yes we are finally using rigidbodys as they are intended) it explodes. You better have that turret system ready. Of course, it’s clearly not enough. So maybe I’ll add a anti-missile system as a YouTube comment said. Speaking of YouTube, thank you for all the support :) 100+ comments goes crazy, and we’re on 73 subs up from the previous 29 literally 3 weeks ago. Not subscribed? Help a fellow dev out: TechScope Channel
NEW NAME!!! Flash Floods + Main Menu If you remember, Pocket City is a game that already exists so now it’s called Capital Chaos. Thank you YouTube comments! And all of you as well, for the suggestions. Ofc new video to go with it: watch by clicking here! I created flash floods that.. well flood the entire map. It’s meant to be a little toned down of a disaster, thats more survivable because it gives the game a touch more balance. It stops all services from working, so that could be detrimental during a virus attack. But on the other hand, it stops every single fire and prevents new ones and explosions. A lifesaver if theres a nuke, it gets completely nullified. Also new main menu, I think it looks pretty neat. Especially compared to the old one.
I HATE Menus (in Unity at least) Genuinely hate them. But yeah we got settings menu working (which genuinely took like 5-6 hours because of stupid unity legacy stuff vs new stuff and then unity 6 vs 2023 version stuff i was used to) AHHHH I don’t remember it being this painful in Godot to be honest so maybe Godot is better for that? i had to get rid of VSync because it only worked on refresh. Created a debug menu to test performance, just to see that the only useful thing there was FPS and like RAM usage, and some engine stuff like active Rigidbodys. I couldn’t see the CPU utilisation or GPU utilisation which was… the thing I wanted to see. Although don’t worry performance does seem to be reasonable and early to mid game I can push over 1000 FPS on potato settings (specs at bottom if you care about them). It does obviously go down as the game continues on, but I think it’s quite optimised. Even with shadows its on 500+ FPS with a mid sized down. Although adding trees will quarter your FPS numbers. but it looks pretty so there’s your tradeoff. Although problematically if you turn trees off and you had already generated trees the fps stays low even though you’re not rendering it? I don’t know why unity is so weird. The game is quite unbalanced, but we’re in the final polishing stages (my target is 150 hours for the framework and hopefully it’s secure! (vote nice and high thanks - i did put a lot of effort into this game.) Up next: Difficulty selection Polishing Rebalancing updates Release!
You won’t believe it. I got it working FIRST TRY That’s actually crazy to be honest. Tells you how much expirience those 8 hours of menu development have given me. Someone give me a Unity menu doctorate or sum But on a serious note, we have game difficulty selection and its all nice and self contained. With controller support of course. You can see we have Previous Saves but that isn’t really functional yet. One of the things I learnt is to never rely on the UI giving you the data, only the click, so you’d manually add the elements and then call .value or .isOn respective to the component, and the same goes for dropdowns although I didn’t use one here. Let me know if you think it looks clean or any improvements to the UI readability, etc.
INSANE tree optimisations Went from 60-80 fps @ 4K to 400-450 (in game). Yes a 6 to 7x increase. How you ask? GPU Mesh Instance drawing offloading the CPU work of handling thousands of game objects. In English, I’m no longer spawning thousands of tree objects, but instead telling the GPU to draw the tree instances every frame. This seems quite unintuitive because you’re now drawing thousands of things every second. BUT this means that there are no game objects, so the CPU doesn’t even know that these exist. Also the GPU draws it thousands of times anyways. A game object handles transforms, rotations, etc. that the CPU has to keep track of whether it is active or not. This had the added benefit of the trees having no overhead when the trees are disabled, so you regain all of your framerate! Also I used some neat little script that combined the meshes all together in the GameObject prefab. Now it really should be able to run on your potato PC/Laptop. Combine script using UnityEngine; public class MeshCombineUtility : MonoBehaviour { [ContextMenu("Combine Children Meshes")] public void Combine() { MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>(); CombineInstance[] combine = new CombineInstance[meshFilters.Length]; Matrix4x4 matrix = transform.worldToLocalMatrix; for (int i = 0; i < meshFilters.Length; i++) { if (meshFilters[i].gameObject == gameObject) continue; combine[i].mesh = meshFilters[i].sharedMesh; combine[i].transform = matrix * meshFilters[i].transform.localToWorldMatrix; } Mesh combinedMesh = new Mesh(); combinedMesh.CombineMeshes(combine, true, true); #if UNITY_EDITOR string directory = $"Assets/Assets/Mesh/Tree/{gameObject.name}.asset"; UnityEditor.AssetDatabase.CreateAsset(combinedMesh, directory); UnityEditor.AssetDatabase.SaveAssets(); Debug.Log($"Combined mesh saved to {directory}"); #endif } } Draw section of GPU Mesh Instancing private void DrawTreeMeshes() { if (treeMesh == null || treeMaterial == null) return; foreach (var kvp in generatedChunks) { ChunkData chunk = kvp.Value; if (chunk.spawnedTrees == null || chunk.spawnedTrees.Count == 0) continue; int batchSize = 1023; int totalTrees = chunk.spawnedTrees.Count; for(int i = 0; i < totalTrees; i+=batchSize) { int length = Mathf.Min(batchSize, totalTrees - i); Matrix4x4[] subMatrices = new Matrix4x4[length]; for (int j = 0; j < length; j++) { subMatrices[j] = chunk.spawnedTrees[i + j].matrix; } int meshIndex = Mathf.Abs(chunk.chunkCord.GetHashCode() + i) % treeMesh.Length; Graphics.DrawMeshInstanced(treeMesh[meshIndex], 0, treeMaterial, subMatrices, length); } } }
I’m getting new wifi lol, & 150 hours so yeah i won’t be here and probably will have to post a 10 hour thing BUT on the plus side, we got a nice death screen that has a bunch of quotes that you can read below [SerializeField] private string[] quotes = { "Opportunities multiply as they are seized \n - Sun Tzu", "If you are going through hell, keep going \n - Winston Churchill", "No empire was built on the first draft", "Fall seven times, stand up eight", "That which does not kill us, makes us stronger \n - Friedrich Nietzsche", "Out of ash, a new foundation", "I have not failed. I just found 10,000 ways that don't work \n - Thomas Edison", "A man is not finished when he is defeated. He is finished when he quits \n - Richard M. Nixon", "It does not matter how slowly you go as long as you do not stop \n - Confucius", "Out of difficulties grow miracles \n - Jean de La Bruyère", "The greater the obstactle, the more glory in overcoming it \n - Molière", "A Pocket Sized City is too small for your ambition. Build again \n - The Dev", "Success usually comes to those who are too busy to be looking for it \n - Henry David Thoreau", "Go big or go home", "You can't give up just yet. Stay determined... \n - Undertale" }; Maybe you’ll catch the little easter egg there as well ;) Working on adding game audio!! and probably finally enough hours to get the framework 12 (btw I wouldn’t recommend this as a daily laptop (f13 better), I just want something I can write on lol)
Game Sountrack? But before I talk about that, lemme just say the game audio is almost finished, we have menu sounds for clicks and stuff, and i added support for main menu music. The firetruck hoses actually do stuff, floods sound like floods, theres some peaceful background nature sounds and yeah it makes the game feel so much nicer. although i forgot place sounds which was a massive oversight. also my wifi is still working. no idea why, but not complaining. and i’m cooking on a soundtrack lowk although none of it seems correlated in any way and idk how i’ll make it fit into this game but you know what maybe it’ll just all go into some random album. None of the hours put into these songs count but its okay. i’m no pro tho so. all i’ll say is i love some bass
Final DevLog before First Ship - Boss Battle I don’t think words can explain what I made so click here to watch a video on my probably final major addition (no pressure) & also help with a small dilemma I have. NO!! that does not mean this game will stop development, but i think i finally have enough hours (+10-15 more safety) to get a Framework 12! (and then i will be able to crack on with entrance exams - so i guess development will slow a touch). Of course I’ll ship once the game is polished enough. You might see a devlog or two from the “Capital Chaos Website” - follow me ;) I really hope you guys all enjoy it and now I need to do the readme and stuff. I also realised I was one of the most viewed on Stardance which is honestly amazing and I appreciate all of the support :) And thank you to all the new friends I’ve made and all the followers and commenters. It’s honestly been insane.
BETA TEST! Nvm I have to devlog my final changes But lemme talk to those stardance reviewers real quick. Scroll down to see the endless content of my story, and all the community feedback (also on my youtube). Playing the game is a bit of a learning curve so you can watch my videos and stuff on it as well. I’d say watch this one: Boss Fight for the boss fight and maybe one of the other ones that you find interesting. Maybe this one because it has over 1,000 views and still climbing! The game is released there but it is windows only for now (i will release linux and maybe mac on the actual release game don’t worry but I’m super restricted for time right now) SKIP IF YOU’RE ON LINUX / MAC For everyone: Changes: Amended GameAudioManager to adjust for max voices which uses a List based system that appends and unappends. Boss fight also toggles and untoggles the game audio dependant on each audio source, because the game could currently have hundreds or even thousands of audio source which is really bad optimisation. So each audio source that I want to track has a ManagedAudioSource attached which automatically registers and unregisters itself from the GameAudioManager. I also edited the boss fight to make it a touch harder and amended the moves ;) And come and beta test NOWWW. leave all your comments, suggestions etc. on THE NEW DISCORD COMMUNITY!! or youtube, i’ll read it all and, again, thank you all for your support . I don’t know what to put as the image so here.
Thank you all so much for the support! Framework 12 is on it’s way (and this wait is painful). After 171 hours! 19.54x is actually insane and I appreciate it a lot. Join the Discord! I made a discord (click above) and i’ll give you all an early supporter role before I put it out on YouTube and stuff for the “wishlist” when the full game comes out (if you want to stay in touch after stardance is done. ALSO IF YOU COMMENTED WHILE THE GAME WAS STILL CALLED POCKET CITY DM ME ILL GIVE U A SPECIAL ROLE The game beta is still up and you can try it out Currently just doing some minor stuff to the game (Fixed some normal/easy mode not settings correct phases. B2 Bomber should destroy itself and stop the nuke siren once launched), and slowly adding a tutorial but I’m like 90% focused on revising for uni entrance exams
Ships:
Welcome to Capital Chaos! One of Stardance’s most awaited projects ;) (hopefully anyways) We’ve got chaos, a bunch of random events, a boss fight and so much more for you to explore. SKIP if you are on Linux/MacOS (or you can vote based on the videos - completely up to you) as I only have a windows executable for now. I am honestly super proud of this, and the community built around this game. I hope you enjoy it as well. There have been TONNES of challenges, such as pathfinding, the initial grid also seemed really daunting. To the vacancy count which was literally plaguing me for the past MONTH and got fixed today (it was one line… i know.. maybe I should have used AI). But besides, it’s a sick project. I hope you all love it. Unzip the file in the release and it should be good to go. READ THE README FOR INSTRUCTIONS AND CONTROLS!! THERE IS NO TUTORIAL Read the story, watch the videos if you can and just enjoy the game! It will be on steam in 8-9 months so maybe subscribe?...
|
1793537769.9557676
|
1793624169.9557676
|
|
51800
|
Sushi's Portfolio by @Sushmita | Stardance
|
Sushmita
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T16:02:17Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a professional portfolio website for my LinkedIn profile. I’m most proud of my navigation bar. It ended up looking exactly as I wanted it to. However, aligning my headshot and name on the About Me section was challenging. Raters/reviewers should know that the website has the bare minimum requirements for the mission because I would like to have a rated ship when I heavily improve it.", "repo": "https://github.com/Sushmita-Jacob/portfolio", "demo": "https://sushmita-jacob.github.io/portfolio/index.html"}]...
|
[{"post_id": 52448, "ts": "202 [{"post_id": 52448, "ts": "2026-08-22T15:58:09Z", "hours": 1.2836, "text": "Devlog #1: Basic About Me and Resume I am creating a professional portfolio website for business cards and my account profiles (such as LinkedIn). I simply used HTML and CSS for this project. My website will include About Me, Resume, Coding Projects, and Other Projects sections, as well as a link to my GitHub and LinkedIn. While this is a bare-bones website for the requirements of the missions, I plan to add more features soon after. A full list of planned features is available in my README."}]...
|
Title: Sushi's Portfolio by @Sushmita | Starda Title: Sushi's Portfolio by @Sushmita | Stardance
Devlogs:
Devlog #1: Basic About Me and Resume I am creating a professional portfolio website for business cards and my account profiles (such as LinkedIn). I simply used HTML and CSS for this project. My website will include About Me, Resume, Coding Projects, and Other Projects sections, as well as a link to my GitHub and LinkedIn. While this is a bare-bones website for the requirements of the missions, I plan to add more features soon after. A full list of planned features is available in my README.
Ships:
I created a professional portfolio website for my LinkedIn profile. I’m most proud of my navigation bar. It ended up looking exactly as I wanted it to. However, aligning my headshot and name on the About Me section was challenging. Raters/reviewers should know that the website has the bare minimum requirements for the mission because I would like to have a rated ship when I heavily improve it....
|
1793537774.9523833
|
1793624174.9523833
|
|
38296
|
The Last Star by @theodora | Stardance
|
theodora
|
1
|
36.0
|
180
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-29T12:05:14Z", "hours": 36.0, "multiplier": 4.15, "payout": 180, "blessing": "neutral", "text": "A thrilling story-based decision game where every choice shapes your path–and where you’ll need to piece together a hidden word to unlock the true ending. Each person has their own beginning and an end, but no one knows when their final moment will come. Every decision, every step you take is going to shape your future. Inside every person, there is a shiny star shining through their life. As long as hope remains, the star burns brightly. When hope is lost, the star slowly fades into darkness, turning positive energy into dark energy. Hope is contagious — but so is despair. People surrounding you don’t just affect themselves; they influence the people they meet and the world around them. How to Play –Can play with any device –Choose your character and begin the journey –Make choices at each story point–every decision affects what happens next –Collect gems along the way, each hiding a letter of a secret word –At the end, guess the hidden word to determine your true ending. ##Controls: –Mouse/tap: buttons and story choices –Arrow keys or drag the sliding object using touchscreen in maze and catch the gem –Arrow keys or touch the inbuilt arrow key button to play the snake Built With p5.js, p5play", "repo": "https://github.com/theodora-sin/The-Last-Star", "demo": "https://theodora-sin.github.io/The-Last-Star/"}]...
|
[{"post_id": 36963, "ts": "202 [{"post_id": 36963, "ts": "2026-07-29T12:02:16Z", "hours": 3.8381, "text": "#DEVLOG 5 Welcome to my final devlog! Today, I focused on finishing the conclusion of the screen. I created two different endings just to make the experience more fun. 🛠️ What’s New: Added the final chapter with two different story ending Adding sound effects to improve the overall expereience creating canvas to 400 x 800, so it can be play on the mobile device. Although the canvas might be small when people play on computer, this size allow the game to work across all devices Thank you for following the development of The Last Star! I hope you will enjoy the game."}, {"post_id": 36284, "ts": "2026-07-28T09:02:08Z", "hours": 8.4378, "text": "Devlog #4: Welcome to my fourth devlog! This week, I focused on developing the next three chapters leading up to the ending of The Last Star.Over the past two days, I have been working on these final chapters. I’m happy to say that I have finished writing the ending and created the snake game that appears in the story.I have also been working on adding arrow controls to the snake game so that players can enjoy it on iPads and mobile phones more easily. 🛠️ What’s New Created the final three story scenarios. Finished developing the snake game using p5.play, instead of relying mainly on CSS and JavaScript. 🔮 What’s Next Finish the conclusion and polish the final chapters. Add more features, including sound effects and images, to improve the overall experience. Thank you for following the development of The Last Star! I’m hoping to ship the project in the next devlog. Stay tuned!"}, {"post_id": 34819, "ts": "2026-07-25T20:32:20Z", "hours": 8.22, "text": "Devlog #3 Welcome to my third devlog! Today, I focused on developing Scenarios 2 and 3, with a strong emphasis on creating fun and engaging minigames to make the gameplay more exciting. These scenarios continue to build on the player’s choices, with successful decisions rewarding Gems that bring them one step closer to uncovering the game’s hidden ending. 🛠️ What’s New Created two new minigames: –A collection game where players gather items while avoiding obstacles. –A maze game that challenges players to find the correct path. Developed the story scenarios for Chapters 2 and 3, where the player’s decisions determine whether they earn a Gem and continue uncovering the secret word. 🔮 What’s Next Develop the next minigame, inspired by the classic Snake game. Complete the story scenarios for Chapters 4 and 5. Thank you for following the development of The Last Star! I can’t wait to share more progress with you in the next devlog."}, {"post_id": 34112, "ts": "2026-07-24T16:25:05Z", "hours": 9.265, "text": "Devlog #2: Welcome to my second devlog: I’m currently working on making the game more exciting, engaging, and fun to play. While deploying Every Bite Counts, I ran into issues with some parts of the project. As a result, I decided to rework the project and rename it The Last Star. Although the main storyline will be different, the core gameplay and overall layout will remain the same, allowing me to reuse most of the existing layout code. Throughout the adventure, the player makes meaningful choices that determine the path they take. Each right decision rewards a Gem, and a Gem contains a hidden letter. Collecting all gems reveals a secret word that unlocks the game’s true ending. 🛠️ What’s New Create a New Story Line Working on the first 3 screen, mainly the starting screen Screen in 400 x 800 px so it can be suitable for all device, phone as well 🔮 What’s Next: Creating first chapter screen Creating first minigame based on first chapter Thank you for following the development of The Last Star! I can’t wait to share the game’s progress with you."}, {"post_id": 33179, "ts": "2026-07-22T21:01:16Z", "hours": 6.5256, "text": "Devlog #1: Welcome to my first devlog: The game I’m developing is called Every Bite Counts. It is a story-driven educational game about food waste and junk food, encouraging players to make healthier and more sustainable choices. The inspiration for this game came from one of my previous concepts, Escape Cave, which explored themes of hope and despair, light and darkness, and the difficult choices people face. While this new project has a different setting, it continues the idea that our choices have meaningful consequences. link: https://theodora-sin.github.io/Esacpe-Cave/ The main motivation behind Every Bite Counts is the huge contrast between malnutrition and obesity around the world. While many people have access to more food than they need and waste large amounts of it, millions of others do not have enough nutritious food to live healthy lives. 🛠️ What’s New Created two playable characters (one boy and one girl) so players can choose who they want to play as. Designed the start screen and the first school cafeteria scene, where dialogue introduces why many students prefer junk food over healthier meals. Started developing the first mini-game, where players have 30 seconds to catch healthy foods while avoiding junk food. At the end of the game, players are presented with educational facts about healthy eating. 🔮 What’s Next: Create the second story scene, set on the street, along with dialogue introducing food waste in the local community. Design the second mini-game, which will focus on food waste (the exact gameplay is still being planned). Continue expanding the story and adding more educational facts throughout the player’s journey. Thank you for following the development of Every Bite Counts! More updates will be coming soon."}]...
|
Title: The Last Star by @theodora | Stardance
Dev Title: The Last Star by @theodora | Stardance
Devlogs:
Devlog #1: Welcome to my first devlog: The game I’m developing is called Every Bite Counts. It is a story-driven educational game about food waste and junk food, encouraging players to make healthier and more sustainable choices. The inspiration for this game came from one of my previous concepts, Escape Cave, which explored themes of hope and despair, light and darkness, and the difficult choices people face. While this new project has a different setting, it continues the idea that our choices have meaningful consequences. link: https://theodora-sin.github.io/Esacpe-Cave/ The main motivation behind Every Bite Counts is the huge contrast between malnutrition and obesity around the world. While many people have access to more food than they need and waste large amounts of it, millions of others do not have enough nutritious food to live healthy lives. 🛠️ What’s New Created two playable characters (one boy and one girl) so players can choose who they want to play as. Designed the start screen and the first school cafeteria scene, where dialogue introduces why many students prefer junk food over healthier meals. Started developing the first mini-game, where players have 30 seconds to catch healthy foods while avoiding junk food. At the end of the game, players are presented with educational facts about healthy eating. 🔮 What’s Next: Create the second story scene, set on the street, along with dialogue introducing food waste in the local community. Design the second mini-game, which will focus on food waste (the exact gameplay is still being planned). Continue expanding the story and adding more educational facts throughout the player’s journey. Thank you for following the development of Every Bite Counts! More updates will be coming soon.
Devlog #2: Welcome to my second devlog: I’m currently working on making the game more exciting, engaging, and fun to play. While deploying Every Bite Counts, I ran into issues with some parts of the project. As a result, I decided to rework the project and rename it The Last Star. Although the main storyline will be different, the core gameplay and overall layout will remain the same, allowing me to reuse most of the existing layout code. Throughout the adventure, the player makes meaningful choices that determine the path they take. Each right decision rewards a Gem, and a Gem contains a hidden letter. Collecting all gems reveals a secret word that unlocks the game’s true ending. 🛠️ What’s New Create a New Story Line Working on the first 3 screen, mainly the starting screen Screen in 400 x 800 px so it can be suitable for all device, phone as well 🔮 What’s Next: Creating first chapter screen Creating first minigame based on first chapter Thank you for following the development of The Last Star! I can’t wait to share the game’s progress with you.
Devlog #3 Welcome to my third devlog! Today, I focused on developing Scenarios 2 and 3, with a strong emphasis on creating fun and engaging minigames to make the gameplay more exciting. These scenarios continue to build on the player’s choices, with successful decisions rewarding Gems that bring them one step closer to uncovering the game’s hidden ending. 🛠️ What’s New Created two new minigames: –A collection game where players gather items while avoiding obstacles. –A maze game that challenges players to find the correct path. Developed the story scenarios for Chapters 2 and 3, where the player’s decisions determine whether they earn a Gem and continue uncovering the secret word. 🔮 What’s Next Develop the next minigame, inspired by the classic Snake game. Complete the story scenarios for Chapters 4 and 5. Thank you for following the development of The Last Star! I can’t wait to share more progress with you in the next devlog.
Devlog #4: Welcome to my fourth devlog! This week, I focused on developing the next three chapters leading up to the ending of The Last Star.Over the past two days, I have been working on these final chapters. I’m happy to say that I have finished writing the ending and created the snake game that appears in the story.I have also been working on adding arrow controls to the snake game so that players can enjoy it on iPads and mobile phones more easily. 🛠️ What’s New Created the final three story scenarios. Finished developing the snake game using p5.play, instead of relying mainly on CSS and JavaScript. 🔮 What’s Next Finish the conclusion and polish the final chapters. Add more features, including sound effects and images, to improve the overall experience. Thank you for following the development of The Last Star! I’m hoping to ship the project in the next devlog. Stay tuned!
#DEVLOG 5 Welcome to my final devlog! Today, I focused on finishing the conclusion of the screen. I created two different endings just to make the experience more fun. 🛠️ What’s New: Added the final chapter with two different story ending Adding sound effects to improve the overall expereience creating canvas to 400 x 800, so it can be play on the mobile device. Although the canvas might be small when people play on computer, this size allow the game to work across all devices Thank you for following the development of The Last Star! I hope you will enjoy the game.
Ships:
A thrilling story-based decision game where every choice shapes your path–and where you’ll need to piece together a hidden word to unlock the true ending. Each person has their own beginning and an end, but no one knows when their final moment will come. Every decision, every step you take is going to shape your future. Inside every person, there is a shiny star shining through their life. As long as hope remains, the star burns brightly. When hope is lost, the star slowly fades into darkness, turning positive energy into dark energy. Hope is contagious — but so is despair. People surrounding you don’t just affect themselves; they influence the people they meet and the world around them. How to Play –Can play with any device –Choose your character and begin the journey –Make choices at each story point–every decision affects what happens next –Collect gems along the way, each hiding a letter of a secret word –At the end, guess the hidden word to determine your true ending. ##Controls: –Mouse/tap: buttons and story choices –Arrow keys or drag the sliding object using touchscreen in maze and catch the gem –Arrow keys or touch the inbuilt arrow key button to play the snake Built With p5.js, p5play...
|
1793537777.3582911
|
1793624177.3582911
|
|
22531
|
Grounding by @skornuta | Stardance
|
skornuta
|
1
|
6.0
|
86
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-03T22:49:09Z", "hours": 6.0, "multiplier": 14.58, "payout": 86, "blessing": "neutral", "text": "Q. What did you make? A. Chrome extension that gates distracting sites (YouTube, Reddit, IG, X, TikTok, Snapchat, Facebook) behind a calm brain-dump instead of a productivity test. It asks “what’s making your mind busy right now?”, every character you type dissolves 1.5s later, and 50 characters unlocks the site. Its just a forced pause to notice why you opened the app. Q. What was challenging? A. Getting real isolation from host-site CSS/CSP (solved with a closed Shadow DOM + constructable stylesheet + bundled fonts) and fully trapping input — YouTube’s shortcuts were still firing under the overlay until I trapped keydown / keypress / keyup plus the full mouse event set with stopImmediatePropagation . Q. What are you proud of? A. Killing three earlier “typing test” versions of this to land on the much simpler, much better idea: stop measuring, just let people empty out. 3 major QoL improvements: Full Shadow DOM isolation — overlay can’t be broken by host-site styles/CSP on any gated site. Full keyboard + mouse input trap — host shortcuts (space/k/f on YouTube, etc.) can’t fire underneath the overlay. Toolbar popup on/off toggle ( chrome.storage -backed) — turn it off instantly, no digging through chrome://extensions . How to test: Load unpacked via chrome://extensions → Developer mode → Load unpacked. Visit any gated site, let the breathing intro play (or press a key to skip), type into the canvas, hit 50 chars to unlock, try Escape to reset. Toggle off in the popup mid-session and confirm it melts away immediately. Time invested: about 6 hours in total.", "repo": "https://github.com/skornuta/grounded", "demo": "https://github.com/skornuta/grounded/releases/tag/v0.6.0"}]...
|
[{"post_id": 40423, "ts": "202 [{"post_id": 40423, "ts": "2026-08-03T22:34:30Z", "hours": 1.5839, "text": "devlog v0.6.0 ~1 hour and 28minutes logged i finally admitted to myself that the thing i was building was basically monkeytype with extra steps and a guilt trip attached. wpm counters, accuracy tracking, quote banks… all of it made the extension feel like a typing test. and the last thing i need when im opening youtube for the 40th time today is to feel like im being graded. the “productivity” version of this extension was stressing me out more than the doomscrolling was. so i deleted the whole concept and started over. what sucked the css pollution bug. outube and twitter kept leaking their styles into the overlay and centering was broken on like half the sites. it filled up the website console and it sucked to fix. found out the scroll lock used a :has(.fade-out) selector, which breaks if the site itself has any element with the class fade-out. the google fonts import just straight up does not load on x.com because of csp. the drift-up animation on the dissolving letters didnt work at all. css transforms dont apply to inline elements so the text was just fading in place this whole time and i thought it was drifting. there was also a random prime number sieve running on every single page load. no clue The Epiphany the epiphany was: stop measuring. the typing test framing WAS the problem. the extension is supposed to make you go outside. so now its just a blank void that asks “what’s making your mind busy right now?” and everything i type dissolves 1.5 seconds later. Just 50 characters so thats it i think what actually got built free-form canvas. zero quotes, zero wpm, zero accuracy, zero scores dissolving text engine — every char fades + blurs + drifts away exactly 1.5s after typing, and each char gets its own random drift vector so the text scatters like ash instead of disappearing as a block. invisible-ish 50 char threshold, then the whole overlay melts (fade + scale + unblur) and lets me back in full shadow dom isolation — closed root + a constructable stylesheet, which apparently is immune to page csp?? so host sites cant touch the overlay anymore. not youtube, not twitter roboto mono bundled INSIDE the extension (latin, latin-ext, cyrillic — yes cyrillic, i type in more than one language) so csp and offline cant hurt me anymore kept the breathing intro but its 6s now and any key skips it. and the skip key actually types itself instead of being eaten capture-phase key handling so youtube shortcuts dont fire behind the overlay while i type (no more accidental video pausing mid-vent) an actual working scroll lock this time reduced-motion support because accessibility is not optional removed the prime sieve. again. dont want to talk about it done with this project maybe one day ill keep working on it. release a 1.0.0…"}, {"post_id": 20539, "ts": "2026-07-02T04:52:47Z", "hours": 0.9978, "text": "Another hour of coding today, and it led to a massive realization. The 0.5.0 Wall (And Why It Sucked) I spent today’s session trying to fine tune the “Zen Governor” speed penalty and fixing the text wrapping bugs. While the words are wrapping better now, actually using the extension felt terrible. I type pretty fast, and using my own extension was making me so mad that I wanted to stop working on it. the screenshot I attached shows what the penalty was. basically, if you started writing too fast, it would add MORE to the poem. and it sucked. i tried playing around with the characters per minute timings but its just not very reliable and hard to perfect. If a mindfulness app makes you want to punch your keyboard, you’ve built the wrong app. the Epiphany The whole typing-test framework is inherently stressful. If the app is tracking your typos, grading your accuracy, and monitoring your speed, your brain stays stuck in “performance mode.” You arent relaxing, youre just playing this game of “type as fast as you can”. while its fun to type fast, its not the point of this project. So, I’m throwing the whole typing exam mechanic in the trash. The Next Step: The “Brain Dump” Overhaul (v0.6.0) For the next version, we are pivoting to something that actually feels therapeutic: Free-form Canvas: No more copying quotes perfectly. No more “incorrect” keys or rigid typing checks. You get an empty screen that asks: What’s making your mind busy right now? Dissolving Text: You type whatever raw thoughts are in your head. Exactly 1.5 seconds after you type a letter, it will smoothly fade, blur, and drift away into nothingness. Your stressful thoughts literally disappear from the screen. No Performance Metrics: Goodbye WPM, goodbye accuracy tracking. Just a simple counter showing you’ve let go of 50 characters. Once you type 50 characters of a raw brain dump, the overlay fades out, and the site unlocks. hopefully this 5.0 release will be the LAST, as this project is getting a little boring to work on… This completely gets rid of the annoying spacing and indexing bugs too, because the browser can just handle normal text input natively. Time to rebuild this into something that actually brings some peace."}, {"post_id": 19782, "ts": "2026-07-01T05:15:02Z", "hours": 2.0003, "text": "Well. I just spent 2 hours on the newest version. And for what… This is the official 0.4.0 release. It’s been a bit since my last devlog, and a lot has happened behind the scenes to finally bridge the gap between project and final extension. unfortunately, this is not the final. First, a quick reality check on the layout. In my last post, I said the text was perfectly centered. It was… on my blank HTML test page. But the second I actually started testing the extension on live websites like YouTube and Twitter, their styles completely leaked into my code and broke it. So ye, the centering is currently broken but ill fix it one day. maybe Here is a quick list of everything I actually changed and built since the last log: It actually unlocks the page now: Once you finish typing the very last letter, the overlay just fades away. pretty simple for now, i might make it like a melting effect? not sure yet Bolder text & a clean new font: Like I said in the last post, the old text was way too small and thin. I cranked it up to 34px, made it a lot bolder, and switched it to Google’s ‘Roboto Mono’ font so it looks way niccer. Multi-line poems: You can type through short stanzas now instead of just flat, one-line quotes. I completely broke the extension at first because the cursor kept getting stuck on the invisible line-break characters \\n , but I fixed the logic so it jumps lines. Escape to restart: Added a quick reset feature. Hitting the Escape key wipes your current progress and pulls up a fresh random quote. The Plan The code works well and everything feels incredibly smooth, but this 0.4.0 update is officially a halfway point and a place to rebuild. After staring at the live WPM and accuracy counters ticking up while I was testing it, I asked my dad how it looked. He made me realize that I am literaly building the exact opposite of what I actually want. The whole points of this Grounding project is to be a relaxing speed bump that encourages you to take a breath and get off your device. But by adding speed metrics and accuracy, I literally just cloned Monkeytype. instead of calming your brain, i filled it with the dopamine hit like any game. you just want to get back to your social media even FASTER. but what is next: For the next update, im making a big change. I am stripping away the stress metrics (byeWPM and accuracy) and shifting toward a more mindful experience. I am going to look into organic, calming color palettes and maybe even a mechanic that forces you to ‘slow down’ rather than type fast. Like, maybe if you type too fast, it generates more text for you to slow you down. Not really sure yet, but the speed type era is officially over. i also learnedd more markdown so from now on my dev logs will look better."}, {"post_id": 17200, "ts": "2026-06-27T22:12:18Z", "hours": 0.5753, "text": "huge update for grounding today. first off, i fixed the layout issues from the last post. the text is finally centered on the screen and actually readable against the dark background. but the biggest change is that the typing mechanic is officially here. I shifted the text rendering to individual character spans so i could track keyboard inputs character by character. it completely mirrors the monkeytype feel now. How it looks so far: characters start out a muted gray typing a correct key turns it a smooth offwhite typos turn a soft red i also got the custom caret (cursor) working. it has a decent transition so it slides smoothly between letters instead of just snapping rigidly, and it flashes slowly when you stop typing (the animation is still going to be worked on cuz its not the best). backspace support is fully functional too, so you can actually go backward and correct your mistakes. now, what’s next: making the overlay fade out beautifully once the quote is 100% complete also might make the text larger and bolder; its hard to read actually unlocking the restricted website after you finish typing expanding the quote pool with some longer, cleaner poems/quotes (i might try to get the quotes from some bank, not sure yet.)"}, {"post_id": 14728, "ts": "2026-06-23T22:50:26Z", "hours": 0.4344, "text": "Added some placeholder quotes. I have it randomly choose from a list of quotes that then displays on the overlay. Next update will make the text EASIER to see, and also i will add the ability to type and get into the social media. also its off center and ill fix that."}, {"post_id": 14695, "ts": "2026-06-23T21:54:36Z", "hours": 0.2797, "text": "Finally started the extension. Googles docs for creating extensions is amazing, theres a full guide. i matched the coloring from MonkeyType, because thats where my inspiration comes from. First devlog. Created the files, and created some small text to see how all of the work would turn out. Looks great so far. Features to add: Poems to auto show. Compatible with more websites. add the actual typing animations and everything 4, clean up the code cuz its messy"}]...
|
Title: Grounding by @skornuta | Stardance
Devlogs Title: Grounding by @skornuta | Stardance
Devlogs:
Finally started the extension. Googles docs for creating extensions is amazing, theres a full guide. i matched the coloring from MonkeyType, because thats where my inspiration comes from. First devlog. Created the files, and created some small text to see how all of the work would turn out. Looks great so far. Features to add: Poems to auto show. Compatible with more websites. add the actual typing animations and everything 4, clean up the code cuz its messy
Added some placeholder quotes. I have it randomly choose from a list of quotes that then displays on the overlay. Next update will make the text EASIER to see, and also i will add the ability to type and get into the social media. also its off center and ill fix that.
huge update for grounding today. first off, i fixed the layout issues from the last post. the text is finally centered on the screen and actually readable against the dark background. but the biggest change is that the typing mechanic is officially here. I shifted the text rendering to individual character spans so i could track keyboard inputs character by character. it completely mirrors the monkeytype feel now. How it looks so far: characters start out a muted gray typing a correct key turns it a smooth offwhite typos turn a soft red i also got the custom caret (cursor) working. it has a decent transition so it slides smoothly between letters instead of just snapping rigidly, and it flashes slowly when you stop typing (the animation is still going to be worked on cuz its not the best). backspace support is fully functional too, so you can actually go backward and correct your mistakes. now, what’s next: making the overlay fade out beautifully once the quote is 100% complete also might make the text larger and bolder; its hard to read actually unlocking the restricted website after you finish typing expanding the quote pool with some longer, cleaner poems/quotes (i might try to get the quotes from some bank, not sure yet.)
Well. I just spent 2 hours on the newest version. And for what… This is the official 0.4.0 release. It’s been a bit since my last devlog, and a lot has happened behind the scenes to finally bridge the gap between project and final extension. unfortunately, this is not the final. First, a quick reality check on the layout. In my last post, I said the text was perfectly centered. It was… on my blank HTML test page. But the second I actually started testing the extension on live websites like YouTube and Twitter, their styles completely leaked into my code and broke it. So ye, the centering is currently broken but ill fix it one day. maybe Here is a quick list of everything I actually changed and built since the last log: It actually unlocks the page now: Once you finish typing the very last letter, the overlay just fades away. pretty simple for now, i might make it like a melting effect? not sure yet Bolder text & a clean new font: Like I said in the last post, the old text was way too small and thin. I cranked it up to 34px, made it a lot bolder, and switched it to Google’s ‘Roboto Mono’ font so it looks way niccer. Multi-line poems: You can type through short stanzas now instead of just flat, one-line quotes. I completely broke the extension at first because the cursor kept getting stuck on the invisible line-break characters \n , but I fixed the logic so it jumps lines. Escape to restart: Added a quick reset feature. Hitting the Escape key wipes your current progress and pulls up a fresh random quote. The Plan The code works well and everything feels incredibly smooth, but this 0.4.0 update is officially a halfway point and a place to rebuild. After staring at the live WPM and accuracy counters ticking up while I was testing it, I asked my dad how it looked. He made me realize that I am literaly building the exact opposite of what I actually want. The whole points of this Grounding project is to be a relaxing speed bump that encourages you to take a breath and get off your device. But by adding speed metrics and accuracy, I literally just cloned Monkeytype. instead of calming your brain, i filled it with the dopamine hit like any game. you just want to get back to your social media even FASTER. but what is next: For the next update, im making a big change. I am stripping away the stress metrics (byeWPM and accuracy) and shifting toward a more mindful experience. I am going to look into organic, calming color palettes and maybe even a mechanic that forces you to ‘slow down’ rather than type fast. Like, maybe if you type too fast, it generates more text for you to slow you down. Not really sure yet, but the speed type era is officially over. i also learnedd more markdown so from now on my dev logs will look better.
Another hour of coding today, and it led to a massive realization. The 0.5.0 Wall (And Why It Sucked) I spent today’s session trying to fine tune the “Zen Governor” speed penalty and fixing the text wrapping bugs. While the words are wrapping better now, actually using the extension felt terrible. I type pretty fast, and using my own extension was making me so mad that I wanted to stop working on it. the screenshot I attached shows what the penalty was. basically, if you started writing too fast, it would add MORE to the poem. and it sucked. i tried playing around with the characters per minute timings but its just not very reliable and hard to perfect. If a mindfulness app makes you want to punch your keyboard, you’ve built the wrong app. the Epiphany The whole typing-test framework is inherently stressful. If the app is tracking your typos, grading your accuracy, and monitoring your speed, your brain stays stuck in “performance mode.” You arent relaxing, youre just playing this game of “type as fast as you can”. while its fun to type fast, its not the point of this project. So, I’m throwing the whole typing exam mechanic in the trash. The Next Step: The “Brain Dump” Overhaul (v0.6.0) For the next version, we are pivoting to something that actually feels therapeutic: Free-form Canvas: No more copying quotes perfectly. No more “incorrect” keys or rigid typing checks. You get an empty screen that asks: What’s making your mind busy right now? Dissolving Text: You type whatever raw thoughts are in your head. Exactly 1.5 seconds after you type a letter, it will smoothly fade, blur, and drift away into nothingness. Your stressful thoughts literally disappear from the screen. No Performance Metrics: Goodbye WPM, goodbye accuracy tracking. Just a simple counter showing you’ve let go of 50 characters. Once you type 50 characters of a raw brain dump, the overlay fades out, and the site unlocks. hopefully this 5.0 release will be the LAST, as this project is getting a little boring to work on… This completely gets rid of the annoying spacing and indexing bugs too, because the browser can just handle normal text input natively. Time to rebuild this into something that actually brings some peace.
devlog v0.6.0 ~1 hour and 28minutes logged i finally admitted to myself that the thing i was building was basically monkeytype with extra steps and a guilt trip attached. wpm counters, accuracy tracking, quote banks… all of it made the extension feel like a typing test. and the last thing i need when im opening youtube for the 40th time today is to feel like im being graded. the “productivity” version of this extension was stressing me out more than the doomscrolling was. so i deleted the whole concept and started over. what sucked the css pollution bug. outube and twitter kept leaking their styles into the overlay and centering was broken on like half the sites. it filled up the website console and it sucked to fix. found out the scroll lock used a :has(.fade-out) selector, which breaks if the site itself has any element with the class fade-out. the google fonts import just straight up does not load on x.com because of csp. the drift-up animation on the dissolving letters didnt work at all. css transforms dont apply to inline elements so the text was just fading in place this whole time and i thought it was drifting. there was also a random prime number sieve running on every single page load. no clue The Epiphany the epiphany was: stop measuring. the typing test framing WAS the problem. the extension is supposed to make you go outside. so now its just a blank void that asks “what’s making your mind busy right now?” and everything i type dissolves 1.5 seconds later. Just 50 characters so thats it i think what actually got built free-form canvas. zero quotes, zero wpm, zero accuracy, zero scores dissolving text engine — every char fades + blurs + drifts away exactly 1.5s after typing, and each char gets its own random drift vector so the text scatters like ash instead of disappearing as a block. invisible-ish 50 char threshold, then the whole overlay melts (fade + scale + unblur) and lets me back in full shadow dom isolation — closed root + a constructable stylesheet, which apparently is immune to page csp?? so host sites cant touch the overlay anymore. not youtube, not twitter roboto mono bundled INSIDE the extension (latin, latin-ext, cyrillic — yes cyrillic, i type in more than one language) so csp and offline cant hurt me anymore kept the breathing intro but its 6s now and any key skips it. and the skip key actually types itself instead of being eaten capture-phase key handling so youtube shortcuts dont fire behind the overlay while i type (no more accidental video pausing mid-vent) an actual working scroll lock this time reduced-motion support because accessibility is not optional removed the prime sieve. again. dont want to talk about it done with this project maybe one day ill keep working on it. release a 1.0.0…
Ships:
Q. What did you make? A. Chrome extension that gates distracting sites (YouTube, Reddit, IG, X, TikTok, Snapchat, Facebook) behind a calm brain-dump instead of a productivity test. It asks “what’s making your mind busy right now?”, every character you type dissolves 1.5s later, and 50 characters unlocks the site. Its just a forced pause to notice why you opened the app. Q. What was challenging? A. Getting real isolation from host-site CSS/CSP (solved with a closed Shadow DOM + constructable stylesheet + bundled fonts) and fully trapping input — YouTube’s shortcuts were still firing under the overlay until I trapped keydown / keypress / keyup plus the full mouse event set with stopImmediatePropagation . Q. What are you proud of? A. Killing three earlier “typing test” versions of this to land on the much simpler, much better idea: stop measuring, just let people empty out. 3 major QoL improvements: Full Shadow DOM isolation — overlay can’t be broken by host-site styles/CSP on any gated site. Full keyboard + mouse input trap — host shortcuts (space/k/f on YouTube, etc.) can’t fire underneath the overlay. Toolbar popup on/off toggle ( chrome.storage -backed) — turn it off instantly, no digging through chrome://extensions . How to test: Load unpacked via chrome://extensions → Developer mode → Load unpacked. Visit any gated site, let the breathing intro play (or press a key to skip), type into the canvas, hit 50 chars to unlock, try Escape to reset. Toggle off in the popup mid-session and confirm it melts away immediately. Time invested: about 6 hours in total....
|
1793537779.4886048
|
1793624179.4886048
|
|
27450
|
JBootloader by @jphwb | Stardance
|
jphwb
|
1
|
15.0
|
204
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T06:38:10Z", "hours": 15.0, "multiplier": 13.86, "payout": 204, "blessing": "neutral", "text": "JBootloader is a custom bootloader and kernel with a shell that has basic functionality made in c and assembly x86_64. The kernel currently can load a fat-16 filesystem image in read only mode and commands such as cat and ls can be used. Everything that is required to boot is all compiled into os.bin (Releases) including the kernel, stage1/stage2.asm and the fat16 filesystem which is designed to work on QEMU. This project isnt made to be actually used (obviously) but its more of a learning journey helping me learn how a bootloader and kernel work. Initially I wanted to just make a bootloader like GRUB that could boot any operating system but at the time I was overestimating my skills in asm so I decided to steer off and make a simple kernel instead. The challenging part was the agonizing “why won’t the fat-16 partition show up” because it just would show up no matter what I did so I pulled up gemini and put in my fat_16.c code and asked it to edit my code to push out any debugging info to the vm so that I’d be able to see what went wrong, using this I overcame my problems. Also at the start I spent almost an hour trying to find an issue since my C/C++ extension in VS wasn’t working and my build command just refused to tell me what was wrong but turns out I did #include print.c :sob To test the project I have all the instructions on the release page linked on the demo button and the download to os.bin which includes all the parts with the assembly bootloader, the kernel and the filesystem’s .img file. You also require qemu to be installed and if your on windows PLEASE just use wsl it’s a pain to use qemu on windows natively.", "repo": "https://github.com/jphwba/jbootloader", "demo": "https://github.com/jphwba/jbootloader/releases/tag/v1.1"}]...
|
[{"post_id": 48842, "ts": "202 [{"post_id": 48842, "ts": "2026-08-17T12:01:13Z", "hours": 7.0572, "text": "So what I implemented was a keyboard event queue, a shell, IDE driver for a FAT-16 readonly filesystem and a preemptive scheduler. I didn’t add a true ring3 userspace in this because I need GDT ring transitions and a syscall ABI that is annoying and I don’t have the legal brain capacity in my skillset to do it. This is now capable of switching into 32-bit protected mode and directly loads the C kernel into memory. I also made cleanups to kernel.c/h and fixed some minor build errors."}, {"post_id": 21713, "ts": "2026-07-03T20:08:33Z", "hours": 4.1536, "text": "Kernel Refactor One of the biggest changes in this update was reorganising the kernel into individual components rather than keeping everything inside a single source file.The project now contains dedicated modules for: VGA text output Interrupt Descriptor Table (IDT) Interrupt Service Routines (ISR) Hardware Interrupt Requests (IRQ) Programmable Interrupt Controller (PIC) Programmable Interval Timer (PIT) Keyboard driver Low-level I/O helpers Interrupt Descriptor Table The kernel now builds and installs a complete Interrupt Descriptor Table (IDT) containing all 256 entries. CPU exceptions (ISR 0-31) are fully registered, while IRQs from the Programmable Interrupt Controller occupy vectors 32-47 after remapping. Once the IDT has been loaded using lidt, the kernel is capable of safely responding to both processor exceptions and hardware interrupts. CPU Exception Handling Proper exception handling has now been implemented. Instead of the CPU immediately crashing with no feedback, exceptions are caught and displayed on screen with useful debugging information including: Exception name Interrupt number Error codeInstruction pointer (EIP) Code segment CPU flags After reporting the error the kernel safely halts, making debugging much easier during development. Programmable Interrupt Controller (PIC) The legacy PIC is now fully initialised and remapped away from the CPU exception vectors .Support has also been added for: Sending End Of Interrupt (EOI) commands Masking individual IRQ lines Unmasking IRQs when drivers are ready Programmable Interval Timer (PIT) The PIT has now been configured as the kernel’s first hardware timer. It generates periodic interrupts at a configurable frequency and maintains a continuously increasing tick counter. While simple for now, this timer will eventually become the basis for delays Keyboard Driver Perhaps the most noticeable improvement in this update is the addition of the first real hardware driver. The keyboard driver: Receives hardware interrupts on IRQ1 Reads raw PS/2 scancodes Translates scancodes into ASCII characters Buffers incoming keystrokes Allows the kernel to read characters without directly accessing hardware every time Improved VGA Terminal The VGA text driver has also been rewritten into its own module. I added Cursor updates, Automatic scrolling, Backspace support, Colour control, Decimal output and Hexadecimal output"}, {"post_id": 19946, "ts": "2026-07-01T12:11:26Z", "hours": 1.2294, "text": "I rewrote the bootloader into two stages. Each item in stage 2 is Disk loader: disk_read_lba in stage2 is fully reusable (LBA, count, drive, destination segment:offset via a Disk Address Packet), checks for INT 13h extensions first, and retries 3 times with a disk reset between attempts, same pattern in stage1’s simpler loader. Print routine: print_string prints status lines at each stage (“loading kernel…”, “enabling A20…”, etc) plus explicit disk error and unsupported extensions messages. A20: now enabled in real mode before the protected mode switch, using the BIOS function and the fast A20 gate together. Boot drive: saved from DL at both stage1 and stage2 entry rather than hardcoded. Magic numbers: sector counts, load addresses, and buffer addresses all moved into src/config.inc, shared by both stages. E820 memory map: collected in real mode into a fixed buffer before switching to protected mode. Boot info struct: built in 32-bit mode and handed to the kernel via EBX. Matching BootInfo struct is in kernel.h. Load/execute address mismatch: The kernel now loads to physical 0x10000 in real mode, then once in flat 32-bit protected mode, stage2 copies it to 0x100000 with rep movsd before jumping there, so the linker script’s link address and the actual jump target now agree."}, {"post_id": 19889, "ts": "2026-07-01T09:57:18Z", "hours": 1.8975, "text": "Got the bootloader to load kernel.c which is empty but you can see in the gdb log in the terminal that it does load void kernel_main. Next I am going to rewrite the bootloader into a two stage bootloader so it can have a print routine, retrying disk reads, A20 handling and an E820 memory map. Since all of this isnt possible in just 510 bytes (last two bytes reserved for the boot sector signature being 0x55 and 0xAA) I will split it into two stages."}, {"post_id": 17432, "ts": "2026-06-28T06:35:23Z", "hours": 0.3608, "text": "Created a basic assembly project that prints hello world to the terminal and tested it by booting the built .bin file in qemu."}]...
|
Title: JBootloader by @jphwb | Stardance
Devlogs: Title: JBootloader by @jphwb | Stardance
Devlogs:
Created a basic assembly project that prints hello world to the terminal and tested it by booting the built .bin file in qemu.
Got the bootloader to load kernel.c which is empty but you can see in the gdb log in the terminal that it does load void kernel_main. Next I am going to rewrite the bootloader into a two stage bootloader so it can have a print routine, retrying disk reads, A20 handling and an E820 memory map. Since all of this isnt possible in just 510 bytes (last two bytes reserved for the boot sector signature being 0x55 and 0xAA) I will split it into two stages.
I rewrote the bootloader into two stages. Each item in stage 2 is Disk loader: disk_read_lba in stage2 is fully reusable (LBA, count, drive, destination segment:offset via a Disk Address Packet), checks for INT 13h extensions first, and retries 3 times with a disk reset between attempts, same pattern in stage1’s simpler loader. Print routine: print_string prints status lines at each stage (“loading kernel…”, “enabling A20…”, etc) plus explicit disk error and unsupported extensions messages. A20: now enabled in real mode before the protected mode switch, using the BIOS function and the fast A20 gate together. Boot drive: saved from DL at both stage1 and stage2 entry rather than hardcoded. Magic numbers: sector counts, load addresses, and buffer addresses all moved into src/config.inc, shared by both stages. E820 memory map: collected in real mode into a fixed buffer before switching to protected mode. Boot info struct: built in 32-bit mode and handed to the kernel via EBX. Matching BootInfo struct is in kernel.h. Load/execute address mismatch: The kernel now loads to physical 0x10000 in real mode, then once in flat 32-bit protected mode, stage2 copies it to 0x100000 with rep movsd before jumping there, so the linker script’s link address and the actual jump target now agree.
Kernel Refactor One of the biggest changes in this update was reorganising the kernel into individual components rather than keeping everything inside a single source file.The project now contains dedicated modules for: VGA text output Interrupt Descriptor Table (IDT) Interrupt Service Routines (ISR) Hardware Interrupt Requests (IRQ) Programmable Interrupt Controller (PIC) Programmable Interval Timer (PIT) Keyboard driver Low-level I/O helpers Interrupt Descriptor Table The kernel now builds and installs a complete Interrupt Descriptor Table (IDT) containing all 256 entries. CPU exceptions (ISR 0-31) are fully registered, while IRQs from the Programmable Interrupt Controller occupy vectors 32-47 after remapping. Once the IDT has been loaded using lidt, the kernel is capable of safely responding to both processor exceptions and hardware interrupts. CPU Exception Handling Proper exception handling has now been implemented. Instead of the CPU immediately crashing with no feedback, exceptions are caught and displayed on screen with useful debugging information including: Exception name Interrupt number Error codeInstruction pointer (EIP) Code segment CPU flags After reporting the error the kernel safely halts, making debugging much easier during development. Programmable Interrupt Controller (PIC) The legacy PIC is now fully initialised and remapped away from the CPU exception vectors .Support has also been added for: Sending End Of Interrupt (EOI) commands Masking individual IRQ lines Unmasking IRQs when drivers are ready Programmable Interval Timer (PIT) The PIT has now been configured as the kernel’s first hardware timer. It generates periodic interrupts at a configurable frequency and maintains a continuously increasing tick counter. While simple for now, this timer will eventually become the basis for delays Keyboard Driver Perhaps the most noticeable improvement in this update is the addition of the first real hardware driver. The keyboard driver: Receives hardware interrupts on IRQ1 Reads raw PS/2 scancodes Translates scancodes into ASCII characters Buffers incoming keystrokes Allows the kernel to read characters without directly accessing hardware every time Improved VGA Terminal The VGA text driver has also been rewritten into its own module. I added Cursor updates, Automatic scrolling, Backspace support, Colour control, Decimal output and Hexadecimal output
So what I implemented was a keyboard event queue, a shell, IDE driver for a FAT-16 readonly filesystem and a preemptive scheduler. I didn’t add a true ring3 userspace in this because I need GDT ring transitions and a syscall ABI that is annoying and I don’t have the legal brain capacity in my skillset to do it. This is now capable of switching into 32-bit protected mode and directly loads the C kernel into memory. I also made cleanups to kernel.c/h and fixed some minor build errors.
Ships:
JBootloader is a custom bootloader and kernel with a shell that has basic functionality made in c and assembly x86_64. The kernel currently can load a fat-16 filesystem image in read only mode and commands such as cat and ls can be used. Everything that is required to boot is all compiled into os.bin (Releases) including the kernel, stage1/stage2.asm and the fat16 filesystem which is designed to work on QEMU. This project isnt made to be actually used (obviously) but its more of a learning journey helping me learn how a bootloader and kernel work. Initially I wanted to just make a bootloader like GRUB that could boot any operating system but at the time I was overestimating my skills in asm so I decided to steer off and make a simple kernel instead. The challenging part was the agonizing “why won’t the fat-16 partition show up” because it just would show up no matter what I did so I pulled up gemini and put in my fat_16.c code and asked it to edit my code to push out any debugging info to the vm so that I’d be able to see what went wrong, using this I overcame my problems. Also at the start I spent almost an hour trying to find an issue since my C/C++ extension in VS wasn’t working and my build command just refused to tell me what was wrong but turns out I did #include print.c :sob To test the project I have all the instructions on the release page linked on the demo button and the download to os.bin which includes all the parts with the assembly bootloader, the kernel and the filesystem’s .img file. You also require qemu to be installed and if your on windows PLEASE just use wsl it’s a pain to use qemu on windows natively....
|
1793537782.578875
|
1793624182.578875
|
|
55411
|
personal page called grid by @nacho | Stardance
|
nacho
|
1
|
2.96
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T00:38:48Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made my personal site i am going to add more secctions more color s i only wated 2 hours because i known a lot of html so it was easy i only need to lern css next time i will use javascript i like the result but i will add some things later", "repo": "https://github.com/nachogzalazar-blip/grid", "demo": "https://nachogzalazar-blip.github.io/grid/"}]...
|
[{"post_id": 58909, "ts": "202 [{"post_id": 58909, "ts": "2026-08-31T14:00:38Z", "hours": 0.3033, "text": "now i only have edites the read.md from github i added a english seccion"}, {"post_id": 58529, "ts": "2026-08-30T23:25:26Z", "hours": 0.6544, "text": "now i’am working in a selector for the language so who want to change between english and spanish can do it an i added more things to the time line"}, {"post_id": 57723, "ts": "2026-08-29T23:54:46Z", "hours": 1.0772, "text": "Hoy avancé con la estructura HTML del proyecto. Ya tengo armado el principal, que va a servir como contenedor central para el contenido de la página. A partir de acá voy a ir agregando las secciones internas y el styling con CSS."}, {"post_id": 56940, "ts": "2026-08-28T23:31:42Z", "hours": 0.4414, "text": "i am bulding my personal website i am going to talk about things i like and the projects i work on"}]...
|
Title: personal page called grid by @nacho | Stard Title: personal page called grid by @nacho | Stardance
Devlogs:
i am bulding my personal website i am going to talk about things i like and the projects i work on
Hoy avancé con la estructura HTML del proyecto. Ya tengo armado el principal, que va a servir como contenedor central para el contenido de la página. A partir de acá voy a ir agregando las secciones internas y el styling con CSS.
now i’am working in a selector for the language so who want to change between english and spanish can do it an i added more things to the time line
now i only have edites the read.md from github i added a english seccion
Ships:
i made my personal site i am going to add more secctions more color s i only wated 2 hours because i known a lot of html so it was easy i only need to lern css next time i will use javascript i like the result but i will add some things later...
|
1793537784.9589417
|
1793624184.9589417
|
|
51827
|
My own site! by @ArmanMalik | Stardance
|
ArmanMalik
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T12:09:16Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "made this website as my personal portfolio and a place where I can show what I’m learning and building. I wanted something simple but still looked good and felt like my own. It has sections about me, the skills I’m learning, some of my projects, my goal of becoming a cloud engineer, and ways to contact me. I built the site with HTML, CSS, and JavaScript and added things like animations, a mobile menu, and a responsive layout so it works on phones too. This was also a chance for me to practice turning an idea into an actual website and getting it ready to be deployed publicly.", "repo": "https://github.com/Armaan246-svg/firstsite", "demo": "https://websitefirstn.netlify.app/"}]...
|
[{"post_id": 53007, "ts": "202 [{"post_id": 53007, "ts": "2026-08-23T12:07:41Z", "hours": 2.3825, "text": "I am basically working on my first project which is kind of boring in fact it is boring but i guess that counts as i am learning and next time i will come up with something big cause i am pretty skilled in python,flast and html."}]...
|
Title: My own site! by @ArmanMalik | Stardance
De Title: My own site! by @ArmanMalik | Stardance
Devlogs:
I am basically working on my first project which is kind of boring in fact it is boring but i guess that counts as i am learning and next time i will come up with something big cause i am pretty skilled in python,flast and html.
Ships:
made this website as my personal portfolio and a place where I can show what I’m learning and building. I wanted something simple but still looked good and felt like my own. It has sections about me, the skills I’m learning, some of my projects, my goal of becoming a cloud engineer, and ways to contact me. I built the site with HTML, CSS, and JavaScript and added things like animations, a mobile menu, and a responsive layout so it works on phones too. This was also a chance for me to practice turning an idea into an actual website and getting it ready to be deployed publicly....
|
1793537787.9322586
|
1793624187.9322586
|
|
36674
|
3x5 Macropad by @turtletabletop | Stardance
|
turtletabletop
|
1
|
0.3
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-27T19:24:41Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a 3x5 macropad for the game Sky: Children of the Light. In this game, there are instruments you can play, and each instrument has 15 buttons for two octaves, which are placed in a 3-row, 5-column grid. My macropad seeks to emulate that in real life, having physical buttons you can press rather than digital ones in-game. You can go see the CAD for this macropad on Onshape, where I designed the shell for this macropad, at this link ! Some features include: 15 programmable keys with QMK firmware 15 hotswappable sockets compatible with MX-style switches 3 degree tilt for more comfortable access to the keys a 32x128 programmable OLED screen rad silkscreen art The most difficult part of this was probably the case as I spent the most time on it, because I had to redesign it to be less complex since I realized that my PCB dimensions would not work.", "repo": "https://github.com/turtletabletop/customkeyboard", "demo": ""}]...
|
[{"post_id": 39854, "ts": "202 [{"post_id": 39854, "ts": "2026-08-03T03:40:42Z", "hours": 0.3, "text": "I fixed the tolerances of my case so that there’s like 1.04mm of space between the case and the PCB. Previously, the space between this gap was 0.15mm and uneven with the other side. Now the tolerances are even on both sides of the case!"}, {"post_id": 33319, "ts": "2026-07-23T03:52:31Z", "hours": 0.6711, "text": "added more trademarked graphics to the back (awesome!)"}, {"post_id": 33304, "ts": "2026-07-23T03:08:48Z", "hours": 2.9681, "text": "I have no idea what i’m doing but i was able to get qmk setup with a lot of patience and waiting for files to load, and now i have a rudimentary firmware to push holy freaking sheet basically went through the pricing for the macroboard and found out that i sized my pcb wrong so i was getting a much higher quote at jlcpcb than what i was actually supposed to get, so i had to redo the edge cuts for the pcb i was also worried about the clear part of my mounting board so i found out that jlcpcb also 3d prints resin parts so hopefully i can use their services because it was pretty cheap from what i saw also about resizing my pcb, i had to completely redo the case. thankfully, i’ve learned from my past experiences and actually know what i want. basically i was walking blind through my case last time which helped me know a lot about what i needed for my case this time, and decided to simplify it a ton more because the case was pretty complicated last time. also i know how to simplify the pcb so that it actually runs on my onshape this time :)"}, {"post_id": 32611, "ts": "2026-07-21T21:53:42Z", "hours": 1.95, "text": "added more decals and worked on merging the parts for the case so that they’re more easily printable"}, {"post_id": 32515, "ts": "2026-07-21T19:05:24Z", "hours": 1.8542, "text": "added the usb c cutout and heatset/screw holes"}, {"post_id": 32443, "ts": "2026-07-21T17:12:12Z", "hours": 1.6464, "text": "spent a little bit of time trying to figure out the coloring of this case"}, {"post_id": 32154, "ts": "2026-07-21T03:50:14Z", "hours": 8.3711, "text": "cad fries my brain and i am very tired of it trying to figure out the layering for this was hard and mind bending because i have two clear acrylic mounting plates one for the switches and one for the oled screen and to cover the seeed rp2040 if you want more very vague details about my process it’s in my journal in the github repository in 6 hours i was able to do this and it took forever i hope the firmware doesn’t take this long it took me 2 hours to try to load a faster version of the pcb into onshape that still takes like 5 seconds to load every time i change something"}, {"post_id": 31616, "ts": "2026-07-20T05:11:50Z", "hours": 0.3061, "text": "WAIT HOLY CRAP I FIGURED OUT THE 3D MODELS LETS GO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! what I did wrong was that I put the kailh sockets on the wrong freaking side oops and so i had to rewire my entire pcb for the third time this entire project after flipping most of the sockets D: but it worked out in the end because I was able to get the 3d model working not just for the kailh sockets but for the mx style switches and simple keycaps this makes my life so much easier… i was struggling so much with the models in cad but then kicad saved my life because i was searching google randomly when i figured it out forgot to record a bit of it but it doesn’t really matter wahoo"}, {"post_id": 31561, "ts": "2026-07-20T02:16:49Z", "hours": 6.0056, "text": "i took so long to make this pcb bruh and i didn’t know how to export it for so long to cad until i realized i was being stupid couple things i did to the pcb: added better deco added the oled screen replaced all the switches with kailh sockets made 3 holes for the screws to go through and resized the pcb ive also found ideal candidates for switches to insert in (if possible) hey at least i get to work on cad ._. im kinda bad at it it’s going to take a while also i don’t have a dedicated gpu so it’s going to take a while"}, {"post_id": 31049, "ts": "2026-07-19T04:03:31Z", "hours": 1.2, "text": "was working on a plan for the next ideas of how to improve on the rough idea worked on today Trying to think about an aesthetically pleasing keyboard, figuring out the keyboard logistics of the keys, key caps, color, design considerations defo want something starlight colored similar to this image… I hope it looks good"}, {"post_id": 30770, "ts": "2026-07-18T17:13:40Z", "hours": 4.28, "text": "I don’t really know what I’m doing but I’m trying my best Today I worked on: creating the PCB for the board Figured out what a keyboard matrix is (sorta) Wired rows and columns to connect the keys and diodes to a RP2040 zero Figured out how to make art on PCBs Arranged the keys and the RP2040 and the art on the PCB Created a rudimentary case for the PCB Used Onshape for this I don’t know if the sizing is correct I’m mainly guessing"}]...
|
Title: 3x5 Macropad by @turtletabletop | Stardance Title: 3x5 Macropad by @turtletabletop | Stardance
Devlogs:
I don’t really know what I’m doing but I’m trying my best Today I worked on: creating the PCB for the board Figured out what a keyboard matrix is (sorta) Wired rows and columns to connect the keys and diodes to a RP2040 zero Figured out how to make art on PCBs Arranged the keys and the RP2040 and the art on the PCB Created a rudimentary case for the PCB Used Onshape for this I don’t know if the sizing is correct I’m mainly guessing
was working on a plan for the next ideas of how to improve on the rough idea worked on today Trying to think about an aesthetically pleasing keyboard, figuring out the keyboard logistics of the keys, key caps, color, design considerations defo want something starlight colored similar to this image… I hope it looks good
i took so long to make this pcb bruh and i didn’t know how to export it for so long to cad until i realized i was being stupid couple things i did to the pcb: added better deco added the oled screen replaced all the switches with kailh sockets made 3 holes for the screws to go through and resized the pcb ive also found ideal candidates for switches to insert in (if possible) hey at least i get to work on cad ._. im kinda bad at it it’s going to take a while also i don’t have a dedicated gpu so it’s going to take a while
WAIT HOLY CRAP I FIGURED OUT THE 3D MODELS LETS GO !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! what I did wrong was that I put the kailh sockets on the wrong freaking side oops and so i had to rewire my entire pcb for the third time this entire project after flipping most of the sockets D: but it worked out in the end because I was able to get the 3d model working not just for the kailh sockets but for the mx style switches and simple keycaps this makes my life so much easier… i was struggling so much with the models in cad but then kicad saved my life because i was searching google randomly when i figured it out forgot to record a bit of it but it doesn’t really matter wahoo
cad fries my brain and i am very tired of it trying to figure out the layering for this was hard and mind bending because i have two clear acrylic mounting plates one for the switches and one for the oled screen and to cover the seeed rp2040 if you want more very vague details about my process it’s in my journal in the github repository in 6 hours i was able to do this and it took forever i hope the firmware doesn’t take this long it took me 2 hours to try to load a faster version of the pcb into onshape that still takes like 5 seconds to load every time i change something
spent a little bit of time trying to figure out the coloring of this case
added the usb c cutout and heatset/screw holes
added more decals and worked on merging the parts for the case so that they’re more easily printable
I have no idea what i’m doing but i was able to get qmk setup with a lot of patience and waiting for files to load, and now i have a rudimentary firmware to push holy freaking sheet basically went through the pricing for the macroboard and found out that i sized my pcb wrong so i was getting a much higher quote at jlcpcb than what i was actually supposed to get, so i had to redo the edge cuts for the pcb i was also worried about the clear part of my mounting board so i found out that jlcpcb also 3d prints resin parts so hopefully i can use their services because it was pretty cheap from what i saw also about resizing my pcb, i had to completely redo the case. thankfully, i’ve learned from my past experiences and actually know what i want. basically i was walking blind through my case last time which helped me know a lot about what i needed for my case this time, and decided to simplify it a ton more because the case was pretty complicated last time. also i know how to simplify the pcb so that it actually runs on my onshape this time :)
added more trademarked graphics to the back (awesome!)
I fixed the tolerances of my case so that there’s like 1.04mm of space between the case and the PCB. Previously, the space between this gap was 0.15mm and uneven with the other side. Now the tolerances are even on both sides of the case!
Ships:
I made a 3x5 macropad for the game Sky: Children of the Light. In this game, there are instruments you can play, and each instrument has 15 buttons for two octaves, which are placed in a 3-row, 5-column grid. My macropad seeks to emulate that in real life, having physical buttons you can press rather than digital ones in-game. You can go see the CAD for this macropad on Onshape, where I designed the shell for this macropad, at this link ! Some features include: 15 programmable keys with QMK firmware 15 hotswappable sockets compatible with MX-style switches 3 degree tilt for more comfortable access to the keys a 32x128 programmable OLED screen rad silkscreen art The most difficult part of this was probably the case as I spent the most time on it, because I had to redesign it to be less complex since I realized that my PCB dimensions would not work....
|
1793537789.9955978
|
1793624189.9955978
|
|
59205
|
Crypto Clicker by @arpanshah102 | Stardance
|
arpanshah102
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-11-01T03:26:37Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is a React web game I’ve made. It takes the basic principles of cookie clicker but changes many of it’s features. (Really the only cookie clicker portion is the crypto coin itself.) You click a coin to gain crypto. Use that to mine more crypto or overclock each coin you own. That’s all there is so far but more features will be added. (This game is only about half complete because I haven’t had my laptop for the past few weeks.)", "repo": "https://github.com/Arpan-Shah-102/crypto-clicker", "demo": "https://crypto-clicker-nu.vercel.app/"}]...
|
[{"post_id": 86160, "ts": "202 [{"post_id": 86160, "ts": "2026-11-01T03:23:54Z", "hours": 0.8156, "text": "This devlog is a bit weird. I’m writing this after a long pause (due to me not having my computer) and I can’t pull up my version of the site (because I still don’t have my computer) so I’m not really sure what I changed. I know there are some bug fixes and I started working on the NFTs section I believe but I’m not certain."}, {"post_id": 66324, "ts": "2026-09-12T02:58:27Z", "hours": 0.2942, "text": "Today, I finished working on the overclocking section. I also added a new overclock level stat. Lastly, I added a settings section where you can reset the game if you want."}, {"post_id": 65725, "ts": "2026-09-11T02:08:19Z", "hours": 0.2919, "text": "Today, I finished the overclocking UI. Tomorrow, I should be done with its functionality."}, {"post_id": 65122, "ts": "2026-09-10T01:15:12Z", "hours": 0.3047, "text": "Today, I created the stats section (for what few stats I have). I also got started on the overclocking feature which will allow you to make your coins you bought better."}, {"post_id": 64565, "ts": "2026-09-09T02:23:46Z", "hours": 0.3983, "text": "Today, I added the functionality of the buy coins section, I’m probably gonna work on the stats section tomorrow."}, {"post_id": 63975, "ts": "2026-09-08T02:10:42Z", "hours": 0.3061, "text": "Today, I finished working on the UI of the buy coins section. Tomorrow, I will finish the functionality."}, {"post_id": 63317, "ts": "2026-09-07T02:12:06Z", "hours": 0.3511, "text": "Today, I started work on implementing the buying coins feature. I should be done with the UI by tomorrow."}, {"post_id": 63283, "ts": "2026-09-07T01:02:42Z", "hours": 2.5803, "text": "I created the basic clicking gameplay and UI. I will work on other aspects like the menu, achievements, upgrades, etc. later."}]...
|
Title: Crypto Clicker by @arpanshah102 | Stardance Title: Crypto Clicker by @arpanshah102 | Stardance
Devlogs:
I created the basic clicking gameplay and UI. I will work on other aspects like the menu, achievements, upgrades, etc. later.
Today, I started work on implementing the buying coins feature. I should be done with the UI by tomorrow.
Today, I finished working on the UI of the buy coins section. Tomorrow, I will finish the functionality.
Today, I added the functionality of the buy coins section, I’m probably gonna work on the stats section tomorrow.
Today, I created the stats section (for what few stats I have). I also got started on the overclocking feature which will allow you to make your coins you bought better.
Today, I finished the overclocking UI. Tomorrow, I should be done with its functionality.
Today, I finished working on the overclocking section. I also added a new overclock level stat. Lastly, I added a settings section where you can reset the game if you want.
This devlog is a bit weird. I’m writing this after a long pause (due to me not having my computer) and I can’t pull up my version of the site (because I still don’t have my computer) so I’m not really sure what I changed. I know there are some bug fixes and I started working on the NFTs section I believe but I’m not certain.
Ships:
This is a React web game I’ve made. It takes the basic principles of cookie clicker but changes many of it’s features. (Really the only cookie clicker portion is the crypto coin itself.) You click a coin to gain crypto. Use that to mine more crypto or overclock each coin you own. That’s all there is so far but more features will be added. (This game is only about half complete because I haven’t had my laptop for the past few weeks.)...
|
1793537791.3155942
|
1793624191.3155942
|
|
39220
|
Personal site Mission by @Bennediktiner | Stardanc Personal site Mission by @Bennediktiner | Stardance...
|
Bennediktiner
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T18:52:00Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "See Devlog 0 for Shipping content Made by Following along with the Stardance Personal Site Workshop. Made with CSS and HTML", "repo": "https://github.com/Bennediktiner/Personal-Site", "demo": "https://bennediktiner.github.io/Personal-Site/"}]...
|
[{"post_id": 34205, "ts": "202 [{"post_id": 34205, "ts": "2026-07-24T18:40:16Z", "hours": 1.0614, "text": "Personal Site Devlog 0 (devlog 0 because i might work on this later and all the work so far was part of the workshhop) Made by following along with the Stardance Workshop, using an HTML and CSS file. Content is currently irrelevant, just something to fill space and try it out."}]...
|
Title: Personal site Mission by @Bennediktiner | S Title: Personal site Mission by @Bennediktiner | Stardance
Devlogs:
Personal Site Devlog 0 (devlog 0 because i might work on this later and all the work so far was part of the workshhop) Made by following along with the Stardance Workshop, using an HTML and CSS file. Content is currently irrelevant, just something to fill space and try it out.
Ships:
See Devlog 0 for Shipping content Made by Following along with the Stardance Personal Site Workshop. Made with CSS and HTML...
|
1793537793.4120145
|
1793624193.4120145
|
|
40132
|
My very own WebOS by @rizz | Stardance
|
rizz
|
2
|
2.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T07:52:35Z", "hours": 1.0, "multiplier": 8.57, "payout": 5, "blessing": "neutral", "text": "I basically built a little computer that lives in one browser tab. It is called breadboardOS. The whole desktop looks like a real solderless breadboard: cream board, red and blue power rails, black chip icons, that warm amber glow. No frameworks, no server. Just HTML, CSS, and a pile of JavaScript. I open the file and it boots. Inside it there is a proper window manager, a start menu, a taskbar, files that actually save, a notepad, a terminal with history, a calculator, paint, snake, a scope, a tiny synth, a clock, sticky notes, a calendar with day notes, unit conversion and a password generator, settings, the works. There is even a browser that does not pretend iframes work everywhere. It has a reader mode so pages can actually show up. And there is a bug that lives on the desktop, follows the cursor, gets hungry, and I can feed it. What was hard was mostly the boring but real stuff. Getting a browser to work when half the internet refuses to load inside an iframe. Editing a giant single file without breaking the whole thing. I did break it once with a syntax error in the middle of a string. Keeping the look exactly the same while bolting on a ton of new behavior. Making data stick around after a refresh without any backend. What was fun was the theme actually landing. It does not feel like a generic web demo with a skin on it. The power rail as a taskbar, the chips as icons, the square wave beeps: it holds together. The bug is ridiculous and kind of perfect. Opening the scope next to the synth feels right for something that pretends it is electronics. And the fact that the entire OS is one file I can just open is still a good joke. So yeah: a small self contained desktop with a strong personality, built the hard way, and somehow still charming.", "repo": "https://github.com/STEVEALEX-source/breadboardOS", "demo": "https://stevealex-source.github.io/breadboardOS/"}, {"ship_num": 2, "ts": "2026-07-28T04:42:38Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Took me so time ahhhh… so i changed the UI again as usual and ig the fun part was getting frustrated every single time and yaa idk how to add regional clock so if anyone can help me……Pleawse", "repo": "https://github.com/STEVEALEX-source/breadboardOS", "demo": "https://stevealex-source.github.io/breadboardOS/"}]...
|
[{"post_id": 38038, "ts": "202 [{"post_id": 38038, "ts": "2026-07-31T06:19:40Z", "hours": 0.5364, "text": "so i am now working on a webOS that looks like a breadboard and i added some new apps and some new functions now i just have to write the logic"}, {"post_id": 36212, "ts": "2026-07-28T04:34:51Z", "hours": 0.4725, "text": "devloggggggg…… so finally i rewrote the code and changed the UI and added some features like new wallpapers and a simple terminal and sound effects"}, {"post_id": 35697, "ts": "2026-07-27T09:36:33Z", "hours": 0.2694, "text": "devlog….. so finally the minimize and full screen buttons are working"}, {"post_id": 35677, "ts": "2026-07-27T08:41:13Z", "hours": 0.3203, "text": "a simple and light easy to use webOS"}]...
|
Title: My very own WebOS by @rizz | Stardance
Dev Title: My very own WebOS by @rizz | Stardance
Devlogs:
a simple and light easy to use webOS
devlog….. so finally the minimize and full screen buttons are working
devloggggggg…… so finally i rewrote the code and changed the UI and added some features like new wallpapers and a simple terminal and sound effects
so i am now working on a webOS that looks like a breadboard and i added some new apps and some new functions now i just have to write the logic
Ships:
Took me so time ahhhh… so i changed the UI again as usual and ig the fun part was getting frustrated every single time and yaa idk how to add regional clock so if anyone can help me……Pleawse
I basically built a little computer that lives in one browser tab. It is called breadboardOS. The whole desktop looks like a real solderless breadboard: cream board, red and blue power rails, black chip icons, that warm amber glow. No frameworks, no server. Just HTML, CSS, and a pile of JavaScript. I open the file and it boots. Inside it there is a proper window manager, a start menu, a taskbar, files that actually save, a notepad, a terminal with history, a calculator, paint, snake, a scope, a tiny synth, a clock, sticky notes, a calendar with day notes, unit conversion and a password generator, settings, the works. There is even a browser that does not pretend iframes work everywhere. It has a reader mode so pages can actually show up. And there is a bug that lives on the desktop, follows the cursor, gets hungry, and I can feed it. What was hard was mostly the boring but real stuff. Getting a browser to work when half the internet refuses to load inside an iframe. Editing a giant single file without breaking the whole thing. I did break it once with a syntax error in the middle of a string. Keeping the look exactly the same while bolting on a ton of new behavior. Making data stick around after a refresh without any backend. What was fun was the theme actually landing. It does not feel like a generic web demo with a skin on it. The power rail as a taskbar, the chips as icons, the square wave beeps: it holds together. The bug is ridiculous and kind of perfect. Opening the scope next to the synth feels right for something that pretends it is electronics. And the fact that the entire OS is one file I can just open is still a good joke. So yeah: a small self contained desktop with a strong personality, built the hard way, and somehow still charming....
|
1793537795.5149996
|
1793624195.5149996
|
|
55420
|
My own site! by @thomasmead | Stardance
|
thomasmead
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T17:39:53Z", "hours": 1.0, "multiplier": 1.19, "payout": 1, "blessing": "neutral", "text": "THIS IS MY WEBSITE! Lots of it isn’t filled out (and there is still some placeholder) but as I work on more projects I’ll fill it out with some more stuff and things. It needs data to fill in.", "repo": "https://github.com/th3-pr0gr4mm3r/ma-site", "demo": "https://thomasmead.xyz"}]...
|
[{"post_id": 59491, "ts": "202 [{"post_id": 59491, "ts": "2026-09-01T11:09:44Z", "hours": 0.3794, "text": "Personal Site - Devlog 2 I added new stuff and new functions to it and deployed it using github pages. WARNING - TLS IS NOT ENABLED YET!!!"}, {"post_id": 59063, "ts": "2026-08-31T17:36:30Z", "hours": 0.7394, "text": "Personal Site - Devlog 1 Scaffolded the Astro website and ripped all the boilerplate out of it. I then made this cool terminal interface using the Termino.js library. Right now it’s very basic and barebones however."}]...
|
Title: My own site! by @thomasmead | Stardance
De Title: My own site! by @thomasmead | Stardance
Devlogs:
Personal Site - Devlog 1 Scaffolded the Astro website and ripped all the boilerplate out of it. I then made this cool terminal interface using the Termino.js library. Right now it’s very basic and barebones however.
Personal Site - Devlog 2 I added new stuff and new functions to it and deployed it using github pages. WARNING - TLS IS NOT ENABLED YET!!!
Ships:
THIS IS MY WEBSITE! Lots of it isn’t filled out (and there is still some placeholder) but as I work on more projects I’ll fill it out with some more stuff and things. It needs data to fill in....
|
1793537797.5743504
|
1793624197.5743504
|
|
38960
|
textmate-wakatime fixes by @atomtables | Stardance
|
atomtables
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-24T16:45:59Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I forked the textmate-wakatime repo, a repo that had feature updates last in 2015, and updated it to work well with modern wakatime-cli. This includes a status indicator, proper time tracking, categories, and more. Check it out! video of action is included in the release, it does take 2 minutes since the heartbeats happens at a normal pace.", "repo": "https://github.com/atomtables/textmate-wakatime/tree/fixes", "demo": "https://github.com/atomtables/textmate-wakatime/releases/tag/v2.0.0"}]...
|
[{"post_id": 33862, "ts": "202 [{"post_id": 33862, "ts": "2026-07-24T03:57:42Z", "hours": 2.9033, "text": "well that was a while debugging. I unfortunately spent more hours than I’d care on this. this is a fork of a textmate-wakatime, a wakatime plugin for textmate, a macos editor. Compared to the previous release, the modified v2.0.0 release builds on the 1.0.2 release (since the 1.0.3 release doesn’t seem to exist). It adds cursor position, the current time coded today under the File menu, adds OSX 10.9 support, removes legacy references to back when wakatime-cli was a Python project, fixes issues where Textmate autosaves within 2 seconds of a modification, destroying performance by spamming heartbeats. that’s a lot of things. the weird thing about this project is that it was very old. it doesn’t have configuration for stuff like a getter-setter-auto-synthesizer, but was compiled with the osx 10.10 sdk. The rate limiting must have been different, since a write heartbeat happens everytime the user touches a key, and write heartbeats bypass rate limiting, causing a ton of heartbeats to be generated in a 3 second period adding line number functionality wasn’t as fun as it was for xcode. Xcode’s editor is directly exposed, but you have to dig into the view hierachy in the window to search for a custom TextView and find the index of the cursor in there. It doesn’t just appear in the FirstResponder, which was annoying. never the less, i got this working. The only reason I’m using Textmate is because it was on the mavericksforever.com website, and Webstorm and VS Code (at least the working ones for mavericks) are too old to work with Svelte 5, and Sublime text 3 is too ugly to use and doesn’t have a working LSP anyway. textmate isn’t even that bad of an option, considering there’s no way I’ll have LSP available. if you still use TextMate on a version of OSX that doesn’t make a fuss about signed code injections, you should be able to use this! But it is a wakatime extension, so you probably don’t need to."}]...
|
Title: textmate-wakatime fixes by @atomtables | St Title: textmate-wakatime fixes by @atomtables | Stardance
Devlogs:
well that was a while debugging. I unfortunately spent more hours than I’d care on this. this is a fork of a textmate-wakatime, a wakatime plugin for textmate, a macos editor. Compared to the previous release, the modified v2.0.0 release builds on the 1.0.2 release (since the 1.0.3 release doesn’t seem to exist). It adds cursor position, the current time coded today under the File menu, adds OSX 10.9 support, removes legacy references to back when wakatime-cli was a Python project, fixes issues where Textmate autosaves within 2 seconds of a modification, destroying performance by spamming heartbeats. that’s a lot of things. the weird thing about this project is that it was very old. it doesn’t have configuration for stuff like a getter-setter-auto-synthesizer, but was compiled with the osx 10.10 sdk. The rate limiting must have been different, since a write heartbeat happens everytime the user touches a key, and write heartbeats bypass rate limiting, causing a ton of heartbeats to be generated in a 3 second period adding line number functionality wasn’t as fun as it was for xcode. Xcode’s editor is directly exposed, but you have to dig into the view hierachy in the window to search for a custom TextView and find the index of the cursor in there. It doesn’t just appear in the FirstResponder, which was annoying. never the less, i got this working. The only reason I’m using Textmate is because it was on the mavericksforever.com website, and Webstorm and VS Code (at least the working ones for mavericks) are too old to work with Svelte 5, and Sublime text 3 is too ugly to use and doesn’t have a working LSP anyway. textmate isn’t even that bad of an option, considering there’s no way I’ll have LSP available. if you still use TextMate on a version of OSX that doesn’t make a fuss about signed code injections, you should be able to use this! But it is a wakatime extension, so you probably don’t need to.
Ships:
I forked the textmate-wakatime repo, a repo that had feature updates last in 2015, and updated it to work well with modern wakatime-cli. This includes a status indicator, proper time tracking, categories, and more. Check it out! video of action is included in the release, it does take 2 minutes since the heartbeats happens at a normal pace....
|
1793537802.9729903
|
1793624202.9729903
|
|
39259
|
Pages for Pages by @ReuTheNetizen | Stardance
|
ReuTheNetizen
|
1
|
26.0
|
448
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T20:56:19Z", "hours": 26.0, "multiplier": 17.51, "payout": 448, "blessing": "neutral", "text": "What did you make? I wanted to make a personal site that was different from a portfolio, leading to the creation of Pages for Pages. It is my reading journal, now reimagined as a digital space! It features: An interactive reading log The main feature of the site, letting me easily share the books I’ve read. It supports arrow‑key and touch‑swipe navigation, plus title search. Custom CSS Bookshelf Currently used to display my TBR books, but future updates may add more shelves that sort completed books by genre. It features a simplified book spine design that reveals full cover artwork when hovered on. Styled Content Cards Based on the reading log, these cards highlight things like recommended reads or current progress, elevating the library theme. Annotation Workspace The most feature‑rich page: including dark mode, a Pomodoro timer, an ambient soundscape mixer, a YouTube media console, and a scratchpad with browser‑storage capabilities. What are you proud of? I’m most proud of the Library Lounge page. It transforms the site from a simple reading journal into a tool I actually want to use long term. Every component came together better than I expected, and the workspace feels genuinely effective for focused reading or study sessions. What was challenging? Debugging. Especially in JavaScript, since it’s the language I’m least familiar with. I kept running into small mistakes, like calling variables before they were declared when reorganizing code. I also tended to write entire features before testing them, which made debugging harder. I’m working on improving my workflow as I build more projects. What should people know so you can test your project? Just click the Try Project button to explore the site. If you want a quick overview of my development process, you can read the bullet points in the Completed Work section of each devlog. They serve as a TL;DR of the project’s progress.", "repo": "https://github.com/ReuTheCoder/pages-for-pages", "demo": "https://reuthecoder.github.io/pages-for-pages/"}]...
|
[{"post_id": 49435, "ts": "202 [{"post_id": 49435, "ts": "2026-08-18T08:50:40Z", "hours": 9.1861, "text": "Devlog 06 After 26 hours, I can say that Version 1.0 of Pages for Pages is complete!!! I thought getting the site ready for shipping would be easy since I only had one more page idea. I underestimated how long it would take to implement everything, polish my styling, and fix the many issues I encountered. Completed Work The workspace I described in Devlog 03 has now become the Library Lounge . Features like the soundscape mixer, Pomodoro timer, and “Dim the Lights” button were heavily inspired by I Miss My Cafe , but I added my own design spin to fit the library theme and what I would personally want while annotating a book. Pomodoro Interface This was heavily inspired by Codynn’s Build a Pomodoro App tutorial on YouTube. To avoid copying the code, I studied the final design, tried to recreate it myself, and then checked my work against the source code. This helped me simplify some of the JavaScript, despite me also making other parts harder for myself. “Dim the Lights” Button Essentially dark mode for the Lounge, designed for nighttime reading. It changes the site to an espresso theme and blends the navigation and footer into the background to increase focus. (I may add a site-wide dark mode in the future.) Soundscape Mixer I did not make the audio; it was sourced from Pixabay. It pairs especially well with a Jazz music video in the media player. Media Player One of my favorite features! It allows users to play any YouTube video that permits embedding directly on the page. I made it for music compilations and study-with-me videos while working, partly to avoid the distractions of switching tabs. This was the most complicated feature I made, and I relied heavily on AI for this part. My overall AI usage should still be well below 30% of the project. Favicon The favicon uses the same book design as my Stardance project image. I made it in Canva and used favicon.io to convert the PNG into an .ico file. Reading Logs All the reading logs for books currently featured on the site are now in. The site doesn’t represent every book I’ve read this year; I chose some of the most polished logs from my previous notebook. Going forward, I intend for the site to become my main log for new books. UI & Mobile Fixes After adding the logs, I moved the book images and navigation buttons higher on the Reading Journal page because the entries stretched the container. I also finally tested the site on mobile after deploying it to GitHub Pages and discovered I had forgotten to style the navigation for smaller screens. The last 30 minutes were spent fixing that. The site is functional on mobile, although it is designed primarily for desktop. Notable Bugs I Faced A JavaScript conflict appeared when I added the new page’s code to my main script.js , so I eventually moved it into a separate file. There were so many typos that they kept slowing me down. 40 minutes, if not more, were spent trying to figure out why the YouTube media player wouldn’t work. I initially assumed VS Code’s Live Preview was the problem, but it wasn’t. After lots of debugging (and some AI help), I discovered I hadn’t properly implemented the embed path into iFramePlayer.src. Fixing that caused a second YouTube configuration error, which I investigated through the console on my deployed site—only to discover that it suddenly worked!? Was Live Preview the problem? As the number one rule of programming says: “If it works, don’t touch it.” Next Steps I believe all I have to do now is prep the README and ship the site! Thanks for reading! - 2026/08/15-18"}, {"post_id": 47556, "ts": "2026-08-15T15:09:03Z", "hours": 3.4189, "text": "Devlog 05 There are a lot of cool bookshelf CSS designs out there. One particular one had a full 3D system, where one could rotate a book out of a bookshelf and slightly tilt it around based on the cursor position. It was too complicated for me to replicate with my current abilities, so I made a simplified version of that, where the bookshelf has a simplified book spine that reveals a book cover when hovered on. I also set up a “display view” where a book always shows its cover, as if it was a book on a stand. I’m happy with how it turned out! Completed Work Added bookshelf interface To be honest, my “To Be Read” list in my old reading journal is a bit outdated. So, I updated my “To Be Read” list with books suggested by teachers and titles I’ve recently been meaning to pick up. To keep things clean, I configured the CSS to trigger a horizontal scrollbar if the shelf fills up with too many books. I made a few front-end mistakes that took up some time to fix. For instance, it took me a while to figure out I wrote ‘scr’ instead of ‘src’ when embedding most of my images from this page. I also misnamed my width-limit and centering classes between my CSS and HTML, causing the layout to break across the page. This can be seen in the attached image. I briefly tested a small accent bar, which you can see in the in progress picture under the Project Hail Mary book cover, but removed it since it wasn’t adapting smoothly to different book widths. I tried adding a folded 3D paper label for the “TBR Shelf,” but for some reason it would not show up. You can even see the blank card in the broken photo. At first I thought it was because I had accidentally retyped the same class assignments (after taking a short break), causing conflicting class statements but that did not solve the issue. To save time, I swapped it for a clean card design. Styled featured book section I tried to mimic the same style as my journal cards and the current reading card on the homepage. Next Steps I’m going to add my reading journals logs to the website, and build out the “reading room” before tagging the v1.0 release. In the future, I may add genre-specific shelf filters and pop-up info cards for each title. Thanks for reading! - 2026/08/12-14"}, {"post_id": 45377, "ts": "2026-08-11T19:56:17Z", "hours": 4.255, "text": "Devlog 04 It has been a while since I did some work on this! Since the last devlog, I have been focused on refining the reading journal to the point it is now almost complete! Doing this section of this website has helped me learn a few new things about Javascript inputs. Additionally, I have read up on how to commit in Github and realized I have been doing them horribly wrong. From now on, I’m going to follow proper commit practices (like writing in the imperative). I’ll also see if I can edit my old ones so they are better. Completed Work Added journal interface and search bar functionality You can see how it looks in the attached video. The search bar input searches books based on the book title. I structured the JavaScript so that I can easily add new entries using an array with key-value pairs. The books I chose to feature in my reading journal for now are not necessarily the most recent ones I have read, rather they are just some of the books I found really interesting or really liked and also had detailed entries in my previous reading journal. I think most of my time was used learning the JavaScript I would need to implement the search and the touch screen swipe functionality. I also had an issue where some of my CSS did not work at all, causing elements to not be placed where I wanted to, only to realize I had changed up a class name accidentally from my JavaScript to my CSS. Changed the front page card Its contrast is a lot better now. Before I was going for a cardboard vibe, but it does not really work with the site background. I also changed the featured book as I have finished reading the original book and want to keep the site up to date. Renamed Reading Room to Reading Journal The feature I described in the last devlog will now become the reading room. I think it also makes more sense to just call it Reading Journal. Next Steps I am going to work on the Bookshelf now. I believe it’s going to mostly be CSS, so I hope it will be quick. I’ll probably add my journal entry content in by then as well. I am also thinking of implementing some sort of date system rather than having the page always go back to the first entry in my JavaScript. Thanks for reading! - 2026/08/10"}, {"post_id": 36548, "ts": "2026-07-28T18:55:35Z", "hours": 2.4178, "text": "Devlog 03 2026/07/27 I was originally planning to submit this website to the Personal Website mission, but I noticed this project was taking longer than I expected. So I decided I will submit this as its own standalone project and save my other website idea for the mission instead. I feel like this approach prevents me from rushing my site development, and enables me to take the time to learn and understand how to implement all the features I want in order to build a fully polished website. For instance, I am now thinking of adding a new feature: a page dedicated to studying or annotating books. I’m imagining a cozy little workspace with a pomodoro timer, a to‑do list, quick media access, and a notes section where I can jot down thoughts before turning them into proper journal entries. Please feel free to suggest any other feature you think this reading website should have! Completed Work Designed the site’s navigation so it looks like a folder time system. I achieved this by formatting the header section into a flexbox with a green background ( my website’s accent color) so I did not have to add borders to my folder tabs. I then converted the navigation into a flexbox, removed the default list styling, and added padding around each link so they resembled folder tabs. After adjusting the fonts and colors so the tabs look cohesive, I added an active class to each navigation link on its corresponding HTML page. Adjusted prose animation I essentially rebuilt the intro sequence to make my website feel more cinematic, which took a bit longer than expected because I kept making typos that broke the whole sequence… Before, the prose text simply faded in when you opened the site, and the JavaScript let you skip it with a key press or screen tap. You’ll have to see the new animation on the finished site! >:) It sets the tone way better and makes the prose feel more intentional. Next Steps I still have to polish the other pages. I’m going to start with formatting the Reading Room section and start adding journal logs. Now that I’ve decided I’m going to go at a slower pace, I’m going to make sure I want to understand every syntax choice I make instead of just throwing code I see online that will supposedly modify an element the way I want it to so I truly get to know HTML, CSS, and JavaScript more deeply. Thanks for reading!"}, {"post_id": 35499, "ts": "2026-07-26T23:39:56Z", "hours": 3.9006, "text": "Devlog 02 2026/07/25-26 Today I discovered that web design is really fun! I loved experimenting with all the different effects I could create using CSS. Honestly, I was surprised by how simple some features were to implement. For example, I hadn’t realized that changing an element’s color based on its state only requires specifying that state (like :hover or :active ) before assigning the style rules. Completed Work So far I have only really been polishing the home page. Here is a brief overview of things I have completed: Added two google fonts I chose Lora as my body text as it is known for being a readable font and I really wanted to use a serif font for this website. I chose DM Serif Display as my header font because it is still serif, but distinct enough from Lora that the headers still pop out and keep the page from looking bland. Determined website color pallette and applied the colors to background and text (including links and their various states) I went for a cream-colored background, with earthy tones as accents. Centered home page text and added a subtle glow effect to all letters using text shadow Formatted buttons Added intro animation It’s a little bit dramatic but was really fun and not too hard to implement. I spent some time adding a JavaScript function to allow someone to skip the animation by clicking or pressing a key as I found it a bit annoying to have the animation replay every time I went back to the homescreen. Polished “What I’m currently reading section” on the home page. By doing this, I learned how useful flex boxes are for organizing content. They made it much easier to design the “Currently Reading” section on my homepage as everything aligned neatly without me having to fight with margins or positioning. Most of my time today went into experimenting with this layout. I think I’ll use a similar CSS structure when building the journal pages later on. Google’s search AI, Gemini, was a huge help in finding the syntax I needed quickly. However, I made sure to write all my code myself. Instead of asking AI to build entire sections of my project, I only used it to clarify specific syntax questions (like how to rotate a flex box) and then worked through the implementation on my own. Next Steps Before I go any further, I’m going to have to work on my organization. My indentation is inconsistent and has been making looking over my code a bit confusing! After that, I’m going to work on the navigation, and then I am going to continue working on the CSS for the other pages. I’ll probably simultaneously work on the Javascript for certain elements at the same time - meaning my third devlog might be my last. Thanks for reading!"}, {"post_id": 34480, "ts": "2026-07-25T07:10:17Z", "hours": 2.4142, "text": "Devlog 01 2026/07/24 I used to keep track of the books I read in a reading journal. It not only fueled my interest in literature but also helped me read with greater intention, as I knew I would have to record my thoughts later. Over time, though, schoolwork took over and my entries slowly dwindled in frequency until I completely stopped. Now that summer has returned, I’m reviving my reading journal…this time in digital form! Project Vision I want my website to stay simple yet meaningful. I don’t want to take too long to build it and want it to be easy to update. It will have three pages: the Home , the Reading Room , and the Bookshelf . I’m aiming for a cozy, library‑like atmosphere. The home page will set that tone right away with a short prose piece explaining the site’s name while setting its mood. It will include a link to the Reading Room and have a “Currently Reading” section below. The Reading Room will hold my actual journal entries. Visitors will be able to browse through them or search for a specific book to view its entry. I plan to learn some JavaScript through this feature as I think it’ll be a fun challenge and a great way to make the site interactive. The Bookshelf will serve as my TBR list. I’ll experiment with CSS to make it feel like users are pulling out a book when they hover or click. There will also be a small “Featured” section where I’ll recommend a book I loved, hopefully adding to the library theme! (It’s like a librarian’s book recommendation!) Completed Work This idea came together while following Jenin’s Personal Site Workshop. I spent about the first half hour experimenting with HTML and CSS while brainstorming the concept. After that, I took my ideas together and drafted the site structure entirely in HTML. I mostly followed the personal site guide, only searching for extra features I wanted to add. Whenever I used code examples from online sources, I made sure to understand how each function worked and challenged myself to apply it elsewhere in my code so I was learning HTML properly through practice. Next Steps With the HTML foundation complete, my next goal is to polish the site using CSS. I anticipate that will be the focus of my next devlog. After styling, I’ll dive into JavaScript and add finishing touches before shipping the final version. Thanks for reading!"}]...
|
Title: Pages for Pages by @ReuTheNetizen | Stardan Title: Pages for Pages by @ReuTheNetizen | Stardance
Devlogs:
Devlog 01 2026/07/24 I used to keep track of the books I read in a reading journal. It not only fueled my interest in literature but also helped me read with greater intention, as I knew I would have to record my thoughts later. Over time, though, schoolwork took over and my entries slowly dwindled in frequency until I completely stopped. Now that summer has returned, I’m reviving my reading journal…this time in digital form! Project Vision I want my website to stay simple yet meaningful. I don’t want to take too long to build it and want it to be easy to update. It will have three pages: the Home , the Reading Room , and the Bookshelf . I’m aiming for a cozy, library‑like atmosphere. The home page will set that tone right away with a short prose piece explaining the site’s name while setting its mood. It will include a link to the Reading Room and have a “Currently Reading” section below. The Reading Room will hold my actual journal entries. Visitors will be able to browse through them or search for a specific book to view its entry. I plan to learn some JavaScript through this feature as I think it’ll be a fun challenge and a great way to make the site interactive. The Bookshelf will serve as my TBR list. I’ll experiment with CSS to make it feel like users are pulling out a book when they hover or click. There will also be a small “Featured” section where I’ll recommend a book I loved, hopefully adding to the library theme! (It’s like a librarian’s book recommendation!) Completed Work This idea came together while following Jenin’s Personal Site Workshop. I spent about the first half hour experimenting with HTML and CSS while brainstorming the concept. After that, I took my ideas together and drafted the site structure entirely in HTML. I mostly followed the personal site guide, only searching for extra features I wanted to add. Whenever I used code examples from online sources, I made sure to understand how each function worked and challenged myself to apply it elsewhere in my code so I was learning HTML properly through practice. Next Steps With the HTML foundation complete, my next goal is to polish the site using CSS. I anticipate that will be the focus of my next devlog. After styling, I’ll dive into JavaScript and add finishing touches before shipping the final version. Thanks for reading!
Devlog 02 2026/07/25-26 Today I discovered that web design is really fun! I loved experimenting with all the different effects I could create using CSS. Honestly, I was surprised by how simple some features were to implement. For example, I hadn’t realized that changing an element’s color based on its state only requires specifying that state (like :hover or :active ) before assigning the style rules. Completed Work So far I have only really been polishing the home page. Here is a brief overview of things I have completed: Added two google fonts I chose Lora as my body text as it is known for being a readable font and I really wanted to use a serif font for this website. I chose DM Serif Display as my header font because it is still serif, but distinct enough from Lora that the headers still pop out and keep the page from looking bland. Determined website color pallette and applied the colors to background and text (including links and their various states) I went for a cream-colored background, with earthy tones as accents. Centered home page text and added a subtle glow effect to all letters using text shadow Formatted buttons Added intro animation It’s a little bit dramatic but was really fun and not too hard to implement. I spent some time adding a JavaScript function to allow someone to skip the animation by clicking or pressing a key as I found it a bit annoying to have the animation replay every time I went back to the homescreen. Polished “What I’m currently reading section” on the home page. By doing this, I learned how useful flex boxes are for organizing content. They made it much easier to design the “Currently Reading” section on my homepage as everything aligned neatly without me having to fight with margins or positioning. Most of my time today went into experimenting with this layout. I think I’ll use a similar CSS structure when building the journal pages later on. Google’s search AI, Gemini, was a huge help in finding the syntax I needed quickly. However, I made sure to write all my code myself. Instead of asking AI to build entire sections of my project, I only used it to clarify specific syntax questions (like how to rotate a flex box) and then worked through the implementation on my own. Next Steps Before I go any further, I’m going to have to work on my organization. My indentation is inconsistent and has been making looking over my code a bit confusing! After that, I’m going to work on the navigation, and then I am going to continue working on the CSS for the other pages. I’ll probably simultaneously work on the Javascript for certain elements at the same time - meaning my third devlog might be my last. Thanks for reading!
Devlog 03 2026/07/27 I was originally planning to submit this website to the Personal Website mission, but I noticed this project was taking longer than I expected. So I decided I will submit this as its own standalone project and save my other website idea for the mission instead. I feel like this approach prevents me from rushing my site development, and enables me to take the time to learn and understand how to implement all the features I want in order to build a fully polished website. For instance, I am now thinking of adding a new feature: a page dedicated to studying or annotating books. I’m imagining a cozy little workspace with a pomodoro timer, a to‑do list, quick media access, and a notes section where I can jot down thoughts before turning them into proper journal entries. Please feel free to suggest any other feature you think this reading website should have! Completed Work Designed the site’s navigation so it looks like a folder time system. I achieved this by formatting the header section into a flexbox with a green background ( my website’s accent color) so I did not have to add borders to my folder tabs. I then converted the navigation into a flexbox, removed the default list styling, and added padding around each link so they resembled folder tabs. After adjusting the fonts and colors so the tabs look cohesive, I added an active class to each navigation link on its corresponding HTML page. Adjusted prose animation I essentially rebuilt the intro sequence to make my website feel more cinematic, which took a bit longer than expected because I kept making typos that broke the whole sequence… Before, the prose text simply faded in when you opened the site, and the JavaScript let you skip it with a key press or screen tap. You’ll have to see the new animation on the finished site! >:) It sets the tone way better and makes the prose feel more intentional. Next Steps I still have to polish the other pages. I’m going to start with formatting the Reading Room section and start adding journal logs. Now that I’ve decided I’m going to go at a slower pace, I’m going to make sure I want to understand every syntax choice I make instead of just throwing code I see online that will supposedly modify an element the way I want it to so I truly get to know HTML, CSS, and JavaScript more deeply. Thanks for reading!
Devlog 04 It has been a while since I did some work on this! Since the last devlog, I have been focused on refining the reading journal to the point it is now almost complete! Doing this section of this website has helped me learn a few new things about Javascript inputs. Additionally, I have read up on how to commit in Github and realized I have been doing them horribly wrong. From now on, I’m going to follow proper commit practices (like writing in the imperative). I’ll also see if I can edit my old ones so they are better. Completed Work Added journal interface and search bar functionality You can see how it looks in the attached video. The search bar input searches books based on the book title. I structured the JavaScript so that I can easily add new entries using an array with key-value pairs. The books I chose to feature in my reading journal for now are not necessarily the most recent ones I have read, rather they are just some of the books I found really interesting or really liked and also had detailed entries in my previous reading journal. I think most of my time was used learning the JavaScript I would need to implement the search and the touch screen swipe functionality. I also had an issue where some of my CSS did not work at all, causing elements to not be placed where I wanted to, only to realize I had changed up a class name accidentally from my JavaScript to my CSS. Changed the front page card Its contrast is a lot better now. Before I was going for a cardboard vibe, but it does not really work with the site background. I also changed the featured book as I have finished reading the original book and want to keep the site up to date. Renamed Reading Room to Reading Journal The feature I described in the last devlog will now become the reading room. I think it also makes more sense to just call it Reading Journal. Next Steps I am going to work on the Bookshelf now. I believe it’s going to mostly be CSS, so I hope it will be quick. I’ll probably add my journal entry content in by then as well. I am also thinking of implementing some sort of date system rather than having the page always go back to the first entry in my JavaScript. Thanks for reading! - 2026/08/10
Devlog 05 There are a lot of cool bookshelf CSS designs out there. One particular one had a full 3D system, where one could rotate a book out of a bookshelf and slightly tilt it around based on the cursor position. It was too complicated for me to replicate with my current abilities, so I made a simplified version of that, where the bookshelf has a simplified book spine that reveals a book cover when hovered on. I also set up a “display view” where a book always shows its cover, as if it was a book on a stand. I’m happy with how it turned out! Completed Work Added bookshelf interface To be honest, my “To Be Read” list in my old reading journal is a bit outdated. So, I updated my “To Be Read” list with books suggested by teachers and titles I’ve recently been meaning to pick up. To keep things clean, I configured the CSS to trigger a horizontal scrollbar if the shelf fills up with too many books. I made a few front-end mistakes that took up some time to fix. For instance, it took me a while to figure out I wrote ‘scr’ instead of ‘src’ when embedding most of my images from this page. I also misnamed my width-limit and centering classes between my CSS and HTML, causing the layout to break across the page. This can be seen in the attached image. I briefly tested a small accent bar, which you can see in the in progress picture under the Project Hail Mary book cover, but removed it since it wasn’t adapting smoothly to different book widths. I tried adding a folded 3D paper label for the “TBR Shelf,” but for some reason it would not show up. You can even see the blank card in the broken photo. At first I thought it was because I had accidentally retyped the same class assignments (after taking a short break), causing conflicting class statements but that did not solve the issue. To save time, I swapped it for a clean card design. Styled featured book section I tried to mimic the same style as my journal cards and the current reading card on the homepage. Next Steps I’m going to add my reading journals logs to the website, and build out the “reading room” before tagging the v1.0 release. In the future, I may add genre-specific shelf filters and pop-up info cards for each title. Thanks for reading! - 2026/08/12-14
Devlog 06 After 26 hours, I can say that Version 1.0 of Pages for Pages is complete!!! I thought getting the site ready for shipping would be easy since I only had one more page idea. I underestimated how long it would take to implement everything, polish my styling, and fix the many issues I encountered. Completed Work The workspace I described in Devlog 03 has now become the Library Lounge . Features like the soundscape mixer, Pomodoro timer, and “Dim the Lights” button were heavily inspired by I Miss My Cafe , but I added my own design spin to fit the library theme and what I would personally want while annotating a book. Pomodoro Interface This was heavily inspired by Codynn’s Build a Pomodoro App tutorial on YouTube. To avoid copying the code, I studied the final design, tried to recreate it myself, and then checked my work against the source code. This helped me simplify some of the JavaScript, despite me also making other parts harder for myself. “Dim the Lights” Button Essentially dark mode for the Lounge, designed for nighttime reading. It changes the site to an espresso theme and blends the navigation and footer into the background to increase focus. (I may add a site-wide dark mode in the future.) Soundscape Mixer I did not make the audio; it was sourced from Pixabay. It pairs especially well with a Jazz music video in the media player. Media Player One of my favorite features! It allows users to play any YouTube video that permits embedding directly on the page. I made it for music compilations and study-with-me videos while working, partly to avoid the distractions of switching tabs. This was the most complicated feature I made, and I relied heavily on AI for this part. My overall AI usage should still be well below 30% of the project. Favicon The favicon uses the same book design as my Stardance project image. I made it in Canva and used favicon.io to convert the PNG into an .ico file. Reading Logs All the reading logs for books currently featured on the site are now in. The site doesn’t represent every book I’ve read this year; I chose some of the most polished logs from my previous notebook. Going forward, I intend for the site to become my main log for new books. UI & Mobile Fixes After adding the logs, I moved the book images and navigation buttons higher on the Reading Journal page because the entries stretched the container. I also finally tested the site on mobile after deploying it to GitHub Pages and discovered I had forgotten to style the navigation for smaller screens. The last 30 minutes were spent fixing that. The site is functional on mobile, although it is designed primarily for desktop. Notable Bugs I Faced A JavaScript conflict appeared when I added the new page’s code to my main script.js , so I eventually moved it into a separate file. There were so many typos that they kept slowing me down. 40 minutes, if not more, were spent trying to figure out why the YouTube media player wouldn’t work. I initially assumed VS Code’s Live Preview was the problem, but it wasn’t. After lots of debugging (and some AI help), I discovered I hadn’t properly implemented the embed path into iFramePlayer.src. Fixing that caused a second YouTube configuration error, which I investigated through the console on my deployed site—only to discover that it suddenly worked!? Was Live Preview the problem? As the number one rule of programming says: “If it works, don’t touch it.” Next Steps I believe all I have to do now is prep the README and ship the site! Thanks for reading! - 2026/08/15-18
Ships:
What did you make? I wanted to make a personal site that was different from a portfolio, leading to the creation of Pages for Pages. It is my reading journal, now reimagined as a digital space! It features: An interactive reading log The main feature of the site, letting me easily share the books I’ve read. It supports arrow‑key and touch‑swipe navigation, plus title search. Custom CSS Bookshelf Currently used to display my TBR books, but future updates may add more shelves that sort completed books by genre. It features a simplified book spine design that reveals full cover artwork when hovered on. Styled Content Cards Based on the reading log, these cards highlight things like recommended reads or current progress, elevating the library theme. Annotation Workspace The most feature‑rich page: including dark mode, a Pomodoro timer, an ambient soundscape mixer, a YouTube media console, and a scratchpad with browser‑storage capabilities. What are you proud of? I’m most proud of the Library Lounge page. It transforms the site from a simple reading journal into a tool I actually want to use long term. Every component came together better than I expected, and the workspace feels genuinely effective for focused reading or study sessions. What was challenging? Debugging. Especially in JavaScript, since it’s the language I’m least familiar with. I kept running into small mistakes, like calling variables before they were declared when reorganizing code. I also tended to write entire features before testing them, which made debugging harder. I’m working on improving my workflow as I build more projects. What should people know so you can test your project? Just click the Try Project button to explore the site. If you want a quick overview of my development process, you can read the bullet points in the Completed Work section of each devlog. They serve as a TL;DR of the project’s progress....
|
1793537805.07725
|
1793624205.07725
|
|
36103
|
My first slack bot! by @2shaikaqib | Stardance
|
2shaikaqib
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-23T20:57:19Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a slack bot named Revered Snake. This is a pretty basic slack bot. Although it was very complicated to make, lol. It took me at least 3 hours half of which couldn’t be captured by Hackatime. This slack bot runs on the hack club workspace and most commands are seen by all channel members. It has 6 commands: Ping or /revered-snake-ping : The app gives a message and latency Cat fact or /revered-snake-catfact : Says an interesting fact about cats Cat image or /revered-snake-catimg : It gives you the URL of a cat image Help or : Says what each of these commands are for. Origin or /revered-snake-origin : Says origin story Joke or /revered-snake-joke - makes a joke :D They all use a different API (except origin it uses a text built into it). It runs 24/7 from my laptop.", "repo": "https://github.com/2shaikaqib/slackbot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354"}]...
|
[{"post_id": 33709, "ts": "202 [{"post_id": 33709, "ts": "2026-07-23T20:48:36Z", "hours": 1.3508, "text": "Dev log 2 Hello, It has been a while, guess what, I finally figured out the README format!! Quick Run down of what happened : Nest got approved caused an issue and had to remake the repo at least 5 times wipe my computer 5 times added a command that lets you have a cat image added an origin story for the app itself added a profile picture people can see its responses! Final note : This project has given me wonderful insight into creating a Slack bot , will do it again but better. and this to the the creators of the Slack bot guide : ** MAKE THE GUIDE EASIER, I GOT LOST AT LEAST 15 TIMES!!! IT COST ME SOO MUCH TIME.**"}, {"post_id": 32513, "ts": "2026-07-21T19:00:06Z", "hours": 0.6858, "text": "Devlog 1 : Setup the app API on Slack and have made the code in Github just as the guide told (they should make it more easier to follow). Now i am just waiting for my application on nest."}]...
|
Title: My first slack bot! by @2shaikaqib | Starda Title: My first slack bot! by @2shaikaqib | Stardance
Devlogs:
Devlog 1 : Setup the app API on Slack and have made the code in Github just as the guide told (they should make it more easier to follow). Now i am just waiting for my application on nest.
Dev log 2 Hello, It has been a while, guess what, I finally figured out the README format!! Quick Run down of what happened : Nest got approved caused an issue and had to remake the repo at least 5 times wipe my computer 5 times added a command that lets you have a cat image added an origin story for the app itself added a profile picture people can see its responses! Final note : This project has given me wonderful insight into creating a Slack bot , will do it again but better. and this to the the creators of the Slack bot guide : ** MAKE THE GUIDE EASIER, I GOT LOST AT LEAST 15 TIMES!!! IT COST ME SOO MUCH TIME.**
Ships:
I made a slack bot named Revered Snake. This is a pretty basic slack bot. Although it was very complicated to make, lol. It took me at least 3 hours half of which couldn’t be captured by Hackatime. This slack bot runs on the hack club workspace and most commands are seen by all channel members. It has 6 commands: Ping or /revered-snake-ping : The app gives a message and latency Cat fact or /revered-snake-catfact : Says an interesting fact about cats Cat image or /revered-snake-catimg : It gives you the URL of a cat image Help or : Says what each of these commands are for. Origin or /revered-snake-origin : Says origin story Joke or /revered-snake-joke - makes a joke :D They all use a different API (except origin it uses a text built into it). It runs 24/7 from my laptop....
|
1793537812.1654885
|
1793624212.1654885
|
|
39478
|
OOTD generator by @SelinaZ | Stardance
|
SelinaZ
|
1
|
21.5
|
199
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T07:08:44Z", "hours": 21.0, "multiplier": 9.4, "payout": 199, "blessing": "neutral", "text": "I made this outfit generator webpage to help me pick out an outfit based on the weather. I realized that I often forget many of the pieces I have in my closet and struggle to find an outfit that I like. So this OOTD generator greatly helped me with this issue. Features: Each time the user click on the “generate outfit” button, the webpage will pull out a top and a bottom based on the current weather. The user can continue to click on the button until they find the outfit that they like. I brought in the live weather feature using the WeatherAPI, and the user just need to set the location they are at. The user can upload photos of their clothing pieces through an admin page, which will then be stored to a Supabase database. However, as this is my personal project, you will not have access to the admin page. There’s also an inspiration section that displays inspo photos I grabbed from Pinterest and a notes section that allows user to take note of the clothing pieces that want. Technical aspect: Frontend React JavaScript HTML CSS Vite React Router Backend Node.js Express.js Axios Multer CORS dotenv", "repo": "https://github.com/SelinaZ07/OOTD-generator", "demo": "https://ootd-generator.vercel.app/"}]...
|
[{"post_id": 47989, "ts": "202 [{"post_id": 47989, "ts": "2026-08-16T08:25:59Z", "hours": 0.4975, "text": "I found some mistakes in my README file primarily because I change my db storage from SQLite to Supabase after I wrote it, and I also forgot to add the deployment link. So everything should be all lined up and good to go now. First ship of this project!"}, {"post_id": 46745, "ts": "2026-08-14T06:56:18Z", "hours": 3.3839, "text": "After two days of debugging and trying to deploy the project. The project is finally live on Vercel! I deployed the backend on Render and the front end on Vercel. I also changed my database storage from SQLite to Supabase database as Supabase is a cloud storage site that allow dynamic storage and I also don’t need to worry about uploading a ton of my personal clothing images to Github."}, {"post_id": 43824, "ts": "2026-08-09T08:02:19Z", "hours": 2.6458, "text": "I’m wrapping up the project! I wrote the README.md file, cleaned up the code, added comments for users to better understand the code, and tested to make sure everything is working. Then, I pushed everything to Github. I will be working on the deploying and hosting of the project now. I’m planning to host it on Vercel and Render, but will have to carefully think about the privacy aspect of the database."}, {"post_id": 42508, "ts": "2026-08-07T09:29:41Z", "hours": 2.5692, "text": "I added another notes section on the webpage helping users to keep track of the clothing items they need/want to buy. I also expanded my clothing db and cleaned up my code a bit. Now this project should be near complete! So happy that it is coming along, let me know if you have any suggestions."}, {"post_id": 41173, "ts": "2026-08-05T06:35:05Z", "hours": 2.9261, "text": "I improved the front-end design of the webpage. I added an inspiration corner section where I put some inspo outfit photos I got from Pinterest. I also improved the weather display. Let me know if you have any suggestions about what else to add to this webpage to make it more aesthetic."}, {"post_id": 39394, "ts": "2026-08-02T10:35:36Z", "hours": 2.9211, "text": "After lots of debugging, I finally connected my front-end and backend, as well as the weather API. Right now, I use an admin page to upload my clothing photos to the SQLite database. Along with the upload, I will also fill out the type (top/bottom) and the temperature range of that piece. When I click on the generate outfit button, it will randomly pick outa top and a bottom based on the temperature received from the weather API."}, {"post_id": 37491, "ts": "2026-07-30T08:43:25Z", "hours": 2.5517, "text": "I built a backend page that allows the admin (me) to upload my clothing images, which will be stored in a database. Later the AI will pick out the outfit and its corresponding images from this database. I chose to use SQLite to hold these images."}, {"post_id": 36290, "ts": "2026-07-28T09:30:10Z", "hours": 2.6861, "text": "I built the basic structure of the webpage, trying to make it look similar to my prototype. I implemented the WeatherAPI to make the weather block display the actual weather based on my location. Now, I’m working on implementing the photo uploads feature for this generator. I will use multer to handle image uploads and sqlite3 to store all the images I uploaded."}, {"post_id": 35526, "ts": "2026-07-27T00:41:24Z", "hours": 1.4842, "text": "I’m planning to code this outfit generator dashboard that can generate a top and bottom for me based on the weather of the day. I will import photos of my own clothings and train an AI using inspo Pinterest photos to help the AI learn my style. As for thee weather, I’m planning to use an API. This is a photo of a prototype I made using Figma and I’ve just installed all the packages I need."}]...
|
Title: OOTD generator by @SelinaZ | Stardance
Dev Title: OOTD generator by @SelinaZ | Stardance
Devlogs:
I’m planning to code this outfit generator dashboard that can generate a top and bottom for me based on the weather of the day. I will import photos of my own clothings and train an AI using inspo Pinterest photos to help the AI learn my style. As for thee weather, I’m planning to use an API. This is a photo of a prototype I made using Figma and I’ve just installed all the packages I need.
I built the basic structure of the webpage, trying to make it look similar to my prototype. I implemented the WeatherAPI to make the weather block display the actual weather based on my location. Now, I’m working on implementing the photo uploads feature for this generator. I will use multer to handle image uploads and sqlite3 to store all the images I uploaded.
I built a backend page that allows the admin (me) to upload my clothing images, which will be stored in a database. Later the AI will pick out the outfit and its corresponding images from this database. I chose to use SQLite to hold these images.
After lots of debugging, I finally connected my front-end and backend, as well as the weather API. Right now, I use an admin page to upload my clothing photos to the SQLite database. Along with the upload, I will also fill out the type (top/bottom) and the temperature range of that piece. When I click on the generate outfit button, it will randomly pick outa top and a bottom based on the temperature received from the weather API.
I improved the front-end design of the webpage. I added an inspiration corner section where I put some inspo outfit photos I got from Pinterest. I also improved the weather display. Let me know if you have any suggestions about what else to add to this webpage to make it more aesthetic.
I added another notes section on the webpage helping users to keep track of the clothing items they need/want to buy. I also expanded my clothing db and cleaned up my code a bit. Now this project should be near complete! So happy that it is coming along, let me know if you have any suggestions.
I’m wrapping up the project! I wrote the README.md file, cleaned up the code, added comments for users to better understand the code, and tested to make sure everything is working. Then, I pushed everything to Github. I will be working on the deploying and hosting of the project now. I’m planning to host it on Vercel and Render, but will have to carefully think about the privacy aspect of the database.
After two days of debugging and trying to deploy the project. The project is finally live on Vercel! I deployed the backend on Render and the front end on Vercel. I also changed my database storage from SQLite to Supabase database as Supabase is a cloud storage site that allow dynamic storage and I also don’t need to worry about uploading a ton of my personal clothing images to Github.
I found some mistakes in my README file primarily because I change my db storage from SQLite to Supabase after I wrote it, and I also forgot to add the deployment link. So everything should be all lined up and good to go now. First ship of this project!
Ships:
I made this outfit generator webpage to help me pick out an outfit based on the weather. I realized that I often forget many of the pieces I have in my closet and struggle to find an outfit that I like. So this OOTD generator greatly helped me with this issue. Features: Each time the user click on the “generate outfit” button, the webpage will pull out a top and a bottom based on the current weather. The user can continue to click on the button until they find the outfit that they like. I brought in the live weather feature using the WeatherAPI, and the user just need to set the location they are at. The user can upload photos of their clothing pieces through an admin page, which will then be stored to a Supabase database. However, as this is my personal project, you will not have access to the admin page. There’s also an inspiration section that displays inspo photos I grabbed from Pinterest and a notes section that allows user to take note of the clothing pieces that want. Technical aspect: Frontend React JavaScript HTML CSS Vite React Router Backend Node.js Express.js Axios Multer CORS dotenv...
|
1793537814.2253287
|
1793624214.2253287
|
|
38886
|
WEB APP FOR STUDENTS by @Uxyamo | Stardance
|
Uxyamo
|
4
|
84.0
|
681
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-27T20:29:01Z", "hours": 8.0, "multiplier": 7.22, "payout": 60, "blessing": "neutral", "text": "Hi everyone! I’m working a lot in this project, I talked with my teacher, and I’m going to present this app in a national project I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. I will keep improving this project, thanks to all ❤️👌👌", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 2, "ts": "2026-10-20T06:40:42Z", "hours": 18.0, "multiplier": 8.4, "payout": 99, "blessing": "neutral", "text": "I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 3, "ts": "2026-08-28T16:13:00Z", "hours": 4.0, "multiplier": 12.19, "payout": 43, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}, {"ship_num": 4, "ts": "2026-08-16T08:22:09Z", "hours": 54.0, "multiplier": 10.6, "payout": 479, "blessing": "neutral", "text": "Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌", "repo": "https://github.com/mbbs-iam/APP---FermatNote---Make-my-Grades", "demo": "https://cuentasfermat.web.app/"}]...
|
[{"post_id": 83363, "ts": "202 [{"post_id": 83363, "ts": "2026-10-27T20:27:08Z", "hours": 8.2775, "text": "Only doing some audits, and thinking on how adding instagram to the app, I will use an in-app browser, so students will keep using my app while using they’re socials media"}, {"post_id": 81181, "ts": "2026-10-20T06:39:31Z", "hours": 1.7881, "text": "I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app"}, {"post_id": 76794, "ts": "2026-10-04T16:11:16Z", "hours": 15.7992, "text": "Some modifications…"}, {"post_id": 56718, "ts": "2026-08-28T16:12:12Z", "hours": 3.5033, "text": "Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international"}, {"post_id": 47987, "ts": "2026-08-16T08:17:36Z", "hours": 0.3178, "text": "I finished the project!! Thanks yo evryone that helped me and followed me in my project!!"}, {"post_id": 47541, "ts": "2026-08-15T14:48:56Z", "hours": 3.5642, "text": "Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!"}, {"post_id": 46530, "ts": "2026-08-13T20:28:50Z", "hours": 5.1931, "text": "I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do"}, {"post_id": 45816, "ts": "2026-08-12T15:19:22Z", "hours": 2.1239, "text": "Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊"}, {"post_id": 45595, "ts": "2026-08-12T05:53:03Z", "hours": 1.1178, "text": "Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!"}, {"post_id": 45170, "ts": "2026-08-11T14:20:09Z", "hours": 4.26, "text": "There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language."}, {"post_id": 43311, "ts": "2026-08-08T14:38:46Z", "hours": 4.4058, "text": "I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)"}, {"post_id": 41494, "ts": "2026-08-05T18:52:57Z", "hours": 1.5481, "text": "Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone."}, {"post_id": 40272, "ts": "2026-08-03T18:13:14Z", "hours": 1.2458, "text": "I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class."}, {"post_id": 40025, "ts": "2026-08-03T11:28:39Z", "hours": 2.4278, "text": "I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!"}, {"post_id": 39633, "ts": "2026-08-02T19:12:07Z", "hours": 8.9369, "text": "That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it"}, {"post_id": 34515, "ts": "2026-07-25T09:32:54Z", "hours": 19.0533, "text": "I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊"}]...
|
Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance Title: WEB APP FOR STUDENTS by @Uxyamo | Stardance
Devlogs:
I’m working a lot, I would like to create a an app that is like the schools apps for see our degrees but for students. It will be fun, and in an Inthership with a big company of tech and they said that they will help me. That motivated me a lot 😊😊
That’s amazing. Hello !! I’m working on a project for studentsss!!! I’m so motivated because a big tech company will help me giving me servers to deploy it on all France. I’m working a lot, I’ve contacted already some people of the best hightschools in France to use my app. I will improve all and add features. I’m sorry, it’s in French because I’m french and will be used by French people, but if I see that more people are interested I will translate it to english, and at the end of the project I will translate it to english if they’re people that want it
I finished the PowerPoint that I will send to delegates from different hightschools in France. I don’t have a good english so I translated it in english with translator. Please tell me what you think about the project, and if you should recommend me to improve some things. Thankss!!
I configurated the chat section, and it works well, I have some users that use it. I used Firebase with the free trial to connect all the user messages so we can talk together. I did it fast because I already started yesterday, also I added a lot of buttons that spoils all the features that the app will have. Please like my post to let other people se my project, and if they’re interested to use it in they’re class.
Already 10 high schools are going to use my app! I created this app for high schools in France, and a big tech company will help me deploy it throughout France. I will translate it to English next day. I also created a form, and so many people have already responded! I really enjoyed setting it up to connect with everyone.
I finished three sections of my app, I love it. I used the free API of lemonde.fr (french news) to have the news all days. I also finished and added some features on the chat section. And I writed a message to the best High school at France to use it. Finnaly, at the configuration section, I added the list of all the membres of the class (they’re bots)
There’s 12 Hightshools that will use my app. I already ended the app. Thanks you for all those who helped me, and followed me in my project❤️❤️❤️❤️ I’m sorry that the app is it in french, i will translate to english for the next version. If youre interested to use that app at your hightschool I can translate it to your language.
Best 12 Hightschools use my app. They’re happy with it Already finished !! I will do an audit to see if they’re is some bugs and I will deploy it !!
Use the app now for free with all the hightschools above France!! Link: https://cuentasfermat.web.app/ The password is : ChromaFermat@2026 Have fun!! 😊😊
I already deployed the project to 12 firebase accounts to let the students use my project the next year and I would like it to help them. I alse send them to each delegue an email to say them what they have to do
Already finished the diaporama for the students that will use my app!! Take a look please, and say me what to improve!!
I finished the project!! Thanks yo evryone that helped me and followed me in my project!!
Hi everyone, there is some students that want to help me the next year, I readed all the messages of my deploy and I decided that it will be international
Some modifications…
I decided that because all students use discord, instagram and more I will transform my PWA into an app so they will can use that apps in my app
Only doing some audits, and thinking on how adding instagram to the app, I will use an in-app browser, so students will keep using my app while using they’re socials media
Ships:
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app. I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. Thanks you so much, I would like you to appreciate it, and if you would like to use it for your class, send me a message!! ❤️👌👌
Hi everyone! This project is for the delegates, 12 delegates of the best Hightschools in France and Morroco will use it the next year. A big tech company will help me with giving me servers to deploy my app.
I’m going to continue improving my project with some others creatorsn and thanks you everyone for all the support I had!!! Good luck!!
Hi everyone! I’m working a lot in this project, I talked with my teacher, and I’m going to present this app in a national project I am developing Fermat-Note, an application designed especially for high school and higher education students to centralize everything: class chat, shared homework management, self-help forums and collective organization. The app allows the class to be more organized and connected to improve class performance. I will keep improving this project, thanks to all ❤️👌👌...
|
1793537816.3402915
|
1793624216.3402915
|
|
52843
|
stupid-ahh-reminder by @somebodyouknow | Stardance
|
somebodyouknow
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T20:58:03Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a reminder app with customtkniter in Python. It is a fairly simple app with a simple purpose to ask me if I brought my keys or not. It logs everything into JSON. Finally it is supposed to be scheduled with a local scheduling app to run everyday whenever you return to your house (and i hope that you haven’t lost your keys.)", "repo": "https://github.com/somebodyouknow66/stupid-ahh-reminder", "demo": "https://github.com/somebodyouknow66/stupid-ahh-reminder/releases/tag/Important"}]...
|
[{"post_id": 53034, "ts": "202 [{"post_id": 53034, "ts": "2026-08-23T12:54:40Z", "hours": 1.3781, "text": "My Stupid Ahh Reminder Well, I actually forget my keys alot and whenever I am out, I have to stay extra aware of where my keys actually are. I have got them stuck to my bag, but still they get misplaced. So I thought of using python to build a notfication system. This is just a customtkniter script that is supposed to be run at a given time with the windows scheduler. I first of all had built the app with tkniter, but looking at how ugly and outdated it looked. I quickly changed my mind and switched to customtkniter. I built the core functionality: Two buttons (affirmative and negative) Text label Buttons functionality JSON logging. The major error I faced was when I switched from Tkniter to CTk. I just used the replace button, bcz to be honest I have never used CTk nor tkniter before. Well bcz of knowing python, I got the hang of it pretty soon. I had fun building this one. I also got pretty nostalgic, bcz the last time I wrote python was in 2023 when I was learning CS50. That was the first time I learn python. It is nostalgic bcz so much has changed in these 3 years, it is overwhelmingly shocking."}]...
|
Title: stupid-ahh-reminder by @somebodyouknow | St Title: stupid-ahh-reminder by @somebodyouknow | Stardance
Devlogs:
My Stupid Ahh Reminder Well, I actually forget my keys alot and whenever I am out, I have to stay extra aware of where my keys actually are. I have got them stuck to my bag, but still they get misplaced. So I thought of using python to build a notfication system. This is just a customtkniter script that is supposed to be run at a given time with the windows scheduler. I first of all had built the app with tkniter, but looking at how ugly and outdated it looked. I quickly changed my mind and switched to customtkniter. I built the core functionality: Two buttons (affirmative and negative) Text label Buttons functionality JSON logging. The major error I faced was when I switched from Tkniter to CTk. I just used the replace button, bcz to be honest I have never used CTk nor tkniter before. Well bcz of knowing python, I got the hang of it pretty soon. I had fun building this one. I also got pretty nostalgic, bcz the last time I wrote python was in 2023 when I was learning CS50. That was the first time I learn python. It is nostalgic bcz so much has changed in these 3 years, it is overwhelmingly shocking.
Ships:
I made a reminder app with customtkniter in Python. It is a fairly simple app with a simple purpose to ask me if I brought my keys or not. It logs everything into JSON. Finally it is supposed to be scheduled with a local scheduling app to run everyday whenever you return to your house (and i hope that you haven’t lost your keys.)...
|
1793537818.5035717
|
1793624218.5035717
|
|
43119
|
Super Minigame! by @ashrafmahin10 | Stardance
|
ashrafmahin10
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T23:54:58Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a warioware inspired minigame. The challenging part of it was to debug some code. I am proud to have my own game published for the public.You can go to my github page to start trying out my project :3", "repo": "https://github.com/Ashraf-999/Super-Minigame", "demo": "https://ashrafmahin.itch.io/super-minigame"}]...
|
[{"post_id": 48499, "ts": "202 [{"post_id": 48499, "ts": "2026-08-16T21:25:58Z", "hours": 3.8286, "text": "Just finished the game!"}, {"post_id": 42409, "ts": "2026-08-07T03:05:44Z", "hours": 1.2989, "text": "Just finished building the home page for my warioware game!"}]...
|
Title: Super Minigame! by @ashrafmahin10 | Stardan Title: Super Minigame! by @ashrafmahin10 | Stardance
Devlogs:
Just finished building the home page for my warioware game!
Just finished the game!
Ships:
I made a warioware inspired minigame. The challenging part of it was to debug some code. I am proud to have my own game published for the public.You can go to my github page to start trying out my project :3...
|
1793537820.5694456
|
1793624220.5694456
|
|
49253
|
My own site! by @lucifer111008 | Stardance
|
lucifer111008
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T14:45:01Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "made my first personal website and it was quite a fun experience learned a lot of new things", "repo": "https://github.com/lucifer111008/personal-website-1", "demo": "https://lucifer111008.github.io/personal-website-1/"}]...
|
[{"post_id": 48298, "ts": "202 [{"post_id": 48298, "ts": "2026-08-16T16:37:29Z", "hours": 3.0806, "text": "after way too much time finally got the main page am gonna first complete the landing page and then hyperlink the rest of things like design portfolio etc etc later"}, {"post_id": 48071, "ts": "2026-08-16T11:07:26Z", "hours": 0.3603, "text": "personal website but the time didnt load so ggs trying to improve the theme and spidermans design i might just use image rather than this"}]...
|
Title: My own site! by @lucifer111008 | Stardance
Title: My own site! by @lucifer111008 | Stardance
Devlogs:
personal website but the time didnt load so ggs trying to improve the theme and spidermans design i might just use image rather than this
after way too much time finally got the main page am gonna first complete the landing page and then hyperlink the rest of things like design portfolio etc etc later
Ships:
made my first personal website and it was quite a fun experience learned a lot of new things...
|
1793537823.6353543
|
1793624223.6353543
|