|
14537
|
Mana Rune by @Mo | Stardance
|
Mo
|
1
|
51.26
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-09T22:53:50Z", "hours": 51.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a data and texture pack for minecraft. I was a big project that added at least 49 custom items and a ton of custom textures, dimensions, advancements, and much more. The texture pack and playtesting were not counted in the hour count, but i’m guessing the total would be 150-200 hours. I hope anyone seeing this thinks that it is cool, even if they don’t play it.", "repo": "https://github.com/Im-not-a-banana/Mana-Rune", "demo": "https://onedrive.live.com/?sw=bypass&bypassReason=abandoned&qt=allmyphotos&photosData=%2Fshare%2FEFB52E9CE6833146%21s49e637cbd5b94cc5adf98c94f5ef94dc%3Fithint%3Dvideo%26e%3DfIjwP7%26migratedtospo%3Dtrue&cid=EFB52E9CE6833146&id=EFB52E9CE6833146%21s49e637cbd5b94cc5adf98c94f5ef94dc&redeem=aHR0cHM6Ly8xZHJ2Lm1zL3YvYy9lZmI1MmU5Y2U2ODMzMTQ2L0lRRExOLVpKdWRYRlRLMzVqSlQxNzVUY0FUX2pSVE5OcmZjM1BwOEZmc01SN2NjP2U9Zklqd1A3&startedResponseCatch=true&v=photos"}]...
|
[{"post_id": 26188, "ts": "202 [{"post_id": 26188, "ts": "2026-07-10T20:49:49Z", "hours": 0.255, "text": "I fixed a few minor things before finally being finished, such as all of the information about it, music playing too frequently in custom dimensions, and the player being able to get an infinite supply of amulets of class if they check the general information after level 4. This is my final devlog, and I know I haven’t been deoing too many. I just do them after fully finishing and polishing major features. Happy coding :)"}, {"post_id": 25486, "ts": "2026-07-09T19:54:15Z", "hours": 29.24, "text": "I finally finished. I added a lot of new features, like all of the archer amulets. I also finished the Info system and all custom advancements. The picture shows only about a third of them."}, {"post_id": 14553, "ts": "2026-06-23T18:32:55Z", "hours": 19.9692, "text": "I’m adding four (maybe +) custom biomes and two (maybe+) dimensions. I also added custom enchantements, sitting, and lots of more custom items with custom textures."}, {"post_id": 6503, "ts": "2026-06-10T22:38:12Z", "hours": 2.0472, "text": "Some of the features and most of the custom items in my data/texture pack."}]...
|
Title: Mana Rune by @Mo | Stardance
Devlogs:
Some Title: Mana Rune by @Mo | Stardance
Devlogs:
Some of the features and most of the custom items in my data/texture pack.
I’m adding four (maybe +) custom biomes and two (maybe+) dimensions. I also added custom enchantements, sitting, and lots of more custom items with custom textures.
I finally finished. I added a lot of new features, like all of the archer amulets. I also finished the Info system and all custom advancements. The picture shows only about a third of them.
I fixed a few minor things before finally being finished, such as all of the information about it, music playing too frequently in custom dimensions, and the player being able to get an infinite supply of amulets of class if they check the general information after level 4. This is my final devlog, and I know I haven’t been deoing too many. I just do them after fully finishing and polishing major features. Happy coding :)
Ships:
I made a data and texture pack for minecraft. I was a big project that added at least 49 custom items and a ton of custom textures, dimensions, advancements, and much more. The texture pack and playtesting were not counted in the hour count, but i’m guessing the total would be 150-200 hours. I hope anyone seeing this thinks that it is cool, even if they don’t play it....
|
1793084144.3195443
|
1793170544.3195443
|
|
19265
|
NFC Monsters by @radsi | Stardance
|
radsi
|
1
|
51.0
|
108
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-13T16:26:11Z", "hours": 51.0, "multiplier": 2.75, "payout": 108, "blessing": "neutral", "text": "This is a mobile game that uses NFC technology to cast spells and execute actions… This is a very WIP project, I can’t event test it on my own phone so I uploaded a showcase video in case someone is interested!", "repo": "https://github.com/radsi/nfc-monsters", "demo": "https://www.youtube.com/watch?v=Tx2pvqhJloY"}]...
|
[{"post_id": 27756, "ts": "202 [{"post_id": 27756, "ts": "2026-07-13T16:22:16Z", "hours": 2.0864, "text": "first alpha release"}, {"post_id": 26628, "ts": "2026-07-11T15:39:57Z", "hours": 5.0958, "text": "New items, enemies, and random events, support for custom music on different map nodes, button to return to the main menu during a run and multiple fixes."}, {"post_id": 24094, "ts": "2026-07-07T13:17:05Z", "hours": 5.1831, "text": "Added a new Layer 3 boss, new events, event-exclusive items and spell unlocks, plus an editor export/import addon. Fixed multiple gameplay and visual bugs, improved random events, and reduced starting HP to 50."}, {"post_id": 20722, "ts": "2026-07-02T12:09:22Z", "hours": 4.9686, "text": "Improved enemy SFX, reworked the armor system into a separate bar, added enemy attack damage indicators, fixed the Spell Summon index bug, improved enemy buffs, and added new events."}, {"post_id": 17744, "ts": "2026-06-28T17:40:48Z", "hours": 4.4111, "text": "Added seed-based generation, new events and items, improved combat feedback, more sound effects, and fixed multiple bugs."}, {"post_id": 15194, "ts": "2026-06-24T18:12:45Z", "hours": 5.4392, "text": "Added unlock notifications, new random events and boss, improved combat feedback, audio, balancing, and added new enemies, items, and spells."}, {"post_id": 12585, "ts": "2026-06-20T15:32:36Z", "hours": 4.0233, "text": "Added new audio, fixed key gameplay bugs, improved UI (tooltips, inventory scroll, gallery), and expanded content with new items, enemies, bosses, and effects."}, {"post_id": 9944, "ts": "2026-06-16T13:58:01Z", "hours": 19.4583, "text": "Slay the Spire inspired game that uses Android NFC to cast spells and perform actions. Right now im working on the base game before starting to add events, items and so"}]...
|
Title: NFC Monsters by @radsi | Stardance
Devlogs Title: NFC Monsters by @radsi | Stardance
Devlogs:
Slay the Spire inspired game that uses Android NFC to cast spells and perform actions. Right now im working on the base game before starting to add events, items and so
Added new audio, fixed key gameplay bugs, improved UI (tooltips, inventory scroll, gallery), and expanded content with new items, enemies, bosses, and effects.
Added unlock notifications, new random events and boss, improved combat feedback, audio, balancing, and added new enemies, items, and spells.
Added seed-based generation, new events and items, improved combat feedback, more sound effects, and fixed multiple bugs.
Improved enemy SFX, reworked the armor system into a separate bar, added enemy attack damage indicators, fixed the Spell Summon index bug, improved enemy buffs, and added new events.
Added a new Layer 3 boss, new events, event-exclusive items and spell unlocks, plus an editor export/import addon. Fixed multiple gameplay and visual bugs, improved random events, and reduced starting HP to 50.
New items, enemies, and random events, support for custom music on different map nodes, button to return to the main menu during a run and multiple fixes.
first alpha release
Ships:
This is a mobile game that uses NFC technology to cast spells and execute actions… This is a very WIP project, I can’t event test it on my own phone so I uploaded a showcase video in case someone is interested!...
|
1793094774.5689447
|
1793181174.5689447
|
|
23309
|
zzzclip by @nosrep | Stardance
|
nosrep
|
1
|
51.0
|
840
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T21:15:59Z", "hours": 51.0, "multiplier": 19.28, "payout": 840, "blessing": "neutral", "text": "ever since I was a wee lad I’ve never found a clipboard manager that’s fully worked how I wanted it. A lot can’t handle images correctly, and even fewer can handle multiple MIME types (multiple types of content) simultaneously. Not a lot can persist clipboard content properly either; some don’t wait until the program has exited to replace. So, in 2023, I decided to make my own clipboard manager! I wasn’t very good, though, so it never got to a usable state. This year, I picked the project back up, figured out the blockers (lazy persistence is a lot more annoying than it sounds), and finally added all the features needed for a proper clipboard manager. zzzclip can: store your history. hopefully this was obvious. persist clipboard content. another fun fact: the data in your clipboard doesn’t actually exist to your compositor/WM/DE. if a program exits while something is copied from it, that data is GONE unless it was backed up. that’s what zzzclip does! it backs up the clipboard data and “copies” it again once the program providing it exits. represent your clipboard as files. ever find a website that reaallly wants you to upload a file and won’t take your ctrl-v? zzzclip can fix that! zzzclip also has a configurable system to set which MIME types you really care about, so it won’t store the same image 10 times in different formats every time you copy something. THIS IS FOR WAYLAND USERS ON LINUX ONLY. IF YOU ARE NOT A WAYLAND USER ON LINUX (OR, LIKE, BSD, IF YOU CAN FIGURE IT OUT), THIS IS NOT FOR YOU.", "repo": "https://github.com/Osrepnay/zzzclip", "demo": "https://github.com/Osrepnay/zzzclip/releases/tag/v0.1.0"}]...
|
[{"post_id": 22353, "ts": "202 [{"post_id": 22353, "ts": "2026-07-04T19:44:20Z", "hours": 4.4239, "text": "I have no idea how this devlog ended up so long Anyway, I cleaned up some potential crashes/undefined behavior, fixed up the README, and finally tagged a release + published to AUR! Spent a lot of time wrestling with static linking. I remember using old versions of linux before and getting glibc problems so I wanted to link it statically. I first tried using musl-gcc, but I ended up needing too many static versions of libraries so I just made a Dockerfile with alpine (which has static versions of basically everything) and made the binary there. Did you know PKGBUILDs are just bash scripts? I didn’t."}, {"post_id": 21105, "ts": "2026-07-02T21:58:27Z", "hours": 3.8542, "text": "the clipboard-as-files thing is added! I originally wanted to use FUSE/libfuse, but i realized i could just change the storage format to have the data be in a single file. now i’m just using symlinks instead, no dependencies this was relatively easy, ran into a couple of bugs but nothing too crazy. Biggest thing I got hung up on was which directory to put it in ($XDG_STATE_HOME? $XDG_DATA_HOME? ~/clipboard?). I eventually decided on $XDG_RUNTIME_DIR which seems mostly appropriate - the only thing is that it’s kinda annoying to access, but you could just make your own symlink, change the path with $ZZZCLIP_SYMLINK_PATH, or add a bookmark like in the screenshot. Another thing was to add extensions (e.g. .png) to the file, because apps like discord won’t recognize them if they don’t have extensions. I was initially gonna take and process one of the giant lists online, but then i found out most systems have a /etc/mime.types so i parsed that instead."}, {"post_id": 20183, "ts": "2026-07-01T18:49:37Z", "hours": 2.9758, "text": "I added some more options to the CLI, which ended up being a lot more annoying than i expected. Here are the ones I added: added to zzzclip list : -v: verbose mode. Verbose mode also lists the mimetype for a clipboard item. added to zzzclip get : -f: runs in foreground. Here’s something you might not have known: wl-copy starts a background process when you run it. The clipboard contents aren’t owned by the compositor, so a process has to be running to supply the data. I made zzzclip get do the same thing, but like wl-copy I added an option to make it run in the foreground. -s: output summary. It’s basically zzzclip list -v but only for one item. -l: list stored mime types. It lists the mime types for an item. -m : directly prints the data for an item."}, {"post_id": 18165, "ts": "2026-06-29T05:56:47Z", "hours": 3.1797, "text": "big ticket is overhauling the config format. Previously, the index looked like this: 4a93d8d7 6b5d69df 2143c202 Each random string of 8 characters was a label for data under a particular mime type, and each line was a selection (a selection can have multiple mimetypes). Each label had its own file to store the actual clipboard data, with the mimetype included in that file. this worked fine, but I’ve been wanting to implement the feature where the current clipboard contents are accessible via file. If I moved the mimetype out of the data files, I could just use symlinks because each file has exactly the data I need; using the old format, i’d need to use libfuse to make “fake” files without the mimetypes instead. this was a lot more annoying than i expected (thank god for address sanitizer, caught many mistakes), but I eventually got it working. I think i’m nearing the finish line"}, {"post_id": 17963, "ts": "2026-06-28T22:31:36Z", "hours": 4.0781, "text": "lots of minor-ish stuff for this batch of changes. Biggest change is actually adding proper cli parsing and help messages! previously, the cli was extremely bare-bones and just good enough to actually work but didn’t have any decent error handling or help messages. I’ve also ditched the option that runs the selector program (e.g. rofi, fuzzel). I didn’t know about he -nth those programs have, which let you hide data from the selector, so that functionality was kinda redundant. (also the sizes are human-readable now, i.e. in kb/mb/gb instead of just raw bytes)"}, {"post_id": 16987, "ts": "2026-06-27T15:51:35Z", "hours": 6.7522, "text": "the tests were bad. I fixed them and now everything passes. hooray! Anyway, welcome to macro hell! i’ve been working through the todo list and one of the items I wanted to hit was to support the ext-data-control protocol on top of the wlr-data-control protocol. Wayland compositors work on “protocols,” and not every compositor supports every protocol; the *-data-control protocols are what allow clipboard managers to mess with the clipboard. wlr-data-control was first (i think) and is only supported by wlroots-based compositors, but ext-data-control is the standard now. (except the compositor I use, river, doesn’t support it yet…) The problem with supporting both is that C is not a very expressive language. I had to generate wrapper functions for every function supplied by the protocol, which was bad enough, but I also had to write wrapper functions for my own functions that were used in listeners. This part could have been so much worse, but I was able to hide some function pointers in the user data and cut down even more boilerplate. Not fun. 3/10."}, {"post_id": 14809, "ts": "2026-06-24T01:36:55Z", "hours": 3.3247, "text": "there’s always the boring janitorial stuff (e.g. i renamed a few files, moved some stuff around, fixed a mem leak and a potential crash, etc.) the cooler change is that I finally added testing! testing an app like this is infinitely more annoying than something like a chess engine (shameless plug) because it’s built around IO. I followed in fuzzel ’s footsteps and did integration testing in a shell script, which isn’t something i realized is practical until seeing it used there. the very sparse tests actually already did find a bug, but i’ll fix it later…… the testing is to set up more disruptive features i’ll add later, like implementing the ext-data-control protocol on top of wlr-data-control, and I want to make sure they won’t break anything without having to manually test"}, {"post_id": 14166, "ts": "2026-06-23T04:52:15Z", "hours": 1.7025, "text": "two things: finally got rid of libpcre2. For the people that didn’t read the previous devlog, I needed a regex implementation as part of the user-provided mimetype selection, but I didn’t realize POSIX had one in regex.h and pcre seemed like the standard. POSIX regexes should be more than enough, though, so that’s a dependency killed added locking and index refreshing. nothing was locked previously which is Not Good™️, but more importantly, the daemon never refreshed the index of clipboard data, so if i deleted one, the index would get rewritten anyway with the deleted file and corrupt it. Solution was to stop persisting the index and only read it when it’s used."}, {"post_id": 13561, "ts": "2026-06-22T06:20:10Z", "hours": 3.2839, "text": "minor changes for this devlog. spent way more time than is reasonable thinking of the best way to deal with allocation failures… it seems like everyone online has a different opinion on it. I tried doing it “properly” before seeing how many lines of checks that would require for a codepath that would realistically never get hit, so I gave up and just did xmalloc (basically, a wrapper around malloc that exits with an error message when it fails). Also in the theme of error handling, I did a sweep of the code and wrapped (most) of the io functions I missed to check for failure. it seems like overkill… there has to be a better way but maybe this is how it is. Finally, I switched from libpcre2 to posix regex.h. I didn’t realize POSIX had a regex.h and it’s way more than is required for this use-case (matching mimetypes)."}, {"post_id": 12902, "ts": "2026-06-21T04:06:31Z", "hours": 17.6878, "text": "I started this project much earlier than stardance (it’s years old by now), but it’s only recently become usable. think of this devlog as motivation/background the main goal was to make a clipboard manager that could persist clipboard selections after applications closed have configurable mimetype selection Here’s something interesting you might not have known about linux clipboards (both wayland and x11): the data doesn’t actually exist until a client requests it. This is how applications like firefox offer 20 morbillion image types; it’s converting the image on-the-fly. Given this, it’s impractical to request every offered type, so most clipboard managers I’ve found solve this by giving up and only doing text or text+hardcoded image mimetypes. zzzclip has a probably-overcomplicated system that lets you configure which mimetypes it’ll remember and priority between mimetypes (plus regexes). Another feature I want to add eventually is a FUSE clipboard system where it can make a “fake” (meaning it’s backed by the program, not something on disk) file holding the current clipboard contents. (as for what these 17 hours are actually for: it’s just adding config parsing and a load of cleanups.)"}]...
|
Title: zzzclip by @nosrep | Stardance
Devlogs:
I Title: zzzclip by @nosrep | Stardance
Devlogs:
I started this project much earlier than stardance (it’s years old by now), but it’s only recently become usable. think of this devlog as motivation/background the main goal was to make a clipboard manager that could persist clipboard selections after applications closed have configurable mimetype selection Here’s something interesting you might not have known about linux clipboards (both wayland and x11): the data doesn’t actually exist until a client requests it. This is how applications like firefox offer 20 morbillion image types; it’s converting the image on-the-fly. Given this, it’s impractical to request every offered type, so most clipboard managers I’ve found solve this by giving up and only doing text or text+hardcoded image mimetypes. zzzclip has a probably-overcomplicated system that lets you configure which mimetypes it’ll remember and priority between mimetypes (plus regexes). Another feature I want to add eventually is a FUSE clipboard system where it can make a “fake” (meaning it’s backed by the program, not something on disk) file holding the current clipboard contents. (as for what these 17 hours are actually for: it’s just adding config parsing and a load of cleanups.)
minor changes for this devlog. spent way more time than is reasonable thinking of the best way to deal with allocation failures… it seems like everyone online has a different opinion on it. I tried doing it “properly” before seeing how many lines of checks that would require for a codepath that would realistically never get hit, so I gave up and just did xmalloc (basically, a wrapper around malloc that exits with an error message when it fails). Also in the theme of error handling, I did a sweep of the code and wrapped (most) of the io functions I missed to check for failure. it seems like overkill… there has to be a better way but maybe this is how it is. Finally, I switched from libpcre2 to posix regex.h. I didn’t realize POSIX had a regex.h and it’s way more than is required for this use-case (matching mimetypes).
two things: finally got rid of libpcre2. For the people that didn’t read the previous devlog, I needed a regex implementation as part of the user-provided mimetype selection, but I didn’t realize POSIX had one in regex.h and pcre seemed like the standard. POSIX regexes should be more than enough, though, so that’s a dependency killed added locking and index refreshing. nothing was locked previously which is Not Good™️, but more importantly, the daemon never refreshed the index of clipboard data, so if i deleted one, the index would get rewritten anyway with the deleted file and corrupt it. Solution was to stop persisting the index and only read it when it’s used.
there’s always the boring janitorial stuff (e.g. i renamed a few files, moved some stuff around, fixed a mem leak and a potential crash, etc.) the cooler change is that I finally added testing! testing an app like this is infinitely more annoying than something like a chess engine (shameless plug) because it’s built around IO. I followed in fuzzel ’s footsteps and did integration testing in a shell script, which isn’t something i realized is practical until seeing it used there. the very sparse tests actually already did find a bug, but i’ll fix it later…… the testing is to set up more disruptive features i’ll add later, like implementing the ext-data-control protocol on top of wlr-data-control, and I want to make sure they won’t break anything without having to manually test
the tests were bad. I fixed them and now everything passes. hooray! Anyway, welcome to macro hell! i’ve been working through the todo list and one of the items I wanted to hit was to support the ext-data-control protocol on top of the wlr-data-control protocol. Wayland compositors work on “protocols,” and not every compositor supports every protocol; the *-data-control protocols are what allow clipboard managers to mess with the clipboard. wlr-data-control was first (i think) and is only supported by wlroots-based compositors, but ext-data-control is the standard now. (except the compositor I use, river, doesn’t support it yet…) The problem with supporting both is that C is not a very expressive language. I had to generate wrapper functions for every function supplied by the protocol, which was bad enough, but I also had to write wrapper functions for my own functions that were used in listeners. This part could have been so much worse, but I was able to hide some function pointers in the user data and cut down even more boilerplate. Not fun. 3/10.
lots of minor-ish stuff for this batch of changes. Biggest change is actually adding proper cli parsing and help messages! previously, the cli was extremely bare-bones and just good enough to actually work but didn’t have any decent error handling or help messages. I’ve also ditched the option that runs the selector program (e.g. rofi, fuzzel). I didn’t know about he -nth those programs have, which let you hide data from the selector, so that functionality was kinda redundant. (also the sizes are human-readable now, i.e. in kb/mb/gb instead of just raw bytes)
big ticket is overhauling the config format. Previously, the index looked like this: 4a93d8d7 6b5d69df 2143c202 Each random string of 8 characters was a label for data under a particular mime type, and each line was a selection (a selection can have multiple mimetypes). Each label had its own file to store the actual clipboard data, with the mimetype included in that file. this worked fine, but I’ve been wanting to implement the feature where the current clipboard contents are accessible via file. If I moved the mimetype out of the data files, I could just use symlinks because each file has exactly the data I need; using the old format, i’d need to use libfuse to make “fake” files without the mimetypes instead. this was a lot more annoying than i expected (thank god for address sanitizer, caught many mistakes), but I eventually got it working. I think i’m nearing the finish line
I added some more options to the CLI, which ended up being a lot more annoying than i expected. Here are the ones I added: added to zzzclip list : -v: verbose mode. Verbose mode also lists the mimetype for a clipboard item. added to zzzclip get : -f: runs in foreground. Here’s something you might not have known: wl-copy starts a background process when you run it. The clipboard contents aren’t owned by the compositor, so a process has to be running to supply the data. I made zzzclip get do the same thing, but like wl-copy I added an option to make it run in the foreground. -s: output summary. It’s basically zzzclip list -v but only for one item. -l: list stored mime types. It lists the mime types for an item. -m : directly prints the data for an item.
the clipboard-as-files thing is added! I originally wanted to use FUSE/libfuse, but i realized i could just change the storage format to have the data be in a single file. now i’m just using symlinks instead, no dependencies this was relatively easy, ran into a couple of bugs but nothing too crazy. Biggest thing I got hung up on was which directory to put it in ($XDG_STATE_HOME? $XDG_DATA_HOME? ~/clipboard?). I eventually decided on $XDG_RUNTIME_DIR which seems mostly appropriate - the only thing is that it’s kinda annoying to access, but you could just make your own symlink, change the path with $ZZZCLIP_SYMLINK_PATH, or add a bookmark like in the screenshot. Another thing was to add extensions (e.g. .png) to the file, because apps like discord won’t recognize them if they don’t have extensions. I was initially gonna take and process one of the giant lists online, but then i found out most systems have a /etc/mime.types so i parsed that instead.
I have no idea how this devlog ended up so long Anyway, I cleaned up some potential crashes/undefined behavior, fixed up the README, and finally tagged a release + published to AUR! Spent a lot of time wrestling with static linking. I remember using old versions of linux before and getting glibc problems so I wanted to link it statically. I first tried using musl-gcc, but I ended up needing too many static versions of libraries so I just made a Dockerfile with alpine (which has static versions of basically everything) and made the binary there. Did you know PKGBUILDs are just bash scripts? I didn’t.
Ships:
ever since I was a wee lad I’ve never found a clipboard manager that’s fully worked how I wanted it. A lot can’t handle images correctly, and even fewer can handle multiple MIME types (multiple types of content) simultaneously. Not a lot can persist clipboard content properly either; some don’t wait until the program has exited to replace. So, in 2023, I decided to make my own clipboard manager! I wasn’t very good, though, so it never got to a usable state. This year, I picked the project back up, figured out the blockers (lazy persistence is a lot more annoying than it sounds), and finally added all the features needed for a proper clipboard manager. zzzclip can: store your history. hopefully this was obvious. persist clipboard content. another fun fact: the data in your clipboard doesn’t actually exist to your compositor/WM/DE. if a program exits while something is copied from it, that data is GONE unless it was backed up. that’s what zzzclip does! it backs up the clipboard data and “copies” it again once the program providing it exits. represent your clipboard as files. ever find a website that reaallly wants you to upload a file and won’t take your ctrl-v? zzzclip can fix that! zzzclip also has a configurable system to set which MIME types you really care about, so it won’t store the same image 10 times in different formats every time you copy something. THIS IS FOR WAYLAND USERS ON LINUX ONLY. IF YOU ARE NOT A WAYLAND USER ON LINUX (OR, LIKE, BSD, IF YOU CAN FIGURE IT OUT), THIS IS NOT FOR YOU....
|
1793066128.6177595
|
1793152528.6177595
|
|
34136
|
compliment widget by @ducki | Stardance
|
ducki
|
1
|
51.0
|
380
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-29T09:19:05Z", "hours": 51.0, "multiplier": 7.44, "payout": 380, "blessing": "neutral", "text": "I made an Android widget app that lets people share compliments and positivity with their friends and loved ones with customizable home screen widgets. Challenges I definitly faced challenges with the widget library and my limited RAM, since the android emulator recommends 16GB of RAM, while I am working with 12GB. The testing was slower than it could have been. The widgets unique components and requirements for it, was a fun challenge, that made me have to rewrite my base code quite a lot to allow for it to run and update with the app in real time. For testing To test out the app, I have an apk that can be downloaded on Android devices, maybe this can be something to even share with others, create them a compliment list and share it to them. Just click try project to download the APK My successes I really like how the themes turned out, and all the customization. I think it really makes it look ten times better. It was worth it taking my time at midnight to fully implement it. And of course that the widget works, I already have it on my home screen, it is a great addition.", "repo": "https://github.com/Duckwastakon/compliment-widget", "demo": "https://github.com/Duckwastakon/compliment-widget/releases"}]...
|
[{"post_id": 36898, "ts": "202 [{"post_id": 36898, "ts": "2026-07-29T08:54:36Z", "hours": 4.6331, "text": "Complimet widget is finally done! Made some very interesting typos that caused the APK build to break, multiple times, but finally this app is available to anyone on github! quick changes: More themes: Added 3 more themes, peach, mint and coffee. It is now possible to see compliments on your homescreen in some color, not black/white. Small UI changes Some bug fixes like wrong text appearing. Made the README Built the project and released it Thank you to everyone who supported this project in any way!"}, {"post_id": 36268, "ts": "2026-07-28T08:15:12Z", "hours": 8.7222, "text": "compliment widget is 95% done! I will be trying to ship the project today, but depends on how many unexpected bugs appear new stuff: Finally added mass compliment pasting/writing Instead of having to write individual compliments the user can write many and the app then splits up all the lines into seperate compliments, makes it way faster to input 100, or if they already have a list of compliments to paste it in. navigator tab styling: To be fair it was wack, just white with text, now we have Icons bunch more icons to make buttons easier to understand just from visuals. more visual improvements a load of bug fixes The new additions did come with some troubles -> *Accidentaly ireversable deleted code, thank god github exsists. Mobile application development has not turned out the burden I expected it to be, totally recommend for anyone to try. The only issue being an emulator is quite ram intensive to run, I can barely run mine. Now all that is left is to export to an apk, hope there are not too many bugs and problems. How much can go wrong? only one way to find out"}, {"post_id": 32677, "ts": "2026-07-21T23:59:20Z", "hours": 9.2344, "text": "User interface designers are underrated I had never paid much attention to how apps look, but now making my first mobile application, I realise how important it is, the fact that the styling is very similar to css (I hate css) is useful for simplicity, but I have a bias from so many small mistakes that take hours to fix. Apps need the user interface to effectively tell the user what each button does, or to put attention into the main aspect. Most people would not look twice if an apps design is bad. New stuff Finally implemented the possibility to change time between new compliment generating Bunch of bug fixing And most importantly: The interface Because this is my first mobile app I must say the starting design code sucks, so I have been stuck at slowly rewriting old systems so they actually work with all the needed features. For the interface I have to rewrite the entire styleSheet for it to look okay. Hope that I can finally release soon, and not into 99 more bugs"}, {"post_id": 31964, "ts": "2026-07-20T19:46:23Z", "hours": 8.4158, "text": "IOS development is impossible maybe exaggerating a bit, but from all of my reserch i have found out that you need a mac or IOS device to be able to test IOS, now I do not have one of those .-. What does this mean: I am not gonna be releasing a IOS widget, because of not being able to make it high quality, let alone test it Instead I am gonna release it as a android app, and if it gets enough requests, add IOS support Now what have I done instead Had to remake the file hierarchy. Customization with themes for the widget and app design. File sharing and uploading. I am afraid to say I am a bit ashamed of how long it has taken for me to fix simple mistakes. Customization One of the most important parts about a widget is being able to customize it, now that is using custom themes, maybe it would be a cool addition to let people able to make custom themes, but will have to see"}, {"post_id": 30012, "ts": "2026-07-17T08:09:36Z", "hours": 8.4517, "text": "I HAVE A WIDGET I am overly happy because it just did not appear for 2 hours because I thought some line from the documented example was just a “random comment” \"use no memo\" ;. Now reading back it makes so much sense. I was insanely wrong. Adding it fixed the entire widget .-. also this widget -> only for android. and I can only hope making a ios one wont break the android one. on another note having to balance async and sync functions is a pain. had to rewrite my entire data saving system to be able to handle getting it synchronously. While doing so also found a nice tool to save data synchronously. Should I rewrite my data handling to only use one way to save data, probably but for now it works, when I get to the optimizations part and code cleaning that should get sorted. Overall must say it is a nice feeling when using some new language finding so many new tools while making a simple project, in the moment -> “Wow my headache could have been easily avoided”, but good to know the next project will be 10x faster. Not too much left to make: IOS widget Widget customization Polish the app But it is probably gonna take a good amount of time still."}, {"post_id": 29376, "ts": "2026-07-16T09:13:19Z", "hours": 5.325, "text": "Making phone applications is actually way more fun than expected okay it was partly because I switched to a new framework which makes everything more comfortable. had to rewrite all the file reading and writing, but it was 100% worth it. Now the only main thing left is the widget itself after only making my phone overheat multiple times, got the timer system working for a random compliment to appear every xx amount of time. The app is coming togheter well, only widget styling (Pain😭) improving user experience is left"}, {"post_id": 28213, "ts": "2026-07-14T11:10:16Z", "hours": 6.2661, "text": "I wanted to learn how to make phone apps, so my idea is to make a widget app, that every day displays a random compliment from a big list. Fighting with github and emulators was not fun to even start developing, but luckly was able to get all that sorted out. Was it easier after then, no, never developed something like this, everything looks so alien. Thankfully documentation exsists. I want the user to be able to make custom compliment lists, and add his own, so I started by making a system where you can create your own compliment lists, add compliments into them, and then they get saved in the apps data as a json file. hopefully adding the widget will not be too hard."}]...
|
Title: compliment widget by @ducki | Stardance
De Title: compliment widget by @ducki | Stardance
Devlogs:
I wanted to learn how to make phone apps, so my idea is to make a widget app, that every day displays a random compliment from a big list. Fighting with github and emulators was not fun to even start developing, but luckly was able to get all that sorted out. Was it easier after then, no, never developed something like this, everything looks so alien. Thankfully documentation exsists. I want the user to be able to make custom compliment lists, and add his own, so I started by making a system where you can create your own compliment lists, add compliments into them, and then they get saved in the apps data as a json file. hopefully adding the widget will not be too hard.
Making phone applications is actually way more fun than expected okay it was partly because I switched to a new framework which makes everything more comfortable. had to rewrite all the file reading and writing, but it was 100% worth it. Now the only main thing left is the widget itself after only making my phone overheat multiple times, got the timer system working for a random compliment to appear every xx amount of time. The app is coming togheter well, only widget styling (Pain😭) improving user experience is left
I HAVE A WIDGET I am overly happy because it just did not appear for 2 hours because I thought some line from the documented example was just a “random comment” "use no memo" ;. Now reading back it makes so much sense. I was insanely wrong. Adding it fixed the entire widget .-. also this widget -> only for android. and I can only hope making a ios one wont break the android one. on another note having to balance async and sync functions is a pain. had to rewrite my entire data saving system to be able to handle getting it synchronously. While doing so also found a nice tool to save data synchronously. Should I rewrite my data handling to only use one way to save data, probably but for now it works, when I get to the optimizations part and code cleaning that should get sorted. Overall must say it is a nice feeling when using some new language finding so many new tools while making a simple project, in the moment -> “Wow my headache could have been easily avoided”, but good to know the next project will be 10x faster. Not too much left to make: IOS widget Widget customization Polish the app But it is probably gonna take a good amount of time still.
IOS development is impossible maybe exaggerating a bit, but from all of my reserch i have found out that you need a mac or IOS device to be able to test IOS, now I do not have one of those .-. What does this mean: I am not gonna be releasing a IOS widget, because of not being able to make it high quality, let alone test it Instead I am gonna release it as a android app, and if it gets enough requests, add IOS support Now what have I done instead Had to remake the file hierarchy. Customization with themes for the widget and app design. File sharing and uploading. I am afraid to say I am a bit ashamed of how long it has taken for me to fix simple mistakes. Customization One of the most important parts about a widget is being able to customize it, now that is using custom themes, maybe it would be a cool addition to let people able to make custom themes, but will have to see
User interface designers are underrated I had never paid much attention to how apps look, but now making my first mobile application, I realise how important it is, the fact that the styling is very similar to css (I hate css) is useful for simplicity, but I have a bias from so many small mistakes that take hours to fix. Apps need the user interface to effectively tell the user what each button does, or to put attention into the main aspect. Most people would not look twice if an apps design is bad. New stuff Finally implemented the possibility to change time between new compliment generating Bunch of bug fixing And most importantly: The interface Because this is my first mobile app I must say the starting design code sucks, so I have been stuck at slowly rewriting old systems so they actually work with all the needed features. For the interface I have to rewrite the entire styleSheet for it to look okay. Hope that I can finally release soon, and not into 99 more bugs
compliment widget is 95% done! I will be trying to ship the project today, but depends on how many unexpected bugs appear new stuff: Finally added mass compliment pasting/writing Instead of having to write individual compliments the user can write many and the app then splits up all the lines into seperate compliments, makes it way faster to input 100, or if they already have a list of compliments to paste it in. navigator tab styling: To be fair it was wack, just white with text, now we have Icons bunch more icons to make buttons easier to understand just from visuals. more visual improvements a load of bug fixes The new additions did come with some troubles -> *Accidentaly ireversable deleted code, thank god github exsists. Mobile application development has not turned out the burden I expected it to be, totally recommend for anyone to try. The only issue being an emulator is quite ram intensive to run, I can barely run mine. Now all that is left is to export to an apk, hope there are not too many bugs and problems. How much can go wrong? only one way to find out
Complimet widget is finally done! Made some very interesting typos that caused the APK build to break, multiple times, but finally this app is available to anyone on github! quick changes: More themes: Added 3 more themes, peach, mint and coffee. It is now possible to see compliments on your homescreen in some color, not black/white. Small UI changes Some bug fixes like wrong text appearing. Made the README Built the project and released it Thank you to everyone who supported this project in any way!
Ships:
I made an Android widget app that lets people share compliments and positivity with their friends and loved ones with customizable home screen widgets. Challenges I definitly faced challenges with the widget library and my limited RAM, since the android emulator recommends 16GB of RAM, while I am working with 12GB. The testing was slower than it could have been. The widgets unique components and requirements for it, was a fun challenge, that made me have to rewrite my base code quite a lot to allow for it to run and update with the app in real time. For testing To test out the app, I have an apk that can be downloaded on Android devices, maybe this can be something to even share with others, create them a compliment list and share it to them. Just click try project to download the APK My successes I really like how the themes turned out, and all the customization. I think it really makes it look ten times better. It was worth it taking my time at midnight to fully implement it. And of course that the widget works, I already have it on my home screen, it is a great addition....
|
1793123531.5878692
|
1793209931.5878692
|
|
37737
|
Voxelium by @notryaan | Stardance
|
notryaan
|
1
|
51.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-10T10:50:01Z", "hours": 51.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Voxelium 1.0 First release!! Voxelium is a voxel game I built from scratch in C++ and OpenGL, no engine, just a lot of code. Endless worlds with real seas, mountain ranges, caves, weather and animals, and you can break and build whatever you want. What’s in it Endless worlds from a seed: seas with islands, wide beaches, mountain ranges with snow on top, big deserts and forests, and you can see about 5 km out Caves with huge caverns, tunnels and ravines, old mineshafts running through them, and it’s actually dark down there so bring lamps Lighthouses, shipwrecks, desert ruins and pyramids (there’s something under the pyramids) Water that flows, waves that go crazy in storms, coral reefs and kelp forests Weather that does its own thing: rain, snow that piles up and melts, thunderstorms with real lightning, mist over the water at sunrise Crabs, turtles, fish, jellyfish that glow at night, birds, butterflies and fireflies. You can punch them, they will run Every block has its own sounds and every biome has its own ambience Break and place blocks, 25 lamp colours, no height limit, save as many worlds as you want Low / Medium / High / Ultra presets so it runs on more than just my PC Controls WASD + mouse, space to jump, F5 walk/fly, hold left click to break, middle click to place, F4 hotbar, ESC settings, F3 debug stuff Tips Hit New World on the title screen and type a seed or roll one. Save from the ESC menu if you want to keep a world If Ultra is laggy, turn down detail dist in the settings first, it’s the biggest cost by far Big thanks to everyone on opengameart.org whose textures and sounds are in here, they’re all credited in the readme.", "repo": "https://github.com/UltimaCodes/Voxelium", "demo": "https://github.com/UltimaCodes/Voxelium/releases/tag/v1.0"}]...
|
[{"post_id": 78298, "ts": "202 [{"post_id": 78298, "ts": "2026-10-10T10:44:33Z", "hours": 0.5822, "text": "OK FINAL DEVLOG ACTUALLY There were a few bugs from the previous one which I had to fix before release Tree tops looked unlit and forests looked really gloomy, even in full sun. The light was reaching them fine, the auto exposure was measuring the whole screen including the bright sky and darkening everything under it. It only measures the world now, so trees actually look lit Every new world had an old glowing test room carved underground in the same spot. It’s gone from new worlds, old worlds keep it so nothing in them changes- The game was running one of my internal tests every single time it launched, it doesn’t anymore There was a hidden launch option that crashed the game on purpose, left over from testing the crash reporter, removed"}, {"post_id": 78292, "ts": "2026-10-10T09:50:27Z", "hours": 14.1283, "text": "Final devlog (probably) Terrain & World Gen The old terrain was hills everywhere with puddles in between, and the mountains were random spikes shooting straight up out of flat ground like something was stabbing the map from underneath. So I rewrote the whole generator. There’s real seas now with islands and deep water, and coasts start with a proper wide beach before the land slowly rises. Mountains come in long ranges with foothills, bare rock on the steep parts, a treeline and snow on top, and deserts are one big desert instead of a sand patch in the middle of nowhere. Getting the mountains right took way longer than I want to admit. First they went up like walls, then there were 40 block deep trenches running in perfectly straight lines for hundreds of blocks through the hills. Turned out the math that works out how far you are from the coast completely loses it deep inland, so now it looks out in eight directions for the actual coast instead of guessing. Old worlds keep their old terrain so nothing you built gets new ground under it. Caves & Structures Caves are actual caves now: huge caverns, long winding tunnels, ravines, water pooled at the bottom, and stalactites. They also don’t break out of the side of every hill anymore, which is where all those random gaps and chasms were coming from. Old mineshafts run through them with lamps and plank bridges over the drops, and there’s pyramids out in the desert with a lit room inside. There’s also something hidden under the pyramids but I’m not telling you what. Water & Animals Water has actual waves now, flat at the beach, bigger out in deep water, and way bigger in a storm. Also fixed far away water reflections breaking into lines. The animals were ghosts this whole time; you could walk straight through a turtle. Now they’re solid, punching one knocks it back and it runs off, and swimming into a school of fish scatters them. The fish were also translucent, fixed that. And the black squares that flashed on screen when it rained are gone (funny NaN issue). Lighting & Performance Caves are properly dark now unless something lights them, and lamp light hangs in the air a bit so lamps actually glow instead of just painting the wall. Lighting runs on its own thread now so it doesn’t eat into your frame, and sun shafts and lamp glow render at half resolution, which made them way cheaper and you can’t tell. Also fixed a bunch of random bugs: Game freezing for a few seconds when you broke a block somewhere new. The world sometimes thinking it was still loading forever. Memory getting corrupted when you closed the game. The settings back button hiding off the bottom of the screen at 720p."}, {"post_id": 74371, "ts": "2026-09-27T08:18:33Z", "hours": 4.6833, "text": "Hallo, audio and the settings menu are in like I said last time, plus a mountain of bugs I only found by actually sitting down and playing it TLDR; The game has sound now, a real title screen, settings with quality presets, and I fixed a ton of stuff that only showed up during long play sessions Audio: The world was dead silent so I added a bunch of CC0 sounds. Every block has its own break, place and footstep sound based on what it’s made of now instead of almost everything falling back to one generic clip. Jumping, landing (heavier sound if you fall from high up), getting in and out of water, all of that. Funniest part is the audio test was passing the whole time while the game made zero sound, it only checked that sounds were “playing”, not that anything came out of the speakers, so now it actually listens to the output. Also added ambience for every biome, birds, cicadas, frogs, desert wind, waves, gulls and cave drips. Some I generated myself from noise and some are real recordings. Menus: Proper settings menu with tabs and Low/Medium/High/Ultra presets. The presets actually change how much work the shaders do instead of just flipping effects on and off. Render scale got a sharpening pass so running it below 1 doesn’t look like mush anymore, and a few settings were quietly resetting every time you launched which is fixed. Made a real title screen too, you can type a seed or load a saved world and it shows the actual world behind the menu, it even previews the terrain as you type a seed. First version of it had buttons that did literally nothing when you clicked them lol. Also added a screenshot key, crash dumps and an app icon. Bugs (so many): The first block you broke after launching froze the game for like 10 seconds and every edit after that for another second or two. Sometimes the area you spawned in just never loaded and you had to fly to the nearest chunk. Flying fast made it look like the whole world was reloading. Ultra was loading a smaller world behind the loading screen and then doubling it the second you spawned, so the start was super laggy. Hard black blotches all over the terrain in the day turned out to be cloud shadows aliasing, and the checkered pattern on grassy slopes was ambient occlusion getting applied twice. Water had black spots at certain angles from the reflections freaking out, and weird streaks across lakes that turned out to be the ambient occlusion using the lake bed under the water instead of the surface. Caves were getting lit by the time of day which makes no sense, light fading off in visible rings is gone, and the leaf texture had no transparency so every tree was a solid blob this entire time. Did a lighting pass to make it look more like a shader pack, overdid it and everything was way too bright, so I dialed it back. Also killed contact shadows completely, they caused more problems than they fixed. Next up is making the world more interesting, new biomes, animals and better weather"}, {"post_id": 65910, "ts": "2026-09-11T11:20:25Z", "hours": 8.0572, "text": "Hallo pretty big changelog because I didn’t do anything for a bit oops TLDR; Cleaned out old bugs, did a performance pass, built actual world simulation and did a full graphics overhaul Bugs : Chunks were silently vanishing past a hardcoded cap that was way too low for default settings, no draw, no shadow, which turned out to be that “chunks glitch out while moving” bug. Fixed it plus streaky stars, a moon that looked like a tiny sun, and water growing phantom walls at chunk borders from an earlier fix. Teleporting somewhere far caused a 1004ms freeze. Profiled it instead of guessing and found the GPU arena was doing a full reset every time. Fixed properly and worst case is under 12ms now. Performance : Frame time was 15.5ms. Turned out shadows were re-rendering every single frame for no reason, only redrawing a cascade when it actually needs to cut that down 89% and dropped the whole frame in half to about 2.3ms. Built a couple things expecting wins that turned out to be losses when actually measured (one was 28% slower), and almost built a whole defrag system for the arena before realizing it wasn’t fragmentation, it was just too small so I bumped it up and the problem vanished on its own. Real world woahh : Flowing water, colored block light, ore veins that actually clump instead of speckling everywhere. Rewrote falling sand and gravel, the old version was doing 118k lookups a tick and never even stopped. Rebuilt caves properly using two noise fields overlapping instead of one, actual tunnels now instead of flat noodles. Also chunks exist at any height now, no ceiling at all. Building that surfaced 3 old bugs that had been broken this whole time. Graphicss : Water got reflections, caustics, underwater god rays. Found an evil ass NaN bug doing the caustics where the seabed was rendering as solid black rectangles until I caught it. Rain and snow are generated entirely in the vertex shader, so 30k drops cost one draw call and zero buffer uploads. Volumetric clouds and cloud shadows now share the same noise field so they can’t disagree with each other. Also fake normal maps with zero authored art, the pixel art textures already have the detail baked into their own shading so I just reused that as the normal map, completely free. Built and killed an atmosphere LUT after measuring it three separate times, kept losing to the simple hand tuned sky. Also fixed emitters like lamps flickering their own glow depending on the angle you looked at them. Next up is audio, a settings menu, and makign the game look better somehow"}, {"post_id": 43979, "ts": "2026-08-09T13:45:27Z", "hours": 8.1175, "text": "voxel engine devlog #3 Shadows, post processing, save files, and actual trees. GPU arena overflow funny moments it was not pleasant to deal with + graphics overhaul (added water) Forward HDR & Shadows: Built a full pipeline with 3 cascade shadow maps, half-res SSAO, and Jimenez bloom. Shadows were super vertex-bound at first (5.12ms), but tightening the cascade splits chopped that straight down to 3.5ms. Saving to Disk (.vxr Region Files): Chunks now compress using varints (a cave chunk shrinks from 65 KB down to 5.7 KB). We now only save edited chunks as a diff against the noise seed while everything else regenerates on the fly. I tested it by blowing up a wall, flying a few thousand blocks away to evict it, flying back, and it reloaded intact from disk. Trees without neighbor lookups: Solved tree canopy generation across chunk borders by making them deferred. Each chunk calculates what parts of nearby tree roots fall inside its bounding box, avoiding goofy crossthread neighbor lookups. Water meshing: Added water as a second mesh layer. Opaque faces draw against air or water (so you see the seabed), while water faces only emit against air. Performance upgrades: High render distances were causing massive frame stalls because the GPU arena buffer was running at 92% capacity and triggering full GPU resets. Bumped the arena from 8M to 16M quads (128 MB) and nuked a hidden O(N) chunk scan sooooo hopefully smooth sailing from now . What now?: Full pipeline runs at ~4.5ms (~0.9ms with shaders off). Up next: smoothing out face lighting with per-corner ambient occlusion (AO) baked into the greedy mesh and looking into SSR for water."}, {"post_id": 33323, "ts": "2026-07-23T04:07:54Z", "hours": 5.7403, "text": "voxel engine devlog #2 Threading turned into rendering turned into lighting turned into an actual world with caves in it, all in one sitting. This was NOT the plan but here we are lol. Threading: got gen + meshing off the main thread onto a real worker pool. Workers are just pure functions, voxels in results out through queues, so the only actual cross-thread headache was stopping a chunk from getting unloaded while another job was still reading it (fixed with a refcount). World output came out byte-identical to before which is exactly what I wanted, just moved where the work happens not what it produces. Worst case frame during a full re-stream is under 1ms now. One draw call: this was the fun one. Went from 349 draw calls (one per chunk, kind of wacko ngl) down to 1. GPU buffer stays persistently mapped, culling got moved into a compute shader, and the indirect draw pulls its own visible count straight off the GPU so it never even touches the CPU. Same exact pixels as before, just the CPU isn’t sitting there doing a bunch of pointless work anymore. Cave culling: engine now figures out which chunks you could actually see air through and just doesn’t draw the rest. Above ground that’s about 40% fewer chunks. My sealed test room underground was cutting 98%+ but that number came back down once real caves existed instead of one clean sealed box, which makes sense since it’s following actual connectivity now instead of a best case demo. Lighting: sky + block light through BFS, baked straight into the mesh so there’s no separate lighting pass at render time. Threw in a glow block to test with. Removing a light source zeroes it out exactly and adding it back restores it exactly, verified both instead of assuming it just works. Terrain + you can hit stuff now: swapped the flat test world for actual noise based terrain, caves carved with 3D noise instead of flat tunnels. Added raycasting so you can break/place blocks. Player movement runs on a fixed timestep so framerate literally cannot change how fast you move. Next up: lighting is flat per face right now, want that smoothed per corner eventually. also got one frame time spike during heavy cave streaming I need to go check out before it turns into an actual problem once flying through caves is a thing."}, {"post_id": 33131, "ts": "2026-07-22T19:16:08Z", "hours": 9.4881, "text": "voxel engine first devlog yayyyyyy!!!!!! Deadahh just wanted to put everything from the last few days into one initial devlog so I don’t have to keep yap too much. Started with basic OpenGL 4.6 and GLFW, instead of using string lookups for shaders which is clown behavior, everything uses explicit locations. I also set up a headless smoke test so the CI can render offscreen, check its own pixels, and pass without popping up a window and being too goofy. For debugging, I threw in an ImGui menu to track frames, draw calls, and memory without making the heap allocator crash out. Steady-state heap allocations are at zero right now + also flipped the depth buffer to reversed-D because standard depth buffers kaboom at long distances and make the textures Z-fight. The Mesher thingy The first mesher I built was literally just a mesher. A regular mesher. There was nothing special about it. It just emitted 6 expanded vertices per face which took up way too much space (615 KB a chunk) and was slow. I improved it and made a binary greedy mesher that packs an entire quad into a single 64-bit integer. It uses 64-bit bitwise column ops to merge faces instantly. 2.7x fewer triangles and 33x less memory. It’s so fast it takes like 0.05ms and I also ripped out VBOs completely for SSBO vertex pulling, meaning the GPU just reconstructs the geometry on the fly. There was one issue where the greedy mesher left microscopic sub-pixel holes everywhere so I kept seeing pinhole cracks, so I just bloated every quad by 0.001 so they overlap and cover it up (surely this works well enough). Chunks & Compressing Having raw voxel arrays was eating my RAM alive, so I used palette compression. If a chunk is entirely air or entirely stone, it just stores one ID now. If it’s mixed, it bit-packs the indices, this dropped voxel memory by 20x. We’re streaming a 21x21x4 chunk radius (like 2,100 chunks) and it only takes 6.6 MB. Added a chunk streaming manager so it loads in a ring around you. I had to put strict budgets on generation and meshing per frame, otherwise the game just freezes when you move too fast + CPU frustum culling means we only actually draw the chunks you’re looking at. What’s Next? Right now the engine is in the state of being too good and being too bad at the same time. It’s doing like 349 individual draw calls per frame (one for every visible chunk). It works, but it’s got some quirks that I need to kaboom first. Next up is building a persistent arena buffer and GPU-driven culling so we can collapse the entire world into ONE single draw call using indirect drawing."}]...
|
Title: Voxelium by @notryaan | Stardance
Devlogs: Title: Voxelium by @notryaan | Stardance
Devlogs:
voxel engine first devlog yayyyyyy!!!!!! Deadahh just wanted to put everything from the last few days into one initial devlog so I don’t have to keep yap too much. Started with basic OpenGL 4.6 and GLFW, instead of using string lookups for shaders which is clown behavior, everything uses explicit locations. I also set up a headless smoke test so the CI can render offscreen, check its own pixels, and pass without popping up a window and being too goofy. For debugging, I threw in an ImGui menu to track frames, draw calls, and memory without making the heap allocator crash out. Steady-state heap allocations are at zero right now + also flipped the depth buffer to reversed-D because standard depth buffers kaboom at long distances and make the textures Z-fight. The Mesher thingy The first mesher I built was literally just a mesher. A regular mesher. There was nothing special about it. It just emitted 6 expanded vertices per face which took up way too much space (615 KB a chunk) and was slow. I improved it and made a binary greedy mesher that packs an entire quad into a single 64-bit integer. It uses 64-bit bitwise column ops to merge faces instantly. 2.7x fewer triangles and 33x less memory. It’s so fast it takes like 0.05ms and I also ripped out VBOs completely for SSBO vertex pulling, meaning the GPU just reconstructs the geometry on the fly. There was one issue where the greedy mesher left microscopic sub-pixel holes everywhere so I kept seeing pinhole cracks, so I just bloated every quad by 0.001 so they overlap and cover it up (surely this works well enough). Chunks & Compressing Having raw voxel arrays was eating my RAM alive, so I used palette compression. If a chunk is entirely air or entirely stone, it just stores one ID now. If it’s mixed, it bit-packs the indices, this dropped voxel memory by 20x. We’re streaming a 21x21x4 chunk radius (like 2,100 chunks) and it only takes 6.6 MB. Added a chunk streaming manager so it loads in a ring around you. I had to put strict budgets on generation and meshing per frame, otherwise the game just freezes when you move too fast + CPU frustum culling means we only actually draw the chunks you’re looking at. What’s Next? Right now the engine is in the state of being too good and being too bad at the same time. It’s doing like 349 individual draw calls per frame (one for every visible chunk). It works, but it’s got some quirks that I need to kaboom first. Next up is building a persistent arena buffer and GPU-driven culling so we can collapse the entire world into ONE single draw call using indirect drawing.
voxel engine devlog #2 Threading turned into rendering turned into lighting turned into an actual world with caves in it, all in one sitting. This was NOT the plan but here we are lol. Threading: got gen + meshing off the main thread onto a real worker pool. Workers are just pure functions, voxels in results out through queues, so the only actual cross-thread headache was stopping a chunk from getting unloaded while another job was still reading it (fixed with a refcount). World output came out byte-identical to before which is exactly what I wanted, just moved where the work happens not what it produces. Worst case frame during a full re-stream is under 1ms now. One draw call: this was the fun one. Went from 349 draw calls (one per chunk, kind of wacko ngl) down to 1. GPU buffer stays persistently mapped, culling got moved into a compute shader, and the indirect draw pulls its own visible count straight off the GPU so it never even touches the CPU. Same exact pixels as before, just the CPU isn’t sitting there doing a bunch of pointless work anymore. Cave culling: engine now figures out which chunks you could actually see air through and just doesn’t draw the rest. Above ground that’s about 40% fewer chunks. My sealed test room underground was cutting 98%+ but that number came back down once real caves existed instead of one clean sealed box, which makes sense since it’s following actual connectivity now instead of a best case demo. Lighting: sky + block light through BFS, baked straight into the mesh so there’s no separate lighting pass at render time. Threw in a glow block to test with. Removing a light source zeroes it out exactly and adding it back restores it exactly, verified both instead of assuming it just works. Terrain + you can hit stuff now: swapped the flat test world for actual noise based terrain, caves carved with 3D noise instead of flat tunnels. Added raycasting so you can break/place blocks. Player movement runs on a fixed timestep so framerate literally cannot change how fast you move. Next up: lighting is flat per face right now, want that smoothed per corner eventually. also got one frame time spike during heavy cave streaming I need to go check out before it turns into an actual problem once flying through caves is a thing.
voxel engine devlog #3 Shadows, post processing, save files, and actual trees. GPU arena overflow funny moments it was not pleasant to deal with + graphics overhaul (added water) Forward HDR & Shadows: Built a full pipeline with 3 cascade shadow maps, half-res SSAO, and Jimenez bloom. Shadows were super vertex-bound at first (5.12ms), but tightening the cascade splits chopped that straight down to 3.5ms. Saving to Disk (.vxr Region Files): Chunks now compress using varints (a cave chunk shrinks from 65 KB down to 5.7 KB). We now only save edited chunks as a diff against the noise seed while everything else regenerates on the fly. I tested it by blowing up a wall, flying a few thousand blocks away to evict it, flying back, and it reloaded intact from disk. Trees without neighbor lookups: Solved tree canopy generation across chunk borders by making them deferred. Each chunk calculates what parts of nearby tree roots fall inside its bounding box, avoiding goofy crossthread neighbor lookups. Water meshing: Added water as a second mesh layer. Opaque faces draw against air or water (so you see the seabed), while water faces only emit against air. Performance upgrades: High render distances were causing massive frame stalls because the GPU arena buffer was running at 92% capacity and triggering full GPU resets. Bumped the arena from 8M to 16M quads (128 MB) and nuked a hidden O(N) chunk scan sooooo hopefully smooth sailing from now . What now?: Full pipeline runs at ~4.5ms (~0.9ms with shaders off). Up next: smoothing out face lighting with per-corner ambient occlusion (AO) baked into the greedy mesh and looking into SSR for water.
Hallo pretty big changelog because I didn’t do anything for a bit oops TLDR; Cleaned out old bugs, did a performance pass, built actual world simulation and did a full graphics overhaul Bugs : Chunks were silently vanishing past a hardcoded cap that was way too low for default settings, no draw, no shadow, which turned out to be that “chunks glitch out while moving” bug. Fixed it plus streaky stars, a moon that looked like a tiny sun, and water growing phantom walls at chunk borders from an earlier fix. Teleporting somewhere far caused a 1004ms freeze. Profiled it instead of guessing and found the GPU arena was doing a full reset every time. Fixed properly and worst case is under 12ms now. Performance : Frame time was 15.5ms. Turned out shadows were re-rendering every single frame for no reason, only redrawing a cascade when it actually needs to cut that down 89% and dropped the whole frame in half to about 2.3ms. Built a couple things expecting wins that turned out to be losses when actually measured (one was 28% slower), and almost built a whole defrag system for the arena before realizing it wasn’t fragmentation, it was just too small so I bumped it up and the problem vanished on its own. Real world woahh : Flowing water, colored block light, ore veins that actually clump instead of speckling everywhere. Rewrote falling sand and gravel, the old version was doing 118k lookups a tick and never even stopped. Rebuilt caves properly using two noise fields overlapping instead of one, actual tunnels now instead of flat noodles. Also chunks exist at any height now, no ceiling at all. Building that surfaced 3 old bugs that had been broken this whole time. Graphicss : Water got reflections, caustics, underwater god rays. Found an evil ass NaN bug doing the caustics where the seabed was rendering as solid black rectangles until I caught it. Rain and snow are generated entirely in the vertex shader, so 30k drops cost one draw call and zero buffer uploads. Volumetric clouds and cloud shadows now share the same noise field so they can’t disagree with each other. Also fake normal maps with zero authored art, the pixel art textures already have the detail baked into their own shading so I just reused that as the normal map, completely free. Built and killed an atmosphere LUT after measuring it three separate times, kept losing to the simple hand tuned sky. Also fixed emitters like lamps flickering their own glow depending on the angle you looked at them. Next up is audio, a settings menu, and makign the game look better somehow
Hallo, audio and the settings menu are in like I said last time, plus a mountain of bugs I only found by actually sitting down and playing it TLDR; The game has sound now, a real title screen, settings with quality presets, and I fixed a ton of stuff that only showed up during long play sessions Audio: The world was dead silent so I added a bunch of CC0 sounds. Every block has its own break, place and footstep sound based on what it’s made of now instead of almost everything falling back to one generic clip. Jumping, landing (heavier sound if you fall from high up), getting in and out of water, all of that. Funniest part is the audio test was passing the whole time while the game made zero sound, it only checked that sounds were “playing”, not that anything came out of the speakers, so now it actually listens to the output. Also added ambience for every biome, birds, cicadas, frogs, desert wind, waves, gulls and cave drips. Some I generated myself from noise and some are real recordings. Menus: Proper settings menu with tabs and Low/Medium/High/Ultra presets. The presets actually change how much work the shaders do instead of just flipping effects on and off. Render scale got a sharpening pass so running it below 1 doesn’t look like mush anymore, and a few settings were quietly resetting every time you launched which is fixed. Made a real title screen too, you can type a seed or load a saved world and it shows the actual world behind the menu, it even previews the terrain as you type a seed. First version of it had buttons that did literally nothing when you clicked them lol. Also added a screenshot key, crash dumps and an app icon. Bugs (so many): The first block you broke after launching froze the game for like 10 seconds and every edit after that for another second or two. Sometimes the area you spawned in just never loaded and you had to fly to the nearest chunk. Flying fast made it look like the whole world was reloading. Ultra was loading a smaller world behind the loading screen and then doubling it the second you spawned, so the start was super laggy. Hard black blotches all over the terrain in the day turned out to be cloud shadows aliasing, and the checkered pattern on grassy slopes was ambient occlusion getting applied twice. Water had black spots at certain angles from the reflections freaking out, and weird streaks across lakes that turned out to be the ambient occlusion using the lake bed under the water instead of the surface. Caves were getting lit by the time of day which makes no sense, light fading off in visible rings is gone, and the leaf texture had no transparency so every tree was a solid blob this entire time. Did a lighting pass to make it look more like a shader pack, overdid it and everything was way too bright, so I dialed it back. Also killed contact shadows completely, they caused more problems than they fixed. Next up is making the world more interesting, new biomes, animals and better weather
Final devlog (probably) Terrain & World Gen The old terrain was hills everywhere with puddles in between, and the mountains were random spikes shooting straight up out of flat ground like something was stabbing the map from underneath. So I rewrote the whole generator. There’s real seas now with islands and deep water, and coasts start with a proper wide beach before the land slowly rises. Mountains come in long ranges with foothills, bare rock on the steep parts, a treeline and snow on top, and deserts are one big desert instead of a sand patch in the middle of nowhere. Getting the mountains right took way longer than I want to admit. First they went up like walls, then there were 40 block deep trenches running in perfectly straight lines for hundreds of blocks through the hills. Turned out the math that works out how far you are from the coast completely loses it deep inland, so now it looks out in eight directions for the actual coast instead of guessing. Old worlds keep their old terrain so nothing you built gets new ground under it. Caves & Structures Caves are actual caves now: huge caverns, long winding tunnels, ravines, water pooled at the bottom, and stalactites. They also don’t break out of the side of every hill anymore, which is where all those random gaps and chasms were coming from. Old mineshafts run through them with lamps and plank bridges over the drops, and there’s pyramids out in the desert with a lit room inside. There’s also something hidden under the pyramids but I’m not telling you what. Water & Animals Water has actual waves now, flat at the beach, bigger out in deep water, and way bigger in a storm. Also fixed far away water reflections breaking into lines. The animals were ghosts this whole time; you could walk straight through a turtle. Now they’re solid, punching one knocks it back and it runs off, and swimming into a school of fish scatters them. The fish were also translucent, fixed that. And the black squares that flashed on screen when it rained are gone (funny NaN issue). Lighting & Performance Caves are properly dark now unless something lights them, and lamp light hangs in the air a bit so lamps actually glow instead of just painting the wall. Lighting runs on its own thread now so it doesn’t eat into your frame, and sun shafts and lamp glow render at half resolution, which made them way cheaper and you can’t tell. Also fixed a bunch of random bugs: Game freezing for a few seconds when you broke a block somewhere new. The world sometimes thinking it was still loading forever. Memory getting corrupted when you closed the game. The settings back button hiding off the bottom of the screen at 720p.
OK FINAL DEVLOG ACTUALLY There were a few bugs from the previous one which I had to fix before release Tree tops looked unlit and forests looked really gloomy, even in full sun. The light was reaching them fine, the auto exposure was measuring the whole screen including the bright sky and darkening everything under it. It only measures the world now, so trees actually look lit Every new world had an old glowing test room carved underground in the same spot. It’s gone from new worlds, old worlds keep it so nothing in them changes- The game was running one of my internal tests every single time it launched, it doesn’t anymore There was a hidden launch option that crashed the game on purpose, left over from testing the crash reporter, removed
Ships:
Voxelium 1.0 First release!! Voxelium is a voxel game I built from scratch in C++ and OpenGL, no engine, just a lot of code. Endless worlds with real seas, mountain ranges, caves, weather and animals, and you can break and build whatever you want. What’s in it Endless worlds from a seed: seas with islands, wide beaches, mountain ranges with snow on top, big deserts and forests, and you can see about 5 km out Caves with huge caverns, tunnels and ravines, old mineshafts running through them, and it’s actually dark down there so bring lamps Lighthouses, shipwrecks, desert ruins and pyramids (there’s something under the pyramids) Water that flows, waves that go crazy in storms, coral reefs and kelp forests Weather that does its own thing: rain, snow that piles up and melts, thunderstorms with real lightning, mist over the water at sunrise Crabs, turtles, fish, jellyfish that glow at night, birds, butterflies and fireflies. You can punch them, they will run Every block has its own sounds and every biome has its own ambience Break and place blocks, 25 lamp colours, no height limit, save as many worlds as you want Low / Medium / High / Ultra presets so it runs on more than just my PC Controls WASD + mouse, space to jump, F5 walk/fly, hold left click to break, middle click to place, F4 hotbar, ESC settings, F3 debug stuff Tips Hit New World on the title screen and type a seed or roll one. Save from the ESC menu if you want to keep a world If Ultra is laggy, turn down detail dist in the settings first, it’s the biggest cost by far Big thanks to everyone on opengameart.org whose textures and sounds are in here, they’re all credited in the readme....
|
1793148611.77453
|
1793235011.77453
|
|
39244
|
My Portfolio by @Harpaavan108 | Stardance
|
Harpaavan108
|
3
|
51.0
|
792
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T02:40:17Z", "hours": 13.0, "multiplier": 18.14, "payout": 243, "blessing": "neutral", "text": "Ship #2 for My Portfolio This is my second ship for this project. Since my first ship, I have mainly just added some small features to increase the UX. A lot of these changes were features that I had seen on websites that I liked. So when the time came to bedazzle my website, I implemented these features in my own website. One really consistent thing that I noticed while implementing these features, is that a lot of features are quite simple to implement once you understand the basic logic. I also noticed that once you add these small features, it can make a great effect on the UX, and that the few hours you put into the little things, can have a huge impact and create a great impression on those who visit your website. New Features I added a cool gradient horizontal scroll bar that fills up as you scroll down. I thought this was a super cool feature and required some simple JS logic to implement. The next thing was a loading page. It is a quite simple one, just having a gradient filled circle outline which spins to show a loading effect. Again a small feature just to add nice feel from the moment a person opens the webpage. The next thing was a scroll fade up reveal to everything in the site. I really like seeing this effect on other websites as well, so I wanted to implement it into my website as well I added media queries because I saw how bad the website looked on the phone, and it was just really annoying me. So I took the time to add that just in case I ever had to show anyone my webpage on the phone. After that, I decided to upload some of my certificates onto the website so people could very them, just to add another level of validity. However, instead of making the images open in another tab, I made them open in a modal that stays in the browser tab. I thought this was a super cool effect. Last thing was that I added my photo. To do this, I made it so that when someone hovered over my about me card, it would have a flip animation and on the other side my photo would show. I thought this was a nice and subtle was to implement my photo, without messing up any other styling on the page. Learning JS A lot of these features were implemented with JS, especially ones that were triggered with user input. I will acknowledge that I used AI to help with understanding JS logic for some of these features, and debugging as well, but I also learned along the way. I find JS much more complicated than HTML and CSS, and I think that I have really come far in understanding and implementing it. For examples, I can assign elements and add and remove classes based on user input. I still have some trouble with syntax, and that causes a lot of my problems, but I am really starting to get the hang of JS. I think that JS can create some really neat animations and effects, so I want to learn and understand this language, so that I can let others experience the cool things that I see on other websites. Overall I spent a lot of time on this project, and put in hours even after school started. It is a really personal project. I have come really far since I first started this project and I have grown confident in understanding and writing code and achieve the desired results. I probably will not work on this project after this ship, and will instead turn to other projects that I have pending. Please enjoy this project. If you have any suggestions, let me know in the review or as a comment, and I will try to implement it. Thank You!! Below is a picture of my stardance certificate in the modal that I made, and the other is a picture of the spinning gradient loader. Enjoy!!!", "repo": "https://github.com/Harpaavan-S/my-personal-website", "demo": "https://harpaavan-s.github.io/my-personal-website/"}, {"ship_num": 2, "ts": "2026-08-17T04:39:55Z", "hours": 37.0, "multiplier": 14.92, "payout": 549, "blessing": "neutral", "text": "My Portfolio Project Hi! Welcome to my Stardance project. In this project, I made a personal portfolio website so I could showcase my work. Especially as I enter high school this year, I wanted to have a platform to record all of my progress and have a way to display it to the public. I also wanted to get more experience with coding. Over the past few years, I have done like super mini project in HTML and CSS, but this website is one of my first fully developed projects, and that I have coded all by myself. So I took this opportunity to properly learn HTML and CSS, and also introduce myself to languages like JS and GLSL. Features The website has 6 sections that I made: Hero About Me Projects Experience Achievements Contact Here are some features of my website: The website has an interactive navbar which links to each section in the webpage. There is also a logo in the corner which will link to the Hero section. The navbar has a frosted glass look, which makes blurs the background behind it. The title in the Hero section (which is my name), has a rainbow gradient applied to it. The cool part is that the gradient moves and loops in the name, so the gradient is always moving slowly. This is actually applied to all of the section headings in the webpage. Each card in every section has a frosted glass look applied to it, so it will blur the background behind it. They also enlarge and brighten when you hover over them. The cursor is a small white dot instead of a regular cursor, which enlarges and turns light purple when hovering over a link to communicate to the user that the link is clickable and will lead somewhere. One of the main highlights is the background, which is a shader background made with GLSL, WebGL, and Three.js. The background is an animated gradient. It is also interactive as it will respond to the cursor on the screen. It is one of the key aspects that really make this website shine, and what really makes this project unique and different from other ones. The Easy and Hard Parts Easy Part There were some really easy parts while building this. One was building the HTML layout. After I understood the basics of making classes and organizing texts and everything, it was quite easy to start filling out info for all of the sections. I thought it would be like a really big thing to fill in all of that info, but turned out it wasn’t quite hard. Hard Part There were also hard parts. One main one was the shader background. First it took a really long time to code the first draft of that, as I had to make a shader in GLSL and then import Three.js, and all of that. But then that first draft didn’t work, so then it took me a really long time to debug the code as I had to look through everything for like typos and all that. I did use AI for this part, but it was still a really long and hard process, going back and forth trying to see what was wrong. But in the end it was totally worth it. Overall Overall, I spent a lot of time and effort in this project. One thing that I really wanted to do was make just that I documented all of my progress frequently in devlogs, and I think that I achieved that because all of the 13 devlogs that I have written are pretty detailed. I also wanted to make this unique to me, and I think that the shader background achieved that and just brought the project to a new level. I really hope you enjoy it, and I am happy to take any feedback. I hope to constantly keep updating this project over the next few years. Otherwise, I might add some new features to it (including a scroll bar) in the next month before Stardance ends and I get too busy with school. Below you can view some screenshots of each section of the website (it doesn’t let me upload a video, or else I would’ve done that). Enjoy!!!", "repo": "https://github.com/Harpaavan-S/my-personal-website", "demo": "https://harpaavan-s.github.io/my-personal-website/"}, {"ship_num": 3, "ts": "2026-07-26T23:22:26Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I am working on my personal portfolio. Right now I am just working and crafting the sections and filling in some info. I still have to work on styling and go through all of the sections. But for now I am going to ship", "repo": "https://github.com/Harpaavan-S/my-personal-website", "demo": "https://harpaavan-s.github.io/my-personal-website/"}]...
|
[{"post_id": 63958, "ts": "202 [{"post_id": 63958, "ts": "2026-09-08T01:36:41Z", "hours": 2.1653, "text": "Devlog # 17 This is my final devlog before I ship! I wanted to add a picture of myself in the website so I tried to find a way to do that. I decided that I will make it so that the about me card will flip when hovered over and on the other side will be my image. I thought it would be pretty simple, so I began working on it at 12 last night thinking I could finished it in about 30 minutes. Turns out I was wrong. It took me more than two hours just to get a card to flip and show my image. It was a pain, but the end result looks really neat. Current Progress To make the flip card, I had to restyle the entire about me section. I used a W3Schools tutorial, but i couldn’t end up working well with it, so then I turned to AI for debugging, because I had so many div layers for that card, and then I finally styled it to look good. The effect looks really good though. As well, I decided to publish everything to Github as well now because I hadn’t published anything for the past couple of days so yeah. Then I found a problem with the images not getting pulled correctly, so then I had to transfer all of those to a public/ folder and then adjust the file paths for all of them in my code, and then reload and redeploy like a bajillion times. So it was a lengthy process, but I finally got it working publically, Next Steps My next step is to ship. I really hope I get rated good because I want a pebble time 2. After this I will begin to work on my next project for the remainder of the event, which is a new tab page. After that, I am done with Stardance, as I also have a lot of school work now. So I will ship soon!!"}, {"post_id": 63201, "ts": "2026-09-06T21:23:17Z", "hours": 4.7169, "text": "Devlog #16 So I decided to implement some feedback that I got from the last ship. One piece of this was adding my actual certificates into the website, so people could actually view them in the webpage. So I took some time to scan all my certificates. Creating the links wasn’t quite hard, and at first I thought about just letting it open in a new tab, but then I decided to create a modal just to enhance the UX. Current Progress I decided to add all my certificates into the webpage, just to add a layer of validity to my work. The first part was finding all of the certificates. Whatever I had, I added them to my GitHub repo, and just linked the relative paths in the webpage. The ones which I had online, I just drag and dropped into the repo, while the physical ones I had to scan and then add in. So that took a while, but wasn’t too tedious of a process. After that, I just made a “View ->” sign that appears when you hover over the card, and that is actually a link to the image. Then I decided to make a modal. I realized it actually isn’t too hard, but the JS logic is a but complicated. I styled the modal in CSS, and then just added a .open class to it which was activated when you click the link. So I’m starting to understand JS logic, the only thing that I have trouble with now is writing like proper syntax, as I still have trouble with writing the correct syntax, and that can cause some problems. So then I styled how the image looks in the modal. At first I though about add ing a X to close the modal, but then I made it so then if you press outside the image, then the modal disappears. Some of my UCMAS achievements do not have images attached to them because I couldn’t find actualy certificates for them, so I might take pictures of my trophies to put there, but I haven’t got to that yet, and I don’t want to put low-quality images. So those are still empty, but almost everything else is filled, so now you can go and view those. Next Steps I literally don’t have anything left to do on this, so I think the next step is to just ship. I will take a break from this project and begin to work on my next one, which will be making a cool new tab page from my browser. So expect a ship soon. If anyone has any suggestions on something to add, you can let me know! Below is an image of my stardance certificate shown in the modal on the page."}, {"post_id": 57641, "ts": "2026-08-29T21:00:28Z", "hours": 2.5014, "text": "Devlog #15 This will be a fairly short devlog. I spent this block adding media queries to my CSS code because I opened the website on my phone, and it just looked so wrong to me, so I spent some time doing that. I figured out a great way to simulate a phone screen in my browser using DevTools so I was able to adjust everything through that. Current Progress The plan was that I was going to do media queries at first, but I thought it would be too complicated so I held it off. Now I was kinda forced to after seeing how bad the webpage looked on a phone screen. I realized you just have to make on CSS rule for media queries using media (max-width: 768px) {} . I decided to use 768px because that is like a standard width, but I mainly tested it on 400px width. After that, I opened two windows with my code and as I went through it, I would add a media query rule in the other window. So I conquered my fear of media queries, and addressed that issue. Next Steps I am looking for things to do. One piece of feedback that I got was that my cards had hover effects that made them look like buttons, but had no button effects, so it was kinda misleading. So to fix this, I’m thinking of like scanning my certificates and uploading them as pictures that people can view in the browser. So that’s my next step. To accompany this, I might also do like a redesign of the website, like just adjusting some of the features. Also, I’m thinking of adding a dark mode/light mode feature on it. Below is a quick video of the site on a device with a width of 400px."}, {"post_id": 53562, "ts": "2026-08-24T04:58:54Z", "hours": 4.0317, "text": "Devlog #14 So I started working on it further before my project even got fully rated, so this is my first devlog after shipping my portfolio! During this block, I just added some small features that just overall polished my site a bit more. A lot of these features were added in JS, and I think I actually am starting to get the hang of JS in the way that I actually am starting to understand how to identify objects using const and like how to select them using document.querySelector . So I think I am starting to learn, and just working with these little features just got me a little more familar with JS. I also got the hang of CSS animations, as before I had a little trouble understanding keyframes, but now it makes sense, so it was a good block. Current Progress I added three main things to my website, each of which use JS in them, and I will explain how. The first thing that I added was a scroll progress bar at the top. I really wanted to add this onto website, as I really liked seeing them on other websites, and I styled it to match my theme, and it just looks super good. I make a horizontal bar in my navbar for this, and it has a rainbow gradient. Basically, JS detects where the person is at the website, and just adjusts the scale based on that to show the bar. At first, I made it so it would expand as I scrolled, but then the rainbow was like squished at the beginning, and then I adjusted it so that it actually revealed the bar as I scrolled down, so like same idea but just applied to a different thing. I looks super cool now. The next thing that I added was a loading page. I tried to look into some videos for this, but I ended up making a super simple gradient ring that was animated (again to spin a rainbow). For this, I like made a loader page, which covered the whole view. In it, I made a circle which had a rainbow conic gradient, and then just animated it in CSS to rotate to 360 degrees over the course of like 1.2 seconds. I then used JS to add a class which made the loader disappear and like unresponsive to any pointer controls when the site finished loading. It also looks super good and totally matches the vibe of the site. So yeah, super happy with that. The last thing that I added was like a scroll fade up reveal effect to almost everything in my site, like the cards and the headings and everything. Again, this was a pretty simple trick that I used. Basically you set the object a set number of pixels (like I used 30px) down on the Y axis and turn the opacity down, and then when JS detects the object as the person scrolls, it just moves it up to 0px on the Y axis and goes to full opacity, and it ends up looking super sleek. That little touch just upped the whole website. I was actually looking to add this feature in the beginning of my site, but I never got to it mainly because it used JS, so now I took the chance to add it in. A lot of these features were ones that I saw in like cool websites. So like I’m always on the lookout for cool features, and these were some that I thought really made a website look more polished, and I realized that they are not actually that hard to build once you understand the core concept. Through these I really got better in JS, and upped my skills in CSS, so it was a good block. Next Steps I really do not have anything left to add in this project. Like I even added extra stuff. Please, if you guys have any suggestions, comment them so I can implement them. I will attach a video of my site so you guys can see what its like. One thing I might consider adding is like a easter egg thing or some like sequence or action that will generate a cool surprise. I have to still think about that. But right now I have almost nothing left to do. I actually might ship this again just to get the hours counted in. Below you can see the loading and the scroll fade up reveal and the scroll progress bar at the top."}, {"post_id": 48639, "ts": "2026-08-17T03:42:49Z", "hours": 7.0575, "text": "Devlog #13 (Last Devlog Before Ship) I am finally done with my website. Please read the NEXT STEPS section of this devlog as I have favour to ask you guys . I spent 7 hours of my life building a shader background for my website, but it totally paid off in the end because now I have a really cool, interactive, animated gradient background. I used GLSL to write a shader, and WebGL and Three.js to implement it into my website. I used a video tutorial and some AI debugging to achieve the effect, but it really was a learning process, as I had to install all the tools for it and then work with those, so I learned how to use those. Because of this, I also spent some time updating my README. Current Progress First of all, it took me a really long time to find a good tutorial to make a background, because I really wanted an animated one to show my blur effect and really add a pop to my website. To acheive a shader background I watched a video tutorial from Codegrid, which explained everything really nicely and was quite quick, so I was able to write the code. After though, the background didn’t quite show, so then I used the help of AI to help debug the code and get it working. After I finally got it to work, I spent some time adjusting colors, and brush strength and size, and then distortion amount and fluid decay and all of that stuff until I found the perfect values for a super good looking background. Overall, it was definately worth the time and added a really nice touch to my webpage. I also updated by README, because now the user will need to install some dependencies for this webpage because of the addition of Three.js and everything. So I updated the README to include proper instructions for that and so it explained some more features of my website. I really polished it up, because it was kinda messy before, so I got it ready for a ship. I also changed my cursor one last time. What I had before was a <div> element in HTML following my actual cursor using mousemove in JS, and my actual cursor was hidden in CSS. However, it was like lagging behind and that was starting to show on my new background. So instead, I just made my cursor a little white dot in CSS by liking making a svg file and linking it to the cursor. It just improved user interaction a lot be removing any lag between an following element and the actual cursor. There is still the feature where it will turn bigger and light purple when hovering over a link. Next Steps My next step is to ship!!! However, I have to ask you guys for something. I need some color suggestions for my background. I got a nice one right now that is like dark purplish, but I want your guys’ suggestions on what type of gradient I should make. I can put 4 colors into the gradient. You can use the attached video below to view how the shader looks on the hero page. I do have glass cards, so I don’t want something too light, but it could make a nice addition in a dark gradient. So please put some suggestions in the comments!!! Thank you!!! I will ship right after this, but I will for sure try to look over some color suggestions and experiment around with them. I might try to use one before I ship the final version of the website, so please put some suggestions. Expect a ship really soon."}, {"post_id": 46584, "ts": "2026-08-13T22:23:45Z", "hours": 4.4961, "text": "Devlog #12 This block was mainly dedicated towards making my site look a lot more aesthetic. I spent over 4 hours just tinkering with JS and fonts and color combos and everything, trying to find the perfect combos and fonts that looked super good. I am overall very happy with the progress that I made in this amount of time. At first I thought that the site looked good even without any styling because of my color gradients and all of that, but I just realized how much better it is with like better fonts, and like the small things, like moving gradients instead of static ones. So this whole block was just dedicated to making my site look better. Current Progress The first thing that I did was change my cursor. For this I had to use JS. I changed the cursor to just be like a little white dot with a nice glow around it, and then when it hovers over like a link, then it gets a bit bigger and turns into a light purple color. In JS, I figured out how to like grab an element from CSS, and then use like states, like mousemove to have like a specific action, and then like have the dot follow my actual cursor, but super close so it seems like that is the cursor. And then I hid my actual mouse to really sell the illusion. For the hover thing, I created a hover class in CSS, and then added that class when the mouse “entered” a link, and removed it when it “left” the link. The next thing I did was make the gradients on my text like circle around, so the gradient was always moving around and it looked like dynamic. I actually got this idea from the Hack Club website because in there they have a moving gradient on the text. For this, I actually did not need any JS, and instead just make a looping animation in CSS for the background of the text. I first did it only for the Hero title, but then I liked it so much that I added it to all of the section headings so yeah I thought was a really nice addition The next thing that I did was to edit my skill icons. I mentioned in a previous devlog when I was styling the About Me section, that the little subtitle for each skill was showing on the top of it, so then for skills in the bottom row, it was covering the skill on top. I also used JS for this fix. I first made a class for the subtitle on the bottom, and then again in JS made it so if it was detected to be lower, that class would apply The last thing I did was change the fonts. I am really happy I did this, because the site just looks so much better with different fonts. I imported all of my fonts from Google Fonts. I inserted the link in the <head> section and then used that font family in CSS. I did a lot of like comparing and swithcing around and researching and all of that just to find good fonts, and I have a really bad habit of like taking a lot of time on these kind of things, and it wasn’t even getting tracked on Hackatime, so I tried to do it quickly. I found some really nice fonts for the headings and titles so I am super happy with that. Next Steps Now the only thing left to do that I still havent gotten around to yet is making a really nice background in JS. I really want to make an animation background, because I think that will be like a unique aspect of my website. The main thing I really want that for is the glassmorphism effect that I have on the cards. On a plain dark background, you can’t tell at all that there is a glass effect. But with a sick background that moves, you can see that shapes blur under the cards. So I think that is the last thing to do, because I finished up all the small little details. However, I also think this will be the longest and hardest part because of its complexity in JS so yeah. I am really hoping to ship soon after 1 or 2 more devlogs. Below is a video of the new hero section with cool fonts and a moving gradient background."}, {"post_id": 45456, "ts": "2026-08-11T22:41:43Z", "hours": 3.7847, "text": "Devlog #11 I have finally finished styling my whole website in CSS. It was such a long process, but I really think that I learned how to code in CSS. Position and display no longer confuse me and I have gotten the hang of adding cool effects to me elements. I am really liking the theme of my website, but I still have more to do. Right now, I have a lot of empty space in my website. Because all of my cards are glassmorphism, I am planning to use JS to make really neat background just to add like a nice touch and really sell the website, but that might be after the first ship. I am also planning to change some fonts and all that, so still a lot to do. Current Progress I finished the Achievements and Contact section and also styled my footer. I made a masonry style layout for the achievements, and I think the design turned out really neat. At first, I thought I would use a flexbox or a grid, but then I saw that I could just make a fized number of columns and the text would just automatically arrange itself. So I used that instead of getting all tangled up in like flex and grid properties and all of that. But then it actually made it like vertically ordered, but I wanted it horizontally, so I took the time to like arrange them so that the layout would appear even and it would look like it was horizontally arranged, when in reality it is actually vertically arranged but in a weird way. It makes more sense when you look at it. I also finished the Contact section. This was quite easy. I just styled it like the Hero and added two little icons: one to my email, and the other to my github, so yeah that was pretty simple. I first thought of adding a contact form, but then I realized that that needed a backend, so I decided against that. Again, if I want, I might add it later in the future, but for now I will leave it at just to two icons. So mainly I finished those two sections in this block. One more cool thing that I discovered was how to make links open to a new page, because while I was trying out links it was bugging me that it was always opening in that page, so this really put my mind to ease a bit, and makes navigation a bit easier. Next Steps I am planning to ship very soon. I am thinking of just adding some finishing touches before shipping the first version, like some font changes. I might also just try to play around in JS, and like get a feel of it, Because I think that a cool background will really take it to the top, so I will play around a bit with that. i’m also thinking about adding like scroll up effects, especially for like my experience timeline. But yeah next steps might just to be to polish it up just a bit before shipping. I am super excited to try out JS, and hope that the final product will be awesome. Below is a picture of the masonry effect of the achievements section."}, {"post_id": 44357, "ts": "2026-08-10T02:05:02Z", "hours": 3.055, "text": "Devlog #10 I have finished the Experiences section of the website. This section was for sure a lot trickier than I thought it would be. The hardest part was trying to figure out how to arrange the boxes in a vertical but staggered order, so I could build the timeline. However, on the upside, I was able to quickly do styling, because a lot of the colors and like hover effects and everything was already set up in my code from styling the previous section, so that did not take too much time. Overall, I really like how this section turned out, and I think it is a bit different from the rest of the sections. Current Progress I completed the Experience section. This one is styled a bit differently from the other two. In this one, the timeline in centered and it goes longer than the length of the screen. The about me section and the projects section were all set to be as tall as the screen itself using height: 100dvh , but this one is actually dictated by the length of the cards, and then I added some padding at the bottom to separate it from the next section. The tricky part was to actually make the timeline affect. At first I did some research and thought or using pseudo elements in CSS to create a line through the middle of the page and arrange the boxes beside it. But that was way too complicated and didn’t seem to work for me, so I decided to arrange the boxes first and then add the line later. To arrange the boxes, I first centered them vertically in the middle of the screen, and then gave half of them one class and the other half another class. Then I pushed one class completely to the right, and the other to the left and that created a staggered timeline look. Then I needed to add a line through it. To do this, I created an empty <div> tag at the beginning of my experience section and then styled it as a line as long as my experience cards and then filled it with a rainbow gradient to kinda match my theme. I also added tiny circles using the same method to the timeline wherever their was a card to kinda just make it look cooler. I will acknowledge that I did use a bit of AI for this section to research the different ways to position the boxes, but otherwise I implemented all code by myself and I did not copy paste anything in. I really think this section introduced me to the flexibility in CSS, and how to manipulate different rules and elements to get the desired effect. Next Steps I am now going to work on the Achievements section. I am planning on making this section like a staggering kinda page of acheivements, like not quite even, just like a mosaic, because there is a lot of content in this section. For a kind of visualizer, I am planning to kinda style it like a pinterest page so like staggered and just fitting together. I just hope that it doesn’t turn out to jaggedy or uneven at the end of that part, and that it doesn’t take too long to organize them to look like at least like reasonably even at that. Hopefully I finish this section pretty quick, like just an hour or 2, and then I will quickly finish up the contact section as well, so then I will post a devlog of those two, but yeah I will see. I think I am getting close to a ship so keep an eye out for the next few days. Below you can see like the full experience timeline like zoomed out and I am hovering over the first card."}, {"post_id": 43667, "ts": "2026-08-09T01:57:34Z", "hours": 3.26, "text": "Devlog #9 I finished the Project section of the website. I also took some time to like style and experiment with some like hovering effects in the website. I also figured out how to color texts with gradients, so I changed all of my main section headings to cool colorful pastel gradients. I also made each glass card look cool when you hover over it. I also made some of the text like get bigger or show cool stuff when you hover over it. So yeah. I really think I am getting the hang of CSS. Most importantly, I think that I am able to use resources from the internet and apply them accordingly to my website. This block was mainly like a styling portion to kinda experiment and apply some aesthetics to my site. Current Progress I finished the Projects section. This section was much easier to arrange. Instead of using display: flexbox I used display: grid to help position each of the cards into an organized layout. What I really like about this display is that it automatically does all the math itself and gives each card its own equal amount of space so that they look even on the page. I got 4 nice cards for each project. I also styled the the heading to look like a gradient. I figured out that you make the background image a gradient, and then clip it to the text, and then just make the text clear so that the color shows. So I made all the headings look like that. Another thing that I did was use box-shadow to make the cards look cool when I hover over them. I realized that there are a lot of elements for the box-shadow, though once you figure them out, its not too complicated. So then I applied the box shadow effect to everything in the website that it would look good on. So yeah that was also a learning experience. I also figured out how to make a specific thing appear once you hover over like a bigger topic. So like I made some text a bit bigger or like an element appear when i hover over the whole card. You add the hover rule for the big card, and then add the class for the specific element, and then do your ending look. I used that for some things. So I really got some styling done to make my website like look better. Next Steps I will now work on the Experience section. I have around 6 cards for this. For this section, I am planning on making like a scrolling timeline to showcase like all of the past stuff in a chronological order. This might be tricky because up until now I was using the height: 100dvh to determine how big a section would be, but this one is going to have to different from that because of its scrolling nature. So yeah. But I think I am really getting the hang of positioning and display. and how to manipulate objects between different rules. I am starting to realize that code is not as strict as I thought it was. Like I thought everything needs to be like letter precise, but you have a bit space to improvise and experiment. So I can actually code a bit in CSS. I really enjoying styling things, like the gradient texts or like hover effects, so I am going to make sure to include those things in this next section as well. I am excited to get to work and encounter this new challenge. Below is a picture of the Projects sections and I am hovering over the first card, so you can see the hover effect."}, {"post_id": 43107, "ts": "2026-08-08T06:12:14Z", "hours": 3.0431, "text": "Devlog #8 I am finished the About Me section. I came across a problem though. In the pills, I want it to be like that when I hover over the pill, the name of that skill shows above it in a small text. However, pills in the bottom row, their text will start to hover into the pill of the next row, so that messes up the thing. BUT, if I add a space, it will look like a really weird gap between the rows. I did some research and I read that I might need to use some JS to fix, so like pills on the bottom, their text shows on the bottom, and pills on the top, their text shows on the top. So I am going to leave that for now, and work on it after I am done with the rest of the webpage. Current Progress Right now I finished position the stuff for the About Me section. I found this part really complicated, especially with the little icons. I ended up having to add more classes in my HTML to style them accordingly in CSS. Again, I still have a bit of problems with positioning, but I am starting to get the hang of like display , margin , padding , and gap , and how they work with different classes to arrange and organize everything. I also learned how to use transition to just make thing shift smoothly when you hover one them. This section took me a really long time because I had to arrange the about me text and all of my skills. I figured out where like display: relative and display: absolute are used, because I then had to arrange my text so that it was like positioned vertically 110% and horizontally 50% of the icon, so they helped in that. Otherwise, this part really familirized me a bit more with CSS. I especially got the hang of like background and border styling, and how to experiment with corner rounding and different colors and transitions and all of that, so I think this section was really a learning experience. Next Steps I will now begin to work on the Projects section. For this section I am just thinking making cards for each project each with a glassy effect behind it. Because I am giving each element like a glass effect, I am planning on making a super cool background later once I finished the site in JS so that the glass effect really shows and provides a unique aspect to my website. I think this section will be a lot simpler, but I will have to add more classes in HTML to do this I think. A tricky part might be to style the links, because I have links to all of my projects and their repositories, so yeah. Once I figure out the positioning of the cards, its practically smooth sailing from there, because like adjust font sizes and colors are like pretty easy for me. I might even make like the glass lighten up when I hover. One thing I want to experiment with is with box-shadow so that a shadow shows underneath the card. So I will play around with that. Otherwise, I am excited to continue working on this. The layout for this section is similar to the rest, so I think from here I will begin to quickly finish up the rest of the sections. You can view the about me page here. I am hovering over the HTML pill, and you can see the text over it."}, {"post_id": 41119, "ts": "2026-08-05T03:35:16Z", "hours": 3.1164, "text": "Devlog #7 I finished creating the navbar and have finally started on the CSS. Now because I am a complete beginner to CSS, I did use some help of AI just to kinda get the hang of like rules and all the different like properties. I DID NOT copy paste anything from AI. This is a project that I am doing to learn HTML and CSS. I actually want to learn this, and AI is just assisting me. I completed the navbar in CSS, and started on the Hero section. Right now positioning for CSS is confusing me a bit, so I need to work on that a bit more. The Hero was fairly easy as in the text, and I haven’t added much to it, but I figured out how to center it. The next steps will be to work on the about me section. Current Progress I finished up the navbar by quickly making a list of links at the very top of my html that went to each section. I also added a logo in the other corner (which is just my initials for now) which will link back to the hero page, like the top of the webpage. I was able to add a nice frosty glass effect the navbar, which was pretty simple. All you got to do is make the background like a little translucent and then add a blur effect. I thought it would be super hard, but it actually wasn’t. I am probably going to use this same formula for the glass cards of each section. My plan is to make them more interactive as I continue, but for right now I will just keep it at that. For the hero, the plan is to just make my name and a short subtitle below, and then add a cool effect around it. For now I just mapped out the area of the hero section. I realized that 100vh is the same as the whole area of the screen, so that is perfect for the hero section. I set the height to that. I also learned that you could access text from within sections that you have id’ed, ex. like I could access the <p> text in the hero section by using the rule #hero p {} so that was pretty neat. Like I mentioned, I used AI to help with some of the centering stuff, because there are a lot of rules for that. I also learned a lot about default positioning, and relative, and fixed positioning. I decided to use position: fixed; for the navbar so it stays on the page the whole time. I still need to get the hang of positioning, but as I begin the next sections, I think I will learn to do that on my own. Next Steps I finished the Hero section for now for CSS, so I will start with the About Me sections. Again this section will have like a blurb about me and then little icons of all of the skills that I know. This is for sure going to be a lot more trickier than the Hero section. My plan is to first try and do the basic styling on my own, and then refer to other resources to polish it up. I am probably going to use the glass effect for the about me blurb and then as a little background behind each icons, like a little drop. I am excited to get this part complete because right now I just have like a very long list of large images in the website, (which are the icons for the skills) that are taking up like the whole screen and I am so ready to get rid of those and just clean up the webpage a bit. After those are organized into the skills, then everything will just be a little cleaner. I am planning to organize the skills based on software, hardware, and then others. The icons are already organized in HTML, so I am excited to begin tomorrow on styling the next section. The navbar is glassy, its just because there is nothing under it to be blurred thats why it doesn’t show."}, {"post_id": 40465, "ts": "2026-08-04T00:41:21Z", "hours": 2.0869, "text": "Devlog #6 I have finally finished the HTML section. I have organized all of my sections and filled in enough information to make a complete portfolio website. I’m not going to worry about any more of the info and just continue on to CSS and styling my website, I think this is going to be a lot more tricky because now I have to arrange and order everything and make it look pleasing and smooth. Right now I am going for a darker vibe. I don’t have like a specific theme, but I might add like hints of color around the website. I am planning on making like cards that each have a glass morphism effect. Current Progress Right now I filled in the skills sections. Like I said before, I am planning to just show the icon on a glassy back. I am going to back it so that when the person hovers over it, it will show like a text of what the skill actually is like the name. I learned how to use a <snap> tag, which is kinda like <div> tag but it doesn’t need it’s own line, so you can kinda group things inside groups without like tabbing again. I put it on the labels for each skill so I could style it separately from the icon in CSS. I was able to get icons for every skill in there. I used Devicon for some programming languages and Flaticon for some of the other ones. I finally got the hang of images. They show on the preview so I think they will show in GitHub pages later as well when I publish them. I still have to see but I think that a succes because in my first devlog the images actually didn’t work, so this is good. Right now they are huge, but I will fix them in CSS. I put them all in the same class, so I think it won’t be too hard. Next Steps I actually forgot to make a navbar, so I will quickly make a navbar and then begin CSS. I don’t thing a navbar will be too hard because it is just links. I will most likely keep it as a header at the top, and just apply a nice glassmorphism effect to it. But yeah, I actually got to make a navbar in HTML, so not completely done with that, but after that I will for sure be done. I might not post a devlog after building the navbar and might just move onto CSS, but it depends on how much time it will take. If it takes more than an hour, then I’ll post a devlog, other than that, I wil post one after some work with CSS, maybe after making the hero section. Below are the some of the image from Flaticon"}, {"post_id": 40271, "ts": "2026-08-03T18:12:42Z", "hours": 1.47, "text": "Devlog #5 I am still working on the HTML portion, but I am nearing completion. I think that the next devlog that I post will be the last one of HTML, and after that I will start to move onto CSS. Speaking of CSS, I am still deciding whether I want to experiment with JS for this project. I have no experience in JS, so it might be like a later thing I want to add after I finish the initial draft of the project. I think it will make it look super smooth with cool animations, but I am still deciding, I think the amount of time I will spend in CSS will decide whether I want to use JS or not. Current Progress I have now added some cards to the Awards section. This one did not take too long because I was able to figure out the tags quite easily because by now I have experimented a lot with them. One thing I learned how to do was to create lists in HTML. It was quite simple. Once you figure out the tags then it is pretty easy. I have a lot of awards that are like issued from a single organization and then some standalone ones, so I used the <ul> tag to create an unordered list and the <li> to add each item to my list. Overall I am planning to make like a card mosaic. Because they are all going to be like different sizes, so they will look kind of like a Pinterest post with like broken blocks, but fit nicely together. I think that will be the simplest way to style it in CSS right now, so I am going with that. Overall, this did not take as long as I expected. I actually already had a document ready, so many were just copied from there. Next Steps I have already filled out the Contact section. I just linked my email and added a little description. I don’t have a lot of forms of contact , so I am going to stick to just email. Now I am going to work on adding my skills, because that is in the about me section. I am not going to actually write it but instead add like little logos for each like skill so that is the next step. I am planning to separate them by like software, and hardware, and like other maybe, but I am going to work on that next. Again I hope that the next devlog will be the last for HTML before I begin CSS."}, {"post_id": 38499, "ts": "2026-07-31T22:25:20Z", "hours": 3.4719, "text": "Devlog #4 I have filled in some more sections of my webpage. I am still at the HTML portion. Right now the webpage looks like really bad when I view, and it’s tempting for me to move right to CSS to begin styling, but I think it will be easier for me in the long run if I finish all of the HTML now, at least all of the sections. Of course, if I move onto CSS, it won’t mean that I’m completely done with HTML, I will always be adding more stuff and I find ways to improve my website. Current Progress So before I had filled out the Projects section. I was working with GitHub a lot, uploading my projects so I could link them. I also had to use the Github desktop app to upload some files. Because I had opened the website repository in my VSCode desktop app, I think that something got mixed up, and the file didn’t save properly, so then my whole projects section got deleted. I had to spend some time filling that in again, though it wasn’t too hard the second time because the live preview in the browser still had the text in it, and I had already created all of the links again. Then I made sure that my files would autosave, and that the repository was properly linked. After I pushed the commits to Github to save it there, and I will do the same after posting this devlog. After that I began to fill in the Experience section, and that was mainly the majority of this time block. Again, I had to like go back and kinda figure out the dates of everything. I am thinking like a timeline style for this one, and that I will have like a little card for each thing. The plan is to make a scrolling website, so that each card will like appear as you scroll down. I have got a good solid like 6 cards of stuff, so for now I am done with that section. I learned more about like div and section tags during this. I also learned the effect of applying classes to text, as it seperates it from other text when styling it in CSS. I applied it to the date text in the experience sections, so that the time frame will be like a little substitle, different from the actual text in the card. Next Steps I am probably done for today. Next, I will start to work on the awards sections. A challenge will be to organize those sections because like I have many awards from a specific section but then some are just standalone, so I still a have to figure out how to organize the sections in HTML and how to apply the section and div tags. However, I don’t think I will use the section tag, as that may only be for sections that will be in the navbar. But organizing the awards using div and applying different classes will be tricky and hard to keep organizing. i want to make sure that I continue and keep my code nice and clean so that CSS styling is easy."}, {"post_id": 37296, "ts": "2026-07-29T22:04:53Z", "hours": 1.9631, "text": "Devlog #3 I have started to fill in some more information about myself in the webpage. The plan is that I will first constuct the HTML layout and fill in all of the sections. Because I am still a high student, my portfolio will look a bit different because I am not actually advertising a service or anything like that. The order that I am planning to go in is the following: Hero About Me (along with skills) Projects Experience Achievements/Awards Contact Current Progress Right now I have constructed each of the sections in HTML. I am using the section tag to separate each of the parts that I just described above so that I can link them using a navbar, though I have not created anything for a navbar yet. One thing that confused me for a while was the difference between section and div tags. After some research, I realized that section actually separates the parts in the HTML file, while the div just like adds an invisible containor around the parts and doesn’t actually effect the HTMl at all. It just like groups them together. The section tag is great for the navbar. I am using the div tag for like sub sections, like for an individual project within the Projects section. This will help later with design as I am planning to make like each project a card on the screen. That brings me to my next thing. Right now I have filled in around 3 projects that I have made. The biggest hurdle was that not all of them were on Github, so I had to go back into my files and like refresh by brain on those past projects. I wanted to have links to projects in the website, so some of my past projects, I had to spend like an hour or two just trying to upload those and get the repositories set. I have attched 3 projects so far. I will probably add more, but for now I think I will move on Next Steps Next, I am going to start filling in some of the other sections, like the About Me section. I am still thinking on how to display the Experience section, but I will start filling in that section too. I will also begin to organize like the subsections for each section and begin to build a navbar. By the end of the week, I hope to have like a basic HTML structure with all of the sections roughly filled in, and then I will move onto CSS. I think the biggest challenge will be to organize everything neatly for experiences and achievements. But otherwise I am looking forward to start filling those in."}, {"post_id": 35488, "ts": "2026-07-26T23:14:47Z", "hours": 0.8378, "text": "I have kinda gotten a sense of how I want my site to be like. For the portfolio, I will kinda have around 5 sections: Hero, About Me, Projects, Achievements. and Contact. I am think of a kinda dark aesthethic theme with neon accents in there. I am also thinking that I will make like each section themed to what I have achievemed or what is added in that section. Right now I have added a gradient to my background and written some stuff in the about me section. I have also added a link to my astrobounce project which is also here on stardance."}, {"post_id": 35031, "ts": "2026-07-26T06:02:46Z", "hours": 0.3153, "text": "My personal site. Right now I am just getting started on this website. Mainly this project will be for me to learn basic HTML and some more CSS code. I want the end goal to be a nice smooth and polished site. I have still yet to pick a theme. Right now the only hurdle I have encountered is that the image isn’t uploading properly into the website, so I will be looking into that and trying to fix that. Otherwise I am only planning to spend a couple more hours. I might plan to make this a personal portfolio site for myself as I enter high school to help showcase some of my experiences and achievements. But I am still deciding on the theme. And that will be in a later devlog."}]...
|
Title: My Portfolio by @Harpaavan108 | Stardance
Title: My Portfolio by @Harpaavan108 | Stardance
Devlogs:
My personal site. Right now I am just getting started on this website. Mainly this project will be for me to learn basic HTML and some more CSS code. I want the end goal to be a nice smooth and polished site. I have still yet to pick a theme. Right now the only hurdle I have encountered is that the image isn’t uploading properly into the website, so I will be looking into that and trying to fix that. Otherwise I am only planning to spend a couple more hours. I might plan to make this a personal portfolio site for myself as I enter high school to help showcase some of my experiences and achievements. But I am still deciding on the theme. And that will be in a later devlog.
I have kinda gotten a sense of how I want my site to be like. For the portfolio, I will kinda have around 5 sections: Hero, About Me, Projects, Achievements. and Contact. I am think of a kinda dark aesthethic theme with neon accents in there. I am also thinking that I will make like each section themed to what I have achievemed or what is added in that section. Right now I have added a gradient to my background and written some stuff in the about me section. I have also added a link to my astrobounce project which is also here on stardance.
Devlog #3 I have started to fill in some more information about myself in the webpage. The plan is that I will first constuct the HTML layout and fill in all of the sections. Because I am still a high student, my portfolio will look a bit different because I am not actually advertising a service or anything like that. The order that I am planning to go in is the following: Hero About Me (along with skills) Projects Experience Achievements/Awards Contact Current Progress Right now I have constructed each of the sections in HTML. I am using the section tag to separate each of the parts that I just described above so that I can link them using a navbar, though I have not created anything for a navbar yet. One thing that confused me for a while was the difference between section and div tags. After some research, I realized that section actually separates the parts in the HTML file, while the div just like adds an invisible containor around the parts and doesn’t actually effect the HTMl at all. It just like groups them together. The section tag is great for the navbar. I am using the div tag for like sub sections, like for an individual project within the Projects section. This will help later with design as I am planning to make like each project a card on the screen. That brings me to my next thing. Right now I have filled in around 3 projects that I have made. The biggest hurdle was that not all of them were on Github, so I had to go back into my files and like refresh by brain on those past projects. I wanted to have links to projects in the website, so some of my past projects, I had to spend like an hour or two just trying to upload those and get the repositories set. I have attched 3 projects so far. I will probably add more, but for now I think I will move on Next Steps Next, I am going to start filling in some of the other sections, like the About Me section. I am still thinking on how to display the Experience section, but I will start filling in that section too. I will also begin to organize like the subsections for each section and begin to build a navbar. By the end of the week, I hope to have like a basic HTML structure with all of the sections roughly filled in, and then I will move onto CSS. I think the biggest challenge will be to organize everything neatly for experiences and achievements. But otherwise I am looking forward to start filling those in.
Devlog #4 I have filled in some more sections of my webpage. I am still at the HTML portion. Right now the webpage looks like really bad when I view, and it’s tempting for me to move right to CSS to begin styling, but I think it will be easier for me in the long run if I finish all of the HTML now, at least all of the sections. Of course, if I move onto CSS, it won’t mean that I’m completely done with HTML, I will always be adding more stuff and I find ways to improve my website. Current Progress So before I had filled out the Projects section. I was working with GitHub a lot, uploading my projects so I could link them. I also had to use the Github desktop app to upload some files. Because I had opened the website repository in my VSCode desktop app, I think that something got mixed up, and the file didn’t save properly, so then my whole projects section got deleted. I had to spend some time filling that in again, though it wasn’t too hard the second time because the live preview in the browser still had the text in it, and I had already created all of the links again. Then I made sure that my files would autosave, and that the repository was properly linked. After I pushed the commits to Github to save it there, and I will do the same after posting this devlog. After that I began to fill in the Experience section, and that was mainly the majority of this time block. Again, I had to like go back and kinda figure out the dates of everything. I am thinking like a timeline style for this one, and that I will have like a little card for each thing. The plan is to make a scrolling website, so that each card will like appear as you scroll down. I have got a good solid like 6 cards of stuff, so for now I am done with that section. I learned more about like div and section tags during this. I also learned the effect of applying classes to text, as it seperates it from other text when styling it in CSS. I applied it to the date text in the experience sections, so that the time frame will be like a little substitle, different from the actual text in the card. Next Steps I am probably done for today. Next, I will start to work on the awards sections. A challenge will be to organize those sections because like I have many awards from a specific section but then some are just standalone, so I still a have to figure out how to organize the sections in HTML and how to apply the section and div tags. However, I don’t think I will use the section tag, as that may only be for sections that will be in the navbar. But organizing the awards using div and applying different classes will be tricky and hard to keep organizing. i want to make sure that I continue and keep my code nice and clean so that CSS styling is easy.
Devlog #5 I am still working on the HTML portion, but I am nearing completion. I think that the next devlog that I post will be the last one of HTML, and after that I will start to move onto CSS. Speaking of CSS, I am still deciding whether I want to experiment with JS for this project. I have no experience in JS, so it might be like a later thing I want to add after I finish the initial draft of the project. I think it will make it look super smooth with cool animations, but I am still deciding, I think the amount of time I will spend in CSS will decide whether I want to use JS or not. Current Progress I have now added some cards to the Awards section. This one did not take too long because I was able to figure out the tags quite easily because by now I have experimented a lot with them. One thing I learned how to do was to create lists in HTML. It was quite simple. Once you figure out the tags then it is pretty easy. I have a lot of awards that are like issued from a single organization and then some standalone ones, so I used the <ul> tag to create an unordered list and the <li> to add each item to my list. Overall I am planning to make like a card mosaic. Because they are all going to be like different sizes, so they will look kind of like a Pinterest post with like broken blocks, but fit nicely together. I think that will be the simplest way to style it in CSS right now, so I am going with that. Overall, this did not take as long as I expected. I actually already had a document ready, so many were just copied from there. Next Steps I have already filled out the Contact section. I just linked my email and added a little description. I don’t have a lot of forms of contact , so I am going to stick to just email. Now I am going to work on adding my skills, because that is in the about me section. I am not going to actually write it but instead add like little logos for each like skill so that is the next step. I am planning to separate them by like software, and hardware, and like other maybe, but I am going to work on that next. Again I hope that the next devlog will be the last for HTML before I begin CSS.
Devlog #6 I have finally finished the HTML section. I have organized all of my sections and filled in enough information to make a complete portfolio website. I’m not going to worry about any more of the info and just continue on to CSS and styling my website, I think this is going to be a lot more tricky because now I have to arrange and order everything and make it look pleasing and smooth. Right now I am going for a darker vibe. I don’t have like a specific theme, but I might add like hints of color around the website. I am planning on making like cards that each have a glass morphism effect. Current Progress Right now I filled in the skills sections. Like I said before, I am planning to just show the icon on a glassy back. I am going to back it so that when the person hovers over it, it will show like a text of what the skill actually is like the name. I learned how to use a <snap> tag, which is kinda like <div> tag but it doesn’t need it’s own line, so you can kinda group things inside groups without like tabbing again. I put it on the labels for each skill so I could style it separately from the icon in CSS. I was able to get icons for every skill in there. I used Devicon for some programming languages and Flaticon for some of the other ones. I finally got the hang of images. They show on the preview so I think they will show in GitHub pages later as well when I publish them. I still have to see but I think that a succes because in my first devlog the images actually didn’t work, so this is good. Right now they are huge, but I will fix them in CSS. I put them all in the same class, so I think it won’t be too hard. Next Steps I actually forgot to make a navbar, so I will quickly make a navbar and then begin CSS. I don’t thing a navbar will be too hard because it is just links. I will most likely keep it as a header at the top, and just apply a nice glassmorphism effect to it. But yeah, I actually got to make a navbar in HTML, so not completely done with that, but after that I will for sure be done. I might not post a devlog after building the navbar and might just move onto CSS, but it depends on how much time it will take. If it takes more than an hour, then I’ll post a devlog, other than that, I wil post one after some work with CSS, maybe after making the hero section. Below are the some of the image from Flaticon
Devlog #7 I finished creating the navbar and have finally started on the CSS. Now because I am a complete beginner to CSS, I did use some help of AI just to kinda get the hang of like rules and all the different like properties. I DID NOT copy paste anything from AI. This is a project that I am doing to learn HTML and CSS. I actually want to learn this, and AI is just assisting me. I completed the navbar in CSS, and started on the Hero section. Right now positioning for CSS is confusing me a bit, so I need to work on that a bit more. The Hero was fairly easy as in the text, and I haven’t added much to it, but I figured out how to center it. The next steps will be to work on the about me section. Current Progress I finished up the navbar by quickly making a list of links at the very top of my html that went to each section. I also added a logo in the other corner (which is just my initials for now) which will link back to the hero page, like the top of the webpage. I was able to add a nice frosty glass effect the navbar, which was pretty simple. All you got to do is make the background like a little translucent and then add a blur effect. I thought it would be super hard, but it actually wasn’t. I am probably going to use this same formula for the glass cards of each section. My plan is to make them more interactive as I continue, but for right now I will just keep it at that. For the hero, the plan is to just make my name and a short subtitle below, and then add a cool effect around it. For now I just mapped out the area of the hero section. I realized that 100vh is the same as the whole area of the screen, so that is perfect for the hero section. I set the height to that. I also learned that you could access text from within sections that you have id’ed, ex. like I could access the <p> text in the hero section by using the rule #hero p {} so that was pretty neat. Like I mentioned, I used AI to help with some of the centering stuff, because there are a lot of rules for that. I also learned a lot about default positioning, and relative, and fixed positioning. I decided to use position: fixed; for the navbar so it stays on the page the whole time. I still need to get the hang of positioning, but as I begin the next sections, I think I will learn to do that on my own. Next Steps I finished the Hero section for now for CSS, so I will start with the About Me sections. Again this section will have like a blurb about me and then little icons of all of the skills that I know. This is for sure going to be a lot more trickier than the Hero section. My plan is to first try and do the basic styling on my own, and then refer to other resources to polish it up. I am probably going to use the glass effect for the about me blurb and then as a little background behind each icons, like a little drop. I am excited to get this part complete because right now I just have like a very long list of large images in the website, (which are the icons for the skills) that are taking up like the whole screen and I am so ready to get rid of those and just clean up the webpage a bit. After those are organized into the skills, then everything will just be a little cleaner. I am planning to organize the skills based on software, hardware, and then others. The icons are already organized in HTML, so I am excited to begin tomorrow on styling the next section. The navbar is glassy, its just because there is nothing under it to be blurred thats why it doesn’t show.
Devlog #8 I am finished the About Me section. I came across a problem though. In the pills, I want it to be like that when I hover over the pill, the name of that skill shows above it in a small text. However, pills in the bottom row, their text will start to hover into the pill of the next row, so that messes up the thing. BUT, if I add a space, it will look like a really weird gap between the rows. I did some research and I read that I might need to use some JS to fix, so like pills on the bottom, their text shows on the bottom, and pills on the top, their text shows on the top. So I am going to leave that for now, and work on it after I am done with the rest of the webpage. Current Progress Right now I finished position the stuff for the About Me section. I found this part really complicated, especially with the little icons. I ended up having to add more classes in my HTML to style them accordingly in CSS. Again, I still have a bit of problems with positioning, but I am starting to get the hang of like display , margin , padding , and gap , and how they work with different classes to arrange and organize everything. I also learned how to use transition to just make thing shift smoothly when you hover one them. This section took me a really long time because I had to arrange the about me text and all of my skills. I figured out where like display: relative and display: absolute are used, because I then had to arrange my text so that it was like positioned vertically 110% and horizontally 50% of the icon, so they helped in that. Otherwise, this part really familirized me a bit more with CSS. I especially got the hang of like background and border styling, and how to experiment with corner rounding and different colors and transitions and all of that, so I think this section was really a learning experience. Next Steps I will now begin to work on the Projects section. For this section I am just thinking making cards for each project each with a glassy effect behind it. Because I am giving each element like a glass effect, I am planning on making a super cool background later once I finished the site in JS so that the glass effect really shows and provides a unique aspect to my website. I think this section will be a lot simpler, but I will have to add more classes in HTML to do this I think. A tricky part might be to style the links, because I have links to all of my projects and their repositories, so yeah. Once I figure out the positioning of the cards, its practically smooth sailing from there, because like adjust font sizes and colors are like pretty easy for me. I might even make like the glass lighten up when I hover. One thing I want to experiment with is with box-shadow so that a shadow shows underneath the card. So I will play around with that. Otherwise, I am excited to continue working on this. The layout for this section is similar to the rest, so I think from here I will begin to quickly finish up the rest of the sections. You can view the about me page here. I am hovering over the HTML pill, and you can see the text over it.
Devlog #9 I finished the Project section of the website. I also took some time to like style and experiment with some like hovering effects in the website. I also figured out how to color texts with gradients, so I changed all of my main section headings to cool colorful pastel gradients. I also made each glass card look cool when you hover over it. I also made some of the text like get bigger or show cool stuff when you hover over it. So yeah. I really think I am getting the hang of CSS. Most importantly, I think that I am able to use resources from the internet and apply them accordingly to my website. This block was mainly like a styling portion to kinda experiment and apply some aesthetics to my site. Current Progress I finished the Projects section. This section was much easier to arrange. Instead of using display: flexbox I used display: grid to help position each of the cards into an organized layout. What I really like about this display is that it automatically does all the math itself and gives each card its own equal amount of space so that they look even on the page. I got 4 nice cards for each project. I also styled the the heading to look like a gradient. I figured out that you make the background image a gradient, and then clip it to the text, and then just make the text clear so that the color shows. So I made all the headings look like that. Another thing that I did was use box-shadow to make the cards look cool when I hover over them. I realized that there are a lot of elements for the box-shadow, though once you figure them out, its not too complicated. So then I applied the box shadow effect to everything in the website that it would look good on. So yeah that was also a learning experience. I also figured out how to make a specific thing appear once you hover over like a bigger topic. So like I made some text a bit bigger or like an element appear when i hover over the whole card. You add the hover rule for the big card, and then add the class for the specific element, and then do your ending look. I used that for some things. So I really got some styling done to make my website like look better. Next Steps I will now work on the Experience section. I have around 6 cards for this. For this section, I am planning on making like a scrolling timeline to showcase like all of the past stuff in a chronological order. This might be tricky because up until now I was using the height: 100dvh to determine how big a section would be, but this one is going to have to different from that because of its scrolling nature. So yeah. But I think I am really getting the hang of positioning and display. and how to manipulate objects between different rules. I am starting to realize that code is not as strict as I thought it was. Like I thought everything needs to be like letter precise, but you have a bit space to improvise and experiment. So I can actually code a bit in CSS. I really enjoying styling things, like the gradient texts or like hover effects, so I am going to make sure to include those things in this next section as well. I am excited to get to work and encounter this new challenge. Below is a picture of the Projects sections and I am hovering over the first card, so you can see the hover effect.
Devlog #10 I have finished the Experiences section of the website. This section was for sure a lot trickier than I thought it would be. The hardest part was trying to figure out how to arrange the boxes in a vertical but staggered order, so I could build the timeline. However, on the upside, I was able to quickly do styling, because a lot of the colors and like hover effects and everything was already set up in my code from styling the previous section, so that did not take too much time. Overall, I really like how this section turned out, and I think it is a bit different from the rest of the sections. Current Progress I completed the Experience section. This one is styled a bit differently from the other two. In this one, the timeline in centered and it goes longer than the length of the screen. The about me section and the projects section were all set to be as tall as the screen itself using height: 100dvh , but this one is actually dictated by the length of the cards, and then I added some padding at the bottom to separate it from the next section. The tricky part was to actually make the timeline affect. At first I did some research and thought or using pseudo elements in CSS to create a line through the middle of the page and arrange the boxes beside it. But that was way too complicated and didn’t seem to work for me, so I decided to arrange the boxes first and then add the line later. To arrange the boxes, I first centered them vertically in the middle of the screen, and then gave half of them one class and the other half another class. Then I pushed one class completely to the right, and the other to the left and that created a staggered timeline look. Then I needed to add a line through it. To do this, I created an empty <div> tag at the beginning of my experience section and then styled it as a line as long as my experience cards and then filled it with a rainbow gradient to kinda match my theme. I also added tiny circles using the same method to the timeline wherever their was a card to kinda just make it look cooler. I will acknowledge that I did use a bit of AI for this section to research the different ways to position the boxes, but otherwise I implemented all code by myself and I did not copy paste anything in. I really think this section introduced me to the flexibility in CSS, and how to manipulate different rules and elements to get the desired effect. Next Steps I am now going to work on the Achievements section. I am planning on making this section like a staggering kinda page of acheivements, like not quite even, just like a mosaic, because there is a lot of content in this section. For a kind of visualizer, I am planning to kinda style it like a pinterest page so like staggered and just fitting together. I just hope that it doesn’t turn out to jaggedy or uneven at the end of that part, and that it doesn’t take too long to organize them to look like at least like reasonably even at that. Hopefully I finish this section pretty quick, like just an hour or 2, and then I will quickly finish up the contact section as well, so then I will post a devlog of those two, but yeah I will see. I think I am getting close to a ship so keep an eye out for the next few days. Below you can see like the full experience timeline like zoomed out and I am hovering over the first card.
Devlog #11 I have finally finished styling my whole website in CSS. It was such a long process, but I really think that I learned how to code in CSS. Position and display no longer confuse me and I have gotten the hang of adding cool effects to me elements. I am really liking the theme of my website, but I still have more to do. Right now, I have a lot of empty space in my website. Because all of my cards are glassmorphism, I am planning to use JS to make really neat background just to add like a nice touch and really sell the website, but that might be after the first ship. I am also planning to change some fonts and all that, so still a lot to do. Current Progress I finished the Achievements and Contact section and also styled my footer. I made a masonry style layout for the achievements, and I think the design turned out really neat. At first, I thought I would use a flexbox or a grid, but then I saw that I could just make a fized number of columns and the text would just automatically arrange itself. So I used that instead of getting all tangled up in like flex and grid properties and all of that. But then it actually made it like vertically ordered, but I wanted it horizontally, so I took the time to like arrange them so that the layout would appear even and it would look like it was horizontally arranged, when in reality it is actually vertically arranged but in a weird way. It makes more sense when you look at it. I also finished the Contact section. This was quite easy. I just styled it like the Hero and added two little icons: one to my email, and the other to my github, so yeah that was pretty simple. I first thought of adding a contact form, but then I realized that that needed a backend, so I decided against that. Again, if I want, I might add it later in the future, but for now I will leave it at just to two icons. So mainly I finished those two sections in this block. One more cool thing that I discovered was how to make links open to a new page, because while I was trying out links it was bugging me that it was always opening in that page, so this really put my mind to ease a bit, and makes navigation a bit easier. Next Steps I am planning to ship very soon. I am thinking of just adding some finishing touches before shipping the first version, like some font changes. I might also just try to play around in JS, and like get a feel of it, Because I think that a cool background will really take it to the top, so I will play around a bit with that. i’m also thinking about adding like scroll up effects, especially for like my experience timeline. But yeah next steps might just to be to polish it up just a bit before shipping. I am super excited to try out JS, and hope that the final product will be awesome. Below is a picture of the masonry effect of the achievements section.
Devlog #12 This block was mainly dedicated towards making my site look a lot more aesthetic. I spent over 4 hours just tinkering with JS and fonts and color combos and everything, trying to find the perfect combos and fonts that looked super good. I am overall very happy with the progress that I made in this amount of time. At first I thought that the site looked good even without any styling because of my color gradients and all of that, but I just realized how much better it is with like better fonts, and like the small things, like moving gradients instead of static ones. So this whole block was just dedicated to making my site look better. Current Progress The first thing that I did was change my cursor. For this I had to use JS. I changed the cursor to just be like a little white dot with a nice glow around it, and then when it hovers over like a link, then it gets a bit bigger and turns into a light purple color. In JS, I figured out how to like grab an element from CSS, and then use like states, like mousemove to have like a specific action, and then like have the dot follow my actual cursor, but super close so it seems like that is the cursor. And then I hid my actual mouse to really sell the illusion. For the hover thing, I created a hover class in CSS, and then added that class when the mouse “entered” a link, and removed it when it “left” the link. The next thing I did was make the gradients on my text like circle around, so the gradient was always moving around and it looked like dynamic. I actually got this idea from the Hack Club website because in there they have a moving gradient on the text. For this, I actually did not need any JS, and instead just make a looping animation in CSS for the background of the text. I first did it only for the Hero title, but then I liked it so much that I added it to all of the section headings so yeah I thought was a really nice addition The next thing that I did was to edit my skill icons. I mentioned in a previous devlog when I was styling the About Me section, that the little subtitle for each skill was showing on the top of it, so then for skills in the bottom row, it was covering the skill on top. I also used JS for this fix. I first made a class for the subtitle on the bottom, and then again in JS made it so if it was detected to be lower, that class would apply The last thing I did was change the fonts. I am really happy I did this, because the site just looks so much better with different fonts. I imported all of my fonts from Google Fonts. I inserted the link in the <head> section and then used that font family in CSS. I did a lot of like comparing and swithcing around and researching and all of that just to find good fonts, and I have a really bad habit of like taking a lot of time on these kind of things, and it wasn’t even getting tracked on Hackatime, so I tried to do it quickly. I found some really nice fonts for the headings and titles so I am super happy with that. Next Steps Now the only thing left to do that I still havent gotten around to yet is making a really nice background in JS. I really want to make an animation background, because I think that will be like a unique aspect of my website. The main thing I really want that for is the glassmorphism effect that I have on the cards. On a plain dark background, you can’t tell at all that there is a glass effect. But with a sick background that moves, you can see that shapes blur under the cards. So I think that is the last thing to do, because I finished up all the small little details. However, I also think this will be the longest and hardest part because of its complexity in JS so yeah. I am really hoping to ship soon after 1 or 2 more devlogs. Below is a video of the new hero section with cool fonts and a moving gradient background.
Devlog #13 (Last Devlog Before Ship) I am finally done with my website. Please read the NEXT STEPS section of this devlog as I have favour to ask you guys . I spent 7 hours of my life building a shader background for my website, but it totally paid off in the end because now I have a really cool, interactive, animated gradient background. I used GLSL to write a shader, and WebGL and Three.js to implement it into my website. I used a video tutorial and some AI debugging to achieve the effect, but it really was a learning process, as I had to install all the tools for it and then work with those, so I learned how to use those. Because of this, I also spent some time updating my README. Current Progress First of all, it took me a really long time to find a good tutorial to make a background, because I really wanted an animated one to show my blur effect and really add a pop to my website. To acheive a shader background I watched a video tutorial from Codegrid, which explained everything really nicely and was quite quick, so I was able to write the code. After though, the background didn’t quite show, so then I used the help of AI to help debug the code and get it working. After I finally got it to work, I spent some time adjusting colors, and brush strength and size, and then distortion amount and fluid decay and all of that stuff until I found the perfect values for a super good looking background. Overall, it was definately worth the time and added a really nice touch to my webpage. I also updated by README, because now the user will need to install some dependencies for this webpage because of the addition of Three.js and everything. So I updated the README to include proper instructions for that and so it explained some more features of my website. I really polished it up, because it was kinda messy before, so I got it ready for a ship. I also changed my cursor one last time. What I had before was a <div> element in HTML following my actual cursor using mousemove in JS, and my actual cursor was hidden in CSS. However, it was like lagging behind and that was starting to show on my new background. So instead, I just made my cursor a little white dot in CSS by liking making a svg file and linking it to the cursor. It just improved user interaction a lot be removing any lag between an following element and the actual cursor. There is still the feature where it will turn bigger and light purple when hovering over a link. Next Steps My next step is to ship!!! However, I have to ask you guys for something. I need some color suggestions for my background. I got a nice one right now that is like dark purplish, but I want your guys’ suggestions on what type of gradient I should make. I can put 4 colors into the gradient. You can use the attached video below to view how the shader looks on the hero page. I do have glass cards, so I don’t want something too light, but it could make a nice addition in a dark gradient. So please put some suggestions in the comments!!! Thank you!!! I will ship right after this, but I will for sure try to look over some color suggestions and experiment around with them. I might try to use one before I ship the final version of the website, so please put some suggestions. Expect a ship really soon.
Devlog #14 So I started working on it further before my project even got fully rated, so this is my first devlog after shipping my portfolio! During this block, I just added some small features that just overall polished my site a bit more. A lot of these features were added in JS, and I think I actually am starting to get the hang of JS in the way that I actually am starting to understand how to identify objects using const and like how to select them using document.querySelector . So I think I am starting to learn, and just working with these little features just got me a little more familar with JS. I also got the hang of CSS animations, as before I had a little trouble understanding keyframes, but now it makes sense, so it was a good block. Current Progress I added three main things to my website, each of which use JS in them, and I will explain how. The first thing that I added was a scroll progress bar at the top. I really wanted to add this onto website, as I really liked seeing them on other websites, and I styled it to match my theme, and it just looks super good. I make a horizontal bar in my navbar for this, and it has a rainbow gradient. Basically, JS detects where the person is at the website, and just adjusts the scale based on that to show the bar. At first, I made it so it would expand as I scrolled, but then the rainbow was like squished at the beginning, and then I adjusted it so that it actually revealed the bar as I scrolled down, so like same idea but just applied to a different thing. I looks super cool now. The next thing that I added was a loading page. I tried to look into some videos for this, but I ended up making a super simple gradient ring that was animated (again to spin a rainbow). For this, I like made a loader page, which covered the whole view. In it, I made a circle which had a rainbow conic gradient, and then just animated it in CSS to rotate to 360 degrees over the course of like 1.2 seconds. I then used JS to add a class which made the loader disappear and like unresponsive to any pointer controls when the site finished loading. It also looks super good and totally matches the vibe of the site. So yeah, super happy with that. The last thing that I added was like a scroll fade up reveal effect to almost everything in my site, like the cards and the headings and everything. Again, this was a pretty simple trick that I used. Basically you set the object a set number of pixels (like I used 30px) down on the Y axis and turn the opacity down, and then when JS detects the object as the person scrolls, it just moves it up to 0px on the Y axis and goes to full opacity, and it ends up looking super sleek. That little touch just upped the whole website. I was actually looking to add this feature in the beginning of my site, but I never got to it mainly because it used JS, so now I took the chance to add it in. A lot of these features were ones that I saw in like cool websites. So like I’m always on the lookout for cool features, and these were some that I thought really made a website look more polished, and I realized that they are not actually that hard to build once you understand the core concept. Through these I really got better in JS, and upped my skills in CSS, so it was a good block. Next Steps I really do not have anything left to add in this project. Like I even added extra stuff. Please, if you guys have any suggestions, comment them so I can implement them. I will attach a video of my site so you guys can see what its like. One thing I might consider adding is like a easter egg thing or some like sequence or action that will generate a cool surprise. I have to still think about that. But right now I have almost nothing left to do. I actually might ship this again just to get the hours counted in. Below you can see the loading and the scroll fade up reveal and the scroll progress bar at the top.
Devlog #15 This will be a fairly short devlog. I spent this block adding media queries to my CSS code because I opened the website on my phone, and it just looked so wrong to me, so I spent some time doing that. I figured out a great way to simulate a phone screen in my browser using DevTools so I was able to adjust everything through that. Current Progress The plan was that I was going to do media queries at first, but I thought it would be too complicated so I held it off. Now I was kinda forced to after seeing how bad the webpage looked on a phone screen. I realized you just have to make on CSS rule for media queries using media (max-width: 768px) {} . I decided to use 768px because that is like a standard width, but I mainly tested it on 400px width. After that, I opened two windows with my code and as I went through it, I would add a media query rule in the other window. So I conquered my fear of media queries, and addressed that issue. Next Steps I am looking for things to do. One piece of feedback that I got was that my cards had hover effects that made them look like buttons, but had no button effects, so it was kinda misleading. So to fix this, I’m thinking of like scanning my certificates and uploading them as pictures that people can view in the browser. So that’s my next step. To accompany this, I might also do like a redesign of the website, like just adjusting some of the features. Also, I’m thinking of adding a dark mode/light mode feature on it. Below is a quick video of the site on a device with a width of 400px.
Devlog #16 So I decided to implement some feedback that I got from the last ship. One piece of this was adding my actual certificates into the website, so people could actually view them in the webpage. So I took some time to scan all my certificates. Creating the links wasn’t quite hard, and at first I thought about just letting it open in a new tab, but then I decided to create a modal just to enhance the UX. Current Progress I decided to add all my certificates into the webpage, just to add a layer of validity to my work. The first part was finding all of the certificates. Whatever I had, I added them to my GitHub repo, and just linked the relative paths in the webpage. The ones which I had online, I just drag and dropped into the repo, while the physical ones I had to scan and then add in. So that took a while, but wasn’t too tedious of a process. After that, I just made a “View ->” sign that appears when you hover over the card, and that is actually a link to the image. Then I decided to make a modal. I realized it actually isn’t too hard, but the JS logic is a but complicated. I styled the modal in CSS, and then just added a .open class to it which was activated when you click the link. So I’m starting to understand JS logic, the only thing that I have trouble with now is writing like proper syntax, as I still have trouble with writing the correct syntax, and that can cause some problems. So then I styled how the image looks in the modal. At first I though about add ing a X to close the modal, but then I made it so then if you press outside the image, then the modal disappears. Some of my UCMAS achievements do not have images attached to them because I couldn’t find actualy certificates for them, so I might take pictures of my trophies to put there, but I haven’t got to that yet, and I don’t want to put low-quality images. So those are still empty, but almost everything else is filled, so now you can go and view those. Next Steps I literally don’t have anything left to do on this, so I think the next step is to just ship. I will take a break from this project and begin to work on my next one, which will be making a cool new tab page from my browser. So expect a ship soon. If anyone has any suggestions on something to add, you can let me know! Below is an image of my stardance certificate shown in the modal on the page.
Devlog # 17 This is my final devlog before I ship! I wanted to add a picture of myself in the website so I tried to find a way to do that. I decided that I will make it so that the about me card will flip when hovered over and on the other side will be my image. I thought it would be pretty simple, so I began working on it at 12 last night thinking I could finished it in about 30 minutes. Turns out I was wrong. It took me more than two hours just to get a card to flip and show my image. It was a pain, but the end result looks really neat. Current Progress To make the flip card, I had to restyle the entire about me section. I used a W3Schools tutorial, but i couldn’t end up working well with it, so then I turned to AI for debugging, because I had so many div layers for that card, and then I finally styled it to look good. The effect looks really good though. As well, I decided to publish everything to Github as well now because I hadn’t published anything for the past couple of days so yeah. Then I found a problem with the images not getting pulled correctly, so then I had to transfer all of those to a public/ folder and then adjust the file paths for all of them in my code, and then reload and redeploy like a bajillion times. So it was a lengthy process, but I finally got it working publically, Next Steps My next step is to ship. I really hope I get rated good because I want a pebble time 2. After this I will begin to work on my next project for the remainder of the event, which is a new tab page. After that, I am done with Stardance, as I also have a lot of school work now. So I will ship soon!!
Ships:
I am working on my personal portfolio. Right now I am just working and crafting the sections and filling in some info. I still have to work on styling and go through all of the sections. But for now I am going to ship
My Portfolio Project Hi! Welcome to my Stardance project. In this project, I made a personal portfolio website so I could showcase my work. Especially as I enter high school this year, I wanted to have a platform to record all of my progress and have a way to display it to the public. I also wanted to get more experience with coding. Over the past few years, I have done like super mini project in HTML and CSS, but this website is one of my first fully developed projects, and that I have coded all by myself. So I took this opportunity to properly learn HTML and CSS, and also introduce myself to languages like JS and GLSL. Features The website has 6 sections that I made: Hero About Me Projects Experience Achievements Contact Here are some features of my website: The website has an interactive navbar which links to each section in the webpage. There is also a logo in the corner which will link to the Hero section. The navbar has a frosted glass look, which makes blurs the background behind it. The title in the Hero section (which is my name), has a rainbow gradient applied to it. The cool part is that the gradient moves and loops in the name, so the gradient is always moving slowly. This is actually applied to all of the section headings in the webpage. Each card in every section has a frosted glass look applied to it, so it will blur the background behind it. They also enlarge and brighten when you hover over them. The cursor is a small white dot instead of a regular cursor, which enlarges and turns light purple when hovering over a link to communicate to the user that the link is clickable and will lead somewhere. One of the main highlights is the background, which is a shader background made with GLSL, WebGL, and Three.js. The background is an animated gradient. It is also interactive as it will respond to the cursor on the screen. It is one of the key aspects that really make this website shine, and what really makes this project unique and different from other ones. The Easy and Hard Parts Easy Part There were some really easy parts while building this. One was building the HTML layout. After I understood the basics of making classes and organizing texts and everything, it was quite easy to start filling out info for all of the sections. I thought it would be like a really big thing to fill in all of that info, but turned out it wasn’t quite hard. Hard Part There were also hard parts. One main one was the shader background. First it took a really long time to code the first draft of that, as I had to make a shader in GLSL and then import Three.js, and all of that. But then that first draft didn’t work, so then it took me a really long time to debug the code as I had to look through everything for like typos and all that. I did use AI for this part, but it was still a really long and hard process, going back and forth trying to see what was wrong. But in the end it was totally worth it. Overall Overall, I spent a lot of time and effort in this project. One thing that I really wanted to do was make just that I documented all of my progress frequently in devlogs, and I think that I achieved that because all of the 13 devlogs that I have written are pretty detailed. I also wanted to make this unique to me, and I think that the shader background achieved that and just brought the project to a new level. I really hope you enjoy it, and I am happy to take any feedback. I hope to constantly keep updating this project over the next few years. Otherwise, I might add some new features to it (including a scroll bar) in the next month before Stardance ends and I get too busy with school. Below you can view some screenshots of each section of the website (it doesn’t let me upload a video, or else I would’ve done that). Enjoy!!!
Ship #2 for My Portfolio This is my second ship for this project. Since my first ship, I have mainly just added some small features to increase the UX. A lot of these changes were features that I had seen on websites that I liked. So when the time came to bedazzle my website, I implemented these features in my own website. One really consistent thing that I noticed while implementing these features, is that a lot of features are quite simple to implement once you understand the basic logic. I also noticed that once you add these small features, it can make a great effect on the UX, and that the few hours you put into the little things, can have a huge impact and create a great impression on those who visit your website. New Features I added a cool gradient horizontal scroll bar that fills up as you scroll down. I thought this was a super cool feature and required some simple JS logic to implement. The next thing was a loading page. It is a quite simple one, just having a gradient filled circle outline which spins to show a loading effect. Again a small feature just to add nice feel from the moment a person opens the webpage. The next thing was a scroll fade up reveal to everything in the site. I really like seeing this effect on other websites as well, so I wanted to implement it into my website as well I added media queries because I saw how bad the website looked on the phone, and it was just really annoying me. So I took the time to add that just in case I ever had to show anyone my webpage on the phone. After that, I decided to upload some of my certificates onto the website so people could very them, just to add another level of validity. However, instead of making the images open in another tab, I made them open in a modal that stays in the browser tab. I thought this was a super cool effect. Last thing was that I added my photo. To do this, I made it so that when someone hovered over my about me card, it would have a flip animation and on the other side my photo would show. I thought this was a nice and subtle was to implement my photo, without messing up any other styling on the page. Learning JS A lot of these features were implemented with JS, especially ones that were triggered with user input. I will acknowledge that I used AI to help with understanding JS logic for some of these features, and debugging as well, but I also learned along the way. I find JS much more complicated than HTML and CSS, and I think that I have really come far in understanding and implementing it. For examples, I can assign elements and add and remove classes based on user input. I still have some trouble with syntax, and that causes a lot of my problems, but I am really starting to get the hang of JS. I think that JS can create some really neat animations and effects, so I want to learn and understand this language, so that I can let others experience the cool things that I see on other websites. Overall I spent a lot of time on this project, and put in hours even after school started. It is a really personal project. I have come really far since I first started this project and I have grown confident in understanding and writing code and achieve the desired results. I probably will not work on this project after this ship, and will instead turn to other projects that I have pending. Please enjoy this project. If you have any suggestions, let me know in the review or as a comment, and I will try to implement it. Thank You!! Below is a picture of my stardance certificate in the modal that I made, and the other is a picture of the spinning gradient loader. Enjoy!!!...
|
1793137713.3870604
|
1793224113.3870604
|
|
40406
|
part-of.my.id revived by @satr14 | Stardance
|
satr14
|
4
|
51.0
|
430
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-26T14:33:47Z", "hours": 18.0, "multiplier": 18.4, "payout": 0, "blessing": "neutral", "text": "NOTE: (please read before reviewing) please do your research on what DNS is and how it works before ratting. the docs will explain it for you but PLEASE dont just say “idk what it does so i give low ratting”. BOOM!!! final version. 52 hours, a milestone i never thought i reached. this was truly a journey. stardance got me from burnt out back to enjoying coding again surprisingly. i deff learned a lot, especially during rewrites using a lot of language features like typescript’s non-null assertion, svelte 5’s snippet templates, and tailwind’s important css operator. anyways, here’s whats new: more docs to explain to newbies on what DNS is and introduction to the service improved doc browsing navigation with table of contents and next/prev buttons editing for existing subdomains (that you own of course) code rewrite (again), extra strict subdomain editor added contact email for support and issue reports moved a lot of pages to ssr based rendering (lightning speed performance!!!) performance and SEO enchancements ci addition for auto format and labeling ci checks for emails thats it for this project. cya in the next ysws hackclubbers ;)", "repo": "https://github.com/partofmyid/register", "demo": "https://part-of.my.id/docs/domains101"}, {"ship_num": 2, "ts": "2026-10-10T03:56:39Z", "hours": 15.0, "multiplier": 10.93, "payout": 165, "blessing": "neutral", "text": "okay a LOT OF NEW FEATURES and improvements from last devlog feedback: subdomain service: NEW record: REDIRECT, a CloudFlare Single Redirect Rule powered robust tests using bun’s built in jest compatible testing API website & docs: NEW docs: /services, listing all known tested and working services tldr in the docs and README for quick registration support for REDIRECT records in webui editor short consice guide for registering", "repo": "https://github.com/partofmyid/register", "demo": "https://part-of.my.id/docs/domains101"}, {"ship_num": 3, "ts": "2026-09-15T09:35:30Z", "hours": 4.0, "multiplier": 13.65, "payout": 60, "blessing": "neutral", "text": "this should have improvements from last ship’s suggestions and feedback /record and /success page for generating json fixed broken links (no /d or /q anymore) added background elements to make website feel more alive", "repo": "https://github.com/partofmyid/register", "demo": "https://part-of.my.id/docs/domains101"}, {"ship_num": 4, "ts": "2026-08-16T05:45:34Z", "hours": 14.0, "multiplier": 14.89, "payout": 205, "blessing": "neutral", "text": "VERSION 2.0 IS LIVE Registration instructions are available on the website. part-of.my.id is a free subdomain service that allows you to get a sleek lookin your-name.part-of.my.id domain instead of a the boring old one that hosting providers provide like pages.dev, github.io, etc. This rewrite brings to you: Multi apex domain support for the new domain: is-my.id A sleek redesigned main website and documentation", "repo": "https://github.com/partofmyid/register", "demo": "https://part-of.my.id/docs/domains101"}]...
|
[{"post_id": 82997, "ts": "202 [{"post_id": 82997, "ts": "2026-10-26T14:22:00Z", "hours": 4.1103, "text": "damn, i was obsessed after loosing a streak to recover it that i forgot to devlog :p last commit hashes: website: cdc095290ad6e1cef4555ed497ab358a6fbb9608 nothing much for user side, this was mainly code cleanup and a bit of logic rewrite. this makes sure that in the future adding more record type support is as easy as adding 1 line to the SUPPORTED_RECORDS field. cleaned up duplicate Object.entries() calls moved record rules handling to separate library file(s) rewrite records page to be more modular and scalable when adding more record types in the future created regex constants in a separate library file due to sheer sizes of these regexes (copied from ajv-formats, same regexes used in ci) simplify duplicate row table creation into a svelte snippet fixed a lot of deprecated imports code cleanup, remove unused imports, exports, variables, and type declarations again, last devlog for this project. its been a good run"}, {"post_id": 82051, "ts": "2026-10-23T16:39:48Z", "hours": 2.9956, "text": "well more time without devlogs, but i didnt work on anything massive anyways so should be fine. last commit hashes: website: 6fee809e77174f42e3ece9c71d2d8b6a95120d69 register: 4c1860c68904c5378a761a100013ce3da8836771 this is gonna be the last devlog before i ship for the last time. or not, but ill most likely work on other projects. i do still have 1 more thing to do which i might or might not do. depending on how hard it ends up being. then again i am paid by the hour sooo….. but school is starting to get busy again so ig we’ll see register: completed the draft /docs/domains101.md doc for introduction to the service website: add handler for /docs/[empty] to redirect to first in line defined doc moved loadDoc helper function to $lib added a loading bar for indicating page load in progress add previous and next buttons to the bottom of docs page added domains101 doc entry"}, {"post_id": 80984, "ts": "2026-10-19T14:46:48Z", "hours": 1.7822, "text": "this is when im starting to head bang a lot, because of an undocumented github feature ive been relying on for web ui editor. last commit hashes: website: f1e3a4387e6780d61bc55feeead37ead03ec3b0a register: 5625239d30e691ace298336953d663b6e396c0e3 so ive been using github’s REPO/new/branch/PATH?filenam=A&value=B query params for prefilling records in the web ui editor form. during testing, i noticed that for some reason JSON.stringify isnt formatting the json when i open it on github. after a bit of testing, turns out github minifies valid json input. when i tried some string concats with JSON.stringify output that produced invalid json then the indentation returns. this is rather confusing and frustrating. even tho the ci now handles formatting, its still a pain for pr reviewing to review unformatted, one-line json files. due to github not really documenting this feature well, i suppose we have to live with it. i do have plans later to possibly use octokit instead for pr generation, but thats a lot more work i dont have time for. anyways, i didnt feel like writing changelog so ill just say it in brief. i added email regex checks to the ci as well as formatting warnings. and for the web ui, i made an advanced view to show raw json and the file path in case someone is willing to do it themselves. i also fixed a lot of the unserious things i threw around the success page like the ??? step"}, {"post_id": 80413, "ts": "2026-10-17T15:47:36Z", "hours": 0.7022, "text": "genuinely so tired for some reason. prob from playing mc recently and dying and lossing my stuff to despawn timer. OKAY! enough trauma dumping. we got work to do last commit hashes: website: e4e59479ec953dcfb63e0965518d35906ab625e8 register: mostly a lot of janitor work: code cleanup and directory reordering. but theres also an auto formatter in the workflow now! website: fix heading centering from last devlog, found bug after testing mobile view register: move dnsconfig.js to /scripts/bin for organization installed oxfmt for formatting files added bun fmt script to package.json added oxfmt config file with exclusion rule on everything but /domains formatted every domain file using oxfmt added notes for cf tunnels in /docs/services.md (unsupported services) add prettify/formatting workflow for every push code cleanup: remove unused nodejs step in workflow file, were using bun anyways code cleanup: whitespace and newline removal add tip and caution alerts in quickstart guide regarding pr checklist and prettify formatting"}, {"post_id": 80168, "ts": "2026-10-16T15:08:22Z", "hours": 1.3353, "text": "all my energy went into working at the weekdays 😭 now im hella tired. either that or im procrastinating more. last commit hashes: website: e4e59479ec953dcfb63e0965518d35906ab625e8 im still hopping i can at least reach 11h a week for my goal. training before i switch to another ysws when stardance ends fr website: code cleanup, add missing semicolons and remove unused imports added common issues help guides with screenshots to next steps page added back to query link for record editor page unified box styling across the site for consistent design made edit button in record editor yellow if subdomain taken grammar fix to landing page paragraph :p query page: moved announcement to the bottom of the page minor styling changes to borders, seperators, text selection, and cursors"}, {"post_id": 79810, "ts": "2026-10-15T14:39:47Z", "hours": 2.6617, "text": "i forgot to devlog yesterday ;-; also i was supposed to work on other important aspects like the tutorial and barely finished pages. but ngl looking at the existing pages and adding small improvements and tiny details just feels more relaxing for me. but i still need to do that tutorial because stardance said so ;-; last commit hashes: website: 2de11547f2cc7e0b8ad3c107fbee8d44e0a97682 register: 2e183b224fdce4811b05c89b9f594551c13a7dad lowk idk when but i got mystery motivation and im racking up good amount of hours/day. i do have a goal rn to try and buy an bambu lab 3d printer so thats prob a contributor to my motivation. website: code cleanup, remove unused typescript code import use tables in record forum page for consistent spacing fix hover confusion on disabled inputs by disabling hover background color change remove unnecesarry label (just please research about dns 😭 ) added more dividers to records form page add clarification that subdomain descriptions are optional make pfp previews link to github profiles bug fix to REDIRECT records on read only mode improve table of contents styling to tree like stem made toc and md parser function also generate heading numbering (e.g. 1.2.3) (unused for now) code cleanup, remove empty new lines to compact code made table of contents entry highlight depending on view (js required) close table of contents in docs by default tweaked query page styles for showing borders set disabled state as default in records form hide checkmark if input is disabled added fork warning in records page added the ability to edit registered subdomain hide table inputs if empty register: clarity to reference docs regarding CNAME and REDIRECT changed heading level in Terms of Service AI section"}, {"post_id": 79335, "ts": "2026-10-13T15:29:43Z", "hours": 1.45, "text": "a bit of a rant before anything, PLEASE JUST DO YOUR RESEARCH BEFORE RATTING MY PROJECT. may come off as mean but please. yall asked for detailed and concrete docs and end up saying its “too long” like bro 😭. i do have one more plan for tutorials to make it easy. but if this doesnt help then go rtfm last commit hashes: website: 122e3777c7c52e7bf05a8a32f7e4f91b11d09ada register: d7ac98d86913daad3c18260120e41dda2873f8ef got stacks of homework today so i cant really do my 2 hour daily goal rn unfortunately :( but trust me, i will get that 11 hour weekly website: rename doc link “requirements” to “terms” new favicon of indonesian flag (using emoji variation from discord/twitter) might use this for a logo later code cleanup and simplification remove unused variables in code query page with ssr optimizations moved /query/[query] to /query handled passing subdomain query to form body changed landing and query page to use sveltekit form actions made readme announcement fetching ssr hide subdomains when query is empty made apex listing ssr register: fixed github actions workflow labeler created issue templates for bug report, abuse report, and support questions added abuse report information and email to main readme changed query url to match website"}, {"post_id": 79068, "ts": "2026-10-12T15:48:11Z", "hours": 2.2858, "text": "last commit hashes: website: d27e3b5f90cfcb4a59d39a6fe507c45388a323ec register: 24080879b4fbb1bb8c9e436dc8f2bdefce64af4f energy on mondays to work on this phew website: added doc entry for faq page added support email in website footer adjusted spacing and sizing on containers to make other elements visible handle disabled js for forum and counter integrate lavender theme throughout landing page added table of contents to docs page via marked plugin for gfm heading ids mobile input layout fixes for records web ui page register: added domain configurations for google search console and cloudflare email routing for support email added ignore directive to dnscontrol for cloudflare managed records added extra rules against vibe coded websites github workflow file fix causing some checks to skip grammar fix across markdown files (thank you claude copilot) added pr labeling automation for detecting non domain changes in a pr quickly modified dnscontrol script to add incrementing mx priorities based on order of entry clarify rough points within documentations added draft beginner guide docs added new documentation for frequently asked questions code cleanup: remove comments, fix indentation reorganizing files and directories to put images in appropriate locations fix gfm blockquote alert usages added all full records to example file contents in reference documentation"}, {"post_id": 78696, "ts": "2026-10-11T10:29:20Z", "hours": 0.9756, "text": "last commit hashes: website: a4917bbdf5899623b6dfcae356e01572dfbceb05 realized there were some issues after shipping so im fixing them now. got a near perfect lighthouse score :D fix responsive size on landing page cards added missing meta tags for SEO added banner for meta tags handle github rate limiting on landing page fix accessibility on landing page buttons optimized github avatar images fetching to fixed size fix document heading hierarchy code cleanup removing unused comments font optimizations with preconnect hints and preload tricks"}, {"post_id": 78247, "ts": "2026-10-10T03:53:00Z", "hours": 1.5075, "text": "last commit hashes: website: f04e761e0557d7c5c7bfd6a680bec5a6cfbca44a register: 154bfb712857b9000d00ba0e6ea613064f367246 last devlog before shipping :D website: added REDIRECT record support to web ui editor (thanks claude) minor ux and styling fixes with labels and lists purely and only server side render docs page reworked steps section to be more appealing register: added small note to docs in the supported services section for when you want to add a supported service thats not listed"}, {"post_id": 78113, "ts": "2026-10-09T16:25:13Z", "hours": 2.5431, "text": "last commit hashes: website: 8410efa3debca260451e80b206b2ec8923a45c7c register: a1aefd289360a874e40e09c9b2817501d3b2590f i again forgot to devlog so heres more category based changelogs. after this im gonna add support for redirect record in the web ui website: added table of supported services docs added styling for article tables adjust minor ux tweaks for a better experience maintenance: run bun update to update deps and lockfile add a short 4 step tldr on the website landing page add a short tldr in the quickstart guide register: added new record type: REDIRECT, a cloudflare single redirect rule powered 302 redirect implemented tests for redirect wrote docs in references.md about new REDIRECT record migrate hardcoded extracommits into their own domain files added brief registration guide in README wrote new docs for supported services table add tldr for quickstart guide adapted from brief guide in main README register misc: fixed some names in github actions workflow files"}, {"post_id": 78022, "ts": "2026-10-09T07:10:39Z", "hours": 3.5436, "text": "last commit hash: 72f864ff282701585c5d43d5818a5ee22c29e168 supposed to be 3 separate devlogs but i genuinely forgot to. so im gonna split this changelog to categories. bun test validation: add github helpers for fetching diff and raw files from commit and raw urls implemented tests for checking changed file owners against pr author added a bypass label for ownership transfer extra types and functiong tweaks to existing library apis skipped pr author check if pr number for checking isnt present remove uneeded exports in some files as most are internal use optional chaining for clearer error messages in ci project structuring: split deep.test.ts to multiple focused files instead of relying on describe() grouping split helpers, constants, and types into a their own library file move tests and shared libs into /scripts/lib and /script/tests respectively github actions: wire bun tests into ci updated ci triggers for prs, manual, and push settings removed step for validating with json schema in favor of bun tests rename a couple of step and job names for clarity misc: add some missing semicolons tab space consistency fix a couple of variable names"}, {"post_id": 76291, "ts": "2026-10-03T03:10:53Z", "hours": 1.1539, "text": "last commit hash: 2d191fa190db7b3904256e96b27dd6608d42af56 fix existing record files failing the test fix test to exclude .json extension during name length test add a check for unknown and typoed keys added draft tests for website reachability made draft/empty tests fail on purpose check subdomain if containing any apexes minify some parts of the code to one liners made ownership checks per level (a.b.c.json checks for b.c.json and c.json instead of just c.json) added safeguards to not print multiple failures if root cause is erroring out to make sure errors are readable reorder some tests to run first than others used node:path’s path.join for path handling moved json parsing expect calls to helper function for reading json to eliminate repeated code made most of the error messages clearer to follow"}, {"post_id": 75789, "ts": "2026-10-01T04:41:44Z", "hours": 1.0119, "text": "made a new field in the getDomainRecords helper function to check for file existance and handle json parse fails made a new helper function to generate subdomain file path based of apex and subdomain changed tests to use the new implementation of getDomainRecords implemented tests for cloudflare proxied rules implemented tests for dns limitation rules implemented tests for root and nested subdomain ownership"}, {"post_id": 75593, "ts": "2026-09-30T14:57:47Z", "hours": 1.2486, "text": "ts is me with random lock in phases: still not fully implemented to be included with the testing workflow, i have a lot of features planned but i prefer to finish this first. better error messages for expect fails extra checks for empty objects, arrays, and strings made most/all tests use testing api specifics rather than a conditional check if expression is true (for better error messages) add a check for capping filenames to less than 245 characters (as per dns hostname rules) checks for nested apex in filenames (example: steve.is-my.id.json is invalid) reorder some tests add a check for uppercase letters (one of the existing subdomains violated this rule so i fixed it manually) add a check for repeated dashes (–) as the current regex doesnt catch this and i didnt feel like changing it created empty tests as drafts for later to be implemented remove unused ALIAS record handling as it was used internally but not needed anymore"}, {"post_id": 75220, "ts": "2026-09-29T14:41:31Z", "hours": 1.475, "text": "so mostly focused on improving the register repo and docs experience as i feel like the website is established and complete at this point. i am still learning the bun/jest api on writing test code so this may not be perfect, but its a start! made a wrapper function for looping through subdomain files using callbacks and bun fs api improve regex checks for ipv4, ipv6, and fqdns based on ajv-formats npm package (regex is copied pasted from source code rather than installing the package directly as that introduces bloat and dependency management) slight fixed to tests handling promises (still rather broken but ill fix that later) add new constants for looping though records made a helper function to read subdomain file and parse the json. both using bun fs api update all test fail messages to print file paths for easy tracing new test to check schema structure and record values using ip and domain regexes"}, {"post_id": 74331, "ts": "2026-09-27T05:47:48Z", "hours": 1.6714, "text": "split time between writing docs (uncommited, might be discarded due to low quality) and writing tests leveraging bun apis. these tests are not completed, therefore they wont be used for github actions pr check workflows (yet). wrote docs: beginners guide (partial) and unsupported services (empty) extracted typescript types and constant to schema.ts for use in test units initialized bun for package management in the future if needed created deep.test.ts wrote test for checking unknown files outside of the /domains/[apex] directories wrote test for checking file names valid subdomain fqdns wrote test for checking if json is valid and parse-able"}, {"post_id": 69643, "ts": "2026-09-17T14:04:10Z", "hours": 0.9692, "text": "okay well ships on this project isnt really doing the best in terms of stardance output, so i really need to address a lot of these critics if i want good multipliers. anyways so most of the time here is spent on writing ci tests for the register repo. however, i decided to scratch the majority of this code due to poor implementation execution. so this devlog will only have commits resolving some critics. website: fix z-index header bug where some elements would appear above the bar add a warning tip to the website repo readme for anyone who ends up there instead of the register repo changed the view source link for this project on stardance to redirect to the register repo updated the readme (adapted from my personal website repo readme) register: (scratched) test framework with raw js and bun add a tip for registering via web ui last commits from git repos (pinpoint for writing the next devlogs): register: 1564638a6d7eccc495a89948145898d0e4a1ddfc a1e2b4e4cf511f921ffc6b78bca260133afe4e7d okay a bit of a rant but school is starting to burn me out again. honestly i already got my certificate but now my motivator is gonna be the shop items. (i havent spent anything yet, not even for domain grants) im saving up and will spend after stardance ends. i am planning to hopefully do at least 1 - 1.5 hours on weekdays and hopefully overtime on weekends. we’ll see how that turns out i guess."}, {"post_id": 68541, "ts": "2026-09-15T09:17:00Z", "hours": 1.2439, "text": "edit: okay so i forgot some other changes but i cant really add those minutes to this devlog so ill just put the change here: added a character limit to the homepage search input (register repo) add a tip in quickstart doc about webui registering end of edit add warning texts for empty records and submit button pretty format resulting json enforced populated records instead of allowing empty domain registration form layout styling tweaks and fixes to inconsistency spacing add a success page that waits 5 seconds before opening github and displays next steps change submit functionality to redirect to success page code cleanup from unused variables and inconsistent spacings"}, {"post_id": 67994, "ts": "2026-09-14T10:36:43Z", "hours": 1.8175, "text": "almost forgot to devlog! anyways website: made a draft object for the form, should make interactivity easier to implement styling for checkbox, hr, and disabled input elements made an ARRAY_RECORDS string for supported records in type of string[] implemented form for registering subdomain records made readonly if subdomain is taken"}, {"post_id": 66670, "ts": "2026-09-12T15:11:06Z", "hours": 1.3625, "text": "changes are half complete but i decided to devlog rn to keep things short. please note these changes arent pushed yet as im writing this website: rename /q and /d to /query and /docs change redirect links to the new routes add background stars from my personal website made a records page for creating subdomains and editing existing records (incomplete) implemented fetch function for getting records change query link to redirect to record page register: replace /docs/*.md code blocks to actual doc links only resolvable when viewed from the main website"}, {"post_id": 47895, "ts": "2026-08-16T05:16:20Z", "hours": 0.5, "text": "added important links polished org readme added a profile picture for the org and website add a nametag gimmick on the website (desktop only)"}, {"post_id": 47881, "ts": "2026-08-16T04:27:20Z", "hours": 1.2019, "text": "fix wrong key on website add discord domain verification record for is-my.id wrote website requirement docs fixed grammar errors and typos (thanks claude) remove outdated docs notice replaced part-of.my.id’s v1 website with placeholder for v2 last final touch ups v2 website should be live now"}, {"post_id": 47536, "ts": "2026-08-15T14:44:42Z", "hours": 2.2581, "text": "mostly spent fiddling with a bit of ai and doing finishing touches before deployment. this was supposed to be 2 devlogs but i forgot to post and just continued coding but oh well. a lot of styling tweaks for markdown displays and forms install marked alert plugin for gfm alert blockquotes scrollbar, article, disabled button, and other element styling made footer stick to the bottom regardless of content height move loaddoc function to lib for use in other pages such as query function to remove apex domains from query if present implement subdomain suggestions html structure readme display for announcements loading indicator texts change nav link from config to query after this im gonna write docs/requirement.md and polish the github org a bit before shipping (hopefully) tomorrow"}, {"post_id": 47253, "ts": "2026-08-15T01:50:28Z", "hours": 1.3742, "text": "split time between website and register docs, bc i keep going back and forth and cant decide whether the website or the docs are more important. anyways register: create base doc files for quickstart and requirements write docs for quickstart guide remove cringy line on the register repo readme website-v2: made a base domain query page (unfinished) new page-container class in global styles used for consistent margin and padding fix link styles in docs handle form submission for homepage subdomain search better query param handling for docs loaddoc function tweaks for handling input styling changes to docs"}, {"post_id": 45763, "ts": "2026-08-12T13:47:31Z", "hours": 1.5139, "text": "felt productive again somehow during a school night made docs page under /d/[document name] implement markdown fetching from github raw api implement docs nav via hardcoded object for paths installed marked styled docs markdown render using tailwind typography plugin updated whole website to use lora font fixed some homepage paragraph wordings fixed some elements to use correct cursor move some styles to global app.css fixed mobile spacing for header and footer"}, {"post_id": 43670, "ts": "2026-08-09T02:03:31Z", "hours": 1.1919, "text": "thats a pretty good amount of time accumulated purely writing docs new markdown files under /docs for documentation and usage guides wrote raw references for filesystem structure and json schemas"}, {"post_id": 43375, "ts": "2026-08-08T16:04:06Z", "hours": 0.6681, "text": "small devlog but prob worth mentioning well the actions script failed due to worker routes being read only. i decided to use dnscontrol’s built in CF_REDIRECT record for this instead and also update it due to missmatch TTL from dev with prod. apparently this caused an error because actions kept failing to deploy due to missing creds. after a while of debugging and headbanging, i folded and attempted to use github copilot agent to try and fix it (hehe pr number 67) but that didnt do the trick. it was only when i checked the repo secrets that i realized the env variable is called CF_API_TOKEN and not CLOUDFLARE_API_TOKEN. that was like hours of my time spent away debugging instead of working on the website like i planned but oh well no changelog list because im gen tired rn like its 11.00pm wiuriuhewuhfiuwhfihewiuhih"}, {"post_id": 43319, "ts": "2026-08-08T14:49:31Z", "hours": 1.8528, "text": "took longer than expected, now im rewriting the dnscontrol script for deploying dns records to support multiple apex domains. this was rather challenging due to dnscontrol’s heavily limited dsl and language features, but eventually it works and now i just need to add documentation in markdown. fix type errors and cleanup code in dnscontrol.js before rewrite cleanup unused scripts and nix files remove nix branch (previous plan but support was too limited to be reliable) modified json schema so now “record” key is “records” (plural) update github action yaml files as well as fix old file paths"}, {"post_id": 43146, "ts": "2026-08-08T07:52:31Z", "hours": 1.4406, "text": "mhm not bad so to say reordered fetch function calls for stats display adjusted the typing and count functions for smootheness use lavender as the primary color complete homepage sections (mostly copied from the old site) add a footer and yes i made the github logo cyan but cmon we need some colors here"}, {"post_id": 41933, "ts": "2026-08-06T13:42:52Z", "hours": 1.1564, "text": "back after a long procrastination and burn out period. made stats counter increment one by one when loaded using js function by copilot made main title typing using js function by copilot added a little info bar indicating new subdomain available for registration added forum/search bar for registering new domains added grid dot background from my personal site added a nav bar added small about me, wip for continuation on the main landing page"}, {"post_id": 35748, "ts": "2026-07-27T11:57:51Z", "hours": 0.595, "text": "humble beginnings :D init sveltekit with tailwind installed tailwind typography and forums plugins installed catppuccin color theme made initial base home page design"}]...
|
Title: part-of.my.id revived by @satr14 | Stardanc Title: part-of.my.id revived by @satr14 | Stardance
Devlogs:
humble beginnings :D init sveltekit with tailwind installed tailwind typography and forums plugins installed catppuccin color theme made initial base home page design
back after a long procrastination and burn out period. made stats counter increment one by one when loaded using js function by copilot made main title typing using js function by copilot added a little info bar indicating new subdomain available for registration added forum/search bar for registering new domains added grid dot background from my personal site added a nav bar added small about me, wip for continuation on the main landing page
mhm not bad so to say reordered fetch function calls for stats display adjusted the typing and count functions for smootheness use lavender as the primary color complete homepage sections (mostly copied from the old site) add a footer and yes i made the github logo cyan but cmon we need some colors here
took longer than expected, now im rewriting the dnscontrol script for deploying dns records to support multiple apex domains. this was rather challenging due to dnscontrol’s heavily limited dsl and language features, but eventually it works and now i just need to add documentation in markdown. fix type errors and cleanup code in dnscontrol.js before rewrite cleanup unused scripts and nix files remove nix branch (previous plan but support was too limited to be reliable) modified json schema so now “record” key is “records” (plural) update github action yaml files as well as fix old file paths
small devlog but prob worth mentioning well the actions script failed due to worker routes being read only. i decided to use dnscontrol’s built in CF_REDIRECT record for this instead and also update it due to missmatch TTL from dev with prod. apparently this caused an error because actions kept failing to deploy due to missing creds. after a while of debugging and headbanging, i folded and attempted to use github copilot agent to try and fix it (hehe pr number 67) but that didnt do the trick. it was only when i checked the repo secrets that i realized the env variable is called CF_API_TOKEN and not CLOUDFLARE_API_TOKEN. that was like hours of my time spent away debugging instead of working on the website like i planned but oh well no changelog list because im gen tired rn like its 11.00pm wiuriuhewuhfiuwhfihewiuhih
thats a pretty good amount of time accumulated purely writing docs new markdown files under /docs for documentation and usage guides wrote raw references for filesystem structure and json schemas
felt productive again somehow during a school night made docs page under /d/[document name] implement markdown fetching from github raw api implement docs nav via hardcoded object for paths installed marked styled docs markdown render using tailwind typography plugin updated whole website to use lora font fixed some homepage paragraph wordings fixed some elements to use correct cursor move some styles to global app.css fixed mobile spacing for header and footer
split time between website and register docs, bc i keep going back and forth and cant decide whether the website or the docs are more important. anyways register: create base doc files for quickstart and requirements write docs for quickstart guide remove cringy line on the register repo readme website-v2: made a base domain query page (unfinished) new page-container class in global styles used for consistent margin and padding fix link styles in docs handle form submission for homepage subdomain search better query param handling for docs loaddoc function tweaks for handling input styling changes to docs
mostly spent fiddling with a bit of ai and doing finishing touches before deployment. this was supposed to be 2 devlogs but i forgot to post and just continued coding but oh well. a lot of styling tweaks for markdown displays and forms install marked alert plugin for gfm alert blockquotes scrollbar, article, disabled button, and other element styling made footer stick to the bottom regardless of content height move loaddoc function to lib for use in other pages such as query function to remove apex domains from query if present implement subdomain suggestions html structure readme display for announcements loading indicator texts change nav link from config to query after this im gonna write docs/requirement.md and polish the github org a bit before shipping (hopefully) tomorrow
fix wrong key on website add discord domain verification record for is-my.id wrote website requirement docs fixed grammar errors and typos (thanks claude) remove outdated docs notice replaced part-of.my.id’s v1 website with placeholder for v2 last final touch ups v2 website should be live now
added important links polished org readme added a profile picture for the org and website add a nametag gimmick on the website (desktop only)
changes are half complete but i decided to devlog rn to keep things short. please note these changes arent pushed yet as im writing this website: rename /q and /d to /query and /docs change redirect links to the new routes add background stars from my personal website made a records page for creating subdomains and editing existing records (incomplete) implemented fetch function for getting records change query link to redirect to record page register: replace /docs/*.md code blocks to actual doc links only resolvable when viewed from the main website
almost forgot to devlog! anyways website: made a draft object for the form, should make interactivity easier to implement styling for checkbox, hr, and disabled input elements made an ARRAY_RECORDS string for supported records in type of string[] implemented form for registering subdomain records made readonly if subdomain is taken
edit: okay so i forgot some other changes but i cant really add those minutes to this devlog so ill just put the change here: added a character limit to the homepage search input (register repo) add a tip in quickstart doc about webui registering end of edit add warning texts for empty records and submit button pretty format resulting json enforced populated records instead of allowing empty domain registration form layout styling tweaks and fixes to inconsistency spacing add a success page that waits 5 seconds before opening github and displays next steps change submit functionality to redirect to success page code cleanup from unused variables and inconsistent spacings
okay well ships on this project isnt really doing the best in terms of stardance output, so i really need to address a lot of these critics if i want good multipliers. anyways so most of the time here is spent on writing ci tests for the register repo. however, i decided to scratch the majority of this code due to poor implementation execution. so this devlog will only have commits resolving some critics. website: fix z-index header bug where some elements would appear above the bar add a warning tip to the website repo readme for anyone who ends up there instead of the register repo changed the view source link for this project on stardance to redirect to the register repo updated the readme (adapted from my personal website repo readme) register: (scratched) test framework with raw js and bun add a tip for registering via web ui last commits from git repos (pinpoint for writing the next devlogs): register: 1564638a6d7eccc495a89948145898d0e4a1ddfc a1e2b4e4cf511f921ffc6b78bca260133afe4e7d okay a bit of a rant but school is starting to burn me out again. honestly i already got my certificate but now my motivator is gonna be the shop items. (i havent spent anything yet, not even for domain grants) im saving up and will spend after stardance ends. i am planning to hopefully do at least 1 - 1.5 hours on weekdays and hopefully overtime on weekends. we’ll see how that turns out i guess.
split time between writing docs (uncommited, might be discarded due to low quality) and writing tests leveraging bun apis. these tests are not completed, therefore they wont be used for github actions pr check workflows (yet). wrote docs: beginners guide (partial) and unsupported services (empty) extracted typescript types and constant to schema.ts for use in test units initialized bun for package management in the future if needed created deep.test.ts wrote test for checking unknown files outside of the /domains/[apex] directories wrote test for checking file names valid subdomain fqdns wrote test for checking if json is valid and parse-able
so mostly focused on improving the register repo and docs experience as i feel like the website is established and complete at this point. i am still learning the bun/jest api on writing test code so this may not be perfect, but its a start! made a wrapper function for looping through subdomain files using callbacks and bun fs api improve regex checks for ipv4, ipv6, and fqdns based on ajv-formats npm package (regex is copied pasted from source code rather than installing the package directly as that introduces bloat and dependency management) slight fixed to tests handling promises (still rather broken but ill fix that later) add new constants for looping though records made a helper function to read subdomain file and parse the json. both using bun fs api update all test fail messages to print file paths for easy tracing new test to check schema structure and record values using ip and domain regexes
ts is me with random lock in phases: still not fully implemented to be included with the testing workflow, i have a lot of features planned but i prefer to finish this first. better error messages for expect fails extra checks for empty objects, arrays, and strings made most/all tests use testing api specifics rather than a conditional check if expression is true (for better error messages) add a check for capping filenames to less than 245 characters (as per dns hostname rules) checks for nested apex in filenames (example: steve.is-my.id.json is invalid) reorder some tests add a check for uppercase letters (one of the existing subdomains violated this rule so i fixed it manually) add a check for repeated dashes (–) as the current regex doesnt catch this and i didnt feel like changing it created empty tests as drafts for later to be implemented remove unused ALIAS record handling as it was used internally but not needed anymore
made a new field in the getDomainRecords helper function to check for file existance and handle json parse fails made a new helper function to generate subdomain file path based of apex and subdomain changed tests to use the new implementation of getDomainRecords implemented tests for cloudflare proxied rules implemented tests for dns limitation rules implemented tests for root and nested subdomain ownership
last commit hash: 2d191fa190db7b3904256e96b27dd6608d42af56 fix existing record files failing the test fix test to exclude .json extension during name length test add a check for unknown and typoed keys added draft tests for website reachability made draft/empty tests fail on purpose check subdomain if containing any apexes minify some parts of the code to one liners made ownership checks per level (a.b.c.json checks for b.c.json and c.json instead of just c.json) added safeguards to not print multiple failures if root cause is erroring out to make sure errors are readable reorder some tests to run first than others used node:path’s path.join for path handling moved json parsing expect calls to helper function for reading json to eliminate repeated code made most of the error messages clearer to follow
last commit hash: 72f864ff282701585c5d43d5818a5ee22c29e168 supposed to be 3 separate devlogs but i genuinely forgot to. so im gonna split this changelog to categories. bun test validation: add github helpers for fetching diff and raw files from commit and raw urls implemented tests for checking changed file owners against pr author added a bypass label for ownership transfer extra types and functiong tweaks to existing library apis skipped pr author check if pr number for checking isnt present remove uneeded exports in some files as most are internal use optional chaining for clearer error messages in ci project structuring: split deep.test.ts to multiple focused files instead of relying on describe() grouping split helpers, constants, and types into a their own library file move tests and shared libs into /scripts/lib and /script/tests respectively github actions: wire bun tests into ci updated ci triggers for prs, manual, and push settings removed step for validating with json schema in favor of bun tests rename a couple of step and job names for clarity misc: add some missing semicolons tab space consistency fix a couple of variable names
last commit hashes: website: 8410efa3debca260451e80b206b2ec8923a45c7c register: a1aefd289360a874e40e09c9b2817501d3b2590f i again forgot to devlog so heres more category based changelogs. after this im gonna add support for redirect record in the web ui website: added table of supported services docs added styling for article tables adjust minor ux tweaks for a better experience maintenance: run bun update to update deps and lockfile add a short 4 step tldr on the website landing page add a short tldr in the quickstart guide register: added new record type: REDIRECT, a cloudflare single redirect rule powered 302 redirect implemented tests for redirect wrote docs in references.md about new REDIRECT record migrate hardcoded extracommits into their own domain files added brief registration guide in README wrote new docs for supported services table add tldr for quickstart guide adapted from brief guide in main README register misc: fixed some names in github actions workflow files
last commit hashes: website: f04e761e0557d7c5c7bfd6a680bec5a6cfbca44a register: 154bfb712857b9000d00ba0e6ea613064f367246 last devlog before shipping :D website: added REDIRECT record support to web ui editor (thanks claude) minor ux and styling fixes with labels and lists purely and only server side render docs page reworked steps section to be more appealing register: added small note to docs in the supported services section for when you want to add a supported service thats not listed
last commit hashes: website: a4917bbdf5899623b6dfcae356e01572dfbceb05 realized there were some issues after shipping so im fixing them now. got a near perfect lighthouse score :D fix responsive size on landing page cards added missing meta tags for SEO added banner for meta tags handle github rate limiting on landing page fix accessibility on landing page buttons optimized github avatar images fetching to fixed size fix document heading hierarchy code cleanup removing unused comments font optimizations with preconnect hints and preload tricks
last commit hashes: website: d27e3b5f90cfcb4a59d39a6fe507c45388a323ec register: 24080879b4fbb1bb8c9e436dc8f2bdefce64af4f energy on mondays to work on this phew website: added doc entry for faq page added support email in website footer adjusted spacing and sizing on containers to make other elements visible handle disabled js for forum and counter integrate lavender theme throughout landing page added table of contents to docs page via marked plugin for gfm heading ids mobile input layout fixes for records web ui page register: added domain configurations for google search console and cloudflare email routing for support email added ignore directive to dnscontrol for cloudflare managed records added extra rules against vibe coded websites github workflow file fix causing some checks to skip grammar fix across markdown files (thank you claude copilot) added pr labeling automation for detecting non domain changes in a pr quickly modified dnscontrol script to add incrementing mx priorities based on order of entry clarify rough points within documentations added draft beginner guide docs added new documentation for frequently asked questions code cleanup: remove comments, fix indentation reorganizing files and directories to put images in appropriate locations fix gfm blockquote alert usages added all full records to example file contents in reference documentation
a bit of a rant before anything, PLEASE JUST DO YOUR RESEARCH BEFORE RATTING MY PROJECT. may come off as mean but please. yall asked for detailed and concrete docs and end up saying its “too long” like bro 😭. i do have one more plan for tutorials to make it easy. but if this doesnt help then go rtfm last commit hashes: website: 122e3777c7c52e7bf05a8a32f7e4f91b11d09ada register: d7ac98d86913daad3c18260120e41dda2873f8ef got stacks of homework today so i cant really do my 2 hour daily goal rn unfortunately :( but trust me, i will get that 11 hour weekly website: rename doc link “requirements” to “terms” new favicon of indonesian flag (using emoji variation from discord/twitter) might use this for a logo later code cleanup and simplification remove unused variables in code query page with ssr optimizations moved /query/[query] to /query handled passing subdomain query to form body changed landing and query page to use sveltekit form actions made readme announcement fetching ssr hide subdomains when query is empty made apex listing ssr register: fixed github actions workflow labeler created issue templates for bug report, abuse report, and support questions added abuse report information and email to main readme changed query url to match website
i forgot to devlog yesterday ;-; also i was supposed to work on other important aspects like the tutorial and barely finished pages. but ngl looking at the existing pages and adding small improvements and tiny details just feels more relaxing for me. but i still need to do that tutorial because stardance said so ;-; last commit hashes: website: 2de11547f2cc7e0b8ad3c107fbee8d44e0a97682 register: 2e183b224fdce4811b05c89b9f594551c13a7dad lowk idk when but i got mystery motivation and im racking up good amount of hours/day. i do have a goal rn to try and buy an bambu lab 3d printer so thats prob a contributor to my motivation. website: code cleanup, remove unused typescript code import use tables in record forum page for consistent spacing fix hover confusion on disabled inputs by disabling hover background color change remove unnecesarry label (just please research about dns 😭 ) added more dividers to records form page add clarification that subdomain descriptions are optional make pfp previews link to github profiles bug fix to REDIRECT records on read only mode improve table of contents styling to tree like stem made toc and md parser function also generate heading numbering (e.g. 1.2.3) (unused for now) code cleanup, remove empty new lines to compact code made table of contents entry highlight depending on view (js required) close table of contents in docs by default tweaked query page styles for showing borders set disabled state as default in records form hide checkmark if input is disabled added fork warning in records page added the ability to edit registered subdomain hide table inputs if empty register: clarity to reference docs regarding CNAME and REDIRECT changed heading level in Terms of Service AI section
all my energy went into working at the weekdays 😭 now im hella tired. either that or im procrastinating more. last commit hashes: website: e4e59479ec953dcfb63e0965518d35906ab625e8 im still hopping i can at least reach 11h a week for my goal. training before i switch to another ysws when stardance ends fr website: code cleanup, add missing semicolons and remove unused imports added common issues help guides with screenshots to next steps page added back to query link for record editor page unified box styling across the site for consistent design made edit button in record editor yellow if subdomain taken grammar fix to landing page paragraph :p query page: moved announcement to the bottom of the page minor styling changes to borders, seperators, text selection, and cursors
genuinely so tired for some reason. prob from playing mc recently and dying and lossing my stuff to despawn timer. OKAY! enough trauma dumping. we got work to do last commit hashes: website: e4e59479ec953dcfb63e0965518d35906ab625e8 register: mostly a lot of janitor work: code cleanup and directory reordering. but theres also an auto formatter in the workflow now! website: fix heading centering from last devlog, found bug after testing mobile view register: move dnsconfig.js to /scripts/bin for organization installed oxfmt for formatting files added bun fmt script to package.json added oxfmt config file with exclusion rule on everything but /domains formatted every domain file using oxfmt added notes for cf tunnels in /docs/services.md (unsupported services) add prettify/formatting workflow for every push code cleanup: remove unused nodejs step in workflow file, were using bun anyways code cleanup: whitespace and newline removal add tip and caution alerts in quickstart guide regarding pr checklist and prettify formatting
this is when im starting to head bang a lot, because of an undocumented github feature ive been relying on for web ui editor. last commit hashes: website: f1e3a4387e6780d61bc55feeead37ead03ec3b0a register: 5625239d30e691ace298336953d663b6e396c0e3 so ive been using github’s REPO/new/branch/PATH?filenam=A&value=B query params for prefilling records in the web ui editor form. during testing, i noticed that for some reason JSON.stringify isnt formatting the json when i open it on github. after a bit of testing, turns out github minifies valid json input. when i tried some string concats with JSON.stringify output that produced invalid json then the indentation returns. this is rather confusing and frustrating. even tho the ci now handles formatting, its still a pain for pr reviewing to review unformatted, one-line json files. due to github not really documenting this feature well, i suppose we have to live with it. i do have plans later to possibly use octokit instead for pr generation, but thats a lot more work i dont have time for. anyways, i didnt feel like writing changelog so ill just say it in brief. i added email regex checks to the ci as well as formatting warnings. and for the web ui, i made an advanced view to show raw json and the file path in case someone is willing to do it themselves. i also fixed a lot of the unserious things i threw around the success page like the ??? step
well more time without devlogs, but i didnt work on anything massive anyways so should be fine. last commit hashes: website: 6fee809e77174f42e3ece9c71d2d8b6a95120d69 register: 4c1860c68904c5378a761a100013ce3da8836771 this is gonna be the last devlog before i ship for the last time. or not, but ill most likely work on other projects. i do still have 1 more thing to do which i might or might not do. depending on how hard it ends up being. then again i am paid by the hour sooo….. but school is starting to get busy again so ig we’ll see register: completed the draft /docs/domains101.md doc for introduction to the service website: add handler for /docs/[empty] to redirect to first in line defined doc moved loadDoc helper function to $lib added a loading bar for indicating page load in progress add previous and next buttons to the bottom of docs page added domains101 doc entry
damn, i was obsessed after loosing a streak to recover it that i forgot to devlog :p last commit hashes: website: cdc095290ad6e1cef4555ed497ab358a6fbb9608 nothing much for user side, this was mainly code cleanup and a bit of logic rewrite. this makes sure that in the future adding more record type support is as easy as adding 1 line to the SUPPORTED_RECORDS field. cleaned up duplicate Object.entries() calls moved record rules handling to separate library file(s) rewrite records page to be more modular and scalable when adding more record types in the future created regex constants in a separate library file due to sheer sizes of these regexes (copied from ajv-formats, same regexes used in ci) simplify duplicate row table creation into a svelte snippet fixed a lot of deprecated imports code cleanup, remove unused imports, exports, variables, and type declarations again, last devlog for this project. its been a good run
Ships:
VERSION 2.0 IS LIVE Registration instructions are available on the website. part-of.my.id is a free subdomain service that allows you to get a sleek lookin your-name.part-of.my.id domain instead of a the boring old one that hosting providers provide like pages.dev, github.io, etc. This rewrite brings to you: Multi apex domain support for the new domain: is-my.id A sleek redesigned main website and documentation
this should have improvements from last ship’s suggestions and feedback /record and /success page for generating json fixed broken links (no /d or /q anymore) added background elements to make website feel more alive
okay a LOT OF NEW FEATURES and improvements from last devlog feedback: subdomain service: NEW record: REDIRECT, a CloudFlare Single Redirect Rule powered robust tests using bun’s built in jest compatible testing API website & docs: NEW docs: /services, listing all known tested and working services tldr in the docs and README for quick registration support for REDIRECT records in webui editor short consice guide for registering
NOTE: (please read before reviewing) please do your research on what DNS is and how it works before ratting. the docs will explain it for you but PLEASE dont just say “idk what it does so i give low ratting”. BOOM!!! final version. 52 hours, a milestone i never thought i reached. this was truly a journey. stardance got me from burnt out back to enjoying coding again surprisingly. i deff learned a lot, especially during rewrites using a lot of language features like typescript’s non-null assertion, svelte 5’s snippet templates, and tailwind’s important css operator. anyways, here’s whats new: more docs to explain to newbies on what DNS is and introduction to the service improved doc browsing navigation with table of contents and next/prev buttons editing for existing subdomains (that you own of course) code rewrite (again), extra strict subdomain editor added contact email for support and issue reports moved a lot of pages to ssr based rendering (lightning speed performance!!!) performance and SEO enchancements ci addition for auto format and labeling ci checks for emails thats it for this project. cya in the next ysws hackclubbers ;)...
|
1793141260.2282965
|
1793227660.2282965
|
|
40621
|
ZweiCFD by @toiabzahoor | Stardance
|
toiabzahoor
|
2
|
51.0
|
883
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T09:54:49Z", "hours": 18.0, "multiplier": 15.77, "payout": 287, "blessing": "neutral", "text": "Hello Guys! I am back with An improved version of ZweiCFD. Last time, everyone recommended a few things to improve on ZweiCFD , which i have been working hard to do! I have also added Custom Models, A CLI interface, heat colormap (which shows velocity of the wind on the model) , 3d vortex cores using Q criterion, surface pressure distribution curve. I have also added a polar sweep function which lets you select from a range of AoA to see how the drag, lift varies. If anyone is new, They can take a look below this Ship to understand what ZweiCFD is. I Have Also tried to Compile binaries for different OS systems, and i’d like you guys to show me how it works on your end so that i may fix it ASAP. Thank you!", "repo": "https://github.com/toiabzahoor/ZweiCFD", "demo": "https://github.com/Toiabzahoor/ZweiCFD/releases/tag/ZweiCFD"}, {"ship_num": 2, "ts": "2026-08-09T06:47:25Z", "hours": 33.0, "multiplier": 18.19, "payout": 596, "blessing": "neutral", "text": "ZweiCFD: A Real-Time 3D Fluid Dynamics Simulator! Hey Everyone! I’m super excited to ship my first project ZweiCFD , an interactive Computational Fluid Dynamics (CFD) solver and visualization tool I built from scratch. Have you ever wanted to just make a model and see how air flows around it? This is the simulator for that! What it does: Real-Time Aerodynamics: You can adjust the Angle of Attack (AOA), speed, thickness, and camber of an airfoil on the go, and the solver recalculates the airflow instantly. Rich 3D Visuals: Generates velocity heatmaps, streamlines, and slices to visualize exactly how the fluid is behaving. How it was made Built entirely in C++ using Qt6 for the UI and VTK for the heavy-duty 3D rendering. Powered by a custom 3D Lattice Boltzmann Method (LBM) volumetric solver (using a D3Q19 discrete velocity model). Uses Signed Distance Fields (SDF) to handle the complex math of arbitrary boundaries and real-time obstacle drawing. Rest Of The Documentation Is Available On My Github Page! The journey To be completely honest, building this solo while managing my studies has been brutal. My laptop is pretty low-end, so debugging the 3D flap airfoil simulation tanked my compute resources and I had to sideline some 2D features entirely to get the 3D working because it kept interfering. Also, Sitting on the laptop with my chronic pain is very painful for me, so if there are some rough edges, please tell me as it would boost my motivation to work! If you are on Windows, you can download the .exe (with all the VTK DLLs bundled!) from my repo and tinker around with it. I would absolutely love your feedback, reviews, or even just some stars on the repo to help me push this to the next level! :3 For The People Who Need To Take A Look At How It Works: https://youtu.be/mjVsJX-nruM", "repo": "https://github.com/toiabzahoor/ZweiCFD", "demo": "https://github.com/Toiabzahoor/ZweiCFD/releases/tag/ZweiCFD"}]...
|
[{"post_id": 64114, "ts": "202 [{"post_id": 64114, "ts": "2026-09-08T09:50:03Z", "hours": 3.2444, "text": "Finally, I think I have worked enough on zweicfd, i think i will close the chapter on this project. everyone, thank you for supporting me till now! it has really helped my life alot. and i appreciate every bit of support from everyone! i have also tried my best to upload the binaries for linux and macos, and i would like your humble opinion if you face any issues. i would be sure to help you in any way i can!"}, {"post_id": 58895, "ts": "2026-08-31T13:48:56Z", "hours": 6.5239, "text": "Hello! it has been a while since i have dropped a devlog because i have been busy with my doctor visits, so i apologise for the delay! i have added many features to ZweiCFD, like the color heatmap which tells you how the pressure distribution on your model is! I have also added a polar sweep function which lets you simulate for many angles and configurations and plot how the force ,drag angle relate! I am really out of ideas on what to do next, So it would be really helpful to recieve your feedback on what to do next!"}, {"post_id": 53689, "ts": "2026-08-24T11:18:14Z", "hours": 4.2728, "text": "Hey Everyone! I am back with some new additions to ZweiCFD! First, I wanted to maximize the compute for massive simulations, so I’ve added a headless CLI mode and added a function where you can scale the grid up or down (depends on how big your model is / how accurate you want to trace the model). If you are running this on a lower-end device like my laptop, or if you just want to dedicate 100% of your CPU to the physics without running the rendering simultaneously , you can now run the solver entirely from the command line! Second, based on some great feedback, I’ve integrated .vti file exporting. now you can also export your high-resolution flow data generated by ZweiCFD directly into industry-standard tools like ParaView for deep, professional-grade analysis(if anyone is an expert at paraview, please let me know what you think. I would love to hear from a professional so i can tailor to their needs!). Let me know what you think!"}, {"post_id": 52861, "ts": "2026-08-23T07:10:04Z", "hours": 4.1683, "text": "Thank you everyone for supporting my project so much! I am really grateful for all of the support everyone has given me!. Now, I finally have more motivation to work on this project! Currently, as many people recommended, I was working on import functionality of any custom models you may have. It is currently in progress so I appreciate your patience as the latest won’t be reflected on github. Also, I plan to also make a web version of ZweiCFD which would run easily on any platform (Which would be very tough but I think i can make it). Thank you for your time!"}, {"post_id": 43767, "ts": "2026-08-09T06:01:56Z", "hours": 4.4875, "text": "Finally My Last Devlog Before I Ship! I’ve Fixed most of the issues and uploaded the build binary along with the necessary libraries to my releases in github for you guys to try, Thank you very much for your support till now!"}, {"post_id": 42780, "ts": "2026-08-07T17:38:52Z", "hours": 6.8753, "text": "it has finally been starting to look very decent. I had to do a major architectural shift to VTK and QT. and it turned out very good. I am feeling burned out these days. i dont really know if i can keep up the motivation to work on this. but ill try my best! thank you for checking out."}, {"post_id": 40901, "ts": "2026-08-04T18:38:47Z", "hours": 4.6822, "text": "i have been working to make the simulation more pleasing to look at . also, trying to model complex shapes and adding stuff like .obj support, lets see how that goes. have been working on some optimization features, so the github commit may take some more time. Thank you for checking out!"}, {"post_id": 40171, "ts": "2026-08-03T16:02:52Z", "hours": 3.0133, "text": "the 3d interface is under work, although there are major issues with making the equations work in 3d and other stuff so you wont find this version on github. your patience is appreciated!!"}, {"post_id": 39536, "ts": "2026-08-02T15:42:10Z", "hours": 3.975, "text": "i moved most of the calculations onto the gpu so having alot of particles will be easier to render. plus, now testing complex shapes and writing boundary layer equations and some approximation methods to hug around the shape. also i am planning to add 3d next, which will be tough. wish me luck!"}, {"post_id": 38960, "ts": "2026-08-01T16:07:01Z", "hours": 3.5236, "text": "have done a great session. added coloring, and added more equations like lattice-boltzmann method (recovering the navier stokes). thank you for taking a look!"}, {"post_id": 38389, "ts": "2026-07-31T18:54:12Z", "hours": 1.9697, "text": "working on it more, now modelling the equations and physics. havent commited this part to github yet due to some bugs here and there. thank you for checking out!"}, {"post_id": 37775, "ts": "2026-07-30T18:06:55Z", "hours": 1.6783, "text": "Got it fixed. also added some new stuff, and added the wind effect (the lines, yes they move). although i have to incorporate the equations next time. before that, i have to study up on it as this is a topic i havent really studied much about :)"}, {"post_id": 36261, "ts": "2026-07-28T07:51:57Z", "hours": 2.0814, "text": "still working on it. although the graphics arent looking too good yet. Have to stop here for lunch and some rest for my leg, will start work later to fix this."}, {"post_id": 35874, "ts": "2026-07-27T16:20:21Z", "hours": 0.4969, "text": "currently, as i’ve initialized this project. just working to make the files tidy and clean and adding some basic stuff."}]...
|
Title: ZweiCFD by @toiabzahoor | Stardance
Devlog Title: ZweiCFD by @toiabzahoor | Stardance
Devlogs:
currently, as i’ve initialized this project. just working to make the files tidy and clean and adding some basic stuff.
still working on it. although the graphics arent looking too good yet. Have to stop here for lunch and some rest for my leg, will start work later to fix this.
Got it fixed. also added some new stuff, and added the wind effect (the lines, yes they move). although i have to incorporate the equations next time. before that, i have to study up on it as this is a topic i havent really studied much about :)
working on it more, now modelling the equations and physics. havent commited this part to github yet due to some bugs here and there. thank you for checking out!
have done a great session. added coloring, and added more equations like lattice-boltzmann method (recovering the navier stokes). thank you for taking a look!
i moved most of the calculations onto the gpu so having alot of particles will be easier to render. plus, now testing complex shapes and writing boundary layer equations and some approximation methods to hug around the shape. also i am planning to add 3d next, which will be tough. wish me luck!
the 3d interface is under work, although there are major issues with making the equations work in 3d and other stuff so you wont find this version on github. your patience is appreciated!!
i have been working to make the simulation more pleasing to look at . also, trying to model complex shapes and adding stuff like .obj support, lets see how that goes. have been working on some optimization features, so the github commit may take some more time. Thank you for checking out!
it has finally been starting to look very decent. I had to do a major architectural shift to VTK and QT. and it turned out very good. I am feeling burned out these days. i dont really know if i can keep up the motivation to work on this. but ill try my best! thank you for checking out.
Finally My Last Devlog Before I Ship! I’ve Fixed most of the issues and uploaded the build binary along with the necessary libraries to my releases in github for you guys to try, Thank you very much for your support till now!
Thank you everyone for supporting my project so much! I am really grateful for all of the support everyone has given me!. Now, I finally have more motivation to work on this project! Currently, as many people recommended, I was working on import functionality of any custom models you may have. It is currently in progress so I appreciate your patience as the latest won’t be reflected on github. Also, I plan to also make a web version of ZweiCFD which would run easily on any platform (Which would be very tough but I think i can make it). Thank you for your time!
Hey Everyone! I am back with some new additions to ZweiCFD! First, I wanted to maximize the compute for massive simulations, so I’ve added a headless CLI mode and added a function where you can scale the grid up or down (depends on how big your model is / how accurate you want to trace the model). If you are running this on a lower-end device like my laptop, or if you just want to dedicate 100% of your CPU to the physics without running the rendering simultaneously , you can now run the solver entirely from the command line! Second, based on some great feedback, I’ve integrated .vti file exporting. now you can also export your high-resolution flow data generated by ZweiCFD directly into industry-standard tools like ParaView for deep, professional-grade analysis(if anyone is an expert at paraview, please let me know what you think. I would love to hear from a professional so i can tailor to their needs!). Let me know what you think!
Hello! it has been a while since i have dropped a devlog because i have been busy with my doctor visits, so i apologise for the delay! i have added many features to ZweiCFD, like the color heatmap which tells you how the pressure distribution on your model is! I have also added a polar sweep function which lets you simulate for many angles and configurations and plot how the force ,drag angle relate! I am really out of ideas on what to do next, So it would be really helpful to recieve your feedback on what to do next!
Finally, I think I have worked enough on zweicfd, i think i will close the chapter on this project. everyone, thank you for supporting me till now! it has really helped my life alot. and i appreciate every bit of support from everyone! i have also tried my best to upload the binaries for linux and macos, and i would like your humble opinion if you face any issues. i would be sure to help you in any way i can!
Ships:
ZweiCFD: A Real-Time 3D Fluid Dynamics Simulator! Hey Everyone! I’m super excited to ship my first project ZweiCFD , an interactive Computational Fluid Dynamics (CFD) solver and visualization tool I built from scratch. Have you ever wanted to just make a model and see how air flows around it? This is the simulator for that! What it does: Real-Time Aerodynamics: You can adjust the Angle of Attack (AOA), speed, thickness, and camber of an airfoil on the go, and the solver recalculates the airflow instantly. Rich 3D Visuals: Generates velocity heatmaps, streamlines, and slices to visualize exactly how the fluid is behaving. How it was made Built entirely in C++ using Qt6 for the UI and VTK for the heavy-duty 3D rendering. Powered by a custom 3D Lattice Boltzmann Method (LBM) volumetric solver (using a D3Q19 discrete velocity model). Uses Signed Distance Fields (SDF) to handle the complex math of arbitrary boundaries and real-time obstacle drawing. Rest Of The Documentation Is Available On My Github Page! The journey To be completely honest, building this solo while managing my studies has been brutal. My laptop is pretty low-end, so debugging the 3D flap airfoil simulation tanked my compute resources and I had to sideline some 2D features entirely to get the 3D working because it kept interfering. Also, Sitting on the laptop with my chronic pain is very painful for me, so if there are some rough edges, please tell me as it would boost my motivation to work! If you are on Windows, you can download the .exe (with all the VTK DLLs bundled!) from my repo and tinker around with it. I would absolutely love your feedback, reviews, or even just some stars on the repo to help me push this to the next level! :3 For The People Who Need To Take A Look At How It Works: https://youtu.be/mjVsJX-nruM
Hello Guys! I am back with An improved version of ZweiCFD. Last time, everyone recommended a few things to improve on ZweiCFD , which i have been working hard to do! I have also added Custom Models, A CLI interface, heat colormap (which shows velocity of the wind on the model) , 3d vortex cores using Q criterion, surface pressure distribution curve. I have also added a polar sweep function which lets you select from a range of AoA to see how the drag, lift varies. If anyone is new, They can take a look below this Ship to understand what ZweiCFD is. I Have Also tried to Compile binaries for different OS systems, and i’d like you guys to show me how it works on your end so that i may fix it ASAP. Thank you!...
|
1793084256.694402
|
1793170656.694402
|
|
54989
|
custom-tab by @Tallurisaikumar | Stardance
|
Tallurisaikumar
|
1
|
51.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T13:58:53Z", "hours": 51.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What I made I created a custom new tab page called Space Pulse . It’s a compact personal dashboard featuring a NASA APOD image slider, search bar, shortcuts, sticky notes, and an emoji-based profile section. What was challenging The biggest challenge was fitting all the features together without making the interface feel cluttered. I also had to make sure notes, shortcuts, and profile data were saved correctly using local storage while keeping the page feeling personal rather than like a generic dashboard. What I’m proud of I’m most proud that Space Pulse is a functional project that I could actually use every day. The personalized shortcuts, notes, and emoji profile give it its own character, while the NASA imagery adds a nice visual touch without taking away from the overall design. What people should know before trying it out Space Pulse requires JavaScript to be enabled in the browser. Notes, shortcuts, and profile settings are stored locally, so they will be lost if the browser’s local storage is cleared. The NASA APOD image updates daily, and when an image is unavailable or the APOD is a video, a fallback background is displayed instead.", "repo": "https://github.com/tallurisai9346-beep/MY-TAB", "demo": "https://my-tab-six.vercel.app/"}]...
|
[{"post_id": 58611, "ts": "202 [{"post_id": 58611, "ts": "2026-08-31T02:50:50Z", "hours": 7.28, "text": "Failure teaches more than success. Actually i am bad at write the notes so i used ai to wrote my readme.md file but due to the ai usage my project got rejected 3 times i am completely frutrated and i deleted all my readme.md file and created a new start writing the whole by analysing others reame.md file noting all the required headings everything now i learned how to write the readme.md file and i feel more confident than before that i can able write by my own . I am thanking stardance to reject my project multiple times so that i learned from it .Finally my readme.md file is complete cleared all my project is cool"}, {"post_id": 58144, "ts": "2026-08-30T14:31:03Z", "hours": 8.9236, "text": "Devlog – Review & RecoveryThe Stardance review highlighted two issues: my demo was behind Vercel’s login protection, and my README needed an AI usage note. 🔒I disabled Deployment Protection, redeployed the site, and added a clear AI Usage section explaining how ChatGPT assisted while I reviewed and refined everything myself. ✍️After resolving a Git merge conflict and pushing the latest changes, the demo became publicly accessible again. 🌐One small fix unlocked the project for everyone. 🚀"}, {"post_id": 57837, "ts": "2026-08-30T04:22:43Z", "hours": 10.5608, "text": "this one of the day image"}, {"post_id": 57357, "ts": "2026-08-29T14:07:07Z", "hours": 5.1358, "text": "Today I worked on my space-themed dashboard and added a few features to make it feel more useful and interactive. 🚀 The dashboard now has a web search option, quick-access links, sticky notes, and a NASA Astronomy Picture of the Day section that updates with space-related content. 🌌 I also focused on keeping the design simple and clean while giving it a futuristic space look. It’s starting to feel less like a basic homepage and more like my own personal space hub. ✨ Next, I want to improve the responsiveness, smooth out the interactions, and add a few more useful features. 🌠"}, {"post_id": 57172, "ts": "2026-08-29T08:41:13Z", "hours": 3.8408, "text": "🔭 Devlog #4 – Exploring the Universe, One Date at a TimeToday my space dashboard became even more interactive. 🚀 I added a Search APOD button alongside a 📅 date picker, allowing users to travel through NASA’s archive and discover Astronomy Pictures of the Day from any past date. 🌌 With just one click, the website fetches and displays a new image or video along with its title, date, and explanation, making every search feel like uncovering a hidden story from the universe. ✨ This small feature transformed the site from a static viewer into an explorer’s portal, giving users the freedom to revisit unforgettable moments in space history. 🌠 Next, I’ll polish the experience with smoother loading, better error handling, and deploy the project to GitHub Pages. 🌍"}, {"post_id": 57038, "ts": "2026-08-29T03:31:46Z", "hours": 8.5431, "text": "Bringing My Space Dashboard to LifeToday I transformed my APOD website from a simple demo into a polished space experience. 🚀 I designed a two-column layout with the NASA image/video on the left and the title, date, and explanation on the right for a clean, readable interface. ✨ To create a futuristic feel, I added a dark blue-purple space gradient and a glowing glassmorphism card that makes the APOD appear to float in space. 🌌 I also made the explanation panel scrollable so long NASA descriptions stay easy to read. 📖 To match the “Give Your Website a Pulse” theme, I built an animated CSS pulse bar with a glowing green ECG effect that adds subtle life to the page. 💚 Next, I’ll improve the user experience with better loading and error states before deploying the project on GitHub Pages. 🌍"}, {"post_id": 56803, "ts": "2026-08-28T18:34:09Z", "hours": 2.4581, "text": "Turning the Dashboard into a Real Traveler Hub 🌍✨ Today I moved beyond the NASA section and started building the personal dashboard experience. 🧭 I added a Quick Access area for saving useful links, a Sticky Notes section for keeping small reminders, and an emoji picker to give the dashboard a little personality. 📝🔗😊 I also connected these features to localStorage, so my notes and links stay saved even after refreshing the page. 🔒💾 The goal now is to make everything feel less like a collection of features and more like one smooth, futuristic traveler workspace. 🚀🌌 Next up: polishing the UI, animations, and responsive mobile experience. 📱✨"}, {"post_id": 56445, "ts": "2026-08-28T06:38:26Z", "hours": 3.8667, "text": "H1 – Giving My Website a Pulse Today I started building my My Tab project with Vite. I got the local server running and connected the NASA APOD API. 🌌 I also added my API key to .env and made sure .env is in .gitignore so the key isn’t pushed to GitHub. 🔒 Next, I’m working on the UI and getting the daily NASA image, title, date, and explanation onto the page. 🚀 Your project is using Vite and already has the NASA APOD section, search, quick links, and sticky notes in the UI."}]...
|
Title: custom-tab by @Tallurisaikumar | Stardance
Title: custom-tab by @Tallurisaikumar | Stardance
Devlogs:
H1 – Giving My Website a Pulse Today I started building my My Tab project with Vite. I got the local server running and connected the NASA APOD API. 🌌 I also added my API key to .env and made sure .env is in .gitignore so the key isn’t pushed to GitHub. 🔒 Next, I’m working on the UI and getting the daily NASA image, title, date, and explanation onto the page. 🚀 Your project is using Vite and already has the NASA APOD section, search, quick links, and sticky notes in the UI.
Turning the Dashboard into a Real Traveler Hub 🌍✨ Today I moved beyond the NASA section and started building the personal dashboard experience. 🧭 I added a Quick Access area for saving useful links, a Sticky Notes section for keeping small reminders, and an emoji picker to give the dashboard a little personality. 📝🔗😊 I also connected these features to localStorage, so my notes and links stay saved even after refreshing the page. 🔒💾 The goal now is to make everything feel less like a collection of features and more like one smooth, futuristic traveler workspace. 🚀🌌 Next up: polishing the UI, animations, and responsive mobile experience. 📱✨
Bringing My Space Dashboard to LifeToday I transformed my APOD website from a simple demo into a polished space experience. 🚀 I designed a two-column layout with the NASA image/video on the left and the title, date, and explanation on the right for a clean, readable interface. ✨ To create a futuristic feel, I added a dark blue-purple space gradient and a glowing glassmorphism card that makes the APOD appear to float in space. 🌌 I also made the explanation panel scrollable so long NASA descriptions stay easy to read. 📖 To match the “Give Your Website a Pulse” theme, I built an animated CSS pulse bar with a glowing green ECG effect that adds subtle life to the page. 💚 Next, I’ll improve the user experience with better loading and error states before deploying the project on GitHub Pages. 🌍
🔭 Devlog #4 – Exploring the Universe, One Date at a TimeToday my space dashboard became even more interactive. 🚀 I added a Search APOD button alongside a 📅 date picker, allowing users to travel through NASA’s archive and discover Astronomy Pictures of the Day from any past date. 🌌 With just one click, the website fetches and displays a new image or video along with its title, date, and explanation, making every search feel like uncovering a hidden story from the universe. ✨ This small feature transformed the site from a static viewer into an explorer’s portal, giving users the freedom to revisit unforgettable moments in space history. 🌠 Next, I’ll polish the experience with smoother loading, better error handling, and deploy the project to GitHub Pages. 🌍
Today I worked on my space-themed dashboard and added a few features to make it feel more useful and interactive. 🚀 The dashboard now has a web search option, quick-access links, sticky notes, and a NASA Astronomy Picture of the Day section that updates with space-related content. 🌌 I also focused on keeping the design simple and clean while giving it a futuristic space look. It’s starting to feel less like a basic homepage and more like my own personal space hub. ✨ Next, I want to improve the responsiveness, smooth out the interactions, and add a few more useful features. 🌠
this one of the day image
Devlog – Review & RecoveryThe Stardance review highlighted two issues: my demo was behind Vercel’s login protection, and my README needed an AI usage note. 🔒I disabled Deployment Protection, redeployed the site, and added a clear AI Usage section explaining how ChatGPT assisted while I reviewed and refined everything myself. ✍️After resolving a Git merge conflict and pushing the latest changes, the demo became publicly accessible again. 🌐One small fix unlocked the project for everyone. 🚀
Failure teaches more than success. Actually i am bad at write the notes so i used ai to wrote my readme.md file but due to the ai usage my project got rejected 3 times i am completely frutrated and i deleted all my readme.md file and created a new start writing the whole by analysing others reame.md file noting all the required headings everything now i learned how to write the readme.md file and i feel more confident than before that i can able write by my own . I am thanking stardance to reject my project multiple times so that i learned from it .Finally my readme.md file is complete cleared all my project is cool
Ships:
What I made I created a custom new tab page called Space Pulse . It’s a compact personal dashboard featuring a NASA APOD image slider, search bar, shortcuts, sticky notes, and an emoji-based profile section. What was challenging The biggest challenge was fitting all the features together without making the interface feel cluttered. I also had to make sure notes, shortcuts, and profile data were saved correctly using local storage while keeping the page feeling personal rather than like a generic dashboard. What I’m proud of I’m most proud that Space Pulse is a functional project that I could actually use every day. The personalized shortcuts, notes, and emoji profile give it its own character, while the NASA imagery adds a nice visual touch without taking away from the overall design. What people should know before trying it out Space Pulse requires JavaScript to be enabled in the browser. Notes, shortcuts, and profile settings are stored locally, so they will be lost if the browser’s local storage is cleared. The NASA APOD image updates daily, and when an image is unavailable or the APOD is a video, a fallback background is displayed instead....
|
1792878506.3492012
|
1793742506.3492012
|
|
57952
|
CodeWare by @tyleruploads | Stardance
|
tyleruploads
|
1
|
51.0
|
1013
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T21:03:58Z", "hours": 51.0, "multiplier": 16.45, "payout": 1013, "blessing": "neutral", "text": "I created CodeWare, a WarioWare-style video game where you have to complete various minigames, written in Godot. I originally had it under the WarioWare game mission, but I eventually decided I should detach it from it due to the sheer complexity of this game, which is way above the beginner mission. In the game, players are put through what is currently 12 minigames. Each minigame has a strict timer limit, whether it be losing a life or progressing to the next minigame once it strikes 0. In case you are confused, the way they win a life at the end is if the purpose of the minigame is to survive a certain amount of time against computer-generated obstacles, like arrows or orbs (essentially meteors). The very interesting thing about this game is the two endings: the ending you get when you complete all the minigames with lives to spare, and the one when you lose all of your five lives. These endings, which I will not explain in detail (so it is not spoiled for you!), highlight the eternity of automatically generated code files. The opening scene of the game is the Tyleruploads Mountain Range, which shows many mountains connected via bridges. The suspension for those bridges is the game’s logo turned into a bunch of small links. Metaphysically, the game’s goal is to cross these bridges. Many parts of this project were extremely challenging for me. For one, I had never set foot in Godot at all before embarking on this project. I was also a complete newcomer to any sort of game development. I encountered many errors caused by my being just introduced to GDScript and game development, such as not knowing that scripts continue after changing the scene, the absence of a deferred call causing the game to go completely grey, losing a lot of work in video editing software while making the gameplay trailer video, and many more small and large things. In every ship message for prior Stardance projects, I have said something like “Wow! Before I started, I really didn’t think I could do something this complex. I really just transformed my coding abilities.” But this time, I am not going to repeat that basic fib without any supporting arguments. My previous Stardance projects were nowhere near this length. So, I would like to make a new claim now. That claim is that while I have not become a completely new developer or graphic designer or anything, I have dipped into a new path of development that I will have the choice to either continue to pursue or to reap the benefits of the mindset associated with it as I enter high school. For these reasons, along with the fact that I was able to sit down and write quality code for one project for 51 hours, I am very proud of myself. My viewpoint of “sit down and make a decent project and leave it” has been greatly diminished outside of specific contexts.", "repo": "https://github.com/tyleruploads/code-ware", "demo": "https://tyleruploads.itch.io/codeware"}]...
|
[{"post_id": 77174, "ts": "202 [{"post_id": 77174, "ts": "2026-10-05T22:22:21Z", "hours": 1.2811, "text": "This marks v1.0.0! This is my FINAL devlog for CodeWare (at least the first ship)! It has really been a great project that has significantly pushed what I think about my development capabilities. But I will explain that more in the ship message! The main change made over the time of this devlog was a complete revamp of the README! Here is a summary of the changes made to it: The following shields have been added: Play on GitHub Pages, Made with Godot, GitHub Release (version number), and GitHub Commit Activity The hero image near the top of the README, depicting the title screen, has been replaced with a gameplay video for the game, with a hero of minigame 6 (Unintelligent Arrows) The minigames section has been moved to near the bottom of the README to make the start of the README a better hook. And the minigame descriptions and hero images inside the section have been put inside a spoiler notice, so the game can not be easily spoiled for players. And the hero images in the minigame section have been converted from Markdown tags to HTML tags in order to enforce a specific width."}, {"post_id": 76860, "ts": "2026-10-04T21:10:06Z", "hours": 2.3425, "text": "This will be one of my very last devlogs before I ship CodeWare! I just created the gameplay trailer, which is a huge accomplishment! This is my first time making any sort of video for anything I make in the computer world, and I think it actually turned out very well! The video shows potential players what the game will look like and gives a glimpse of its unexpected win-and-lose endings. I also put the video on the game’s Itch.io page, which will be made public very soon. You can view the video on YouTube here: CodeWare - Official Gameplay Video"}, {"post_id": 75987, "ts": "2026-10-01T21:19:32Z", "hours": 0.7008, "text": "I just created the twelfth mingame of CodeWare, “Catch the Falling Orbs!” In it, you have 45 seconds to catch 35 falling orbs by moving left and right with your keyboard."}, {"post_id": 75387, "ts": "2026-09-29T22:05:18Z", "hours": 1.7511, "text": "In the Newspaper department at my summer sleepaway camp this year, they always said, “If the number is less than 11, spell it out.” CodeWare has officially surpassed this guideline in the number of its minigames. Minigame 11 of CodeWare is titled “Type the Strings,” and players must type 15 five-character strings provided to them in less than one minute. The string is generated from a pool of characters with lookalikes (i.e., Z and 2, S and 5, O and 0, I and l, etc.) removed to ensure it is completely fair for the user. This was definitely one of the easier minigames to code, but it wasn’t the easiest thing ever. I still ran into some issues, like the vertical alignment of a RichTextLabel being a bit too low when dynamically updating its content in GDScript to show a custom notice to the user (I fixed it by changing it to a normal Label, after troubleshooting for way too long)."}, {"post_id": 74691, "ts": "2026-09-28T00:28:50Z", "hours": 3.545, "text": "I just did a lot of asset updating and linting! The part I think would be most interesting to you is obviously the asset updates. I changed the assets in Minigame 1, 3, 4, and 9! I also updated the gallery, accessible in the extras menu, to include new assets I’ve forgotten to put in there for a while now. I’ll just show you how minigame one looks now; no need for a detailed explanation of everything. Now, I have to address the boring part, which took most of the three and a half hours. That would be linting! It’s pretty self-explanatory: I went through and made the scenes and scripts adhere to style guidelines."}, {"post_id": 74561, "ts": "2026-09-27T17:10:27Z", "hours": 2.3617, "text": "I just made the tenth minigame for CodeWare! It is named “RGB Skills.” In the minigame, there are two colors: one generated automatically by the code, and one controlled by manual RGB Sliders. It validates the user’s guess using the GDScript method Vector3.distance_to() . The method uses the 3D Pythagorean theorem to calculate the Euclidean Distance between the RGB values, as if they were plotted in a 3D space. This works because the red value represents the x-axis, the green value represents the y-axis, and the blue value represents the z-axis on a 3D graph. This was very interesting for me to discover, since I only learned the 2D Pythagorean theorem last year (in seventh grade). The game also starts the sliders at the furthest possible points from the target color, which makes the minigame harder. If the player clicks the submit button without making any changes, they will not pass. And yes, I know they could easily invert the colors to find the right one. The only thing is, they probably didn’t read this devlog. So, they’ll have no clue of the fact the sliders were placed at the inversion of the target color."}, {"post_id": 74200, "ts": "2026-09-26T22:13:25Z", "hours": 2.3222, "text": "I just made the ninth minigame for CodeWare, “The Maze!” In the minigame, the user needs to get to the center of the maze in less than 18 seconds! They move a mini tyleruploads texture with arrow keys and WASD to eventually get to the bigger one in the middle! I had a lot of trouble with physics here, hence the 2 hours! And, I’ve never made any sort of maze before, so this is a first!"}, {"post_id": 74111, "ts": "2026-09-26T18:21:01Z", "hours": 1.9775, "text": "I just made version v0.14.0 of CodeWare! In this version, I added the eighth minigame, “Choose the Boxes!” The user has 30 seconds to choose 20 boxes by clicking on the one matching the color of the center box. I also went through and removed unnecessary log statements and unused variables."}, {"post_id": 72912, "ts": "2026-09-24T00:48:33Z", "hours": 2.9286, "text": "I just released version v0.13.0 of CodeWare! In this version, I have completely changed the sound environment of the game! I will explain it with two basic pseudocode (or Python) logic statements! prev_sound = sound in v0.12.0 curr_sound = sound in v0.13.0 print(prev_sound, curr_sound) # False, True What I’m trying to illustrate here is that there was absolutely no sound before, and now there is! There is a background ticking noise playing (forever) through an autoload and sound effects corresponding to in-minigame events. Feel free to test it at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg ! Send any feedback in the comments!"}, {"post_id": 71345, "ts": "2026-09-20T17:48:01Z", "hours": 0.7083, "text": "I just made two new assets for CodeWare! They are the players in minigames 4 and 6. Here is a photo of one of them."}, {"post_id": 70807, "ts": "2026-09-19T19:51:11Z", "hours": 0.8956, "text": "After receiving feedback from the Hack Club community, I have made these changes to CodeWare. The icon has been updated to increase contrast and to look better at small resolutions Minigame 6, “Unintelligent Arrows,” has been balanced to be easier for users to complete WASD Movement has been added to all games Support for held jumps has been added to the first minigame, “Orb Collection Platformer” An ambiguity in the README about the objective has been corrected"}, {"post_id": 70237, "ts": "2026-09-18T19:29:20Z", "hours": 0.94, "text": "I just balanced minigame 6, “Unintelligent Arrows,” after feedback from Hack Club members. I made users have more time to react before getting hit by the arrows. I have not released this update yet; once I apply some other suggestions from the community, I will release it as v0.11.0."}, {"post_id": 69877, "ts": "2026-09-17T23:54:31Z", "hours": 2.5408, "text": "I just created the sixth minigame, “Unintelligent Arrows,” in CodeWare! In the minigame, users have to dodge countless arrows that are described as unintelligent purely based on their inability to change paths once shot. If you weren’t already guessing, I am planning on making an intelligent-arrow-themed minigame in the future, possibly inspired by 1948 in some ways. This game is actually getting nice and long, way longer than I thought it would be at the start. When I shared it with people a while ago, it was very short. Now, it’s decently long! Once I add a lot more minigames, I will consider making them go in random order and giving them difficulty tags to determine when they should be shown."}, {"post_id": 69387, "ts": "2026-09-16T23:12:21Z", "hours": 1.0319, "text": "I just completely refactored, everything! I made many new directories in order to organize the entire repository much better! This took an hour because of the debugging and other related changes to the code associated with a complete structural refactor. It definitely was not a calm, easy hour."}, {"post_id": 69337, "ts": "2026-09-16T20:42:37Z", "hours": 2.45, "text": "I just added two minigames to CodeWare! The first minigame I just added, minigame 4, titled “Dodge the Flying Balls,” has users dodge flying balls (referred to as meteors in the code) for 45 seconds. Each hit takes away 10% of the user’s health. It can actually be pretty hard. A good strategy to stay alive is moving from side to side and never stopping, because there are really fast ones that come before you can even react. The second minigame I just added, minigame 5, titled “Click Very Fast,” has the user click on a big circular button in the middle 100 times in less than 20 seconds. I have tested it many times, and it is just the right time (at least for now). You can play the game at https://tyleruploads.github.io/code-ware/"}, {"post_id": 68302, "ts": "2026-09-14T21:48:29Z", "hours": 0.3142, "text": "This is a short one! I just integrated it with the Itch.io Butler API, so it will automatically update its Itch.io game whenever I make a new release! Currently, it is a draft on Itch.io. You can view the draft at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg . Sometime before I ship, I will make the Itch.io page public, which may bring in some players."}, {"post_id": 67752, "ts": "2026-09-14T00:02:19Z", "hours": 0.4536, "text": "I just put CodeWare on GitHub pages! You can view it at https://tyleruploads.github.io/code-ware/ ! I also upped the time for a minigame after a web playtest determined the amount of time given was not enough to complete the task at hand."}, {"post_id": 66971, "ts": "2026-09-12T23:32:31Z", "hours": 1.4353, "text": "I just added the third minigame to CodeWare! It is titled “Hit the Circles.” In the minigame, you start with a balance of -15, and each circle you hit, you get +1 balance! It is kindove like Whack-a-Mole (don’t sue me Mattel.) This marks version 0.6.0 of the game!"}, {"post_id": 66187, "ts": "2026-09-11T21:03:31Z", "hours": 1.0183, "text": "I just made some nice changes to CodeWare! I added pause, unpause, and reset functionality. This was in the README as coming soon for a while. I relocated script locations and removed ambiguity from a script named ‘self_timer.gd’ by renaming it ‘minigame_1_timer.gd,’ which makes it not look wrong when next to ‘minigame_2_timer.gd.’ And, I added the version number to the title menu!"}, {"post_id": 65647, "ts": "2026-09-10T22:37:05Z", "hours": 8.2886, "text": "Wow! 8 hours is a lot of time! Here’s what I did! Create all new assets. I made a new icon and background for the title screen and both minigames. The icon features an infinity symbol cut in half but connected with the parts in between them in a bit of a 3D-like arrangement, symbolizing two sides of eternity connected by small paths. The first minigame background and the title scene background contain a mountain range, a sunset, and one or multiple bridges. The second minigame background is two eyes in many perfectly aligned rectangles. Make death scene. Previously, I only had a win screen in the game (a very anticlimactic one at best, in a purposeful way). Now, I added a death scene too! The death scene links with the idea of the two sides of eternity (or infinity) connected by a small path because the user is showed specific text by automatic vertical scrolling, then they click a button to get thrown right back to the first minigame, as if nothing happened. They can do this as many times as they want; the bridges between the two halves of eternity represented by infinity are very strong, the same bridges connecting the mountains. Replace unused settings button with extras. The main menu used to contain a button labeled “Settings,” which would take the user to a blank scene with no way to get back. It has now been replaced with an “Extras” button, which contains an Asset Gallery that allows users to look at the beautiful game assets and obviously, a credits section. Universal back buttons. Now, users can always get back to some point in the game (including the title screen), even if they are in the infinite end scene."}, {"post_id": 63976, "ts": "2026-09-08T02:12:04Z", "hours": 2.1261, "text": "I JUST MADE THE END SCENE! It is very complex. But, I can’t spoil it! Here’s the code. It’s your choice to go line by line and spoil it for yourself."}, {"post_id": 63904, "ts": "2026-09-07T22:50:03Z", "hours": 0.75, "text": "Well, that was very silly. I spent 45 minutes adding automatic cross-compilation via GitHub actions! The main issue was: macOS! I now officially hate macOS. I essentially spent 12 commits trying to fix macOS, and 1 commit removing macOS. The commits mentioning Windows or Linux? They were never the issue. It was only macOS. Heres my commit history for this devlog: Add basic src/export_presets.cfg 1 file changed, 431 insertions(+) Make publishing workflow to compile 1 file changed, 66 insertions(+) Fix Linux export in export_presets.cfg to work with workflow 1 file changed, 2 insertions(+), 2 deletions(-) Set project directory in workflow 1 file changed, 4 insertions(+), 4 deletions(-) Remove export_path for windows in export_presents.cfg to fix CI/CD 1 file changed, 1 insertion(+), 1 deletion(-) Hopefully fixes CI/CD 1 file changed, 6 insertions(+), 9 deletions(-) Make macOS only support x86_64 to fix CI/CD issue 1 file changed, 2 insertions(+), 2 deletions(-) Add bundle identifier for macOS (why does it have to be such a pain?) 1 file changed, 2 insertions(+), 2 deletions(-) The mac strikes back: import ETC2 ASTC compession for macOS 1 file changed, 1 insertion(+) Add initial project import step to CI/CD 1 file changed, 4 insertions(+) Cd into src before initializing godot 2 files changed, 2 insertions(+), 1 deletion(-) Remove cding into src and add export_templates_path 1 file changed, 5 insertions(+), 1 deletion(-) The mac struck back yet again: emancipated 1 file changed, 1 insertion(+), 4 deletions(-) I rebased it to “Add support for every OS; remove support for macOS (it struck back, like starwars)”"}, {"post_id": 63853, "ts": "2026-09-07T20:42:56Z", "hours": 2.5025, "text": "This is going to be my second to last devlog before I ship, assuming everything goes well! In these two and a half hours, I did SO MANY THINGS! The most obvious change has to be how I added the second minigame, the clicker! In the minigame, you have 12 seconds to collect 18 tyleruploads circles! Each circle is randomly placed on the screen, which makes it so you can’t just memorize it! I also added a license to the project. It contains five sections for different types of content. And, I updated the SECURITY.md so it is completed. Another nice thing I added is action and description messages before each minigame. It tells the player what to do, so they aren’t losing any time when it starts! I also fixed the text it shows you when you win, before it takes you to the win screen I am going to make soon. I also revamped the README! It is way better now! Check out the README on GitHub if you want! I also set up and configured GitHub Discussions!"}, {"post_id": 62147, "ts": "2026-09-05T12:25:32Z", "hours": 0.2619, "text": "I just did some play testing, added some comments, and made a basic README! Nothing much!"}, {"post_id": 61866, "ts": "2026-09-05T00:12:04Z", "hours": 6.3597, "text": "I just created the basic blueprint for my very own WarioWare style video game, CodeWare! In CodeWare, you are playing as GitHub, and for the first minigame, you are trying to capture 7 of me (that’s just a nice image I had available—I might consider changing it later). The time constraints are actually pretty balanced, you’ll generally finish right in the nick of time. There is still a lot more remaining. The reason there was so much time in this devlog is because of error correction. This is my first time using Godot—everything’s not meant to be correct the first time around. A lot of the error correction was silly stuff like scaling, timer pixelation, text getting cropped off (without me knowing), and etc. You jump on those little box thingeys to get to the mini-mes in order to collect. In order to get to the one near the big wall barrier, you need to make a big jump from one near it (NOT TO THE RIGHT!!). And, once you go to get the last ones on the very right, there’s no coming out! Hopefully, you got the other ones first!"}]...
|
Title: CodeWare by @tyleruploads | Stardance
Devl Title: CodeWare by @tyleruploads | Stardance
Devlogs:
I just created the basic blueprint for my very own WarioWare style video game, CodeWare! In CodeWare, you are playing as GitHub, and for the first minigame, you are trying to capture 7 of me (that’s just a nice image I had available—I might consider changing it later). The time constraints are actually pretty balanced, you’ll generally finish right in the nick of time. There is still a lot more remaining. The reason there was so much time in this devlog is because of error correction. This is my first time using Godot—everything’s not meant to be correct the first time around. A lot of the error correction was silly stuff like scaling, timer pixelation, text getting cropped off (without me knowing), and etc. You jump on those little box thingeys to get to the mini-mes in order to collect. In order to get to the one near the big wall barrier, you need to make a big jump from one near it (NOT TO THE RIGHT!!). And, once you go to get the last ones on the very right, there’s no coming out! Hopefully, you got the other ones first!
I just did some play testing, added some comments, and made a basic README! Nothing much!
This is going to be my second to last devlog before I ship, assuming everything goes well! In these two and a half hours, I did SO MANY THINGS! The most obvious change has to be how I added the second minigame, the clicker! In the minigame, you have 12 seconds to collect 18 tyleruploads circles! Each circle is randomly placed on the screen, which makes it so you can’t just memorize it! I also added a license to the project. It contains five sections for different types of content. And, I updated the SECURITY.md so it is completed. Another nice thing I added is action and description messages before each minigame. It tells the player what to do, so they aren’t losing any time when it starts! I also fixed the text it shows you when you win, before it takes you to the win screen I am going to make soon. I also revamped the README! It is way better now! Check out the README on GitHub if you want! I also set up and configured GitHub Discussions!
Well, that was very silly. I spent 45 minutes adding automatic cross-compilation via GitHub actions! The main issue was: macOS! I now officially hate macOS. I essentially spent 12 commits trying to fix macOS, and 1 commit removing macOS. The commits mentioning Windows or Linux? They were never the issue. It was only macOS. Heres my commit history for this devlog: Add basic src/export_presets.cfg 1 file changed, 431 insertions(+) Make publishing workflow to compile 1 file changed, 66 insertions(+) Fix Linux export in export_presets.cfg to work with workflow 1 file changed, 2 insertions(+), 2 deletions(-) Set project directory in workflow 1 file changed, 4 insertions(+), 4 deletions(-) Remove export_path for windows in export_presents.cfg to fix CI/CD 1 file changed, 1 insertion(+), 1 deletion(-) Hopefully fixes CI/CD 1 file changed, 6 insertions(+), 9 deletions(-) Make macOS only support x86_64 to fix CI/CD issue 1 file changed, 2 insertions(+), 2 deletions(-) Add bundle identifier for macOS (why does it have to be such a pain?) 1 file changed, 2 insertions(+), 2 deletions(-) The mac strikes back: import ETC2 ASTC compession for macOS 1 file changed, 1 insertion(+) Add initial project import step to CI/CD 1 file changed, 4 insertions(+) Cd into src before initializing godot 2 files changed, 2 insertions(+), 1 deletion(-) Remove cding into src and add export_templates_path 1 file changed, 5 insertions(+), 1 deletion(-) The mac struck back yet again: emancipated 1 file changed, 1 insertion(+), 4 deletions(-) I rebased it to “Add support for every OS; remove support for macOS (it struck back, like starwars)”
I JUST MADE THE END SCENE! It is very complex. But, I can’t spoil it! Here’s the code. It’s your choice to go line by line and spoil it for yourself.
Wow! 8 hours is a lot of time! Here’s what I did! Create all new assets. I made a new icon and background for the title screen and both minigames. The icon features an infinity symbol cut in half but connected with the parts in between them in a bit of a 3D-like arrangement, symbolizing two sides of eternity connected by small paths. The first minigame background and the title scene background contain a mountain range, a sunset, and one or multiple bridges. The second minigame background is two eyes in many perfectly aligned rectangles. Make death scene. Previously, I only had a win screen in the game (a very anticlimactic one at best, in a purposeful way). Now, I added a death scene too! The death scene links with the idea of the two sides of eternity (or infinity) connected by a small path because the user is showed specific text by automatic vertical scrolling, then they click a button to get thrown right back to the first minigame, as if nothing happened. They can do this as many times as they want; the bridges between the two halves of eternity represented by infinity are very strong, the same bridges connecting the mountains. Replace unused settings button with extras. The main menu used to contain a button labeled “Settings,” which would take the user to a blank scene with no way to get back. It has now been replaced with an “Extras” button, which contains an Asset Gallery that allows users to look at the beautiful game assets and obviously, a credits section. Universal back buttons. Now, users can always get back to some point in the game (including the title screen), even if they are in the infinite end scene.
I just made some nice changes to CodeWare! I added pause, unpause, and reset functionality. This was in the README as coming soon for a while. I relocated script locations and removed ambiguity from a script named ‘self_timer.gd’ by renaming it ‘minigame_1_timer.gd,’ which makes it not look wrong when next to ‘minigame_2_timer.gd.’ And, I added the version number to the title menu!
I just added the third minigame to CodeWare! It is titled “Hit the Circles.” In the minigame, you start with a balance of -15, and each circle you hit, you get +1 balance! It is kindove like Whack-a-Mole (don’t sue me Mattel.) This marks version 0.6.0 of the game!
I just put CodeWare on GitHub pages! You can view it at https://tyleruploads.github.io/code-ware/ ! I also upped the time for a minigame after a web playtest determined the amount of time given was not enough to complete the task at hand.
This is a short one! I just integrated it with the Itch.io Butler API, so it will automatically update its Itch.io game whenever I make a new release! Currently, it is a draft on Itch.io. You can view the draft at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg . Sometime before I ship, I will make the Itch.io page public, which may bring in some players.
I just added two minigames to CodeWare! The first minigame I just added, minigame 4, titled “Dodge the Flying Balls,” has users dodge flying balls (referred to as meteors in the code) for 45 seconds. Each hit takes away 10% of the user’s health. It can actually be pretty hard. A good strategy to stay alive is moving from side to side and never stopping, because there are really fast ones that come before you can even react. The second minigame I just added, minigame 5, titled “Click Very Fast,” has the user click on a big circular button in the middle 100 times in less than 20 seconds. I have tested it many times, and it is just the right time (at least for now). You can play the game at https://tyleruploads.github.io/code-ware/
I just completely refactored, everything! I made many new directories in order to organize the entire repository much better! This took an hour because of the debugging and other related changes to the code associated with a complete structural refactor. It definitely was not a calm, easy hour.
I just created the sixth minigame, “Unintelligent Arrows,” in CodeWare! In the minigame, users have to dodge countless arrows that are described as unintelligent purely based on their inability to change paths once shot. If you weren’t already guessing, I am planning on making an intelligent-arrow-themed minigame in the future, possibly inspired by 1948 in some ways. This game is actually getting nice and long, way longer than I thought it would be at the start. When I shared it with people a while ago, it was very short. Now, it’s decently long! Once I add a lot more minigames, I will consider making them go in random order and giving them difficulty tags to determine when they should be shown.
I just balanced minigame 6, “Unintelligent Arrows,” after feedback from Hack Club members. I made users have more time to react before getting hit by the arrows. I have not released this update yet; once I apply some other suggestions from the community, I will release it as v0.11.0.
After receiving feedback from the Hack Club community, I have made these changes to CodeWare. The icon has been updated to increase contrast and to look better at small resolutions Minigame 6, “Unintelligent Arrows,” has been balanced to be easier for users to complete WASD Movement has been added to all games Support for held jumps has been added to the first minigame, “Orb Collection Platformer” An ambiguity in the README about the objective has been corrected
I just made two new assets for CodeWare! They are the players in minigames 4 and 6. Here is a photo of one of them.
I just released version v0.13.0 of CodeWare! In this version, I have completely changed the sound environment of the game! I will explain it with two basic pseudocode (or Python) logic statements! prev_sound = sound in v0.12.0 curr_sound = sound in v0.13.0 print(prev_sound, curr_sound) # False, True What I’m trying to illustrate here is that there was absolutely no sound before, and now there is! There is a background ticking noise playing (forever) through an autoload and sound effects corresponding to in-minigame events. Feel free to test it at https://tyleruploads.itch.io/codeware?secret=CDZUB2MTxYCmNQ70VRagItDLSTg ! Send any feedback in the comments!
I just made version v0.14.0 of CodeWare! In this version, I added the eighth minigame, “Choose the Boxes!” The user has 30 seconds to choose 20 boxes by clicking on the one matching the color of the center box. I also went through and removed unnecessary log statements and unused variables.
I just made the ninth minigame for CodeWare, “The Maze!” In the minigame, the user needs to get to the center of the maze in less than 18 seconds! They move a mini tyleruploads texture with arrow keys and WASD to eventually get to the bigger one in the middle! I had a lot of trouble with physics here, hence the 2 hours! And, I’ve never made any sort of maze before, so this is a first!
I just made the tenth minigame for CodeWare! It is named “RGB Skills.” In the minigame, there are two colors: one generated automatically by the code, and one controlled by manual RGB Sliders. It validates the user’s guess using the GDScript method Vector3.distance_to() . The method uses the 3D Pythagorean theorem to calculate the Euclidean Distance between the RGB values, as if they were plotted in a 3D space. This works because the red value represents the x-axis, the green value represents the y-axis, and the blue value represents the z-axis on a 3D graph. This was very interesting for me to discover, since I only learned the 2D Pythagorean theorem last year (in seventh grade). The game also starts the sliders at the furthest possible points from the target color, which makes the minigame harder. If the player clicks the submit button without making any changes, they will not pass. And yes, I know they could easily invert the colors to find the right one. The only thing is, they probably didn’t read this devlog. So, they’ll have no clue of the fact the sliders were placed at the inversion of the target color.
I just did a lot of asset updating and linting! The part I think would be most interesting to you is obviously the asset updates. I changed the assets in Minigame 1, 3, 4, and 9! I also updated the gallery, accessible in the extras menu, to include new assets I’ve forgotten to put in there for a while now. I’ll just show you how minigame one looks now; no need for a detailed explanation of everything. Now, I have to address the boring part, which took most of the three and a half hours. That would be linting! It’s pretty self-explanatory: I went through and made the scenes and scripts adhere to style guidelines.
In the Newspaper department at my summer sleepaway camp this year, they always said, “If the number is less than 11, spell it out.” CodeWare has officially surpassed this guideline in the number of its minigames. Minigame 11 of CodeWare is titled “Type the Strings,” and players must type 15 five-character strings provided to them in less than one minute. The string is generated from a pool of characters with lookalikes (i.e., Z and 2, S and 5, O and 0, I and l, etc.) removed to ensure it is completely fair for the user. This was definitely one of the easier minigames to code, but it wasn’t the easiest thing ever. I still ran into some issues, like the vertical alignment of a RichTextLabel being a bit too low when dynamically updating its content in GDScript to show a custom notice to the user (I fixed it by changing it to a normal Label, after troubleshooting for way too long).
I just created the twelfth mingame of CodeWare, “Catch the Falling Orbs!” In it, you have 45 seconds to catch 35 falling orbs by moving left and right with your keyboard.
This will be one of my very last devlogs before I ship CodeWare! I just created the gameplay trailer, which is a huge accomplishment! This is my first time making any sort of video for anything I make in the computer world, and I think it actually turned out very well! The video shows potential players what the game will look like and gives a glimpse of its unexpected win-and-lose endings. I also put the video on the game’s Itch.io page, which will be made public very soon. You can view the video on YouTube here: CodeWare - Official Gameplay Video
This marks v1.0.0! This is my FINAL devlog for CodeWare (at least the first ship)! It has really been a great project that has significantly pushed what I think about my development capabilities. But I will explain that more in the ship message! The main change made over the time of this devlog was a complete revamp of the README! Here is a summary of the changes made to it: The following shields have been added: Play on GitHub Pages, Made with Godot, GitHub Release (version number), and GitHub Commit Activity The hero image near the top of the README, depicting the title screen, has been replaced with a gameplay video for the game, with a hero of minigame 6 (Unintelligent Arrows) The minigames section has been moved to near the bottom of the README to make the start of the README a better hook. And the minigame descriptions and hero images inside the section have been put inside a spoiler notice, so the game can not be easily spoiled for players. And the hero images in the minigame section have been converted from Markdown tags to HTML tags in order to enforce a specific width.
Ships:
I created CodeWare, a WarioWare-style video game where you have to complete various minigames, written in Godot. I originally had it under the WarioWare game mission, but I eventually decided I should detach it from it due to the sheer complexity of this game, which is way above the beginner mission. In the game, players are put through what is currently 12 minigames. Each minigame has a strict timer limit, whether it be losing a life or progressing to the next minigame once it strikes 0. In case you are confused, the way they win a life at the end is if the purpose of the minigame is to survive a certain amount of time against computer-generated obstacles, like arrows or orbs (essentially meteors). The very interesting thing about this game is the two endings: the ending you get when you complete all the minigames with lives to spare, and the one when you lose all of your five lives. These endings, which I will not explain in detail (so it is not spoiled for you!), highlight the eternity of automatically generated code files. The opening scene of the game is the Tyleruploads Mountain Range, which shows many mountains connected via bridges. The suspension for those bridges is the game’s logo turned into a bunch of small links. Metaphysically, the game’s goal is to cross these bridges. Many parts of this project were extremely challenging for me. For one, I had never set foot in Godot at all before embarking on this project. I was also a complete newcomer to any sort of game development. I encountered many errors caused by my being just introduced to GDScript and game development, such as not knowing that scripts continue after changing the scene, the absence of a deferred call causing the game to go completely grey, losing a lot of work in video editing software while making the gameplay trailer video, and many more small and large things. In every ship message for prior Stardance projects, I have said something like “Wow! Before I started, I really didn’t think I could do something this complex. I really just transformed my coding abilities.” But this time, I am not going to repeat that basic fib without any supporting arguments. My previous Stardance projects were nowhere near this length. So, I would like to make a new claim now. That claim is that while I have not become a completely new developer or graphic designer or anything, I have dipped into a new path of development that I will have the choice to either continue to pursue or to reap the benefits of the mindset associated with it as I enter high school. For these reasons, along with the fact that I was able to sit down and write quality code for one project for 51 hours, I am very proud of myself. My viewpoint of “sit down and make a decent project and leave it” has been greatly diminished outside of specific contexts....
|
1793152332.5505183
|
1793238732.5505183
|
|
66648
|
One Tiny Delivery by @RobbieMa | Stardance
|
RobbieMa
|
1
|
51.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-16T06:10:10Z", "hours": 51.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is “One Tiny Delivery” made this in around 4 weeks. It is a complete small exploration game about going around delivering packages on an island. The hardest part of this project from a technical perspective would be optimization. I tried all the ways to optimize my game and it finally came out to a steady 100 fps on my laptop. It gave me a lot of new knowledge how Unity renders scenes and how batching and the new resident drawer feature can boost FPS. The hardest thing from a non-technical perspective would be the music. I am NOT a composer, i have no music theory, the only instrument i play is the flute, i don’t know what sounds good or not i can only guess and check. Making this project has been really fun, see yall on the next one!", "repo": "https://github.com/lamp-dude/One-Tiny-Delivery1/", "demo": "https://lamp-dude.itch.io/one-tiny-delivery"}]...
|
[{"post_id": 80063, "ts": "202 [{"post_id": 80063, "ts": "2026-10-16T03:47:25Z", "hours": 1.0853, "text": "BUILDS COMPLETED i had to fix some final build bugs but two builds have finally successfully completed! both windows and mac builds have been uploaded to itch.io!"}, {"post_id": 80032, "ts": "2026-10-16T01:07:06Z", "hours": 3.4142, "text": "FINAL DEVLOG!! THE GAME HAS BEEN BUILT. I built it for both mac and windows and now i am gonna try and see if it can also build on webGL. I have added the following features in these two hours. Pause menu End credits New keybinds Changes to prologue Loading optimization (with some major help using AI to help me figure out how to solve lag spikes)"}, {"post_id": 79982, "ts": "2026-10-15T18:46:10Z", "hours": 1.2328, "text": "Devlog 32: working on menu music, ending music theme variations. after that the project would be completed with just building the game and editing player settings making it ready to be played and published to the public"}, {"post_id": 79723, "ts": "2026-10-15T07:01:25Z", "hours": 0.3736, "text": "Devlog 31 I made it so that the prologue preloads terrain, this why gameplay is smooth and there is no such thing as a loading time! As the player is always doing something. I also made each terrain have it’s own grass renderer so the unnesscary ones dont have to be rendered at the very beginning"}, {"post_id": 79719, "ts": "2026-10-15T06:36:22Z", "hours": 2.58, "text": "Devlog 30: The main menu has been completed with all pages working! i’ve made sure that each resolution works and every button works too. did some fun camera effects for the background then i screenshotted it and added a panel overlay for where the “menu” part resides. I have also added a prologue (that i wont show for spoilers) and an ending. now is just left for the credits!"}, {"post_id": 79679, "ts": "2026-10-15T01:27:49Z", "hours": 1.2225, "text": "Devlog 29 finally added in a driver! finished up prologue (i won’t spoil it) and started on a menu! the second image is the background subject to change. the final few devlogs and this project will be over!"}, {"post_id": 79662, "ts": "2026-10-14T23:46:04Z", "hours": 2.3153, "text": "Devlog 28 The project is like 98% done. all that is left is main menu and ending scene. players can now restart a mission if their load falls off the bed or if they get stuck. I have also added ambient sound zones and more sound effects. various easter eggs have been added, more sound effects, and more polish has been done to the handling of the vehicle. I have also started on the prologue of the game."}, {"post_id": 79644, "ts": "2026-10-14T20:18:39Z", "hours": 1.1378, "text": "Devlog 27 Getting animations in! Maximo is a savior, very easy alsmot drag and drop animations into unity. (of course there more than that but it’s easy for my case) There are more that i won’t spoil! all there is left is to add MUSIC, MENU, ENDING!!!"}, {"post_id": 79622, "ts": "2026-10-14T18:54:44Z", "hours": 2.1094, "text": "Devlog 26 Polish. Polish. Polish. So much polish, bugtesting and just the most fun yet boring parts of the game! I had to do like 9 full run throughs of the game which is really hard because i designed it so that players are gonna have to go slow on the roads to avoid falling off the mountain or loosing the load. I optimized the flowers more, overhauled the dialogue visuals with a new font and animation, and changed some dialogue. The work is very close to being finished!"}, {"post_id": 79538, "ts": "2026-10-14T14:44:50Z", "hours": 0.435, "text": "Devlog 25 Since i can’t track my time on garage band, only 26 minutes for this… but i spent my entire morning completely redoing the theme for the game. it now looks like this and sounds loads better than the other one. It has some simple cords and a simple but pretty melody and i made it a waltz-like piece. This melody is probably gonna be repeated a lot through the game with variations so it’s short, memorable, and easily looped."}, {"post_id": 79465, "ts": "2026-10-14T04:40:49Z", "hours": 1.9589, "text": "Devlog 24 Adding MUSIC to the game! (AND A NEW LOCATION!!) using garage band, i’ve cooked up a theme for the game, the piece is mostly piano and it is very simple with lots of repetition. I’m gonna see if i can use my inner music composing skills to make this sound better and incorporate it into the game somehow. I have also added a new location! the TEMPLE! it acts as the second to last place to stop and offers a great view. This is where the final mission happens. There are a lot of polishing to do before release but i am almost there!"}, {"post_id": 79442, "ts": "2026-10-14T00:41:19Z", "hours": 0.3667, "text": "Devlog 23: The story is almost done! i’ve optimized the systems better and improved some graphics. Look at that fog! isn’t that just absolute eye candy? There are some weird shadow bugs becuase i turned the resolution down but the cell-shading helps a lot with that so it doesnt look TOO bad."}, {"post_id": 79438, "ts": "2026-10-14T00:00:13Z", "hours": 1.1219, "text": "Devlog 22: Working on the story, added a new location, a hiker’s tent half way up the mountain acting as the midpoint for the journey up the mountain. Or i’m thinking of adding a temple thing near the top of the mountain for more variation so the player doesn’t get bored. I have also started to add more deliverables and worked on the story more"}, {"post_id": 79388, "ts": "2026-10-13T19:28:22Z", "hours": 0.3861, "text": "Devlog 21:: More storyline adding! Making the story takes up a lot of time and thinking, i’m trying to make them all feel smoothly integrated and made with care."}, {"post_id": 79350, "ts": "2026-10-13T16:30:07Z", "hours": 1.9183, "text": "Devlog 20: The delivery system is fully completed with my own custom script-writing UI for the editor! Before i had this problem of the editor being REALLY slow due to all the voice lines I have but I have fixed that making script writing much more enjoyable and easy to look at/change things. i have completed the first mission which is very easy and acts like a guide for new players. the cubes are placeholders for actual characters that I will actually import when i get done with the main systems and story."}, {"post_id": 79228, "ts": "2026-10-13T03:40:04Z", "hours": 0.7667, "text": "devlog 19: Revamping the different packages so it isn’t just cubes anymore. First delivery will be apples and apple juice!"}, {"post_id": 79221, "ts": "2026-10-13T02:35:52Z", "hours": 2.1008, "text": "Devlog 18: Almost done with the storyline! Stay tuned! after storyline the game will be mostly complete. The remaining story line will probably take not much time using the system i made to streamline the process. Each delivery is unique but follows the same steps. Start, arrival, return dialogue for both, start new delivery, repeat."}, {"post_id": 79164, "ts": "2026-10-12T21:02:54Z", "hours": 1.2075, "text": "Devlog 18: Working on the story line and FLOWERS!!! The flowers use the same system as the grass does, I just make some different textures (the flowers dont even have stems because it will just spawn on top of the grass that acts like its stem to save performance). I probably have to tune them more so they dont spawn as much on mountains, make them more fluid and natural spawning and not just in circles, and scale them better. It already looks like a huge glowup for the field so that is nice!"}, {"post_id": 78944, "ts": "2026-10-12T03:35:02Z", "hours": 2.6322, "text": "Devlog 17: Optimizations, optimizations, optimizations. that my friends is the summary of what I have done in these near 3 hours. lowering shadow quality, lowering reflection quality, batching, and just testing with a variety of different settings, it finally runs at a stable ~100 fps. before, the terrain were way too detailed, each point of the terrain casting a bunch of very high quality shadows, now, they still cast shadows because i cant lower resolution of the terrain since that would erase the terrain data, BUT i could lower the shadows resolution which gave me a huge performance boost."}, {"post_id": 78890, "ts": "2026-10-11T21:47:58Z", "hours": 1.7333, "text": "Devlog 16: FINALLY COMPLETED THE ROUTE!!! The route is now fully complete from the fields, to the forests, and to the mountains. The journey to the top of this mountain is NOT easy, and would probably require a lot of skill to complete the journey without falling off. Though there is a great award tho… a wonderful view that i will not spoil. Thanks you unity’s additional terrain tools, it wasn’t as hard sculpting roads out of the mountain but it WAS hard getting those roads to be easy for the player to access since the player’s vehicle is quite limited in torque and speed."}, {"post_id": 78780, "ts": "2026-10-11T16:15:18Z", "hours": 0.3667, "text": "Devlog 15: Becuase of the uneven terrain, staying upright is almost impossible say less about keeping the delivery on the bed of the truck! It isn’t supposed to be a ragebait game so I made a feature in the script so that when the player holds down shift, the player will keep grounded and go along with the terrain angles."}, {"post_id": 78519, "ts": "2026-10-11T02:16:52Z", "hours": 1.5433, "text": "Devlog 14 Slowly but surely making my way up the mountain… Terrain sculpting takes so much time!!"}, {"post_id": 78481, "ts": "2026-10-10T22:25:22Z", "hours": 1.2, "text": "Devlog 13: Starting on the ascent to the peak of the mountain! Hopefully all goes well, it is the hardest part of the map design part because of how hard it is to flatten steep hills and cliffs to make it drivable and look natural. The player’s car does not provide a lot of torque so the changes in incline have to be very gradual. I will see how this goes! I have made a lot of progress on the storyline aspect of the game, i made it so players can choose to go on side quests or stick to the main objective whihc takes a shorter amount of time."}, {"post_id": 77733, "ts": "2026-10-08T03:53:57Z", "hours": 2.755, "text": "Devlog 13: I have started making the delivery system script! GOt some basic dialogue interaction system using trigger colliders. I’m going to try to make it really customizable because this is going to be the main gameplay mechanic for the rest of the game. Going on, I won’t leak too much of the story making process, that would kinda ruin it. But there will be updates on all the other stuff!"}, {"post_id": 77423, "ts": "2026-10-06T22:30:18Z", "hours": 1.3033, "text": "Devlog 12: Added a gas station (complete with a great view of the ocean thats probably gonna be covered up with trees in the near future)! And expanded the forest complete with LODs and more optimization features like decreasing shadow distance and quality. how it runs at a locked and stead 60 FPS which should be good for most people,"}, {"post_id": 77181, "ts": "2026-10-05T23:27:51Z", "hours": 2.0072, "text": "Devlog 11 Got some more env design up! I have made a lake a completed the river (maybe in the future i’ll add a waterfall and more branches like a delta) and also made a gravel road! I have also edited the mountains a little so the scale seems bigger and started to plan out possible routes up the mountain! Many more are planned for more possible delivery locations, stay tuned!"}, {"post_id": 76928, "ts": "2026-10-05T03:20:44Z", "hours": 0.7667, "text": "MOUNTAINS!!! Devlog 10 Using unity’s terrain extended tools, I got some very nice looking mountains up in a short amount of time. For painting the cliffs and the snow, I wrote up a custom editor tool to help me paint the grey texture at certain incline angles and to check the altitude and add a noise variation to the snow. Looks pretty nice, the hard part will just be designing the details on it."}, {"post_id": 76885, "ts": "2026-10-04T22:43:39Z", "hours": 2.2297, "text": "Devlog 9 Fixed up the terrain. Unity terrain is a PAIN to get right.. there are so many numbers you can mess up on that gets your terrain data wiped and have to redo it again.. guess what i did. I got the numbers wrong. The map was WAY too big, so I scaled it down. When i scaled it down the resolution was WAY too high (since all of them somehow were auto set to 4k resolution) and CRASHED my laptop with 32gb ram.. Scary times. But i got it over with and now we have a nice little map with in WIP forest"}, {"post_id": 76638, "ts": "2026-10-04T07:28:36Z", "hours": 1.1333, "text": "Devlog 8 Got the rough map layout done! Took me a lot of remakes and editing but the general sizing of it should be the final map’s sizing. It is pretty big, it is 1.5km in length and 1km in width. Thought that ight sound small, the bigness comes from the vehicle speed and i’m tinking of adding lakes, rivers, and a final mountain on this map. It will constantly be editing as I go. I also made a new little cozy area! It will be the first delivery mission destination"}, {"post_id": 76586, "ts": "2026-10-04T02:03:52Z", "hours": 0.9333, "text": "Devlog 7.5 Adding more things and lowering the density of the grass! (Gives an FPS boost ykyk)"}, {"post_id": 76571, "ts": "2026-10-04T00:28:38Z", "hours": 1.2333, "text": "Devlog 7 The making of the starting area! added a house and a path for the player to go through, my idea for this starting point is like a coastal plain, not very rough terrain, fairly easy for players to start off without losing any cargo and designed for them to learn the controls."}, {"post_id": 76047, "ts": "2026-10-02T05:28:06Z", "hours": 0.4, "text": "Devlog 6 added a water shader from a old project and painting terrain! Since I’m using neighboring terrain system from unity, I had to use some clever artistic covering up seams form the previous terrain (since colors weren’t even, they were all handpainted), and flatten each terrain in the terrain inspector. This will allow me to add rivers or lakes or mountains in the future. Pretty cool stuff! The water shader was just taken from a project from 4 years ago, I’m surprised it works without a flaw in Unity 6! Its got simplistic reflections (just planer reflections), waves, color, and foam!"}, {"post_id": 76038, "ts": "2026-10-02T04:41:26Z", "hours": 0.4667, "text": "trying out to see if Unity’s terrain system will suit my needs, I have concluded it does! Trying to get an idea for the map now.."}, {"post_id": 75756, "ts": "2026-09-30T23:52:20Z", "hours": 0.49, "text": "Devlog 5.5 Made the grass system support multiple terrains since I plan on using Unity’s neighboring terrain system to make my big overall map. It grabs each terrain color correctly and the grass appears normally."}, {"post_id": 75465, "ts": "2026-09-30T05:26:11Z", "hours": 1.1458, "text": "Devlog 5 Overhauling terrain and grass! I decided to use the base of a old stylized grass shader I had and repurposed it into a more ghibli-like feel. I made it more optimized by splitting it into chunks and made it blend in with the terrain by removing any light rendering on the grass and made it render after Ambient Occlusion. Now it looks completely blended in with the terrain colors. After adding terrain colors it looks very ghibli-like!"}, {"post_id": 75414, "ts": "2026-09-30T01:00:07Z", "hours": 0.4, "text": "Devlog 4 Graphics update!! Did you know that unity3D has a hidden feature that allows for some awsome out-of-the-box cell shading and outlines? To hide up my bad models in the future, I’m gonna use toon shading and other effects to make my game look more stylized so my models don’t have to be really realistic or high poly. What do you think? Does it look good? Help me out here…"}, {"post_id": 75408, "ts": "2026-09-30T00:21:06Z", "hours": 0.2667, "text": "Devlog 3 We have sound!!! I felt like a good game always needs sound, I avoid sound in most of my other games because I am NOT the best at it. The main thing that hard is seamless looping of audio. I cannot figure it out. After spending some time in the browser, I found some tools that helped me, especially this crossfade adder. After that, I added a simple engine sound system that increases the pitch/speed of the sound as I get faster and faster"}, {"post_id": 75404, "ts": "2026-09-29T23:37:53Z", "hours": 0.5006, "text": "Devlog 2.5 Polished up the camera, angled it for a isometric- perspective view, and just made the overall camera smoother. You can now rotate the camera with your right mouse button! It also smoothly auto rotates if you turn the car every 90 degrees."}, {"post_id": 75082, "ts": "2026-09-29T02:56:41Z", "hours": 1.2917, "text": "Devlog 2 The basic Car Controller is ready! It is a very simple raycast based controller using 3 rays and unity wheel colliders. It works pretty well, no known issues. It works as expected, WASD movement, space is handbrake. Cargo load also works. I also grabbed a old camera controller from another project that had a simlar prespective, I was a bit afraid maybe something changed with the versions because it is a older script from 2022 but it worked perfectly fine with soem fine tuning of vaules!"}, {"post_id": 75033, "ts": "2026-09-28T22:40:52Z", "hours": 0.3667, "text": "Devlog 1 Made the player truck model!! Its a 3 wheeler inspired by a rather italian design I found on google. I’ve changed the design a lot, drawn it on procreate first, then modeled it in blender by myself I am kinda proud of this little thing, I couldn’t track my hours in blender nor procreate which was kinda shame. I’ve since dragged it in unity, and it looks great! NO AI WAS USED!!"}]...
|
Title: One Tiny Delivery by @RobbieMa | Stardance
Title: One Tiny Delivery by @RobbieMa | Stardance
Devlogs:
Devlog 1 Made the player truck model!! Its a 3 wheeler inspired by a rather italian design I found on google. I’ve changed the design a lot, drawn it on procreate first, then modeled it in blender by myself I am kinda proud of this little thing, I couldn’t track my hours in blender nor procreate which was kinda shame. I’ve since dragged it in unity, and it looks great! NO AI WAS USED!!
Devlog 2 The basic Car Controller is ready! It is a very simple raycast based controller using 3 rays and unity wheel colliders. It works pretty well, no known issues. It works as expected, WASD movement, space is handbrake. Cargo load also works. I also grabbed a old camera controller from another project that had a simlar prespective, I was a bit afraid maybe something changed with the versions because it is a older script from 2022 but it worked perfectly fine with soem fine tuning of vaules!
Devlog 2.5 Polished up the camera, angled it for a isometric- perspective view, and just made the overall camera smoother. You can now rotate the camera with your right mouse button! It also smoothly auto rotates if you turn the car every 90 degrees.
Devlog 3 We have sound!!! I felt like a good game always needs sound, I avoid sound in most of my other games because I am NOT the best at it. The main thing that hard is seamless looping of audio. I cannot figure it out. After spending some time in the browser, I found some tools that helped me, especially this crossfade adder. After that, I added a simple engine sound system that increases the pitch/speed of the sound as I get faster and faster
Devlog 4 Graphics update!! Did you know that unity3D has a hidden feature that allows for some awsome out-of-the-box cell shading and outlines? To hide up my bad models in the future, I’m gonna use toon shading and other effects to make my game look more stylized so my models don’t have to be really realistic or high poly. What do you think? Does it look good? Help me out here…
Devlog 5 Overhauling terrain and grass! I decided to use the base of a old stylized grass shader I had and repurposed it into a more ghibli-like feel. I made it more optimized by splitting it into chunks and made it blend in with the terrain by removing any light rendering on the grass and made it render after Ambient Occlusion. Now it looks completely blended in with the terrain colors. After adding terrain colors it looks very ghibli-like!
Devlog 5.5 Made the grass system support multiple terrains since I plan on using Unity’s neighboring terrain system to make my big overall map. It grabs each terrain color correctly and the grass appears normally.
trying out to see if Unity’s terrain system will suit my needs, I have concluded it does! Trying to get an idea for the map now..
Devlog 6 added a water shader from a old project and painting terrain! Since I’m using neighboring terrain system from unity, I had to use some clever artistic covering up seams form the previous terrain (since colors weren’t even, they were all handpainted), and flatten each terrain in the terrain inspector. This will allow me to add rivers or lakes or mountains in the future. Pretty cool stuff! The water shader was just taken from a project from 4 years ago, I’m surprised it works without a flaw in Unity 6! Its got simplistic reflections (just planer reflections), waves, color, and foam!
Devlog 7 The making of the starting area! added a house and a path for the player to go through, my idea for this starting point is like a coastal plain, not very rough terrain, fairly easy for players to start off without losing any cargo and designed for them to learn the controls.
Devlog 7.5 Adding more things and lowering the density of the grass! (Gives an FPS boost ykyk)
Devlog 8 Got the rough map layout done! Took me a lot of remakes and editing but the general sizing of it should be the final map’s sizing. It is pretty big, it is 1.5km in length and 1km in width. Thought that ight sound small, the bigness comes from the vehicle speed and i’m tinking of adding lakes, rivers, and a final mountain on this map. It will constantly be editing as I go. I also made a new little cozy area! It will be the first delivery mission destination
Devlog 9 Fixed up the terrain. Unity terrain is a PAIN to get right.. there are so many numbers you can mess up on that gets your terrain data wiped and have to redo it again.. guess what i did. I got the numbers wrong. The map was WAY too big, so I scaled it down. When i scaled it down the resolution was WAY too high (since all of them somehow were auto set to 4k resolution) and CRASHED my laptop with 32gb ram.. Scary times. But i got it over with and now we have a nice little map with in WIP forest
MOUNTAINS!!! Devlog 10 Using unity’s terrain extended tools, I got some very nice looking mountains up in a short amount of time. For painting the cliffs and the snow, I wrote up a custom editor tool to help me paint the grey texture at certain incline angles and to check the altitude and add a noise variation to the snow. Looks pretty nice, the hard part will just be designing the details on it.
Devlog 11 Got some more env design up! I have made a lake a completed the river (maybe in the future i’ll add a waterfall and more branches like a delta) and also made a gravel road! I have also edited the mountains a little so the scale seems bigger and started to plan out possible routes up the mountain! Many more are planned for more possible delivery locations, stay tuned!
Devlog 12: Added a gas station (complete with a great view of the ocean thats probably gonna be covered up with trees in the near future)! And expanded the forest complete with LODs and more optimization features like decreasing shadow distance and quality. how it runs at a locked and stead 60 FPS which should be good for most people,
Devlog 13: I have started making the delivery system script! GOt some basic dialogue interaction system using trigger colliders. I’m going to try to make it really customizable because this is going to be the main gameplay mechanic for the rest of the game. Going on, I won’t leak too much of the story making process, that would kinda ruin it. But there will be updates on all the other stuff!
Devlog 13: Starting on the ascent to the peak of the mountain! Hopefully all goes well, it is the hardest part of the map design part because of how hard it is to flatten steep hills and cliffs to make it drivable and look natural. The player’s car does not provide a lot of torque so the changes in incline have to be very gradual. I will see how this goes! I have made a lot of progress on the storyline aspect of the game, i made it so players can choose to go on side quests or stick to the main objective whihc takes a shorter amount of time.
Devlog 14 Slowly but surely making my way up the mountain… Terrain sculpting takes so much time!!
Devlog 15: Becuase of the uneven terrain, staying upright is almost impossible say less about keeping the delivery on the bed of the truck! It isn’t supposed to be a ragebait game so I made a feature in the script so that when the player holds down shift, the player will keep grounded and go along with the terrain angles.
Devlog 16: FINALLY COMPLETED THE ROUTE!!! The route is now fully complete from the fields, to the forests, and to the mountains. The journey to the top of this mountain is NOT easy, and would probably require a lot of skill to complete the journey without falling off. Though there is a great award tho… a wonderful view that i will not spoil. Thanks you unity’s additional terrain tools, it wasn’t as hard sculpting roads out of the mountain but it WAS hard getting those roads to be easy for the player to access since the player’s vehicle is quite limited in torque and speed.
Devlog 17: Optimizations, optimizations, optimizations. that my friends is the summary of what I have done in these near 3 hours. lowering shadow quality, lowering reflection quality, batching, and just testing with a variety of different settings, it finally runs at a stable ~100 fps. before, the terrain were way too detailed, each point of the terrain casting a bunch of very high quality shadows, now, they still cast shadows because i cant lower resolution of the terrain since that would erase the terrain data, BUT i could lower the shadows resolution which gave me a huge performance boost.
Devlog 18: Working on the story line and FLOWERS!!! The flowers use the same system as the grass does, I just make some different textures (the flowers dont even have stems because it will just spawn on top of the grass that acts like its stem to save performance). I probably have to tune them more so they dont spawn as much on mountains, make them more fluid and natural spawning and not just in circles, and scale them better. It already looks like a huge glowup for the field so that is nice!
Devlog 18: Almost done with the storyline! Stay tuned! after storyline the game will be mostly complete. The remaining story line will probably take not much time using the system i made to streamline the process. Each delivery is unique but follows the same steps. Start, arrival, return dialogue for both, start new delivery, repeat.
devlog 19: Revamping the different packages so it isn’t just cubes anymore. First delivery will be apples and apple juice!
Devlog 20: The delivery system is fully completed with my own custom script-writing UI for the editor! Before i had this problem of the editor being REALLY slow due to all the voice lines I have but I have fixed that making script writing much more enjoyable and easy to look at/change things. i have completed the first mission which is very easy and acts like a guide for new players. the cubes are placeholders for actual characters that I will actually import when i get done with the main systems and story.
Devlog 21:: More storyline adding! Making the story takes up a lot of time and thinking, i’m trying to make them all feel smoothly integrated and made with care.
Devlog 22: Working on the story, added a new location, a hiker’s tent half way up the mountain acting as the midpoint for the journey up the mountain. Or i’m thinking of adding a temple thing near the top of the mountain for more variation so the player doesn’t get bored. I have also started to add more deliverables and worked on the story more
Devlog 23: The story is almost done! i’ve optimized the systems better and improved some graphics. Look at that fog! isn’t that just absolute eye candy? There are some weird shadow bugs becuase i turned the resolution down but the cell-shading helps a lot with that so it doesnt look TOO bad.
Devlog 24 Adding MUSIC to the game! (AND A NEW LOCATION!!) using garage band, i’ve cooked up a theme for the game, the piece is mostly piano and it is very simple with lots of repetition. I’m gonna see if i can use my inner music composing skills to make this sound better and incorporate it into the game somehow. I have also added a new location! the TEMPLE! it acts as the second to last place to stop and offers a great view. This is where the final mission happens. There are a lot of polishing to do before release but i am almost there!
Devlog 25 Since i can’t track my time on garage band, only 26 minutes for this… but i spent my entire morning completely redoing the theme for the game. it now looks like this and sounds loads better than the other one. It has some simple cords and a simple but pretty melody and i made it a waltz-like piece. This melody is probably gonna be repeated a lot through the game with variations so it’s short, memorable, and easily looped.
Devlog 26 Polish. Polish. Polish. So much polish, bugtesting and just the most fun yet boring parts of the game! I had to do like 9 full run throughs of the game which is really hard because i designed it so that players are gonna have to go slow on the roads to avoid falling off the mountain or loosing the load. I optimized the flowers more, overhauled the dialogue visuals with a new font and animation, and changed some dialogue. The work is very close to being finished!
Devlog 27 Getting animations in! Maximo is a savior, very easy alsmot drag and drop animations into unity. (of course there more than that but it’s easy for my case) There are more that i won’t spoil! all there is left is to add MUSIC, MENU, ENDING!!!
Devlog 28 The project is like 98% done. all that is left is main menu and ending scene. players can now restart a mission if their load falls off the bed or if they get stuck. I have also added ambient sound zones and more sound effects. various easter eggs have been added, more sound effects, and more polish has been done to the handling of the vehicle. I have also started on the prologue of the game.
Devlog 29 finally added in a driver! finished up prologue (i won’t spoil it) and started on a menu! the second image is the background subject to change. the final few devlogs and this project will be over!
Devlog 30: The main menu has been completed with all pages working! i’ve made sure that each resolution works and every button works too. did some fun camera effects for the background then i screenshotted it and added a panel overlay for where the “menu” part resides. I have also added a prologue (that i wont show for spoilers) and an ending. now is just left for the credits!
Devlog 31 I made it so that the prologue preloads terrain, this why gameplay is smooth and there is no such thing as a loading time! As the player is always doing something. I also made each terrain have it’s own grass renderer so the unnesscary ones dont have to be rendered at the very beginning
Devlog 32: working on menu music, ending music theme variations. after that the project would be completed with just building the game and editing player settings making it ready to be played and published to the public
FINAL DEVLOG!! THE GAME HAS BEEN BUILT. I built it for both mac and windows and now i am gonna try and see if it can also build on webGL. I have added the following features in these two hours. Pause menu End credits New keybinds Changes to prologue Loading optimization (with some major help using AI to help me figure out how to solve lag spikes)
BUILDS COMPLETED i had to fix some final build bugs but two builds have finally successfully completed! both windows and mac builds have been uploaded to itch.io!
Ships:
This is “One Tiny Delivery” made this in around 4 weeks. It is a complete small exploration game about going around delivering packages on an island. The hardest part of this project from a technical perspective would be optimization. I tried all the ways to optimize my game and it finally came out to a steady 100 fps on my laptop. It gave me a lot of new knowledge how Unity renders scenes and how batching and the new resident drawer feature can boost FPS. The hardest thing from a non-technical perspective would be the music. I am NOT a composer, i have no music theory, the only instrument i play is the flute, i don’t know what sounds good or not i can only guess and check. Making this project has been really fun, see yall on the next one!...
|
1793155809.5099957
|
1793242209.5099957
|
|
40879
|
River by @henry1155 | Stardance
|
henry1155
|
0
|
50.81
|
0
|
[]
|
[{"post_id": 66354, "ts": "202 [{"post_id": 66354, "ts": "2026-09-12T04:25:19Z", "hours": 1.7753, "text": "9/11/2026 - 20th Update! well, it’s 10:17 PM, lets get to it! a while before i updated the background of the banner so its darker and added a glow, thought it made things look a bit better? idk anyways, bom time, more like everything time, what do we have left to do? test code (bare sample) cad double check and export update bom (add M2 screws, double check) ship??? so yeah, let’s get that done tonight! well, you know my main source for all screws :p ( here on aliexpress!) ok, bom should be good, cad should be good, exporting… ok, another banner update! it now has the pcb in the background! (faded, of course!) ok, it’s 11:56 PM now, gonna quickly commit, did a ton of docs, readme stuff, bom stuff, basically i think (might be missing something?) mostly everythings ready except for the firmware! well, tried my best, really cant write the firmware right now, its kinda weird to do it without constantly flashing and testing it (yeah, its not optimal, but still, thats my favorite way to do it) ok, a bit more clean up work, i think we’re ready to ship! The rushing torrent of water. It’s rushing and rushing, basking below a warm summer sun, except the water keeps rushing, streaming as a tidal wave rather than a river. It’s fast, almost unstoppable, gushing as it passes by. The torrent’s calming! Quick, swim to the side! And indeed it was. After nearly two months, bobbing, rather, tumbling, through the crashing flow of the waters, it found its rhythm. Swimming to the shore, this adventure, has come to an end, and a considerably unfamiliar land presents itself, much different than the place upstream… ok, it’s 12:22 AM now, gonna move this to the website so its updated with today’s stuff! hope you enjoyed that little bit of writing, and yeah, for now, good night! hey its 1:13 AM and im back, added some basic firmware stuff so its more than a blinking led, still gotta work on it a bit, also updated the readme with the audio part names but yeah, for now, good night!"}, {"post_id": 66310, "ts": "2026-09-12T02:18:43Z", "hours": 1.4944, "text": "9/10/2026 - 19th Update! ok, 10:42 PM, wow, we’re locked in tonight! no time to waste, to onshape! wow got started so fast i forgot to post last updates log to the site, one second… ok, back to onshape! ok, here it is! added the port holes and stuff, did a couple checks, it should be ok? of course, the cad can be adjusted when the actually parts arrive! anyways, exporting stuff so that i can make a thing for this! so some how i only have 6.7GB of storage left. kinda funny but not very good, ill deal with that later… ok, good amount of work today! wrapped up the cad work it seems, also did some banner stuff! (check the readme!) anyways, i think i need another day for this, with that said, it’s 12:24 AM, and yeah, good night!"}, {"post_id": 65743, "ts": "2026-09-11T03:01:09Z", "hours": 2.4803, "text": "9/5/2026 - 18th Update! ok, it’s 9:28 PM, they rejected the part request (lel) back on like 8/28/2026, yeah its been a week anyways, lets finish this one up? ignore the bottom right corner if youre on lookout, idk if it even records it but i need to watch a video right now anyways gonna change the sd card footprint thing now nvm dont need to watch this video i guess ok, should be replaced, gonna double check it has a model ok, it does, just came back after a quick half hour break (well thats not quick), 10:40 PM and checking for errors… ok, 10:56 PM, it should be good! added a couple more vias for ground stuff, gonna commit and prepare to export! ok, back at 11:38 PM, let’s export! (also for reference this is the jlcpcb part for the microsd card) anyways, all exported, doing jlcpcb stuff now! ok, stuff should be moved over, time to go to placement! well, seems good now? huh looks like jlcpcb got an update some time recently, anyways, after comparing images, looks good! hmm well, ggs! the boards good to go it seems! quick commit well, now all we need to do is clean up the repository and prepare to ship! (and some test code, cant really do much right now, of course) ok its been like half an hour, havent done much, i think im gonna end it here! so yeah, shipping and maybe updating the cad is the only thing really left (oh wait and screws for the bom), so yeah, it’s 1:14 AM, good night!"}, {"post_id": 62581, "ts": "2026-09-06T01:27:52Z", "hours": 1.4269, "text": "8/27/2026 - 17th Update! ok, 10:39 PM, lets speed through this! ok, quite a bit of rotating stuff on jlcpcb’s side, but here it is! it should mostly be good? only thing im not sure of is the crystal but yeah! hopefully when i reload the page it saves… no it doesnt. well, thats annoying. well, 11:21 PM, made an application for the sd card thing to actually get a model, so yeah, not much i can do today, unfortunately? just kididng, cad could use some work, brb ok, 11:47 PM, im back! shrunk the middle section from 1.4cm to 0.75cm! nvm its back at 0.95cm, anyways, total height decreased from 2.1cm to 1.5cm! ok, 11:54 PM, brb! back at 12:44 AM, i guess its a good time to assemble a bom? (for the other parts) well, 1:07 AM, that wasnt really much… yeah, gotta wait till the 3d model for the micro sd card slot appears or i just gotta replace it, idk, but yeah, i guess ill check tomorrow evening, if its not there, i guess ill just replace it? but yeah, 1:21 AM now (yes i got distracted), so yeah, good night!"}, {"post_id": 56344, "ts": "2026-08-28T02:39:22Z", "hours": 4.7917, "text": "8/26/2026 - 16th Update! well, welcome back, it’s 3:00 PM here in nyc right now, a bit of a warm day, i kinda want to get this done, its taken far too long (its been a month already?). i kinda have more important things to sort out, but they can wait a bit, they’re not like extremely time sensitive! ok, 3:10 PM, im actually back now, ive been considering removing the encoder (yet itll look crazy weird, i know), imo, most features should be still possible without it, just a bit more annoying to navigate with long presses and stuff, idk. eh, whatever, im gonna first play around with the layout to see if its possible first ok, audio jack moved to the bottom (and added the 3d model!), lets run drc… uh, suspiciously no error? quick commit! had a great idea (flipping the switches upside down for more space) uh it would probably be better to keep the data lines short right hold on did i reverse the audio jack direction… anyways, 5:10 PM, micro sd card is there and all drc errors fixed! gonna commit real quick and then run to the bathroom… ok, 5:38 PM and back! ok, did a bunch of via stuff so all the grounds are more connected, fixed up some silkscreen text, the only thing really left is to fix the silkscreen art stuff, but yeah! so yeah! gotta double check that audio jack direction again (it should be correct now?), but yeah, it’s 6:33 PM, off to dinner, brb! 9:48 PM, did a good amount of work off camera fixing the silkscreen and stuff, but yeah, pretty happy with where it is now! could probably start exporting stuff now? gonna quickly commit first though… oh yeah, also checked the length of the traces that should be equal (usb c connections), they’re still good! ok, 11:32 PM, im back for a bit, time to export stuff! (again!) 12:23 AM, lots of part picking, gonna brb! im back at 1:53 AM, lets quickly finish this up! i really cant find an led that works. well, had a little help, but C524052 works!!! well, that said, it’s 2:43 AM, the bom has been exported and should be there, im gonna go to sleep now, gotta wake up earlier tomorrow for something, so yeah, good night!"}, {"post_id": 55203, "ts": "2026-08-26T19:00:27Z", "hours": 2.8567, "text": "8/23/2026 - 15th Update! so. how much silkscreen art can someone make? turns out, not enough, but i think im at the point where im mostly satisfied with the decoration and the layout, in theory, we can kinda finish everything today? it’s 6:01 PM right now in nyc, im just gonna get ready to post yesterday’s (well, two days ago’s) updatelog onto the website oh yeah, another cool thing, i figured out how to fix my s key! its staying in there pretty well so far, so let’s see how it holds up… ok, ive posted it there, what do we have left? finish the pcb clean up (not much, really, just notes and checks) drc again, check its all updated and good export and do the jlcpcb stuff, create and calculate bom/prices decide whether or not to use female headers for the removable screen on one side is the audio jack, repairability and, well, the art on the other side is increased height and possible connection issues its really just that the audio jack probably doesnt fit make the side heights readable (this cad is abysmal) well, what are we waiting for? let’s get to it! i, in fact, did not lock in. just kidding! this looks good for the header stuff i was talking about, id say the screws should also be able to secure everything, so thats another plus! quick commit, one second ok, 7:35 PM now, gonna go to dinner now, lots of cad work! ok, see ya in a bit! back at 10:57 PM, let’s just finish this :p so. i just realized something. it’s not a good realization. the sd card is on the top. the microphone jacks is on the top, that’s fine, but the sd card holder is on the top. why is this an issue? well, i was particularly avoiding double sided assembly for the costs. and then i forget about this. i guess we cant avoid it then, 11:44 PM, these docs are confusing im back at 1:52 AM, im gonna try this again thanks to this help article! i guess doing it manually instead of the fabrication toolkit or something back with hackpad was needed… ok, 2:15 AM, im basically not able to do anything right now. im pretty sure i cant keep going with standard pcba, since it gets crazy expensive (yeah, im trying to not make it super expensive) and it has some weird setup thing that i really dont want to figure out (something about adding extra rails to the side? i mean, thats not optimal here). so yeah, i cant do anything for now. what that means is that i have to do a ton of redesigning, specifically moving the sd card and audio jack to the bottom (maybe ill remove the encoder for it??? who knows), and of course the leds (just kidding, maybe the resistor, but the rest is staying on top! ill just have to do some (abysmal) hand soldering…) so yeah. that’s where things are at, it seems. ill probably have to remove the female pin header row and just direct solder it then? but yeah, that’s it for now. well, i guess theres more to do know, it’s 2:21 AM, so yeah, good night!"}, {"post_id": 53375, "ts": "2026-08-23T22:04:20Z", "hours": 0.2781, "text": "8/21/2026 - 14th Update! so… where have i been? it’s 10:51 PM, one second… though it may appear like ive locked out, ive spent like a least three hours drawing the silkscreen stuffs! yeah! looks pretty nice, along with that, fixed a whole bunch of errors and warnings, so now, the only warning are just silkscreen stuffs (and that the debug pins arent connected). also, yeah, added the run pads, idk how useful that is, also, the only warnings right now are that and the fact that we had to make one of the audio chip holes bigger (shouldnt be a problem i hope? i mean, the things are already connected so…) might have to look into that one anyways, yeah! added more vias here and there, cleaned stuff up a bit! mostly was working on silkscreen art, probably shouldve timelapsed it but its really whatever, idk if it wouldve counted anyways, but yeah so… what now? yeah, tha’s pretty much an update of where ive been, idk what happened the third day i wasnt here, i think a reasonable goal is shipping this by the end of the month, then fermion work starts brb! ok, back at 2:40 AM, obviously not an eventful day and more of a catch up and commit thing, snuck in a couple more jokes and references, they’re under the oled! (the 128x32 display, not the other one) well, that’s it for me today! it’s 2:41 AM, so good night!"}, {"post_id": 52048, "ts": "2026-08-22T02:51:57Z", "hours": 3.5461, "text": "8/18/2026 - 13th Update! a little later, but here nevertheless! it’s 10:02 PM in nyc, and yeah, here we go! goal today is to mostly (???) finish the pcb! so uh, i ran drc and the whole thing froze, 73 errors and 200 warnings, wow, anyways, most of the stuff is complete! well, issues aside, we still have to add the test points and stuff, but yeah, good progress! it’s currently 11:40 PM, gonna brb! via spam go brr, anyways, yeah, see ya in a bit! back at 1:23 AM, yeah, earlier than usual, back to pcb work! so i kinda dont have anywhere to place the test/debug pins. yeah. well, 3:10 AM, all DRC errors solved! theres some goofy shenanigans to get U9 to have the thermal relief to zone incomplete error to go away, but its really whatever, nothing really changes about the real area! now, we have a ton of warnings (lots of them are about silkscreen size), but its really whatever, its more for aesthetics anyways, at least the smaller text! so yeah! i think thats a good place to end for today, that said, it’s 3:14 AM (wow, pi digits huh?), so good night!"}, {"post_id": 50038, "ts": "2026-08-19T02:03:40Z", "hours": 4.2569, "text": "8/17/2026 - 12th Update! is bro actually locked in? 8:55 PM today, the goal’s to finish most of the pcb today! which would kinda be insane good news! its the right connector. bad news? its kinda too big in the current setup. so yeah. we have three choices flip the rp2040 into the middle lots of moving and redesigning i dont really want to do increased chance of hitting the things on the bottom of the display silkscreen on the bottom would be cooler make the center thicker makes the entire thing bigger, idk move the rp2040s closer makes size stuff tricky/annoying to deal with evil upside stuff probably the best but definitely the most jank solution shouldnt do it since its not really designed for it so i. uh. dont understand my own cad. why did i make this so unreadable i think making the center thicker is the best choice here sd card wired, idk how necessary similar trace lengths are needed, but i did it within 5mm so it should be alright according to some random sources? ok, 2 hours later, it’s 10:57 PM! the audio stuff is wired together, havent added it to the rp2040 yet, it’s kinda a bit wonky right now, might need to rotate the stuff to properly add it, so yeah! ok, gonna brb! some three hours later and back! it’s 1:51 AM, let’s lock in real quick another bit more than 2 hours later, a ton of stuffs wired up! mcu communication and displays, the audios to the mcu pins, buttons, and more! so yeah! good progress today, that said, it’s super late now, since it’s 3:59 AM, so yeah, good night!"}, {"post_id": 49294, "ts": "2026-08-18T00:54:53Z", "hours": 6.1933, "text": "8/16/2026 - 11th Update! ok, 6:23 PM, and some 10 days later, the one week project turned into three, yeah, i got demotivated again however, after practicing jumpstyle out of nowhere, something flipped in my head and now i just wanna lock in. yeah. thats really the only reason why im back lol. anyways, pcb time, im thinking that we dont really need to expose so many pins, but its ok if we need to vscode looking a little different today. huh. anyways, pcb time ok, the base is done! all the holes should be laid out, added some extra effort and added curved edges! wow, 10:42 PM! 4 hours and 10 minutes later, straight lock in and pcb work, mcu a is done! at least, mostly done, havent double checked for issues yet so yeah, gonna go watch a movie, brb! 2:13 AM and back, here we go! ok a bit thirsty, pretty sure that the tap water here in nyc is very good, anyways, its a nice cool rainy night here in nyc! so uh, idk if theres a faster way to like copy paste what i just did ok, 1 hour and some 37 minutes later, it’s nearing 4am (it’s 3:55 AM), so i think here’s a good place to end! great lock in today, around 6 hours of work done! so yeah! that’s pretty nice, good start to pcb stuff, should go pretty smoothly from here? idk lol, anyways, it’s 3:58 AM, good night!"}, {"post_id": 43101, "ts": "2026-08-08T05:44:58Z", "hours": 1.8058, "text": "8/6/2026 - 10th Update! double digits uh oh, 9:37 PM, gotta go fast (sonic reference?) we do need a schottky diode (like a specific one) (no way, did i spell that right? wow) ok, lots of things assigned footprints, cleaned some stuff up, fixed some ERC stuffs, imports schematic to pcb well, no errors other than the rotary encoder, gonna look into that real quick oops didnt use the switch version ok, thats fixed, updates well, some warnings but no errors, gonna look into that in a second but for now, quick commit! (yes i undid all the pcb stuff so that it actually updates when we do real stuff) ok 10:37 PM, gonna go watch a movie now, brb! back at 1:23 AM, let’s quickly fix it, idk why my shoulders hurt a bunch today… ok, looked in a bit deeper, shouldnt be an issue! hmm thinking about layout and we probably should break up all the gpio 20 pins into sections based on what they do for debug rather than in header form, since, well, it’s not gonna be fun to route around them. yeah, probably will do that tomorrow… or why not now? so uh, idk why the crystal size is off, gonna look into that tomorrow, but yeah, pin groups made! the spi and uart and run pins have headers in the lower area for mcu communication (outside of the picture), so yeah, got a couple things to double check, but pcb work should be able to start soon! and yeah! it’s 2:27 AM, so that’s about it for today, good night!"}, {"post_id": 42367, "ts": "2026-08-07T01:38:45Z", "hours": 2.4814, "text": "8/5/2026 - 9th Update! yeah, took a day off yesterday for some silly art, anyways, 5:15 PM, and we’re back! ok, added the updatelog from 8/3/2026 onto the website, so we have to finish the schematic today! todo update pins to add spi communication between the two mcus add backup for uart or some other communciation method add redundancy for other peripherals other audio jack formats other than TRS, USB, etc. and more lists MCU A 0-3: SPI0 MCU (to implement) 0-6: Buttons (switch to 4-10) updated, GPIO10 is the connector 8-11: Micro SD Card (switch to 11-14) changed RX from 8 to 12 changed CS from 9 to 13 changed SCK from 10 to 14 12-13: OLED 128x32 Display (switch to 18-19) changed SDA from 12 to 18 changed SCL from 13 to 19 16-17: UART0 MCU (backup) (to implement) 23-25: RGB, Board, Boot LEDS 26-28: Audio MCU B 0-3: SPI0 MCU (to implement) 0-5: LCD 128x160 Display (switch to 8-13) changed BLK, generic from 5 to 13 changed CS, SPI1 CSn from 1 to 9 changed DC, generic from 0 to 8 changed RST, generic from 4 to 12 changed SDA, SPI1 TX (MOSI) from 3 to 11 changed SCL, SPI1 SCK from 2 to 10 16-17: UART0 MCU (backup) (to implement) 23-25: RGB, Board, Boot LEDS ok, stuff updated, gotta implement the connection now, ok, pin set thingy added, also gotta consider how to do the board connection thing since it’ll be more repairable if we have an array of pins headers instead of soldering the display directly to the board, but for now, quick commit! so, in trying to rename a commit, i seem to have deleted the commit for 8/3/2026… uh, my bad oh the timelines messed up a bit… uh, let’s ignore that, 6:24 PM, off to dinner! im back at 12:53 AM. no, dinner was not 6 hours lol added a TS audio jack, then learned that, according to the docs under section 3.4, its not exactly for headphones but is meant for amplifier inputs (they do work with high impedance headphones but idk whether i have those) huh kicad just went black ok, back from kicad, just did a bunch of audio stuff, idk how much of its correct, but it’s kinda 2:18 AM right now so yeah, here’s a picture! yeah, had to mvoe things around a bit, idk, still gotta look more into this, had to pull up the datasheets lol (pull up? like pull up resistors???) anyways, it’s now 2:20 AM, so yeah, good night!"}, {"post_id": 41573, "ts": "2026-08-05T21:18:00Z", "hours": 3.1422, "text": "8/3/2026 - 8th Update! 9:20 PM, let’s go ok, figure 23 on page 25 of this raspberry pi documentation seems good, did a bit of research, seems that pcm is better than pwm here for audio use cases, with the tradeoff of requiring more electronics ok, so its like 11:16 PM, here’s the progess! audio thing and sd card thing should both be done, need to look into how to program them (and to verify that its correct), but seems nice so far! still need to work on the display stuff, might also add some leds, quick commit! ok, back at 11:57 PM (as in, i took a bit of a break), time to do the display and leds (maybe? idk) ok, everythings looking good! still need to check if the spi for the displays are correct, but now we also need to consider how we’re gonna do the communication between the rp2040s! 1:03 AM, gonna take a second to rest, quick commit! ok, its a bit later now, i think im gonna end today here, decent progress, really need to finish the schematic and start layout tomorrow! yeah! that said, it’s 1:48 AM, so good night!"}, {"post_id": 40479, "ts": "2026-08-04T01:19:38Z", "hours": 3.3236, "text": "8/2/2026 - 7th Update! 3:56 PM, goal for today is to finish the schematic, verify it, then start work on the pcb itself! looking forward to that, seld reminder to double check what should be close with what and trace width too welcome back! its actually 4:22 PM, i am not locked in mfw i learn that you can flip components in schematic ok, back at 5:35 PM! good progress, just placed a bunch of the out pins, of course, we’re not exactly gonna use them, but it would be cool to actually just use them as a devboard as well! anyways, quick commit! ok, 5:41 PM, brb! (bro is not coming back for a bit) ok, 9:50 PM, im back! back to kicad… idk what im doing, made a footprint though! ok, added the stuff, assigned a bunch footprints to stuff, hmm still gotta wire the stuff back at 11:40 PM, added the 128x160 display footprint and symbol, along with the switches and encoder wiring! gonna need a jumper thing there, probably should implement them more? idk also, one more thing, i forgot. yeah, oh right, we need an audio jack thing (or some speaker? idk, research time) quick commit! ok, 1:17 AM, yeah, didnt get much done between then and now, didnt really feel exactly motivated to get back to it? anyways, idk how, but my short video on the capacitor text flying off screen has amassed 400+ likes and 8.8k+ views in 10 hours (which is like x20+ the amount of views the spark edit had, which took 5 hours lol), not complaining though! so yeah! that’s the progress on the schematic so far, good amount of assigning footprints too! anyways, at the time of writing, it now has 9k+ views. which is kinda insane. anyways, yeah! so, that’s it for now, it’s 1:24 AM, good night!"}, {"post_id": 39665, "ts": "2026-08-02T19:51:27Z", "hours": 3.6836, "text": "8/1/2026 - 6th Update! its 5:26 PM, time to lock in, new month by the way! just moved yesterdays log onto the website i dont think i can design it to have the top of the screws flush with the surface, idk, it might look better without that? who knows cad work is pretty good! time to move the work to kicad… (also, do note that the main screens gonna have some stuff so it can actually align well, we still have spacers and tabs to cad!) the main point of getting the case and layout ok, 6:56 PM, made the kicad, gonna get started after dinner! quick commit ok, 8:56 PM now, wow, basically exactly two hours later! no, i didnt eat dinner for two whole hours (yes ill keep making this joke) anyways, pcb time, seems like theres no dedicated kicad wakatime/hackatime thing, thats kinda sad (im also on kicad 8 lel) just checked the stardance site, why does my updatelog from yesterday have more views/reactions than any of the posts in spark lol i have no clue where to start. probably gonna heavily reference this guide back from blueprint for resources! well, what am i waiting for? here we go! once i get lookout/timelapse thing set up! ok, 10:14 PM, lots of stuff done! basically, im up to adding the io stuffs, but since we’re not making a devboard (im still gonna break out a good amount of pins), we’re just gonna gloss over that… anyways, yeah, quick commit! so uh, ive been thinking. how does one power/program this. well, the idea right now is three usb c ports, one for only power and controlling everything, and the other two for individual power/flash! its a little jank, but idk how the power stuff is gonna work (at least for the capacitors) we also need diodes aaaaaaa ok, 10:45 PM, gonna go watch a movie, brb! back at 1:39 AM, why am i scared to make changes, i have version control… mfw there are 67 footprints in total (according to the assign footprints list), anyways, 2:37 AM, with that, i think here’s a good place to stop for today, discovered the blue boxes existed and had a ton of fun with it! so yeah, that’s it for tonight, it’s currently 2:40 AM, good night!"}, {"post_id": 39150, "ts": "2026-08-01T21:27:39Z", "hours": 1.7869, "text": "7/31/2026 - 5th Update! well, it’s 9:41 PM, on the last day of july. quite a month lol anyways, gotta lock in, back to cad!!! since when were headers (long side, past the black square section) 6mm? guess they always were we should also probably have a simple oled on the top for the text, with the graphics beneath it… it could probably be driven by the main rp2040 since its not that intensive hmm might be better to put this on the second? idk, i dont think im gonna add a scrub bar (as in saying the progress of the track) in order to save processing power, i actually dont know, it might be a good idea actually ok, some ui drawing later, we have a 128x32 image! probably not gonna actually put an image on the disc place, shouldnt take much effort for anything to update it (since its both monochrome and only 128x32) (maybe we can do some optimization to only update section of it if that’s possible? idk) this looks pretty good, time to cad the picture! nvm, it doesnt have the pin locations in the picture… this is also pretty good, this time with the pin locations in the diagram! wait it doesnt have the side profile mfw these are like the exact same products, just gonna go with the first one erm this things gonna be 1.5cm tall in total, at least currently, thats pretty compact! self reminder to add extra clearance on the sides of the display ok, 10:42 PM, movie time, brb back at 2:05 AM, so the layout of this things gonna have to be super super super annoying, gonna draw something out real quick, actually its probably faster to write it, basically, the base is obvious, just pla, but after that, we’re gonna need some form of four screws to hold everything together, with spacers in between! mentioned yesterday, with the ideas of the buttons on the side, it’s still possible, but i’d say unlikely. it’s not exactly easy to make easy push buttons on the side, we’ll probably have to have some mount, which is also not pleasant to make, especially with the fact we have to wire that up. i’d more prefer if we could have it on the board itself, but that’s obviouslly not possible or is it? turns out, while write that, i remembered that, since the height’s 1.5cm, we can, in fact, have a couple of switches on the bottom! like, actual buttons! we cant really fit full keyswitches there… well, we can fit three, and have the rotary encoder on the top we might be onto something, speakers are gonna have to wait, probably unlikely, headphone jack is gonna be on the side, probably next to the power section back to cad work so i just researched 18650 batteries again. probably best to just use a charger. idk, still like the jumper for usb c and battery power idea erm hows it 2:43 AM, ok, did a bit more cad work, here’s the state of stuff yeah, that’s gonna be it for now, i should probably design this with more space, the x direction right now is set by the display itself, which is quite interesting, gonna probably have to make a protection thing so stuff doesnt collide, havent considered if i actually am gonna add a battery to it and exactly where (would need to find a battery holding unit and get the dimensions, probably gonna quickly grab that from the 18650 battery holders from raven or something) anyways, 2:47 AM right now here in NYC, good night!"}, {"post_id": 38022, "ts": "2026-07-31T05:14:09Z", "hours": 5.4819, "text": "NEW PROJECT WOOOO I probably should’ve started writing this sooner Anyways, welcome back! After Open Sauce, I’ve been brainstorming plans for my next build, ????? (you’re gonna have to check my updatelogs on github for the secret name :p), where there are some constraints on the build that I’ve planned that might require it to have a custom PCB… Looking at that now, it might not happen, but who knows, fun to explore custom pcbs anyways! The goal for River? Basically to create a cursed setup where it just stores and plays music, which displaying some synced graphics, similar to something like the Internet Archive (and Milkdrop inside it)! It’s kinda an evil RP2040 devboard in a sense, which the twist being that… theres kinda two RP2040s (at least, the plan is). Simply, one is to work on the music, the second is to work as a display/graphics controller! So, what’s been done? Currently, a LOT of benchmarking with circuitpython (and C (wow, scary!)) to measure whats a reasonable way to do this. As mentioned, we’re gonna probably have to use C for reasonable speeds for the graphics controller (which appears blazingly fast! no, not gonna try rust lol). Currently, 128x128 with an SPI interface seems like the plan! Talking about the display, today (7/30/2026) has mostly been part sourcing, specifically for the display, as that’s what everything’s gonna have to revolve around! One was found (check the repo and today’s updatelog for the link), and CAD has started! Well, that’s it for now! See ya in a bit!"}]...
|
Title: River by @henry1155 | Stardance
Devlogs:
N Title: River by @henry1155 | Stardance
Devlogs:
NEW PROJECT WOOOO I probably should’ve started writing this sooner Anyways, welcome back! After Open Sauce, I’ve been brainstorming plans for my next build, ????? (you’re gonna have to check my updatelogs on github for the secret name :p), where there are some constraints on the build that I’ve planned that might require it to have a custom PCB… Looking at that now, it might not happen, but who knows, fun to explore custom pcbs anyways! The goal for River? Basically to create a cursed setup where it just stores and plays music, which displaying some synced graphics, similar to something like the Internet Archive (and Milkdrop inside it)! It’s kinda an evil RP2040 devboard in a sense, which the twist being that… theres kinda two RP2040s (at least, the plan is). Simply, one is to work on the music, the second is to work as a display/graphics controller! So, what’s been done? Currently, a LOT of benchmarking with circuitpython (and C (wow, scary!)) to measure whats a reasonable way to do this. As mentioned, we’re gonna probably have to use C for reasonable speeds for the graphics controller (which appears blazingly fast! no, not gonna try rust lol). Currently, 128x128 with an SPI interface seems like the plan! Talking about the display, today (7/30/2026) has mostly been part sourcing, specifically for the display, as that’s what everything’s gonna have to revolve around! One was found (check the repo and today’s updatelog for the link), and CAD has started! Well, that’s it for now! See ya in a bit!
7/31/2026 - 5th Update! well, it’s 9:41 PM, on the last day of july. quite a month lol anyways, gotta lock in, back to cad!!! since when were headers (long side, past the black square section) 6mm? guess they always were we should also probably have a simple oled on the top for the text, with the graphics beneath it… it could probably be driven by the main rp2040 since its not that intensive hmm might be better to put this on the second? idk, i dont think im gonna add a scrub bar (as in saying the progress of the track) in order to save processing power, i actually dont know, it might be a good idea actually ok, some ui drawing later, we have a 128x32 image! probably not gonna actually put an image on the disc place, shouldnt take much effort for anything to update it (since its both monochrome and only 128x32) (maybe we can do some optimization to only update section of it if that’s possible? idk) this looks pretty good, time to cad the picture! nvm, it doesnt have the pin locations in the picture… this is also pretty good, this time with the pin locations in the diagram! wait it doesnt have the side profile mfw these are like the exact same products, just gonna go with the first one erm this things gonna be 1.5cm tall in total, at least currently, thats pretty compact! self reminder to add extra clearance on the sides of the display ok, 10:42 PM, movie time, brb back at 2:05 AM, so the layout of this things gonna have to be super super super annoying, gonna draw something out real quick, actually its probably faster to write it, basically, the base is obvious, just pla, but after that, we’re gonna need some form of four screws to hold everything together, with spacers in between! mentioned yesterday, with the ideas of the buttons on the side, it’s still possible, but i’d say unlikely. it’s not exactly easy to make easy push buttons on the side, we’ll probably have to have some mount, which is also not pleasant to make, especially with the fact we have to wire that up. i’d more prefer if we could have it on the board itself, but that’s obviouslly not possible or is it? turns out, while write that, i remembered that, since the height’s 1.5cm, we can, in fact, have a couple of switches on the bottom! like, actual buttons! we cant really fit full keyswitches there… well, we can fit three, and have the rotary encoder on the top we might be onto something, speakers are gonna have to wait, probably unlikely, headphone jack is gonna be on the side, probably next to the power section back to cad work so i just researched 18650 batteries again. probably best to just use a charger. idk, still like the jumper for usb c and battery power idea erm hows it 2:43 AM, ok, did a bit more cad work, here’s the state of stuff yeah, that’s gonna be it for now, i should probably design this with more space, the x direction right now is set by the display itself, which is quite interesting, gonna probably have to make a protection thing so stuff doesnt collide, havent considered if i actually am gonna add a battery to it and exactly where (would need to find a battery holding unit and get the dimensions, probably gonna quickly grab that from the 18650 battery holders from raven or something) anyways, 2:47 AM right now here in NYC, good night!
8/1/2026 - 6th Update! its 5:26 PM, time to lock in, new month by the way! just moved yesterdays log onto the website i dont think i can design it to have the top of the screws flush with the surface, idk, it might look better without that? who knows cad work is pretty good! time to move the work to kicad… (also, do note that the main screens gonna have some stuff so it can actually align well, we still have spacers and tabs to cad!) the main point of getting the case and layout ok, 6:56 PM, made the kicad, gonna get started after dinner! quick commit ok, 8:56 PM now, wow, basically exactly two hours later! no, i didnt eat dinner for two whole hours (yes ill keep making this joke) anyways, pcb time, seems like theres no dedicated kicad wakatime/hackatime thing, thats kinda sad (im also on kicad 8 lel) just checked the stardance site, why does my updatelog from yesterday have more views/reactions than any of the posts in spark lol i have no clue where to start. probably gonna heavily reference this guide back from blueprint for resources! well, what am i waiting for? here we go! once i get lookout/timelapse thing set up! ok, 10:14 PM, lots of stuff done! basically, im up to adding the io stuffs, but since we’re not making a devboard (im still gonna break out a good amount of pins), we’re just gonna gloss over that… anyways, yeah, quick commit! so uh, ive been thinking. how does one power/program this. well, the idea right now is three usb c ports, one for only power and controlling everything, and the other two for individual power/flash! its a little jank, but idk how the power stuff is gonna work (at least for the capacitors) we also need diodes aaaaaaa ok, 10:45 PM, gonna go watch a movie, brb! back at 1:39 AM, why am i scared to make changes, i have version control… mfw there are 67 footprints in total (according to the assign footprints list), anyways, 2:37 AM, with that, i think here’s a good place to stop for today, discovered the blue boxes existed and had a ton of fun with it! so yeah, that’s it for tonight, it’s currently 2:40 AM, good night!
8/2/2026 - 7th Update! 3:56 PM, goal for today is to finish the schematic, verify it, then start work on the pcb itself! looking forward to that, seld reminder to double check what should be close with what and trace width too welcome back! its actually 4:22 PM, i am not locked in mfw i learn that you can flip components in schematic ok, back at 5:35 PM! good progress, just placed a bunch of the out pins, of course, we’re not exactly gonna use them, but it would be cool to actually just use them as a devboard as well! anyways, quick commit! ok, 5:41 PM, brb! (bro is not coming back for a bit) ok, 9:50 PM, im back! back to kicad… idk what im doing, made a footprint though! ok, added the stuff, assigned a bunch footprints to stuff, hmm still gotta wire the stuff back at 11:40 PM, added the 128x160 display footprint and symbol, along with the switches and encoder wiring! gonna need a jumper thing there, probably should implement them more? idk also, one more thing, i forgot. yeah, oh right, we need an audio jack thing (or some speaker? idk, research time) quick commit! ok, 1:17 AM, yeah, didnt get much done between then and now, didnt really feel exactly motivated to get back to it? anyways, idk how, but my short video on the capacitor text flying off screen has amassed 400+ likes and 8.8k+ views in 10 hours (which is like x20+ the amount of views the spark edit had, which took 5 hours lol), not complaining though! so yeah! that’s the progress on the schematic so far, good amount of assigning footprints too! anyways, at the time of writing, it now has 9k+ views. which is kinda insane. anyways, yeah! so, that’s it for now, it’s 1:24 AM, good night!
8/3/2026 - 8th Update! 9:20 PM, let’s go ok, figure 23 on page 25 of this raspberry pi documentation seems good, did a bit of research, seems that pcm is better than pwm here for audio use cases, with the tradeoff of requiring more electronics ok, so its like 11:16 PM, here’s the progess! audio thing and sd card thing should both be done, need to look into how to program them (and to verify that its correct), but seems nice so far! still need to work on the display stuff, might also add some leds, quick commit! ok, back at 11:57 PM (as in, i took a bit of a break), time to do the display and leds (maybe? idk) ok, everythings looking good! still need to check if the spi for the displays are correct, but now we also need to consider how we’re gonna do the communication between the rp2040s! 1:03 AM, gonna take a second to rest, quick commit! ok, its a bit later now, i think im gonna end today here, decent progress, really need to finish the schematic and start layout tomorrow! yeah! that said, it’s 1:48 AM, so good night!
8/5/2026 - 9th Update! yeah, took a day off yesterday for some silly art, anyways, 5:15 PM, and we’re back! ok, added the updatelog from 8/3/2026 onto the website, so we have to finish the schematic today! todo update pins to add spi communication between the two mcus add backup for uart or some other communciation method add redundancy for other peripherals other audio jack formats other than TRS, USB, etc. and more lists MCU A 0-3: SPI0 MCU (to implement) 0-6: Buttons (switch to 4-10) updated, GPIO10 is the connector 8-11: Micro SD Card (switch to 11-14) changed RX from 8 to 12 changed CS from 9 to 13 changed SCK from 10 to 14 12-13: OLED 128x32 Display (switch to 18-19) changed SDA from 12 to 18 changed SCL from 13 to 19 16-17: UART0 MCU (backup) (to implement) 23-25: RGB, Board, Boot LEDS 26-28: Audio MCU B 0-3: SPI0 MCU (to implement) 0-5: LCD 128x160 Display (switch to 8-13) changed BLK, generic from 5 to 13 changed CS, SPI1 CSn from 1 to 9 changed DC, generic from 0 to 8 changed RST, generic from 4 to 12 changed SDA, SPI1 TX (MOSI) from 3 to 11 changed SCL, SPI1 SCK from 2 to 10 16-17: UART0 MCU (backup) (to implement) 23-25: RGB, Board, Boot LEDS ok, stuff updated, gotta implement the connection now, ok, pin set thingy added, also gotta consider how to do the board connection thing since it’ll be more repairable if we have an array of pins headers instead of soldering the display directly to the board, but for now, quick commit! so, in trying to rename a commit, i seem to have deleted the commit for 8/3/2026… uh, my bad oh the timelines messed up a bit… uh, let’s ignore that, 6:24 PM, off to dinner! im back at 12:53 AM. no, dinner was not 6 hours lol added a TS audio jack, then learned that, according to the docs under section 3.4, its not exactly for headphones but is meant for amplifier inputs (they do work with high impedance headphones but idk whether i have those) huh kicad just went black ok, back from kicad, just did a bunch of audio stuff, idk how much of its correct, but it’s kinda 2:18 AM right now so yeah, here’s a picture! yeah, had to mvoe things around a bit, idk, still gotta look more into this, had to pull up the datasheets lol (pull up? like pull up resistors???) anyways, it’s now 2:20 AM, so yeah, good night!
8/6/2026 - 10th Update! double digits uh oh, 9:37 PM, gotta go fast (sonic reference?) we do need a schottky diode (like a specific one) (no way, did i spell that right? wow) ok, lots of things assigned footprints, cleaned some stuff up, fixed some ERC stuffs, imports schematic to pcb well, no errors other than the rotary encoder, gonna look into that real quick oops didnt use the switch version ok, thats fixed, updates well, some warnings but no errors, gonna look into that in a second but for now, quick commit! (yes i undid all the pcb stuff so that it actually updates when we do real stuff) ok 10:37 PM, gonna go watch a movie now, brb! back at 1:23 AM, let’s quickly fix it, idk why my shoulders hurt a bunch today… ok, looked in a bit deeper, shouldnt be an issue! hmm thinking about layout and we probably should break up all the gpio 20 pins into sections based on what they do for debug rather than in header form, since, well, it’s not gonna be fun to route around them. yeah, probably will do that tomorrow… or why not now? so uh, idk why the crystal size is off, gonna look into that tomorrow, but yeah, pin groups made! the spi and uart and run pins have headers in the lower area for mcu communication (outside of the picture), so yeah, got a couple things to double check, but pcb work should be able to start soon! and yeah! it’s 2:27 AM, so that’s about it for today, good night!
8/16/2026 - 11th Update! ok, 6:23 PM, and some 10 days later, the one week project turned into three, yeah, i got demotivated again however, after practicing jumpstyle out of nowhere, something flipped in my head and now i just wanna lock in. yeah. thats really the only reason why im back lol. anyways, pcb time, im thinking that we dont really need to expose so many pins, but its ok if we need to vscode looking a little different today. huh. anyways, pcb time ok, the base is done! all the holes should be laid out, added some extra effort and added curved edges! wow, 10:42 PM! 4 hours and 10 minutes later, straight lock in and pcb work, mcu a is done! at least, mostly done, havent double checked for issues yet so yeah, gonna go watch a movie, brb! 2:13 AM and back, here we go! ok a bit thirsty, pretty sure that the tap water here in nyc is very good, anyways, its a nice cool rainy night here in nyc! so uh, idk if theres a faster way to like copy paste what i just did ok, 1 hour and some 37 minutes later, it’s nearing 4am (it’s 3:55 AM), so i think here’s a good place to end! great lock in today, around 6 hours of work done! so yeah! that’s pretty nice, good start to pcb stuff, should go pretty smoothly from here? idk lol, anyways, it’s 3:58 AM, good night!
8/17/2026 - 12th Update! is bro actually locked in? 8:55 PM today, the goal’s to finish most of the pcb today! which would kinda be insane good news! its the right connector. bad news? its kinda too big in the current setup. so yeah. we have three choices flip the rp2040 into the middle lots of moving and redesigning i dont really want to do increased chance of hitting the things on the bottom of the display silkscreen on the bottom would be cooler make the center thicker makes the entire thing bigger, idk move the rp2040s closer makes size stuff tricky/annoying to deal with evil upside stuff probably the best but definitely the most jank solution shouldnt do it since its not really designed for it so i. uh. dont understand my own cad. why did i make this so unreadable i think making the center thicker is the best choice here sd card wired, idk how necessary similar trace lengths are needed, but i did it within 5mm so it should be alright according to some random sources? ok, 2 hours later, it’s 10:57 PM! the audio stuff is wired together, havent added it to the rp2040 yet, it’s kinda a bit wonky right now, might need to rotate the stuff to properly add it, so yeah! ok, gonna brb! some three hours later and back! it’s 1:51 AM, let’s lock in real quick another bit more than 2 hours later, a ton of stuffs wired up! mcu communication and displays, the audios to the mcu pins, buttons, and more! so yeah! good progress today, that said, it’s super late now, since it’s 3:59 AM, so yeah, good night!
8/18/2026 - 13th Update! a little later, but here nevertheless! it’s 10:02 PM in nyc, and yeah, here we go! goal today is to mostly (???) finish the pcb! so uh, i ran drc and the whole thing froze, 73 errors and 200 warnings, wow, anyways, most of the stuff is complete! well, issues aside, we still have to add the test points and stuff, but yeah, good progress! it’s currently 11:40 PM, gonna brb! via spam go brr, anyways, yeah, see ya in a bit! back at 1:23 AM, yeah, earlier than usual, back to pcb work! so i kinda dont have anywhere to place the test/debug pins. yeah. well, 3:10 AM, all DRC errors solved! theres some goofy shenanigans to get U9 to have the thermal relief to zone incomplete error to go away, but its really whatever, nothing really changes about the real area! now, we have a ton of warnings (lots of them are about silkscreen size), but its really whatever, its more for aesthetics anyways, at least the smaller text! so yeah! i think thats a good place to end for today, that said, it’s 3:14 AM (wow, pi digits huh?), so good night!
8/21/2026 - 14th Update! so… where have i been? it’s 10:51 PM, one second… though it may appear like ive locked out, ive spent like a least three hours drawing the silkscreen stuffs! yeah! looks pretty nice, along with that, fixed a whole bunch of errors and warnings, so now, the only warning are just silkscreen stuffs (and that the debug pins arent connected). also, yeah, added the run pads, idk how useful that is, also, the only warnings right now are that and the fact that we had to make one of the audio chip holes bigger (shouldnt be a problem i hope? i mean, the things are already connected so…) might have to look into that one anyways, yeah! added more vias here and there, cleaned stuff up a bit! mostly was working on silkscreen art, probably shouldve timelapsed it but its really whatever, idk if it wouldve counted anyways, but yeah so… what now? yeah, tha’s pretty much an update of where ive been, idk what happened the third day i wasnt here, i think a reasonable goal is shipping this by the end of the month, then fermion work starts brb! ok, back at 2:40 AM, obviously not an eventful day and more of a catch up and commit thing, snuck in a couple more jokes and references, they’re under the oled! (the 128x32 display, not the other one) well, that’s it for me today! it’s 2:41 AM, so good night!
8/23/2026 - 15th Update! so. how much silkscreen art can someone make? turns out, not enough, but i think im at the point where im mostly satisfied with the decoration and the layout, in theory, we can kinda finish everything today? it’s 6:01 PM right now in nyc, im just gonna get ready to post yesterday’s (well, two days ago’s) updatelog onto the website oh yeah, another cool thing, i figured out how to fix my s key! its staying in there pretty well so far, so let’s see how it holds up… ok, ive posted it there, what do we have left? finish the pcb clean up (not much, really, just notes and checks) drc again, check its all updated and good export and do the jlcpcb stuff, create and calculate bom/prices decide whether or not to use female headers for the removable screen on one side is the audio jack, repairability and, well, the art on the other side is increased height and possible connection issues its really just that the audio jack probably doesnt fit make the side heights readable (this cad is abysmal) well, what are we waiting for? let’s get to it! i, in fact, did not lock in. just kidding! this looks good for the header stuff i was talking about, id say the screws should also be able to secure everything, so thats another plus! quick commit, one second ok, 7:35 PM now, gonna go to dinner now, lots of cad work! ok, see ya in a bit! back at 10:57 PM, let’s just finish this :p so. i just realized something. it’s not a good realization. the sd card is on the top. the microphone jacks is on the top, that’s fine, but the sd card holder is on the top. why is this an issue? well, i was particularly avoiding double sided assembly for the costs. and then i forget about this. i guess we cant avoid it then, 11:44 PM, these docs are confusing im back at 1:52 AM, im gonna try this again thanks to this help article! i guess doing it manually instead of the fabrication toolkit or something back with hackpad was needed… ok, 2:15 AM, im basically not able to do anything right now. im pretty sure i cant keep going with standard pcba, since it gets crazy expensive (yeah, im trying to not make it super expensive) and it has some weird setup thing that i really dont want to figure out (something about adding extra rails to the side? i mean, thats not optimal here). so yeah, i cant do anything for now. what that means is that i have to do a ton of redesigning, specifically moving the sd card and audio jack to the bottom (maybe ill remove the encoder for it??? who knows), and of course the leds (just kidding, maybe the resistor, but the rest is staying on top! ill just have to do some (abysmal) hand soldering…) so yeah. that’s where things are at, it seems. ill probably have to remove the female pin header row and just direct solder it then? but yeah, that’s it for now. well, i guess theres more to do know, it’s 2:21 AM, so yeah, good night!
8/26/2026 - 16th Update! well, welcome back, it’s 3:00 PM here in nyc right now, a bit of a warm day, i kinda want to get this done, its taken far too long (its been a month already?). i kinda have more important things to sort out, but they can wait a bit, they’re not like extremely time sensitive! ok, 3:10 PM, im actually back now, ive been considering removing the encoder (yet itll look crazy weird, i know), imo, most features should be still possible without it, just a bit more annoying to navigate with long presses and stuff, idk. eh, whatever, im gonna first play around with the layout to see if its possible first ok, audio jack moved to the bottom (and added the 3d model!), lets run drc… uh, suspiciously no error? quick commit! had a great idea (flipping the switches upside down for more space) uh it would probably be better to keep the data lines short right hold on did i reverse the audio jack direction… anyways, 5:10 PM, micro sd card is there and all drc errors fixed! gonna commit real quick and then run to the bathroom… ok, 5:38 PM and back! ok, did a bunch of via stuff so all the grounds are more connected, fixed up some silkscreen text, the only thing really left is to fix the silkscreen art stuff, but yeah! so yeah! gotta double check that audio jack direction again (it should be correct now?), but yeah, it’s 6:33 PM, off to dinner, brb! 9:48 PM, did a good amount of work off camera fixing the silkscreen and stuff, but yeah, pretty happy with where it is now! could probably start exporting stuff now? gonna quickly commit first though… oh yeah, also checked the length of the traces that should be equal (usb c connections), they’re still good! ok, 11:32 PM, im back for a bit, time to export stuff! (again!) 12:23 AM, lots of part picking, gonna brb! im back at 1:53 AM, lets quickly finish this up! i really cant find an led that works. well, had a little help, but C524052 works!!! well, that said, it’s 2:43 AM, the bom has been exported and should be there, im gonna go to sleep now, gotta wake up earlier tomorrow for something, so yeah, good night!
8/27/2026 - 17th Update! ok, 10:39 PM, lets speed through this! ok, quite a bit of rotating stuff on jlcpcb’s side, but here it is! it should mostly be good? only thing im not sure of is the crystal but yeah! hopefully when i reload the page it saves… no it doesnt. well, thats annoying. well, 11:21 PM, made an application for the sd card thing to actually get a model, so yeah, not much i can do today, unfortunately? just kididng, cad could use some work, brb ok, 11:47 PM, im back! shrunk the middle section from 1.4cm to 0.75cm! nvm its back at 0.95cm, anyways, total height decreased from 2.1cm to 1.5cm! ok, 11:54 PM, brb! back at 12:44 AM, i guess its a good time to assemble a bom? (for the other parts) well, 1:07 AM, that wasnt really much… yeah, gotta wait till the 3d model for the micro sd card slot appears or i just gotta replace it, idk, but yeah, i guess ill check tomorrow evening, if its not there, i guess ill just replace it? but yeah, 1:21 AM now (yes i got distracted), so yeah, good night!
9/5/2026 - 18th Update! ok, it’s 9:28 PM, they rejected the part request (lel) back on like 8/28/2026, yeah its been a week anyways, lets finish this one up? ignore the bottom right corner if youre on lookout, idk if it even records it but i need to watch a video right now anyways gonna change the sd card footprint thing now nvm dont need to watch this video i guess ok, should be replaced, gonna double check it has a model ok, it does, just came back after a quick half hour break (well thats not quick), 10:40 PM and checking for errors… ok, 10:56 PM, it should be good! added a couple more vias for ground stuff, gonna commit and prepare to export! ok, back at 11:38 PM, let’s export! (also for reference this is the jlcpcb part for the microsd card) anyways, all exported, doing jlcpcb stuff now! ok, stuff should be moved over, time to go to placement! well, seems good now? huh looks like jlcpcb got an update some time recently, anyways, after comparing images, looks good! hmm well, ggs! the boards good to go it seems! quick commit well, now all we need to do is clean up the repository and prepare to ship! (and some test code, cant really do much right now, of course) ok its been like half an hour, havent done much, i think im gonna end it here! so yeah, shipping and maybe updating the cad is the only thing really left (oh wait and screws for the bom), so yeah, it’s 1:14 AM, good night!
9/10/2026 - 19th Update! ok, 10:42 PM, wow, we’re locked in tonight! no time to waste, to onshape! wow got started so fast i forgot to post last updates log to the site, one second… ok, back to onshape! ok, here it is! added the port holes and stuff, did a couple checks, it should be ok? of course, the cad can be adjusted when the actually parts arrive! anyways, exporting stuff so that i can make a thing for this! so some how i only have 6.7GB of storage left. kinda funny but not very good, ill deal with that later… ok, good amount of work today! wrapped up the cad work it seems, also did some banner stuff! (check the readme!) anyways, i think i need another day for this, with that said, it’s 12:24 AM, and yeah, good night!
9/11/2026 - 20th Update! well, it’s 10:17 PM, lets get to it! a while before i updated the background of the banner so its darker and added a glow, thought it made things look a bit better? idk anyways, bom time, more like everything time, what do we have left to do? test code (bare sample) cad double check and export update bom (add M2 screws, double check) ship??? so yeah, let’s get that done tonight! well, you know my main source for all screws :p ( here on aliexpress!) ok, bom should be good, cad should be good, exporting… ok, another banner update! it now has the pcb in the background! (faded, of course!) ok, it’s 11:56 PM now, gonna quickly commit, did a ton of docs, readme stuff, bom stuff, basically i think (might be missing something?) mostly everythings ready except for the firmware! well, tried my best, really cant write the firmware right now, its kinda weird to do it without constantly flashing and testing it (yeah, its not optimal, but still, thats my favorite way to do it) ok, a bit more clean up work, i think we’re ready to ship! The rushing torrent of water. It’s rushing and rushing, basking below a warm summer sun, except the water keeps rushing, streaming as a tidal wave rather than a river. It’s fast, almost unstoppable, gushing as it passes by. The torrent’s calming! Quick, swim to the side! And indeed it was. After nearly two months, bobbing, rather, tumbling, through the crashing flow of the waters, it found its rhythm. Swimming to the shore, this adventure, has come to an end, and a considerably unfamiliar land presents itself, much different than the place upstream… ok, it’s 12:22 AM now, gonna move this to the website so its updated with today’s stuff! hope you enjoyed that little bit of writing, and yeah, for now, good night! hey its 1:13 AM and im back, added some basic firmware stuff so its more than a blinking led, still gotta work on it a bit, also updated the readme with the audio part names but yeah, for now, good night!...
|
1792781372.935754
|
1793386172.935754
|
|
41309
|
Hikari by @PAPER_01 | Stardance
|
PAPER_01
|
1
|
50.81
|
278
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T07:16:29Z", "hours": 26.0, "multiplier": 9.08, "payout": 278, "blessing": "neutral", "text": "Hikari is a recommendation site that currently uses a total of five APIs — four APIs for manga and four APIs for anime. Though some of the APIs are used in both of them. To be more precise its, AniList, Jikan, and Kitsu as they have information about both manga and anime, so they are used for both. I’m trying to make a recommendation site that recommends anime and manga for now, but I will be adding movies, games, and cartoons in the future. The main thing I’m trying to do is combine all the available APIs and give you the best experience by solving the issue of free APIs exhausting soon quickly Since I’m combining all these APIs and making them work as a fallback system , if one API fails or gets exhausted, the other can hold you back. For a more detailed explanation, please check out the README on GitHub. Thank you so much! I hope you like this =)", "repo": "https://github.com/shrestha-01/Hikari", "demo": "https://shrestha-project-09.66ghz.com/"}]...
|
[{"post_id": 64717, "ts": "202 [{"post_id": 64717, "ts": "2026-09-09T10:34:39Z", "hours": 4.0367, "text": "Hikari Devlog #19 Hello everyone, welcome to Devlog #19 of Hikari! (ノ◕ヮ◕)ノ*:・゚ Streaming Links Talking about the updates for this devlog, I have added the streaming links where you can watch the animes. Currently, I have added: Crunchyroll Netflix AnimeSuge (ㅅ´ ˘ `) How Does the Search Work? So, talking about how it searches the anime… First of all, this applies to Crunchyroll and Netflix only , because AnimeSuge isss… umm… (ó﹏ò。) not legit. But hey, it’s just for learning purposes, okay! So, for Crunchyroll and Netflix , the search works by checking the AniList API to see if a streaming link for that particular anime is available or not. If a Direct Link Is Not Available If the direct streaming link is not available in the API, then it will redirect you to that particular streaming platform by searching for the anime. This also applies to AnimeSuge , and actually it always apply to AnimeSuge as the API is never gonna have streaming link of the site for sure(ᵕ—ᴗ—) So, instead of sending you to a random page, it will search for the exact name of the anime on that platform and show you the result. For example, let’s say there is an anime called Anime A . If the streaming link for Anime A is not available in the API, then when you click on the streaming link, Hikari will search for Anime A on the streaming platform and redirect you to the search result page. Scrollbar Design I have also added a slight design to the scrollbar . I didn’t want to remove the scrollbar completely, because I thought people might actually want to scroll through and read the information. So instead of removing it, I just gave it a little design to make it look a bit better than the plain default scrollbar. It’s a small change, but I wanted to mention it since I made some changes here as well. ( ̄▽ ̄)ゞ That’s It! And yeah, that’s it for this devlog! If you have any questions, please do tell me and let me know in the comments. As always, thank you so much for reading, and have a very nice day! ✨ (ノ´ヮ`)ノ*:・゚✧"}, {"post_id": 64098, "ts": "2026-09-08T09:05:43Z", "hours": 2.0447, "text": "Hikari Devlog #18 Hello everyone, welcome to Devlog #18 of Hikari! (ノ◕ヮ◕)ノ*:・゚ Movie Trailer I just wanted to give a quick update on the Movie section . So, I finally added a trailer feature to the Movie section as well! The trailer comes from the TMDB API only , as I could not find any trailer data on OMDB API. I mean, I tried searching, but I didn’t find any trailer data on OMDB , so for now, I’m using the trailer data provided by TMDB. I’ll add a screen recording of the movie trailer in action below. [Sorry , for the lag, my laptop is kinda weak and lags even more with screen recording on] That’s It! Yeah, that’s it for this devlog! Thank you so much! (≧▽≦) And if there is any question, then please do tell me in the comments. I’ll try my best to explain it there as well. Thank you so much for reading, and have a very nice day! (ノ´ヮ`)ノ*:・゚"}, {"post_id": 64042, "ts": "2026-09-08T05:21:34Z", "hours": 2.2836, "text": "Hikari Devlog #17 Hello everyone, welcome to Devlog #17 of Hikari! (ノ◕ヮ◕)ノ*:・゚ OMDB as TMDB Fallback The first update I would say is that I have added the OMDB API as the fallback for the TMDB API . And yeah, obviously, I use the free version , and when I was getting the API key, it told me that it can handle around 1,000 requests per day . And…, I think that should be enough for a personal project like this. And on top of that, it’s only being used as a fallback . First, the requests will be handled by TMDB , and if that fails, then only it will come to OMDb . So, 1,000 requests per day is already more than enough for a personal project like this(i guess). ( ̄▽ ̄)ゞ Movie Genre Filters Talking about the next update, I have also added the genre filters for movies . I will add a screenrecording showing it in action, I’ll attach it below. Trailer Feature for Manga And I have also added a trailer feature for manga ! Yeah, even manga have trailer features available through the AniList API , so I added it there as well. (≧▽≦) That’s It! And yeah, that’s it for this devlog! If you have any questions or want me to explain anything again, then please feel free to leave a comment. I will try my best to explain it there as well. And as always, thank you so much for reading, and have a very nice day! ✨ (ノ´ヮ`)ノ*:・゚"}, {"post_id": 62994, "ts": "2026-09-06T15:44:20Z", "hours": 5.1447, "text": "Hikari Devlog #16 Hello everyone, welcome to Devlog #16 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ TMDB Fetching Improvements So, this time I worked on improving the fetching method of the TMDB API . Previously the fetch returned empty or missed the fetch alot of time, but now its quite better. I will attach a video below showing how it works. (。•̀ᴗ-)✧ And also, I have added the OMDb API as the backup for this one. So now, if TMDB fails, OMDb can act as a fallback. Hopefully, this will make the movie recommendation system a bit more reliable. (ง •̀_•́)ง Watch Trailer Btn Design In the video, you can also see a simple design of the Watch Trailer button. I mean, it’s not exactly simple, but I thought that it looks pretty good, at least to me. But still… I spent a lot of time checking different button designs and stuff for that. I literally spent so much time on that single button . (╥﹏╥), hope ya all like that too Genre Filtering Currently, I am working on filtering the genres of the movies . This should make it easier to get recommendations based on the genres you want. (。•̀ᴗ-)✧ A Little Bug… Also, in the video, you might see that the Watch Trailer button also appeared in the Movie section . But that’s actually a bug that I need to fix. ( ̄▽ ̄;) Basically, when the anime has the Watch Trailer option, and then I switch to the movie section, the button keeps appearing there as well. I still need to figure out how to solve this one. (•́ ᴖ •̀) To show this properly, I force restarted the site in the video as well, to show that the movie doesn’t have the Watch Trailer option in that session right now. So yeah… another little bug to deal with. (╥﹏╥) That’s It! So yeah, that’s it for this devlog! If there is anything you think I didn’t explain properly, or you want me to explain something, then please do tell me in the comments. I’ll try my best to explain it there as well. ( ̄▽ ̄)ゞ As always, thank you so much for reading, and have a very nice day! (ノ´ヮ`)ノ*:・゚✧"}, {"post_id": 62629, "ts": "2026-09-06T03:00:11Z", "hours": 2.6964, "text": "Hikari Devlog #15 Hello everyone, welcome to Devlog #15 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Watch Trailer Feature So, talking about the updates… I have finally added the Watch Trailer feature! (≧▽≦) Currently, it’s only on the Anime section . Okay, so how it works is, if there is a trailer link available in the API , then it will play it on YouTube . The YouTube video will be embedded within the site, which means you don’t need to go to another tab , and you will NOT be redirected to a new tab. (。•̀ᴗ-)✧ The trailer will simply be displayed within the website itself(in the poster area) , as it is embedded. [anime trailers might be limited to certain country and because of it , some of the trailers can be unavailable, depending upon where you live] I’ll put a clip below showing working. Watch Trailer Button Currently, the Watch Trailer button has no design yet. I’m planning to work on that later. ( ̄▽ ̄)ゞ To close the trailer, you just need to click the same button again. The Watch Trailer button will change its text to Close Trailer , and you can click it to stop the trailer. (っ˘ω˘ς ) Pretty simple! TMDB Movie API Also, currently I’m working on improving the fetching method of the TMDB Movie API . Right now, it picks a random ID between 1 and 500,000 , but yeah… it misses a lot of times. I mean, it was quite visible in the previous devlog video I uploaded. (╥﹏╥) Also talking about the good luck, I just found that TMDB has a proper Discovery endpoint , which returns real and valid movies, and it has a much higher hit rate. I mean, that’s what I found. (•̀ᴗ•́)و But I’m still working on it, and I have not tested it yet . If I get any updates, I’ll update you guys in the next devlog! (。•̀ᴗ-)✧ That’s It! Thank you so much for reading! (づ。◕‿‿◕。)づ And as always, if there is any question, or you think that I didn’t explain something properly, then please do tell me in the comments. I’ll try my best to explain that as well. ( ̄▽ ̄)ゞ As always, thank you so much for reading, and have a very nice day! (ノ´ヮ`)ノ*:・゚✧"}, {"post_id": 62202, "ts": "2026-09-05T13:51:04Z", "hours": 2.2114, "text": "Hikari Devlog #14 ✨ Hello everyone, welcome to Devlog #14 of Hikari! Visual Updates For the updates, I have made the poster card change its size according to the poster size . So, the card will adjust itself depending on the poster instead of having the same fixed size for every poster. I also added a chibi on the bottom-left of the poster . I mean, why not? =) Just as a little signature. Just like I added in AniSuffle , though its a different chibi Streaming Links & Backend Currently, I am working on adding the streaming links , like adding the Watch Trailer option and stuff. I am also working on fixing the images not being loaded for the Movie section , especially. And after an API fails, there is no fallback right now as well, so I’m will be working on that as well. That’s It! Thank you so much for reading! And if you didn’t understand something, or you think I didn’t explain something properly, then please do tell me in the comments. I’ll try to explain it there as well. Thank you so much for reading, and have a very nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 62011, "ts": "2026-09-05T06:45:28Z", "hours": 2.5503, "text": "Hikari Devlog #13 Hello everyone, welcome to Devlog #13 of Hikari! Movie API Talking about the update, I used an API called TMDB on this site. Currently, I don’t have any fallback option for movies right now. Visual Updates I was also working on the card, giving it a default rectangular look . Yeah, I’m trying to match AniSuffle, my old site, and bring some of that old style into Hikari(without looking the old code obviously). What’s Next? Before including more backup APIs for movies, I think I will be working on more visual changes , the auto resize is not added on the card yet, will add that first. I’m also thinking of including streaming links , like I did before in AniSuffle. And yeah, I guess that’s it for this devlog! If you think anything was not explained properly, or if you want me to explain anything again, then please do tell me in the comments. I’ll try to explain it there as well. Thank you so much for reading, and have a very nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 61589, "ts": "2026-09-04T16:01:44Z", "hours": 2.7811, "text": "Incase you are having issue playing the video, click on the video and press SPACE BAR Hikari Devlog #12 Hello everyone, welcome to Devlog #12 of Hikari! Updates So, talking about updates again, the updates are that I have added a card-like effect on the poster image . Also , I increased the size of the Hikari logo . I also added an animation of a sort of glow on the star beside the word Hikari . ⭐ I’ll add a video of it here below to show the current state of the site. What’s Next? Currently, next I’m going to work on the Movie section . Yeah, I will mention about the API which I’ll be using for movies, in the next devlog probably, if everything goes well. That’s It! And if you have any questions, then please do tell me in the comments. I will try to explain there as well. And yeah, thank you so much for reading! As always, have a very nice day . (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 61388, "ts": "2026-09-04T08:43:19Z", "hours": 1.0575, "text": "Hikari Devlog #11 ✨ Hello everyone, welcome to Devlog #11 of Hikari! Visual Updates Talking about updates, the update is more on the visual side this time. I have added the poster as the background — the same poster which is viewed on the card, with some blur effect. I thought it was kind of cool and matches the old style of my site. (≧▽≦) 3D Card Effect Currently, I am working on making the card have a 3D-like effect . I found the source code for it on FreeFrontend.com . I will provide the link on the GitHub README, in the Credits section. That’s It! Yeah, that’s all for this devlog. I mean, I’m enjoying writing these devlogs. I wrote a couple of devlogs today and I’m still enjoying it, so I’m uploading this one as well. I thought it was good. It’s good to track the progress as well. So,That’s it for this devlog! If you want me to explain something, or if you think I did not explain something properly, then please do tell me in the comments. I’ll try my best to explain it again in the comments as well. Thank you so much for reading, and have a very nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 61343, "ts": "2026-09-04T06:48:14Z", "hours": 0.6414, "text": "Finally Shipping Hikari Devlog #10 Hello everyone, welcome to Devlog #10 of Hikari! (。•̀ᴗ-)✧ And so, this might be the final devlog before the first ship ! Final Touches I have worked on the responsiveness and cleaned the code. I also worked on making sure(cleaning) the experimental console.log things will not be displayed in the console tab of the site. And finally, I have hosted the site ! Screenshot I’ll add a simple screenshot of the site below: If I make any changes later on, while my project is still waiting to be reviewed, I might add another screenshot to this devlog and update what was changed. Site live at : https://shrestha-project-09.66ghz.com/ And if you have any questions, please do tell me in the comments. I’ll try my best to explain it there. Thank you so much for reading, and have a nice day! (ノ◕ヮ◕)ノ*:・゚✧ Update(after the ship for reviewers) Poster as Background That’s It! Thank you so much for reading! And if you have any questions, please do tell me in the comments. I’ll try my best to explain it there. Thank you so much for reading, and have a nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 61323, "ts": "2026-09-04T05:39:32Z", "hours": 1.415, "text": "Hikari Devlog #9 Hello everyone, welcome to Devlog #9 of Hikari! (。•̀ᴗ-)✧ Genre Options So, I added some glassmorphic , or honestly more blur-like effect , on the genre options. I will add a screenshot below What’s Next? Yeah, I guess I will work on the responsiveness of the site next. And I will remove the Cartoons, Movies, and Games options for now because I will be shipping it, and I will work on those topics later on. That’s It! Yeah, I guess that’s it. And as always, if you have any questions, please do tell me in the comments, and I’ll try my best to explain it there. Thank you so much for reading! Have a nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 61260, "ts": "2026-09-04T03:18:22Z", "hours": 3.6186, "text": "Hikari Devlog #8 Hello everyone, welcome to Devlog #8 of Hikari! (。•̀ᴗ-)✧ Genre Filter Talking about the updates I worked on the genre filter and applied the filter to all four APIs . And yeah, actually, that’s all for this update. What’s Next? 👀 Next, I’m looking towards updating, or like, making some visual changes Also , if everything goes right I might ship it today . As shipping after making a big project might make people not want to read all those devlogs , so um yeah That’s It! Yeah, that’s it for this devlog. And if you think that I didn’t explain something properly, or you want me to explain something more, then please do tell me in the comments. I’ll try again there. Thank you so much for reading, and have a nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 60815, "ts": "2026-09-03T13:06:51Z", "hours": 3.4425, "text": "Hikari Devlog #7 Hello everyone, welcome to Devlog #7 of Hikari! (。•̀ᴗ-)✧ Manga API Fallback Okay, so talking about the updates for this devlog, I have now finally added the API fallback chain for mangas as well . I used: AniList → MangaDex → Jikan → Kitsu AniList is the primary API, then MangaDex, then Jikan, and finally Kitsu. And it seems like both MangaDex and Jikan are down . When I used them a few months before, they were active, but I don’t wonder why they all are, like, getting down and not accepting the requests. (but still i kept them on the fallback just in case if any of them come to life =) ) What’s Next? In the upcoming future, I am going to work on the genre filter for mangas in the same way i worked for the anime . I was also thinking of shipping this project after completing the Anime and Manga sections. I know it looks a bit plain right now, but I wanted to see what you all think about it. I might get some good recommendations from you guys, which I might implement. That’s It! Yeah, so I guess that’s it for this devlog. If you want me to explain anything, or if you think that I did not explain something properly, then please tell me in the comments. I’ll try to explain it again. and as always, thank you so much for reading! and Have a nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 60593, "ts": "2026-09-03T01:41:26Z", "hours": 3.12, "text": "Hikari Devlog #6 Hello everyone, welcome to Devlog #6 of Hikari! (。•̀ᴗ-)✧ Manga Recommendation For this devlog, the main update I would say is the starting of the Manga Recommendation section . I have started working on the manga system now, and so far I have only implemented the AniList API for API calls for manga. In the future, I am planning to add more APIs for manga as well: MangaDex Jikan Kitsu This should give me more options for fallback APIs and hopefully make the manga recommendation system more reliable. That’s It! And yeah, I guess that’s it for this devlog. This one is kinda short, ik (ᵕ—ᴗ—), but that’s the only update I have right now. So yeah, that’s all for this devlog! And as always, if anything was unclear, then please do tell me in the comments. I’ll try to explain it there as well. Thank you so much for reading! Have a nice day! (ノ◕ヮ◕)ノ*:・゚✧"}, {"post_id": 59540, "ts": "2026-09-01T12:50:52Z", "hours": 2.7569, "text": "Hikari Devlog #5 Hello everyone, welcome to Devlog #5 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Okay, now talking about the updates, I have added the similar randomization to AniList and Kitsu API as well. Yeah, I mean, they work differently, but overall it is to achieve the same random result as it was applied in Jikan. You can read Devlog #4 for more info. Changes to Select Genre Another change I made was on the Select Genre is how the results are displayed . So basically, before, how it used to work was: If you selected one genre , then it would give you the correct result. But if you selected multiple genres , then it might: Give you the same anime again and again Give you some random unrelated anime Or sometimes even throw an error But yeah, there are some changes I made to this. Now, instead of showing some random unrelated anime or throwing an error, it would display something which comes within the range of your selected genres . For example, if you selected: Action Comedy Drama And if no such anime is found on the API which contains all three genres , then it would give you an anime containing Action or Comedy or Drama, or any combination of the selected genres . So yeah, it will not totally disappoint you. I mean, I felt it would be better to give you something related to what you selected. ( ̄▽ ̄)ゞ rather than something totally unrelated. Current Implementation Currently, I have applied this system only to AniList . I’ll apply it to Jikan and Kitsu soon However, I am not applying it to SukiMori , as it is not giving quite the response required to display anything. I did not comment out the whole code of SukiMori, but yeah, I am not applying the filters and stuff to SukiMori as it is throwing an error again and again, and it’s not letting me fetch any data. I tried searching for it, but I could not really fix it. So I asked AI, and it told me that it was refusing to connect and nothing can be done and something like that. So yeah, I am not writing filters for that for now. That’s It! And yeah, that’s it for this devlog, I guess. (。•̀ᴗ-)✧ If you have any questions, or if you think I did not explain anything properly, then please do tell me in the comments. I’ll try to explain it there . As always, thank you so much for reading! and Have a very nice day! (≧▽≦)"}, {"post_id": 59392, "ts": "2026-09-01T05:44:17Z", "hours": 2.5783, "text": "Hikari Devlog #4 Hello everyone, welcome to Devlog #4 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Okay, so talking about the updates, this time I have integrated the Choose Genre filters, and other few update , i will explain it below. Choose Genre Now, while generating any random anime, you can choose or select genres on which you want the anime to be recommended. And ngl but it works best when you choose one genre (ó﹏ò。). It might take some time, or sometimes give you some random anime, or maybe also sometimes throw an error when you choose a tones of anime For example, if you select all the genres , then obviously it would not find any anime with all the genres, so it might either give you a random anime or worst case scenireo , might throw an erroe. It works best when you select around one or two genres . Fourth Fallback Option Another update is that I have also implemented the fourth fallback option , which is Shikimori . Though I ummm didn’t really find it much reliable(returns anime very little time(╥﹏╥)), I still kept it as a fallback option in case it might come to use. Randomizing Jikan Pages And the last update for this devlog is how the anime is fetched from Jikan . So, let me tell you how it worked before. Previously, when pulling any random anime from Jikan, it used to ask for one page . The pages were based on the descending order of popular anime , so it would give me the 1st page containing popular anime. Each page contains around 25 anime , and it would pull one anime randomly from that page. and yeah , since it pulled from only that page , it would genreally revolve around those 25 popular anime. But this time, I have randomized ** the page**. So now, it isn’t limited to just the popular anime of 1st page. It could be: Page 1 — containing the most popular anime Page 10 Page 23 Page 140 Or basically any random page within the database So, instead of only getting anime from the popular pages, you can now get something from pretty much anywhere within the available database. Visual Changes And yeah, there aren’t many visual changes this time as well. The main visible change is that when you click the Select Genre option, it will display some checkboxes for the different genres . That’s pretty much it for this devlog! and yeah, If you think I did not explain anything properly, or you want some detailed explanation, then please do comment. I’ll try to explain it again there. As always, thank you so much for reading! Have a nice day! (≧▽≦)"}, {"post_id": 58080, "ts": "2026-08-30T13:03:58Z", "hours": 2.9622, "text": "Hikari Devlog #3 Hello everyone, welcome to Devlog #3 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Yeah, there are some major changes in this one. More Anime Information So, on the main page, I have added: Ratings Release Date Status Synopsis The status tells you whether the anime is finished, currently ongoing or is upcoming I have also added the synopsis , or you could say the description of the anime . API Fallback System And apart from that, I have also added Kitsu as a backup , after Jikan. Okay, so let me make it clear. I have made AniList the primary source for fetching anime. After that, if something doesn’t work, it goes to Jikan , and after Jikan, it goes to Kitsu . So right now, I have three APIs in total , and they all act as a backup for each other. I am also planning to add one more API later. (which is Shikimori) Better Image Quality And yeah, I also found out that there is an even better quality of image available.[So, the image displyed on this site will be even better then on AniSuffle =) ] From now on, I’m going to use that. Back & Forward And finally, I have also made the Back and Forward buttons functional . Now you should be able to go back and forward through the anime recommendations you have received. So you can go back to the previous anime, and then come forward again to the anime you were recommended before. That’s it for this small addition! (。•̀ᴗ-)✧ Also , if you go to the previous anime and fetch a new one then the one which was at forward will be lost. JavaScript Changes I did not make many changes to the front end this time . And by front end, I mean the layouts and stuff that are actually visible . Most of the work this time was more on the JavaScript side , which isn’t really visible from the outside. So, there might not be a huge visual difference, but quite a few things have changed behind the scenes. That’s It! So, to summarize: Three APIs , all acting as backups for each other, better image quality , more anime information, and some changes on the JavaScript side. Yeah, that’s it for this devlog! (。•̀ᴗ-)✧ If you didn’t understand anything or felt i wasnt clear enough , then please do tell me in the comments, and I’ll try to explain it again. Thank you so much for reading! Have a nice day! (≧▽≦)"}, {"post_id": 57323, "ts": "2026-08-29T13:16:29Z", "hours": 2.405, "text": "Hikari Devlog #2 Hello everyone, welcome to Devlog #2 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ So this time I did only a few changes, which are regarding the designs (especially). Capsule-like Design [for genres] I added the capsule-like design as I did previously(in AniSuffle), to the genres of the anime. Category Button I also added a Category button . When clicking on it, it will reveal the options (with a little slide left animation)for the different categories that I’ll be working on: Anime Manga Cartoons Movies Games I’ll be making a recommendation system for all of these categories later on. JavaScript Changes I didn’t do much with the JavaScript this time. The main JavaScript change was using JavaScript to turn the class on and off to show and hide the categories and yeah,thats all for this time. Layout & Poster Changes I also made some changes to the layout and the size of the poster . I used clamp() for the sizing so that the poster can adjust better i mean like depending on the screen size. And yeah, that’s pretty much it for this time! ( ̄▽ ̄)ゞ That’s It! I guess that’s it for this devlog! If anything was unclear, then please do tell me. I’ll try to make you understand it again =) Thank you so much for reading! Have a nice day! (≧▽≦)"}, {"post_id": 55433, "ts": "2026-08-27T08:07:23Z", "hours": 2.6061, "text": "Hikari Devlog #1 Hello everyone, welcome to the very first devlog of Hikari! Hikari - A recommendation site So, this project is going to be a bit bigger, yes, even bigger than AniSuffle. You can basically think of Hikari as a remake(from the scratch) + upgraded version of AniSuffle , while I will try to match the vibe of AniSuffle again here as well. For those who don’t know, AniSuffle was my previous project anime and manga recommendation website that I worked on. Unfortunately, it’s deleted now, and I can’t reuse the old code, so I’m going to build it again completely from scratch . It will probably look somewhat similar to the AniSuffle, but this time, I’m planning to widen the range of uses , not limiting only to Anime and Manga this time. Current Progress Coming to the actual update, right now, even the basic layout isn’t ready yet tbh . So far, I’ve mainly been experimenting with the design. I’ve added: [By the way the theme is going to be Glassmorphism(design credited on the GitHub Readme)] Some buttons (with design) A basic card A poster inside the card A title beside the poster That’s pretty much it for now. =D API Testing For the API, I initially tried using Jikan , but it seems to be down right now. So, I switched to AniList . I’ll also add a video showing what the site currently looks like and how it works. Multiple API Fallbacks Later on, I’m planning to use multiple APIs as fallback options . The main reason for this is that free APIs usually have limited requests , so instead of relying on a single API, I want to combine multiple available APIs and give ya all best experience as possible. For anime API, I’m currently thinking of using: Jikan AniList Kitsu Shikimori I will be adding shikimori for the first time, while i used remaining before as well. Lets see how it goes…. I’ll try to do something similar for the other types of content(manga, movie, video games, cartoons) as well. It’s Not Just Anime & Manga And this time, I’m not planning to stop at anime and manga . Hikari is going to be something much bigger. I’m planning to include: Anime Manga Movies Games Cartoons And I’ll try to add fallback APIs for all of them whenever possible. I’ve already done some research on the free APIs that are available, and I’ll talk more about them when I actually implement them into the site. So yeah, that’s pretty much it for the first Hikari devlog ! Currently, I’m using AniList , since Jikan doesn’t seem to be working right now. I’ll add a video showing the current state of the site as well. If you think anything was unclear, or I didn’t explain something properly, please do tell me in the comments. I’ll try to explain it there again. Thank you so much for reading, and have a nice day! =)"}]...
|
Title: Hikari by @PAPER_01 | Stardance
Devlogs:
H Title: Hikari by @PAPER_01 | Stardance
Devlogs:
Hikari Devlog #1 Hello everyone, welcome to the very first devlog of Hikari! Hikari - A recommendation site So, this project is going to be a bit bigger, yes, even bigger than AniSuffle. You can basically think of Hikari as a remake(from the scratch) + upgraded version of AniSuffle , while I will try to match the vibe of AniSuffle again here as well. For those who don’t know, AniSuffle was my previous project anime and manga recommendation website that I worked on. Unfortunately, it’s deleted now, and I can’t reuse the old code, so I’m going to build it again completely from scratch . It will probably look somewhat similar to the AniSuffle, but this time, I’m planning to widen the range of uses , not limiting only to Anime and Manga this time. Current Progress Coming to the actual update, right now, even the basic layout isn’t ready yet tbh . So far, I’ve mainly been experimenting with the design. I’ve added: [By the way the theme is going to be Glassmorphism(design credited on the GitHub Readme)] Some buttons (with design) A basic card A poster inside the card A title beside the poster That’s pretty much it for now. =D API Testing For the API, I initially tried using Jikan , but it seems to be down right now. So, I switched to AniList . I’ll also add a video showing what the site currently looks like and how it works. Multiple API Fallbacks Later on, I’m planning to use multiple APIs as fallback options . The main reason for this is that free APIs usually have limited requests , so instead of relying on a single API, I want to combine multiple available APIs and give ya all best experience as possible. For anime API, I’m currently thinking of using: Jikan AniList Kitsu Shikimori I will be adding shikimori for the first time, while i used remaining before as well. Lets see how it goes…. I’ll try to do something similar for the other types of content(manga, movie, video games, cartoons) as well. It’s Not Just Anime & Manga And this time, I’m not planning to stop at anime and manga . Hikari is going to be something much bigger. I’m planning to include: Anime Manga Movies Games Cartoons And I’ll try to add fallback APIs for all of them whenever possible. I’ve already done some research on the free APIs that are available, and I’ll talk more about them when I actually implement them into the site. So yeah, that’s pretty much it for the first Hikari devlog ! Currently, I’m using AniList , since Jikan doesn’t seem to be working right now. I’ll add a video showing the current state of the site as well. If you think anything was unclear, or I didn’t explain something properly, please do tell me in the comments. I’ll try to explain it there again. Thank you so much for reading, and have a nice day! =)
Hikari Devlog #2 Hello everyone, welcome to Devlog #2 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ So this time I did only a few changes, which are regarding the designs (especially). Capsule-like Design [for genres] I added the capsule-like design as I did previously(in AniSuffle), to the genres of the anime. Category Button I also added a Category button . When clicking on it, it will reveal the options (with a little slide left animation)for the different categories that I’ll be working on: Anime Manga Cartoons Movies Games I’ll be making a recommendation system for all of these categories later on. JavaScript Changes I didn’t do much with the JavaScript this time. The main JavaScript change was using JavaScript to turn the class on and off to show and hide the categories and yeah,thats all for this time. Layout & Poster Changes I also made some changes to the layout and the size of the poster . I used clamp() for the sizing so that the poster can adjust better i mean like depending on the screen size. And yeah, that’s pretty much it for this time! ( ̄▽ ̄)ゞ That’s It! I guess that’s it for this devlog! If anything was unclear, then please do tell me. I’ll try to make you understand it again =) Thank you so much for reading! Have a nice day! (≧▽≦)
Hikari Devlog #3 Hello everyone, welcome to Devlog #3 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Yeah, there are some major changes in this one. More Anime Information So, on the main page, I have added: Ratings Release Date Status Synopsis The status tells you whether the anime is finished, currently ongoing or is upcoming I have also added the synopsis , or you could say the description of the anime . API Fallback System And apart from that, I have also added Kitsu as a backup , after Jikan. Okay, so let me make it clear. I have made AniList the primary source for fetching anime. After that, if something doesn’t work, it goes to Jikan , and after Jikan, it goes to Kitsu . So right now, I have three APIs in total , and they all act as a backup for each other. I am also planning to add one more API later. (which is Shikimori) Better Image Quality And yeah, I also found out that there is an even better quality of image available.[So, the image displyed on this site will be even better then on AniSuffle =) ] From now on, I’m going to use that. Back & Forward And finally, I have also made the Back and Forward buttons functional . Now you should be able to go back and forward through the anime recommendations you have received. So you can go back to the previous anime, and then come forward again to the anime you were recommended before. That’s it for this small addition! (。•̀ᴗ-)✧ Also , if you go to the previous anime and fetch a new one then the one which was at forward will be lost. JavaScript Changes I did not make many changes to the front end this time . And by front end, I mean the layouts and stuff that are actually visible . Most of the work this time was more on the JavaScript side , which isn’t really visible from the outside. So, there might not be a huge visual difference, but quite a few things have changed behind the scenes. That’s It! So, to summarize: Three APIs , all acting as backups for each other, better image quality , more anime information, and some changes on the JavaScript side. Yeah, that’s it for this devlog! (。•̀ᴗ-)✧ If you didn’t understand anything or felt i wasnt clear enough , then please do tell me in the comments, and I’ll try to explain it again. Thank you so much for reading! Have a nice day! (≧▽≦)
Hikari Devlog #4 Hello everyone, welcome to Devlog #4 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Okay, so talking about the updates, this time I have integrated the Choose Genre filters, and other few update , i will explain it below. Choose Genre Now, while generating any random anime, you can choose or select genres on which you want the anime to be recommended. And ngl but it works best when you choose one genre (ó﹏ò。). It might take some time, or sometimes give you some random anime, or maybe also sometimes throw an error when you choose a tones of anime For example, if you select all the genres , then obviously it would not find any anime with all the genres, so it might either give you a random anime or worst case scenireo , might throw an erroe. It works best when you select around one or two genres . Fourth Fallback Option Another update is that I have also implemented the fourth fallback option , which is Shikimori . Though I ummm didn’t really find it much reliable(returns anime very little time(╥﹏╥)), I still kept it as a fallback option in case it might come to use. Randomizing Jikan Pages And the last update for this devlog is how the anime is fetched from Jikan . So, let me tell you how it worked before. Previously, when pulling any random anime from Jikan, it used to ask for one page . The pages were based on the descending order of popular anime , so it would give me the 1st page containing popular anime. Each page contains around 25 anime , and it would pull one anime randomly from that page. and yeah , since it pulled from only that page , it would genreally revolve around those 25 popular anime. But this time, I have randomized ** the page**. So now, it isn’t limited to just the popular anime of 1st page. It could be: Page 1 — containing the most popular anime Page 10 Page 23 Page 140 Or basically any random page within the database So, instead of only getting anime from the popular pages, you can now get something from pretty much anywhere within the available database. Visual Changes And yeah, there aren’t many visual changes this time as well. The main visible change is that when you click the Select Genre option, it will display some checkboxes for the different genres . That’s pretty much it for this devlog! and yeah, If you think I did not explain anything properly, or you want some detailed explanation, then please do comment. I’ll try to explain it again there. As always, thank you so much for reading! Have a nice day! (≧▽≦)
Hikari Devlog #5 Hello everyone, welcome to Devlog #5 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Okay, now talking about the updates, I have added the similar randomization to AniList and Kitsu API as well. Yeah, I mean, they work differently, but overall it is to achieve the same random result as it was applied in Jikan. You can read Devlog #4 for more info. Changes to Select Genre Another change I made was on the Select Genre is how the results are displayed . So basically, before, how it used to work was: If you selected one genre , then it would give you the correct result. But if you selected multiple genres , then it might: Give you the same anime again and again Give you some random unrelated anime Or sometimes even throw an error But yeah, there are some changes I made to this. Now, instead of showing some random unrelated anime or throwing an error, it would display something which comes within the range of your selected genres . For example, if you selected: Action Comedy Drama And if no such anime is found on the API which contains all three genres , then it would give you an anime containing Action or Comedy or Drama, or any combination of the selected genres . So yeah, it will not totally disappoint you. I mean, I felt it would be better to give you something related to what you selected. ( ̄▽ ̄)ゞ rather than something totally unrelated. Current Implementation Currently, I have applied this system only to AniList . I’ll apply it to Jikan and Kitsu soon However, I am not applying it to SukiMori , as it is not giving quite the response required to display anything. I did not comment out the whole code of SukiMori, but yeah, I am not applying the filters and stuff to SukiMori as it is throwing an error again and again, and it’s not letting me fetch any data. I tried searching for it, but I could not really fix it. So I asked AI, and it told me that it was refusing to connect and nothing can be done and something like that. So yeah, I am not writing filters for that for now. That’s It! And yeah, that’s it for this devlog, I guess. (。•̀ᴗ-)✧ If you have any questions, or if you think I did not explain anything properly, then please do tell me in the comments. I’ll try to explain it there . As always, thank you so much for reading! and Have a very nice day! (≧▽≦)
Hikari Devlog #6 Hello everyone, welcome to Devlog #6 of Hikari! (。•̀ᴗ-)✧ Manga Recommendation For this devlog, the main update I would say is the starting of the Manga Recommendation section . I have started working on the manga system now, and so far I have only implemented the AniList API for API calls for manga. In the future, I am planning to add more APIs for manga as well: MangaDex Jikan Kitsu This should give me more options for fallback APIs and hopefully make the manga recommendation system more reliable. That’s It! And yeah, I guess that’s it for this devlog. This one is kinda short, ik (ᵕ—ᴗ—), but that’s the only update I have right now. So yeah, that’s all for this devlog! And as always, if anything was unclear, then please do tell me in the comments. I’ll try to explain it there as well. Thank you so much for reading! Have a nice day! (ノ◕ヮ◕)ノ*:・゚✧
Hikari Devlog #7 Hello everyone, welcome to Devlog #7 of Hikari! (。•̀ᴗ-)✧ Manga API Fallback Okay, so talking about the updates for this devlog, I have now finally added the API fallback chain for mangas as well . I used: AniList → MangaDex → Jikan → Kitsu AniList is the primary API, then MangaDex, then Jikan, and finally Kitsu. And it seems like both MangaDex and Jikan are down . When I used them a few months before, they were active, but I don’t wonder why they all are, like, getting down and not accepting the requests. (but still i kept them on the fallback just in case if any of them come to life =) ) What’s Next? In the upcoming future, I am going to work on the genre filter for mangas in the same way i worked for the anime . I was also thinking of shipping this project after completing the Anime and Manga sections. I know it looks a bit plain right now, but I wanted to see what you all think about it. I might get some good recommendations from you guys, which I might implement. That’s It! Yeah, so I guess that’s it for this devlog. If you want me to explain anything, or if you think that I did not explain something properly, then please tell me in the comments. I’ll try to explain it again. and as always, thank you so much for reading! and Have a nice day! (ノ◕ヮ◕)ノ*:・゚✧
Hikari Devlog #8 Hello everyone, welcome to Devlog #8 of Hikari! (。•̀ᴗ-)✧ Genre Filter Talking about the updates I worked on the genre filter and applied the filter to all four APIs . And yeah, actually, that’s all for this update. What’s Next? 👀 Next, I’m looking towards updating, or like, making some visual changes Also , if everything goes right I might ship it today . As shipping after making a big project might make people not want to read all those devlogs , so um yeah That’s It! Yeah, that’s it for this devlog. And if you think that I didn’t explain something properly, or you want me to explain something more, then please do tell me in the comments. I’ll try again there. Thank you so much for reading, and have a nice day! (ノ◕ヮ◕)ノ*:・゚✧
Hikari Devlog #9 Hello everyone, welcome to Devlog #9 of Hikari! (。•̀ᴗ-)✧ Genre Options So, I added some glassmorphic , or honestly more blur-like effect , on the genre options. I will add a screenshot below What’s Next? Yeah, I guess I will work on the responsiveness of the site next. And I will remove the Cartoons, Movies, and Games options for now because I will be shipping it, and I will work on those topics later on. That’s It! Yeah, I guess that’s it. And as always, if you have any questions, please do tell me in the comments, and I’ll try my best to explain it there. Thank you so much for reading! Have a nice day! (ノ◕ヮ◕)ノ*:・゚✧
Finally Shipping Hikari Devlog #10 Hello everyone, welcome to Devlog #10 of Hikari! (。•̀ᴗ-)✧ And so, this might be the final devlog before the first ship ! Final Touches I have worked on the responsiveness and cleaned the code. I also worked on making sure(cleaning) the experimental console.log things will not be displayed in the console tab of the site. And finally, I have hosted the site ! Screenshot I’ll add a simple screenshot of the site below: If I make any changes later on, while my project is still waiting to be reviewed, I might add another screenshot to this devlog and update what was changed. Site live at : https://shrestha-project-09.66ghz.com/ And if you have any questions, please do tell me in the comments. I’ll try my best to explain it there. Thank you so much for reading, and have a nice day! (ノ◕ヮ◕)ノ*:・゚✧ Update(after the ship for reviewers) Poster as Background That’s It! Thank you so much for reading! And if you have any questions, please do tell me in the comments. I’ll try my best to explain it there. Thank you so much for reading, and have a nice day! (ノ◕ヮ◕)ノ*:・゚✧
Hikari Devlog #11 ✨ Hello everyone, welcome to Devlog #11 of Hikari! Visual Updates Talking about updates, the update is more on the visual side this time. I have added the poster as the background — the same poster which is viewed on the card, with some blur effect. I thought it was kind of cool and matches the old style of my site. (≧▽≦) 3D Card Effect Currently, I am working on making the card have a 3D-like effect . I found the source code for it on FreeFrontend.com . I will provide the link on the GitHub README, in the Credits section. That’s It! Yeah, that’s all for this devlog. I mean, I’m enjoying writing these devlogs. I wrote a couple of devlogs today and I’m still enjoying it, so I’m uploading this one as well. I thought it was good. It’s good to track the progress as well. So,That’s it for this devlog! If you want me to explain something, or if you think I did not explain something properly, then please do tell me in the comments. I’ll try my best to explain it again in the comments as well. Thank you so much for reading, and have a very nice day! (ノ◕ヮ◕)ノ*:・゚✧
Incase you are having issue playing the video, click on the video and press SPACE BAR Hikari Devlog #12 Hello everyone, welcome to Devlog #12 of Hikari! Updates So, talking about updates again, the updates are that I have added a card-like effect on the poster image . Also , I increased the size of the Hikari logo . I also added an animation of a sort of glow on the star beside the word Hikari . ⭐ I’ll add a video of it here below to show the current state of the site. What’s Next? Currently, next I’m going to work on the Movie section . Yeah, I will mention about the API which I’ll be using for movies, in the next devlog probably, if everything goes well. That’s It! And if you have any questions, then please do tell me in the comments. I will try to explain there as well. And yeah, thank you so much for reading! As always, have a very nice day . (ノ◕ヮ◕)ノ*:・゚✧
Hikari Devlog #13 Hello everyone, welcome to Devlog #13 of Hikari! Movie API Talking about the update, I used an API called TMDB on this site. Currently, I don’t have any fallback option for movies right now. Visual Updates I was also working on the card, giving it a default rectangular look . Yeah, I’m trying to match AniSuffle, my old site, and bring some of that old style into Hikari(without looking the old code obviously). What’s Next? Before including more backup APIs for movies, I think I will be working on more visual changes , the auto resize is not added on the card yet, will add that first. I’m also thinking of including streaming links , like I did before in AniSuffle. And yeah, I guess that’s it for this devlog! If you think anything was not explained properly, or if you want me to explain anything again, then please do tell me in the comments. I’ll try to explain it there as well. Thank you so much for reading, and have a very nice day! (ノ◕ヮ◕)ノ*:・゚✧
Hikari Devlog #14 ✨ Hello everyone, welcome to Devlog #14 of Hikari! Visual Updates For the updates, I have made the poster card change its size according to the poster size . So, the card will adjust itself depending on the poster instead of having the same fixed size for every poster. I also added a chibi on the bottom-left of the poster . I mean, why not? =) Just as a little signature. Just like I added in AniSuffle , though its a different chibi Streaming Links & Backend Currently, I am working on adding the streaming links , like adding the Watch Trailer option and stuff. I am also working on fixing the images not being loaded for the Movie section , especially. And after an API fails, there is no fallback right now as well, so I’m will be working on that as well. That’s It! Thank you so much for reading! And if you didn’t understand something, or you think I didn’t explain something properly, then please do tell me in the comments. I’ll try to explain it there as well. Thank you so much for reading, and have a very nice day! (ノ◕ヮ◕)ノ*:・゚✧
Hikari Devlog #15 Hello everyone, welcome to Devlog #15 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ Watch Trailer Feature So, talking about the updates… I have finally added the Watch Trailer feature! (≧▽≦) Currently, it’s only on the Anime section . Okay, so how it works is, if there is a trailer link available in the API , then it will play it on YouTube . The YouTube video will be embedded within the site, which means you don’t need to go to another tab , and you will NOT be redirected to a new tab. (。•̀ᴗ-)✧ The trailer will simply be displayed within the website itself(in the poster area) , as it is embedded. [anime trailers might be limited to certain country and because of it , some of the trailers can be unavailable, depending upon where you live] I’ll put a clip below showing working. Watch Trailer Button Currently, the Watch Trailer button has no design yet. I’m planning to work on that later. ( ̄▽ ̄)ゞ To close the trailer, you just need to click the same button again. The Watch Trailer button will change its text to Close Trailer , and you can click it to stop the trailer. (っ˘ω˘ς ) Pretty simple! TMDB Movie API Also, currently I’m working on improving the fetching method of the TMDB Movie API . Right now, it picks a random ID between 1 and 500,000 , but yeah… it misses a lot of times. I mean, it was quite visible in the previous devlog video I uploaded. (╥﹏╥) Also talking about the good luck, I just found that TMDB has a proper Discovery endpoint , which returns real and valid movies, and it has a much higher hit rate. I mean, that’s what I found. (•̀ᴗ•́)و But I’m still working on it, and I have not tested it yet . If I get any updates, I’ll update you guys in the next devlog! (。•̀ᴗ-)✧ That’s It! Thank you so much for reading! (づ。◕‿‿◕。)づ And as always, if there is any question, or you think that I didn’t explain something properly, then please do tell me in the comments. I’ll try my best to explain that as well. ( ̄▽ ̄)ゞ As always, thank you so much for reading, and have a very nice day! (ノ´ヮ`)ノ*:・゚✧
Hikari Devlog #16 Hello everyone, welcome to Devlog #16 of Hikari! (ノ◕ヮ◕)ノ*:・゚✧ TMDB Fetching Improvements So, this time I worked on improving the fetching method of the TMDB API . Previously the fetch returned empty or missed the fetch alot of time, but now its quite better. I will attach a video below showing how it works. (。•̀ᴗ-)✧ And also, I have added the OMDb API as the backup for this one. So now, if TMDB fails, OMDb can act as a fallback. Hopefully, this will make the movie recommendation system a bit more reliable. (ง •̀_•́)ง Watch Trailer Btn Design In the video, you can also see a simple design of the Watch Trailer button. I mean, it’s not exactly simple, but I thought that it looks pretty good, at least to me. But still… I spent a lot of time checking different button designs and stuff for that. I literally spent so much time on that single button . (╥﹏╥), hope ya all like that too Genre Filtering Currently, I am working on filtering the genres of the movies . This should make it easier to get recommendations based on the genres you want. (。•̀ᴗ-)✧ A Little Bug… Also, in the video, you might see that the Watch Trailer button also appeared in the Movie section . But that’s actually a bug that I need to fix. ( ̄▽ ̄;) Basically, when the anime has the Watch Trailer option, and then I switch to the movie section, the button keeps appearing there as well. I still need to figure out how to solve this one. (•́ ᴖ •̀) To show this properly, I force restarted the site in the video as well, to show that the movie doesn’t have the Watch Trailer option in that session right now. So yeah… another little bug to deal with. (╥﹏╥) That’s It! So yeah, that’s it for this devlog! If there is anything you think I didn’t explain properly, or you want me to explain something, then please do tell me in the comments. I’ll try my best to explain it there as well. ( ̄▽ ̄)ゞ As always, thank you so much for reading, and have a very nice day! (ノ´ヮ`)ノ*:・゚✧
Hikari Devlog #17 Hello everyone, welcome to Devlog #17 of Hikari! (ノ◕ヮ◕)ノ*:・゚ OMDB as TMDB Fallback The first update I would say is that I have added the OMDB API as the fallback for the TMDB API . And yeah, obviously, I use the free version , and when I was getting the API key, it told me that it can handle around 1,000 requests per day . And…, I think that should be enough for a personal project like this. And on top of that, it’s only being used as a fallback . First, the requests will be handled by TMDB , and if that fails, then only it will come to OMDb . So, 1,000 requests per day is already more than enough for a personal project like this(i guess). ( ̄▽ ̄)ゞ Movie Genre Filters Talking about the next update, I have also added the genre filters for movies . I will add a screenrecording showing it in action, I’ll attach it below. Trailer Feature for Manga And I have also added a trailer feature for manga ! Yeah, even manga have trailer features available through the AniList API , so I added it there as well. (≧▽≦) That’s It! And yeah, that’s it for this devlog! If you have any questions or want me to explain anything again, then please feel free to leave a comment. I will try my best to explain it there as well. And as always, thank you so much for reading, and have a very nice day! ✨ (ノ´ヮ`)ノ*:・゚
Hikari Devlog #18 Hello everyone, welcome to Devlog #18 of Hikari! (ノ◕ヮ◕)ノ*:・゚ Movie Trailer I just wanted to give a quick update on the Movie section . So, I finally added a trailer feature to the Movie section as well! The trailer comes from the TMDB API only , as I could not find any trailer data on OMDB API. I mean, I tried searching, but I didn’t find any trailer data on OMDB , so for now, I’m using the trailer data provided by TMDB. I’ll add a screen recording of the movie trailer in action below. [Sorry , for the lag, my laptop is kinda weak and lags even more with screen recording on] That’s It! Yeah, that’s it for this devlog! Thank you so much! (≧▽≦) And if there is any question, then please do tell me in the comments. I’ll try my best to explain it there as well. Thank you so much for reading, and have a very nice day! (ノ´ヮ`)ノ*:・゚
Hikari Devlog #19 Hello everyone, welcome to Devlog #19 of Hikari! (ノ◕ヮ◕)ノ*:・゚ Streaming Links Talking about the updates for this devlog, I have added the streaming links where you can watch the animes. Currently, I have added: Crunchyroll Netflix AnimeSuge (ㅅ´ ˘ `) How Does the Search Work? So, talking about how it searches the anime… First of all, this applies to Crunchyroll and Netflix only , because AnimeSuge isss… umm… (ó﹏ò。) not legit. But hey, it’s just for learning purposes, okay! So, for Crunchyroll and Netflix , the search works by checking the AniList API to see if a streaming link for that particular anime is available or not. If a Direct Link Is Not Available If the direct streaming link is not available in the API, then it will redirect you to that particular streaming platform by searching for the anime. This also applies to AnimeSuge , and actually it always apply to AnimeSuge as the API is never gonna have streaming link of the site for sure(ᵕ—ᴗ—) So, instead of sending you to a random page, it will search for the exact name of the anime on that platform and show you the result. For example, let’s say there is an anime called Anime A . If the streaming link for Anime A is not available in the API, then when you click on the streaming link, Hikari will search for Anime A on the streaming platform and redirect you to the search result page. Scrollbar Design I have also added a slight design to the scrollbar . I didn’t want to remove the scrollbar completely, because I thought people might actually want to scroll through and read the information. So instead of removing it, I just gave it a little design to make it look a bit better than the plain default scrollbar. It’s a small change, but I wanted to mention it since I made some changes here as well. ( ̄▽ ̄)ゞ That’s It! And yeah, that’s it for this devlog! If you have any questions, please do tell me and let me know in the comments. As always, thank you so much for reading, and have a very nice day! ✨ (ノ´ヮ`)ノ*:・゚✧
Ships:
Hikari is a recommendation site that currently uses a total of five APIs — four APIs for manga and four APIs for anime. Though some of the APIs are used in both of them. To be more precise its, AniList, Jikan, and Kitsu as they have information about both manga and anime, so they are used for both. I’m trying to make a recommendation site that recommends anime and manga for now, but I will be adding movies, games, and cartoons in the future. The main thing I’m trying to do is combine all the available APIs and give you the best experience by solving the issue of free APIs exhausting soon quickly Since I’m combining all these APIs and making them work as a fallback system , if one API fails or gets exhausted, the other can hold you back. For a more detailed explanation, please check out the README on GitHub. Thank you so much! I hope you like this =)...
|
1792875272.8060124
|
1793739272.8060124
|
|
25207
|
dnf by @robinhickmann | Stardance
|
robinhickmann
|
0
|
50.79
|
0
|
[]
|
[{"post_id": 55489, "ts": "202 [{"post_id": 55489, "ts": "2026-08-27T11:32:45Z", "hours": 49.8711, "text": "Lots of work!! It’s been a while, and I might have forgot to make a devlog. But I’ve been trying to figure everything out and make sure everything will be stable. I got a server so I can host a demo for dnf and I spent some time setting up all up, with tailscale, grafana, prometheus, loki, alloy, ect. So now I have full monitoring of everything with lots of nice dashboards, which I think will really help test and develop dnf. I also spent a bunch of time doing all the small details in terms of coding, I added: Docker Compose env Linting and Connection timeouts Full support for SOA and NS GitHub release pipeline Install script Service file Structured logging Setup dependabot Fix shutdown logic Implement EDNS and ECS Auto deploy to demo server Currently I’m working on adding TCP support to my DNS server, and adding rate-limiting to both the DNS and HTTP servers. I’m also gonna have to implement ACME in my DNS server that generates TLS certificates for the HTTP server. After that I’m gonna start working on core fingerprinting code itself and the demo site too."}, {"post_id": 15349, "ts": "2026-06-24T23:13:20Z", "hours": 0.9228, "text": "How my DNS browser fingerprinting works The idea is that different browsers fetch DNS records differently. But in order to capture all DNS traffic we have to avoid DNS caching!! To solve that we generate a new subdomain for every request, so it’s impossible to cache. Say our domain is example.com , if we generate 12 random digits (the longer the random number the less likely you are to hit collisions) , using something like base36. We can generate random IDs like 2eg2mpkwgylh or zokydwitx5pu and then we just append our domain, and we have unique DNS records. We just have to implement a DNS server where we serve the same A/AAAA/HTTPS record for anything .example.com Implementing this into a normal website All you have to do is add a script that will generate the random ID and fetch it. You can also make the returned A/AAAA/HTTPS record lead to a HTTP server that will just serve 200 if you dont want the fetch to fail. I’m ignoring all the backend systems work you’d have to do to integrate the DNS server with the rest of your stack. But that’s different for everyone so you’ll have to figure it out. Implementing this into a demo site My plan is to have a demo website with a script that will query a rest API on a randomly generated domain like mentioned above. Then the API can check the host header to return the result of the DNS queries which can then be displayed in the demo site. What I have done so far Implemented DNS server Implemented HTTP rest api Implemented some frontend demo code What I need to do DNS fingerprinting algorithm itself Way for rest api to retrieve results Rest of demo frontend code"}]...
|
Title: dnf by @robinhickmann | Stardance
Devlogs: Title: dnf by @robinhickmann | Stardance
Devlogs:
How my DNS browser fingerprinting works The idea is that different browsers fetch DNS records differently. But in order to capture all DNS traffic we have to avoid DNS caching!! To solve that we generate a new subdomain for every request, so it’s impossible to cache. Say our domain is example.com , if we generate 12 random digits (the longer the random number the less likely you are to hit collisions) , using something like base36. We can generate random IDs like 2eg2mpkwgylh or zokydwitx5pu and then we just append our domain, and we have unique DNS records. We just have to implement a DNS server where we serve the same A/AAAA/HTTPS record for anything .example.com Implementing this into a normal website All you have to do is add a script that will generate the random ID and fetch it. You can also make the returned A/AAAA/HTTPS record lead to a HTTP server that will just serve 200 if you dont want the fetch to fail. I’m ignoring all the backend systems work you’d have to do to integrate the DNS server with the rest of your stack. But that’s different for everyone so you’ll have to figure it out. Implementing this into a demo site My plan is to have a demo website with a script that will query a rest API on a randomly generated domain like mentioned above. Then the API can check the host header to return the result of the DNS queries which can then be displayed in the demo site. What I have done so far Implemented DNS server Implemented HTTP rest api Implemented some frontend demo code What I need to do DNS fingerprinting algorithm itself Way for rest api to retrieve results Rest of demo frontend code
Lots of work!! It’s been a while, and I might have forgot to make a devlog. But I’ve been trying to figure everything out and make sure everything will be stable. I got a server so I can host a demo for dnf and I spent some time setting up all up, with tailscale, grafana, prometheus, loki, alloy, ect. So now I have full monitoring of everything with lots of nice dashboards, which I think will really help test and develop dnf. I also spent a bunch of time doing all the small details in terms of coding, I added: Docker Compose env Linting and Connection timeouts Full support for SOA and NS GitHub release pipeline Install script Service file Structured logging Setup dependabot Fix shutdown logic Implement EDNS and ECS Auto deploy to demo server Currently I’m working on adding TCP support to my DNS server, and adding rate-limiting to both the DNS and HTTP servers. I’m also gonna have to implement ACME in my DNS server that generates TLS certificates for the HTTP server. After that I’m gonna start working on core fingerprinting code itself and the demo site too....
|
1792792087.3757477
|
1793396887.3757477
|
|
70863
|
DayMap by @srinivasa07 | Stardance
|
srinivasa07
|
0
|
50.77
|
0
|
[]
|
[{"post_id": 81638, "ts": "202 [{"post_id": 81638, "ts": "2026-10-21T20:57:15Z", "hours": 50.765, "text": "I actually created this project for future, so I didn’t do devlogs but anyways here is how I Used it. I spent my time working on flask router and sql db, I had to create a SQLite tables to make sure nothing gets lost if you change a browser, I had to do task management about separating (overcome, today and upcoming ) and react interface with inputs, fetching flask and state handling. Connecting every button to the flask api. Future room using several things and a timer and I hade to do all this while fixing several bugs and with less than 10% ai usage"}]...
|
Title: DayMap by @srinivasa07 | Stardance
Devlogs Title: DayMap by @srinivasa07 | Stardance
Devlogs:
I actually created this project for future, so I didn’t do devlogs but anyways here is how I Used it. I spent my time working on flask router and sql db, I had to create a SQLite tables to make sure nothing gets lost if you change a browser, I had to do task management about separating (overcome, today and upcoming ) and react interface with inputs, fetching flask and state handling. Connecting every button to the flask api. Future room using several things and a timer and I hade to do all this while fixing several bugs and with less than 10% ai usage...
|
1792619235.4223676
|
1793224035.4223676
|
|
35722
|
GBWeb by @Doodl0 | Stardance
|
Doodl0
|
0
|
50.76
|
0
|
[]
|
[{"post_id": 81110, "ts": "202 [{"post_id": 81110, "ts": "2026-10-19T22:32:59Z", "hours": 6.6672, "text": "Devlog 10 - (basically) Finishing the CPU After the last devlog, I did some cleaning up with the graphics, which included fixing the last scanline not being rendered, and also adding a screen before the ROM is loaded, telling the user which key to press to load the ROM. I also set up some functions to allow easier access to the I/O registers related to the PPU, such as the x and y scroll and the control flags. Afterwards, I felt a bit burnt out of the PPU, so I went back to finish off most of the CPU. This started with implementing the CFL, CPL, CF, CPL, SCF, SLA, SRA, RL, RLA, RLC, RRC, RLCA, and RRCA instructions, most of which are bit rotations, so once I had a few implemented, it got easier to add the rest. This allowed me to pass CPU test ROM 9. Then, I implemented the rest of the CB prefix instructions, which were all bit related; BIT, RES and SET, which allowed me to pass ROM 10 After those, I implemented some stack pointer related instructions; ADD SP,d and LD HL SP+d, which then allowed me to pass ROM 3 Finally, I added DAA. This one is a bit more unique, as it is designed to convert the result of an add or subtract with binary coded decimal numbers, into a binary coded decimal number. This gets a bit complicated, but I used these resources ( Demystifying the GameBoy/SM83’s DAA Instruction and the RGBDS assembler/linker instruction documentation ) to implement this properly, allowing me to also pass test ROM 1 With a semi-functioning PPU, and some fixes, I was also able to boot into the copyright screen of Tetris for the first time, although I couldn’t get any further without implementing interrupts. The image below shows that, and my emulator passing all of the previously mentioned test ROMs. The only test ROM I haven’t passed yet is the 2nd one, which also requires interrupts."}, {"post_id": 80353, "ts": "2026-10-17T11:17:07Z", "hours": 4.04, "text": "Devlog 9 - Basic graphics (finally) I’ve finally gotten some basic picture processing unit (PPU) functionality implemented into the emulator, which will hopefully make debugging a lot easier going forward. Firstly, to implement this, I had to move the timing logic out of cpu.c and into cycles.c . This was so that, when the loop calls a CPU step, it also calls a PPU step at the same time. I also refactored some of the cycle functions and removed the ones that were no longer being used Then, I implemented the timing code for the PPU. This part and the actual rendering were mostly based on this tutorial series that shows you how to make a GB emulator in javascript, which I based my C code on. Basically, the PPU runs on the clock as the CPU, and a ‘dot’ on the PPU is equal to a T-cycle on the CPU. The PPU renders progressively, like a CRT television, and so also has modes to move the nonexistent electron beam down and back to the start of a scanline before it continutes rendering, known as VBLANK and HBLANK, (vertical and horizontal blank). The Pan Docs were also quite helpful for understanding the basic functionality, although the tutorial was useful to understand the programmatic side. The PPU also has 2 other modes, used for scanning the Object Attribute Memory (OAM) and actually drawing, and all 4 modes have a precise amount of dots that they run for. In terms of actual rendering, the Gameboy doesn’t have a full framebuffer, and instead uses different tiles to create a full image. I implemented a function that, when the CPU writes to VRAM, also updates the data in a separate tileset variables, for easier access in the render pipeline. Each tile is 16 bytes, with 2 bits per pixel colour depth, and 8 x 8 pixels per tile. As the Gameboy renders progressively, I then implemented the function to draw a scanline to the screen, based on the tile data in the background layer. The afformentioned tutorial series helped a lot here, as the tiles need to have a specific offset and mapping applied which would be quite hard to figure out on my own. Then, that function calls a draw pixel function for each each of the 160 pixels in a scanline, which writes the corresponding colour from the palette to an SDL_Surface as the framebuffer. Once the frame is finished, the surface is converted into a texture, which is then scaled to fit the screen size and rendered, with another frame being made afterwards. Below you can see the screen of the previously mentioned blargg’s test ROM 7."}, {"post_id": 79179, "ts": "2026-10-12T22:23:50Z", "hours": 6.5228, "text": "Devlog 8 - Organisation, and timing, again Ok, so this didn’t exactly go how I wanted (again), but most of this devlog time was spent fixing the past devlog, and organising code in a better way Firstly: I realised that before, my timing code checked based on M-cycles, rather than T-cycles. There’s a specific reason for the distinction, but for now all you need to know is that there’s 4 T-cycles in an M-cycle, so my code was targeting a 4x faster speed. I changed this to be correct, but changed it again later so it doesn’t really matter. Then, I cleaned up a lot of cpu.c , changing functions to return values directly rather than using a local variable first, pre-calculating some variables, et cetera. This was an attempt to speed up the CPU, as I was having a bit of trouble meeting the target speed with debug builds (mentioned in devlog 7), but again, this was a bit pointless because I changed the way the timing worked later. While doing this, I also replaced all of the numerical types with their stdint.h counterparts; for example, an unsigned char became a Uint8 (SDL has macros for the stdint types, so they have a slight naming difference from standard C in my code). This was mainly done for specificity and some Hail Mary for performance (although fruitless), and should make the code at least a bit more portable and easy to maintain. I also implemented a couple of new instructions; RST and SWAP. RST effectively calls from a set of pre-specified addresses , and SWAP just swaps the upper and lower 8 bits in a byte, so these weren’t too hard. I also had to fix some bugs with the flags register´s value after an SBC A instruction, which admittedly did take me a while to fix because I basically banged my head against the wall to fix it. The main change in this devlog was switching the timing system (again). Previously, the CPU ran one instruction for each loop of the SDL_AppIterate function. After reading the documentation and realising that this function is supposed to run each frame, I realised that I was causing all of my speed issues by only doing one cycle per iteration. Instead, the code now does as many instructions as it can until it has run enough T-cycles for a full frame to render (70224). It then renders (to be implemented), and moves on to the next iteration. This is way more performant, and has the added benefit of being more cross-platform, as SDL specifies that sometimes AppIterate may only run at the refresh rate on some devices. Tbh, this took me a while, maybe too long, to conceptualise and implement, and basically made all of the time on the other timing system wasted, but in the end it was worth it for a much better system. You can see the uncapped FPS (in a debug build mind you) here, although when actually playing games, the framerate will be locked to around 60 FPS. Finally, there was a few more miscellaneous changes: copying a ROM file into memory uses memcpy instead of a loop, which may or may not be faster; memory is now a union of smaller arrays of memory banks, for each function, such as work ram (WRAM), high ram (HRAM), ROM banks 0-n and etc; and lastly, some register code has been moved out of cpu.c for organisation."}, {"post_id": 77175, "ts": "2026-10-05T22:31:28Z", "hours": 5.0036, "text": "Devlog 7 - Timing The next main thing I implemented were some more instructions - namely SRL, RR, RRA and ADD HL. These weren’t too hard, as the first 3 are similar to regular bit shifts, and ADD HL is just adding. While I was working on these, I also fixed some bugs with the existing instructions This allowed me to finally pass the cpu_instrs 6 test ROM, which although not really a massive goal, did help to signify the progress I had made. I then moved onto the 7th test, for which I implemented some load functions for the stack pointer register The biggest improvement of this devlog was getting everything timing correctly. The Gameboy is supposed to run at 4.19 MHz and 59.7 FPS, but at the time, the emulator was just running as fast as possible. To solve this, I first made each instruction call a function to add the amount of cycles it takes to a unwaitedCycles variable. Then, I saved the current time in nanoseconds since the program started (provided by the SDL_GetTicksNS() function) into a variable at the start of an instruction’s execution. After the instruction is executed, a function is then called that finds the expected execution time the by doing the amount of cycles multiplied by the period of 4.19MHz (about 238 nanoseconds). This expected time is then subtracted from the actual time, which is the start time stored previously subtracted from the current time. The program is then delayed by the result, which should keep the CPU at around 4.19MHz, unless it takes too long. I did have some concerns with my emulator’s performance, as when running as a debug build, it wasn’t running nearly fast enough to reach 4.19MHz, but after compiling as a release build with optimisation, it was much faster and ran under the required time. However, I’m not sure how consistent this will be between devices, so I may have to optimise later Finally, I added a similar function to limit the FPS to around 60 (technically 59.7), which just checks the time since the last frame was rendered, and if it hasn’t been long enough, it continues CPU execution and doesn’t render. You can see the frame limit working in the screenshot, where the frametime is a consistent 16.8 ms and the FPS is locked to 60, as opposed to before where it was unlimited. (Ignore the text, it doesn’t change yet to show a ROM has been loaded)"}, {"post_id": 76068, "ts": "2026-10-02T07:40:09Z", "hours": 5.4931, "text": "Devlog 6 - An unfortunate amount of debugging This devlog is probably going to be shorter than the other, simply because I haven’t done as much as I hoped The main reason for this is that I got completely stuck on a bug, and wasted so much time trying to find it. I first noticed this bug when I got this error message (screenshot) in gameboy-doctor, with a mismatch with a load from memory not being the right value. This got me so stuck, because I didn’t know where to find when the memory was supposed to be written to, so I was basically blindly guessing what was wrong with any previous loads or register writes. Eventually, I caved and asked for help online, and I got my answer after asking on the EmuDev subreddit , where I found out it was an issue with my implementation of the LD (FF00+u8), A instructions, where I wrote LD_n16_n8((0xFF00 + address + 1), registers.a); instead of the correct LD_n16_n8((0xFF00 + ReadMemory(address + 1)), registers.a); so basically any writes to memory using that function were in the complete wrong location. Stupid mistake on my part, and I wasted way too much time on it. I also did implement some basic instructions, like EI and RETI. EI simply enables the emi register, and RETI basically just does that, then calls RET to return from a subroutine. In addition, I also restructured quite a lot of the code, as too much was piling up in the cpu.c file, and I also renamed quite a few functions to follow a Component_Function syntax, so it was easier to tell where they were located in the code"}, {"post_id": 73310, "ts": "2026-09-24T20:22:22Z", "hours": 6.5411, "text": "Devlog 5 - Adding instructions, the stack and lots of debugging After the last devlog, the first think I did was implement some more instructions, namely the jump instructions, and the increment and decrement functions. Luckily these were pretty simple; all the jumps do are set the program counter (effectively the next instruction) to a specified value, and the increment and decrement are pretty self explanatory, increasing or decreasing a register or memory byte by 1; After this, I started implementing the stack. The stack is a section of memory that is ordered, with values being written to it (pushed) and read off of it (popped). You must read the “top” value, meaning the most recently pushed, which is then removed and the next highest is the next available to read. This wasn’t too hard, although I did have to introduce a new register, the stack pointer (sp). While I was at it, I also implemented load functions, which load data into a specified memory byte or register. After realising it would cause issues down the line, I walked back my previous decision to make the flags register a struct of booleans, and instead made it a single byte with 4 bits representing the 4 flags, making it more accurate. I also made some functions to easily set or reset each flag, rather than use bitwise operations everywhere. Finally, I implemented logging support, so that I could use Gameboy Doctor , a brilliant debugging script that reads a log file from your emulator with a known ROM, and compares it to the correct result. All you have to do is write a line to a log file with all the register values and some memory bytes after each instruction, and it automatically tells you where the first error is, what register or piece of memory is wrong, and even the last instruction to give you a hint as to the problem. This didn’t take much time to implement, but I did spend a considerable amount of time debugging, as previously I hadn’t actually got a way to check that my functions worked correctly (which is why this devlog has quite a few more hours on it). You can see an example of a error in the screenshot; I intentionally changed the SUB instruction to add instead because I forgot to take screenshots of the actual errors 🥀. Next time, I want to implement more of the CPU, especially more complex behaviours like halting and interrupts, and also implement some of the graphics, so that the games can actually be seen visually."}, {"post_id": 71263, "ts": "2026-09-20T15:22:40Z", "hours": 5.355, "text": "Devlog 4 - Memory mapping and instruction stepping The next thing I worked on was getting a basic function set up for stepping through instructions and calling the execute function. To do this, I also had to make a program counter, which is a 16 bit register storing the address of the next instruction. Currently, the step function is pretty barebones, but it simply calls the execute function, passes it the PC as a parameter, and then sets the program counter to be the returned address. The execute function has also been modified, meaning it reads the instruction from memory (more on that later) rather than being passed it directly, and return the address plus 1 to 3 bytes, depending on the instruction that was executed. The next bit I made was the Game Boy’s memory. This is simply an char array with 64K values, equivalent to 64KiB of memory. Then, any address can be accessed simply by accessing the array value at an address. After working on the other parts of the CPU, I went back to working on some instructions, implementing the rest of the disassembly tables , including the condition call table, which checks the flags register before executing an instruction. I also implemented some of the instructions that require inputting an address in memory to use instead of a number or register. Finally, I also worked on some quality of life features. First, I made a function to replace missing functions, which simply sends an error message with the function name, and quits with an error code. Secondly, I made / edited some functions to actually move the loaded ROM file into the main GB memory rather than the program memory. I had a little trouble troubleshooting this, as I didn’t at first have a reliable way to verify that the data had been copied successfully, and after I did, I still had trouble with pointers, as I am still pretty new to C’s manual memory management (I usually just keep things in the stack, or have global variables that will persist throughout the program’s lifetime.). I also added basic functionality for loading a ROM on desktop rather than the web, but it doesn’t use the system dialog yet, only loading a rom.gb file in the executable directory. After everything was working, I added a debug message to send the ROM’s header title, showing that it actually works. You can see this in the screenshot. It sends the message twice, once when the file is loaded, and once when it’s moved to GB memory, which I did to make sure that the transfer didn’t mess up the data accidentally."}, {"post_id": 68852, "ts": "2026-09-15T21:21:15Z", "hours": 3.9186, "text": "Devlog 3 - Algorithmically parsing opcodes After getting things functioning well in the browser, I wanted to move onto the actual emulator bit of the project. Firstly, I looked at a bunch of examples and info, mostly compiled from gbdev.io . At first, I followed both the development blog of Cinoop and the guide DMG-01 . I used these guides to first write the register struct, which is basically just a struct of bytes (in char form as I’m using C), as well as the flags register, which I took inspiration from DMG-01 by making it primarily a struct of 4 bools rather than a binary value, for easier setting. I also wrote functions for converting this into binary though so that I didn’t lose compatibility. Next, I used Decoding Gameboy Z80 Opcodes to write an algorithmic way to decide which instruction correlates to an opcode, instead of a large switch case (although admittedly it does have a lot of nested switch cases). Finally, I added in the “alu” table instructions as the first few instructions, which also happened to be quite simple as they were basically just addition, subtraction and some bitwise operations. Next, I plan to fill in the remaining instructions, add them all to the algorithm and get started on the actual control flow for the CPU"}, {"post_id": 47709, "ts": "2026-08-15T20:02:53Z", "hours": 3.5792, "text": "Devlog 2 - SDL3 and File Loading After setting up the project basics, I spent some time on another project, also using SDL, but a desktop app. This used SDL3 instead of SDL2, which is default for Emscripten. I decided to switch this project to SDL3 as well, since I feel more comfortable with it and it has some features like main callbacks that should help with Emscripten. Instead of using the SDL library bundled with Emscripten, I instead added the SDL3 repo as a submodule, so I should be able to make a desktop version of the program later relatively easily. After switching to SDL3, I researched how to load a file from the user in the web browser into the webasm program. I found a StackOverflow thread that helped a lot, which included a link to a more developed header library, however I opted not to use this, as it was C++ based, and I wanted to remain using C. Instead I just implemented the bits I needed from the thread in C, which wasn’t too hard, although included some JS, which I’ve never used and some pointers which I made a few stupid mistakes with, causing me to think it didn’t work for a while. Finally, I also added a keybind to open the file dialog, which currently is tab, and also made sure that the keys only register on the down press, and not the up as well."}, {"post_id": 29056, "ts": "2026-07-15T18:26:42Z", "hours": 3.6419, "text": "Devlog 1 - Setup and basic input I took a while to find a toolchain that I liked, but I’ve settled on using Emscripten, and it’s built in version of SDL2. Emscripten is a library and compiler for CXX that allows direct compilation to web assembly and JavaScript, also allowing graphics and input with SDL. This makes it a lot easier for me to write the program, as I don’t really need to know as much JS or find multiple different libraries to use. Originally I wanted to use SDL3, but I couldn’t get the input to work automatically with Emscripten, and with this being my first major C and web project, I decided to take the easier path and simply use the fully supported SDL2. I also spent some time setting up a simple CMake system and some scripts for building and running, which took me a while to figure out, especially as I was also learning Emscripten for the first time, however it will hopefully save me time in the long run. Just to test my implementation, I set up some keybinds for the eventual emulator to come. I just used SDL scancodes to check for the key press, and they printed the corresponding Gameboy button to the output. You can see this in the video below. For simplicity, I decided to just set keys in code, with WASD being the dpad, J being A, K being B, Return being Start and Backspace being select."}]...
|
Title: GBWeb by @Doodl0 | Stardance
Devlogs:
Devl Title: GBWeb by @Doodl0 | Stardance
Devlogs:
Devlog 1 - Setup and basic input I took a while to find a toolchain that I liked, but I’ve settled on using Emscripten, and it’s built in version of SDL2. Emscripten is a library and compiler for CXX that allows direct compilation to web assembly and JavaScript, also allowing graphics and input with SDL. This makes it a lot easier for me to write the program, as I don’t really need to know as much JS or find multiple different libraries to use. Originally I wanted to use SDL3, but I couldn’t get the input to work automatically with Emscripten, and with this being my first major C and web project, I decided to take the easier path and simply use the fully supported SDL2. I also spent some time setting up a simple CMake system and some scripts for building and running, which took me a while to figure out, especially as I was also learning Emscripten for the first time, however it will hopefully save me time in the long run. Just to test my implementation, I set up some keybinds for the eventual emulator to come. I just used SDL scancodes to check for the key press, and they printed the corresponding Gameboy button to the output. You can see this in the video below. For simplicity, I decided to just set keys in code, with WASD being the dpad, J being A, K being B, Return being Start and Backspace being select.
Devlog 2 - SDL3 and File Loading After setting up the project basics, I spent some time on another project, also using SDL, but a desktop app. This used SDL3 instead of SDL2, which is default for Emscripten. I decided to switch this project to SDL3 as well, since I feel more comfortable with it and it has some features like main callbacks that should help with Emscripten. Instead of using the SDL library bundled with Emscripten, I instead added the SDL3 repo as a submodule, so I should be able to make a desktop version of the program later relatively easily. After switching to SDL3, I researched how to load a file from the user in the web browser into the webasm program. I found a StackOverflow thread that helped a lot, which included a link to a more developed header library, however I opted not to use this, as it was C++ based, and I wanted to remain using C. Instead I just implemented the bits I needed from the thread in C, which wasn’t too hard, although included some JS, which I’ve never used and some pointers which I made a few stupid mistakes with, causing me to think it didn’t work for a while. Finally, I also added a keybind to open the file dialog, which currently is tab, and also made sure that the keys only register on the down press, and not the up as well.
Devlog 3 - Algorithmically parsing opcodes After getting things functioning well in the browser, I wanted to move onto the actual emulator bit of the project. Firstly, I looked at a bunch of examples and info, mostly compiled from gbdev.io . At first, I followed both the development blog of Cinoop and the guide DMG-01 . I used these guides to first write the register struct, which is basically just a struct of bytes (in char form as I’m using C), as well as the flags register, which I took inspiration from DMG-01 by making it primarily a struct of 4 bools rather than a binary value, for easier setting. I also wrote functions for converting this into binary though so that I didn’t lose compatibility. Next, I used Decoding Gameboy Z80 Opcodes to write an algorithmic way to decide which instruction correlates to an opcode, instead of a large switch case (although admittedly it does have a lot of nested switch cases). Finally, I added in the “alu” table instructions as the first few instructions, which also happened to be quite simple as they were basically just addition, subtraction and some bitwise operations. Next, I plan to fill in the remaining instructions, add them all to the algorithm and get started on the actual control flow for the CPU
Devlog 4 - Memory mapping and instruction stepping The next thing I worked on was getting a basic function set up for stepping through instructions and calling the execute function. To do this, I also had to make a program counter, which is a 16 bit register storing the address of the next instruction. Currently, the step function is pretty barebones, but it simply calls the execute function, passes it the PC as a parameter, and then sets the program counter to be the returned address. The execute function has also been modified, meaning it reads the instruction from memory (more on that later) rather than being passed it directly, and return the address plus 1 to 3 bytes, depending on the instruction that was executed. The next bit I made was the Game Boy’s memory. This is simply an char array with 64K values, equivalent to 64KiB of memory. Then, any address can be accessed simply by accessing the array value at an address. After working on the other parts of the CPU, I went back to working on some instructions, implementing the rest of the disassembly tables , including the condition call table, which checks the flags register before executing an instruction. I also implemented some of the instructions that require inputting an address in memory to use instead of a number or register. Finally, I also worked on some quality of life features. First, I made a function to replace missing functions, which simply sends an error message with the function name, and quits with an error code. Secondly, I made / edited some functions to actually move the loaded ROM file into the main GB memory rather than the program memory. I had a little trouble troubleshooting this, as I didn’t at first have a reliable way to verify that the data had been copied successfully, and after I did, I still had trouble with pointers, as I am still pretty new to C’s manual memory management (I usually just keep things in the stack, or have global variables that will persist throughout the program’s lifetime.). I also added basic functionality for loading a ROM on desktop rather than the web, but it doesn’t use the system dialog yet, only loading a rom.gb file in the executable directory. After everything was working, I added a debug message to send the ROM’s header title, showing that it actually works. You can see this in the screenshot. It sends the message twice, once when the file is loaded, and once when it’s moved to GB memory, which I did to make sure that the transfer didn’t mess up the data accidentally.
Devlog 5 - Adding instructions, the stack and lots of debugging After the last devlog, the first think I did was implement some more instructions, namely the jump instructions, and the increment and decrement functions. Luckily these were pretty simple; all the jumps do are set the program counter (effectively the next instruction) to a specified value, and the increment and decrement are pretty self explanatory, increasing or decreasing a register or memory byte by 1; After this, I started implementing the stack. The stack is a section of memory that is ordered, with values being written to it (pushed) and read off of it (popped). You must read the “top” value, meaning the most recently pushed, which is then removed and the next highest is the next available to read. This wasn’t too hard, although I did have to introduce a new register, the stack pointer (sp). While I was at it, I also implemented load functions, which load data into a specified memory byte or register. After realising it would cause issues down the line, I walked back my previous decision to make the flags register a struct of booleans, and instead made it a single byte with 4 bits representing the 4 flags, making it more accurate. I also made some functions to easily set or reset each flag, rather than use bitwise operations everywhere. Finally, I implemented logging support, so that I could use Gameboy Doctor , a brilliant debugging script that reads a log file from your emulator with a known ROM, and compares it to the correct result. All you have to do is write a line to a log file with all the register values and some memory bytes after each instruction, and it automatically tells you where the first error is, what register or piece of memory is wrong, and even the last instruction to give you a hint as to the problem. This didn’t take much time to implement, but I did spend a considerable amount of time debugging, as previously I hadn’t actually got a way to check that my functions worked correctly (which is why this devlog has quite a few more hours on it). You can see an example of a error in the screenshot; I intentionally changed the SUB instruction to add instead because I forgot to take screenshots of the actual errors 🥀. Next time, I want to implement more of the CPU, especially more complex behaviours like halting and interrupts, and also implement some of the graphics, so that the games can actually be seen visually.
Devlog 6 - An unfortunate amount of debugging This devlog is probably going to be shorter than the other, simply because I haven’t done as much as I hoped The main reason for this is that I got completely stuck on a bug, and wasted so much time trying to find it. I first noticed this bug when I got this error message (screenshot) in gameboy-doctor, with a mismatch with a load from memory not being the right value. This got me so stuck, because I didn’t know where to find when the memory was supposed to be written to, so I was basically blindly guessing what was wrong with any previous loads or register writes. Eventually, I caved and asked for help online, and I got my answer after asking on the EmuDev subreddit , where I found out it was an issue with my implementation of the LD (FF00+u8), A instructions, where I wrote LD_n16_n8((0xFF00 + address + 1), registers.a); instead of the correct LD_n16_n8((0xFF00 + ReadMemory(address + 1)), registers.a); so basically any writes to memory using that function were in the complete wrong location. Stupid mistake on my part, and I wasted way too much time on it. I also did implement some basic instructions, like EI and RETI. EI simply enables the emi register, and RETI basically just does that, then calls RET to return from a subroutine. In addition, I also restructured quite a lot of the code, as too much was piling up in the cpu.c file, and I also renamed quite a few functions to follow a Component_Function syntax, so it was easier to tell where they were located in the code
Devlog 7 - Timing The next main thing I implemented were some more instructions - namely SRL, RR, RRA and ADD HL. These weren’t too hard, as the first 3 are similar to regular bit shifts, and ADD HL is just adding. While I was working on these, I also fixed some bugs with the existing instructions This allowed me to finally pass the cpu_instrs 6 test ROM, which although not really a massive goal, did help to signify the progress I had made. I then moved onto the 7th test, for which I implemented some load functions for the stack pointer register The biggest improvement of this devlog was getting everything timing correctly. The Gameboy is supposed to run at 4.19 MHz and 59.7 FPS, but at the time, the emulator was just running as fast as possible. To solve this, I first made each instruction call a function to add the amount of cycles it takes to a unwaitedCycles variable. Then, I saved the current time in nanoseconds since the program started (provided by the SDL_GetTicksNS() function) into a variable at the start of an instruction’s execution. After the instruction is executed, a function is then called that finds the expected execution time the by doing the amount of cycles multiplied by the period of 4.19MHz (about 238 nanoseconds). This expected time is then subtracted from the actual time, which is the start time stored previously subtracted from the current time. The program is then delayed by the result, which should keep the CPU at around 4.19MHz, unless it takes too long. I did have some concerns with my emulator’s performance, as when running as a debug build, it wasn’t running nearly fast enough to reach 4.19MHz, but after compiling as a release build with optimisation, it was much faster and ran under the required time. However, I’m not sure how consistent this will be between devices, so I may have to optimise later Finally, I added a similar function to limit the FPS to around 60 (technically 59.7), which just checks the time since the last frame was rendered, and if it hasn’t been long enough, it continues CPU execution and doesn’t render. You can see the frame limit working in the screenshot, where the frametime is a consistent 16.8 ms and the FPS is locked to 60, as opposed to before where it was unlimited. (Ignore the text, it doesn’t change yet to show a ROM has been loaded)
Devlog 8 - Organisation, and timing, again Ok, so this didn’t exactly go how I wanted (again), but most of this devlog time was spent fixing the past devlog, and organising code in a better way Firstly: I realised that before, my timing code checked based on M-cycles, rather than T-cycles. There’s a specific reason for the distinction, but for now all you need to know is that there’s 4 T-cycles in an M-cycle, so my code was targeting a 4x faster speed. I changed this to be correct, but changed it again later so it doesn’t really matter. Then, I cleaned up a lot of cpu.c , changing functions to return values directly rather than using a local variable first, pre-calculating some variables, et cetera. This was an attempt to speed up the CPU, as I was having a bit of trouble meeting the target speed with debug builds (mentioned in devlog 7), but again, this was a bit pointless because I changed the way the timing worked later. While doing this, I also replaced all of the numerical types with their stdint.h counterparts; for example, an unsigned char became a Uint8 (SDL has macros for the stdint types, so they have a slight naming difference from standard C in my code). This was mainly done for specificity and some Hail Mary for performance (although fruitless), and should make the code at least a bit more portable and easy to maintain. I also implemented a couple of new instructions; RST and SWAP. RST effectively calls from a set of pre-specified addresses , and SWAP just swaps the upper and lower 8 bits in a byte, so these weren’t too hard. I also had to fix some bugs with the flags register´s value after an SBC A instruction, which admittedly did take me a while to fix because I basically banged my head against the wall to fix it. The main change in this devlog was switching the timing system (again). Previously, the CPU ran one instruction for each loop of the SDL_AppIterate function. After reading the documentation and realising that this function is supposed to run each frame, I realised that I was causing all of my speed issues by only doing one cycle per iteration. Instead, the code now does as many instructions as it can until it has run enough T-cycles for a full frame to render (70224). It then renders (to be implemented), and moves on to the next iteration. This is way more performant, and has the added benefit of being more cross-platform, as SDL specifies that sometimes AppIterate may only run at the refresh rate on some devices. Tbh, this took me a while, maybe too long, to conceptualise and implement, and basically made all of the time on the other timing system wasted, but in the end it was worth it for a much better system. You can see the uncapped FPS (in a debug build mind you) here, although when actually playing games, the framerate will be locked to around 60 FPS. Finally, there was a few more miscellaneous changes: copying a ROM file into memory uses memcpy instead of a loop, which may or may not be faster; memory is now a union of smaller arrays of memory banks, for each function, such as work ram (WRAM), high ram (HRAM), ROM banks 0-n and etc; and lastly, some register code has been moved out of cpu.c for organisation.
Devlog 9 - Basic graphics (finally) I’ve finally gotten some basic picture processing unit (PPU) functionality implemented into the emulator, which will hopefully make debugging a lot easier going forward. Firstly, to implement this, I had to move the timing logic out of cpu.c and into cycles.c . This was so that, when the loop calls a CPU step, it also calls a PPU step at the same time. I also refactored some of the cycle functions and removed the ones that were no longer being used Then, I implemented the timing code for the PPU. This part and the actual rendering were mostly based on this tutorial series that shows you how to make a GB emulator in javascript, which I based my C code on. Basically, the PPU runs on the clock as the CPU, and a ‘dot’ on the PPU is equal to a T-cycle on the CPU. The PPU renders progressively, like a CRT television, and so also has modes to move the nonexistent electron beam down and back to the start of a scanline before it continutes rendering, known as VBLANK and HBLANK, (vertical and horizontal blank). The Pan Docs were also quite helpful for understanding the basic functionality, although the tutorial was useful to understand the programmatic side. The PPU also has 2 other modes, used for scanning the Object Attribute Memory (OAM) and actually drawing, and all 4 modes have a precise amount of dots that they run for. In terms of actual rendering, the Gameboy doesn’t have a full framebuffer, and instead uses different tiles to create a full image. I implemented a function that, when the CPU writes to VRAM, also updates the data in a separate tileset variables, for easier access in the render pipeline. Each tile is 16 bytes, with 2 bits per pixel colour depth, and 8 x 8 pixels per tile. As the Gameboy renders progressively, I then implemented the function to draw a scanline to the screen, based on the tile data in the background layer. The afformentioned tutorial series helped a lot here, as the tiles need to have a specific offset and mapping applied which would be quite hard to figure out on my own. Then, that function calls a draw pixel function for each each of the 160 pixels in a scanline, which writes the corresponding colour from the palette to an SDL_Surface as the framebuffer. Once the frame is finished, the surface is converted into a texture, which is then scaled to fit the screen size and rendered, with another frame being made afterwards. Below you can see the screen of the previously mentioned blargg’s test ROM 7.
Devlog 10 - (basically) Finishing the CPU After the last devlog, I did some cleaning up with the graphics, which included fixing the last scanline not being rendered, and also adding a screen before the ROM is loaded, telling the user which key to press to load the ROM. I also set up some functions to allow easier access to the I/O registers related to the PPU, such as the x and y scroll and the control flags. Afterwards, I felt a bit burnt out of the PPU, so I went back to finish off most of the CPU. This started with implementing the CFL, CPL, CF, CPL, SCF, SLA, SRA, RL, RLA, RLC, RRC, RLCA, and RRCA instructions, most of which are bit rotations, so once I had a few implemented, it got easier to add the rest. This allowed me to pass CPU test ROM 9. Then, I implemented the rest of the CB prefix instructions, which were all bit related; BIT, RES and SET, which allowed me to pass ROM 10 After those, I implemented some stack pointer related instructions; ADD SP,d and LD HL SP+d, which then allowed me to pass ROM 3 Finally, I added DAA. This one is a bit more unique, as it is designed to convert the result of an add or subtract with binary coded decimal numbers, into a binary coded decimal number. This gets a bit complicated, but I used these resources ( Demystifying the GameBoy/SM83’s DAA Instruction and the RGBDS assembler/linker instruction documentation ) to implement this properly, allowing me to also pass test ROM 1 With a semi-functioning PPU, and some fixes, I was also able to boot into the copyright screen of Tetris for the first time, although I couldn’t get any further without implementing interrupts. The image below shows that, and my emulator passing all of the previously mentioned test ROMs. The only test ROM I haven’t passed yet is the 2nd one, which also requires interrupts....
|
1792587169.3497012
|
1793191969.3497012
|
|
58373
|
FTC bot by @AlejandroD | Stardance
|
AlejandroD
|
0
|
50.56
|
0
|
[]
|
[{"post_id": 73975, "ts": "202 [{"post_id": 73975, "ts": "2026-09-26T13:10:45Z", "hours": 20.8475, "text": "Made a Super Class to contain all the stuff needed for hardware setup and repeated calculations"}, {"post_id": 68413, "ts": "2026-09-15T02:22:26Z", "hours": 14.9567, "text": "Fixed a ton of limelight stuff that got wrecked by non-static AprilTags being revealed here was the fix i had"}, {"post_id": 64562, "ts": "2026-09-09T02:16:09Z", "hours": 14.7553, "text": "First Devlog ig the most recent stuff I did was that I added an automatac telemetry function for odometry and limelight"}]...
|
Title: FTC bot by @AlejandroD | Stardance
Devlogs Title: FTC bot by @AlejandroD | Stardance
Devlogs:
First Devlog ig the most recent stuff I did was that I added an automatac telemetry function for odometry and limelight
Fixed a ton of limelight stuff that got wrecked by non-static AprilTags being revealed here was the fix i had
Made a Super Class to contain all the stuff needed for hardware setup and repeated calculations...
|
1792748954.451389
|
1793353754.451389
|
|
58407
|
Tempo by @No1Michael | Stardance
|
No1Michael
|
2
|
50.53
|
587
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T11:48:23Z", "hours": 31.0, "multiplier": 13.83, "payout": 426, "blessing": "neutral", "text": "Tempo is now new and improved! Please tell me any feedback/changes/features you would like to see! Here are the changes from the last ship: WebMCP tutorial: Many people had a hard time using the demo on chrome since they didn’t know how to enable WebMCP on chrome, so now theres a tutorial Tempo Spotlight Onboarding: Spotlight onboarding since some people didn’t know there was also the core calendar functionality as well as the Webmcp avaiable. New WebMCP commands: Thank you do the person who said to add a command which could push/reschedule consecutive events I think that’s very smart. I also added a command which checks for the next avaible free time of a certain length as well. Small UI Changes which makes it more obvious that the agent panel doesn’t have to be there.", "repo": "https://github.com/wamichae1/Tempo-v2", "demo": "https://wamichae1.github.io/Tempo-v2/"}, {"ship_num": 2, "ts": "2026-09-07T00:26:05Z", "hours": 16.0, "multiplier": 10.22, "payout": 161, "blessing": "neutral", "text": "Tempo DEMO! Hope you find it useful. Enable WebMCP on chrome and upload an api key, or use Codex’s in app broswer or any other compatible agent! PS: if you’re a student and just got a stupid photo for your timetable, Tempo is perfect tool to turn that photo into a calendar which you can upload to Google calendar or any other calendar app which is ics compatible!", "repo": "https://github.com/wamichae1/Tempo-v2", "demo": "https://wamichae1.github.io/Tempo-v2/"}]...
|
[{"post_id": 65157, "ts": "202 [{"post_id": 65157, "ts": "2026-09-10T03:12:10Z", "hours": 3.5311, "text": "Another feature I’m currently working on is having a preview after importing an ICS file. It would show conflicts with current scheduling and information and count of events imported"}, {"post_id": 64735, "ts": "2026-09-09T11:21:36Z", "hours": 8.7233, "text": "I think tempo is ready to be shipped again! Here are the new changes: WebMCP tutorial: Many people had a hard time using the demo on chrome since they didn’t know how to enable WebMCP on chrome, so now theres a tutorial Tempo Spotlight Onboarding: Spotlight onboarding since some people didn’t know there was also the core calendar functionality as well as the Webmcp avaiable. New WebMCP commands: Thank you do the person who said to add a command which could push/reschedule consecutive events I think that’s very smart. I also added a command which checks for the next avaible free time of a certain length as well."}, {"post_id": 64428, "ts": "2026-09-08T20:00:46Z", "hours": 8.0519, "text": "Tempo can now push many consecutive events together through the new command tempo_push_events! Thank to whoever suggested this since this is a great change. Im also working on tempo_find_free_time which would find the most recent free time of a certain length"}, {"post_id": 64159, "ts": "2026-09-08T11:36:26Z", "hours": 8.9569, "text": "I think the fact that Tempo a calendar usable with ai has obscured the fact that its also a normal working calendar. The spotlight guide/tutorial of core functionality is now finally fixed!"}, {"post_id": 63983, "ts": "2026-09-08T02:29:14Z", "hours": 2.1128, "text": "Thank you so much for all your feedback! The tutorial is now implement on how to enabled WebMCP for Chrome, and also a general onboarding tutorial!"}, {"post_id": 63892, "ts": "2026-09-07T22:18:50Z", "hours": 2.5567, "text": "Theres now a tutorial for how to enable WebMCP and how to use your own API key! Thank you so much for the feedback many more improvements coming soon!"}, {"post_id": 63587, "ts": "2026-09-07T14:44:40Z", "hours": 0.375, "text": "Revised the Readme to the current project state! I hope to add more features such as speech to text to make it even better!"}, {"post_id": 63266, "ts": "2026-09-07T00:22:54Z", "hours": 1.1814, "text": "after implementing a feature, theres always something that goes wrong. after rewriting workflows, testing in the browser on different screen sizes, i’m finally satisfied with the changes!"}, {"post_id": 63235, "ts": "2026-09-06T22:38:29Z", "hours": 1.6036, "text": "The demo is now working! Chrome has WebMCP turned off by default, so either turn it on or use an in app browser like the Codex Browser to access WebMCP capabilities!"}, {"post_id": 63165, "ts": "2026-09-06T20:22:22Z", "hours": 2.8614, "text": "Finally! Tempo now works with OpenRouter, Gemini, and OpenAI. I’m still figuring out how imma do Nvidia NIM since Tempo currently runs without backend :/"}, {"post_id": 62926, "ts": "2026-09-06T13:53:24Z", "hours": 6.7303, "text": "Tempo’s BYO Api Key now has OpenAI available. Other providers such as Opencode, OpenRouter and Nvidia NIM will be available soon!"}, {"post_id": 62605, "ts": "2026-09-06T02:24:28Z", "hours": 2.2903, "text": "Tempo currently is good, but I think I know what would make it great! Adding BYO Api Key and Speech to text would make this even better to use!"}, {"post_id": 61918, "ts": "2026-09-05T02:49:11Z", "hours": 1.0983, "text": "With OpenAI WebMCP challenge wrapped up, Tempo’s first demo is ready!"}]...
|
Title: Tempo by @No1Michael | Stardance
Devlogs:
Title: Tempo by @No1Michael | Stardance
Devlogs:
With OpenAI WebMCP challenge wrapped up, Tempo’s first demo is ready!
Tempo currently is good, but I think I know what would make it great! Adding BYO Api Key and Speech to text would make this even better to use!
Tempo’s BYO Api Key now has OpenAI available. Other providers such as Opencode, OpenRouter and Nvidia NIM will be available soon!
Finally! Tempo now works with OpenRouter, Gemini, and OpenAI. I’m still figuring out how imma do Nvidia NIM since Tempo currently runs without backend :/
The demo is now working! Chrome has WebMCP turned off by default, so either turn it on or use an in app browser like the Codex Browser to access WebMCP capabilities!
after implementing a feature, theres always something that goes wrong. after rewriting workflows, testing in the browser on different screen sizes, i’m finally satisfied with the changes!
Revised the Readme to the current project state! I hope to add more features such as speech to text to make it even better!
Theres now a tutorial for how to enable WebMCP and how to use your own API key! Thank you so much for the feedback many more improvements coming soon!
Thank you so much for all your feedback! The tutorial is now implement on how to enabled WebMCP for Chrome, and also a general onboarding tutorial!
I think the fact that Tempo a calendar usable with ai has obscured the fact that its also a normal working calendar. The spotlight guide/tutorial of core functionality is now finally fixed!
Tempo can now push many consecutive events together through the new command tempo_push_events! Thank to whoever suggested this since this is a great change. Im also working on tempo_find_free_time which would find the most recent free time of a certain length
I think tempo is ready to be shipped again! Here are the new changes: WebMCP tutorial: Many people had a hard time using the demo on chrome since they didn’t know how to enable WebMCP on chrome, so now theres a tutorial Tempo Spotlight Onboarding: Spotlight onboarding since some people didn’t know there was also the core calendar functionality as well as the Webmcp avaiable. New WebMCP commands: Thank you do the person who said to add a command which could push/reschedule consecutive events I think that’s very smart. I also added a command which checks for the next avaible free time of a certain length as well.
Another feature I’m currently working on is having a preview after importing an ICS file. It would show conflicts with current scheduling and information and count of events imported
Ships:
Tempo DEMO! Hope you find it useful. Enable WebMCP on chrome and upload an api key, or use Codex’s in app broswer or any other compatible agent! PS: if you’re a student and just got a stupid photo for your timetable, Tempo is perfect tool to turn that photo into a calendar which you can upload to Google calendar or any other calendar app which is ics compatible!
Tempo is now new and improved! Please tell me any feedback/changes/features you would like to see! Here are the changes from the last ship: WebMCP tutorial: Many people had a hard time using the demo on chrome since they didn’t know how to enable WebMCP on chrome, so now theres a tutorial Tempo Spotlight Onboarding: Spotlight onboarding since some people didn’t know there was also the core calendar functionality as well as the Webmcp avaiable. New WebMCP commands: Thank you do the person who said to add a command which could push/reschedule consecutive events I think that’s very smart. I also added a command which checks for the next avaible free time of a certain length as well. Small UI Changes which makes it more obvious that the agent panel doesn’t have to be there....
|
1792875228.6328158
|
1793739228.6328158
|
|
7249
|
Asphalt Dreams by @Rivaan | Stardance
|
Rivaan
|
0
|
50.44
|
0
|
[]
|
[{"post_id": 24676, "ts": "202 [{"post_id": 24676, "ts": "2026-07-08T12:56:56Z", "hours": 8.1364, "text": "Finally , Now I have a basic gameplay What Completed- Basic Boost system Basic health system Basic Score and Speed System Basic GPU Particles System Basic Traffic Manager with lots of bugs 😂 Health perk spawning What Next- 🌎 Phase 3: Content Like:- Desert Highway City Snow Forest Night Then More traffic vehicles More player cars Better sounds Different traffic densities"}, {"post_id": 20054, "ts": "2026-07-01T15:44:40Z", "hours": 10.8797, "text": "Asphalt Dreams is now in Pre-Alpha! I’m happy to finally share the current progress of my solo indie racing project. So far, the game includes: • 10+ drivable vehicles • 3+ environments • AI traffic • Vehicle customization (work in progress) There’s still a lot to improve, but reaching this milestone feels amazing. I’d love to hear your feedback and suggestions! Discord: https://discord.com/invite/e2cChdUGAv"}, {"post_id": 14905, "ts": "2026-06-24T06:18:51Z", "hours": 22.8467, "text": "Asphalt Dreams - Devlog #3 🚗💨 Added a new desert environment, traffic vehicles, car customization, and a bunch of optimization work. The roads finally feel alive now instead of looking like empty test scenes 😂😂. Seeing traffic drive around while speeding through the desert is starting to feel like the game I originally imagined. Performance has also improved quite a bit, reaching around 300 FPS on my Ryzen 3 3200G while driving through traffic. I also changed the player car from white to black, which gives it much better contrast against the bright desert environment. Still a long way to go, but I’m happy with the progress so far. And yes, it’s been a while since my last post— I was busy working on the game 😂 Next UpMore environmentsSmarter traffic behavior More polish and world details Main menu and UI improvements Connect With Me LinkedIn: https://www.linkedin.com/in/rivaanmaurya/ Discord Community: https://discord.gg/BnKWASD8R"}, {"post_id": 7995, "ts": "2026-06-13T10:30:01Z", "hours": 4.4208, "text": "Asphalt Dreams - Devlog #2 Today I replaced the sample car with my own car model and somehow it works 😂 At first everything was broken. Sometimes the car got stuck, sometimes it didn’t update, and sometimes it just decided not to work at all. I spent way too long trying to fix all of that. After finally getting it working, I improved the 3D speedometer, cleaned up some code, and started working on a way to switch between different environments while driving. This update was honestly a pain 😆 but seeing it all come together feels really good. The game is finally starting to look more like what I imagined when I started making it. btw 230 to 250 FPS on Ryzen 3 3200G 😊"}, {"post_id": 6192, "ts": "2026-06-10T12:21:11Z", "hours": 4.1542, "text": "🚗 Asphalt Dreams – Devlog #1 Today was my first day working on Asphalt Dreams, and I finally got a prototype running! 😆 Right now the game is super basic 😂. I only have a car that can move, a camera, a speedometer, and some random environment stuff to test everything. I also added a helicopter propeller to the map because it looked cool and the world felt a bit empty 😅. The car controls work, but they still feel a little weird and need more fixing. The speedometer also has a few problems that I need to figure out. Most of today was spent changing settings, breaking things, fixing things, and then breaking something else again 😂. Things that work: Car controls Third-person camera Speedometer Basic environment Prototype road Helicopter propeller 😎 Next things to do: Make the car feel better Fix speedometer bugs Improve the environment Add different road types Add sounds It’s not much yet, but seeing the car drive around for the first time made me really happy 😄. See you in Devlog #2! 🥳"}]...
|
Title: Asphalt Dreams by @Rivaan | Stardance
Devl Title: Asphalt Dreams by @Rivaan | Stardance
Devlogs:
🚗 Asphalt Dreams – Devlog #1 Today was my first day working on Asphalt Dreams, and I finally got a prototype running! 😆 Right now the game is super basic 😂. I only have a car that can move, a camera, a speedometer, and some random environment stuff to test everything. I also added a helicopter propeller to the map because it looked cool and the world felt a bit empty 😅. The car controls work, but they still feel a little weird and need more fixing. The speedometer also has a few problems that I need to figure out. Most of today was spent changing settings, breaking things, fixing things, and then breaking something else again 😂. Things that work: Car controls Third-person camera Speedometer Basic environment Prototype road Helicopter propeller 😎 Next things to do: Make the car feel better Fix speedometer bugs Improve the environment Add different road types Add sounds It’s not much yet, but seeing the car drive around for the first time made me really happy 😄. See you in Devlog #2! 🥳
Asphalt Dreams - Devlog #2 Today I replaced the sample car with my own car model and somehow it works 😂 At first everything was broken. Sometimes the car got stuck, sometimes it didn’t update, and sometimes it just decided not to work at all. I spent way too long trying to fix all of that. After finally getting it working, I improved the 3D speedometer, cleaned up some code, and started working on a way to switch between different environments while driving. This update was honestly a pain 😆 but seeing it all come together feels really good. The game is finally starting to look more like what I imagined when I started making it. btw 230 to 250 FPS on Ryzen 3 3200G 😊
Asphalt Dreams - Devlog #3 🚗💨 Added a new desert environment, traffic vehicles, car customization, and a bunch of optimization work. The roads finally feel alive now instead of looking like empty test scenes 😂😂. Seeing traffic drive around while speeding through the desert is starting to feel like the game I originally imagined. Performance has also improved quite a bit, reaching around 300 FPS on my Ryzen 3 3200G while driving through traffic. I also changed the player car from white to black, which gives it much better contrast against the bright desert environment. Still a long way to go, but I’m happy with the progress so far. And yes, it’s been a while since my last post— I was busy working on the game 😂 Next UpMore environmentsSmarter traffic behavior More polish and world details Main menu and UI improvements Connect With Me LinkedIn: https://www.linkedin.com/in/rivaanmaurya/ Discord Community: https://discord.gg/BnKWASD8R
Asphalt Dreams is now in Pre-Alpha! I’m happy to finally share the current progress of my solo indie racing project. So far, the game includes: • 10+ drivable vehicles • 3+ environments • AI traffic • Vehicle customization (work in progress) There’s still a lot to improve, but reaching this milestone feels amazing. I’d love to hear your feedback and suggestions! Discord: https://discord.com/invite/e2cChdUGAv
Finally , Now I have a basic gameplay What Completed- Basic Boost system Basic health system Basic Score and Speed System Basic GPU Particles System Basic Traffic Manager with lots of bugs 😂 Health perk spawning What Next- 🌎 Phase 3: Content Like:- Desert Highway City Snow Forest Night Then More traffic vehicles More player cars Better sounds Different traffic densities...
|
1792655478.4557457
|
1793260278.4557457
|
|
24819
|
cmdRelay by @ashish-raj-singh | Stardance
|
ashish-raj-singh
|
1
|
50.38
|
875
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-29T20:32:01Z", "hours": 49.0, "multiplier": 18.02, "payout": 875, "blessing": "neutral", "text": "cmdRelay I built a cross-platform PC remote control and macro engine using Rust, Tauri, and React. It pairs your mobile device to your desktop via WebSockets on your local network, executes system-level operations and custom macros with zero noticeable latency. I have added some pre-loaded with layouts for VS Code, Photoshop, Media Controls, and Presentations there is also a Layout Settings option to edit and create your own custom control decks. What was challenging? Fighting the operating systems to make them behave! Cross platform I have worked with C++, so the core Rust WebSocket server was fun, but true cross-platform compatibility was very frustrating, as in to implement 3 algos for most system interactions. Github Actions & git well this was like a challange + learning i used github actions to automate build process of the application for all the platform and learned how to tag versions in git UI/UX This sounds like a small thing with no logic, but actually its really rough and requries a lot of time and design theory to make it perfect. i learned how discoverability of a feature is more important then the feature itself to a genereal user Honestly i realised, any of other stardance participants who will review this project, wont give like more then 5 min to the application so i had to improve the UX, and show the features and powers of the application beacuse if a user can’t find a feature easily, they will just thing that my application lacks that feature Core Features Leanign and fix bugs arising due to differences in interpretation of keypress from virtual keyboad and physical keyboards Trackpad : it required some maths to smooth out the cursor movement (Took AI help in maths) Multithreading : This was toughest concept to grasp for me in rust, i mainly used this to run macros, as macros can be longs and blocking. Blind on Linux I don’t even have access to a Linux machine, so I basically coded it, stared at AI analysis to check if standard commands (like playerctl and x-terminal-emulator) would work, crossed my fingers, and called it a day to ensure the “cross-platform” promise wasn’t a lie.shipLog.md Proud? Comming form Web Development background, i actually create a cross platform desktop application in rust, is like a huge confidence booster for me When i participated in this event i decided only to make things which require some tech which i dont alredy know and this descision is going good till now Beyond Data Structures and Algorithims Learning all these low-level OS interaction concepts. Not just doing Data Structure and Algorithm, but actually going beyond basic code logic to inject raw virtual keycodes, query active window telemetry in real-time, and spawn detached background processes without blowing up the computer Desktop Application Desktop or android/ios developers are generally considered superior then web Developer, knowing basics and actualy bulding a cross platform desktop applicaiton is a benchmark for myself Using old Concepts from Web Dev The truly seamless local network bridge. Right now, I can tap a button on a React frontend on my phone and instantly trigger a native system lock, launch an executable, or fire a crazy complex macro on a host PC over port 42911. It actually feels production-ready.", "repo": "https://github.com/ashish757/cmdRelay", "demo": "https://github.com/ashish757/cmdRelay/releases"}]...
|
[{"post_id": 58287, "ts": "202 [{"post_id": 58287, "ts": "2026-08-30T17:36:14Z", "hours": 0.4553, "text": "updated some UI (added a button to open the layout editor directly instead of going to system tray) to help users find features to edit the layout more easily"}, {"post_id": 56758, "ts": "2026-08-28T17:18:55Z", "hours": 0.9253, "text": "Tried to fix the linux binaries but as I lack the machine to test it out myself and due to recurring errors, I have dropped the linux support for now,"}, {"post_id": 37258, "ts": "2026-07-29T20:30:57Z", "hours": 4.0383, "text": "Final Devlog Honestly its gettin boring now nothing is challanging now Cross Platform: did what i can without any access to windows and linux machines Optmizations last devlog was also about optimization because its all that left now, nothing challenging in that, its jsut a boring work. there are still a lot of ideas i have for this , but i think its time to move onto somethign else my learnings in this project has stopped things which are left right now are either certain things which I don’t understand and which I know are out of my league or things which I already know, and I just need to keep on repeating myself, so my learning has kind of stopped and i am bored. Here’s what I did this time improve the README file and included demo video because I realised that as I have not tested my application on Windows and Linux, it might not run so i just uploaded a demo video, but I am like 95% certain that it will run improve the pre-buillt layouts that the application has and change them according to Windows and Linux recorded and edited (first time) a demo video (at the bottom of readme file) Handled permissions on the mac, (nicely) I would like to mention that this application request a lot of system settings and network permissions, so that is also reason that some people may be uncomfortable to execute this application. That’s why I provided the demo video."}, {"post_id": 35334, "ts": "2026-07-26T17:30:55Z", "hours": 2.6314, "text": "Devlog 10 - Near completion Optimizations Linux i had almost forgotten that i got to handle linux as well, mac and windows does not mean corss platform although linux is completely optional and i will try as i have promised the cross platform like 100 times i will try, i cant promise, as i dont have access to linux so i will code, do AI analysis to check if its gonna work on linux and that is all linux gonna get from me. I will test the application on windows soon, (i have mac , i am gonna borrow from a friend) Bug Fixes Adding new pre built layouts won’t nullify user editing on the layouts changed the server port from 3000 to more random port, as 3000 is commonly busy Special Function can now be executed on the Linux Moved the Layout Builder/Settings to the main application from web client to make it feel like a native app instead of a web UI Handled some of the observed edge cases in key mappings for cross platform support assets were not loading in the producition build , moved the assets to the public directory for direct access after produciton build"}, {"post_id": 34734, "ts": "2026-07-25T18:10:45Z", "hours": 2.8531, "text": "Devlog 9 - Will it Survive The Winter? A lot of time, this time went on fixing mistakes, which I did by making this application just for macOS, but I was building this to support different platforms, I can’t survives other platforms 1. Just had one JSON file for the complete configuration of the layouts. I realised that certain layouts which I am giving pre built were going to have different keys bindings for different platforms so I just separated my layouts into different files for Mac, Linux and Windows. 2. While talking to Claude, I got to know that the data of the applications which are edited are supposed to be saved in a different location other than the installation location. It is different for Mac and Windows, I was actually saving my data where my application is installed, so I fixed this issue and stored layout configs data at their appropriate location in the different system 3. So the special function keys, if you reading my devlogs, you are aware about this special function, such as increasing or decreasing volume and brightness, skipping and pausing and playing media these functions cannot be triggered by virtual keyboard. They are bounded to pressing keys in physical keyboard. to trigger these special function, I used Apple script on macOS, but Apple script are still failing on some cases so I used a swift language code , I did not understand how I could write swift inside rust but, stack overflow works . I got the code from stack overflow. I also added some pre-layouts for various tasks and helping in application such as VS code , Photoshop , fusion 360 and while giving presentations ."}, {"post_id": 34464, "ts": "2026-07-25T06:08:08Z", "hours": 3.9247, "text": "Devlog 8 - Polishing is really Boring The project is near completion on terms of features Now i am just Polishing the app doing things like improving UX, Text Content, adding minor features. Despite that here are two major things i did 1. Special Function Support remember my earlier devlog where i mentioned that, increasing and decreasing the brightness or vol is not as simple as just some keypress on keyboard These comes under special fucniton and although you can trigger then via physical keyboard, but can’t via the virtual ones. to do that you need to run some special code, on macos via Applescript and on window vis winShell, i am still figuring it out for linux. 2. Appearance settings user can now customize button’s color, bg, add icon and images (custom images are under dev) i did all this with backward compatibility in mind (Big Brains) CI/CD Pipeline Used Github Action to build the application for major platforms (macos, windows, linux) yeah all that, thousand build erros , waiting 10 min for each github action just to see a red X, i will not rant i am past that now Future i will be straight forward add custom image support verify and improve the cross platform functionality add some pre built layouts maybe add a guide/tour for the layout builder"}, {"post_id": 32884, "ts": "2026-07-22T10:33:18Z", "hours": 5.1594, "text": "Devlog 7 - There is always a Solution Focus V/S Feature Dilemma I thought it would be a cool feature addition to display the current resource consumption (CPU/RAM) and some other system details of the computer right on the mobile app. but my concern was that these features are basically \"extras\" and I really didn’t want to slow down my core functionality. I was about to drop the idea entirely, but at the last minute I decided to ask Gemini about it and guess what? There is always a solution I mean, what did I expect? Its engineering after all Smart Subscription Architecture - the solution well, my main concern was the wastage of resources and WebSocket bandwidth, which might bottleneck my main selling point: ultra low latency under 5ms control command communication But this architecture perfectly solves that. so basically, the server will only blast data at me if I am explicitly subscribed to it. Otherwise, it sleeps. and since this project uses WebSockets on a local network, there is generally only one user. So, if I unsubscribe from the service (like closing the telemetry component), that particular data broadcast will completely pause, saving precious resources on both the mobile client and the computer server forgot to mention : the server updates this system data every second if user is subscribed, else sleepyy The Scalability FOMO I am well aware my app won’t probably be used by more than 10 people for 10 minutes , but my Senior Software Engineer came shouting - “Your current method to render different views, that too without using react-router , it will become scalability issue as application grow” in my initial HL system design i was going to use a single page and conditional rendering for different layouts on same page to avoide a package i decided not to use the react-router for my client web page but now i have like 5 pages and as i am building i keep getting more and more ideas… I fixed this issue by creating a standard state for different viewModes and changing props/types to support it (nothing just some painful refactoring) implementing a component mapping (view registry) for all the views. Now I can just plug in any number of views without writing spaghetti if/else statements. The important thing is as i am not using the react-router, i will to keep an eye on memory and component lifecycle to free up the space in memory from components which are not in view. I should have used react-router from beginning 😭 I am thinking to add a button to force kill a process from the phone, but again i am standing at a point where these features are kind of feelign like extras and note my core application attached image of the QR code that i use to pair the mobile with the computer, will add some security in future"}, {"post_id": 31527, "ts": "2026-07-20T00:26:34Z", "hours": 10.3972, "text": "Devlog 6 My this session was so exciting that i only stopped because I reached the 10 hour limit of the hackclub . Well, I think throughout this project, I have been doing things which I don’t understand, things which were boring but right now this is the point when everything clicked, finally got the hang of RUST Its gonna be long Devlog read at your own risk(10 hours dump. Note: the maximum limit is 4000 characters so I cannot write everything here just this much) 1. Crazy things this time So if you may know that in this project, one of the things is to simulate the actual keyboard through the application Here is a interesting thing i found about special fucniton keys those special functionalities keys work strangly, on MacBook , we press F1 to decrease brightness , so i coded my applicaiton to to press the F1 but nothing happened in reality, most OS do not registers the F1 and F2 key for changing the brightness but it actually uses some code tied to hardware to trigger the special fucitionality How did i solve this? well, I read about how actually a Operating systems register the keys, and trigger those special functions. And this was the reason pressing the shortcuts were not triggering those special functionalities into the computer. As the OS was not looking for me to press F1 . it looks for a special code which is tied with the keyboard itself, which was not in virtual keyboard , solution is simple. You have to find out what code is used by a particular operating system to increase or decrease the brightness , and then you will have to trigger that code when the key is pressed. 2. Macros I implemented macros , you can basically press a sequence of keys with control delay . Just on a single click. It is spamming a key running some keyboard shortcuts on a single click. I created different thread to run this macro so that it does not freeze my main application this is the point which like frustrated me for very long as it is been like three years when I learned concurrency and threading in Python and I did it again in rust this time. I used MPSC (Multi-Producer, Single-Consumer) here. I don’t fully understand it, though, but yeah, I know why I used it and how I used it 3. App Lanucher So I just liked a button, which upon clicking will open up any application on your computer but the main thing was not actually opening the application, it was which application to open , Open an application by running a command on operating system , you have to know their exact official names , and a normal user does not know that so, I scanned the whole application folder onto the operating system and found out the official names of each application. Then I showed the list in a dropdown to user, from where user can select the names of applications. -well, it took me a lot of time because this was my third approach which worked my initial implementaion were like I would force the user to open up that application and then my application can register it, but obviously, the above approach is better than this, so I dropped it. Jupiter (idk, maybe because its big, and who doesnt like sloar system?) 4. Context Aware Layouts This is it. The big one. This was the most important, most time-consuming, and absolute flagship feature of the entire project. so, what is context aware layouts ? So in the application, one of the parts is to create layouts , which helps with your work aespecially in the productivity/professional applications so lets say you are coding or working, constantly shuffling between multiple desktop apps , with your phone sitting on your desk acting as your custom macro pad . This feature actively extracts the currently focused application on your computer and instantly switches the layout on your phone to match it."}, {"post_id": 29559, "ts": "2026-07-16T16:08:19Z", "hours": 2.46, "text": "Devlog 5 Loking back and accepting this time I saw what happens when you build a project without any proper system design , things were so clunky in my application that I was not in mood of creating another groundbreaking feature i just spent time improving existing features and make them actually usable What went down So basically, I had done a dumb thing very dumb thing. I did not realize that the buttons on the actual keyboard have different states, you know when they are being held down OR they’re being pressed OR they are being released, this info matters and I completely missed it. so now, basically, my key presses have a state Down (pressing down) Up (releasing the key) Pressed (holding the key) So the SHIFT button which I had implemented earlier was only clickable , user couldn’t hold it, but the shift button is meant to be held, so I fixed this and other similar buttons like alt , control and command Improved the portrait and landscape switching between the views in layout builder. This is just normal UI improvement Nothing special here Other than these two improvements above, there has been numerous other small little improvements which took me a lot of time, so I don’t really have much to write on this devlog, changes are like I improved the whole conditional rendering thing, it was messy as I decided not to use react router for this project as there weren’t any actual pages or URLs, just bunch of different control layouts. Improve my state management to handle menu overlay properly Overall code quality improvement, creating utility functions and type safety . and a lot of my time is invested in learning Rust as this is like my second project in rust (i leanred rust like a year ago and now i remember nothing, thanks to my good c++, i have held my ground so far) Bottom line → Better UI and UX , button can now be held and tracked weather they are being pressed or released"}, {"post_id": 20753, "ts": "2026-07-02T13:28:12Z", "hours": 6.7092, "text": "Devlog 4 Control Layout first i would like to define what i call a control layout, as i reliased i never relly defined it properly Control Layout: It is a layout of buttons and other control elements like For Example control layout for playback control will have button/controls like volume up/down, play/pause, fast forwarding and controling playback Maybe some specifi button to help while editing video Or controls for some particular Applications So basically, these controls can trigger and functionality or a shortcut or a macro onto the computer that the client is connected with Single click on the phone screen will be able to run a complex keyboard shortcut User can map shortcuts based on particular applications, and he does not need to remember keyboard shortcut. They don’t even need to click anywhere on their screen. The phone will act as a secondary keyboard or a small macropad. Customizable Control Layout The application contains some prebuilt control layouts But different user user different application and have different workflow, so i created a featrure to let users create his own custom layouts where he can place different buttons anywhere on the screen and assign what work each button will be doing. As of now the current active applicaiton detection is not present but i will add this feature soon. Details basically, I have an interface which tries to mimic a mobile screen, and I have divided that screen into grids with CSS I can move the elements around and resize them. I track the position , height and width of those elements and store them in a JSON config file upon saving these layouts. This JSON config is sent over local web socket to the Rust server . Along with just the information about the UI, there is also working information, like name of button, its functionality etc I have a component which is quite opposite of a builder which is a renderer . This renderer takes up JSON config and renderes the different components and maps the functionality, in smple word it takes json and create UI."}, {"post_id": 17012, "ts": "2026-06-27T16:43:10Z", "hours": 6.3219, "text": "Devlog 3 Trackpad Control Cursor Movement: Simply dragging on the mobile phone, moves the pointer on the desktop Clicks: supports Single Click , Double Click , Two-Tap Secondary Click Gestures: As of now only Two Finger scroll gesture is s supported Used a blocking thread to offlaod the hardware control operations (60 times per second) The hardest part now is supporting the ability to drag and supporting more gestures , It will requires complex math and numerous trial & error iterations. Live Typing a simple textarea where user can type with his native keyboard of the phone and the text gets typed live on the on computer. Buttons like Backspace , Enter required different approach as they cant be clubed with normal text typing feature of Enigo.text() several other improvements trachpad data sending is more optimized to send cursor cordinates efficiently scroll has kind of accelaration detection for smooth scrolling detecting the difference between drag, scroll and just basic move NEXT Implement a fully customizable control layout Implement PWA Improve connectivity settings for the rust server"}, {"post_id": 15565, "ts": "2026-06-25T09:37:01Z", "hours": 2.6828, "text": "Devlog 2 Magic well in my last devlog in mentioned i wanted to improve code quality and modularity, but guess what its still spaghetti code. But i did some other cool things actully too cool I impelmented a simple interace in client, and create button controls for the Arrow Keys The client can now talk with the server and send data server recieves the data and use Enigo to simulates key presses So basically now i can contorl the keys of my laptop with phone over local network and that under 5ms latency the flow is very simple Client Sends data over websocket –> Rust appliaction listening to the socket recieves it –> formats the incoming data to decide the appropirate action –> uses Enigo to simulate Key presses Next Target Improve code quality and modularity make the communication between client and rust app based on certain standards make more layouts for the client implement trackpad Below gif shows a demo"}, {"post_id": 15064, "ts": "2026-06-24T14:05:16Z", "hours": 1.8122, "text": "Devlog 1 Making a Remote Human Interface Device (HID): cmdRelay basically a controlling a device with another device, here controlling a computer with mobile phone Idea Problem: On my desk i have a windos pc (with top tier monitor) and i also have a macbook, and i lie on the bed and play movies on the monitor, but then i cant control the playback, volume, and cant scroll youtube. some of the soltions are platform dependent. some of them are paid only one solution kde connect , was usable, but it uses an ios app on the iphone and due to app store restriction, it offers limited functionlality on ios, compares to android, also its complex to use and consumes more battery and lack modern features and UI. how cmdRelay solves these problems Modern features and Better UI. No need to install an app, a PWA (Progressive Web App) is used in my idea, which solves the app store’s restrictions a very lightweight and efficient background process written in Rust , cross platform support. (an installation is required on the desktop, though its under 10 MB) lesser battery consumption and sleep mode feature. Details?? it uses an conection over LAN , to reduce latency to about 5ms User can control trackpad , keyboard , run big keyboard shortcuts on just a click, i will try for `gesture₹₹ support as well can’t promise anything right now. communicaiton will happen via a local websocket connecion. Client on mobiles phones A React based PWA Background process on mac and windows Rust and Tauri based background process, with minimal settings Current Status I have make a basic websocket server in Rust and React js client, and establised the connection successfuly wahts next improve code quality and modularity build the client side and send the json data to the computer via web sockets"}]...
|
Title: cmdRelay by @ashish-raj-singh | Stardance
Title: cmdRelay by @ashish-raj-singh | Stardance
Devlogs:
Devlog 1 Making a Remote Human Interface Device (HID): cmdRelay basically a controlling a device with another device, here controlling a computer with mobile phone Idea Problem: On my desk i have a windos pc (with top tier monitor) and i also have a macbook, and i lie on the bed and play movies on the monitor, but then i cant control the playback, volume, and cant scroll youtube. some of the soltions are platform dependent. some of them are paid only one solution kde connect , was usable, but it uses an ios app on the iphone and due to app store restriction, it offers limited functionlality on ios, compares to android, also its complex to use and consumes more battery and lack modern features and UI. how cmdRelay solves these problems Modern features and Better UI. No need to install an app, a PWA (Progressive Web App) is used in my idea, which solves the app store’s restrictions a very lightweight and efficient background process written in Rust , cross platform support. (an installation is required on the desktop, though its under 10 MB) lesser battery consumption and sleep mode feature. Details?? it uses an conection over LAN , to reduce latency to about 5ms User can control trackpad , keyboard , run big keyboard shortcuts on just a click, i will try for `gesture₹₹ support as well can’t promise anything right now. communicaiton will happen via a local websocket connecion. Client on mobiles phones A React based PWA Background process on mac and windows Rust and Tauri based background process, with minimal settings Current Status I have make a basic websocket server in Rust and React js client, and establised the connection successfuly wahts next improve code quality and modularity build the client side and send the json data to the computer via web sockets
Devlog 2 Magic well in my last devlog in mentioned i wanted to improve code quality and modularity, but guess what its still spaghetti code. But i did some other cool things actully too cool I impelmented a simple interace in client, and create button controls for the Arrow Keys The client can now talk with the server and send data server recieves the data and use Enigo to simulates key presses So basically now i can contorl the keys of my laptop with phone over local network and that under 5ms latency the flow is very simple Client Sends data over websocket –> Rust appliaction listening to the socket recieves it –> formats the incoming data to decide the appropirate action –> uses Enigo to simulate Key presses Next Target Improve code quality and modularity make the communication between client and rust app based on certain standards make more layouts for the client implement trackpad Below gif shows a demo
Devlog 3 Trackpad Control Cursor Movement: Simply dragging on the mobile phone, moves the pointer on the desktop Clicks: supports Single Click , Double Click , Two-Tap Secondary Click Gestures: As of now only Two Finger scroll gesture is s supported Used a blocking thread to offlaod the hardware control operations (60 times per second) The hardest part now is supporting the ability to drag and supporting more gestures , It will requires complex math and numerous trial & error iterations. Live Typing a simple textarea where user can type with his native keyboard of the phone and the text gets typed live on the on computer. Buttons like Backspace , Enter required different approach as they cant be clubed with normal text typing feature of Enigo.text() several other improvements trachpad data sending is more optimized to send cursor cordinates efficiently scroll has kind of accelaration detection for smooth scrolling detecting the difference between drag, scroll and just basic move NEXT Implement a fully customizable control layout Implement PWA Improve connectivity settings for the rust server
Devlog 4 Control Layout first i would like to define what i call a control layout, as i reliased i never relly defined it properly Control Layout: It is a layout of buttons and other control elements like For Example control layout for playback control will have button/controls like volume up/down, play/pause, fast forwarding and controling playback Maybe some specifi button to help while editing video Or controls for some particular Applications So basically, these controls can trigger and functionality or a shortcut or a macro onto the computer that the client is connected with Single click on the phone screen will be able to run a complex keyboard shortcut User can map shortcuts based on particular applications, and he does not need to remember keyboard shortcut. They don’t even need to click anywhere on their screen. The phone will act as a secondary keyboard or a small macropad. Customizable Control Layout The application contains some prebuilt control layouts But different user user different application and have different workflow, so i created a featrure to let users create his own custom layouts where he can place different buttons anywhere on the screen and assign what work each button will be doing. As of now the current active applicaiton detection is not present but i will add this feature soon. Details basically, I have an interface which tries to mimic a mobile screen, and I have divided that screen into grids with CSS I can move the elements around and resize them. I track the position , height and width of those elements and store them in a JSON config file upon saving these layouts. This JSON config is sent over local web socket to the Rust server . Along with just the information about the UI, there is also working information, like name of button, its functionality etc I have a component which is quite opposite of a builder which is a renderer . This renderer takes up JSON config and renderes the different components and maps the functionality, in smple word it takes json and create UI.
Devlog 5 Loking back and accepting this time I saw what happens when you build a project without any proper system design , things were so clunky in my application that I was not in mood of creating another groundbreaking feature i just spent time improving existing features and make them actually usable What went down So basically, I had done a dumb thing very dumb thing. I did not realize that the buttons on the actual keyboard have different states, you know when they are being held down OR they’re being pressed OR they are being released, this info matters and I completely missed it. so now, basically, my key presses have a state Down (pressing down) Up (releasing the key) Pressed (holding the key) So the SHIFT button which I had implemented earlier was only clickable , user couldn’t hold it, but the shift button is meant to be held, so I fixed this and other similar buttons like alt , control and command Improved the portrait and landscape switching between the views in layout builder. This is just normal UI improvement Nothing special here Other than these two improvements above, there has been numerous other small little improvements which took me a lot of time, so I don’t really have much to write on this devlog, changes are like I improved the whole conditional rendering thing, it was messy as I decided not to use react router for this project as there weren’t any actual pages or URLs, just bunch of different control layouts. Improve my state management to handle menu overlay properly Overall code quality improvement, creating utility functions and type safety . and a lot of my time is invested in learning Rust as this is like my second project in rust (i leanred rust like a year ago and now i remember nothing, thanks to my good c++, i have held my ground so far) Bottom line → Better UI and UX , button can now be held and tracked weather they are being pressed or released
Devlog 6 My this session was so exciting that i only stopped because I reached the 10 hour limit of the hackclub . Well, I think throughout this project, I have been doing things which I don’t understand, things which were boring but right now this is the point when everything clicked, finally got the hang of RUST Its gonna be long Devlog read at your own risk(10 hours dump. Note: the maximum limit is 4000 characters so I cannot write everything here just this much) 1. Crazy things this time So if you may know that in this project, one of the things is to simulate the actual keyboard through the application Here is a interesting thing i found about special fucniton keys those special functionalities keys work strangly, on MacBook , we press F1 to decrease brightness , so i coded my applicaiton to to press the F1 but nothing happened in reality, most OS do not registers the F1 and F2 key for changing the brightness but it actually uses some code tied to hardware to trigger the special fucitionality How did i solve this? well, I read about how actually a Operating systems register the keys, and trigger those special functions. And this was the reason pressing the shortcuts were not triggering those special functionalities into the computer. As the OS was not looking for me to press F1 . it looks for a special code which is tied with the keyboard itself, which was not in virtual keyboard , solution is simple. You have to find out what code is used by a particular operating system to increase or decrease the brightness , and then you will have to trigger that code when the key is pressed. 2. Macros I implemented macros , you can basically press a sequence of keys with control delay . Just on a single click. It is spamming a key running some keyboard shortcuts on a single click. I created different thread to run this macro so that it does not freeze my main application this is the point which like frustrated me for very long as it is been like three years when I learned concurrency and threading in Python and I did it again in rust this time. I used MPSC (Multi-Producer, Single-Consumer) here. I don’t fully understand it, though, but yeah, I know why I used it and how I used it 3. App Lanucher So I just liked a button, which upon clicking will open up any application on your computer but the main thing was not actually opening the application, it was which application to open , Open an application by running a command on operating system , you have to know their exact official names , and a normal user does not know that so, I scanned the whole application folder onto the operating system and found out the official names of each application. Then I showed the list in a dropdown to user, from where user can select the names of applications. -well, it took me a lot of time because this was my third approach which worked my initial implementaion were like I would force the user to open up that application and then my application can register it, but obviously, the above approach is better than this, so I dropped it. Jupiter (idk, maybe because its big, and who doesnt like sloar system?) 4. Context Aware Layouts This is it. The big one. This was the most important, most time-consuming, and absolute flagship feature of the entire project. so, what is context aware layouts ? So in the application, one of the parts is to create layouts , which helps with your work aespecially in the productivity/professional applications so lets say you are coding or working, constantly shuffling between multiple desktop apps , with your phone sitting on your desk acting as your custom macro pad . This feature actively extracts the currently focused application on your computer and instantly switches the layout on your phone to match it.
Devlog 7 - There is always a Solution Focus V/S Feature Dilemma I thought it would be a cool feature addition to display the current resource consumption (CPU/RAM) and some other system details of the computer right on the mobile app. but my concern was that these features are basically "extras" and I really didn’t want to slow down my core functionality. I was about to drop the idea entirely, but at the last minute I decided to ask Gemini about it and guess what? There is always a solution I mean, what did I expect? Its engineering after all Smart Subscription Architecture - the solution well, my main concern was the wastage of resources and WebSocket bandwidth, which might bottleneck my main selling point: ultra low latency under 5ms control command communication But this architecture perfectly solves that. so basically, the server will only blast data at me if I am explicitly subscribed to it. Otherwise, it sleeps. and since this project uses WebSockets on a local network, there is generally only one user. So, if I unsubscribe from the service (like closing the telemetry component), that particular data broadcast will completely pause, saving precious resources on both the mobile client and the computer server forgot to mention : the server updates this system data every second if user is subscribed, else sleepyy The Scalability FOMO I am well aware my app won’t probably be used by more than 10 people for 10 minutes , but my Senior Software Engineer came shouting - “Your current method to render different views, that too without using react-router , it will become scalability issue as application grow” in my initial HL system design i was going to use a single page and conditional rendering for different layouts on same page to avoide a package i decided not to use the react-router for my client web page but now i have like 5 pages and as i am building i keep getting more and more ideas… I fixed this issue by creating a standard state for different viewModes and changing props/types to support it (nothing just some painful refactoring) implementing a component mapping (view registry) for all the views. Now I can just plug in any number of views without writing spaghetti if/else statements. The important thing is as i am not using the react-router, i will to keep an eye on memory and component lifecycle to free up the space in memory from components which are not in view. I should have used react-router from beginning 😭 I am thinking to add a button to force kill a process from the phone, but again i am standing at a point where these features are kind of feelign like extras and note my core application attached image of the QR code that i use to pair the mobile with the computer, will add some security in future
Devlog 8 - Polishing is really Boring The project is near completion on terms of features Now i am just Polishing the app doing things like improving UX, Text Content, adding minor features. Despite that here are two major things i did 1. Special Function Support remember my earlier devlog where i mentioned that, increasing and decreasing the brightness or vol is not as simple as just some keypress on keyboard These comes under special fucniton and although you can trigger then via physical keyboard, but can’t via the virtual ones. to do that you need to run some special code, on macos via Applescript and on window vis winShell, i am still figuring it out for linux. 2. Appearance settings user can now customize button’s color, bg, add icon and images (custom images are under dev) i did all this with backward compatibility in mind (Big Brains) CI/CD Pipeline Used Github Action to build the application for major platforms (macos, windows, linux) yeah all that, thousand build erros , waiting 10 min for each github action just to see a red X, i will not rant i am past that now Future i will be straight forward add custom image support verify and improve the cross platform functionality add some pre built layouts maybe add a guide/tour for the layout builder
Devlog 9 - Will it Survive The Winter? A lot of time, this time went on fixing mistakes, which I did by making this application just for macOS, but I was building this to support different platforms, I can’t survives other platforms 1. Just had one JSON file for the complete configuration of the layouts. I realised that certain layouts which I am giving pre built were going to have different keys bindings for different platforms so I just separated my layouts into different files for Mac, Linux and Windows. 2. While talking to Claude, I got to know that the data of the applications which are edited are supposed to be saved in a different location other than the installation location. It is different for Mac and Windows, I was actually saving my data where my application is installed, so I fixed this issue and stored layout configs data at their appropriate location in the different system 3. So the special function keys, if you reading my devlogs, you are aware about this special function, such as increasing or decreasing volume and brightness, skipping and pausing and playing media these functions cannot be triggered by virtual keyboard. They are bounded to pressing keys in physical keyboard. to trigger these special function, I used Apple script on macOS, but Apple script are still failing on some cases so I used a swift language code , I did not understand how I could write swift inside rust but, stack overflow works . I got the code from stack overflow. I also added some pre-layouts for various tasks and helping in application such as VS code , Photoshop , fusion 360 and while giving presentations .
Devlog 10 - Near completion Optimizations Linux i had almost forgotten that i got to handle linux as well, mac and windows does not mean corss platform although linux is completely optional and i will try as i have promised the cross platform like 100 times i will try, i cant promise, as i dont have access to linux so i will code, do AI analysis to check if its gonna work on linux and that is all linux gonna get from me. I will test the application on windows soon, (i have mac , i am gonna borrow from a friend) Bug Fixes Adding new pre built layouts won’t nullify user editing on the layouts changed the server port from 3000 to more random port, as 3000 is commonly busy Special Function can now be executed on the Linux Moved the Layout Builder/Settings to the main application from web client to make it feel like a native app instead of a web UI Handled some of the observed edge cases in key mappings for cross platform support assets were not loading in the producition build , moved the assets to the public directory for direct access after produciton build
Final Devlog Honestly its gettin boring now nothing is challanging now Cross Platform: did what i can without any access to windows and linux machines Optmizations last devlog was also about optimization because its all that left now, nothing challenging in that, its jsut a boring work. there are still a lot of ideas i have for this , but i think its time to move onto somethign else my learnings in this project has stopped things which are left right now are either certain things which I don’t understand and which I know are out of my league or things which I already know, and I just need to keep on repeating myself, so my learning has kind of stopped and i am bored. Here’s what I did this time improve the README file and included demo video because I realised that as I have not tested my application on Windows and Linux, it might not run so i just uploaded a demo video, but I am like 95% certain that it will run improve the pre-buillt layouts that the application has and change them according to Windows and Linux recorded and edited (first time) a demo video (at the bottom of readme file) Handled permissions on the mac, (nicely) I would like to mention that this application request a lot of system settings and network permissions, so that is also reason that some people may be uncomfortable to execute this application. That’s why I provided the demo video.
Tried to fix the linux binaries but as I lack the machine to test it out myself and due to recurring errors, I have dropped the linux support for now,
updated some UI (added a button to open the layout editor directly instead of going to system tray) to help users find features to edit the layout more easily
Ships:
cmdRelay I built a cross-platform PC remote control and macro engine using Rust, Tauri, and React. It pairs your mobile device to your desktop via WebSockets on your local network, executes system-level operations and custom macros with zero noticeable latency. I have added some pre-loaded with layouts for VS Code, Photoshop, Media Controls, and Presentations there is also a Layout Settings option to edit and create your own custom control decks. What was challenging? Fighting the operating systems to make them behave! Cross platform I have worked with C++, so the core Rust WebSocket server was fun, but true cross-platform compatibility was very frustrating, as in to implement 3 algos for most system interactions. Github Actions & git well this was like a challange + learning i used github actions to automate build process of the application for all the platform and learned how to tag versions in git UI/UX This sounds like a small thing with no logic, but actually its really rough and requries a lot of time and design theory to make it perfect. i learned how discoverability of a feature is more important then the feature itself to a genereal user Honestly i realised, any of other stardance participants who will review this project, wont give like more then 5 min to the application so i had to improve the UX, and show the features and powers of the application beacuse if a user can’t find a feature easily, they will just thing that my application lacks that feature Core Features Leanign and fix bugs arising due to differences in interpretation of keypress from virtual keyboad and physical keyboards Trackpad : it required some maths to smooth out the cursor movement (Took AI help in maths) Multithreading : This was toughest concept to grasp for me in rust, i mainly used this to run macros, as macros can be longs and blocking. Blind on Linux I don’t even have access to a Linux machine, so I basically coded it, stared at AI analysis to check if standard commands (like playerctl and x-terminal-emulator) would work, crossed my fingers, and called it a day to ensure the “cross-platform” promise wasn’t a lie.shipLog.md Proud? Comming form Web Development background, i actually create a cross platform desktop application in rust, is like a huge confidence booster for me When i participated in this event i decided only to make things which require some tech which i dont alredy know and this descision is going good till now Beyond Data Structures and Algorithims Learning all these low-level OS interaction concepts. Not just doing Data Structure and Algorithm, but actually going beyond basic code logic to inject raw virtual keycodes, query active window telemetry in real-time, and spawn detached background processes without blowing up the computer Desktop Application Desktop or android/ios developers are generally considered superior then web Developer, knowing basics and actualy bulding a cross platform desktop applicaiton is a benchmark for myself Using old Concepts from Web Dev The truly seamless local network bridge. Right now, I can tap a button on a React frontend on my phone and instantly trigger a native system lock, launch an executable, or fire a crazy complex macro on a host PC over port 42911. It actually feels production-ready....
|
1793141645.1711934
|
1793228045.1711934
|
|
2593
|
Live Space Tracker (working title) by @dspace1015 Live Space Tracker (working title) by @dspace1015 | Stardance...
|
dspace1015
|
1
|
50.33
|
201
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-30T04:46:03Z", "hours": 48.0, "multiplier": 4.22, "payout": 201, "blessing": "neutral", "text": "I made a web app that lets you explore the positions of the planets in the solar system in real time. Change time with (< > /) keys to view the solar system in the past or future. Change your camera with the (c) key to view objects from their own orientation as they rotate around each other. Zoom out and see the positions of stars in our neighborhood. Plug in your home location on the map and you can view your own current night sky. Track the space station in low Earth orbit, and watch when it appears overhead.", "repo": "https://github.com/dspace1015/space", "demo": "https://dspace1015.github.io/space/"}]...
|
[{"post_id": 76034, "ts": "202 [{"post_id": 76034, "ts": "2026-10-02T04:28:06Z", "hours": 2.3267, "text": "Fixed some bugs that came up after launch Added text that when hovered shows controlls (most asked for feature) Fixed(mostly) the constant pop up bug, you may need to refresh the page once but it should be mostly gone by now"}, {"post_id": 75454, "ts": "2026-09-30T04:32:38Z", "hours": 3.7503, "text": "Final devlog for now, finished map view and added camera information I have added camera controls where you can change to view a planet from its own axis or rotation by pressing (c) to cycle through modes, and you can track objects by pressing (t). Also added more information on the ground view, light time calculation and finally the map view where once opened you can change your position by clicking on it."}, {"post_id": 74746, "ts": "2026-09-28T04:07:38Z", "hours": 8.5467, "text": "Finished all the continents, added saturns rings and and Mars and Jupiter’s moons. I have made decent progress, most of my time was spent debugging and optimizing since I’m only using the cpu to render everything. I also added more camera controls so that when you press (c) you can tilt the camera to match the planets axis tilt, or rotate along with it. The final parts I need to add at this point is a menu where you can choose your location and a information panel for the object that you select."}, {"post_id": 74325, "ts": "2026-09-27T05:34:21Z", "hours": 8.4517, "text": "Added continent outlines and object occlusion After spending way too much time trying to figure out webgl and three.js I decided that it was not worth the extra effort for slightly better graphics. Running out of time, I decided to stick to the system that I already had and decided to just draw the coastlines so you can make out the earths orientation better. Right now I have only added N&S America, Antarctica, and Australia. Ill add the rest later but for now this is what I got. Running out of time to ship this so I’m going to add a location selector and call this good."}, {"post_id": 40892, "ts": "2026-08-04T18:15:05Z", "hours": 2.5356, "text": "Added ground perspective and fixed stars Added a feature where you can select a position on the earth and view from there. You do have to manually add your latitude and longitude but eventually you will be able to select from a map or search for a specific city. (The demo shows London UK’s position so I don’t reveal my own) I also fixed the lag from the stars that was making the site slow, now it can display 3500 stars and all the other objects just fine."}, {"post_id": 11528, "ts": "2026-06-18T20:32:13Z", "hours": 5.48, "text": "Added grid based on your location, and stars from the Henry Draper (HD) catalogue. https://in-the-sky.org/data/catalogue.php?cat=HD&const=1&sort=1&view=1&page=1 Unfortunately now the framerate has dropped a lot, so I’ll need to figure out how to handle all the objects separately and only update the planets. Until then that’s enough programming for me today."}, {"post_id": 8955, "ts": "2026-06-14T22:02:27Z", "hours": 2.1864, "text": "Added TLE support https://en.wikipedia.org/wiki/Two-line_element_set (A common file format for earth orbit satellites). I’ve realized that I might have to switch to using a graphics api like webgl to improve the graphics from here, but for now I will focus on functionality. Better graphics should not matter at the moment from a ground level perspective."}, {"post_id": 7557, "ts": "2026-06-12T17:12:34Z", "hours": 6.3506, "text": "Finally added a way to read separate files into the web app. Objects are now stored in json files with all their orbital parameters and physical characteristics. Next steps for this project will be to start adding detail on the planets and reference frame transformations from your local position to space."}, {"post_id": 5140, "ts": "2026-06-08T20:33:11Z", "hours": 2.9439, "text": "You can now click on objects to select them. Orbits now also accurately precess. The moon’s orbit is now close enough to reality to predict solar eclipses, which is accurate enough for this project. All the inner rocky planet’s procession has been implemented as well according to NASA horizon’s approximation. They should now be reasonably accurate a few hundred yrs into the future. Next steps will be adding more objects like Jovian moons and spacecraft, as well as improving graphics."}, {"post_id": 2510, "ts": "2026-06-05T01:16:11Z", "hours": 3.0403, "text": "Added the main 8 planets in the solar system and a time control feature. You can now speed up, slow down, or reverse time to see the solar system on different dates, or reset to the current time. You can also scroll through the list of planets and watch from their perspective. As far as I can tell I succeeded in making the planets positions accurate (or at least enough for my project)."}, {"post_id": 1200, "ts": "2026-06-03T01:43:11Z", "hours": 0.8872, "text": "Added functionality for objects to orbit other objects. Progress is coming along nicely so far, all orbits of type e<1 are displayable and can be centered around any object. The next steps I plan on taking are plugging in the values for our actual solar system and switching camera controls to be centered on planets, then adding time control and other UI."}, {"post_id": 1103, "ts": "2026-06-02T22:39:41Z", "hours": 1.4622, "text": "I added mouse controls, Kepler’s 2nd law, and a grid that will come in handy for identifying places in the sky. Next I will continue to add features for adding celestial bodies and different spacecraft."}, {"post_id": 963, "ts": "2026-06-02T18:53:07Z", "hours": 0.8086, "text": "Added orbit calculations to the planetarium web app so I can start adding other objects in the display. A few more functions will need to be implemented but very soon I should be able to start plugging in data."}, {"post_id": 621, "ts": "2026-06-02T03:49:47Z", "hours": 1.2097, "text": "Starting the basic foundation of the web app, I plan on using only JavaScript and HTML5’s canvas to draw all the objects, using data from celestrack and NASA horizons to find all the data I need. Screenshot is just of a test of the basic 3d drawing function with axis visible. Because it is just night sky objects no fancy 3d engine will be needed."}]...
|
Title: Live Space Tracker (working title) by @dspa Title: Live Space Tracker (working title) by @dspace1015 | Stardance
Devlogs:
Starting the basic foundation of the web app, I plan on using only JavaScript and HTML5’s canvas to draw all the objects, using data from celestrack and NASA horizons to find all the data I need. Screenshot is just of a test of the basic 3d drawing function with axis visible. Because it is just night sky objects no fancy 3d engine will be needed.
Added orbit calculations to the planetarium web app so I can start adding other objects in the display. A few more functions will need to be implemented but very soon I should be able to start plugging in data.
I added mouse controls, Kepler’s 2nd law, and a grid that will come in handy for identifying places in the sky. Next I will continue to add features for adding celestial bodies and different spacecraft.
Added functionality for objects to orbit other objects. Progress is coming along nicely so far, all orbits of type e<1 are displayable and can be centered around any object. The next steps I plan on taking are plugging in the values for our actual solar system and switching camera controls to be centered on planets, then adding time control and other UI.
Added the main 8 planets in the solar system and a time control feature. You can now speed up, slow down, or reverse time to see the solar system on different dates, or reset to the current time. You can also scroll through the list of planets and watch from their perspective. As far as I can tell I succeeded in making the planets positions accurate (or at least enough for my project).
You can now click on objects to select them. Orbits now also accurately precess. The moon’s orbit is now close enough to reality to predict solar eclipses, which is accurate enough for this project. All the inner rocky planet’s procession has been implemented as well according to NASA horizon’s approximation. They should now be reasonably accurate a few hundred yrs into the future. Next steps will be adding more objects like Jovian moons and spacecraft, as well as improving graphics.
Finally added a way to read separate files into the web app. Objects are now stored in json files with all their orbital parameters and physical characteristics. Next steps for this project will be to start adding detail on the planets and reference frame transformations from your local position to space.
Added TLE support https://en.wikipedia.org/wiki/Two-line_element_set (A common file format for earth orbit satellites). I’ve realized that I might have to switch to using a graphics api like webgl to improve the graphics from here, but for now I will focus on functionality. Better graphics should not matter at the moment from a ground level perspective.
Added grid based on your location, and stars from the Henry Draper (HD) catalogue. https://in-the-sky.org/data/catalogue.php?cat=HD&const=1&sort=1&view=1&page=1 Unfortunately now the framerate has dropped a lot, so I’ll need to figure out how to handle all the objects separately and only update the planets. Until then that’s enough programming for me today.
Added ground perspective and fixed stars Added a feature where you can select a position on the earth and view from there. You do have to manually add your latitude and longitude but eventually you will be able to select from a map or search for a specific city. (The demo shows London UK’s position so I don’t reveal my own) I also fixed the lag from the stars that was making the site slow, now it can display 3500 stars and all the other objects just fine.
Added continent outlines and object occlusion After spending way too much time trying to figure out webgl and three.js I decided that it was not worth the extra effort for slightly better graphics. Running out of time, I decided to stick to the system that I already had and decided to just draw the coastlines so you can make out the earths orientation better. Right now I have only added N&S America, Antarctica, and Australia. Ill add the rest later but for now this is what I got. Running out of time to ship this so I’m going to add a location selector and call this good.
Finished all the continents, added saturns rings and and Mars and Jupiter’s moons. I have made decent progress, most of my time was spent debugging and optimizing since I’m only using the cpu to render everything. I also added more camera controls so that when you press (c) you can tilt the camera to match the planets axis tilt, or rotate along with it. The final parts I need to add at this point is a menu where you can choose your location and a information panel for the object that you select.
Final devlog for now, finished map view and added camera information I have added camera controls where you can change to view a planet from its own axis or rotation by pressing (c) to cycle through modes, and you can track objects by pressing (t). Also added more information on the ground view, light time calculation and finally the map view where once opened you can change your position by clicking on it.
Fixed some bugs that came up after launch Added text that when hovered shows controlls (most asked for feature) Fixed(mostly) the constant pop up bug, you may need to refresh the page once but it should be mostly gone by now
Ships:
I made a web app that lets you explore the positions of the planets in the solar system in real time. Change time with (< > /) keys to view the solar system in the past or future. Change your camera with the (c) key to view objects from their own orientation as they rotate around each other. Zoom out and see the positions of stars in our neighborhood. Plug in your home location on the map and you can view your own current night sky. Track the space station in low Earth orbit, and watch when it appears overhead....
|
1793152577.558544
|
1793238977.558544
|
|
69295
|
YogurtLib for VEX by @ericyao866 | Stardance
|
ericyao866
|
1
|
50.25
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-12T08:18:47Z", "hours": 40.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own VEX Library! This was largely inspired by Lemlib and it includes advanced functinonality such as async motion, motion chaining, and motion queuing. This library includes it’s custom UI which allows you to see the sensor datas and select autonomouses during a competition. Functionalities still in development: Pure Pursuit for fast and precise curves, MCL(a particle filter that will relocalize the robot’s position based on probablity! and four beams of light from lasers(originally should be done with lidars), IMU Fusion(done, but not yet implemented into the core code), and much more!", "repo": "https://github.com/Random-Person123321/YogurtLib", "demo": "https://yogurtlib.com/"}]...
|
[{"post_id": 82834, "ts": "202 [{"post_id": 82834, "ts": "2026-10-25T23:53:36Z", "hours": 5.0836, "text": "I finished all of the theoretical work in our library! (with the exception of MCL, which is a thing of its own and is definitely coming later!). Most of this devlog was bug testing by applying our pre-compiled binary into a new PROS project, 2026-2027OVERRIDE, where I could upload to the robot and see what’s not working and why. I also cleaned up the include header order and hierarchy. Boomerang: Fixed the carrot point shifting out too far and causing overshoot and reversing. The carrot point now updates as the robot moves, and the drive PID is clamped between maxSpeed and 0.0 when the carrot is behind us, so we turn instead of reverse. I also slew the driveOutput before computing left and right voltages so the turn ratio is preserved. Boomerang now has its own drive and turn settle values instead of driveStraight’s, since it’s a curve in x, y, and heading. It also uses the Turn PID instead of Angular Correction so following the carrot point gets priority. Added async and motion queuing protection, stuck detection, and static friction pushes for when the drive gains are too small. For motion chaining, we draw a line through the end point at the end heading and compare how far along it we are with earlyExitRange. Fixed the wide curves and sideways drift. Tank drives (especially with omnis) can’t correct for drift sideways, so boomerang now calculates curvature like pure pursuit and slows down on sharp curves. How much is tuned with params.curveK, which represents the robot’s sideways grip, so you can use bigger leads without skidding. Fixed the robot lurching forward at full speed inside closeDist, where the speed limiters turn off. maxV is now clamped to either the original speed or about half of max speed, whichever is less. Boomerang is now fully working! Pure Pursuit (now curve()): The LOST/STUCK bug came from very tight curves where the voltage wasn’t enough to overcome friction, so the robot thought it wasn’t moving. The fix is a kS deadband (around 1000 mV) like the rest of the drive functions. The attached picture shows how well it follows points on completely untested default values, along with screenshots of all the tunable parameters. driveTo functions (still deprecated, coming soon!): Added a built-in chain (turn, drive, and another turn for driveToPose) with its parameters as drivetrain members, so there are no hard-coded magic numbers. The cancelled or invalid motion check is cleaner too. swingToHeading(): Giving the non-pivoting side 0 voltage still counts as a movement command, so it wasn’t holding position. Now that side is set to brake during the motion and restored to its original brake mode after. Robot & testing: Added drive code and pneumatics to our robot for the upcoming competition. I also tested our custom objects and PROS object layering, which worked as expected. I commented out our future MCL instance because of compiler warnings. The boomerang test data on our data visualizer matched real life, and it settled within 1 inch with barely any tuning. Next steps: splitting the code into .cpp files to finish the OOP refactor, then MCL and the autonomous/MCL simulator!"}, {"post_id": 80016, "ts": "2026-10-15T23:59:37Z", "hours": 5.1622, "text": "Finish Pure Pursuit, Motion Chaining. Starting work on Boomerang Function: I worked more on Pure Pursuit(robot driving according to a path you’ve drawn through a imaginary circle it draws around its self and targeting where the circle intersects the path). I started by making my curve() function also return MotionResult so it is consistent with everything else in the library unlike before where it had it’s own return type FollowResult. I’ve also updated my helper function that can convert the enumberation from MotionResult into a string so the user can return the value and see what the potential error is from the logics. I’ve also continued with the math for Pure Pursuit starting with injecting extra points into the array of points that the user provides for the path that the robot has to follow to ensure a more even data type and there aren’t senarios where the gaps are so large the circle would not find any paths to target and declare the robot as MotionResult::LOST. To do this, I take apart the original array of points that the user provides and for any two points or segment; I divide it by the minimum gap we would accept(3 inches) to get how many new segments we would have to split it into in order that every segment is shorter than 3 inches. Then we simply linearly interpolate the points based on how many segments we have(ex. a, a + (distance/spacing) 1, a + (distance/spacing) 2…) Ect where we just multiply the gap by the number of spaces that we want. Lastly, I worked out a bug based on DAWGMA’s Pure Pursuit paper that sometimes the path which the robot has to take might be behind the robot(ie the robot is facing away from where the circle intercepts our path). Thus the PP is finished fixing all known bugs(untested yet) by finally organizing all of the helper function into a master function in the PurePursuit class called step(). Then the drivetrain layer(Drivetrain class) that actually owns all of the hardware calls the function, sorts the return logic for when we are done, the path is invalid, or we are chaining the motion to move forward. Though right now it is untested, I fixed the logic that would getActualSpeed() for the both sides of the drive by updating the encoders divided by the amount of time it has been and modifying the units based on the ratio to get an accurate RPM. We update the measured velocity each loop by blending the value we measure from the previus loop via an alpha variable(to smooth the reading to be free of noise). The user can also tune this at their will but the current default value is 40%(a.k.a. 0.4). Lastly, I decided to make our own boomerang function(an advanced motion type in VEX) where to robot will always follow a virtual carrot point and as the robot progresses, the carrot point will blend back into the desired along the path while giving the robot a swing to reach the desired end heading as well. (A type of move to pose – where pose is position for x, y, and heading). I started doing some research and testing out the code in our library and Arduino IDE to see what it would compute and these are some of the resources I used: https://lemlib.readthedocs.io/en/v0.5.0/tutorials/6lateralmotion.html https://www.desmos.com/calculator/sptjw5szex The main one(as well as with some explanation from our coach): https://area-53-robotics.github.io/Intro-To-Robotics/software/advanced-concepts/boomerang/"}, {"post_id": 78976, "ts": "2026-10-12T07:30:55Z", "hours": 39.9558, "text": "Complete Refractor – Making everything exist in Objects to create a template Library in VEX. Made implementation of functions better from last year and fixed existing bugs. Implemented proper asymetrical slewing to wheels and worked on a better Pure Pursuit. Added a custom YogurtLib UI with LVGL and a sensor fusion that can support Up to 3 and more IMUs."}]...
|
Title: YogurtLib for VEX by @ericyao866 | Stardanc Title: YogurtLib for VEX by @ericyao866 | Stardance
Devlogs:
Complete Refractor – Making everything exist in Objects to create a template Library in VEX. Made implementation of functions better from last year and fixed existing bugs. Implemented proper asymetrical slewing to wheels and worked on a better Pure Pursuit. Added a custom YogurtLib UI with LVGL and a sensor fusion that can support Up to 3 and more IMUs.
Finish Pure Pursuit, Motion Chaining. Starting work on Boomerang Function: I worked more on Pure Pursuit(robot driving according to a path you’ve drawn through a imaginary circle it draws around its self and targeting where the circle intersects the path). I started by making my curve() function also return MotionResult so it is consistent with everything else in the library unlike before where it had it’s own return type FollowResult. I’ve also updated my helper function that can convert the enumberation from MotionResult into a string so the user can return the value and see what the potential error is from the logics. I’ve also continued with the math for Pure Pursuit starting with injecting extra points into the array of points that the user provides for the path that the robot has to follow to ensure a more even data type and there aren’t senarios where the gaps are so large the circle would not find any paths to target and declare the robot as MotionResult::LOST. To do this, I take apart the original array of points that the user provides and for any two points or segment; I divide it by the minimum gap we would accept(3 inches) to get how many new segments we would have to split it into in order that every segment is shorter than 3 inches. Then we simply linearly interpolate the points based on how many segments we have(ex. a, a + (distance/spacing) 1, a + (distance/spacing) 2…) Ect where we just multiply the gap by the number of spaces that we want. Lastly, I worked out a bug based on DAWGMA’s Pure Pursuit paper that sometimes the path which the robot has to take might be behind the robot(ie the robot is facing away from where the circle intercepts our path). Thus the PP is finished fixing all known bugs(untested yet) by finally organizing all of the helper function into a master function in the PurePursuit class called step(). Then the drivetrain layer(Drivetrain class) that actually owns all of the hardware calls the function, sorts the return logic for when we are done, the path is invalid, or we are chaining the motion to move forward. Though right now it is untested, I fixed the logic that would getActualSpeed() for the both sides of the drive by updating the encoders divided by the amount of time it has been and modifying the units based on the ratio to get an accurate RPM. We update the measured velocity each loop by blending the value we measure from the previus loop via an alpha variable(to smooth the reading to be free of noise). The user can also tune this at their will but the current default value is 40%(a.k.a. 0.4). Lastly, I decided to make our own boomerang function(an advanced motion type in VEX) where to robot will always follow a virtual carrot point and as the robot progresses, the carrot point will blend back into the desired along the path while giving the robot a swing to reach the desired end heading as well. (A type of move to pose – where pose is position for x, y, and heading). I started doing some research and testing out the code in our library and Arduino IDE to see what it would compute and these are some of the resources I used: https://lemlib.readthedocs.io/en/v0.5.0/tutorials/6lateralmotion.html https://www.desmos.com/calculator/sptjw5szex The main one(as well as with some explanation from our coach): https://area-53-robotics.github.io/Intro-To-Robotics/software/advanced-concepts/boomerang/
I finished all of the theoretical work in our library! (with the exception of MCL, which is a thing of its own and is definitely coming later!). Most of this devlog was bug testing by applying our pre-compiled binary into a new PROS project, 2026-2027OVERRIDE, where I could upload to the robot and see what’s not working and why. I also cleaned up the include header order and hierarchy. Boomerang: Fixed the carrot point shifting out too far and causing overshoot and reversing. The carrot point now updates as the robot moves, and the drive PID is clamped between maxSpeed and 0.0 when the carrot is behind us, so we turn instead of reverse. I also slew the driveOutput before computing left and right voltages so the turn ratio is preserved. Boomerang now has its own drive and turn settle values instead of driveStraight’s, since it’s a curve in x, y, and heading. It also uses the Turn PID instead of Angular Correction so following the carrot point gets priority. Added async and motion queuing protection, stuck detection, and static friction pushes for when the drive gains are too small. For motion chaining, we draw a line through the end point at the end heading and compare how far along it we are with earlyExitRange. Fixed the wide curves and sideways drift. Tank drives (especially with omnis) can’t correct for drift sideways, so boomerang now calculates curvature like pure pursuit and slows down on sharp curves. How much is tuned with params.curveK, which represents the robot’s sideways grip, so you can use bigger leads without skidding. Fixed the robot lurching forward at full speed inside closeDist, where the speed limiters turn off. maxV is now clamped to either the original speed or about half of max speed, whichever is less. Boomerang is now fully working! Pure Pursuit (now curve()): The LOST/STUCK bug came from very tight curves where the voltage wasn’t enough to overcome friction, so the robot thought it wasn’t moving. The fix is a kS deadband (around 1000 mV) like the rest of the drive functions. The attached picture shows how well it follows points on completely untested default values, along with screenshots of all the tunable parameters. driveTo functions (still deprecated, coming soon!): Added a built-in chain (turn, drive, and another turn for driveToPose) with its parameters as drivetrain members, so there are no hard-coded magic numbers. The cancelled or invalid motion check is cleaner too. swingToHeading(): Giving the non-pivoting side 0 voltage still counts as a movement command, so it wasn’t holding position. Now that side is set to brake during the motion and restored to its original brake mode after. Robot & testing: Added drive code and pneumatics to our robot for the upcoming competition. I also tested our custom objects and PROS object layering, which worked as expected. I commented out our future MCL instance because of compiler warnings. The boomerang test data on our data visualizer matched real life, and it settled within 1 inch with barely any tuning. Next steps: splitting the code into .cpp files to finish the OOP refactor, then MCL and the autonomous/MCL simulator!
Ships:
I made my own VEX Library! This was largely inspired by Lemlib and it includes advanced functinonality such as async motion, motion chaining, and motion queuing. This library includes it’s custom UI which allows you to see the sensor datas and select autonomouses during a competition. Functionalities still in development: Pure Pursuit for fast and precise curves, MCL(a particle filter that will relocalize the robot’s position based on probablity! and four beams of light from lasers(originally should be done with lidars), IMU Fusion(done, but not yet implemented into the core code), and much more!...
|
1793062394.0999653
|
1793148794.0999653
|
|
21411
|
ShooterManGame by @RileyTheSane | Stardance
|
RileyTheSane
|
0
|
50.14
|
0
|
[]
|
[{"post_id": 81688, "ts": "202 [{"post_id": 81688, "ts": "2026-10-22T02:55:04Z", "hours": 3.0206, "text": "You can now change the difficulty of the game! Below is a little preview of what the different difficulties look like in the last wave, and there is no sound because I forgot to enable it. The next thing I’ll work on is a scoring system. Hopefully I can get that done quickly because it is approaching the deadline yet again."}, {"post_id": 80536, "ts": "2026-10-18T03:02:16Z", "hours": 2.4469, "text": "I added a bunch of sound effects, and the game just feels so much better now. After I finish sound effects, I will add a difficulty setting and make some small tweaks before shipping. Shipping feels so close yet so far."}, {"post_id": 79934, "ts": "2026-10-15T18:08:31Z", "hours": 9.9069, "text": "How do animators do it? I’ve been working on an animation for Bob’s backstory, and I’m losing the desire to ever touch an animation timeline again. I finished all of the animation frames and sound effects, but this isn’t the full thing yet because I’m still putting the entire animation together."}, {"post_id": 62676, "ts": "2026-09-06T04:58:32Z", "hours": 3.7964, "text": "I made the title screem and it works (necessary) also look what I figured out how to do: 🎉 Ⓜ️ ⭕"}, {"post_id": 59349, "ts": "2026-09-01T02:54:15Z", "hours": 3.6314, "text": "I added fortnite storm but like red⛈️ and : a second larger health bar that appears when you leave the camera view the damage while outside the screen increases by one every time you take storm damage but resets when you re-enter the camera view I do think I went overboard with the vignette; I will probably be dialing it back later"}, {"post_id": 46105, "ts": "2026-08-13T02:52:46Z", "hours": 0.6894, "text": "Finished redesigning the “Wave #” text, and I had to redo the outro animation. I had to find a balance between wiggly and seizure inducing bc the wiggly style is quite violent when scaled up. I might change it later… Does anybody know how to get time recorded with Lapse/Lookout added to your project here on Stardance?"}, {"post_id": 45530, "ts": "2026-08-12T02:20:26Z", "hours": 0.7753, "text": "Started working on hand drawing all of the text, got the wave title and its wiggle done. I will be making the wiggle less severe though."}, {"post_id": 44337, "ts": "2026-08-10T01:04:44Z", "hours": 0.6575, "text": "git commit -m “Fixed bob’s healthbar, fixed button not re-appearing after first retry, gave retry button more wiggly style” best devlog oat? I think I’m gonna replace the passive-aggressive text with a voice-over and start hand-drawing all of the text; bouta suffer and it’s all my own fault🙏."}, {"post_id": 43110, "ts": "2026-08-08T06:16:34Z", "hours": 4.8125, "text": "Reset Button + Linux Trouble I made this reset button and it took hella long. I had no idea where to start, and it looks quite out of place because of how 9-piece buttons work. When you press it, the button disappears and the screen fades. After a second, bob fades back into existence, and wave 1 starts again. I also switched to Linux recently and got to troubleshoot Wakatime for an hour before realizing it just wasn’t installed and I needed more than just the Godot plugin. ( still love it though ) Next time I’m going to make the “Ouchie” text ( see in video ) rotate between a few different passive-aggressive comments , add text inside of the reset button, and fix the button not appearing after the first reset."}, {"post_id": 37417, "ts": "2026-07-30T03:41:24Z", "hours": 1.0375, "text": "I honestly don’t know what in the ever living I was doing in Krita, but I got this sick little animation done😁. Lowkey took a long time, but I’m pretty happy with the final result. Originally, I was going to have both of bob’s hands clutching his chest, but in the midst of drawing them, I realized that they no longer looked like arms lol. Don’t draw both arms of a stick figure clutching its chest, kids."}, {"post_id": 34860, "ts": "2026-07-25T22:11:49Z", "hours": 2.05, "text": "Today was kinda light and a little less complicated. I started off by creating a function that freezes all of the gloinks. Then I messed with tweens for the first time and created the animation you can see in the video. Lastly, I reused some of bob’s old sprites and put Xs over his eyes. Now he can actually die, yay!"}, {"post_id": 33266, "ts": "2026-07-23T01:34:23Z", "hours": 2.1939, "text": "Today I did quite a bit, and I’m very happy with what I got done. I fixed a few bugs, but most notably, I finished all of the waves and made them run consecutively. Next, I’m either going to work on the cutscenes or what happens when the player dies. I might even add a difficulty setting in the future too, who knows?"}, {"post_id": 30513, "ts": "2026-07-18T04:38:48Z", "hours": 2.0064, "text": "Today I started on the wave system and got three of them done. The clip below is each of them. The rest shouldn’t take long and I hope to get them done tomorrow. After that, I have to get them running in succession, but that may happen another day. I would also like peoples’ opinions on whether I should put hard boundary at the edge of the screen or penalize the player for every second they stay outside of the screen. What do you think?"}, {"post_id": 25743, "ts": "2026-07-10T05:38:22Z", "hours": 0.6281, "text": "Today I worked on a little animation for the start of each wave. It took me like an hour and it’s not very complicated. I had a lot of fun making it though and I hope to do some more little animations in the future."}, {"post_id": 21784, "ts": "2026-07-03T21:52:58Z", "hours": 1.0853, "text": "Today I didn’t do too much, but I am happy with what I got done. I got the health bars working on all of the Gloinks, and they should be fully functional now. I also fixed an issue with the bullet direction, where it was heading a little bit left of the mouse. Lastly, I added a few degrees of offset to the direction of the bullet."}, {"post_id": 21289, "ts": "2026-07-03T04:17:37Z", "hours": 1.1308, "text": "Today I mainly worked on getting bob to shoot and those bullets doing damage. Even though the Gloinks don’t have visible health bars yet, they still take damage and are deleted when they take enough damage; Even their projectiles can be killed by the bullet. While writing this I realized that the bullets weren’t being deleted, so I just fixed that. I also fixed an issue where the Pentagon’s projectiles were flying at supersonic speeds. I don’t think I did anything else though, but tomorrow I’ll try to find out why the bullets from bob’s gun aren’t heading straight to the mouse pointer."}, {"post_id": 17350, "ts": "2026-06-28T03:05:00Z", "hours": 1.4908, "text": "Today I worked on collisions and actually having the player take damage. I also created a health bar. Tomorrow I’ll add the health bar to the Gloinks and maybe even make the player’s gun functional."}, {"post_id": 14860, "ts": "2026-06-24T03:58:41Z", "hours": 2.4106, "text": "Yesterday, I got the Heptagon working; however, I couldn’t upload the devlog. I had some issues where when I moved my project from my laptop to my computer, Wakatime thought that I was working on a different project. It’s counting my time correctly now, but I still lost an hour and a half. I submitted a ticket and I hope they get to that soon. Today, I just copied the Hexagon’s code to the Octagon to make it shoot 5 mini gloinks. Tomorrow I’d like to start on the whole health and damage system, but I might take a short 1-day break to avoid losing motivation. If anybody has a similar issue with Wakatime, create a file named exactly “.wakatime-project” (Make sure that you have show file extensions enabled) and put it in your root directory. Then edit the file and make the first line the exact name (You can find this at hackatime.hackclub.com) of the project Wakatime has counted the majority of your time to."}, {"post_id": 13538, "ts": "2026-06-22T04:45:06Z", "hours": 0.7911, "text": "Today I didn’t do too much, but I was able to get the Pentagon working properly and added functionality to the Hexagon. Tomorrow I’ll work on the Heptagon and Octagon, and hopefully, I’ll get both of them done."}, {"post_id": 12926, "ts": "2026-06-21T05:01:43Z", "hours": 3.0122, "text": "Today I got a few things done. First was the “storyline”, in a text file I put together how I wanted the “story” to progress and kinda how the game and menus would be structured. Then I drew sprites for the 6 different enemies: The Triangle, Square, Pentagon, Hexagon, Heptagon, and Octagon (so unique ik). Each enemy is a little different in terms of health, movement speed, and abilities. Today I was able to get the Triangle, Square, Pentagon coded in, however, I have to work out some bugs in the pentagon. Tomorrow I’ll probably just be grinding out programming the rest of the enemies."}, {"post_id": 11523, "ts": "2026-06-18T20:20:59Z", "hours": 1.9808, "text": "Today I did a few things. I started off with finishing the walking animations, you can see them in this video. They took a while but it was fun. Then I worked on the rotating arm. The math was a little difficult so I had Claude explain it to me, but I still wrote it in myself. Lastly, I cleaned up the code a bit. Next time I work on this I’ll add the second arm to the arm sprite and either start working on enemies or make the gun shoot."}, {"post_id": 11094, "ts": "2026-06-18T04:22:24Z", "hours": 0.5808, "text": "Today I created the stick man character and gave him a few animations, most notably, the walking animations. Tomorrow I will clean up some of the animation frames because there are some random pixels in a few as well as drawing walking up and down animations. I’ll probably make him bigger too."}]...
|
Title: ShooterManGame by @RileyTheSane | Stardance Title: ShooterManGame by @RileyTheSane | Stardance
Devlogs:
Today I created the stick man character and gave him a few animations, most notably, the walking animations. Tomorrow I will clean up some of the animation frames because there are some random pixels in a few as well as drawing walking up and down animations. I’ll probably make him bigger too.
Today I did a few things. I started off with finishing the walking animations, you can see them in this video. They took a while but it was fun. Then I worked on the rotating arm. The math was a little difficult so I had Claude explain it to me, but I still wrote it in myself. Lastly, I cleaned up the code a bit. Next time I work on this I’ll add the second arm to the arm sprite and either start working on enemies or make the gun shoot.
Today I got a few things done. First was the “storyline”, in a text file I put together how I wanted the “story” to progress and kinda how the game and menus would be structured. Then I drew sprites for the 6 different enemies: The Triangle, Square, Pentagon, Hexagon, Heptagon, and Octagon (so unique ik). Each enemy is a little different in terms of health, movement speed, and abilities. Today I was able to get the Triangle, Square, Pentagon coded in, however, I have to work out some bugs in the pentagon. Tomorrow I’ll probably just be grinding out programming the rest of the enemies.
Today I didn’t do too much, but I was able to get the Pentagon working properly and added functionality to the Hexagon. Tomorrow I’ll work on the Heptagon and Octagon, and hopefully, I’ll get both of them done.
Yesterday, I got the Heptagon working; however, I couldn’t upload the devlog. I had some issues where when I moved my project from my laptop to my computer, Wakatime thought that I was working on a different project. It’s counting my time correctly now, but I still lost an hour and a half. I submitted a ticket and I hope they get to that soon. Today, I just copied the Hexagon’s code to the Octagon to make it shoot 5 mini gloinks. Tomorrow I’d like to start on the whole health and damage system, but I might take a short 1-day break to avoid losing motivation. If anybody has a similar issue with Wakatime, create a file named exactly “.wakatime-project” (Make sure that you have show file extensions enabled) and put it in your root directory. Then edit the file and make the first line the exact name (You can find this at hackatime.hackclub.com) of the project Wakatime has counted the majority of your time to.
Today I worked on collisions and actually having the player take damage. I also created a health bar. Tomorrow I’ll add the health bar to the Gloinks and maybe even make the player’s gun functional.
Today I mainly worked on getting bob to shoot and those bullets doing damage. Even though the Gloinks don’t have visible health bars yet, they still take damage and are deleted when they take enough damage; Even their projectiles can be killed by the bullet. While writing this I realized that the bullets weren’t being deleted, so I just fixed that. I also fixed an issue where the Pentagon’s projectiles were flying at supersonic speeds. I don’t think I did anything else though, but tomorrow I’ll try to find out why the bullets from bob’s gun aren’t heading straight to the mouse pointer.
Today I didn’t do too much, but I am happy with what I got done. I got the health bars working on all of the Gloinks, and they should be fully functional now. I also fixed an issue with the bullet direction, where it was heading a little bit left of the mouse. Lastly, I added a few degrees of offset to the direction of the bullet.
Today I worked on a little animation for the start of each wave. It took me like an hour and it’s not very complicated. I had a lot of fun making it though and I hope to do some more little animations in the future.
Today I started on the wave system and got three of them done. The clip below is each of them. The rest shouldn’t take long and I hope to get them done tomorrow. After that, I have to get them running in succession, but that may happen another day. I would also like peoples’ opinions on whether I should put hard boundary at the edge of the screen or penalize the player for every second they stay outside of the screen. What do you think?
Today I did quite a bit, and I’m very happy with what I got done. I fixed a few bugs, but most notably, I finished all of the waves and made them run consecutively. Next, I’m either going to work on the cutscenes or what happens when the player dies. I might even add a difficulty setting in the future too, who knows?
Today was kinda light and a little less complicated. I started off by creating a function that freezes all of the gloinks. Then I messed with tweens for the first time and created the animation you can see in the video. Lastly, I reused some of bob’s old sprites and put Xs over his eyes. Now he can actually die, yay!
I honestly don’t know what in the ever living I was doing in Krita, but I got this sick little animation done😁. Lowkey took a long time, but I’m pretty happy with the final result. Originally, I was going to have both of bob’s hands clutching his chest, but in the midst of drawing them, I realized that they no longer looked like arms lol. Don’t draw both arms of a stick figure clutching its chest, kids.
Reset Button + Linux Trouble I made this reset button and it took hella long. I had no idea where to start, and it looks quite out of place because of how 9-piece buttons work. When you press it, the button disappears and the screen fades. After a second, bob fades back into existence, and wave 1 starts again. I also switched to Linux recently and got to troubleshoot Wakatime for an hour before realizing it just wasn’t installed and I needed more than just the Godot plugin. ( still love it though ) Next time I’m going to make the “Ouchie” text ( see in video ) rotate between a few different passive-aggressive comments , add text inside of the reset button, and fix the button not appearing after the first reset.
git commit -m “Fixed bob’s healthbar, fixed button not re-appearing after first retry, gave retry button more wiggly style” best devlog oat? I think I’m gonna replace the passive-aggressive text with a voice-over and start hand-drawing all of the text; bouta suffer and it’s all my own fault🙏.
Started working on hand drawing all of the text, got the wave title and its wiggle done. I will be making the wiggle less severe though.
Finished redesigning the “Wave #” text, and I had to redo the outro animation. I had to find a balance between wiggly and seizure inducing bc the wiggly style is quite violent when scaled up. I might change it later… Does anybody know how to get time recorded with Lapse/Lookout added to your project here on Stardance?
I added fortnite storm but like red⛈️ and : a second larger health bar that appears when you leave the camera view the damage while outside the screen increases by one every time you take storm damage but resets when you re-enter the camera view I do think I went overboard with the vignette; I will probably be dialing it back later
I made the title screem and it works (necessary) also look what I figured out how to do: 🎉 Ⓜ️ ⭕
How do animators do it? I’ve been working on an animation for Bob’s backstory, and I’m losing the desire to ever touch an animation timeline again. I finished all of the animation frames and sound effects, but this isn’t the full thing yet because I’m still putting the entire animation together.
I added a bunch of sound effects, and the game just feels so much better now. After I finish sound effects, I will add a difficulty setting and make some small tweaks before shipping. Shipping feels so close yet so far.
You can now change the difficulty of the game! Below is a little preview of what the different difficulties look like in the last wave, and there is no sound because I forgot to enable it. The next thing I’ll work on is a scoring system. Hopefully I can get that done quickly because it is approaching the deadline yet again....
|
1792792130.2162519
|
1793396930.2162519
|
|
2268
|
Matcha Linux by @DoMax | Stardance
|
DoMax
|
2
|
50.0
|
831
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T17:35:30Z", "hours": 23.0, "multiplier": 15.71, "payout": 424, "blessing": "neutral", "text": "3 months since the last release! Here’s how Matcha Linux improved: New install flow : It can finally be installed on real hardware Package installation is now more robust, handling package installation properly, with APK tags Many new bugfixes within the matcha-calamares package regarding mounting, cleanup, package management and more Installer optimizations - Live install environment uses only 2.5GB of RAM, allowing for 3GB of RAM support! (Huge improvement btw) Bloat removal - The current build features a stripped version of GNOME without, saving both RAM and disk space. Some packages were replaced in favor of alternatives OpenGL version checking - Some of the system components require OpenGL 4.3+ and GPUs that don’t support it now offload the rendering to CPU to avoid crashes NEW Requirements Memory : 3GB of RAM Storage : 5GB free disk space for installation UEFI Firmware : Required, legacy BIOS not supported Known Limitations If there is more than one iso9660 filesystem mounted while installing, the installer will trigger an error Since the current requirement for GPU-driven OpenGL rendering is OpenGL 4.3+, some systems might feel sluggish due to the CPU doing all the work I hope you enjoy testing and using Matcha Linux :D", "repo": "https://github.com/domasles/matcha-linux", "demo": "https://github.com/domasles/matcha-linux/releases/tag/2026.09.11"}, {"ship_num": 2, "ts": "2026-06-09T22:16:00Z", "hours": 27.0, "multiplier": 15.16, "payout": 407, "blessing": "neutral", "text": "I engineered Matcha Linux - a fresh, fast, and fluid desktop OS built on top of Alpine Linux to combat software bloat and give any x86_64 UEFI hardware a life with a gorgeous and usable GNOME experience. It idles at JUST 1.5GB of RAM! The OS includes a custom port of Calamares installer specifically made for Matcha Linux (which probably took the most amount of work), and a heavily customized unique GNOME desktop. Navigating the initial release was a rollercoaster of debugging broken services, installer locales, build and install issues, encryption, swap configuration and ISO permissions, but the stable 2026.06.09 build is officially live, works out-of-the-box. Before testing it live or in a VM (4GB RAM, 10GB storage minimum, UEFI only), note that native glibc apps require a quick Distrobox container setup to run on Alpine.", "repo": "https://github.com/domasles/matcha-linux", "demo": "https://github.com/domasles/matcha-linux/releases/tag/2026.09.11"}]...
|
[{"post_id": 66191, "ts": "202 [{"post_id": 66191, "ts": "2026-09-11T21:09:11Z", "hours": 9.8739, "text": "Pre-ship devlog This post is about everything that recently happened with Matcha Linux 1. New terminal app! Yes, gnome-console got boring, so I replaced it! With none other than ghostty . It’s great - has hardware rendering support, native integration with Kitty image rendering (so fastfetch renders the logo properly) and MANY color themes, one of which happens to perfectly match Matcha’s look and feel. 2. Package management Since ghostty is from Alpine’s edge repos, I had to find a native way of tagging the packages both while building the iso, and installing the system. Previous approach blindly installed every package from live ISO. This works only when every package is designed to be sourced from the stable branch. One edge package and updates (or maybe the whole system) breaks! Now, a helper file helps install the necessary packages both onto the ISO and later system’s disk. Since packages are installed by their names, not separate files from some medium, the installation can also be way more accurate and, in some cases, more compact. 3. OpenGL checks Ghostty loves OpenGL. But it relies on OpenGL 4.3+, and on hardware that doesn’t support this - crashes. Luckily, if GPU bridge fails, CPU can handle OpenGL operations just as well! Matcha Linux, starting from today, is expecting hardware to support OpenGL 4.3+ to utilize the GPU for OpenGL APIs. Anything older than 2013-ish (which goes on par with UEFI requirement) would fail. In case of that happening, I added conditional rendering to use the CPU as a fallback. For now, however, it’s system-wide (to support any other software built with OpenGL 4.3+). OpenGL ES is not supported on the GPU at the moment. 4. Bugfixes!! Who doesn’t love when their software just… Works? The upgraded matcha-calamares installer now has a full cleanup stage, correctly catches errors regarding the install ISO presence, also has fixes for many other mount and install issues that could happen in earlier releases. Bottom line I love building this Linux distro. The challenges I have to face and the amount of operation ordering I have to do helps me improve. Structure is one of the skills I think humanity is yet to fully master, and i hope that one day, it can. As for the future of Matcha, it will continue to grow! Tech never sleeps, new releases need updates, and Matcha mustn’t be left behind. I also have more ambitious stuff planned (like an update manager and distrobox install module for calamares), and they are the only thing I’m afraid of implementing. For now, I’ll stick to making Matcha Linux as stable as possible, and then focus on something more exciting. I hope more people find this distro to test, daily drive and share the feedback! Always exciting to engage with communities."}, {"post_id": 63003, "ts": "2026-09-06T15:55:04Z", "hours": 10.5983, "text": "3GB RAM milestone!! How I managed to achieve 3GB RAM usage in the live environment (but at the same time - break a couple things) Stage 1 - package optimization Probably not a surprise to you that Gnome desktop environment is a heavy beast. Well, as it turns out, it bundles a bunch of stuff that’s not technically required to run the system. Alpine package gnome adds many apps (like calendar, weather and more) that aren’t relevant anymore. However, even though unused, they take up space, and in Alpine, the live environment installs every package onto ram to provide a diskless environment. At first I tried making a filesystem capable of loading packages from mounted iso as it’s necessary for the install either way, but optimizing package selection turned out to be easier (besides - who has a 64bit system with less than 6GB ram these days?) Stage 2 - package loading The fact that package selection is optimized to reduce Gnome’s bloat wasn’t enough to make the install environment lighter. Alpine has a file /etc/apk/world in which every package that should be installed is defined. Utilizing it I could control what packages must appear within the live system, and which - not (because you probably don’t need a heavy browser before installing the system). Stage 3 - things break if you’re too brave And they broke for me too. Certain admin functionality (like some polkit integrations) don’t work anymore due to the limited selection (and probably some hidden dependencies) of packages. I think I have diagnozed the issue though - testing suggests that it could be the missing linux-pam package or some dbus initialization race conditions. Other important updates Besides implementing optimizations to the image (consequences of which I can hopefully fix), I also made sure to update extensions, as well as the matcha-calamares package that now has a broader support for systems and reduces crashes. The building pipeline was also slightly tweaked. Either way, I’m off to fixing the issue, so see you in the next devlog!"}, {"post_id": 6344, "ts": "2026-06-10T17:58:42Z", "hours": 2.6097, "text": "Today, when one Hack Clubber pointed out that they wish to try Matcha Linux on Hyper-V, I thought it would work. Turns out I was completely wrong! Linux, built with the LTS kernel instead of VM-specific (Virt), breaks on Hyper-V due to inability to pass the framebuffer through Hyper-V’s exceptional drivers (or so I think). The minimal terminal works, but flickers due to GDM trying to restart every few ms. Implementing a dual-ISO build pipeline I fixed this issue and also made Matcha Linux and its packages work on top of a new Alpine (v3.24) release. Thought it would be harder, but both Alpine itself, and Gnome 50 play along very well! Also added Hyper-V specific instructions to the README."}, {"post_id": 5905, "ts": "2026-06-09T21:37:53Z", "hours": 5.8019, "text": "It builds, it runs, it WORKS! I was really surprised with how this OS turned out. After what seemed like a rollercoaster of issues that had me stumped for a while, and countless hours of debugging, I STILL managed to deliver a working product this soon. It relieved me, and I can consider myself both lucky and proud. After fixing all said issues in the previous devlogs, I present Matcha Linux 2026.06.09 - the initial release. Matcha Linux was made to combat e-waste, hardware pricing increase and provide a beautiful yet customizable experience to absolutely anyone! By being able to run it on any x86_64 UEFI-compatible piece of hardware, using very few resources, Matcha Linux aims to be the primary choice for people trying to escape bloat. What was fixed since the last devlog: Swap not working due to a service not being run on boot Locales not being correctly set up due to a missing installer module Additional tweaks: Reworked the permission system to be more reliable and controllable (when building the live ISO image) Implemented a proper post-install reboot mechanism by tweaking installer’s configuration Refactored build source files to be more compact, added comments where necessary Removed keyboard configuration from the installer due to it not being well integrated with GNOME Cleaned up repositories, added better documentation, published first working release files I consider this experience a lesson not only about Linux, but also the need of doing things sequentally, planning and always going forward, no matter what challenge waits up front. Do I have something else planned for the future? YES! But these things may be quite difficult: A custom installer module to provide the setup for Distrobox (to run almost any Linux app (by default they won’t run unless installed through APK and are within Alpine Linux repositories. Running layered Debian, Arch or Fedora boxes creates disposable and highly capable environments)) A custom updater program (probably won’t be integrated this summer) Further debugging and engaging with the community I hope this project inspires many people to build projects and solve problems for the whole world. Open source, as it should be."}, {"post_id": 4584, "ts": "2026-06-07T22:33:32Z", "hours": 4.8797, "text": "Several bugs fixed! (And one drawback taken) First off, with the fixes: Installer UI no longer crashes when selecting a swap option or entering encryption details (the issue was only persistent on legacy BIOS boot and without a certain configuration file (bootloader.conf, that got added)) Encryption finally works! Can’t show in the devlog image, but a disk can be encrypted and decrypted with LUKS properly A non-encrypted approach of installation is also viable and works as it should Drawback (the sad part): Since I couldn’t get legacy BIOS to not crash the installer in a mentioned case, after strong considerations I have decided that Matcha Linux will only officially support EFI, and enforced this behaviour in the build pipeline This gets along the philosophy of using modern lightweight standards that Matcha tries to utilize, so it’s not much of a loss What remains broken: Swap memory does not seem to be working in the installed system, even when the necessary files ARE created by the installer Timezones don’t still work properly After fixing said issues the project will be ready to ship. Hopefully it shouldn’t take more than a week"}, {"post_id": 3405, "ts": "2026-06-06T10:02:47Z", "hours": 2.0461, "text": "I have successfully resolved the issues found in the earlier build, and everything works (almost) flawlessly now! New things: Cleaned up build scripts to make them more portable and more easily readable Implemented package exclusion when installing the OS Customized the default dock apps list Improved branding by implementing FastFetch configuration However, I have noticed some bugs that are worth taking a look into: When setting up the disk with swap space, the installer crashes. Maybe just a package missing that handles this LUKS encryption does not work Timezone setup is useless as it doesn’t set up the timezone (manual setup is working post-install, but the installer SHOULD set that up) After fixing those, Matcha Linux can finally ship!"}, {"post_id": 2736, "ts": "2026-06-05T14:28:43Z", "hours": 9.1078, "text": "Since the last devlog, I put in a LOT of work to make the whole OS build properly This includes: Setting up a well-working approach for installing Matcha Calamares installer to the live system Adding a README to (almost) all repositories related to this project Customizing the installer Tweaking a few things for smoother performance Next steps are: Removing hardcoded references to just make the images “build and run” Reflecting ways of optimization Excluding unnecessary stuff from the installed system Testing everything for the final time Shipping! Wish me luck, now I’m heading out, polishing this project"}, {"post_id": 1081, "ts": "2026-06-02T21:55:39Z", "hours": 1.3753, "text": "FINALLY did I fix the system running incorrectly Turns out, the problem was a faulty overlay that kept overwriting user account files, thus revoking the ability for some system services to run! Now the system installs beautifully, runs even prettier, only thing left is to test whether there is no junk in a fresh system and the user is set up correctly and if the startup times could be improved (unless it’s VirtualBox-specific) Other goals haven’t changed since the last devlog, but I am starting to question if I really need to write software for this distribution myself (for issuing updates, etc…) because the process should be fairly straightforward"}, {"post_id": 844, "ts": "2026-06-02T15:19:59Z", "hours": 3.6919, "text": "First devlog, and with good news already! After successfully porting Calamares installer over to Alpine Linux, today I also made it install the system correctly The issue was bad grub configuration that either did not mount the system or did not load ext4 kernel module With that resolved (and a bit of a rework on live iso build profile) Matcha Linux is one step closer to being at least usabe post-install Remaining issues are: Incorrect group and user creation process due to which dbus service can’t launch (critical) Remaining steps are: Testing if other core services that depend on dbus launch after fixing the issue Testing the system and whether everything copies correctly Future plans: Customizing the installer Adding a DistroBox Debian shell by default for app compatibility Making an updater app"}]...
|
Title: Matcha Linux by @DoMax | Stardance
Devlogs Title: Matcha Linux by @DoMax | Stardance
Devlogs:
First devlog, and with good news already! After successfully porting Calamares installer over to Alpine Linux, today I also made it install the system correctly The issue was bad grub configuration that either did not mount the system or did not load ext4 kernel module With that resolved (and a bit of a rework on live iso build profile) Matcha Linux is one step closer to being at least usabe post-install Remaining issues are: Incorrect group and user creation process due to which dbus service can’t launch (critical) Remaining steps are: Testing if other core services that depend on dbus launch after fixing the issue Testing the system and whether everything copies correctly Future plans: Customizing the installer Adding a DistroBox Debian shell by default for app compatibility Making an updater app
FINALLY did I fix the system running incorrectly Turns out, the problem was a faulty overlay that kept overwriting user account files, thus revoking the ability for some system services to run! Now the system installs beautifully, runs even prettier, only thing left is to test whether there is no junk in a fresh system and the user is set up correctly and if the startup times could be improved (unless it’s VirtualBox-specific) Other goals haven’t changed since the last devlog, but I am starting to question if I really need to write software for this distribution myself (for issuing updates, etc…) because the process should be fairly straightforward
Since the last devlog, I put in a LOT of work to make the whole OS build properly This includes: Setting up a well-working approach for installing Matcha Calamares installer to the live system Adding a README to (almost) all repositories related to this project Customizing the installer Tweaking a few things for smoother performance Next steps are: Removing hardcoded references to just make the images “build and run” Reflecting ways of optimization Excluding unnecessary stuff from the installed system Testing everything for the final time Shipping! Wish me luck, now I’m heading out, polishing this project
I have successfully resolved the issues found in the earlier build, and everything works (almost) flawlessly now! New things: Cleaned up build scripts to make them more portable and more easily readable Implemented package exclusion when installing the OS Customized the default dock apps list Improved branding by implementing FastFetch configuration However, I have noticed some bugs that are worth taking a look into: When setting up the disk with swap space, the installer crashes. Maybe just a package missing that handles this LUKS encryption does not work Timezone setup is useless as it doesn’t set up the timezone (manual setup is working post-install, but the installer SHOULD set that up) After fixing those, Matcha Linux can finally ship!
Several bugs fixed! (And one drawback taken) First off, with the fixes: Installer UI no longer crashes when selecting a swap option or entering encryption details (the issue was only persistent on legacy BIOS boot and without a certain configuration file (bootloader.conf, that got added)) Encryption finally works! Can’t show in the devlog image, but a disk can be encrypted and decrypted with LUKS properly A non-encrypted approach of installation is also viable and works as it should Drawback (the sad part): Since I couldn’t get legacy BIOS to not crash the installer in a mentioned case, after strong considerations I have decided that Matcha Linux will only officially support EFI, and enforced this behaviour in the build pipeline This gets along the philosophy of using modern lightweight standards that Matcha tries to utilize, so it’s not much of a loss What remains broken: Swap memory does not seem to be working in the installed system, even when the necessary files ARE created by the installer Timezones don’t still work properly After fixing said issues the project will be ready to ship. Hopefully it shouldn’t take more than a week
It builds, it runs, it WORKS! I was really surprised with how this OS turned out. After what seemed like a rollercoaster of issues that had me stumped for a while, and countless hours of debugging, I STILL managed to deliver a working product this soon. It relieved me, and I can consider myself both lucky and proud. After fixing all said issues in the previous devlogs, I present Matcha Linux 2026.06.09 - the initial release. Matcha Linux was made to combat e-waste, hardware pricing increase and provide a beautiful yet customizable experience to absolutely anyone! By being able to run it on any x86_64 UEFI-compatible piece of hardware, using very few resources, Matcha Linux aims to be the primary choice for people trying to escape bloat. What was fixed since the last devlog: Swap not working due to a service not being run on boot Locales not being correctly set up due to a missing installer module Additional tweaks: Reworked the permission system to be more reliable and controllable (when building the live ISO image) Implemented a proper post-install reboot mechanism by tweaking installer’s configuration Refactored build source files to be more compact, added comments where necessary Removed keyboard configuration from the installer due to it not being well integrated with GNOME Cleaned up repositories, added better documentation, published first working release files I consider this experience a lesson not only about Linux, but also the need of doing things sequentally, planning and always going forward, no matter what challenge waits up front. Do I have something else planned for the future? YES! But these things may be quite difficult: A custom installer module to provide the setup for Distrobox (to run almost any Linux app (by default they won’t run unless installed through APK and are within Alpine Linux repositories. Running layered Debian, Arch or Fedora boxes creates disposable and highly capable environments)) A custom updater program (probably won’t be integrated this summer) Further debugging and engaging with the community I hope this project inspires many people to build projects and solve problems for the whole world. Open source, as it should be.
Today, when one Hack Clubber pointed out that they wish to try Matcha Linux on Hyper-V, I thought it would work. Turns out I was completely wrong! Linux, built with the LTS kernel instead of VM-specific (Virt), breaks on Hyper-V due to inability to pass the framebuffer through Hyper-V’s exceptional drivers (or so I think). The minimal terminal works, but flickers due to GDM trying to restart every few ms. Implementing a dual-ISO build pipeline I fixed this issue and also made Matcha Linux and its packages work on top of a new Alpine (v3.24) release. Thought it would be harder, but both Alpine itself, and Gnome 50 play along very well! Also added Hyper-V specific instructions to the README.
3GB RAM milestone!! How I managed to achieve 3GB RAM usage in the live environment (but at the same time - break a couple things) Stage 1 - package optimization Probably not a surprise to you that Gnome desktop environment is a heavy beast. Well, as it turns out, it bundles a bunch of stuff that’s not technically required to run the system. Alpine package gnome adds many apps (like calendar, weather and more) that aren’t relevant anymore. However, even though unused, they take up space, and in Alpine, the live environment installs every package onto ram to provide a diskless environment. At first I tried making a filesystem capable of loading packages from mounted iso as it’s necessary for the install either way, but optimizing package selection turned out to be easier (besides - who has a 64bit system with less than 6GB ram these days?) Stage 2 - package loading The fact that package selection is optimized to reduce Gnome’s bloat wasn’t enough to make the install environment lighter. Alpine has a file /etc/apk/world in which every package that should be installed is defined. Utilizing it I could control what packages must appear within the live system, and which - not (because you probably don’t need a heavy browser before installing the system). Stage 3 - things break if you’re too brave And they broke for me too. Certain admin functionality (like some polkit integrations) don’t work anymore due to the limited selection (and probably some hidden dependencies) of packages. I think I have diagnozed the issue though - testing suggests that it could be the missing linux-pam package or some dbus initialization race conditions. Other important updates Besides implementing optimizations to the image (consequences of which I can hopefully fix), I also made sure to update extensions, as well as the matcha-calamares package that now has a broader support for systems and reduces crashes. The building pipeline was also slightly tweaked. Either way, I’m off to fixing the issue, so see you in the next devlog!
Pre-ship devlog This post is about everything that recently happened with Matcha Linux 1. New terminal app! Yes, gnome-console got boring, so I replaced it! With none other than ghostty . It’s great - has hardware rendering support, native integration with Kitty image rendering (so fastfetch renders the logo properly) and MANY color themes, one of which happens to perfectly match Matcha’s look and feel. 2. Package management Since ghostty is from Alpine’s edge repos, I had to find a native way of tagging the packages both while building the iso, and installing the system. Previous approach blindly installed every package from live ISO. This works only when every package is designed to be sourced from the stable branch. One edge package and updates (or maybe the whole system) breaks! Now, a helper file helps install the necessary packages both onto the ISO and later system’s disk. Since packages are installed by their names, not separate files from some medium, the installation can also be way more accurate and, in some cases, more compact. 3. OpenGL checks Ghostty loves OpenGL. But it relies on OpenGL 4.3+, and on hardware that doesn’t support this - crashes. Luckily, if GPU bridge fails, CPU can handle OpenGL operations just as well! Matcha Linux, starting from today, is expecting hardware to support OpenGL 4.3+ to utilize the GPU for OpenGL APIs. Anything older than 2013-ish (which goes on par with UEFI requirement) would fail. In case of that happening, I added conditional rendering to use the CPU as a fallback. For now, however, it’s system-wide (to support any other software built with OpenGL 4.3+). OpenGL ES is not supported on the GPU at the moment. 4. Bugfixes!! Who doesn’t love when their software just… Works? The upgraded matcha-calamares installer now has a full cleanup stage, correctly catches errors regarding the install ISO presence, also has fixes for many other mount and install issues that could happen in earlier releases. Bottom line I love building this Linux distro. The challenges I have to face and the amount of operation ordering I have to do helps me improve. Structure is one of the skills I think humanity is yet to fully master, and i hope that one day, it can. As for the future of Matcha, it will continue to grow! Tech never sleeps, new releases need updates, and Matcha mustn’t be left behind. I also have more ambitious stuff planned (like an update manager and distrobox install module for calamares), and they are the only thing I’m afraid of implementing. For now, I’ll stick to making Matcha Linux as stable as possible, and then focus on something more exciting. I hope more people find this distro to test, daily drive and share the feedback! Always exciting to engage with communities.
Ships:
I engineered Matcha Linux - a fresh, fast, and fluid desktop OS built on top of Alpine Linux to combat software bloat and give any x86_64 UEFI hardware a life with a gorgeous and usable GNOME experience. It idles at JUST 1.5GB of RAM! The OS includes a custom port of Calamares installer specifically made for Matcha Linux (which probably took the most amount of work), and a heavily customized unique GNOME desktop. Navigating the initial release was a rollercoaster of debugging broken services, installer locales, build and install issues, encryption, swap configuration and ISO permissions, but the stable 2026.06.09 build is officially live, works out-of-the-box. Before testing it live or in a VM (4GB RAM, 10GB storage minimum, UEFI only), note that native glibc apps require a quick Distrobox container setup to run on Alpine.
3 months since the last release! Here’s how Matcha Linux improved: New install flow : It can finally be installed on real hardware Package installation is now more robust, handling package installation properly, with APK tags Many new bugfixes within the matcha-calamares package regarding mounting, cleanup, package management and more Installer optimizations - Live install environment uses only 2.5GB of RAM, allowing for 3GB of RAM support! (Huge improvement btw) Bloat removal - The current build features a stripped version of GNOME without, saving both RAM and disk space. Some packages were replaced in favor of alternatives OpenGL version checking - Some of the system components require OpenGL 4.3+ and GPUs that don’t support it now offload the rendering to CPU to avoid crashes NEW Requirements Memory : 3GB of RAM Storage : 5GB free disk space for installation UEFI Firmware : Required, legacy BIOS not supported Known Limitations If there is more than one iso9660 filesystem mounted while installing, the installer will trigger an error Since the current requirement for GPU-driven OpenGL rendering is OpenGL 4.3+, some systems might feel sluggish due to the CPU doing all the work I hope you enjoy testing and using Matcha Linux :D...
|
1793123498.549076
|
1793209898.549076
|
|
13805
|
Threejs mountain by @trung_nguyen | Stardance
|
trung_nguyen
|
1
|
50.0
|
784
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T09:37:21Z", "hours": 50.0, "multiplier": 17.7, "payout": 784, "blessing": "neutral", "text": "Just shipped Mountain 🏔️ — an interactive WebGPU scene where a single 3D mountain morphs through four worlds: Snow → Night → Meadow → Ocean. Each has its own light, weather, and camera, stitched together by a GPU “energy wave” that sweeps up the peak and washes the next chapter in. The fun part: it’s one mountain mesh, not four scenes. A single shader paints all four looks, and every transition runs as per-frame GPU work — windy snow, glowing night, a meadow full of flowers and fog, an animated ocean with foam and a real lake reflection. Built with Three.js (WebGPU + TSL) and React Three Fiber. Best viewed in Chrome/Edge — switch chapters with the nav at the bottom 👀 🔗 https://2trung.github.io/mountain", "repo": "https://github.com/2trung/mountain", "demo": "https://2trung.github.io/mountain/"}]...
|
[{"post_id": 11857, "ts": "202 [{"post_id": 11857, "ts": "2026-06-19T09:32:22Z", "hours": 9.0853, "text": "last day was a grind, added the dynamic background transitions so the sky changes between chapters, did parallax for some depth (this little touch makes it feel so much more alive), and added the nav buttons so u can actually jump between scenes instead of just scrolling."}, {"post_id": 10684, "ts": "2026-06-17T15:25:38Z", "hours": 8.3386, "text": "new scene!! the ocean one with the island. this was probably the most fun so far. made an ocean wrapping around the island, added foam near the shore and scattered some rocks around so it doesnt look empty. improved the water movement too, reused some stuff from the lake which saved me. coastal mountains in the back tie it together. starting to feel like a real place which is sick"}, {"post_id": 9996, "ts": "2026-06-16T15:11:11Z", "hours": 15.7522, "text": "added a LAKE today. the meadow scene needed water and omg the reflections were a nightmare. like genuinely the water looked like cursed plastic for hours before i got it looking semi decent. stuff i did: added the lake water reflections + surface (the pain) blended the terrain around the shore so it doesnt just clip into the water threw in some fog for depth, instantly made it look 10x better honestly fog is so underrated it hides all my sins"}, {"post_id": 8715, "ts": "2026-06-14T14:08:09Z", "hours": 7.3389, "text": "2 of the 4 scenes are basically done now lets gooo. spent today on lighting mostly, the first version looked super flat and depressing so i messed with it til it had some actual mood to it. also kept tweaking materials (probably spent too long on this, i keep going back and changing tiny things nobody will notice). and i adjusted the camera framing so each scene actually looks composed n not random. feeling good about progress"}, {"post_id": 8074, "ts": "2026-06-13T14:09:55Z", "hours": 3.7942, "text": "short one today, was kinda busy w school. mostly worked on the transitions between sections, getting the camera to glide instead of snapping. took way longer than expected, transitions are deceptively annoying. polished a few other things and called it."}, {"post_id": 6880, "ts": "2026-06-11T15:15:07Z", "hours": 4.0511, "text": "todays the day it started feeling like an actual project. did the clouds!! they’re procedural which sounds fancy but i basically just spent 4 hours fighting with noise functions until something cloud shaped appeared. animated them with TSL (still kinda new to me ngl) and wrote a custom material so they render right. also went back n refined the mountain peaks cause they looked too smooth/fake before. the vibe is slowly coming together, im hyped"}, {"post_id": 6574, "ts": "2026-06-11T01:20:12Z", "hours": 1.7125, "text": "ok so i finally started the three.js thing ive been putting off for like 2 weeks lol. spent most of today just getting the boilerplate going, canvas + camera + renderer blah blah. honestly the boring part but u gotta do it. got my first glb model loaded in and it showed up as a giant black blob until i realized i had zero lights in the scene classic. added some lighting and boom theres my mountain. also made the canvas resize properly cause i hate when stuff looks stretched on different screens. not much to look at yet but the bones are there. excited to actually make it pretty later"}]...
|
Title: Threejs mountain by @trung_nguyen | Stardan Title: Threejs mountain by @trung_nguyen | Stardance
Devlogs:
ok so i finally started the three.js thing ive been putting off for like 2 weeks lol. spent most of today just getting the boilerplate going, canvas + camera + renderer blah blah. honestly the boring part but u gotta do it. got my first glb model loaded in and it showed up as a giant black blob until i realized i had zero lights in the scene classic. added some lighting and boom theres my mountain. also made the canvas resize properly cause i hate when stuff looks stretched on different screens. not much to look at yet but the bones are there. excited to actually make it pretty later
todays the day it started feeling like an actual project. did the clouds!! they’re procedural which sounds fancy but i basically just spent 4 hours fighting with noise functions until something cloud shaped appeared. animated them with TSL (still kinda new to me ngl) and wrote a custom material so they render right. also went back n refined the mountain peaks cause they looked too smooth/fake before. the vibe is slowly coming together, im hyped
short one today, was kinda busy w school. mostly worked on the transitions between sections, getting the camera to glide instead of snapping. took way longer than expected, transitions are deceptively annoying. polished a few other things and called it.
2 of the 4 scenes are basically done now lets gooo. spent today on lighting mostly, the first version looked super flat and depressing so i messed with it til it had some actual mood to it. also kept tweaking materials (probably spent too long on this, i keep going back and changing tiny things nobody will notice). and i adjusted the camera framing so each scene actually looks composed n not random. feeling good about progress
added a LAKE today. the meadow scene needed water and omg the reflections were a nightmare. like genuinely the water looked like cursed plastic for hours before i got it looking semi decent. stuff i did: added the lake water reflections + surface (the pain) blended the terrain around the shore so it doesnt just clip into the water threw in some fog for depth, instantly made it look 10x better honestly fog is so underrated it hides all my sins
new scene!! the ocean one with the island. this was probably the most fun so far. made an ocean wrapping around the island, added foam near the shore and scattered some rocks around so it doesnt look empty. improved the water movement too, reused some stuff from the lake which saved me. coastal mountains in the back tie it together. starting to feel like a real place which is sick
last day was a grind, added the dynamic background transitions so the sky changes between chapters, did parallax for some depth (this little touch makes it feel so much more alive), and added the nav buttons so u can actually jump between scenes instead of just scrolling.
Ships:
Just shipped Mountain 🏔️ — an interactive WebGPU scene where a single 3D mountain morphs through four worlds: Snow → Night → Meadow → Ocean. Each has its own light, weather, and camera, stitched together by a GPU “energy wave” that sweeps up the peak and washes the next chapter in. The fun part: it’s one mountain mesh, not four scenes. A single shader paints all four looks, and every transition runs as per-frame GPU work — windy snow, glowing night, a meadow full of flowers and fog, an animated ocean with foam and a real lake reflection. Built with Three.js (WebGPU + TSL) and React Three Fiber. Best viewed in Chrome/Edge — switch chapters with the nav at the bottom 👀 🔗 https://2trung.github.io/mountain...
|
1792878507.1665027
|
1793742507.1665027
|
|
24718
|
Kerbal Gravity Program by @Systemic_speed | Starda Kerbal Gravity Program by @Systemic_speed | Stardance...
|
Systemic_speed
|
1
|
50.0
|
636
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T17:07:33Z", "hours": 50.0, "multiplier": 12.89, "payout": 636, "blessing": "neutral", "text": "Kerbal Gravity Program: SHIP - 1 Any KSP player knows the pain of planning a whole journey, then the Kraken wipes it and sends you back to the pad. Real missions are the same grind (see Cassini-Huygens: Cassini’s trajectory ). So I built KGRP — a mission planner for KSP you drive from a REPL or code, to plan and understand trips to other planets. Crash course pip install kgrp # Python 3.10+ kgrp # start the REPL help # every command, flag, and use Requirements Built on numpy (math), scipy (integration/solving), and pyvista (orbit and trajectory visualization), with rich and prompt-toolkit powering the REPL. What was challenging The math was the hard part — RKF(4)5 (Runge-Kutta-Fehlberg 4(5)), an adaptive-step integrator, was an absolute pain to get right. Shipping a real library was the other half; I’d made sites and small CLIs, but wasn’t sure this would hold together. What I’m proud of First thing I’ve ever put on PyPI. Along the way I got real with numpy, scipy, pyvista, and building a CLI/REPL people can actually use. A note on AI I used AI to help squash bugs and for the basic beautification of the README. The planning math and the tool itself are mine; the AI just helped me clean up and unstick the rough parts. Try it It’s out — test it, throw it at the wall, and send notes via feedback. P.S. There are a few easter eggs hiding in the errors. Go find them. Happy orbiting!!!", "repo": "https://github.com/Gautham-rgb/Kerbal-Gravity-Program", "demo": "https://pypi.org/project/kgrp/"}]...
|
[{"post_id": 48135, "ts": "202 [{"post_id": 48135, "ts": "2026-08-16T12:59:10Z", "hours": 10.3972, "text": "Devlog 9 — Kerbal Gravity Program: the REPL is (almost) done No devlog last week — life happened, then OpenCode helped me absolutely cook. Newcomers: KGRP is a mission planner for KSP (runs outside the game). You define a spacecraft, stack events on a timeline, and the sim runs them. Plan in the tool, fly in the game. Where we are The REPL is nearly feature-complete. Every mission action is a TicketEvent — coast, maneuver, burn, engine toggle, science. The REPL never touches your ship directly; it just advances a ticket in UT and events fire when the timeline reaches them. One plan drives the renderer, physics, and save file. Also closed the loop on “one source of truth”: the fancy integrator used to run in a vacuum (zero gravity) when fired from a ticket. Now go , advance , and reset all agree on where you are. go Pick a start and end orbit from the presets and it works out burns, coasting, and delta-v, then schedules them: > go current moon:3a Transfer plan: Current (200,000m circular, 0.0 deg) -> Mun orbit (11,400,000m circular, 0.0 deg) (about Kerbin) Burns: 2 Total delta-v: 1,112.7 m/s Duration: 27,130.1s burn @ 0.0s dv=764.2 m/s Raise apoapsis to transfer coast 0.0s -> 27,130.1s Coast to apoapsis burn @ 27,130.1s dv=348.5 m/s Circularize / match target Resulting orbit: pe=12,000,000m ap=12,000,000m i=0.0 deg around Kerbin Presets are editable (and saveable to presets.json ); the planner core is a plain importable function ( go_plan(ticket, ...).total_dv ). Usability Time input isn’t a math exam: advance 2d 5h , time \"Year 2, Day 100\" . Per-use overrides without touching presets: go current preset:molniya incl=30 . go shows the plan and asks before committing (gradual / instant / cancel). edit now handles ships, not just bodies: mass, fuel, orbit elements. New-ticket wizard hands you an engine and 3,000 kg of fuel instead of a paperweight. After a reset you can clear/redo the timeline without fighting the guard. What’s next Some math is still coarse: plane changes are exact only for moon targets, synchronous orbits are a placeholder (no body rotation yet), arg-p/LAN drift isn’t modeled, and error messages need work — for when you type advance 5 bananas . Fun one I found: escaping at exactly escape velocity puts the orbit at eccentricity 1.000000 and the math gives up — the craft freezes and frame switches / go turn to nonsense. Interplanetary go is broken because of it, but burning slightly past escape fixes it (properly hyperbolic, maths happy). Just needs wiring in. In the meantime Planning to put it up on PyPi and hope it works"}, {"post_id": 43345, "ts": "2026-08-08T15:27:51Z", "hours": 8.115, "text": "Devlog 8: Kerbal Gravity Program For anyone who’s new here, KGRP is a mission planning tool I’m building for KSP (and hopefully real-world missions too). The goal is to make planning orbital transfers and interplanetary missions a lot easier. Think of it as something inspired by libraries like Skyfield and Poliastro , but with a bigger focus on actually planning missions Today and the days after i gave my last devlog were actually useful, i mainly just created a new class based system (yes i am forced to, because my idea needs tooo many moving parts) called the Ticket : The Ticket allows you to plan entire journeys using TicketEvents , stuff that define what can happen to a spacecraft (14 of them). for example, you can have a ticket that contains a maeuver, a coast, an rcs translation, a docking and more. and one more thing, instead of a CLI (one command and forget), i am instead making a REPL (it remembers what you did). so yeah, that sums most of it up and also i made a new banner for KGRP (kinda yay???) What’s next so the main thing is to just start making the REPL using prompt-toolkit and other stuff. until then, see ya"}, {"post_id": 35751, "ts": "2026-07-27T12:06:00Z", "hours": 5.0831, "text": "Devlog 7: Kerbal Gravity Program (KGRP) For anyone who’s new here, KGRP is a mission planning tool I’m building for KSP (and hopefully real-world missions too). The goal is to make planning orbital transfers and interplanetary missions a lot easier. Think of it as something inspired by libraries like Skyfield and Poliastro , but with a bigger focus on actually planning missions. What happened today? Today was surprisingly productive and useful. The biggest thing is that the renderer finally works. I spent way too long fighting with it over the past few days, so it’s nice to finally be able to move planets around without everything exploding. I also added a few other things: You can now create entire planetary systems from a planet.json file. Added adapters for PySide6 and NiceGUI , so there are a couple of different ways to use the renderer now. Started working on a more realistic gravity simulator that can deal with things like Lagrange points. KGRP finally has an actual logo (\(^▽^)/) instead of me pretending the text was good enough for docs and stuff. One thing I still need to fix is the JSON loader. Right now it only really likes absolute paths, which is… less than ideal. The renderer tried to gaslight me I swear I’m not making this up. Earlier today I found this absolutely cursed bug where, if you flew the camera into the Sun and zoomed out, the whole scene turned into this weird fisheye effect with random lines stretching across the screen. I was already mentally preparing myself to spend the next few hours digging through camera code and VTK documentation… …and then it just stopped happening. I didn’t fix it. I didn’t even change anything related to the camera. It just… disappeared. So either I accidentally fixed it without realizing, or it’s waiting until I show someone the project before it decides to come back. What’s next? Nothing too exciting, mostly polishing things up. Fix the JSON loader. Squash whatever bugs are still hiding in the renderer. Improve the CLI a bit more. Anyway, here’s the renderer doing the thing (oh, gotta fix that) and the logo (idk if it’s good, comment about it)."}, {"post_id": 32971, "ts": "2026-07-22T13:58:33Z", "hours": 9.6439, "text": "Devlog 6: Kerbal Gravity Program (KGRP) KGRP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What happened today Today was a very, very buggy day. I had to tackle the core rendering systems, but I ended up running a grueling gauntlet through almost every Python graphics library out there—Panda3D, Ursina, ModernGL, VPython, and more. Every single one of them introduced some kind of blocking issue: Windows that were supposed to pop up via Tkinter or Pygame-CE started doing random things like teleporting wildly across my screen or rendering with completely broken layout dimensions. Even when a window finally initialized and stayed stable, it would just mock me with a dead black screen entirely missing our blobs of color (the actual planets and calculated orbit lines). This black-screen loop is exactly what hit me when I switched over to PyVista. Why the Viewport went Black Staring into a blank 3D canvas is a rite of passage when writing an engine from scratch. After tracking down the pipeline bugs, the black screen in PyVista boiled down to three classic astrodynamics simulation mistakes: The Compound Drift Bug ( mesh.translate ) Using mesh.translate(inplace=True) directly mutates the underlying vertex memory of the sphere meshes. Because my physics engine loop advances frames based on absolute coordinates ( get_absolute_pos_at_ut ), relative delta transforms compounded exponentially. Within frame one, the planets physically flew millions of kilometers away from the camera. The Camera Initialization Trap Setting camera_position = 'iso' while the newly instantiated planet objects were still sitting uninitialized at (0, 0, 0) forced the viewport to lock its focus onto a microscopic bounding box. The moment the first timer tick updated positions, everything teleported way past the active field of view. Scaling Using a singular scale factor for both orbit diameters and planetary dimensions created a massive rendering mismatch. A planet with a 6,000 km radius shrinks down to a fraction of a single pixel when drawn on a canvas scaled to capture massive astronomical unit (AU) trajectories, rendering it invisible. Next Flight Steps for Devlog 6 With a stable graphics viewport finally up and running, the graphics engine foundation is secure. The next challenge is implementing the actual trajectory planning functionality. My primary focus items for the next devlog will be: The Trajectory Tracer: Working out how to render a dynamic, rolling polyline tail behind a Spacecraft body as it traces arcs across different coordinates. Camera Tracking Hooks: Hooking into interactor mouse clicks so that double-clicking a planet or vessel pins the camera target matrix to that object, keeping it centered even at high time warp rates. Optimizing Kepler Solvers: Ensuring the underlying analytical Newton-Raphson solvers can handle high eccentricities without dragging down frame rates."}, {"post_id": 27100, "ts": "2026-07-12T11:25:12Z", "hours": 1.9753, "text": "Devlog 5: Kerbal Gravity Program KGRP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What Happened Today We need to talk about a major turning point for this project. Today was the day I finally broke. I sat down ready to write some beautiful orbital physics code, but instead, I spent hours staring at a screen full of red squiggly lines. I was trapped in a seemingly endless loop of configuring MinGW paths, updating JSON files, wrestling with Conan, and trying to force VS Code to recognize where the Eigen math library was hiding. I realized I was spending 90% of my energy fighting a stubborn C++ compiler and only 10% actually thinking about gravity and orbital transfers. As a solo developer trying to build something massive, that is a recipe for burning out. I was totally fed up. So, I had a choice: keep sinking precious hours into configuration hell, or do something radical to save my velocity. I chose velocity. I opened up my file explorer, went to the project root, and completely ripped out the entire cpp folder. Shift + Delete. Gone. (To any C++ purists reading this: I am deeply sorry, but it had to be done.) By committing to a pure Python architecture, I can keep the code lean, fast, and remarkably lightweight (for an interpreted language): NumPy : We are using the best library for 3D math operations. SciPy : Gives me instant access to rock-solid root-finding algorithms. This means my Lambert solver is going to be incredibly robust and fast. Using this, We can get C++ execution speeds with the absolute bliss of plain Python syntax. Pyrr : A new Library that i am going to learn, this acts as a wrapper for numpy, allowing for easy rendering moderngl_window a pythonic librayry that allows one to easily show and render stuff. Next Steps Now that the compiler weight is off my back, I can actually focus on making this program amazing. The real fun starts now: Setting up a clean Python environment with scipy , pyrr , moderngl and numpy installed. Rendering stuff (Yahoo!). Building the profile structures for the Kerbol system and our real-world solar system. well then here is me installing pyrr and thinking of how to use and learn the library."}, {"post_id": 26427, "ts": "2026-07-11T06:48:03Z", "hours": 4.0178, "text": "Devlog 4: Kerbal Gravity Program (KGRP) KGP—well, actually let’s call it KGRP now because apparently “kgp” is already taken by some Kubernetes stuff, and I don’t want stuff breaking anyone’s cloud infrastructure—is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What I did today Well, today was mostly chill on the numerical part. I got the RKF(4)5 adaptive step solver fully up and running, and the burns produced by the Lambert solver are perfect and insanely accurate. The physics side of things is feeling really solid. But then came the C++ transition, which immediately humbled me. For hours, this was only working in Python because CMake seriously hates me. Seriously, why does a plain text file have so much attitude? Even though I explicitly gave it the include paths in VS Code, the thing still refused to find where Eigen was. I was getting so incredibly frustrated that I was genuinely on the verge of ragequitting, deleting the whole directory, and typing sudo rm -rf out of pure spite. And then I realized what a complete idiot I was being. CMake wasn’t failing to compile the library. It had actually built the thing perfectly. The issue was that I was stubbornly typing ./build/kgrvs like a caveman, completely missing the fact that the compiled binary was sitting right there inside ./build/Release/kgrvs . Once I actually typed the right path, the C++ code ran flawlessly and matched my Python results perfectly down to the decimal point. The engine is officially alive, and I need to go look at a wall for a few minutes to recover from the self-inflicted psychological damage. (BTW here is me almost bricking my computer)"}, {"post_id": 24105, "ts": "2026-07-07T13:47:36Z", "hours": 5.2864, "text": "Devlog 3: Kerbal Gravity Program KGP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. Hey there, i am very, very sorry for the wait, got caught up in school and illness, so ima try and be more punctual, maybe a devlog every week? well, we will see if my timetable is free or “unstable” What I did today Finally make a Lambert solver, the math was insanely hard and i am still getting insanely wrong numbers. (like a burn of 11,000 m/s to go to Duna in perfect conditions). for the Lambert solver, i had to create a new class, the Spacecraft class, this is the actual spacecraft that is going to go on the arduous journey to another planet or moon (basically a moving body class). I am in the process of making the Orbit class, the LambertSolver class and the solve_anomaly() function resistant to non elliptic orbits. well then here is Ruff and Vs code screaming at me because of a single equal sign"}, {"post_id": 19970, "ts": "2026-07-01T13:17:10Z", "hours": 3.5031, "text": "Devlog 2: Kerbal Gravity Program (KGP) KGP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What I did today Today was way more math-heavy than I expected. I spent most of my time building out the core infrastructure: The Orbit class to actually handle orbital mechanics. The Body class for celestial bodies and barycenters. The absolute_position function to figure out the exact coordinates of an object in a nested system, tracking it all the way back to the root central body as the origin. What I learned Planet tracking is wild: The sheer amount of math required to find the exact position of a planet at a specific timestamp is honestly mind-boggling. It took a lot of staring at equations, but once I finally understood the logic, implementing it became a lot smoother. The heavy lifters are terrifying: The core system is going to rely on a Lambert solver and an RK4 integrator. I’ll be honest—these algorithms are so intensely complex that it looks like scribbles on paper. Anyway, here is a small test run of the Python prototype in action:"}, {"post_id": 17430, "ts": "2026-06-28T06:29:34Z", "hours": 1.7036, "text": "Devlog 1: Kerbal Gravity Program (KGP) KGP is a mission planning tool I am building for KSP players and actual aerospace engineers to map out complex trajectories. Loosely based on Skyfield , Poliastro and trajectorize , The goal is to make it easy to plot out massive interplanetary trips, whether you are trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What I Did Today Mapped out the 4-phase development roadmap Decided to use a mix of C++ for raw execution speed and Python for fast development. Phase 1 (Basic Systems): Building out the underlying math frameworks and foundations. Phase 2 (CLI Interface): Creating simple command-line helper functions. Phase 3 (GUI Interface): Designing a desktop app version with a clean installation setup. Phase 4 (Web Interface): Deploying a browser version so anyone can use it without downloading a thing. (Note: Organized it this way to work around the Stardance demo link limits while keeping the scope clear). Coded the Universal Time Converter Wrote the core function that converts calendar dates directly into raw seconds. Made sure it seamlessly handles both Kerbal time standards and real-world J2000 epoch timelines. What I Learnt Numba memory management: I found out that numba (the Python library I’m using to get close to C++ speeds) really struggles when handling pointers and raw memory addresses. Python can actually segfault: It actually threw a segmentation fault—which felt crazy to see inside Python code! Because of this, using nb.defered_type() is completely out of the picture for this architecture, so I’ll have to use something like scipy and numpy . well for your entertainment, here is a screenshot of me trying to figure out why the hell was VS code giving me a problem (i forgot a semicolon on the line before):"}]...
|
Title: Kerbal Gravity Program by @Systemic_speed | Title: Kerbal Gravity Program by @Systemic_speed | Stardance
Devlogs:
Devlog 1: Kerbal Gravity Program (KGP) KGP is a mission planning tool I am building for KSP players and actual aerospace engineers to map out complex trajectories. Loosely based on Skyfield , Poliastro and trajectorize , The goal is to make it easy to plot out massive interplanetary trips, whether you are trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What I Did Today Mapped out the 4-phase development roadmap Decided to use a mix of C++ for raw execution speed and Python for fast development. Phase 1 (Basic Systems): Building out the underlying math frameworks and foundations. Phase 2 (CLI Interface): Creating simple command-line helper functions. Phase 3 (GUI Interface): Designing a desktop app version with a clean installation setup. Phase 4 (Web Interface): Deploying a browser version so anyone can use it without downloading a thing. (Note: Organized it this way to work around the Stardance demo link limits while keeping the scope clear). Coded the Universal Time Converter Wrote the core function that converts calendar dates directly into raw seconds. Made sure it seamlessly handles both Kerbal time standards and real-world J2000 epoch timelines. What I Learnt Numba memory management: I found out that numba (the Python library I’m using to get close to C++ speeds) really struggles when handling pointers and raw memory addresses. Python can actually segfault: It actually threw a segmentation fault—which felt crazy to see inside Python code! Because of this, using nb.defered_type() is completely out of the picture for this architecture, so I’ll have to use something like scipy and numpy . well for your entertainment, here is a screenshot of me trying to figure out why the hell was VS code giving me a problem (i forgot a semicolon on the line before):
Devlog 2: Kerbal Gravity Program (KGP) KGP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What I did today Today was way more math-heavy than I expected. I spent most of my time building out the core infrastructure: The Orbit class to actually handle orbital mechanics. The Body class for celestial bodies and barycenters. The absolute_position function to figure out the exact coordinates of an object in a nested system, tracking it all the way back to the root central body as the origin. What I learned Planet tracking is wild: The sheer amount of math required to find the exact position of a planet at a specific timestamp is honestly mind-boggling. It took a lot of staring at equations, but once I finally understood the logic, implementing it became a lot smoother. The heavy lifters are terrifying: The core system is going to rely on a Lambert solver and an RK4 integrator. I’ll be honest—these algorithms are so intensely complex that it looks like scribbles on paper. Anyway, here is a small test run of the Python prototype in action:
Devlog 3: Kerbal Gravity Program KGP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. Hey there, i am very, very sorry for the wait, got caught up in school and illness, so ima try and be more punctual, maybe a devlog every week? well, we will see if my timetable is free or “unstable” What I did today Finally make a Lambert solver, the math was insanely hard and i am still getting insanely wrong numbers. (like a burn of 11,000 m/s to go to Duna in perfect conditions). for the Lambert solver, i had to create a new class, the Spacecraft class, this is the actual spacecraft that is going to go on the arduous journey to another planet or moon (basically a moving body class). I am in the process of making the Orbit class, the LambertSolver class and the solve_anomaly() function resistant to non elliptic orbits. well then here is Ruff and Vs code screaming at me because of a single equal sign
Devlog 4: Kerbal Gravity Program (KGRP) KGP—well, actually let’s call it KGRP now because apparently “kgp” is already taken by some Kubernetes stuff, and I don’t want stuff breaking anyone’s cloud infrastructure—is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What I did today Well, today was mostly chill on the numerical part. I got the RKF(4)5 adaptive step solver fully up and running, and the burns produced by the Lambert solver are perfect and insanely accurate. The physics side of things is feeling really solid. But then came the C++ transition, which immediately humbled me. For hours, this was only working in Python because CMake seriously hates me. Seriously, why does a plain text file have so much attitude? Even though I explicitly gave it the include paths in VS Code, the thing still refused to find where Eigen was. I was getting so incredibly frustrated that I was genuinely on the verge of ragequitting, deleting the whole directory, and typing sudo rm -rf out of pure spite. And then I realized what a complete idiot I was being. CMake wasn’t failing to compile the library. It had actually built the thing perfectly. The issue was that I was stubbornly typing ./build/kgrvs like a caveman, completely missing the fact that the compiled binary was sitting right there inside ./build/Release/kgrvs . Once I actually typed the right path, the C++ code ran flawlessly and matched my Python results perfectly down to the decimal point. The engine is officially alive, and I need to go look at a wall for a few minutes to recover from the self-inflicted psychological damage. (BTW here is me almost bricking my computer)
Devlog 5: Kerbal Gravity Program KGRP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What Happened Today We need to talk about a major turning point for this project. Today was the day I finally broke. I sat down ready to write some beautiful orbital physics code, but instead, I spent hours staring at a screen full of red squiggly lines. I was trapped in a seemingly endless loop of configuring MinGW paths, updating JSON files, wrestling with Conan, and trying to force VS Code to recognize where the Eigen math library was hiding. I realized I was spending 90% of my energy fighting a stubborn C++ compiler and only 10% actually thinking about gravity and orbital transfers. As a solo developer trying to build something massive, that is a recipe for burning out. I was totally fed up. So, I had a choice: keep sinking precious hours into configuration hell, or do something radical to save my velocity. I chose velocity. I opened up my file explorer, went to the project root, and completely ripped out the entire cpp folder. Shift + Delete. Gone. (To any C++ purists reading this: I am deeply sorry, but it had to be done.) By committing to a pure Python architecture, I can keep the code lean, fast, and remarkably lightweight (for an interpreted language): NumPy : We are using the best library for 3D math operations. SciPy : Gives me instant access to rock-solid root-finding algorithms. This means my Lambert solver is going to be incredibly robust and fast. Using this, We can get C++ execution speeds with the absolute bliss of plain Python syntax. Pyrr : A new Library that i am going to learn, this acts as a wrapper for numpy, allowing for easy rendering moderngl_window a pythonic librayry that allows one to easily show and render stuff. Next Steps Now that the compiler weight is off my back, I can actually focus on making this program amazing. The real fun starts now: Setting up a clean Python environment with scipy , pyrr , moderngl and numpy installed. Rendering stuff (Yahoo!). Building the profile structures for the Kerbol system and our real-world solar system. well then here is me installing pyrr and thinking of how to use and learn the library.
Devlog 6: Kerbal Gravity Program (KGRP) KGRP is a mission planning tool I’m building for KSP players and actual aerospace engineers to map out complex trajectories. It’s loosely based on libraries like Skyfield , Poliastro , and Trajectorize . The ultimate goal is to make it easy to plot out massive interplanetary trips, whether you’re trying to reach Jool and Sarnus (with the Outer Planets Mod) or calculating a real-world journey out to Neptune. What happened today Today was a very, very buggy day. I had to tackle the core rendering systems, but I ended up running a grueling gauntlet through almost every Python graphics library out there—Panda3D, Ursina, ModernGL, VPython, and more. Every single one of them introduced some kind of blocking issue: Windows that were supposed to pop up via Tkinter or Pygame-CE started doing random things like teleporting wildly across my screen or rendering with completely broken layout dimensions. Even when a window finally initialized and stayed stable, it would just mock me with a dead black screen entirely missing our blobs of color (the actual planets and calculated orbit lines). This black-screen loop is exactly what hit me when I switched over to PyVista. Why the Viewport went Black Staring into a blank 3D canvas is a rite of passage when writing an engine from scratch. After tracking down the pipeline bugs, the black screen in PyVista boiled down to three classic astrodynamics simulation mistakes: The Compound Drift Bug ( mesh.translate ) Using mesh.translate(inplace=True) directly mutates the underlying vertex memory of the sphere meshes. Because my physics engine loop advances frames based on absolute coordinates ( get_absolute_pos_at_ut ), relative delta transforms compounded exponentially. Within frame one, the planets physically flew millions of kilometers away from the camera. The Camera Initialization Trap Setting camera_position = 'iso' while the newly instantiated planet objects were still sitting uninitialized at (0, 0, 0) forced the viewport to lock its focus onto a microscopic bounding box. The moment the first timer tick updated positions, everything teleported way past the active field of view. Scaling Using a singular scale factor for both orbit diameters and planetary dimensions created a massive rendering mismatch. A planet with a 6,000 km radius shrinks down to a fraction of a single pixel when drawn on a canvas scaled to capture massive astronomical unit (AU) trajectories, rendering it invisible. Next Flight Steps for Devlog 6 With a stable graphics viewport finally up and running, the graphics engine foundation is secure. The next challenge is implementing the actual trajectory planning functionality. My primary focus items for the next devlog will be: The Trajectory Tracer: Working out how to render a dynamic, rolling polyline tail behind a Spacecraft body as it traces arcs across different coordinates. Camera Tracking Hooks: Hooking into interactor mouse clicks so that double-clicking a planet or vessel pins the camera target matrix to that object, keeping it centered even at high time warp rates. Optimizing Kepler Solvers: Ensuring the underlying analytical Newton-Raphson solvers can handle high eccentricities without dragging down frame rates.
Devlog 7: Kerbal Gravity Program (KGRP) For anyone who’s new here, KGRP is a mission planning tool I’m building for KSP (and hopefully real-world missions too). The goal is to make planning orbital transfers and interplanetary missions a lot easier. Think of it as something inspired by libraries like Skyfield and Poliastro , but with a bigger focus on actually planning missions. What happened today? Today was surprisingly productive and useful. The biggest thing is that the renderer finally works. I spent way too long fighting with it over the past few days, so it’s nice to finally be able to move planets around without everything exploding. I also added a few other things: You can now create entire planetary systems from a planet.json file. Added adapters for PySide6 and NiceGUI , so there are a couple of different ways to use the renderer now. Started working on a more realistic gravity simulator that can deal with things like Lagrange points. KGRP finally has an actual logo (\(^▽^)/) instead of me pretending the text was good enough for docs and stuff. One thing I still need to fix is the JSON loader. Right now it only really likes absolute paths, which is… less than ideal. The renderer tried to gaslight me I swear I’m not making this up. Earlier today I found this absolutely cursed bug where, if you flew the camera into the Sun and zoomed out, the whole scene turned into this weird fisheye effect with random lines stretching across the screen. I was already mentally preparing myself to spend the next few hours digging through camera code and VTK documentation… …and then it just stopped happening. I didn’t fix it. I didn’t even change anything related to the camera. It just… disappeared. So either I accidentally fixed it without realizing, or it’s waiting until I show someone the project before it decides to come back. What’s next? Nothing too exciting, mostly polishing things up. Fix the JSON loader. Squash whatever bugs are still hiding in the renderer. Improve the CLI a bit more. Anyway, here’s the renderer doing the thing (oh, gotta fix that) and the logo (idk if it’s good, comment about it).
Devlog 8: Kerbal Gravity Program For anyone who’s new here, KGRP is a mission planning tool I’m building for KSP (and hopefully real-world missions too). The goal is to make planning orbital transfers and interplanetary missions a lot easier. Think of it as something inspired by libraries like Skyfield and Poliastro , but with a bigger focus on actually planning missions Today and the days after i gave my last devlog were actually useful, i mainly just created a new class based system (yes i am forced to, because my idea needs tooo many moving parts) called the Ticket : The Ticket allows you to plan entire journeys using TicketEvents , stuff that define what can happen to a spacecraft (14 of them). for example, you can have a ticket that contains a maeuver, a coast, an rcs translation, a docking and more. and one more thing, instead of a CLI (one command and forget), i am instead making a REPL (it remembers what you did). so yeah, that sums most of it up and also i made a new banner for KGRP (kinda yay???) What’s next so the main thing is to just start making the REPL using prompt-toolkit and other stuff. until then, see ya
Devlog 9 — Kerbal Gravity Program: the REPL is (almost) done No devlog last week — life happened, then OpenCode helped me absolutely cook. Newcomers: KGRP is a mission planner for KSP (runs outside the game). You define a spacecraft, stack events on a timeline, and the sim runs them. Plan in the tool, fly in the game. Where we are The REPL is nearly feature-complete. Every mission action is a TicketEvent — coast, maneuver, burn, engine toggle, science. The REPL never touches your ship directly; it just advances a ticket in UT and events fire when the timeline reaches them. One plan drives the renderer, physics, and save file. Also closed the loop on “one source of truth”: the fancy integrator used to run in a vacuum (zero gravity) when fired from a ticket. Now go , advance , and reset all agree on where you are. go Pick a start and end orbit from the presets and it works out burns, coasting, and delta-v, then schedules them: > go current moon:3a Transfer plan: Current (200,000m circular, 0.0 deg) -> Mun orbit (11,400,000m circular, 0.0 deg) (about Kerbin) Burns: 2 Total delta-v: 1,112.7 m/s Duration: 27,130.1s burn @ 0.0s dv=764.2 m/s Raise apoapsis to transfer coast 0.0s -> 27,130.1s Coast to apoapsis burn @ 27,130.1s dv=348.5 m/s Circularize / match target Resulting orbit: pe=12,000,000m ap=12,000,000m i=0.0 deg around Kerbin Presets are editable (and saveable to presets.json ); the planner core is a plain importable function ( go_plan(ticket, ...).total_dv ). Usability Time input isn’t a math exam: advance 2d 5h , time "Year 2, Day 100" . Per-use overrides without touching presets: go current preset:molniya incl=30 . go shows the plan and asks before committing (gradual / instant / cancel). edit now handles ships, not just bodies: mass, fuel, orbit elements. New-ticket wizard hands you an engine and 3,000 kg of fuel instead of a paperweight. After a reset you can clear/redo the timeline without fighting the guard. What’s next Some math is still coarse: plane changes are exact only for moon targets, synchronous orbits are a placeholder (no body rotation yet), arg-p/LAN drift isn’t modeled, and error messages need work — for when you type advance 5 bananas . Fun one I found: escaping at exactly escape velocity puts the orbit at eccentricity 1.000000 and the math gives up — the craft freezes and frame switches / go turn to nonsense. Interplanetary go is broken because of it, but burning slightly past escape fixes it (properly hyperbolic, maths happy). Just needs wiring in. In the meantime Planning to put it up on PyPi and hope it works
Ships:
Kerbal Gravity Program: SHIP - 1 Any KSP player knows the pain of planning a whole journey, then the Kraken wipes it and sends you back to the pad. Real missions are the same grind (see Cassini-Huygens: Cassini’s trajectory ). So I built KGRP — a mission planner for KSP you drive from a REPL or code, to plan and understand trips to other planets. Crash course pip install kgrp # Python 3.10+ kgrp # start the REPL help # every command, flag, and use Requirements Built on numpy (math), scipy (integration/solving), and pyvista (orbit and trajectory visualization), with rich and prompt-toolkit powering the REPL. What was challenging The math was the hard part — RKF(4)5 (Runge-Kutta-Fehlberg 4(5)), an adaptive-step integrator, was an absolute pain to get right. Shipping a real library was the other half; I’d made sites and small CLIs, but wasn’t sure this would hold together. What I’m proud of First thing I’ve ever put on PyPI. Along the way I got real with numpy, scipy, pyvista, and building a CLI/REPL people can actually use. A note on AI I used AI to help squash bugs and for the basic beautification of the README. The planning math and the tool itself are mine; the AI just helped me clean up and unstick the rough parts. Try it It’s out — test it, throw it at the wall, and send notes via feedback. P.S. There are a few easter eggs hiding in the errors. Go find them. Happy orbiting!!!...
|
1793127163.2785628
|
1793213563.2785628
|
|
26409
|
Apex Aerospace Studio by @NITHIN | Stardance
|
NITHIN
|
1
|
50.0
|
631
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T14:40:56Z", "hours": 50.0, "multiplier": 19.22, "payout": 631, "blessing": "neutral", "text": "Apex Aerospace Studio is a premium, professional sounding-rocket engineering workstation. The application provides an interactive suite of five modules designed with a clean, grid-based layout: Overview Dashboard: Displays 2D structural blueprints annotated with dynamic Center of Gravity (CG) and Center of Pressure (CP) flags. Rocket Failure Explorer: Simulates flight kinematics using a 2D Euler integration engine that models thrust, gravity, aerodynamics, rotational torque, and recovery failures. Telemetry is plotted on synchronized Cartesian charts. Nose Cone Optimization Lab: Generates CAD profile geometries (conical, tangent ogive, Von Karman) and compares subsonic/supersonic drag coefficients on a five-axis radar pentagon. Mission Patch Studio: Creates custom vector SVG insignia badges using curved path typography and orbital trajectory templates. Documentation Hub: Hosts flight formulas and design standards. The software runs fully offline as a portable, flat bundle of index.html, style.css, and app.js with zero dependencies.", "repo": "https://github.com/Nithinfgs/Apex-Aerospace-Studio", "demo": "https://celebrated-duckanoo-9a3b66.netlify.app/"}]...
|
[{"post_id": 17622, "ts": "202 [{"post_id": 17622, "ts": "2026-06-28T14:31:40Z", "hours": 9.0, "text": "Finished working on the style.css file, which means the project is now complete! I’ll be uploading it soon"}, {"post_id": 17392, "ts": "2026-06-28T04:45:49Z", "hours": 1.0, "text": "Today I started styling the project by creating the style.css file. Time to make everything look clean and polished!"}, {"post_id": 17061, "ts": "2026-06-27T18:16:32Z", "hours": 14.0, "text": "Today’s progress was focused on the web frontend. I finished working on the index.html file and pushed the latest changes to the GitHub repository. This sets up the basic structure and keeps the project up to date for the next development tasks."}, {"post_id": 16678, "ts": "2026-06-27T03:33:06Z", "hours": 1.0, "text": "Started building the index.html file by setting up the basic HTML structure, metadata, and linking the stylesheet. Added a professional header with the project logo, navigation tabs, system status indicator, and a Save Config button. This establishes the core layout that CSS will style and JavaScript will make interactive."}, {"post_id": 16317, "ts": "2026-06-26T15:30:54Z", "hours": 22.0, "text": "Hit a big milestone today just crossed 2,000 lines of code on the project! The core systems are now coming together, including a physics-based rocket flight simulator with wind, stability, recovery, and failure modeling. I also built a scientific charting engine, live telemetry visualization, nose cone design and aerodynamic analysis tools, CAD-style blueprint generation, and a customizable mission patch generator. Most of the foundation is now in place, and the next phase will focus on polishing the UI, expanding features, and improving the overall experience."}]...
|
Title: Apex Aerospace Studio by @NITHIN | Stardanc Title: Apex Aerospace Studio by @NITHIN | Stardance
Devlogs:
Hit a big milestone today just crossed 2,000 lines of code on the project! The core systems are now coming together, including a physics-based rocket flight simulator with wind, stability, recovery, and failure modeling. I also built a scientific charting engine, live telemetry visualization, nose cone design and aerodynamic analysis tools, CAD-style blueprint generation, and a customizable mission patch generator. Most of the foundation is now in place, and the next phase will focus on polishing the UI, expanding features, and improving the overall experience.
Started building the index.html file by setting up the basic HTML structure, metadata, and linking the stylesheet. Added a professional header with the project logo, navigation tabs, system status indicator, and a Save Config button. This establishes the core layout that CSS will style and JavaScript will make interactive.
Today’s progress was focused on the web frontend. I finished working on the index.html file and pushed the latest changes to the GitHub repository. This sets up the basic structure and keeps the project up to date for the next development tasks.
Today I started styling the project by creating the style.css file. Time to make everything look clean and polished!
Finished working on the style.css file, which means the project is now complete! I’ll be uploading it soon
Ships:
Apex Aerospace Studio is a premium, professional sounding-rocket engineering workstation. The application provides an interactive suite of five modules designed with a clean, grid-based layout: Overview Dashboard: Displays 2D structural blueprints annotated with dynamic Center of Gravity (CG) and Center of Pressure (CP) flags. Rocket Failure Explorer: Simulates flight kinematics using a 2D Euler integration engine that models thrust, gravity, aerodynamics, rotational torque, and recovery failures. Telemetry is plotted on synchronized Cartesian charts. Nose Cone Optimization Lab: Generates CAD profile geometries (conical, tangent ogive, Von Karman) and compares subsonic/supersonic drag coefficients on a five-axis radar pentagon. Mission Patch Studio: Creates custom vector SVG insignia badges using curved path typography and orbital trajectory templates. Documentation Hub: Hosts flight formulas and design standards. The software runs fully offline as a portable, flat bundle of index.html, style.css, and app.js with zero dependencies....
|
1792882111.6572044
|
1793746111.6572044
|
|
27008
|
Cascade by @sheepex_ | Stardance
|
sheepex_
|
3
|
50.0
|
312
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-25T19:13:23Z", "hours": 23.0, "multiplier": 18.99, "payout": 201, "blessing": "neutral", "text": "It’s been a pretty busy couple of weeks working on Cascade, so here’s a recap of what’s changed. One of the biggest additions has been the social system. Cascade now has proper user profiles with osu! stats, badges, beatmaps and mapping activity. You can search for other mappers, add friends, see who’s online and send private messages. I’ve also added replies, reactions, GIFs, notifications and privacy settings. Another thing I’ve been working on is mapping statistics. Cascade now tracks how much time you actually spend mapping, including individual maps and difficulties, playtesting, and other editing activity. There’s also an activity calendar on your profile. More recently, I’ve been focusing on making Cascade feel more like a proper desktop application. The main menu has been redesigned around osu!lazer, including new animations, a new logo, intro/outro sequences and improved scaling. There’s also a new Graphics tab with fullscreen, borderless and windowed modes, as well as FPS limiting. The editor has received some improvements too: A floating map overview inspired by Malody A dedicated playtest button Better audio time-stretching when slowing down songs Customizable export locations Settings search and shortcut conflict detection Various UI improvements and fixes I’ve also spent quite a bit of time on performance and stability, especially with larger map libraries, collaborative editing and the desktop app. There’s still a lot I want to improve, but I’m pretty happy with how Cascade has been progressing lately. Thanks to everyone who’s been trying it out and giving feedback!", "repo": "https://github.com/sheepexx/cascade", "demo": "https://cascade.sheepex.net/"}, {"ship_num": 2, "ts": "2026-09-28T11:54:50Z", "hours": 2.0, "multiplier": 12.33, "payout": 25, "blessing": "neutral", "text": "This update is all about making Cascade feel more polished and consistent. I unified every dropdown across the app, added new settings for original map metadata, hold-to-confirm timing and background parallax, and improved the HUD editor with a timeline scrubber and more reliable previews. The desktop app also now asks before closing.", "repo": "https://github.com/sheepexx/cascade", "demo": "https://cascade.sheepex.net/"}, {"ship_num": 3, "ts": "2026-09-26T18:42:10Z", "hours": 25.0, "multiplier": 8.56, "payout": 86, "blessing": "neutral", "text": "This update is mostly about making playtesting feel like the real game and making it easier to share your maps. The biggest change is the playtest. I rebuilt it on osu!mania’s actual rules, so hold note tails, note lock, timing and offsets now behave the way they do in osu!. On top of that there’s a new HUD editor: your map plays on autoplay while you click and drag anything on screen to move or resize it. Scroll speed and audio offset moved in there too, so the playtest settings are a lot less cluttered now. I also added Map Cards. With one click you get a clean image of your map with its MSD, skillsets, BPM, length and note stats, ready to post on Discord or anywhere else. There’s also a skillset graph under the timeline now that shows which skillset makes each part of the song hard, so you can see where a map spikes without playing it. There are a bunch of smaller changes too: Malody charts can be opened and exported, hitsounds can be copied onto every difficulty at once, there’s a colourblind-friendly lane colour option, keybinds work like osu!stable so you just type your keys in order, and the whole editor is now translated into German, Russian, Portuguese and Chinese. You can try it here: https://cascade.sheepex.net", "repo": "https://github.com/sheepexx/cascade", "demo": "https://cascade.sheepex.net/"}]...
|
[{"post_id": 82756, "ts": "202 [{"post_id": 82756, "ts": "2026-10-25T19:02:32Z", "hours": 9.1194, "text": "Been working on quite a few things lately, especially the overall look and feel of Cascade. The main menu has been reworked to feel more like osu!lazer, with new animations, an intro/outro and a new logo. I’ve also added fullscreen support for dekstop versions, graphics settings and customizable export locations. The editor now has a better map overview, a playtest button and improved audio stretching. There’s also a settings search, better messaging with GIFs and reactions, and a bunch of performance improvements and bug fixes. Still plenty more to work on!"}, {"post_id": 79533, "ts": "2026-10-14T14:21:22Z", "hours": 2.03, "text": "I changed the design language, to a more professional, simpler one. It using less system resources and its better for lower end devices."}, {"post_id": 79371, "ts": "2026-10-13T18:05:26Z", "hours": 12.2481, "text": "I worked on making new Social features, like profiles a messaging system and friend system."}, {"post_id": 74822, "ts": "2026-09-28T11:41:53Z", "hours": 1.9969, "text": "This update is mostly about polishing the interface and giving you more control over how Cascade looks and feels. One of the bigger changes is that every dropdown in Cascade now uses the same custom menu instead of mixing Cascade’s UI with native operating system selects. This affected quite a few places: dan ladders and keymodes, skins, Discord presence, collaborator roles, pack creation, batch timing, audio output, shared map difficulties and even the admin sorting menus. The dropdown component itself also got more capable. Menus can now have grouped sections, which is used to separate built-in playtest skin presets from your saved skins, and options can be shown as unavailable without completely hiding them. For example, an unsupported exclusive audio mode can still be displayed so you know the option exists, just without being able to select it. Dropdowns also behave better inside panels now. Some menus, especially ones opened from the HUD editor, could previously end up rendering underneath the panel they belonged to and look like an empty menu. They now use the proper UI layer, so menus always appear above panels while still staying underneath things like the command palette. There are three new interface settings as well. You can now tell Cascade to prefer a map’s original title and artist instead of the romanised metadata. If an osu! map contains both versions, Cascade will use the original script in the editor header, project list, now playing card and Discord Rich Presence. Maps that only have one version of their metadata behave exactly as before, and this doesn’t change anything stored in or exported with the map. The hold-to-confirm duration is customizable now too. Destructive actions previously always required holding for 750ms; you can now choose anything from 200ms up to 3 seconds depending on how quickly or carefully you want those controls to react. There’s also a new parallax strength setting for Cascade’s backgrounds. 100% gives you the movement Cascade had before, while 0% keeps the background completely still. You can also choose anything in between if you like the effect but want it to be more subtle. The HUD editor got another small usability upgrade with a proper timeline scrubber. You can drag through the song and quickly preview the HUD at any point in the map instead of having to wait for the autoplay to reach it. Seeking also keeps the full chart context intact, so things like the density graph and note count don’t suddenly change just because you’ve jumped further into the song. The HUD preview itself is more predictable now as well. Its autoplay always runs perfectly regardless of your normal humanized autoplay settings, impossible autoplay situations are ignored instead of being counted as misses, and combo and accuracy stop changing while you’re actively moving HUD elements around. And finally, the desktop app now asks before closing. Both the Exit button on the start screen and the Exit action in the command palette show the same confirmation dialog Cascade already uses for other destructive actions. Confirming still uses the normal fade-out and menu music transition, but an accidental click can’t immediately close the app anymore. You can try it here: https://cascade.sheepex.net"}, {"post_id": 74124, "ts": "2026-09-26T18:33:33Z", "hours": 24.71, "text": "Hello! I worked on Cascade a lot, mostly on playtesting and on sharing maps. The biggest change is the playtest. I rebuilt it on osu!mania’s actual rules, so hold note tails, note lock and timing now behave like in the real game. I also added a HUD editor: the map plays on autoplay and you click and drag anything on screen to move or resize it. Scroll speed and offsets live there now too, which cleaned up the settings a lot. I also made “Map Cards”. You get an image of your map with its MSD, skillsets, BPM and other stats that you can post anywhere. There’s also a skillset graph under the timeline now, so you can see which skillset makes each part of the song hard. Smaller stuff: Malody charts can be opened and exported hitsounds can be copied onto every difficulty at once a colourblind-friendly lane colour option keybinds work like osu!stable, so you just type your keys in order the whole editor is translated into German, Russian, Portuguese and Chinese Try it here: https://cascade.sheepex.net"}]...
|
Title: Cascade by @sheepex_ | Stardance
Devlogs:
Title: Cascade by @sheepex_ | Stardance
Devlogs:
Hello! I worked on Cascade a lot, mostly on playtesting and on sharing maps. The biggest change is the playtest. I rebuilt it on osu!mania’s actual rules, so hold note tails, note lock and timing now behave like in the real game. I also added a HUD editor: the map plays on autoplay and you click and drag anything on screen to move or resize it. Scroll speed and offsets live there now too, which cleaned up the settings a lot. I also made “Map Cards”. You get an image of your map with its MSD, skillsets, BPM and other stats that you can post anywhere. There’s also a skillset graph under the timeline now, so you can see which skillset makes each part of the song hard. Smaller stuff: Malody charts can be opened and exported hitsounds can be copied onto every difficulty at once a colourblind-friendly lane colour option keybinds work like osu!stable, so you just type your keys in order the whole editor is translated into German, Russian, Portuguese and Chinese Try it here: https://cascade.sheepex.net
This update is mostly about polishing the interface and giving you more control over how Cascade looks and feels. One of the bigger changes is that every dropdown in Cascade now uses the same custom menu instead of mixing Cascade’s UI with native operating system selects. This affected quite a few places: dan ladders and keymodes, skins, Discord presence, collaborator roles, pack creation, batch timing, audio output, shared map difficulties and even the admin sorting menus. The dropdown component itself also got more capable. Menus can now have grouped sections, which is used to separate built-in playtest skin presets from your saved skins, and options can be shown as unavailable without completely hiding them. For example, an unsupported exclusive audio mode can still be displayed so you know the option exists, just without being able to select it. Dropdowns also behave better inside panels now. Some menus, especially ones opened from the HUD editor, could previously end up rendering underneath the panel they belonged to and look like an empty menu. They now use the proper UI layer, so menus always appear above panels while still staying underneath things like the command palette. There are three new interface settings as well. You can now tell Cascade to prefer a map’s original title and artist instead of the romanised metadata. If an osu! map contains both versions, Cascade will use the original script in the editor header, project list, now playing card and Discord Rich Presence. Maps that only have one version of their metadata behave exactly as before, and this doesn’t change anything stored in or exported with the map. The hold-to-confirm duration is customizable now too. Destructive actions previously always required holding for 750ms; you can now choose anything from 200ms up to 3 seconds depending on how quickly or carefully you want those controls to react. There’s also a new parallax strength setting for Cascade’s backgrounds. 100% gives you the movement Cascade had before, while 0% keeps the background completely still. You can also choose anything in between if you like the effect but want it to be more subtle. The HUD editor got another small usability upgrade with a proper timeline scrubber. You can drag through the song and quickly preview the HUD at any point in the map instead of having to wait for the autoplay to reach it. Seeking also keeps the full chart context intact, so things like the density graph and note count don’t suddenly change just because you’ve jumped further into the song. The HUD preview itself is more predictable now as well. Its autoplay always runs perfectly regardless of your normal humanized autoplay settings, impossible autoplay situations are ignored instead of being counted as misses, and combo and accuracy stop changing while you’re actively moving HUD elements around. And finally, the desktop app now asks before closing. Both the Exit button on the start screen and the Exit action in the command palette show the same confirmation dialog Cascade already uses for other destructive actions. Confirming still uses the normal fade-out and menu music transition, but an accidental click can’t immediately close the app anymore. You can try it here: https://cascade.sheepex.net
I worked on making new Social features, like profiles a messaging system and friend system.
I changed the design language, to a more professional, simpler one. It using less system resources and its better for lower end devices.
Been working on quite a few things lately, especially the overall look and feel of Cascade. The main menu has been reworked to feel more like osu!lazer, with new animations, an intro/outro and a new logo. I’ve also added fullscreen support for dekstop versions, graphics settings and customizable export locations. The editor now has a better map overview, a playtest button and improved audio stretching. There’s also a settings search, better messaging with GIFs and reactions, and a bunch of performance improvements and bug fixes. Still plenty more to work on!
Ships:
This update is mostly about making playtesting feel like the real game and making it easier to share your maps. The biggest change is the playtest. I rebuilt it on osu!mania’s actual rules, so hold note tails, note lock, timing and offsets now behave the way they do in osu!. On top of that there’s a new HUD editor: your map plays on autoplay while you click and drag anything on screen to move or resize it. Scroll speed and audio offset moved in there too, so the playtest settings are a lot less cluttered now. I also added Map Cards. With one click you get a clean image of your map with its MSD, skillsets, BPM, length and note stats, ready to post on Discord or anywhere else. There’s also a skillset graph under the timeline now that shows which skillset makes each part of the song hard, so you can see where a map spikes without playing it. There are a bunch of smaller changes too: Malody charts can be opened and exported, hitsounds can be copied onto every difficulty at once, there’s a colourblind-friendly lane colour option, keybinds work like osu!stable so you just type your keys in order, and the whole editor is now translated into German, Russian, Portuguese and Chinese. You can try it here: https://cascade.sheepex.net
This update is all about making Cascade feel more polished and consistent. I unified every dropdown across the app, added new settings for original map metadata, hold-to-confirm timing and background parallax, and improved the HUD editor with a timeline scrubber and more reliable previews. The desktop app also now asks before closing.
It’s been a pretty busy couple of weeks working on Cascade, so here’s a recap of what’s changed. One of the biggest additions has been the social system. Cascade now has proper user profiles with osu! stats, badges, beatmaps and mapping activity. You can search for other mappers, add friends, see who’s online and send private messages. I’ve also added replies, reactions, GIFs, notifications and privacy settings. Another thing I’ve been working on is mapping statistics. Cascade now tracks how much time you actually spend mapping, including individual maps and difficulties, playtesting, and other editing activity. There’s also an activity calendar on your profile. More recently, I’ve been focusing on making Cascade feel more like a proper desktop application. The main menu has been redesigned around osu!lazer, including new animations, a new logo, intro/outro sequences and improved scaling. There’s also a new Graphics tab with fullscreen, borderless and windowed modes, as well as FPS limiting. The editor has received some improvements too: A floating map overview inspired by Malody A dedicated playtest button Better audio time-stretching when slowing down songs Customizable export locations Settings search and shortcut conflict detection Various UI improvements and fixes I’ve also spent quite a bit of time on performance and stability, especially with larger map libraries, collaborative editing and the desktop app. There’s still a lot I want to improve, but I’m pretty happy with how Cascade has been progressing lately. Thanks to everyone who’s been trying it out and giving feedback!...
|
1793152538.3886764
|
1793238938.3886764
|
|
29047
|
Helios - Michaelson Interferometer by @raoul | Sta Helios - Michaelson Interferometer by @raoul | Stardance...
|
raoul
|
1
|
50.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-18T19:40:21Z", "hours": 50.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Michaelson Interferometer capable of detecting magnetostriction in a nickel rod! It uses light waves to measure changes in mirror distance in the order of nanometers, acting as a super-precise ruler. What’s that? A Michaelson Interferometer splits light through a beamsplitter, then recombines it at the same place to produce interference fringes. As one mirror moves, the phase shift in the recombined light moves too, so these patterns also shift around, increasing in number, and decreasing in size about the center. The photodiode system detects these changes in light intensity, and a relation between wavelength, distance change and number of signal peaks in the photodiode can be established. How did I build mine? I used 3D printing in PETG to build solid, adjustable and modular mounts. I used a rated 650nm adjustable laser light and λ/10 flatness mirrors to reduce external causes of error as much as I could. I designed a sliding rail system coupled with a micrometer for one mirror, allowing for precise wavelength measurement (‘fixed’ mirror in the magnetostriction test). I designed a solenoid system paired with a nickel rod within it which holds the other mirror, allowing magnetostriction measurement (‘fixed’ mirror when measuring laser wavelength) These features allowed me to detect signal changes from a nickel rod’s size as the current in a solenoid wrapped around it increased from 0A-10A, with most if not all external causes being ruled out. So what else could it do? Configuring the photodiode more optimally and using a higher current power supply, magnetostrictive saturation should be possible to calculate, not only for a nickel rod, but for any other metal. Thermal expansion, which causes much greater displacement than its magnetic counterpart, should also be possible to calculate for any metal using this device with no other changes to the system.", "repo": "https://github.com/rsourcer/Project-Helios", "demo": ""}]...
|
[{"post_id": 74816, "ts": "202 [{"post_id": 74816, "ts": "2026-09-28T11:29:09Z", "hours": 6.7969, "text": "✧˚⋆ DEVLOG 7: I have finally succeeded in setting up the photodiode system! It now outputs signal value ranging from 97-350, and filtering out almost all noise. This required re-programming the way in which output signal is detected, as heavy 120Hz noise was present, and rewiring until the best result (so far) was acheived. This allowed me to complete the project’s main goal: magnetostriction effects observed in a nickel rod! This is despite amplification still not being fully maximized. (theo. max: 1023) To test this, I wrapped a 25ft copper wire around the solenoid cover and connected it to a DC power supply. As current is turned up, the photodiode signal has been decreasing repeatly. (See photo - output decreases by ~1-2) In the pulse test, it is also shown to decrease instantaneously, and when the photodiode is covered, no parasitic effects from the current are present, leading me to believe that the observed effect was truly caused by fringe shift due to magnetic shrinkage caused by the solenoid. For this reason, this may very well be my last devlog! There is still room for improvement in fine-tuning the amplification system, but the full functionality of every component has been demonstrated. It however doesn’t mean I’m done with the project at all after shipping - I can try out rods with different metals and higher currents with amplified signal to get and compare ‘true’ quantitative data in the future! Check out README.md for more details!"}, {"post_id": 70900, "ts": "2026-09-19T23:58:45Z", "hours": 6.7633, "text": "✧˚⋆ DEVLOG 6: The last three weeks of my project have been subject to great stagnation - However, I now have been able to photograph fringes! (See photo 2). Unfortunately, they appear to be a mix of Michaelson fringes and lens (Newton) interference (remain when one mirror is blocked) - the latter kind is useless to measure wavelengths, so we now only want stronger Michaelson fringes, which appear more as bands or arcs of light. (noticeable now yet currently hard to image) To come to this, I’ve had to reprint the LMB and LDM to allow translation (and some rotational) alignment with screws, reworked the mirror mounting system screws (removing bolts) and reprinted the solenoid cover from Devlog 5. This has allowed my alignment to be much more precisely adjustable - it has also made it more tedious to align. To this effect, I added ruler and protractor markings for the MMM, LDM and LMB to serve as alignment guides, and since, I’ve added guides to the MMM to make sure the mirror follows more linear guides. These changes insure that I can now very finely adjust angles and mirror distances prop. to beam splitter to be equal - which is what we need! For acronyms list, and further info on how the alignment process is done, check out the project GitHub! :)"}, {"post_id": 59278, "ts": "2026-08-31T23:53:04Z", "hours": 4.2981, "text": "✧˚⋆ DEVLOG 5: Beamsplitter is here! I’ve finally started proper alignment testing by putting together the optical components into their respective mounts. However, no interferometry yet - the BSM had to be reprinted to fit the beamsplitter, and my SMB mirror mount was 4mm too low, which made me reprint a slightly taller solenoid cover.. Every time I had to print the solenoid cover, severe noodling would happen in at least one section of this component. After 4 iterations, i decided to use the least damaged one, and now, my lasers at least somewhat align to the mirrors! I’ve now made additional supports for the laser and lens allowing for slight translation to make precise alignment a much easier task. For more info and acronym list, check out the README on GitHub :)"}, {"post_id": 56257, "ts": "2026-08-27T22:58:03Z", "hours": 9.0697, "text": "✧˚⋆ DEVLOG 4: I’ve finally been able to complete, print and assemble all CAD mounts! Attached in the image below is the mounting system in the interferometer’s calibration phase. The assembly process took a disgusting amount of time, as most parts had to be re-iterated upon, either due to screw alignment, screw dimensions or linkage strength. Tolerances were a recurring issue with the components — I had to drill the mirror mounting systems in the MMM and SMB (new acronyms to be found on my GitHub btw!) which served as a wake up call on wearing proper safety equipment, multiple times.. my screen protector is still irreparably cracked from the PETG-CF shards, and my hand felt much of the same to say the least lol. Oh, and no more DVD drive laser components - I have switched to a proper (Class II) laser to conduct my experiments. However, things are looking up, and the build quality is now solid! I am waiting on the final component to arrive (beamsplitter) before assembling the final system. same time next week? :)"}, {"post_id": 50064, "ts": "2026-08-19T03:30:37Z", "hours": 8.9161, "text": "✧˚⋆ DEVLOG 3: I’ve received most of the parts, so NOW, I’ve been able to work on the real electronics and design the 3d CAD mounts - my full design is therefore almost complete! (I have a bad habit of saying that lol) One thing which was particularly tricky was the solenoid mirror mount, which went through multiple different iterations. I had to find a way to encorporate the advantage of the screw-plate mounting system and free suspended motion, and my design eventually (…) was able to accomplish this using a counterbalance! Then, while messing around with the Uno R3 kit, I also managed to get the laser diode, which I disassembled from my old laptop’s DVD drive, to be functional! It’s not collimated by its lens anymore, but it’s a step in the right direction. I’m sure i’ll be able to find a workaround someway, right? right? :’)"}, {"post_id": 45103, "ts": "2026-08-11T11:33:44Z", "hours": 8.4892, "text": "✧˚⋆ DEVLOG 2: Based off measurements from the ordered parts (which took about 3 days to document in detail in terms of every option and decision), I created a precise, 1:2 scale top down technical drawing! This was rather tedious - I only had a straight edge, pencils and 8cm triangle ruler available, as I am currently traveling.. The detailed drawing shows the interferometer in the calibration phase, so I made another sketch showing how all the components interact with one another in both phases too. Check out Devlog 1 for photodiode circuit details (they aren’t shown on the lower drawing!) :)"}, {"post_id": 39861, "ts": "2026-08-03T03:55:39Z", "hours": 5.68, "text": "✧˚⋆ DEVLOG 1: Aside from (lots…) of documentation, I created this TIA photodiode circuit in Tinkercad to mirror the one which will measure the fringe shifts in my interferometer. Safe to say, this was not all smooth sailing - the components were challenging to wire correctly (particularly the op-amp) and the range of output values was.. disheartening at times (512-513 or 0-2) but I finally got it to an amplified degree! One of the solutions was simply flipping the polarity of the photodiode lol. It now outputs values from 0-1021 depending on the inverted light intensity, which is optimal for my project as the effect of real-world noise will now be much lesser than without the amplification system. I’ll keep you guys updated! Check out my github or ask me for more info :)"}]...
|
Title: Helios - Michaelson Interferometer by @raou Title: Helios - Michaelson Interferometer by @raoul | Stardance
Devlogs:
✧˚⋆ DEVLOG 1: Aside from (lots…) of documentation, I created this TIA photodiode circuit in Tinkercad to mirror the one which will measure the fringe shifts in my interferometer. Safe to say, this was not all smooth sailing - the components were challenging to wire correctly (particularly the op-amp) and the range of output values was.. disheartening at times (512-513 or 0-2) but I finally got it to an amplified degree! One of the solutions was simply flipping the polarity of the photodiode lol. It now outputs values from 0-1021 depending on the inverted light intensity, which is optimal for my project as the effect of real-world noise will now be much lesser than without the amplification system. I’ll keep you guys updated! Check out my github or ask me for more info :)
✧˚⋆ DEVLOG 2: Based off measurements from the ordered parts (which took about 3 days to document in detail in terms of every option and decision), I created a precise, 1:2 scale top down technical drawing! This was rather tedious - I only had a straight edge, pencils and 8cm triangle ruler available, as I am currently traveling.. The detailed drawing shows the interferometer in the calibration phase, so I made another sketch showing how all the components interact with one another in both phases too. Check out Devlog 1 for photodiode circuit details (they aren’t shown on the lower drawing!) :)
✧˚⋆ DEVLOG 3: I’ve received most of the parts, so NOW, I’ve been able to work on the real electronics and design the 3d CAD mounts - my full design is therefore almost complete! (I have a bad habit of saying that lol) One thing which was particularly tricky was the solenoid mirror mount, which went through multiple different iterations. I had to find a way to encorporate the advantage of the screw-plate mounting system and free suspended motion, and my design eventually (…) was able to accomplish this using a counterbalance! Then, while messing around with the Uno R3 kit, I also managed to get the laser diode, which I disassembled from my old laptop’s DVD drive, to be functional! It’s not collimated by its lens anymore, but it’s a step in the right direction. I’m sure i’ll be able to find a workaround someway, right? right? :’)
✧˚⋆ DEVLOG 4: I’ve finally been able to complete, print and assemble all CAD mounts! Attached in the image below is the mounting system in the interferometer’s calibration phase. The assembly process took a disgusting amount of time, as most parts had to be re-iterated upon, either due to screw alignment, screw dimensions or linkage strength. Tolerances were a recurring issue with the components — I had to drill the mirror mounting systems in the MMM and SMB (new acronyms to be found on my GitHub btw!) which served as a wake up call on wearing proper safety equipment, multiple times.. my screen protector is still irreparably cracked from the PETG-CF shards, and my hand felt much of the same to say the least lol. Oh, and no more DVD drive laser components - I have switched to a proper (Class II) laser to conduct my experiments. However, things are looking up, and the build quality is now solid! I am waiting on the final component to arrive (beamsplitter) before assembling the final system. same time next week? :)
✧˚⋆ DEVLOG 5: Beamsplitter is here! I’ve finally started proper alignment testing by putting together the optical components into their respective mounts. However, no interferometry yet - the BSM had to be reprinted to fit the beamsplitter, and my SMB mirror mount was 4mm too low, which made me reprint a slightly taller solenoid cover.. Every time I had to print the solenoid cover, severe noodling would happen in at least one section of this component. After 4 iterations, i decided to use the least damaged one, and now, my lasers at least somewhat align to the mirrors! I’ve now made additional supports for the laser and lens allowing for slight translation to make precise alignment a much easier task. For more info and acronym list, check out the README on GitHub :)
✧˚⋆ DEVLOG 6: The last three weeks of my project have been subject to great stagnation - However, I now have been able to photograph fringes! (See photo 2). Unfortunately, they appear to be a mix of Michaelson fringes and lens (Newton) interference (remain when one mirror is blocked) - the latter kind is useless to measure wavelengths, so we now only want stronger Michaelson fringes, which appear more as bands or arcs of light. (noticeable now yet currently hard to image) To come to this, I’ve had to reprint the LMB and LDM to allow translation (and some rotational) alignment with screws, reworked the mirror mounting system screws (removing bolts) and reprinted the solenoid cover from Devlog 5. This has allowed my alignment to be much more precisely adjustable - it has also made it more tedious to align. To this effect, I added ruler and protractor markings for the MMM, LDM and LMB to serve as alignment guides, and since, I’ve added guides to the MMM to make sure the mirror follows more linear guides. These changes insure that I can now very finely adjust angles and mirror distances prop. to beam splitter to be equal - which is what we need! For acronyms list, and further info on how the alignment process is done, check out the project GitHub! :)
✧˚⋆ DEVLOG 7: I have finally succeeded in setting up the photodiode system! It now outputs signal value ranging from 97-350, and filtering out almost all noise. This required re-programming the way in which output signal is detected, as heavy 120Hz noise was present, and rewiring until the best result (so far) was acheived. This allowed me to complete the project’s main goal: magnetostriction effects observed in a nickel rod! This is despite amplification still not being fully maximized. (theo. max: 1023) To test this, I wrapped a 25ft copper wire around the solenoid cover and connected it to a DC power supply. As current is turned up, the photodiode signal has been decreasing repeatly. (See photo - output decreases by ~1-2) In the pulse test, it is also shown to decrease instantaneously, and when the photodiode is covered, no parasitic effects from the current are present, leading me to believe that the observed effect was truly caused by fringe shift due to magnetic shrinkage caused by the solenoid. For this reason, this may very well be my last devlog! There is still room for improvement in fine-tuning the amplification system, but the full functionality of every component has been demonstrated. It however doesn’t mean I’m done with the project at all after shipping - I can try out rods with different metals and higher currents with amplified signal to get and compare ‘true’ quantitative data in the future! Check out README.md for more details!
Ships:
I made a Michaelson Interferometer capable of detecting magnetostriction in a nickel rod! It uses light waves to measure changes in mirror distance in the order of nanometers, acting as a super-precise ruler. What’s that? A Michaelson Interferometer splits light through a beamsplitter, then recombines it at the same place to produce interference fringes. As one mirror moves, the phase shift in the recombined light moves too, so these patterns also shift around, increasing in number, and decreasing in size about the center. The photodiode system detects these changes in light intensity, and a relation between wavelength, distance change and number of signal peaks in the photodiode can be established. How did I build mine? I used 3D printing in PETG to build solid, adjustable and modular mounts. I used a rated 650nm adjustable laser light and λ/10 flatness mirrors to reduce external causes of error as much as I could. I designed a sliding rail system coupled with a micrometer for one mirror, allowing for precise wavelength measurement (‘fixed’ mirror in the magnetostriction test). I designed a solenoid system paired with a nickel rod within it which holds the other mirror, allowing magnetostriction measurement (‘fixed’ mirror when measuring laser wavelength) These features allowed me to detect signal changes from a nickel rod’s size as the current in a solenoid wrapped around it increased from 0A-10A, with most if not all external causes being ruled out. So what else could it do? Configuring the photodiode more optimally and using a higher current power supply, magnetostrictive saturation should be possible to calculate, not only for a nickel rod, but for any other metal. Thermal expansion, which causes much greater displacement than its magnetic counterpart, should also be possible to calculate for any metal using this device with no other changes to the system....
|
1793199097.8736675
|
1793285497.8736675
|
|
36047
|
Gomoku Balanced by @EthanCubes | Stardance
|
EthanCubes
|
1
|
50.0
|
682
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T03:17:59Z", "hours": 50.0, "multiplier": 13.83, "payout": 682, "blessing": "neutral", "text": "I made Gomoku in Pygame. Gomoku is an East Asian board game that’s kinda similar to Tic-Tac-Toe, except the board is 15x15 or 19x19 and the players are aiming for 5 in a row instead of 3. By far the hardest part of making this was making the bot that plays against you. It essentially scans every spot on the board for a specific pattern, and places a stone when it detects the pattern, which allows it to make and respond to threats. In order to balance the game, the board starts in a randomized position. This is done because when black starts and places a stone in the middle of the board, there is a 100% chance theoretically and 67% chance practically that black will win, which is kinda unfair. The program also includes a somewhat functional title screen and a volume toggle that stores the status on a persistent config file. This is my first actually serious Python project, and my first time making any sort of GUI in a non-browser based programming language (like not scratch and not javascript). It was really satisfying to make, even if I did get annoyed a lot while making it.", "repo": "https://github.com/EthanCubes/gomoku-balanced", "demo": "https://ethancubes.itch.io/gomoku-balanced"}]...
|
[{"post_id": 34941, "ts": "202 [{"post_id": 34941, "ts": "2026-07-26T01:55:06Z", "hours": 3.2747, "text": "Devlog #11: Probably final devlog before ship The project is now released on Itch.io ! There’s files for Linux, MacOS, and Windows since compatibility is important. I personally daily drive Linux, but I know that most people use Mac or Windows. If I get 5 likes on this post I might release this for iOS and Android (depends on if it costs money to release idk) Yes, it did take me 3 hours to package the files and put them on GitHub and Itch.io. Yes, I also used AI a lot for it, but in my defense this is my first time doing anything like this. There were also a couple of issues with the assets locations, and I also had to use AI but overall I think AI only takes up maybe 2-3% of this project."}, {"post_id": 34373, "ts": "2026-07-25T01:06:30Z", "hours": 4.3381, "text": "Devlog #10: The bot is finally fixed. Now it (almost) never misses tactics, and it plays about 10 times faster thanks to better scanning. So essentially what I did was for every empty spot on the board, it scans for a specified pattern. If a pattern is found, it returns the coordinates, which are then placed. If somehow there are no patterns, the bot either tries to get 2 in a row or plays randomly. the screenshot is me losing to my own creation. probably because i lowkey have a skill issue"}, {"post_id": 33892, "ts": "2026-07-24T05:27:36Z", "hours": 3.6411, "text": "Devlog #9 I added a volume toggle to the main menu. IDK if I mentioned this, but I added background music to the game. It gets annoying listening to the same 3 songs for so long, so I made a 2 buttons with Inkscape and coded it so that they toggle between each other depending on if the background music is turned on or turned off. I decided to switch from Visual Studio Code to PyCharm, and was then assaulted by like 50 warnings about how everything I did went against some kind of Python convention or another. It took me like an hour, but I managed to get all the errors sorted out. The bot is still broken, IDK why :("}, {"post_id": 33710, "ts": "2026-07-23T20:49:56Z", "hours": 4.3214, "text": "Devlog #8 Some relatively small changes like README improvements and adding the ability for the game to handle draws. Believe it or not, it’s actually possible to get a draw by filling up the entire board, but it isn’t easy (see image below). I also removed the bot’s AI because it was really unoptimized and inefficient, and I am now in the process of rebuilding the bot’s AI from scratch."}, {"post_id": 33168, "ts": "2026-07-22T20:36:21Z", "hours": 5.2072, "text": "Devlog #7 The bot can now create threats and and will try to win. It’s still kinda dumb imo, but I’m a relatively skilled player so yeah. I was thinking of maybe using an engine someone else had built to power the bot but I couldn’t find anything. The bot still misses tactics from me like 50% of the time and idk how to make it better."}, {"post_id": 32152, "ts": "2026-07-21T03:41:15Z", "hours": 6.3583, "text": "Devlog #6 I added intelligence to the bot. It’s not that smart yet, but it now actively can try to thwart your plans by blocking you when you have 3 or 4 in a row, and will also try to get 5 in a row. I did this by searching for 3 and 4 in a row using a modified version of the function that scans for the game conclusion (5 in a row). To help evaluate the position, I created a separate copy of the board, then simulated placing stones on every spot and seeing if there’s a 4 or 5 in a row now. For a while, if there was already a 3 or 4 in a row on the board, the engine would just think that the first available spot was a good spot, which is not good. I solved this by getting the function to return the position where the 4 or 5 in a row is located. The bot has yet to beat me in a game where I took it seriously, but hopefully that changes soon."}, {"post_id": 31571, "ts": "2026-07-20T02:25:51Z", "hours": 1.4769, "text": "Devlog #5 I made singlepayer vs bot (finally). Only problem, the bot players with the skill of a blind and deaf 2 year old, which is too say, completely randomly. I will proceed to stall the creation of an somewhat competent engine for this for like 3 weeks."}, {"post_id": 31526, "ts": "2026-07-20T00:25:58Z", "hours": 2.8094, "text": "Devlog #4: Optimizations and StartPositions As the title implies, I optimized the code and tried to fix what is called “spaghetti code”. I guess I was somewhat successful but I won’t know until I start trying to implement singleplayer with the bot. One thing about this project that I haven’t implemented yet is the actual swap2 balancing. Except that actually implementing swap2 turns out to be very hard, so I decided to use my own balancing method instead, by just picking a random starting position with 3 stones on the board. Is this the best? No. But does it work better than the pro method? Probably idk."}, {"post_id": 31414, "ts": "2026-07-19T19:21:03Z", "hours": 9.7492, "text": "#Devlog #3 I added a main menu to the game. It doesn’t look good or anything, and I had to make the buttons in GIMP because I was too lazy to draw the buttons on Pygame. From the main menu, you can quit the game, play offline multiplayer, and there’s also buttons for settings and singleplayer, which don’t do anything except stop you from clicking any buttons. After someone wins in offline multiplayer, a line gets drawn (like in tic-tac-toe), and you exit back to the main menu. For a long time, it was broken and after you exited, you weren’t able to start another game, but that was because of a bug with resetting the board."}, {"post_id": 29940, "ts": "2026-07-17T03:45:26Z", "hours": 4.4617, "text": "Devlog #2 So you can now actually play the game. It only took me 8 hours. What I added Placing stones The most basic gameplay mechanic of Gomuku and Go. When you click on a place you can place a stone (in Gomuku and Go it’s where the lines intersect), a stone appears according which player’s turn it currently is. Winning When you get 5 in a row, you win. The game window closes instantly, which isn’t really good, but I couldn’t find a way to display a gameover message (at least not yet) Struggles Misalignment For a long time, the rendering script was somehow broken and stones would display in the incorrect location. I solved it by manually moving the stones 45 pixels up and left. Gameover detection This took me so long. For the longest time, it seemed like the code was just not running. Then I asked AI because I literally did not know what to do, then the program just crashed on start. Then I asked AI again and it works now. Apparently it was because I used break and return prematurely, which lead to most of the squares not being detected."}, {"post_id": 29705, "ts": "2026-07-16T19:55:08Z", "hours": 4.34, "text": "#Devlog #1 My family is from China, and so as I grew up I played a lot of Asian board games. One of those was Gomuku, or Wuziqi. So I decided to make it in Python, with a bit of a twist. Most of the gomuku websites on the internet, and even my family, when we played it, use the Pro ruleset. In this ruleset, the player that starts first (black) has literally a 100% chance of winning in a perfect game, and a 67% chance of winning in actual competitive play. This is of course, unfair, so the highest level tournaments instead use the swap2 ruleset (hence the swap2 in the project name), which balances things out. TBH I don’t really understand it much but I’ll figure it out. So this session, I just made a game board in Pygame. This should not have taken me 3 hours, but I don’t have any experience in Pygame beforehand, and also I tried to code the code for placing the stones before the code to actually rendering the game. I had to delete the code since it was very confusing when writing the code to draw the board."}]...
|
Title: Gomoku Balanced by @EthanCubes | Stardance
Title: Gomoku Balanced by @EthanCubes | Stardance
Devlogs:
#Devlog #1 My family is from China, and so as I grew up I played a lot of Asian board games. One of those was Gomuku, or Wuziqi. So I decided to make it in Python, with a bit of a twist. Most of the gomuku websites on the internet, and even my family, when we played it, use the Pro ruleset. In this ruleset, the player that starts first (black) has literally a 100% chance of winning in a perfect game, and a 67% chance of winning in actual competitive play. This is of course, unfair, so the highest level tournaments instead use the swap2 ruleset (hence the swap2 in the project name), which balances things out. TBH I don’t really understand it much but I’ll figure it out. So this session, I just made a game board in Pygame. This should not have taken me 3 hours, but I don’t have any experience in Pygame beforehand, and also I tried to code the code for placing the stones before the code to actually rendering the game. I had to delete the code since it was very confusing when writing the code to draw the board.
Devlog #2 So you can now actually play the game. It only took me 8 hours. What I added Placing stones The most basic gameplay mechanic of Gomuku and Go. When you click on a place you can place a stone (in Gomuku and Go it’s where the lines intersect), a stone appears according which player’s turn it currently is. Winning When you get 5 in a row, you win. The game window closes instantly, which isn’t really good, but I couldn’t find a way to display a gameover message (at least not yet) Struggles Misalignment For a long time, the rendering script was somehow broken and stones would display in the incorrect location. I solved it by manually moving the stones 45 pixels up and left. Gameover detection This took me so long. For the longest time, it seemed like the code was just not running. Then I asked AI because I literally did not know what to do, then the program just crashed on start. Then I asked AI again and it works now. Apparently it was because I used break and return prematurely, which lead to most of the squares not being detected.
#Devlog #3 I added a main menu to the game. It doesn’t look good or anything, and I had to make the buttons in GIMP because I was too lazy to draw the buttons on Pygame. From the main menu, you can quit the game, play offline multiplayer, and there’s also buttons for settings and singleplayer, which don’t do anything except stop you from clicking any buttons. After someone wins in offline multiplayer, a line gets drawn (like in tic-tac-toe), and you exit back to the main menu. For a long time, it was broken and after you exited, you weren’t able to start another game, but that was because of a bug with resetting the board.
Devlog #4: Optimizations and StartPositions As the title implies, I optimized the code and tried to fix what is called “spaghetti code”. I guess I was somewhat successful but I won’t know until I start trying to implement singleplayer with the bot. One thing about this project that I haven’t implemented yet is the actual swap2 balancing. Except that actually implementing swap2 turns out to be very hard, so I decided to use my own balancing method instead, by just picking a random starting position with 3 stones on the board. Is this the best? No. But does it work better than the pro method? Probably idk.
Devlog #5 I made singlepayer vs bot (finally). Only problem, the bot players with the skill of a blind and deaf 2 year old, which is too say, completely randomly. I will proceed to stall the creation of an somewhat competent engine for this for like 3 weeks.
Devlog #6 I added intelligence to the bot. It’s not that smart yet, but it now actively can try to thwart your plans by blocking you when you have 3 or 4 in a row, and will also try to get 5 in a row. I did this by searching for 3 and 4 in a row using a modified version of the function that scans for the game conclusion (5 in a row). To help evaluate the position, I created a separate copy of the board, then simulated placing stones on every spot and seeing if there’s a 4 or 5 in a row now. For a while, if there was already a 3 or 4 in a row on the board, the engine would just think that the first available spot was a good spot, which is not good. I solved this by getting the function to return the position where the 4 or 5 in a row is located. The bot has yet to beat me in a game where I took it seriously, but hopefully that changes soon.
Devlog #7 The bot can now create threats and and will try to win. It’s still kinda dumb imo, but I’m a relatively skilled player so yeah. I was thinking of maybe using an engine someone else had built to power the bot but I couldn’t find anything. The bot still misses tactics from me like 50% of the time and idk how to make it better.
Devlog #8 Some relatively small changes like README improvements and adding the ability for the game to handle draws. Believe it or not, it’s actually possible to get a draw by filling up the entire board, but it isn’t easy (see image below). I also removed the bot’s AI because it was really unoptimized and inefficient, and I am now in the process of rebuilding the bot’s AI from scratch.
Devlog #9 I added a volume toggle to the main menu. IDK if I mentioned this, but I added background music to the game. It gets annoying listening to the same 3 songs for so long, so I made a 2 buttons with Inkscape and coded it so that they toggle between each other depending on if the background music is turned on or turned off. I decided to switch from Visual Studio Code to PyCharm, and was then assaulted by like 50 warnings about how everything I did went against some kind of Python convention or another. It took me like an hour, but I managed to get all the errors sorted out. The bot is still broken, IDK why :(
Devlog #10: The bot is finally fixed. Now it (almost) never misses tactics, and it plays about 10 times faster thanks to better scanning. So essentially what I did was for every empty spot on the board, it scans for a specified pattern. If a pattern is found, it returns the coordinates, which are then placed. If somehow there are no patterns, the bot either tries to get 2 in a row or plays randomly. the screenshot is me losing to my own creation. probably because i lowkey have a skill issue
Devlog #11: Probably final devlog before ship The project is now released on Itch.io ! There’s files for Linux, MacOS, and Windows since compatibility is important. I personally daily drive Linux, but I know that most people use Mac or Windows. If I get 5 likes on this post I might release this for iOS and Android (depends on if it costs money to release idk) Yes, it did take me 3 hours to package the files and put them on GitHub and Itch.io. Yes, I also used AI a lot for it, but in my defense this is my first time doing anything like this. There were also a couple of issues with the assets locations, and I also had to use AI but overall I think AI only takes up maybe 2-3% of this project.
Ships:
I made Gomoku in Pygame. Gomoku is an East Asian board game that’s kinda similar to Tic-Tac-Toe, except the board is 15x15 or 19x19 and the players are aiming for 5 in a row instead of 3. By far the hardest part of making this was making the bot that plays against you. It essentially scans every spot on the board for a specific pattern, and places a stone when it detects the pattern, which allows it to make and respond to threats. In order to balance the game, the board starts in a randomized position. This is done because when black starts and places a stone in the middle of the board, there is a 100% chance theoretically and 67% chance practically that black will win, which is kinda unfair. The program also includes a somewhat functional title screen and a volume toggle that stores the status on a persistent config file. This is my first actually serious Python project, and my first time making any sort of GUI in a non-browser based programming language (like not scratch and not javascript). It was really satisfying to make, even if I did get annoyed a lot while making it....
|
1793116255.8726249
|
1793202655.8726249
|
|
40892
|
legacysignal by @simonproyt | Stardance
|
simonproyt
|
1
|
50.0
|
933
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T20:18:52Z", "hours": 50.0, "multiplier": 18.54, "payout": 933, "blessing": "neutral", "text": "So i taught this project was going to be easy like creating the tidal client for legacy devices but like i was so naive and didnt yet understand how hard it is going to be but it was good in the end i think because i learned a lot about the signal protocol encryption and about backporting and how to make legacy android do things that it was never intended to do but the project is still not finished and i have a lot of work ahead if i want make the app feature complete to the normal signal mobile app but i think its a great demo and it was a great learning experience", "repo": "https://github.com/simonproyt/legacysignal", "demo": "https://cdn.hackclub.com/01a02af7-c370-7c8f-b806-6ca92696e8a8/demo.mp4"}]...
|
[{"post_id": 52604, "ts": "202 [{"post_id": 52604, "ts": "2026-08-22T20:11:21Z", "hours": 3.6061, "text": "Devlog 11: Fixing a few bugs and getting the app ready to ship So in this time i havent done a lot of like cool stuff rather i was fixing a few bugs that broke the messaging feature and image attachment loading because i wanted to showcase those in my demo video and i fixed the github action so ppl can download an apk for the latest version if they want to try it out on their own legacy device also sorry for not writing a dev log sooner i was kinda busy but now i finally got the time to get the project into a ready to ship state"}, {"post_id": 49850, "ts": "2026-08-18T20:00:49Z", "hours": 4.1261, "text": "Devlog 10: Finally added image sending/receiving support So the next thing i taught i would add to my app is image sending and receiving support because that is like kinda a basic feature that any messaging app needs so i added image reviving sending images from the phones storage and via taking a picture with the camera adding these was kinda annoying with figuring out all the correct endpoints and stuff but i think it was worth it in the end"}, {"post_id": 48433, "ts": "2026-08-16T19:38:19Z", "hours": 2.5408, "text": "Devlog 9: New features and a bit of an ui overhaul So I decided to make the ui a bit more pretty and a few new features So this is what i added: a new cleaner ui contact profile picture support message time stamping in the ui dark theme and theme switcher with persistence these are just like qol improvements that i decided to add into the app nothing special but like i missed a few features like the dark theme myself so nothing major but i hope these changes makes the app more usable to ppl"}, {"post_id": 46921, "ts": "2026-08-14T13:57:31Z", "hours": 4.015, "text": "Devlog 8 Working name syncing So after a lot of work i finally made it work so it can show the name that you entered on the signal set up or the devices not just the phone numbers or just unknown sender or just the user id on my app so i guess another feature added now but i still want to add a few stuff before shipping"}, {"post_id": 45824, "ts": "2026-08-12T15:33:59Z", "hours": 6.4758, "text": "Devlog 7: Partly finally working message send/receive So after a lot of work i finally managed to get message sending and receiving working with all of their related crypto stuff but its kinda broken because our message sending api does not support sealed sender yet only the old legacy unsealed sender api that does not encrypt the sender data like modern signal does so on all of the replies it says that they came from unknown contact rather then the actual contact so im working on implementing that so the current stage of the project is after 3x hours of development is Whats working: registering onto the signal network via the phone number and the captchas receiving messages Whats not working or only partially working: sending messages (not working fully because the sealed sender stuff that i talked about previously)"}, {"post_id": 44528, "ts": "2026-08-10T10:59:03Z", "hours": 3.4514, "text": "Devlog 6 Discoverability finally works So after a lot of pain and trial and error and using the signal android source code as an some sort of example that how does the protocol work now we have a finally working code and i can finally move onto the message encryption/decryption part and make it work"}, {"post_id": 43257, "ts": "2026-08-08T12:38:55Z", "hours": 3.6764, "text": "Debugging hell pt2 sorry guys i have been on vacation and taking a bit of a break from the project because of it but now its back in active development now but sadly after fixing registration there is another problem my phone with the latest signal client sadly cant find my client says that its not registered some why even tho it successfully registers so im working trying to fix that possibly and make this project work finally"}, {"post_id": 39975, "ts": "2026-08-03T10:03:07Z", "hours": 6.6417, "text": "Devlog 4: Finally working registration So after like 15 hours of continuous work and debugging i can finally now say that the registration and connection to the signal network is finally working now and i can finally move onto actually making the app itself rather then just having to do trial and error debugging with libsignal and the protocol also while i was testing the app i made a working ci pipeline so the app could be actually downloaded by other ppl now that took a few attempts because of the setting up of the rust toolchains stuff and the android ndk setup part having a few bugs but that is working too now"}, {"post_id": 38718, "ts": "2026-08-01T08:23:46Z", "hours": 9.9889, "text": "Devlog 3: Stuck in debuging hell I’m sorry yall that i didnt make any devlogs about this but i taught this was kinda boring and nothing to write about but after last devlog i found out that the my registration api wasnt fully finished and i needed to generate more keys after the user enters the code from the sms and the registration itself starts but for that we needed to use signals cryptography lib called libsignal so i tried that but the latest version of libsignal had a newer type of elf hash that android 4.x didnt support so i tried using an older version of libsignal but that still didnt work cause it used a few instructions that newer android versions introduced so i tried binary patching in the missing instructions but that still didnt work so i decided the only viable solution was to fork libsignal to try to manually backport everything and thats where im stuck now in debugging hell trying to manually backport and replace the api calls that it uses with the older android versions and its been like 9 hours of trying to do this and still nothing so im kinda tired trying to do this but im wishing that i will finally fix everything and could move onto making that actual app itself rather then then trying to make libsignal work Thank you for reading this super long devlog!"}, {"post_id": 36915, "ts": "2026-07-29T09:58:25Z", "hours": 1.3386, "text": "Devlog 2 Polishing the ui and adding more underlying stuff that we will need in the future so So in this we added to two big changes First is the completely reworked set up it to make it a little bit more pretty and polished looking And the other one is its a more of an underlying change but a well needed one because in the previous demos it stored the key pairs in plain text and stuff so that is obviously super dangerous in a secure messaging context so it will now let you encrypt it via a pin you set in the account creation like in the real signal"}, {"post_id": 36867, "ts": "2026-07-29T06:42:19Z", "hours": 4.4753, "text": "First devlog for this new project So i taught that i made tidal for legacy android and it was pretty easy this is going to be easy like that but how naive was i am like getting even the signal sms registration almost took 4 hours of debugging mainly so this is going to be hard but i will try because it will be worth it in the end"}]...
|
Title: legacysignal by @simonproyt | Stardance
De Title: legacysignal by @simonproyt | Stardance
Devlogs:
First devlog for this new project So i taught that i made tidal for legacy android and it was pretty easy this is going to be easy like that but how naive was i am like getting even the signal sms registration almost took 4 hours of debugging mainly so this is going to be hard but i will try because it will be worth it in the end
Devlog 2 Polishing the ui and adding more underlying stuff that we will need in the future so So in this we added to two big changes First is the completely reworked set up it to make it a little bit more pretty and polished looking And the other one is its a more of an underlying change but a well needed one because in the previous demos it stored the key pairs in plain text and stuff so that is obviously super dangerous in a secure messaging context so it will now let you encrypt it via a pin you set in the account creation like in the real signal
Devlog 3: Stuck in debuging hell I’m sorry yall that i didnt make any devlogs about this but i taught this was kinda boring and nothing to write about but after last devlog i found out that the my registration api wasnt fully finished and i needed to generate more keys after the user enters the code from the sms and the registration itself starts but for that we needed to use signals cryptography lib called libsignal so i tried that but the latest version of libsignal had a newer type of elf hash that android 4.x didnt support so i tried using an older version of libsignal but that still didnt work cause it used a few instructions that newer android versions introduced so i tried binary patching in the missing instructions but that still didnt work so i decided the only viable solution was to fork libsignal to try to manually backport everything and thats where im stuck now in debugging hell trying to manually backport and replace the api calls that it uses with the older android versions and its been like 9 hours of trying to do this and still nothing so im kinda tired trying to do this but im wishing that i will finally fix everything and could move onto making that actual app itself rather then then trying to make libsignal work Thank you for reading this super long devlog!
Devlog 4: Finally working registration So after like 15 hours of continuous work and debugging i can finally now say that the registration and connection to the signal network is finally working now and i can finally move onto actually making the app itself rather then just having to do trial and error debugging with libsignal and the protocol also while i was testing the app i made a working ci pipeline so the app could be actually downloaded by other ppl now that took a few attempts because of the setting up of the rust toolchains stuff and the android ndk setup part having a few bugs but that is working too now
Debugging hell pt2 sorry guys i have been on vacation and taking a bit of a break from the project because of it but now its back in active development now but sadly after fixing registration there is another problem my phone with the latest signal client sadly cant find my client says that its not registered some why even tho it successfully registers so im working trying to fix that possibly and make this project work finally
Devlog 6 Discoverability finally works So after a lot of pain and trial and error and using the signal android source code as an some sort of example that how does the protocol work now we have a finally working code and i can finally move onto the message encryption/decryption part and make it work
Devlog 7: Partly finally working message send/receive So after a lot of work i finally managed to get message sending and receiving working with all of their related crypto stuff but its kinda broken because our message sending api does not support sealed sender yet only the old legacy unsealed sender api that does not encrypt the sender data like modern signal does so on all of the replies it says that they came from unknown contact rather then the actual contact so im working on implementing that so the current stage of the project is after 3x hours of development is Whats working: registering onto the signal network via the phone number and the captchas receiving messages Whats not working or only partially working: sending messages (not working fully because the sealed sender stuff that i talked about previously)
Devlog 8 Working name syncing So after a lot of work i finally made it work so it can show the name that you entered on the signal set up or the devices not just the phone numbers or just unknown sender or just the user id on my app so i guess another feature added now but i still want to add a few stuff before shipping
Devlog 9: New features and a bit of an ui overhaul So I decided to make the ui a bit more pretty and a few new features So this is what i added: a new cleaner ui contact profile picture support message time stamping in the ui dark theme and theme switcher with persistence these are just like qol improvements that i decided to add into the app nothing special but like i missed a few features like the dark theme myself so nothing major but i hope these changes makes the app more usable to ppl
Devlog 10: Finally added image sending/receiving support So the next thing i taught i would add to my app is image sending and receiving support because that is like kinda a basic feature that any messaging app needs so i added image reviving sending images from the phones storage and via taking a picture with the camera adding these was kinda annoying with figuring out all the correct endpoints and stuff but i think it was worth it in the end
Devlog 11: Fixing a few bugs and getting the app ready to ship So in this time i havent done a lot of like cool stuff rather i was fixing a few bugs that broke the messaging feature and image attachment loading because i wanted to showcase those in my demo video and i fixed the github action so ppl can download an apk for the latest version if they want to try it out on their own legacy device also sorry for not writing a dev log sooner i was kinda busy but now i finally got the time to get the project into a ready to ship state
Ships:
So i taught this project was going to be easy like creating the tidal client for legacy devices but like i was so naive and didnt yet understand how hard it is going to be but it was good in the end i think because i learned a lot about the signal protocol encryption and about backporting and how to make legacy android do things that it was never intended to do but the project is still not finished and i have a lot of work ahead if i want make the app feature complete to the normal signal mobile app but i think its a great demo and it was a great learning experience...
|
1793116509.595019
|
1793202909.595019
|
|
42187
|
Nix Dotfiles by @ngarnsworthy | Stardance
|
ngarnsworthy
|
1
|
50.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-08T04:25:03Z", "hours": 50.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hi! For one of my stardance projects I chose to work on NixOS dotfiles. They are a little different from the vast majority of projects so, please, bear with me. NixOS is a declarative operating system that has it’s function defined by a set of dotfiles, what I wrote! Because the dotfiles define an operating system it was a little harder to make a demo, so I opted to make a short video showing off some cool things you can do. Also, take a chance to read the README.md to see a little more explanation of some of the parts of the dotfiles. One think I think I’ve learned a lot about through this project is functional programing. The dotfiles I wrote are in the functional Nix language. Functional programming compared to others forms lacks state, each function only acts on its inputs to create outputs. This makes the job of functions easier to determine because they can’t go and touch outside state, something I want to begin using in other projects on mine. One thing I’m very proud of is the ability to run a Minecraft server I created. In the past with the servers I self-hosted I ran into issues with the server running out of resources; to fix this I used systemd (I’ve never really gotten into it before!) to only start and run the server when it is needed!!! I also had to learn about protecting services from bad-actors to prevent issues with my services. One thing I would have done differently was the way I committed. I had a script that created a commit every time I rebuilt the dotfiles, this was a bad idea because now my commit history is full of unexplained commits and commits from when I was trying to get something to work. If I were to start this project from scratch I would have used something like commitizen and optional commits to prevent this issue.", "repo": "https://gitlab.com/ngarnsworthy/nix-dotfiles", "demo": "https://youtu.be/ERCqtOby6EU"}]...
|
[{"post_id": 77735, "ts": "202 [{"post_id": 77735, "ts": "2026-10-08T03:54:25Z", "hours": 2.3667, "text": "Finished up creating a presentation for shipping because there is no way to use my project without installing nixos yourself :P"}, {"post_id": 73138, "ts": "2026-09-24T13:57:51Z", "hours": 9.3597, "text": "Done Added README.md Added wshowkeys to make a demo video Added docker Changed Firefox Bookmarks and added Noogle Added hyprsunset (night screen mode) and hypridle and hyprlock (lock screen) Added more LSP servers to NeoVim Added Discord updates from NeoVim Fixed PDF application Added CDemu Removed some interface modules Fix NAS mount Added a Discord ping to the minecraft server Added VPN Minecraft Server It is useful to know when someone joined the minecraft server. To this end a systemd that starts with the minecraft server was created that was wanted by the main minecraft server. This means when the minecraft server starts so will the ping service. The way the ping works is very simple, it just goes and sends a request to the discord webhook api with a body of {“message”: “The server has started”}. Like all systemd services I created I did my best to harden it. This involved limiting its network access and only allowing to see (and not write) a couple of files on the FS. The discord API key was stored in SOPS. TODO Continue to shape the OS to my developing needs. Also, it may be useful to start from scratch at some point."}, {"post_id": 45882, "ts": "2026-08-12T16:52:33Z", "hours": 9.3231, "text": "Done Minecraft Added more mods to servers and setup a FTB modded server. I would have preferred to setup the FTB server using the nixos philosophy but I needed to install it with the installer because nix-minecraft does not support the use of FTB or Curseforge modpacks. MTOD The pictured MOTD shows up when you login to give a quick picture of the system status. The services that are displayed can be configured. In progress: modularization I’m creating a mySystem set of modules that individual configurations can enable and disable. This abstracts away the nix options and makes it easier to setup a new system quickly. TODO Print Server Improve NeoVim"}, {"post_id": 43641, "ts": "2026-08-09T00:53:36Z", "hours": 9.105, "text": "Done Socket Java Minecraft Server Minecraft servers take up a lot of system resources so it makes sense to turn them off when no one is using them. I accomplish this through systemd services and sockets. A systemd socket listens for any incoming connection on a port and passes that to its associated service. Because Minecraft servers don’t support receiving from UNIX sockets that receiving service is a proxy. That proxy transfers all packets to the Minecraft server. The Minecraft server service is set to only run when the socket is active (which has a timeout). Minecraft Bedrock Server This one gave me a lot of headaches. Simply put BDS does not like NixOS. I ended up using a docker container to run the server in. This also comes with the benefit of auto updates. BedrockOnLinux One of the servers I run in Minecraft Bedrock (/ ) and I want to be able to access it from my NixOS PCs. So I created a nixpkg for BedrockOnLinux a tool that allows you to run Minecraft Bedrock on a Lixux machine. Failures There were SO MANY ISSUES with trying to get sockets working. At first I followed a blog post which used a over complicated method using RCON to stop the server when no players were on but using a timeout on the proxy worked much better and had player pings also keep the server open. I spent far too much time trying to get sockets to work for the bedrock server using socat to proxy the UDP connections, though this may have worked if I got my server properly working I’ll need to check this in the future. TODO Modpack from FTB Firefox Bookmarks Nvim code completion"}, {"post_id": 42433, "ts": "2026-08-07T04:22:35Z", "hours": 5.5086, "text": "Done Package Created a package for mc-image-helper to use in a better Minecraft server module for NixOS because I plan on deploying it to the Minecraft server I run. Clean up Removed template comments and moved to a preset based system where presets like “PC” and “headless” controlled what was included. Fonts Fixed issues with emojis and CJK (Chinese Japanese Korean) characters. Waybar Improved battery icons and showing charging. Also enabled a smoother battery life readout. NeoVim Enabled NeoVim language servers and switched to internal Tree Sitter due to issues with the existing config. Storage Connect automatically to NAS using sops secrets. TODO NeoVim Get snipping engine to work for code autocomplete Server Configure Minecraft module and deploy Minecraft server Firefox Add bookmarks for Stardance, Gitlab, NixOS, etc."}, {"post_id": 40431, "ts": "2026-08-03T22:55:11Z", "hours": 2.9044, "text": "MPD MPD is a tool for playing music on Linux. I set it up as a user service under home-manager (to prevent issues with Pipewire O_o). I also configured a module in Waybar for it for easy control and seeing information. TODO Global MPD server to prevent database loading time Firefox default bookmarks (prehaps) Generalize config"}, {"post_id": 39872, "ts": "2026-08-03T04:24:23Z", "hours": 2.7503, "text": "Transferred over NeoVim config I had already built a NeoVim config in another set of dotfiles (when I was using Arch btw :P) and I just needed to move it over to home-manager nix dotfiles. Fonts Fonts needed to be fixed again 0_o. Now they are all managed my home-manager which avoids some of the fc detection issues I had been having. Emojis work now too! Firefox Firefox has finally been purged of all the junk! The new tab page is now empty from the get go! TODO Firefox default bookmarks Add features to waybar Generalize config for any computer"}, {"post_id": 38471, "ts": "2026-07-31T21:14:48Z", "hours": 1.7994, "text": "Upgraded Waybar to look better. Made system info all icons and removed unnecessary fluff. In the future I want to make it an option in Waybar to have your username be lowercase. TODO NeoVim config Firefox default bookmarks"}, {"post_id": 37986, "ts": "2026-07-31T02:34:59Z", "hours": 6.9425, "text": "Just added this project to Stardance! Set up build automation, hyprland, waybar, kitty, and some common programs. Currently I’m working on creating a NeoVim config that is more than a placeholder to get HackaTime to work."}]...
|
Title: Nix Dotfiles by @ngarnsworthy | Stardance
Title: Nix Dotfiles by @ngarnsworthy | Stardance
Devlogs:
Just added this project to Stardance! Set up build automation, hyprland, waybar, kitty, and some common programs. Currently I’m working on creating a NeoVim config that is more than a placeholder to get HackaTime to work.
Upgraded Waybar to look better. Made system info all icons and removed unnecessary fluff. In the future I want to make it an option in Waybar to have your username be lowercase. TODO NeoVim config Firefox default bookmarks
Transferred over NeoVim config I had already built a NeoVim config in another set of dotfiles (when I was using Arch btw :P) and I just needed to move it over to home-manager nix dotfiles. Fonts Fonts needed to be fixed again 0_o. Now they are all managed my home-manager which avoids some of the fc detection issues I had been having. Emojis work now too! Firefox Firefox has finally been purged of all the junk! The new tab page is now empty from the get go! TODO Firefox default bookmarks Add features to waybar Generalize config for any computer
MPD MPD is a tool for playing music on Linux. I set it up as a user service under home-manager (to prevent issues with Pipewire O_o). I also configured a module in Waybar for it for easy control and seeing information. TODO Global MPD server to prevent database loading time Firefox default bookmarks (prehaps) Generalize config
Done Package Created a package for mc-image-helper to use in a better Minecraft server module for NixOS because I plan on deploying it to the Minecraft server I run. Clean up Removed template comments and moved to a preset based system where presets like “PC” and “headless” controlled what was included. Fonts Fixed issues with emojis and CJK (Chinese Japanese Korean) characters. Waybar Improved battery icons and showing charging. Also enabled a smoother battery life readout. NeoVim Enabled NeoVim language servers and switched to internal Tree Sitter due to issues with the existing config. Storage Connect automatically to NAS using sops secrets. TODO NeoVim Get snipping engine to work for code autocomplete Server Configure Minecraft module and deploy Minecraft server Firefox Add bookmarks for Stardance, Gitlab, NixOS, etc.
Done Socket Java Minecraft Server Minecraft servers take up a lot of system resources so it makes sense to turn them off when no one is using them. I accomplish this through systemd services and sockets. A systemd socket listens for any incoming connection on a port and passes that to its associated service. Because Minecraft servers don’t support receiving from UNIX sockets that receiving service is a proxy. That proxy transfers all packets to the Minecraft server. The Minecraft server service is set to only run when the socket is active (which has a timeout). Minecraft Bedrock Server This one gave me a lot of headaches. Simply put BDS does not like NixOS. I ended up using a docker container to run the server in. This also comes with the benefit of auto updates. BedrockOnLinux One of the servers I run in Minecraft Bedrock (/ ) and I want to be able to access it from my NixOS PCs. So I created a nixpkg for BedrockOnLinux a tool that allows you to run Minecraft Bedrock on a Lixux machine. Failures There were SO MANY ISSUES with trying to get sockets working. At first I followed a blog post which used a over complicated method using RCON to stop the server when no players were on but using a timeout on the proxy worked much better and had player pings also keep the server open. I spent far too much time trying to get sockets to work for the bedrock server using socat to proxy the UDP connections, though this may have worked if I got my server properly working I’ll need to check this in the future. TODO Modpack from FTB Firefox Bookmarks Nvim code completion
Done Minecraft Added more mods to servers and setup a FTB modded server. I would have preferred to setup the FTB server using the nixos philosophy but I needed to install it with the installer because nix-minecraft does not support the use of FTB or Curseforge modpacks. MTOD The pictured MOTD shows up when you login to give a quick picture of the system status. The services that are displayed can be configured. In progress: modularization I’m creating a mySystem set of modules that individual configurations can enable and disable. This abstracts away the nix options and makes it easier to setup a new system quickly. TODO Print Server Improve NeoVim
Done Added README.md Added wshowkeys to make a demo video Added docker Changed Firefox Bookmarks and added Noogle Added hyprsunset (night screen mode) and hypridle and hyprlock (lock screen) Added more LSP servers to NeoVim Added Discord updates from NeoVim Fixed PDF application Added CDemu Removed some interface modules Fix NAS mount Added a Discord ping to the minecraft server Added VPN Minecraft Server It is useful to know when someone joined the minecraft server. To this end a systemd that starts with the minecraft server was created that was wanted by the main minecraft server. This means when the minecraft server starts so will the ping service. The way the ping works is very simple, it just goes and sends a request to the discord webhook api with a body of {“message”: “The server has started”}. Like all systemd services I created I did my best to harden it. This involved limiting its network access and only allowing to see (and not write) a couple of files on the FS. The discord API key was stored in SOPS. TODO Continue to shape the OS to my developing needs. Also, it may be useful to start from scratch at some point.
Finished up creating a presentation for shipping because there is no way to use my project without installing nixos yourself :P
Ships:
Hi! For one of my stardance projects I chose to work on NixOS dotfiles. They are a little different from the vast majority of projects so, please, bear with me. NixOS is a declarative operating system that has it’s function defined by a set of dotfiles, what I wrote! Because the dotfiles define an operating system it was a little harder to make a demo, so I opted to make a short video showing off some cool things you can do. Also, take a chance to read the README.md to see a little more explanation of some of the parts of the dotfiles. One think I think I’ve learned a lot about through this project is functional programing. The dotfiles I wrote are in the functional Nix language. Functional programming compared to others forms lacks state, each function only acts on its inputs to create outputs. This makes the job of functions easier to determine because they can’t go and touch outside state, something I want to begin using in other projects on mine. One thing I’m very proud of is the ability to run a Minecraft server I created. In the past with the servers I self-hosted I ran into issues with the server running out of resources; to fix this I used systemd (I’ve never really gotten into it before!) to only start and run the server when it is needed!!! I also had to learn about protecting services from bad-actors to prevent issues with my services. One thing I would have done differently was the way I committed. I had a script that created a commit every time I rebuilt the dotfiles, this was a bad idea because now my commit history is full of unexplained commits and commits from when I was trying to get something to work. If I were to start this project from scratch I would have used something like commitizen and optional commits to prevent this issue....
|
1793145171.4090147
|
1793231571.4090147
|
|
46986
|
Kasseo by @Zeti_1223 | Stardance
|
Zeti_1223
|
1
|
50.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T19:39:30Z", "hours": 50.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? I built Kasseo (“Split the fund. Not the trust.”), a shared expense and group fund tracker built with Vue 3, Tailwind CSS, and Firebase, wrapped for Android using Capacitor. It handles two distinct ways groups manage money: a pooled shared fund (“Kitty” mode) and direct expense splitting with automatic balance settlements (“Split” mode). Beyond standard expense logging, it has category budgets with rollover, an AI receipt scanner powered by Gemini through a Cloudflare Worker, an interactive “Wrapped”-style recap generator, and an offline-first sync engine. What was challenging? Getting offline mode right was by far the hardest part. I wanted the app to be genuinely usable when traveling without reception, which meant caching data in IndexedDB and queuing mutations chronologically so they safely replay to Firebase Realtime Database once you get back online. Handling edge cases in multi-currency conversions (preserving historical rates when a fund changes its base currency) and making sure the AI receipt parser reliably extracted items from blurry images also took a lot of debugging. What are you proud of? Logging 50 hours across 31 devlogs and actually finishing something that feels solid enough for daily use. I really care about the small details-smooth charts, customizable themes, 6 language translations, and exportable recap cards that look great when shared with friends. What should people know so they can test your project? Sign in with Google, create a fund, and pick either Kitty or Split mode. Add a couple of expenses or tap the camera button to try scanning a receipt with AI. Test offline mode: switch your browser network to Offline (or turn on Airplane mode), log an expense, and turn the connection back on. You’ll see it queue locally and sync right away. Check out the Budgets tab in settings to try category spending limits, or open the Recap tab to view the generated summary cards.", "repo": "https://github.com/zeti1223/Kasseo/", "demo": "https://kasseo.eu/"}]...
|
[{"post_id": 66095, "ts": "202 [{"post_id": 66095, "ts": "2026-09-11T17:54:40Z", "hours": 1.2186, "text": "Rewrote readme"}, {"post_id": 63725, "ts": "2026-09-07T17:39:56Z", "hours": 1.4283, "text": "Show last synced and Category budgets don’t carry over unused amounts"}, {"post_id": 60968, "ts": "2026-09-03T17:28:58Z", "hours": 2.4839, "text": "Sort and search"}, {"post_id": 59708, "ts": "2026-09-01T17:10:48Z", "hours": 1.7194, "text": "Done with offline mode (but hackatime didn’t logged properly)"}, {"post_id": 58211, "ts": "2026-08-30T15:55:04Z", "hours": 2.8631, "text": "Created a recap function"}, {"post_id": 57926, "ts": "2026-08-30T08:14:35Z", "hours": 1.1628, "text": "Built a promo site (but hackatime didn’t log properly I worked on it nearly 3 hours)"}, {"post_id": 57329, "ts": "2026-08-29T13:23:54Z", "hours": 3.7394, "text": "Built import functions"}, {"post_id": 57154, "ts": "2026-08-29T08:14:15Z", "hours": 0.9, "text": "Added tests"}, {"post_id": 57129, "ts": "2026-08-29T07:18:57Z", "hours": 0.7311, "text": "Add leave group"}, {"post_id": 56822, "ts": "2026-08-28T19:07:57Z", "hours": 2.6375, "text": "Created better app UI on phone"}, {"post_id": 53991, "ts": "2026-08-24T18:38:07Z", "hours": 0.7572, "text": "Fixed: Split mode: balances panel shows net totals only, not who owes whom specifically #87"}, {"post_id": 53623, "ts": "2026-08-24T08:36:28Z", "hours": 2.3044, "text": "Add cloudflare worker"}, {"post_id": 52888, "ts": "2026-08-23T08:28:45Z", "hours": 0.3614, "text": "Added IOS PWA"}, {"post_id": 52597, "ts": "2026-08-22T19:58:11Z", "hours": 3.1242, "text": "Things that I mad since the last devlog: build version on footer 1000 to k (shorter numbers) fixed number input open invite links in app fixed API leak (re-rolled the key) better release formatting when a receipt has been scanned only send one notification"}, {"post_id": 51900, "ts": "2026-08-21T20:06:59Z", "hours": 2.4781, "text": "75% done with notifications (only web does not receive)"}, {"post_id": 51513, "ts": "2026-08-21T08:43:25Z", "hours": 1.4058, "text": "Android app, and new favicon"}, {"post_id": 51185, "ts": "2026-08-20T18:02:36Z", "hours": 1.1325, "text": "Rename funds and remove bugs"}, {"post_id": 51111, "ts": "2026-08-20T16:41:54Z", "hours": 0.4744, "text": "Fixed i18n (before & after)"}, {"post_id": 50628, "ts": "2026-08-19T21:33:07Z", "hours": 1.8097, "text": "Custom color scheme and icons for funds (Only the owner can change the icon, but everyone can customize their own color scheme.)"}, {"post_id": 50396, "ts": "2026-08-19T15:42:23Z", "hours": 2.6589, "text": "Added other languages"}, {"post_id": 50250, "ts": "2026-08-19T12:22:21Z", "hours": 2.7214, "text": "Transactions panel, and Nickname fixes, export functions"}, {"post_id": 50168, "ts": "2026-08-19T08:41:10Z", "hours": 1.2742, "text": "Added qr code to join links, iconized payments, added payment groups for receipt scan"}, {"post_id": 49901, "ts": "2026-08-18T21:18:41Z", "hours": 0.9539, "text": "Login on phone works again"}, {"post_id": 49772, "ts": "2026-08-18T18:10:50Z", "hours": 0.385, "text": "Wrote a readme"}, {"post_id": 49743, "ts": "2026-08-18T17:43:49Z", "hours": 1.9447, "text": "Fix comments, and add new currencies (also bug fixes)"}, {"post_id": 49221, "ts": "2026-08-17T21:34:42Z", "hours": 0.4036, "text": "Worked on currency changing method"}, {"post_id": 48940, "ts": "2026-08-17T14:40:13Z", "hours": 1.9039, "text": "Added receipt scanning via gemini"}, {"post_id": 48751, "ts": "2026-08-17T08:55:32Z", "hours": 0.3875, "text": "Bug fixes and font awesome icons"}, {"post_id": 48479, "ts": "2026-08-16T20:55:48Z", "hours": 0.8558, "text": "Added auto dark mode, and created a better landing page"}, {"post_id": 46835, "ts": "2026-08-14T11:14:49Z", "hours": 2.1389, "text": "Main UI is done"}, {"post_id": 46764, "ts": "2026-08-14T07:59:41Z", "hours": 1.8225, "text": "Started working on frontend"}]...
|
Title: Kasseo by @Zeti_1223 | Stardance
Devlogs:
Title: Kasseo by @Zeti_1223 | Stardance
Devlogs:
Started working on frontend
Main UI is done
Added auto dark mode, and created a better landing page
Bug fixes and font awesome icons
Added receipt scanning via gemini
Worked on currency changing method
Fix comments, and add new currencies (also bug fixes)
Wrote a readme
Login on phone works again
Added qr code to join links, iconized payments, added payment groups for receipt scan
Transactions panel, and Nickname fixes, export functions
Added other languages
Custom color scheme and icons for funds (Only the owner can change the icon, but everyone can customize their own color scheme.)
Fixed i18n (before & after)
Rename funds and remove bugs
Android app, and new favicon
75% done with notifications (only web does not receive)
Things that I mad since the last devlog: build version on footer 1000 to k (shorter numbers) fixed number input open invite links in app fixed API leak (re-rolled the key) better release formatting when a receipt has been scanned only send one notification
Added IOS PWA
Add cloudflare worker
Fixed: Split mode: balances panel shows net totals only, not who owes whom specifically #87
Created better app UI on phone
Add leave group
Added tests
Built import functions
Built a promo site (but hackatime didn’t log properly I worked on it nearly 3 hours)
Created a recap function
Done with offline mode (but hackatime didn’t logged properly)
Sort and search
Show last synced and Category budgets don’t carry over unused amounts
Rewrote readme
Ships:
What did you make? I built Kasseo (“Split the fund. Not the trust.”), a shared expense and group fund tracker built with Vue 3, Tailwind CSS, and Firebase, wrapped for Android using Capacitor. It handles two distinct ways groups manage money: a pooled shared fund (“Kitty” mode) and direct expense splitting with automatic balance settlements (“Split” mode). Beyond standard expense logging, it has category budgets with rollover, an AI receipt scanner powered by Gemini through a Cloudflare Worker, an interactive “Wrapped”-style recap generator, and an offline-first sync engine. What was challenging? Getting offline mode right was by far the hardest part. I wanted the app to be genuinely usable when traveling without reception, which meant caching data in IndexedDB and queuing mutations chronologically so they safely replay to Firebase Realtime Database once you get back online. Handling edge cases in multi-currency conversions (preserving historical rates when a fund changes its base currency) and making sure the AI receipt parser reliably extracted items from blurry images also took a lot of debugging. What are you proud of? Logging 50 hours across 31 devlogs and actually finishing something that feels solid enough for daily use. I really care about the small details-smooth charts, customizable themes, 6 language translations, and exportable recap cards that look great when shared with friends. What should people know so they can test your project? Sign in with Google, create a fund, and pick either Kitty or Split mode. Add a couple of expenses or tap the camera button to try scanning a receipt with AI. Test offline mode: switch your browser network to Offline (or turn on Airplane mode), log an expense, and turn the connection back on. You’ll see it queue locally and sync right away. Check out the Budgets tab in settings to try category spending limits, or open the Recap tab to view the generated summary cards....
|
1793145156.7266333
|
1793231556.7266333
|
|
56727
|
NexOS by @NexnReal | Stardance
|
NexnReal
|
2
|
50.0
|
27
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-17T13:31:47Z", "hours": 6.0, "multiplier": 4.23, "payout": 27, "blessing": "neutral", "text": "NexOS is a lightweight OS that work in your Browser. Easy to use and saves everything in LocalStorage. Made with Vite React, Tailwind and Zustand, also Motion. It have a Launcher, Dock, and a working and stable Filesystem. New Apps added: Web Browser Music Player Weather Topbar: Now smaller, but wide enough, fits everything, now displays temperature and country iso Wallpapers: updated again, now much more clear and less blurry Weather: Uses free APIs, so everything is secure, shows country name, region, lat, lon, and other details related.", "repo": "https://github.com/NexnBased/NexOS", "demo": "https://nexos1-alpha.vercel.app/"}, {"ship_num": 2, "ts": "2026-10-13T18:02:23Z", "hours": 44.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "NexOS is a lightweight OS that work in your Browser. Easy to use and saves everything in LocalStorage. Made with Vite React, Tailwind and Zustand, also Motion. It have a Launcher, Dock, and a working and stable Filesystem.", "repo": "https://github.com/NexnBased/NexOS", "demo": "https://nexos1-alpha.vercel.app/"}]...
|
[{"post_id": 80373, "ts": "202 [{"post_id": 80373, "ts": "2026-10-17T13:27:28Z", "hours": 2.54, "text": "Devlog 13 Weather Added weather app Shows: location , temperature (F/C) , region , lat+lon , and few more Displays Highest and Longer temperature as well Search allows to get weather of any city Display City name Topbar A bit longer now Shows weather and country name More wider Settings Updated wallpapers city name hidden for obvious reasons in the screenshots"}, {"post_id": 80299, "ts": "2026-10-17T05:47:22Z", "hours": 2.8133, "text": "Devlog 12 Music Player Added 10 songs Next & previous Shows basic details about the song Top Bar Smaller Floating Blurred More space in Desktop AppLauncher Redesigned Search"}, {"post_id": 79720, "ts": "2026-10-15T06:37:13Z", "hours": 1.1172, "text": "Devlog 11 Browser made with iframe loads every site that allow to be shown in iframe Home button, Search button, Refresh Button loads wikipedia by default Minor changes"}, {"post_id": 79368, "ts": "2026-10-13T17:59:08Z", "hours": 0.4639, "text": "Devlog 10: Updated README.md Anyway idk if this is useful, check it out"}, {"post_id": 79346, "ts": "2026-10-13T16:01:20Z", "hours": 0.7286, "text": "Devlog 10 Finished ran all tests, all passed did linting formatted with prettier all DONE. I guess. Idk what else to add so im done for now."}, {"post_id": 79278, "ts": "2026-10-13T09:29:56Z", "hours": 2.6936, "text": "Devlog 9 Added Settings change Desktop icon change Wallpaper toggle welcome app off or on when loading set any image (custom url) as wallpaper Reset File system (back to default/init) Desktop Icons Horizontal now Markdown Reader: Reads Raw/Rendered .MD files, opens MD files need improvements Image Viewer: Opens any image in the filesystem support zoom display resolution easy to use Minor bug fixes & improvements"}, {"post_id": 79094, "ts": "2026-10-12T17:13:09Z", "hours": 3.2286, "text": "Phase 8 Took a long long break, about 22 days. Added Terminal type help to see all commands works well idk what to add im actually sleepy rn so yeah uh so it works like a console input at the bottom display autoscroll when new outputs appear Minor Bug fixes + Added new Test"}, {"post_id": 71690, "ts": "2026-09-21T10:00:40Z", "hours": 5.1008, "text": "Devlog 7 Spent about 5 hours today, mostly fixes, major changes, and new app Text Editor: Dedicated Text editor that can open certain files from Files app. View and Edit the files easily instead of just previewing it !! was unable to design it properly because of issues with backdrop blur so had to use solid zinc background color Unified Filesystem Future-proofed it so that it can be used in Files.tsx and upcoming Terminal.tsx Fixed minor bugs Changed create, restore, delete logic Files Added an Empty Trash button Can restore files now Open in text editor button Few bug fixes Tests Added vitest Added tests for FileSystemStore and WindowStore 14 tests and 2 test files, all passed (commit: Phase 6) EDIT: Additional - commit Linting: migrated from Oxlint to Eslint Formatted with prettier Redesigned Text editor I think i forgot other things, i guess you can read the repo to understand them, also i forgot to use prettier to format all files"}, {"post_id": 70562, "ts": "2026-09-19T11:29:47Z", "hours": 5.8033, "text": "Devlog 6 Just like devlog 5, took most time making changes, fixing issues, adding new features Calendar App A tiny app, non-resizable, calendar app, without mantine/dates, uses Dayjs instead New: resizable boolean to prevent specific windows from being resized minHeight and minWidth now limit window resizing maxHeight and maxWidth now set a resize limit Changes: Changed the look and feel of Context Menu Removed all menus from Topbar Removed mantine entirely, postcss as well Set a boundary, windows cant go outside Desktop Changed Icons Dock now shows up when windows are minimized -!! There might be few more changes ive forgot to mention"}, {"post_id": 69734, "ts": "2026-09-17T17:46:40Z", "hours": 7.5342, "text": "Devlog 5 Took 7 hours, most time spent on fixing major and minor bugs, Files app n logic was lowkey hard Files Virtual FileSystem delete, create, edit, move, update files or folders allow making any file: image, audio, video, text, code, anything saves the whole filesystem and every single thing in it inside localStorage Files App allow creating file or folder easy sidebar to navigate search all major folders listed in sidebar Changes in existing Apps and windows Modification Made the window background to match the controls Used zinc 900 for Toolbar and all other main sections Made buttons more colorful and all Overall looks good in my opinion Matches the accent color Still need a lil bit more improvement and theming"}, {"post_id": 67140, "ts": "2026-09-13T06:21:38Z", "hours": 1.2022, "text": "Devlog 4 Added AppLauncher Launches apps Search Hotkeys Shows all apps"}, {"post_id": 66736, "ts": "2026-09-12T17:05:57Z", "hours": 6.2447, "text": "Devlog 3 FYI: Dont mind the icons, ill change them soon Apps Notes: stores in localstorage, upto 10 notes Calculator: just a basic calculator Desktop + Desktop Icons: Added shortcuts with icons to launch apps Not interactive for now Window + WindowManager: Added Maximize, Minimize, Focus and few more Dock: Has an indicator A lil bit animated Only launches, doesn’t minimize TopBar: Removed blur / transparency cuz had to move bg to Desktop"}, {"post_id": 66364, "ts": "2026-09-12T04:56:33Z", "hours": 4.2822, "text": "Devlog 2 Took a long break cuz of school and all Top bar Fixed few issues Had to remove blur on the bar Removed search button Added APIs to fetch your IP and display Also displays City and Country Added calendar (mantine/dates) Window, WindowManager & Desktop Added blur to windows Thats all i guess Need improvement Welcome.tsx Added the welcome window Look basic, gotta customize it"}, {"post_id": 58838, "ts": "2026-08-31T12:49:14Z", "hours": 6.7931, "text": "Devlog 1 Been working on this for days, havent finished the top bar yet Top Bar NexOS: About NexOS, link to repo n credits Search: Lists all apps, kinda like hyprlauncher but MAYBE i cant make it just like that Calendar & Clock: yeah im not making seperate apps for that, the topbar contains both Quick settings panel: Basic stuff in it Notification panel, opens when QS is opened Thats all for now"}]...
|
Title: NexOS by @NexnReal | Stardance
Devlogs:
De Title: NexOS by @NexnReal | Stardance
Devlogs:
Devlog 1 Been working on this for days, havent finished the top bar yet Top Bar NexOS: About NexOS, link to repo n credits Search: Lists all apps, kinda like hyprlauncher but MAYBE i cant make it just like that Calendar & Clock: yeah im not making seperate apps for that, the topbar contains both Quick settings panel: Basic stuff in it Notification panel, opens when QS is opened Thats all for now
Devlog 2 Took a long break cuz of school and all Top bar Fixed few issues Had to remove blur on the bar Removed search button Added APIs to fetch your IP and display Also displays City and Country Added calendar (mantine/dates) Window, WindowManager & Desktop Added blur to windows Thats all i guess Need improvement Welcome.tsx Added the welcome window Look basic, gotta customize it
Devlog 3 FYI: Dont mind the icons, ill change them soon Apps Notes: stores in localstorage, upto 10 notes Calculator: just a basic calculator Desktop + Desktop Icons: Added shortcuts with icons to launch apps Not interactive for now Window + WindowManager: Added Maximize, Minimize, Focus and few more Dock: Has an indicator A lil bit animated Only launches, doesn’t minimize TopBar: Removed blur / transparency cuz had to move bg to Desktop
Devlog 4 Added AppLauncher Launches apps Search Hotkeys Shows all apps
Devlog 5 Took 7 hours, most time spent on fixing major and minor bugs, Files app n logic was lowkey hard Files Virtual FileSystem delete, create, edit, move, update files or folders allow making any file: image, audio, video, text, code, anything saves the whole filesystem and every single thing in it inside localStorage Files App allow creating file or folder easy sidebar to navigate search all major folders listed in sidebar Changes in existing Apps and windows Modification Made the window background to match the controls Used zinc 900 for Toolbar and all other main sections Made buttons more colorful and all Overall looks good in my opinion Matches the accent color Still need a lil bit more improvement and theming
Devlog 6 Just like devlog 5, took most time making changes, fixing issues, adding new features Calendar App A tiny app, non-resizable, calendar app, without mantine/dates, uses Dayjs instead New: resizable boolean to prevent specific windows from being resized minHeight and minWidth now limit window resizing maxHeight and maxWidth now set a resize limit Changes: Changed the look and feel of Context Menu Removed all menus from Topbar Removed mantine entirely, postcss as well Set a boundary, windows cant go outside Desktop Changed Icons Dock now shows up when windows are minimized -!! There might be few more changes ive forgot to mention
Devlog 7 Spent about 5 hours today, mostly fixes, major changes, and new app Text Editor: Dedicated Text editor that can open certain files from Files app. View and Edit the files easily instead of just previewing it !! was unable to design it properly because of issues with backdrop blur so had to use solid zinc background color Unified Filesystem Future-proofed it so that it can be used in Files.tsx and upcoming Terminal.tsx Fixed minor bugs Changed create, restore, delete logic Files Added an Empty Trash button Can restore files now Open in text editor button Few bug fixes Tests Added vitest Added tests for FileSystemStore and WindowStore 14 tests and 2 test files, all passed (commit: Phase 6) EDIT: Additional - commit Linting: migrated from Oxlint to Eslint Formatted with prettier Redesigned Text editor I think i forgot other things, i guess you can read the repo to understand them, also i forgot to use prettier to format all files
Phase 8 Took a long long break, about 22 days. Added Terminal type help to see all commands works well idk what to add im actually sleepy rn so yeah uh so it works like a console input at the bottom display autoscroll when new outputs appear Minor Bug fixes + Added new Test
Devlog 9 Added Settings change Desktop icon change Wallpaper toggle welcome app off or on when loading set any image (custom url) as wallpaper Reset File system (back to default/init) Desktop Icons Horizontal now Markdown Reader: Reads Raw/Rendered .MD files, opens MD files need improvements Image Viewer: Opens any image in the filesystem support zoom display resolution easy to use Minor bug fixes & improvements
Devlog 10 Finished ran all tests, all passed did linting formatted with prettier all DONE. I guess. Idk what else to add so im done for now.
Devlog 10: Updated README.md Anyway idk if this is useful, check it out
Devlog 11 Browser made with iframe loads every site that allow to be shown in iframe Home button, Search button, Refresh Button loads wikipedia by default Minor changes
Devlog 12 Music Player Added 10 songs Next & previous Shows basic details about the song Top Bar Smaller Floating Blurred More space in Desktop AppLauncher Redesigned Search
Devlog 13 Weather Added weather app Shows: location , temperature (F/C) , region , lat+lon , and few more Displays Highest and Longer temperature as well Search allows to get weather of any city Display City name Topbar A bit longer now Shows weather and country name More wider Settings Updated wallpapers city name hidden for obvious reasons in the screenshots
Ships:
NexOS is a lightweight OS that work in your Browser. Easy to use and saves everything in LocalStorage. Made with Vite React, Tailwind and Zustand, also Motion. It have a Launcher, Dock, and a working and stable Filesystem.
NexOS is a lightweight OS that work in your Browser. Easy to use and saves everything in LocalStorage. Made with Vite React, Tailwind and Zustand, also Motion. It have a Launcher, Dock, and a working and stable Filesystem. New Apps added: Web Browser Music Player Weather Topbar: Now smaller, but wide enough, fits everything, now displays temperature and country iso Wallpapers: updated again, now much more clear and less blurry Weather: Uses free APIs, so everything is secure, shows country name, region, lat, lon, and other details related....
|
1793198969.454889
|
1793285369.454889
|
|
58854
|
pixeli by @Zephyr | Stardance
|
Zephyr
|
1
|
50.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T16:33:10Z", "hours": 50.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I added a GUI to pixeli! currently, it only supports grid merge, but it fully works and is up and running (runs on port 3000). Make beautiful image mosaics, now outside of your terminal! Make sure to check out the beta release for the latest version of everything, as this is a beta release and not available on the main branch :) it’s on the “pixeli-gui” branch. Hope yall enjoy this last project from me!", "repo": "https://github.com/pakdad-mousavi/pixeli/tree/pixeli-gui", "demo": "https://www.npmjs.com/package/pixeli/v/1.0.6-beta.3"}]...
|
[{"post_id": 77604, "ts": "202 [{"post_id": 77604, "ts": "2026-10-07T16:30:25Z", "hours": 5.0356, "text": "Final devlog… forever (turning 19 tomorrow, so this is the last devlog :D) I finally released the beta!!! We got the GUI running (only for grid merge so far) but it works! I added state management inside of local storage so changes dont keep disappearing, and I also added the export button functionality! Have fun!"}, {"post_id": 74358, "ts": "2026-09-27T07:21:57Z", "hours": 9.205, "text": "LADIES AND GENTLEMEN, GUESS WHAT TIME IT IS. (devlog time ) First of all, I added a summary and continue section in the sidebar on the right to provide a more “guided” user experience I guess you could say. :> Then, I also, changed the left sidebar to make things simpler; there will only be a single page for all merges now. :D And the rest? I’ve just been adding fields in the merge page for all the different settings the user can mess around with (there’s a LOT). Once I finish with that, I’ll be actually rendering the final product to the user so they can see what they get once they export!"}, {"post_id": 72996, "ts": "2026-09-24T05:54:31Z", "hours": 9.8092, "text": "DEVLOG! Okay SO. Image selection is now complete: users can choose which images they want to proceed with. I also added shift-clicking, so users can select multiple images more easily (see the video!). Next: Responsiveness ✨ I made the main sidebar responsive so far, so the layout of the page seems to be working fine, at least up until around the sm / md breakpoints. I’ll also have to handle making the secondary sidebar responsive in mobile screens. Finally: Light mode and dark mode! FINALLY, I added a button to toggle between the two, should be much easier to design either theme now :> Next step is to add a bar on the bottom of the screen which helps guide the user’s next step. Then we can start with the merge pages!"}, {"post_id": 71045, "ts": "2026-09-20T07:40:21Z", "hours": 9.9878, "text": "NEW DEVLOG! Alright ladies and gentlemen, I’ve made a layout for the images, where the user can choose either a compact layout or a normal (slot-like) layout. I’m using animejs for the smooth, snappy animations, in case anyone out there was curious :> Now, I need to allow the user to select which images they want, then, I’d also like to add some sort of utility bar on the top/bottom. Then, I’ll use those images to make the merge pages! wish me luck :>"}, {"post_id": 66402, "ts": "2026-09-12T06:48:35Z", "hours": 5.9064, "text": "OKAY. Some progress (and some setbacks :>) So I’ve worked on the uploaded design, as well as the backend that was meant to write the file to the /tmp directory. The problem I needed to solve was to figure out a way to store the files on the backend that didn’t involve writing duplicates to the user’s disk. This is a very difficult task, because I can’t get file paths from the input field in the frontend, only the filename and file content (and some other unrelated details). Solution? Implement a different system that DOESN’T involve file uploads :D If I just use the directory im in when the user runs the command to start the loopback GUI, I can define a “project scope” in a sense, where I only try to use images in that directory. This way, it’s up to the user to choose which folder they want to use as their project. :> So now I need to refactor BOTH my design and backend to support this HA. Awesome"}, {"post_id": 64620, "ts": "2026-09-09T04:51:06Z", "hours": 9.5767, "text": "Initial Devlog! Okay so: I’m back. :> I’ve started working on a project I’ve been meaning to do for a while, called “Pixeli”, a CLI for merging images together! I actually already made this project before, and now I’m adding a GUI to it. Currently, I’m working on the file upload and rendering mechanisms. :D Will also be doing dark mode :0"}]...
|
Title: pixeli by @Zephyr | Stardance
Devlogs:
Ini Title: pixeli by @Zephyr | Stardance
Devlogs:
Initial Devlog! Okay so: I’m back. :> I’ve started working on a project I’ve been meaning to do for a while, called “Pixeli”, a CLI for merging images together! I actually already made this project before, and now I’m adding a GUI to it. Currently, I’m working on the file upload and rendering mechanisms. :D Will also be doing dark mode :0
OKAY. Some progress (and some setbacks :>) So I’ve worked on the uploaded design, as well as the backend that was meant to write the file to the /tmp directory. The problem I needed to solve was to figure out a way to store the files on the backend that didn’t involve writing duplicates to the user’s disk. This is a very difficult task, because I can’t get file paths from the input field in the frontend, only the filename and file content (and some other unrelated details). Solution? Implement a different system that DOESN’T involve file uploads :D If I just use the directory im in when the user runs the command to start the loopback GUI, I can define a “project scope” in a sense, where I only try to use images in that directory. This way, it’s up to the user to choose which folder they want to use as their project. :> So now I need to refactor BOTH my design and backend to support this HA. Awesome
NEW DEVLOG! Alright ladies and gentlemen, I’ve made a layout for the images, where the user can choose either a compact layout or a normal (slot-like) layout. I’m using animejs for the smooth, snappy animations, in case anyone out there was curious :> Now, I need to allow the user to select which images they want, then, I’d also like to add some sort of utility bar on the top/bottom. Then, I’ll use those images to make the merge pages! wish me luck :>
DEVLOG! Okay SO. Image selection is now complete: users can choose which images they want to proceed with. I also added shift-clicking, so users can select multiple images more easily (see the video!). Next: Responsiveness ✨ I made the main sidebar responsive so far, so the layout of the page seems to be working fine, at least up until around the sm / md breakpoints. I’ll also have to handle making the secondary sidebar responsive in mobile screens. Finally: Light mode and dark mode! FINALLY, I added a button to toggle between the two, should be much easier to design either theme now :> Next step is to add a bar on the bottom of the screen which helps guide the user’s next step. Then we can start with the merge pages!
LADIES AND GENTLEMEN, GUESS WHAT TIME IT IS. (devlog time ) First of all, I added a summary and continue section in the sidebar on the right to provide a more “guided” user experience I guess you could say. :> Then, I also, changed the left sidebar to make things simpler; there will only be a single page for all merges now. :D And the rest? I’ve just been adding fields in the merge page for all the different settings the user can mess around with (there’s a LOT). Once I finish with that, I’ll be actually rendering the final product to the user so they can see what they get once they export!
Final devlog… forever (turning 19 tomorrow, so this is the last devlog :D) I finally released the beta!!! We got the GUI running (only for grid merge so far) but it works! I added state management inside of local storage so changes dont keep disappearing, and I also added the export button functionality! Have fun!
Ships:
I added a GUI to pixeli! currently, it only supports grid merge, but it fully works and is up and running (runs on port 3000). Make beautiful image mosaics, now outside of your terminal! Make sure to check out the beta release for the latest version of everything, as this is a beta release and not available on the main branch :) it’s on the “pixeli-gui” branch. Hope yall enjoy this last project from me!...
|
1793152530.8478527
|
1793238930.8478527
|
|
51427
|
Aether88 by @cxrt | Stardance
|
cxrt
|
1
|
49.83
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T19:56:32Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i built aether88 WebOS which is a retro inspired browser operating system that gives you a full desktop workspace right inside your web browser. it comes with draggable productivity widgets like a pomodoro focus chronometer, daily targets checklist, a persistent scratchpad for quick notes and app shortcuts. i built it using react 19, vite 8, tailwind css v4, framer motion, and lucide icons. everything automatically syncs to localStorage so your desktop layout and notes stay saved across sessions. it was challenging yeah for sure! getting window drag and drop to feel smooth while managing z-indexes so active windows layer properly was a bit tricky. also ran into some confusing moments with tailwind v4 setup and fixing relative asset base paths for github pages deployment but troubleshooting the vite build config and getting local state storage to sync reliably was a huge learning curve. honestly super proud of how authentic the desktop feel turned out! the state persistance is solid. you can rearrange your widgets, write down tasks, reload the tab or close the browser and everything reloads exactly where you left it. plus getting the clean vintage aesthetic looking slick with custom theme variables was really satisfying to pull off.", "repo": "https://github.com/aalyaan2009/aether88-webos", "demo": "https://aalyaan2009.github.io/aether88-webos/"}]...
|
[{"post_id": 63491, "ts": "202 [{"post_id": 63491, "ts": "2026-09-07T11:34:24Z", "hours": 12.3186, "text": "fix readme and code formatting"}, {"post_id": 63207, "ts": "2026-09-06T21:42:29Z", "hours": 5.4567, "text": "finally done w committing changes and shipping project i changed the whole interface"}, {"post_id": 62495, "ts": "2026-09-05T21:44:07Z", "hours": 13.0269, "text": "still working on code am planning to change the whole code so i am re writing the whole prject from scratch again cuz they say the interface looks vibe coded cuz of the theme and purplish blue accents"}, {"post_id": 61805, "ts": "2026-09-04T21:52:14Z", "hours": 11.3508, "text": "used my own brain to restructure my code instead of using ai changed all of the code files by hand no ai used at all"}, {"post_id": 61152, "ts": "2026-09-03T22:27:46Z", "hours": 1.2169, "text": "re wrote the whole code cuz they said ts ai"}, {"post_id": 60825, "ts": "2026-09-03T13:32:19Z", "hours": 0.29, "text": "cleared all remaining useless files and now project is ready to be shipped"}, {"post_id": 60527, "ts": "2026-09-02T22:30:05Z", "hours": 1.1744, "text": "i made the changes to code and i re wrote the whole code myself"}, {"post_id": 59153, "ts": "2026-08-31T19:44:31Z", "hours": 2.5617, "text": "added final touches and fixed window resizing and dragging"}, {"post_id": 58048, "ts": "2026-08-30T12:15:27Z", "hours": 1.2642, "text": "i am continuing on icons and color themes"}, {"post_id": 50505, "ts": "2026-08-19T17:51:17Z", "hours": 0.3819, "text": "i am developing in in-os applications"}, {"post_id": 50325, "ts": "2026-08-19T14:25:44Z", "hours": 0.3744, "text": "i started working on the layout on my crtoverlay javascript files"}, {"post_id": 50305, "ts": "2026-08-19T13:54:35Z", "hours": 0.5097, "text": "i am working on my web os aether88 and i am setting up basic file strucutre using vite and react js"}]...
|
Title: Aether88 by @cxrt | Stardance
Devlogs:
i a Title: Aether88 by @cxrt | Stardance
Devlogs:
i am working on my web os aether88 and i am setting up basic file strucutre using vite and react js
i started working on the layout on my crtoverlay javascript files
i am developing in in-os applications
i am continuing on icons and color themes
added final touches and fixed window resizing and dragging
i made the changes to code and i re wrote the whole code myself
cleared all remaining useless files and now project is ready to be shipped
re wrote the whole code cuz they said ts ai
used my own brain to restructure my code instead of using ai changed all of the code files by hand no ai used at all
still working on code am planning to change the whole code so i am re writing the whole prject from scratch again cuz they say the interface looks vibe coded cuz of the theme and purplish blue accents
finally done w committing changes and shipping project i changed the whole interface
fix readme and code formatting
Ships:
i built aether88 WebOS which is a retro inspired browser operating system that gives you a full desktop workspace right inside your web browser. it comes with draggable productivity widgets like a pomodoro focus chronometer, daily targets checklist, a persistent scratchpad for quick notes and app shortcuts. i built it using react 19, vite 8, tailwind css v4, framer motion, and lucide icons. everything automatically syncs to localStorage so your desktop layout and notes stay saved across sessions. it was challenging yeah for sure! getting window drag and drop to feel smooth while managing z-indexes so active windows layer properly was a bit tricky. also ran into some confusing moments with tailwind v4 setup and fixing relative asset base paths for github pages deployment but troubleshooting the vite build config and getting local state storage to sync reliably was a huge learning curve. honestly super proud of how authentic the desktop feel turned out! the state persistance is solid. you can rearrange your widgets, write down tasks, reload the tab or close the browser and everything reloads exactly where you left it. plus getting the clean vintage aesthetic looking slick with custom theme variables was really satisfying to pull off....
|
1792882082.498434
|
1793746082.498434
|
|
9222
|
SAM32: Super Awesome Machine 32-Bit by @sammme | S SAM32: Super Awesome Machine 32-Bit by @sammme | Stardance...
|
sammme
|
0
|
49.79
|
0
|
[]
|
[{"post_id": 49383, "ts": "202 [{"post_id": 49383, "ts": "2026-08-18T05:29:11Z", "hours": 1.7172, "text": "SystemVerilog Update I haven’t had too much time to work on my project lately, but I have some updates: SystemVerilog is officially done! The project, at it’s current state (I got a lot of stuff planned to add later) is officially done! The CPU is Turing Complete , and can do all of your basic operations, read/write to/from memory, and even has a BIOS mode that redirects memory reads to ROM to load an actual BIOS! This means I can program an OS to be loaded by the BIOS! Inputs and Outputs can now be provided to the CPU by the user! Previously, if you wanted to, for example, see the output of an instruction or provide dynamic data to the CPU, you would have to rewrite the ENTIRE program and hardcode those details into it. Now, with the new UART transciever that runs at a measly Baud Rate of 9600, things like ASCII characters can be both send or recieved to/from the CPU! A bunch of minor upgrades, such as (but not limited to): MMIO (no uses as of right now, but the wiring exists in the CPU), CPU stalls (so that you don’t accidentally read memory that hasn’t been written), an entire interrupt system (with a hardware timer interrupt!), etc. Things I have planned: A Standard Library (as of right now, still on paper :(. Making a list of modules and functions) More MMIO uses (a display output!) VGA drivers (part of the goal for a display output) Emulator Update (for UART experiments) USB drivers? (zero progress currently, but maybe a far-off goal; UART is good enough for now)"}, {"post_id": 25101, "ts": "2026-07-09T02:55:01Z", "hours": 15.2797, "text": "Update: C Compiler and SystemVerilog Done! I’ve been working on my SystemVerilog, and just happened to work on the C– (C-Minus-Minus) compiler on the side! The C compiler is able to take actual C-like code (with a couple caveats) and turn it into assembly code that can then be compiled fully into machine code and run on a SAM32 Chip!"}, {"post_id": 9717, "ts": "2026-06-16T04:18:22Z", "hours": 3.0428, "text": "I’m officially working on my SystemVerilog. I finished the ALU, PC Register, and the Register File, with tests for all of them using AMD Vivado (I plan on flashing to an Artix 7). They have a cool new dark mode, which is way easier on my eyes. I’ve also done a lot of research, specifically on the DMAC, which I plan to add. It’s basically a really small and specialized mini-core of sorts, and its sole purpose is to read from storate and write to memory, then interrupt, and vice versa (this way, the CPU doesn’t waste millions of cycles for the slow hard drive). I’ve already thought about how I want to make mine, and have started drawing one out."}, {"post_id": 8912, "ts": "2026-06-14T20:45:53Z", "hours": 22.9897, "text": "I’ve officially finished the emulator for my CPU! It also includes many debug tools that make developing on my ISA/CPU much easier. The assembler rewrite also supports directives, list files, and is faster overall. You can try it on the web (just a quick emscripten, prob very buggy): https://sam32.samhithe.dev/"}, {"post_id": 3825, "ts": "2026-06-06T21:41:42Z", "hours": 3.275, "text": "I made the Assembler for my CPU! The assembler takes assembly instructions and turns it into actual machine code! I know I said I would work on the SystemVerilog, but I needed a way to test everything first, so I need an emulator and an assembler first…"}, {"post_id": 3267, "ts": "2026-06-06T03:40:29Z", "hours": 3.4894, "text": "I finished my CPU design! I used Digital by Hneemann to wireframe my 32-bit CPU out, the next step is SystemVerilog!"}]...
|
Title: SAM32: Super Awesome Machine 32-Bit by @sam Title: SAM32: Super Awesome Machine 32-Bit by @sammme | Stardance
Devlogs:
I finished my CPU design! I used Digital by Hneemann to wireframe my 32-bit CPU out, the next step is SystemVerilog!
I made the Assembler for my CPU! The assembler takes assembly instructions and turns it into actual machine code! I know I said I would work on the SystemVerilog, but I needed a way to test everything first, so I need an emulator and an assembler first…
I’ve officially finished the emulator for my CPU! It also includes many debug tools that make developing on my ISA/CPU much easier. The assembler rewrite also supports directives, list files, and is faster overall. You can try it on the web (just a quick emscripten, prob very buggy): https://sam32.samhithe.dev/
I’m officially working on my SystemVerilog. I finished the ALU, PC Register, and the Register File, with tests for all of them using AMD Vivado (I plan on flashing to an Artix 7). They have a cool new dark mode, which is way easier on my eyes. I’ve also done a lot of research, specifically on the DMAC, which I plan to add. It’s basically a really small and specialized mini-core of sorts, and its sole purpose is to read from storate and write to memory, then interrupt, and vice versa (this way, the CPU doesn’t waste millions of cycles for the slow hard drive). I’ve already thought about how I want to make mine, and have started drawing one out.
Update: C Compiler and SystemVerilog Done! I’ve been working on my SystemVerilog, and just happened to work on the C– (C-Minus-Minus) compiler on the side! The C compiler is able to take actual C-like code (with a couple caveats) and turn it into assembly code that can then be compiled fully into machine code and run on a SAM32 Chip!
SystemVerilog Update I haven’t had too much time to work on my project lately, but I have some updates: SystemVerilog is officially done! The project, at it’s current state (I got a lot of stuff planned to add later) is officially done! The CPU is Turing Complete , and can do all of your basic operations, read/write to/from memory, and even has a BIOS mode that redirects memory reads to ROM to load an actual BIOS! This means I can program an OS to be loaded by the BIOS! Inputs and Outputs can now be provided to the CPU by the user! Previously, if you wanted to, for example, see the output of an instruction or provide dynamic data to the CPU, you would have to rewrite the ENTIRE program and hardcode those details into it. Now, with the new UART transciever that runs at a measly Baud Rate of 9600, things like ASCII characters can be both send or recieved to/from the CPU! A bunch of minor upgrades, such as (but not limited to): MMIO (no uses as of right now, but the wiring exists in the CPU), CPU stalls (so that you don’t accidentally read memory that hasn’t been written), an entire interrupt system (with a hardware timer interrupt!), etc. Things I have planned: A Standard Library (as of right now, still on paper :(. Making a list of modules and functions) More MMIO uses (a display output!) VGA drivers (part of the goal for a display output) Emulator Update (for UART experiments) USB drivers? (zero progress currently, but maybe a far-off goal; UART is good enough for now)...
|
1792684353.746153
|
1793289153.746153
|
|
5623
|
Far away by @ismael | Stardance
|
ismael
|
0
|
49.74
|
0
|
[]
|
[{"post_id": 43673, "ts": "202 [{"post_id": 43673, "ts": "2026-08-09T02:15:46Z", "hours": 10.4142, "text": "Devlog #6 So, it’s been a while since I made any progress on this project because of school and stuff. I still haven’t made much more progress, but I wanted to log these hours before continuing. If I remember correctly, all I did was make the energy system, making sure that the player restores energy by sleeping and wastes it by repairing machines around the base. Also, all machines now display their status and integrity. I also made the system that damages the machines, so the whole point will be that machines that are more damaged will fail more often, and the whole base will deteriorate over time. It’s up to the player to decide what to repair and to what degree with the energy they have. For example, fully repairing the heating system might take the energy that you need for the lab, but you might consider the heating system to be more important, and so on… So yeah :)"}, {"post_id": 13556, "ts": "2026-06-22T06:05:22Z", "hours": 16.7378, "text": "Devlog #5 Hi everybody! This week was focused on turning individual mechanics into a playable experience.Several new sections of the Titan base have been added, including industrial storage and processing areas. I spent a lot of time working on interactions. Ladders are now fully functional, with dedicated animations and movement systems, and the first version of the sleep mechanic has been fully implemented along a more smooth animation for it. Most of the work this week wasn’t spent creating entirely new features, but refining and connecting existing ones. The game is slowly reaching the point where I can experience a full gameplay loop rather than a collection of separate systems. There is still a lot of work ahead, especially regarding minigames, textures, and story content. I’m working now in cutscenes and textdialogs to make sure that there is a well told narrative. Hope what i show seems interesting and good luck to everyone!"}, {"post_id": 10431, "ts": "2026-06-17T04:30:33Z", "hours": 9.0658, "text": "Devlog #4 Hi everybody! A lot of progress has been made since the last devlog the Titan base, where the entire game takes place, is now almost fully modeled. Most of the major systems are in place, including communications, water recycling, heating, and the biodome. The biodome is fully functional and features a plant growth system that progresses based on the passing days on Titan. The exterior environment of Titan is also complete the hands shown in the first devlog have been replaced with fully 3D animated hands, with unique animations for every interaction in the game i’ve also added an inspection system that lets players pick up, rotate, and closely examine objects, this will be used to reveal important story details naturally, without interrupting gameplay most of the recent work has focused on atmosphere and immersion, and the game is finally starting to feel like the lonely, isolated place I imagined from the beginning next, I’ll be working on repair minigames, textures, and the log system. The logs will play a major role in survival, as the number of days you must endure depends on how effectively you convince people on Earth to organize a rescue mission I’m really happy with the direction of the project so far. It’s shaping up to be a short psychological sci-fi horror experience"}, {"post_id": 8801, "ts": "2026-06-14T16:47:40Z", "hours": 3.6253, "text": "Devlog #3 Spent a few hours in Blender this last few days, learning the basics of 3D modeling and putting together some of the machines for the base. It’s a shame those hours aren’t tracked anywhere, because there was a lot of trial and error involved. The process has been surprisingly fun, and it’s starting to make the world feel more real. Most of these machines are so specific that finding suitable models online isn’t really an option, so I decided to build them myself. For more common props and environment assets, though, I’ll be using existing models so I can focus on what matters most: actually putting the game together. It’s still early, but seeing these systems take shape makes the project feel a lot more tangible. The goal now is to start turning this isolated systems into a playable base on Titan."}, {"post_id": 4648, "ts": "2026-06-08T01:40:57Z", "hours": 5.7944, "text": "Devlog #2 i have struggle a LOT learning C# and modeling stuff but after a bunch of errors i built a dome that will serve as the main agricultural and research area of the outpost. One of the player’s objectives is to grow plants inside the dome as part of an experiment to determine whether sustainable food production is possible on Titan. The dome also provides protection from Titan’s harsh environmental conditions, allowing crops to grow in a controlled environment. I also implemented a simple time progression mechanic. Time is measured in “Sols,” which represent the equivalent of Earth days in the game. As Sols pass, the environment and other gameplay elements will gradually change, reflecting the progression of the mission. Additionally, I improved the camera controls to make movement feel smoother and more natural for the player. Finally, I have defined the game’s story wich i really needed cause i felt the game lacked direction. Here’s a story overview: The game follows the first human expedition to Titan, Saturn’s largest moon. The mission’s objective is to establish a small research outpost, study Titan’s environment, and evaluate whether long-term human habitation could one day be possible. The crew consists of four astronauts, including the player. During an early exploration mission, the player remains at a temporary surface base to monitor scientific equipment and oversee operations while the rest of the crew ventures into the surrounding terrain. While monitoring the mission, the player detects a powerful atmospheric storm approaching the crew and warns them through radio communication. Shortly afterward, all contact is lost. Faced with an unknown threat, the other astronauts retreat to the main spacecraft and leave Titan, believing the player has already been informed of the evacuation. Due to communication failures, the player never receives the message. After losing contact, the player ventures outside in search of the crew’s last known location, only to witness the spacecraft departing Titan without them. Panicked and alone, they return to the outpost, accidentally damaging critical life-support systems. Repairing these systems serves as an introduction to the game’s repair mechanics. With no immediate hope of rescue, the player sends a distress signal and begins a long struggle for survival. They must maintain the base, operate scientific machinery, conduct experiments, and grow crops inside a research dome designed to test whether food can be sustainably produced on Titan. As time passes, isolation begins to take its toll. Strange events, distant shadows, and unexplained phenomena blur the line between reality and imagination. The player is left questioning whether Titan truly is lifeless—or whether something else exists beneath its frozen surface. The game focuses on loneliness, survival, and the psychological effects of isolation. Its atmosphere emphasizes the vastness of space, the distance from Earth, and the uncertainty of being completely alone in an alien world. Eventually, a rescue mission arrives. However, after everything the player has experienced, they must make a final decision: trust the returning crew and leave Titan behind, or remain on the moon, convinced that the people who came to save them may not be who they claim to be."}, {"post_id": 1775, "ts": "2026-06-03T23:39:22Z", "hours": 4.1028, "text": "Devlog #1 Hi everybody! i just started this game about a guy who is left alone in his spaceship in titan and need to use all his knowledge to get back home. I have pretty much no experience with unity so it has been a fun challenge making the basic stuff. I finally made all the movements with sprint and crouch and also made a functional door wich im very proud of :). the game is supossed to have a bunch of survival-like mechanics, and by the look of it, it will probably be kind of horror like, idk, im just flowing with it. we’ll see how it turns out, really excited about it! sorry if my english isn’t the best btw, been a while since a practice. good luck to everyone!"}]...
|
Title: Far away by @ismael | Stardance
Devlogs:
D Title: Far away by @ismael | Stardance
Devlogs:
Devlog #1 Hi everybody! i just started this game about a guy who is left alone in his spaceship in titan and need to use all his knowledge to get back home. I have pretty much no experience with unity so it has been a fun challenge making the basic stuff. I finally made all the movements with sprint and crouch and also made a functional door wich im very proud of :). the game is supossed to have a bunch of survival-like mechanics, and by the look of it, it will probably be kind of horror like, idk, im just flowing with it. we’ll see how it turns out, really excited about it! sorry if my english isn’t the best btw, been a while since a practice. good luck to everyone!
Devlog #2 i have struggle a LOT learning C# and modeling stuff but after a bunch of errors i built a dome that will serve as the main agricultural and research area of the outpost. One of the player’s objectives is to grow plants inside the dome as part of an experiment to determine whether sustainable food production is possible on Titan. The dome also provides protection from Titan’s harsh environmental conditions, allowing crops to grow in a controlled environment. I also implemented a simple time progression mechanic. Time is measured in “Sols,” which represent the equivalent of Earth days in the game. As Sols pass, the environment and other gameplay elements will gradually change, reflecting the progression of the mission. Additionally, I improved the camera controls to make movement feel smoother and more natural for the player. Finally, I have defined the game’s story wich i really needed cause i felt the game lacked direction. Here’s a story overview: The game follows the first human expedition to Titan, Saturn’s largest moon. The mission’s objective is to establish a small research outpost, study Titan’s environment, and evaluate whether long-term human habitation could one day be possible. The crew consists of four astronauts, including the player. During an early exploration mission, the player remains at a temporary surface base to monitor scientific equipment and oversee operations while the rest of the crew ventures into the surrounding terrain. While monitoring the mission, the player detects a powerful atmospheric storm approaching the crew and warns them through radio communication. Shortly afterward, all contact is lost. Faced with an unknown threat, the other astronauts retreat to the main spacecraft and leave Titan, believing the player has already been informed of the evacuation. Due to communication failures, the player never receives the message. After losing contact, the player ventures outside in search of the crew’s last known location, only to witness the spacecraft departing Titan without them. Panicked and alone, they return to the outpost, accidentally damaging critical life-support systems. Repairing these systems serves as an introduction to the game’s repair mechanics. With no immediate hope of rescue, the player sends a distress signal and begins a long struggle for survival. They must maintain the base, operate scientific machinery, conduct experiments, and grow crops inside a research dome designed to test whether food can be sustainably produced on Titan. As time passes, isolation begins to take its toll. Strange events, distant shadows, and unexplained phenomena blur the line between reality and imagination. The player is left questioning whether Titan truly is lifeless—or whether something else exists beneath its frozen surface. The game focuses on loneliness, survival, and the psychological effects of isolation. Its atmosphere emphasizes the vastness of space, the distance from Earth, and the uncertainty of being completely alone in an alien world. Eventually, a rescue mission arrives. However, after everything the player has experienced, they must make a final decision: trust the returning crew and leave Titan behind, or remain on the moon, convinced that the people who came to save them may not be who they claim to be.
Devlog #3 Spent a few hours in Blender this last few days, learning the basics of 3D modeling and putting together some of the machines for the base. It’s a shame those hours aren’t tracked anywhere, because there was a lot of trial and error involved. The process has been surprisingly fun, and it’s starting to make the world feel more real. Most of these machines are so specific that finding suitable models online isn’t really an option, so I decided to build them myself. For more common props and environment assets, though, I’ll be using existing models so I can focus on what matters most: actually putting the game together. It’s still early, but seeing these systems take shape makes the project feel a lot more tangible. The goal now is to start turning this isolated systems into a playable base on Titan.
Devlog #4 Hi everybody! A lot of progress has been made since the last devlog the Titan base, where the entire game takes place, is now almost fully modeled. Most of the major systems are in place, including communications, water recycling, heating, and the biodome. The biodome is fully functional and features a plant growth system that progresses based on the passing days on Titan. The exterior environment of Titan is also complete the hands shown in the first devlog have been replaced with fully 3D animated hands, with unique animations for every interaction in the game i’ve also added an inspection system that lets players pick up, rotate, and closely examine objects, this will be used to reveal important story details naturally, without interrupting gameplay most of the recent work has focused on atmosphere and immersion, and the game is finally starting to feel like the lonely, isolated place I imagined from the beginning next, I’ll be working on repair minigames, textures, and the log system. The logs will play a major role in survival, as the number of days you must endure depends on how effectively you convince people on Earth to organize a rescue mission I’m really happy with the direction of the project so far. It’s shaping up to be a short psychological sci-fi horror experience
Devlog #5 Hi everybody! This week was focused on turning individual mechanics into a playable experience.Several new sections of the Titan base have been added, including industrial storage and processing areas. I spent a lot of time working on interactions. Ladders are now fully functional, with dedicated animations and movement systems, and the first version of the sleep mechanic has been fully implemented along a more smooth animation for it. Most of the work this week wasn’t spent creating entirely new features, but refining and connecting existing ones. The game is slowly reaching the point where I can experience a full gameplay loop rather than a collection of separate systems. There is still a lot of work ahead, especially regarding minigames, textures, and story content. I’m working now in cutscenes and textdialogs to make sure that there is a well told narrative. Hope what i show seems interesting and good luck to everyone!
Devlog #6 So, it’s been a while since I made any progress on this project because of school and stuff. I still haven’t made much more progress, but I wanted to log these hours before continuing. If I remember correctly, all I did was make the energy system, making sure that the player restores energy by sleeping and wastes it by repairing machines around the base. Also, all machines now display their status and integrity. I also made the system that damages the machines, so the whole point will be that machines that are more damaged will fail more often, and the whole base will deteriorate over time. It’s up to the player to decide what to repair and to what degree with the energy they have. For example, fully repairing the heating system might take the energy that you need for the lab, but you might consider the heating system to be more important, and so on… So yeah :)...
|
1792785258.885274
|
1793390058.885274
|
|
19786
|
Starwick by @darshjain | Stardance
|
darshjain
|
0
|
49.69
|
0
|
[]
|
[{"post_id": 12905, "ts": "202 [{"post_id": 12905, "ts": "2026-06-21T04:07:25Z", "hours": 4.1158, "text": "starwick - the run finally means something been turning the flow runner from a pile of systems sitting next to each other into a loop u actually wanna repeat. what i built routes arent just colors anymore. the eclipse path pays way more but the dark creeps in and might swallow u whole. the safe one keeps u calm. bond literally pulls ur companion in to cover ur misses. picking a line feels like picking a mood now instead of a number. then the companions got personalities. vesp gives u a wider grace window, corvel just hands u steady starlight, mara makes the eclipse burn brighter but runs u way hotter, ash leaves a relic every flight. ur not collecting skins anymore, ur picking how the run feels. and the hearth actually grows. spend starlight, a room wakes up, and it changes what ur next run can do. come back a few runs later and the place looks different. the part that broke me the end of run ceremony kept rendering pure black. spent forever convinced the camera was aimed wrong. it wasnt. the hearth was dropping its stars in world space and ignoring where i actually put them so they floated off in the void lol. fixed that and it was STILL black bc the ritual camera was fighting the render pipeline. ended up pointing it at its own texture and feeding that to the screen. finally bloomed. where its at cold open -> run -> route choice -> a small ceremony that hands u back a memory seed -> hearth grows -> next run. it loops now. still rough but it finally has a soul."}, {"post_id": 12361, "ts": "2026-06-20T05:15:48Z", "hours": 5.2022, "text": "starwick - the runner finally feels like a game quick update on the flow runner. it went from a gray ribbon in the dark to something that actually reads. what i built the constellation gates branch now and the branches actually mean something. safe path glows calm blue, the memory one goes violet, eclipse is angry red, and the bond route literally takes on ur companions color. picking a line feels like picking a mood instead of picking a number. speaking of, i ripped all the score numbers out. no more x12 combo text floating around. its diegetic now - a thread weaves up the side as u travel, a little star leans toward the next gate to guide u, and the whole screen cools and dims when pressure builds. perfect hits snap the gate ring inward with a tiny punch and a note. feels good fr. the part that ate my night the end of run ritual kept rendering pure black. i was so sure the camera was pointed wrong. it wasnt. turned out the hearth was placing its stars in world space and ignoring where i actually dropped it, so they floated 40 units off in the void lol. fixed that and it STILL went black bc that camera just refuses to draw the way i wanted. framed it with a seperate cam and it finally bloomed. where its at boot into a run, weave the sky, then a small ceremony hands u back ur starlight and a memory seed u can share. notch safe areas handled too. still rough but it feels like a place now."}, {"post_id": 11758, "ts": "2026-06-19T04:21:28Z", "hours": 3.2497, "text": "starwick - the run learned to sing picked flow run back up. it worked but lowkey looked like a gray triangle in black and felt like nothing. so this stretch was jus making it feel expensive. what i did killed teh plain blue gate spheres. gates are glowing stars now joined by a thread u light as u trace it. gave track a glowing center seam and a starfield behind it so u ride through space not a void. every gate plays a note now. finishing one fires a chord. a harmony pad swells the longer u stay clean so ur kinda composing the sky instead of scoring points. pressure used to flash red like damage which felt cheap tbh. now dark just creeps in and ur trail frays and ur light goes cold. also added a companion that rides with u and leads to next gate and speeds up as ur combo climbs and curls up scared when dark rises. shareable run codes like CORVEL-60H-LUMEN so u can hand someone ur exact run. an auto postcard at results. an intro with no menu where u touch to light the wick drag a thread and let go to open the gate. and failure isnt a game over fr. companion catches u and run ends as a memory u keep. what broke spent a whole evening on a landing that wouldnt register as bad. u could dive straight into the ground and the game just shrugged. turned out air drag was bleeding off fall speed faster than i thought so the hit came in under my bad-landing cutoff. sometimes soft enough to read as a perfect landing which is kinda hilarious. so i stopped tuning the number and changed the rule. if ur diving when u hit the floor thats bad. felt right instantly. where it stands ngl the run finally reads like a thread of light through a nebula now. music building as u chain. dark creeping when u slip. companion reacting the whole way. playable start to finish. still uncommitted tho. and “it works” vs “it feels great on a phone” are two diff things i still gotta settle on device."}, {"post_id": 11660, "ts": "2026-06-19T00:19:41Z", "hours": 7.4472, "text": "starwick - making the run mode feel expensive starwick has two modes: a walkable cosmos and a flow-run (think endless ride through the weave). the run worked a while ago - track, gates, combo, a relight finale - but it looked like a gray triangle floating in black. this stretch was about making it premium instead of just functional. glyph gates and a track that glows the gates used to be plain blue spheres. you weren’t weaving a constellation, you were hitting balls. now each gate is soft-dot stars joined by a glowing thread that brightens as you trace it - it finally reads like you’re drawing the sky. composing the sky, not collecting points every gate node now plays a note (pentatonic, climbs with your chain), completing a gate fires a chord, and a harmony pad swells the longer you hold a run clean. the goal was for it to feel like you’re playing the weave, not racking up a score. pressure used to flash the screen red like generic damage. hated it. now pressure is darkness - your trail frays, the wick dims and goes cold, the music narrows, the frame creeps dark. failure as atmosphere, not a buzzer. and the hearth (your home) now reacts when you get back: starlight motes flow in, the next thing you can afford to restore pulses, and restoring it moves the pulse to the next. it feels like a place that responds instead of an upgrade menu."}, {"post_id": 11066, "ts": "2026-06-18T03:16:18Z", "hours": 7.5253, "text": "starwick - i rebuilt the core as a flow runner big swing this stretch. the free-roam build was pretty but aimless so i pivoted the core into a flow runner. u ride a procedural ribbon, charge and release to glide, trace constellations as gates at speed. kept the old explore mode intact, this is a second mode built from scratch beside it. what i built the whole loop as systems. a deterministic flow motor, auto-run, hold to charge, release to lift into a glide, swipe to drift lanes, pure kinematics so its predictable. a seeded ribbon track with height and width curves, built in chunks ahead and recycled behind so it streams forever. gates that detect by path intersection not a button press. a combo system that chains hits into a rising harmony meter, Soft Trace up to Perfect Weave. a run director that ties it into a real ~90 second run with a relight setpiece near the end. plus a save profile and a hearth where u spend starlight to restore nodes, expression not wait-timers. the save that lied to me wiring the meta screen, it proudly told me id restored 4,244 stars across 9 journeys. id never finished a single run. my headless dev runs were writing straight to the real profile and it had been quietly inflating for days. fix was a dev-only backend, in headless mode the save lives in memory and never touches the real file. round-trips and version migration still work and ur real profile is yours again. made it a hard rule for the save system from the start. where it stands honest version, its systems-complete but not visually playable yet. no wick model, no gate glow, no hud, no hearth view. i built the whole core and havent really watched it move. next pass is pure presentation, give the runner a body, light the gates, show the hud, wire mode select so u can press play and ride. skeleton’s real, now it needs skin."}, {"post_id": 10761, "ts": "2026-06-17T17:34:59Z", "hours": 3.9419, "text": "Starwick - making it look and feel premium Spent this stretch on two things: making the realm look premium, and making it feel premium. The realm became a journey You now relight several star-sites in a row - a companion leads you to each, you trace its constellation, the ground warms, a new light calls you onward. Restore the whole sky, then make the choice. And there’s a roster of companions: the one you carry seeds the world - different terrain, layout, palette, color, even the music. Replay and you’re somewhere new with someone new. Looks premium No new art, just rendering: a filmic color grade with glowy bloom, a horizon haze with a richer nebula, crystals that went from flat cutouts to lit glass that catches light, and a focus-pull that softly blurs the world behind dialogue. Aiming at the Sky / Gris look, not photoreal - the right call for a game built entirely from code. Feels premium Everything reacts: a screen-punch and crystal pop on relight, buttons that pop in, a counter that punches when it ticks. Every tap, trace, and relight makes a synthesized sound, with matching haptics on a phone. None of the audio is recorded. The day it went black Reached for ACES tonemapping plus heavy contrast and vignette, and the whole scene crushed to near-black - nebula and terrain just gone. Swapped to a gentler tonemap, lifted exposure, dropped the bloom threshold so things glow instead of clip, and it came back better than before. Bonus near-miss: I wanted horizon fog but fog eats a star field - turns out the sky’s shader ignores scene fog, so the land hazes while the stars stay crisp. Accidentally perfect. Where it stands Looks and feels like a real game now Caveats: no title screen yet, and it doesn’t remember you between runs - a persistent sky and a collection screen are next."}, {"post_id": 10563, "ts": "2026-06-17T11:12:46Z", "hours": 4.8467, "text": "starwick - you can walk it now big one. til now starwick was a sky in front of ur face, a floating eyeball. now its a place u stand in and walk, where relighting a star changes the ground around u and the music shifts with where u are. what i built the realm is procedural. terrain is a seeded heightfield, no file, jus noise sampled into a mesh, and the same function feeds the walk code so u follow the slopes instead of clipping through em. first-person now, joystick to move, drag to look, a lantern, ground-snap. the camera stopped flying and started walking, sounds small but was secretly half the work. crystals mark each star-site, a constellation hangs above one, trace it to relight and the crystals warm blue to gold while a beacon lights toward the next. the bar that refused to be a circle the relight fires a shockwave ring out from the star. except it kept rendering as a flat white bar, like a highlighter line drawn across the screen. took me a while to clock it, the torus mesh sits in one plane and i was aiming the wrong axis at the camera so the ring was permanently edge-on. point its actual face at the cam and it pops into a clean expanding circle. one line. i stared at that strip way too long. sound that follows u the score’s layered now, a drone underneath, a pad that swells near a site, a motif while u trace, tension on a choice, full bloom on relight. the stars pulse in time, brighter when it swells. nones recorded, all synthesized in code and mixed live by where u are. where it stands u can walk the realm, find a site, trace the constellation, watch it warm the world, and the score moves with u. still one realm for now, more biomes next."}, {"post_id": 10436, "ts": "2026-06-17T04:49:36Z", "hours": 2.1189, "text": "starwick - the whole loop finally runs quick one. the vertical slice plays end to end now and for the first time it feels like the thing i pitched myself, not a pile of systems that happen to compile. the loop you’re a wick, a lil candle-soul who relights dying stars. the slice is one star. u drag across five dim points to trace the constellation, it catches, and the star reignites. motes spiral in, a core lights, a shockwave ring pushes out, ur companion reacts, the camera breathes. then the sky asks what u wanna do. let it rest or send it onward. u pick and the world shifts to match, warm gold if u send it on, colder dim if u rest it. ending plays, then it offers to begin again. the bug that mattered the choice screen looked done before it was. the constellation and companion both live in the world behind it and they were still listening. so a tap meant for “send it onward” also poked the companion, and a stray drag re-traced stars that were alr lit. the ui was a sheet of glass with holes in it. fix was boring and correct. one bit of state that says something modal is up, dialogue journal or a choice, and everything that reads input checks it first and shuts up. taps stopped leaking and the choice felt like a choice instead of a coincidence. where it stands trace, relight, choose, branch, two endings, restart, and the sky remembers the run. whats not there yet, its still a sky in front of u not a place u walk through. next is lifting the constellation into the world and building the first realm u can move around in. thats the jump from pretty to somewhere."}, {"post_id": 10381, "ts": "2026-06-17T02:01:41Z", "hours": 4.9564, "text": "starwick - it moves now, and it remembers big stretch of work. the cosmos went from “pretty to look at” to a place that tells you something and actually feels alive. three threads landed: the story shows up on screen, everything became real crafted 3d, and i finally taught my tests to see motion. the story shows up relight a constellation now and it speaks . a line types out across the bottom - “a star has gone dark. you feel the absence before you see it.” - the stars flare, and a memory surfaces: the ferryman’s lantern, someone who lit the way for others and got forgotten the moment they weren’t needed. those memories collect in a journal you can open. it’s the first time starwick has felt like it’s about something, not just nice to drift through. everything got crafted i ripped out the “glowing blobs of particles” look. the companion and the thing you carry are real 3d now - a glowing core wrapped in actual orbiting rings (generated the ring meshes in code). the lantern is an ember inside three tilted rings spinning at different speeds, like a little orrery of light. vesp got a proper body too and now spring-follows you with a bit of lag and overshoot instead of sliding around on rails - it reads as a thing with weight that’s choosing to keep up with you. making the relight a moment the relight used to be a flat on/off. now it’s staged: the star contracts, motes spiral inward, the core ignites, a shockwave ring blows outward, the companion reacts, and the camera breathes back. small thing, couple seconds, but it turns “i pressed the thing” into “something happened.” where it stands a flyable procedural cosmos, a companion that follows and sings and reacts, the relight-a-constellation loop with a real cinematic beat, and a story that surfaces as you go ."}, {"post_id": 10040, "ts": "2026-06-16T16:36:01Z", "hours": 1.5828, "text": "starwick - relighting the sky third devlog. the cosmos isnt just something to look at now. u can fly through it, trace a dead constellation to bring it back, and poke the companion to get a reaction. the core thing u actually do finally exists. the verb dead constellations hang in the sky as dim blue stars. u drag across em in order, a line of light links each one, and when the shape closes it relights. stars flare gold, sparks burst, a star reborn. the game counts how many u’ve brought back. small moment but it feels good and its what everything else hangs off. moving + vesp input’s online. u can fly around, move and look, keyboard at the desk, thumbstick + drag on a phone, same code. and vesp the companion now answers a tap. it pulses and its lil tune swells for a sec. went from “thing floating near u” to “thing that notices u.” the fight none of my input worked and the whole thing threw on launch. turns out the project’s on the new input system only and i was calling the old input api which just throws. rebuilt it on one input layer that handles mouse and touch the same. instantly alive. where it stands fly through a glowing procedural cosmos, trace constellations to relight em, a companion that follows sings and reacts. all generated in code, no art or audio files."}, {"post_id": 9935, "ts": "2026-06-16T13:35:10Z", "hours": 2.4897, "text": "starwick - the void gets a roommate second devlog. last time starwick was an empty glowing void. now it’s got soft twinkling stars a proper wispy nebula and a little companion floating next to u humming its own tune. starting to feel like a place not a screensaver. the cosmos got real the stars used to be blocky squares. default particle no texture, looked rough. swapped em for soft round points i generate in code, basically a radial gradient sprite, plus a twinkle layer that fades stars in and out so the whole field shimmers. bumped bloom so the bright ones actually glow. nebula was the real fight tho. first pass was a few clean soft blobs and it jus looked like lens flares lol. so i went noise based, fractal perlin clouds with a soft falloff, and overshot the other way. came out dark and basically invisible. third try i dropped the noise threshold and roughly doubled color and alpha and now its vivid purple-and-blue wisps sweeping across the sky. took three goes to land that one. vesp the companion. small violet mote that orbits near u, bobs around, plays a soft little bell arpeggio that layers over the ambient drone. no samples, melody’s built from sine waves like everything else. first attempt vesp came out as a giant white sun lmao. i’d picked a bright purple but cranked the hdr way too high so between that and bloom the core blew out to pure white and it hogged the whole frame like a second star. dialed the color back, shrank it, pushed it further out, rebuilt it from a hard sphere into a cluster of soft glowing dots. now it reads like a tiny spirit drifting with u instead of a death star. where it stands empty void -> twinkling stars + vivid nebula -> a companion that floats beside u and sings. still all procedural, no art or audio files anywhere."}, {"post_id": 9827, "ts": "2026-06-16T08:41:15Z", "hours": 2.2161, "text": "Starwick - a cosmos first devlog. starwick’s a procedural cosmic adventure i’m building what’s in it so far right now it’s just the bootable cosmos. no art, no audio files, nothing downloaded, it’s all generated in code. 700 stars on a sphere around the camera, bloom and vignette, and an ambient drone synthesized at runtime (few detuned sines + a slow lfo)."}]...
|
Title: Starwick by @darshjain | Stardance
Devlogs Title: Starwick by @darshjain | Stardance
Devlogs:
Starwick - a cosmos first devlog. starwick’s a procedural cosmic adventure i’m building what’s in it so far right now it’s just the bootable cosmos. no art, no audio files, nothing downloaded, it’s all generated in code. 700 stars on a sphere around the camera, bloom and vignette, and an ambient drone synthesized at runtime (few detuned sines + a slow lfo).
starwick - the void gets a roommate second devlog. last time starwick was an empty glowing void. now it’s got soft twinkling stars a proper wispy nebula and a little companion floating next to u humming its own tune. starting to feel like a place not a screensaver. the cosmos got real the stars used to be blocky squares. default particle no texture, looked rough. swapped em for soft round points i generate in code, basically a radial gradient sprite, plus a twinkle layer that fades stars in and out so the whole field shimmers. bumped bloom so the bright ones actually glow. nebula was the real fight tho. first pass was a few clean soft blobs and it jus looked like lens flares lol. so i went noise based, fractal perlin clouds with a soft falloff, and overshot the other way. came out dark and basically invisible. third try i dropped the noise threshold and roughly doubled color and alpha and now its vivid purple-and-blue wisps sweeping across the sky. took three goes to land that one. vesp the companion. small violet mote that orbits near u, bobs around, plays a soft little bell arpeggio that layers over the ambient drone. no samples, melody’s built from sine waves like everything else. first attempt vesp came out as a giant white sun lmao. i’d picked a bright purple but cranked the hdr way too high so between that and bloom the core blew out to pure white and it hogged the whole frame like a second star. dialed the color back, shrank it, pushed it further out, rebuilt it from a hard sphere into a cluster of soft glowing dots. now it reads like a tiny spirit drifting with u instead of a death star. where it stands empty void -> twinkling stars + vivid nebula -> a companion that floats beside u and sings. still all procedural, no art or audio files anywhere.
starwick - relighting the sky third devlog. the cosmos isnt just something to look at now. u can fly through it, trace a dead constellation to bring it back, and poke the companion to get a reaction. the core thing u actually do finally exists. the verb dead constellations hang in the sky as dim blue stars. u drag across em in order, a line of light links each one, and when the shape closes it relights. stars flare gold, sparks burst, a star reborn. the game counts how many u’ve brought back. small moment but it feels good and its what everything else hangs off. moving + vesp input’s online. u can fly around, move and look, keyboard at the desk, thumbstick + drag on a phone, same code. and vesp the companion now answers a tap. it pulses and its lil tune swells for a sec. went from “thing floating near u” to “thing that notices u.” the fight none of my input worked and the whole thing threw on launch. turns out the project’s on the new input system only and i was calling the old input api which just throws. rebuilt it on one input layer that handles mouse and touch the same. instantly alive. where it stands fly through a glowing procedural cosmos, trace constellations to relight em, a companion that follows sings and reacts. all generated in code, no art or audio files.
starwick - it moves now, and it remembers big stretch of work. the cosmos went from “pretty to look at” to a place that tells you something and actually feels alive. three threads landed: the story shows up on screen, everything became real crafted 3d, and i finally taught my tests to see motion. the story shows up relight a constellation now and it speaks . a line types out across the bottom - “a star has gone dark. you feel the absence before you see it.” - the stars flare, and a memory surfaces: the ferryman’s lantern, someone who lit the way for others and got forgotten the moment they weren’t needed. those memories collect in a journal you can open. it’s the first time starwick has felt like it’s about something, not just nice to drift through. everything got crafted i ripped out the “glowing blobs of particles” look. the companion and the thing you carry are real 3d now - a glowing core wrapped in actual orbiting rings (generated the ring meshes in code). the lantern is an ember inside three tilted rings spinning at different speeds, like a little orrery of light. vesp got a proper body too and now spring-follows you with a bit of lag and overshoot instead of sliding around on rails - it reads as a thing with weight that’s choosing to keep up with you. making the relight a moment the relight used to be a flat on/off. now it’s staged: the star contracts, motes spiral inward, the core ignites, a shockwave ring blows outward, the companion reacts, and the camera breathes back. small thing, couple seconds, but it turns “i pressed the thing” into “something happened.” where it stands a flyable procedural cosmos, a companion that follows and sings and reacts, the relight-a-constellation loop with a real cinematic beat, and a story that surfaces as you go .
starwick - the whole loop finally runs quick one. the vertical slice plays end to end now and for the first time it feels like the thing i pitched myself, not a pile of systems that happen to compile. the loop you’re a wick, a lil candle-soul who relights dying stars. the slice is one star. u drag across five dim points to trace the constellation, it catches, and the star reignites. motes spiral in, a core lights, a shockwave ring pushes out, ur companion reacts, the camera breathes. then the sky asks what u wanna do. let it rest or send it onward. u pick and the world shifts to match, warm gold if u send it on, colder dim if u rest it. ending plays, then it offers to begin again. the bug that mattered the choice screen looked done before it was. the constellation and companion both live in the world behind it and they were still listening. so a tap meant for “send it onward” also poked the companion, and a stray drag re-traced stars that were alr lit. the ui was a sheet of glass with holes in it. fix was boring and correct. one bit of state that says something modal is up, dialogue journal or a choice, and everything that reads input checks it first and shuts up. taps stopped leaking and the choice felt like a choice instead of a coincidence. where it stands trace, relight, choose, branch, two endings, restart, and the sky remembers the run. whats not there yet, its still a sky in front of u not a place u walk through. next is lifting the constellation into the world and building the first realm u can move around in. thats the jump from pretty to somewhere.
starwick - you can walk it now big one. til now starwick was a sky in front of ur face, a floating eyeball. now its a place u stand in and walk, where relighting a star changes the ground around u and the music shifts with where u are. what i built the realm is procedural. terrain is a seeded heightfield, no file, jus noise sampled into a mesh, and the same function feeds the walk code so u follow the slopes instead of clipping through em. first-person now, joystick to move, drag to look, a lantern, ground-snap. the camera stopped flying and started walking, sounds small but was secretly half the work. crystals mark each star-site, a constellation hangs above one, trace it to relight and the crystals warm blue to gold while a beacon lights toward the next. the bar that refused to be a circle the relight fires a shockwave ring out from the star. except it kept rendering as a flat white bar, like a highlighter line drawn across the screen. took me a while to clock it, the torus mesh sits in one plane and i was aiming the wrong axis at the camera so the ring was permanently edge-on. point its actual face at the cam and it pops into a clean expanding circle. one line. i stared at that strip way too long. sound that follows u the score’s layered now, a drone underneath, a pad that swells near a site, a motif while u trace, tension on a choice, full bloom on relight. the stars pulse in time, brighter when it swells. nones recorded, all synthesized in code and mixed live by where u are. where it stands u can walk the realm, find a site, trace the constellation, watch it warm the world, and the score moves with u. still one realm for now, more biomes next.
Starwick - making it look and feel premium Spent this stretch on two things: making the realm look premium, and making it feel premium. The realm became a journey You now relight several star-sites in a row - a companion leads you to each, you trace its constellation, the ground warms, a new light calls you onward. Restore the whole sky, then make the choice. And there’s a roster of companions: the one you carry seeds the world - different terrain, layout, palette, color, even the music. Replay and you’re somewhere new with someone new. Looks premium No new art, just rendering: a filmic color grade with glowy bloom, a horizon haze with a richer nebula, crystals that went from flat cutouts to lit glass that catches light, and a focus-pull that softly blurs the world behind dialogue. Aiming at the Sky / Gris look, not photoreal - the right call for a game built entirely from code. Feels premium Everything reacts: a screen-punch and crystal pop on relight, buttons that pop in, a counter that punches when it ticks. Every tap, trace, and relight makes a synthesized sound, with matching haptics on a phone. None of the audio is recorded. The day it went black Reached for ACES tonemapping plus heavy contrast and vignette, and the whole scene crushed to near-black - nebula and terrain just gone. Swapped to a gentler tonemap, lifted exposure, dropped the bloom threshold so things glow instead of clip, and it came back better than before. Bonus near-miss: I wanted horizon fog but fog eats a star field - turns out the sky’s shader ignores scene fog, so the land hazes while the stars stay crisp. Accidentally perfect. Where it stands Looks and feels like a real game now Caveats: no title screen yet, and it doesn’t remember you between runs - a persistent sky and a collection screen are next.
starwick - i rebuilt the core as a flow runner big swing this stretch. the free-roam build was pretty but aimless so i pivoted the core into a flow runner. u ride a procedural ribbon, charge and release to glide, trace constellations as gates at speed. kept the old explore mode intact, this is a second mode built from scratch beside it. what i built the whole loop as systems. a deterministic flow motor, auto-run, hold to charge, release to lift into a glide, swipe to drift lanes, pure kinematics so its predictable. a seeded ribbon track with height and width curves, built in chunks ahead and recycled behind so it streams forever. gates that detect by path intersection not a button press. a combo system that chains hits into a rising harmony meter, Soft Trace up to Perfect Weave. a run director that ties it into a real ~90 second run with a relight setpiece near the end. plus a save profile and a hearth where u spend starlight to restore nodes, expression not wait-timers. the save that lied to me wiring the meta screen, it proudly told me id restored 4,244 stars across 9 journeys. id never finished a single run. my headless dev runs were writing straight to the real profile and it had been quietly inflating for days. fix was a dev-only backend, in headless mode the save lives in memory and never touches the real file. round-trips and version migration still work and ur real profile is yours again. made it a hard rule for the save system from the start. where it stands honest version, its systems-complete but not visually playable yet. no wick model, no gate glow, no hud, no hearth view. i built the whole core and havent really watched it move. next pass is pure presentation, give the runner a body, light the gates, show the hud, wire mode select so u can press play and ride. skeleton’s real, now it needs skin.
starwick - making the run mode feel expensive starwick has two modes: a walkable cosmos and a flow-run (think endless ride through the weave). the run worked a while ago - track, gates, combo, a relight finale - but it looked like a gray triangle floating in black. this stretch was about making it premium instead of just functional. glyph gates and a track that glows the gates used to be plain blue spheres. you weren’t weaving a constellation, you were hitting balls. now each gate is soft-dot stars joined by a glowing thread that brightens as you trace it - it finally reads like you’re drawing the sky. composing the sky, not collecting points every gate node now plays a note (pentatonic, climbs with your chain), completing a gate fires a chord, and a harmony pad swells the longer you hold a run clean. the goal was for it to feel like you’re playing the weave, not racking up a score. pressure used to flash the screen red like generic damage. hated it. now pressure is darkness - your trail frays, the wick dims and goes cold, the music narrows, the frame creeps dark. failure as atmosphere, not a buzzer. and the hearth (your home) now reacts when you get back: starlight motes flow in, the next thing you can afford to restore pulses, and restoring it moves the pulse to the next. it feels like a place that responds instead of an upgrade menu.
starwick - the run learned to sing picked flow run back up. it worked but lowkey looked like a gray triangle in black and felt like nothing. so this stretch was jus making it feel expensive. what i did killed teh plain blue gate spheres. gates are glowing stars now joined by a thread u light as u trace it. gave track a glowing center seam and a starfield behind it so u ride through space not a void. every gate plays a note now. finishing one fires a chord. a harmony pad swells the longer u stay clean so ur kinda composing the sky instead of scoring points. pressure used to flash red like damage which felt cheap tbh. now dark just creeps in and ur trail frays and ur light goes cold. also added a companion that rides with u and leads to next gate and speeds up as ur combo climbs and curls up scared when dark rises. shareable run codes like CORVEL-60H-LUMEN so u can hand someone ur exact run. an auto postcard at results. an intro with no menu where u touch to light the wick drag a thread and let go to open the gate. and failure isnt a game over fr. companion catches u and run ends as a memory u keep. what broke spent a whole evening on a landing that wouldnt register as bad. u could dive straight into the ground and the game just shrugged. turned out air drag was bleeding off fall speed faster than i thought so the hit came in under my bad-landing cutoff. sometimes soft enough to read as a perfect landing which is kinda hilarious. so i stopped tuning the number and changed the rule. if ur diving when u hit the floor thats bad. felt right instantly. where it stands ngl the run finally reads like a thread of light through a nebula now. music building as u chain. dark creeping when u slip. companion reacting the whole way. playable start to finish. still uncommitted tho. and “it works” vs “it feels great on a phone” are two diff things i still gotta settle on device.
starwick - the runner finally feels like a game quick update on the flow runner. it went from a gray ribbon in the dark to something that actually reads. what i built the constellation gates branch now and the branches actually mean something. safe path glows calm blue, the memory one goes violet, eclipse is angry red, and the bond route literally takes on ur companions color. picking a line feels like picking a mood instead of picking a number. speaking of, i ripped all the score numbers out. no more x12 combo text floating around. its diegetic now - a thread weaves up the side as u travel, a little star leans toward the next gate to guide u, and the whole screen cools and dims when pressure builds. perfect hits snap the gate ring inward with a tiny punch and a note. feels good fr. the part that ate my night the end of run ritual kept rendering pure black. i was so sure the camera was pointed wrong. it wasnt. turned out the hearth was placing its stars in world space and ignoring where i actually dropped it, so they floated 40 units off in the void lol. fixed that and it STILL went black bc that camera just refuses to draw the way i wanted. framed it with a seperate cam and it finally bloomed. where its at boot into a run, weave the sky, then a small ceremony hands u back ur starlight and a memory seed u can share. notch safe areas handled too. still rough but it feels like a place now.
starwick - the run finally means something been turning the flow runner from a pile of systems sitting next to each other into a loop u actually wanna repeat. what i built routes arent just colors anymore. the eclipse path pays way more but the dark creeps in and might swallow u whole. the safe one keeps u calm. bond literally pulls ur companion in to cover ur misses. picking a line feels like picking a mood now instead of a number. then the companions got personalities. vesp gives u a wider grace window, corvel just hands u steady starlight, mara makes the eclipse burn brighter but runs u way hotter, ash leaves a relic every flight. ur not collecting skins anymore, ur picking how the run feels. and the hearth actually grows. spend starlight, a room wakes up, and it changes what ur next run can do. come back a few runs later and the place looks different. the part that broke me the end of run ceremony kept rendering pure black. spent forever convinced the camera was aimed wrong. it wasnt. the hearth was dropping its stars in world space and ignoring where i actually put them so they floated off in the void lol. fixed that and it was STILL black bc the ritual camera was fighting the render pipeline. ended up pointing it at its own texture and feeding that to the screen. finally bloomed. where its at cold open -> run -> route choice -> a small ceremony that hands u back a memory seed -> hearth grows -> next run. it loops now. still rough but it finally has a soul....
|
1792885778.6404321
|
1793749778.6404321
|
|
4884
|
Spottr by @BrunoGG | Stardance
|
BrunoGG
|
1
|
49.59
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T18:36:43Z", "hours": 47.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "SPOTTR is an open-source indoor presence tracking system built on ESP32-C3 and Bluetooth Low Energy. Wear a badge, walk into a room, show up on the map.", "repo": "https://github.com/BrunoGG69/Spottr", "demo": ""}]...
|
[{"post_id": 77148, "ts": "202 [{"post_id": 77148, "ts": "2026-10-05T19:42:35Z", "hours": 2.5883, "text": "DEVLOG #9 - BADGE CASE REDESIGNED, PRINTED AND ASSEMBLED Website : https://spottr.brunogg.in Work Done: Redesigned the badge enclosure from scratch in Fusion 360 to fit the new battery, which got thicker but smaller in footprint while the badge had to stay credit-card sized at 86 x 54 mm Made the whole model parametric , so every dimension falls out of a handful of named values and the next component change is a one-number edit instead of another rebuild Added the Spottr logo embossed on the lid and a USB-C cutout sized off the actual connector Got it printed through #printing-legion and it came out clean Assembled the hardware into it : XIAO ESP32-C3, LiPo and status LED all sit flat in the cavity with the lid seating properly on top"}, {"post_id": 48356, "ts": "2026-08-16T17:46:13Z", "hours": 5.61, "text": "DEVLOG #8 - MQTT AUTH, POWER-FAILURE RECOVERY, DASHBOARD REDESIGNED FROM SCRATCH Website : https://spottr.brunogg.in Work Done: Added MQTT username and password support across the whole stack. The captive portal now has optional auth fields, the credentials save to NVS with the rest of the config, and the pi-bridge authenticates the same way. Leaving them blank keeps the old anonymous behaviour, so nothing broke for existing setups Fixed a bug where every scanner broadcast the same setup network name . The AP name is built from the last two bytes of the device MAC, but it was being read from the WiFi driver before the interface existed, so every board came up as Spottr-Scanner-0000 . Reading the MAC directly from efuse fixed it, and each scanner now shows its real suffix, unique per device and stable across reboots Fixed a power-failure recovery bug that only showed up in the real deployment. When the power came back, the scanners booted in about two seconds but the router took closer to a minute, so the scanners found no network, assumed they were unconfigured, and dropped into the config portal. Every node had to be manually restarted. The logic was treating “can’t connect right now” as “isn’t set up”. Now a scanner with credentials in NVS retries WiFi indefinitely and only ever opens the portal if there are genuinely no credentials or the command is given over serial Added a WiFi watchdog to the main loop, so a dropout during normal operation reconnects on its own instead of leaving the scanner stuck retrying MQTT over a dead network Fixed the OTA status LED never actually animating . ledSet() only records the state, and the pin write happens in ledUpdate() , which runs from the main loop, but the OTA download blocks that loop entirely. So the LED just froze at whatever brightness it had. Driving it from httpUpdate ’s progress callback fixed it, and the pattern is twice as fast now so a quick update is still visible Redesigned the dashboard from scratch. Went for a design language closer to Nothing and Apple’s dark mode, so the whole thing is monochrome with mono uppercase labels, thin tabular numerals and a lot of empty space. Stripped out the animated gradient orbs, the dot-grid background and the glassmorphism, since that look is everywhere now and reads as generic. Cards are visible because they’re lighter than the page rather than because they have a border, and colour only appears where it means something, so a room lighting up when someone walks in is the only saturated thing on screen Rebuilt the Overview page as three columns, with stats and occupied rooms on the left, the floor map in the middle, and a badge rail on the right where every badge can be searched, edited, disabled or deleted without leaving the page. Added pan and zoom to the map Fixed a bug where any badge added through the dashboard would never show a location. New badges were saved with an uppercase MAC while the pi-bridge writes location keys in lowercase, so the two never matched. Pulled the MAC handling into a shared module so both pages normalise the same way Replaced the component-library sidebar with a custom animated one , and moved the shared liveness and badge logic into lib/status.js and lib/badges.js . The duplicated copies of that logic are exactly what let the floor map and the overview page drift apart and disagree about which scanners were online Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner"}, {"post_id": 30368, "ts": "2026-07-17T20:52:22Z", "hours": 7.6561, "text": "DEVLOG #7 - OTA FULLY IMPLEMENTED WITH AUTO-UPDATES, CAPTIVE PORTAL ADDED, FIRMWARE REFACTORED & STATUS LED Website : https://spottr.brunogg.in Work Done: Fully implemented Over-The-Air (OTA) updates for the scanner nodes. The pi-bridge watches Firebase for a new firmware version and publishes it over MQTT, each scanner compares it against its own version and only updates if it’s newer, then downloads, flashes and reboots itself. The version check runs on each scanner, so one publish updates every outdated node automatically Set up automatic releases using a GitHub Action, so publishing a new release on GitHub writes the version and download URL to Firebase on its own, which then cascades down to every scanner. Now a single release publish updates the whole fleet with no manual steps Added a WiFi captive portal for first-time scanner setup. On first boot the scanner hosts its own network and serves a 4-step wizard (name the room, connect WiFi, set the broker, confirm) styled to match the website. Config is saved to NVS after every step and the portal won’t let a scanner boot into normal mode until setup is fully complete, so one firmware image now works for every scanner without editing code Refactored the scanner firmware from one large file into separate modules ( config , portal , scanner , ota , led and globals ) for cleaner, more maintainable code Added a status LED on the scanner so its state can be read at a glance without a serial monitor - blinking while connecting, solid when online, a slow breathing fade while in the config portal, and a distinct pattern during an OTA update Fixed a bug where the dashboard counted an offline scanner as online, by trusting the health status set by the pi-bridge instead of guessing from the last-seen timestamp Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner"}, {"post_id": 17080, "ts": "2026-06-27T18:48:35Z", "hours": 7.1619, "text": "DEVLOG #6 - SCANNER HEALTH CHECKS IMPLEMENTED, IDENTIFY SCANNERS VIA MAC, BADGE MANAGEMENT & OTA GROUNDWORK SET Website : https://spottr.brunogg.in Work Done: Built an active scanner health-check system - pi-bridge pings each scanner every 15s over MQTT, scanner replies with a pong , and a missed pong marks it offline within a few seconds. This replaced the old passive system where the scanner sent a heartbeat every 30 seconds to update its status Switched scanner identity to its MAC Address . with the pi-bridge verifying each scanner’s MAC and registering unknown scanners into Firebase as unassigned Refactored pi-bridge from one single large file into multiple sub-files ( config.py , handlers.py , health.py , presence.py , registry.py , state.py and main.py ) Started work on the Badges Management Page where the admin can add, edit, delete or enable/disable badges , where each row shows the live status of each badge as online/offline and current room, along with confirmation dialog boxes for destructive actions like deletion or disabling badges Laid the groundwork for OTA firmware updates for the scanner nodes, where I switched the scanner partition table to support two app slots, added semantic version tracking and comparison, and wrote the OTA update function (yet to be implemented properly) Future Work Fully implement the OTA function where the pi-bridge triggers the update by publishing the new firmware version over MQTT and automatically flash it to the scanners Add a captive portal where the scanners can be configured (Adding WiFi and Scanner IDs) without editing the code Build the Scanners Management page to assign rooms to auto-registered scanners and Logs Page to view history of every action performed"}, {"post_id": 12997, "ts": "2026-06-21T07:48:49Z", "hours": 5.1617, "text": "DEVLOG #5 — STARTED WORK ON ADMIN DASHBOARD, IMPLEMENTED LIVE FLOOR MAP Website: https://spottr.brunogg.in Work Done: Started work on the admin dashboard Built the floor map feature and made it show in which room a badge is currently in Live badge dots render directly on the floor map, positioned in the room they were last detected in Added StatCards to the Overview page -> Badges Online, Scanners Online, Rooms Occupied, Total Badges Future Work Add dynamically updating status for scanners where pi-bridge sends a heartbeat and scanner-node responds to it Add sections to admin dashboard to add, remove or manage badges and scanners, along with a logs section to log any changes"}, {"post_id": 9494, "ts": "2026-06-15T20:54:45Z", "hours": 5.8011, "text": "DEVLOG #4 - LOGIN PAGE, BUG FIXES AND OVERHALL BADGE AND SCANNER FIRMWARE ALONG WITH CHANGES IN PI-BRIDGE Website: https://spottr.brunogg.in Work Done: Implemented a login page with Firebase Auth which supports but Google Sign-In as well as via Email & Password (Added a test user with its credentials posted on login page for future testing and for public showcase of the project) Added Protected routes - dashboard will remain inaccessible without logging in Switched the badge identification from using device_id ex. SPOTTR_BADGE_0XX to a MAC Address based identification coz its much more reliable and harder to spook Fixed some major and minor bugs Worked on the pi-bridge code to get readings of MAC Address . Set up Firebase RTDB badges/ node — each badge registered by MAC address with label, owner name and active status. This will be used in the dashboard to display owner names instead of raw MAC addresses and also used to assign a badge to a user and block or allow access Future Work: Build the admin dashboard with live floor map giving location data for each badge user Continue work on the landing page"}, {"post_id": 7635, "ts": "2026-06-12T19:12:56Z", "hours": 6.6208, "text": "DEVLOG #3 — WEBSITE POLISH + PI BRIDGE COMPLETE Website: https://spottr.brunogg.in Work Done Built floating navbar with sliding hover pill animation on desktop Added hamburger menu for mobile with smooth open/close animations and click-outside-to-close Logo centers on mobile, left-aligns on desktop Fixed SPOTTR intro animation to be properly centered on all screen sizes Made hero section fully responsive for mobile Pi Bridge now pushes live badge locations to Firebase RTDB and logs history to Firestore Added online/offline detection for both scanner nodes and badges with 60 second timeout Future Work Build admin dashboard with live floor map pulling from Firebase RTDB Add How It Works, Hardware and Software sections to landing page Add Firebase Auth to protect the dashboard Flash second scanner node and test strongest-signal room detection across multiple rooms Deep sleep badge firmware for battery life"}, {"post_id": 4817, "ts": "2026-06-08T10:04:57Z", "hours": 4.1131, "text": "DEVLOG #2 — HARDWARE ARRIVES, FIRMWARE WORK BEGINS Finally the hardware arrived and I started work straight away… First time diving into this deep of C++ programming… Dam it was tough fr Website: https://spottr.brunogg.in/ Work Done Set up PlatformIO in VS Code for programming the ESP32 Boards Flashed badge firmware on ESP32-C3 to continuously advertise via BLE with ID SPOTTR_BADGE_0XX Built scanner node firmware for ESP32-C6 to scan for BLE Devices with ID starting from SPOTTR_ Set up Raspberry Pi OS and installed MQTT broker Improved Scanner Node range by using antennas salvaged from old WiFi routers Added 30 second heartbeat from scanner to monitor online/offline status Future Work Write code for Python Pi Bridge to receive MQTT data and push to Firebase Continue work on landing page of the website"}, {"post_id": 2951, "ts": "2026-06-05T21:10:53Z", "hours": 4.8175, "text": "DEVLOG #1 — WEBSITE WORK BEGINS Note: Hardware arrives on 7th June, the real work starts then Website: https://spottr.brunogg.in Work Done Designed a model for the badge using Fusion 360 and logo using Canva Got Hero Section working Added 3D model of the product in website using React Three Fiber Added Intro animation to the website using AceternityUI where the SPOTTR text draws itself across the full screen with color gradient stroke on load, then fades to reveal the hero content. (Took alot longer to perfect and get timings as well as colors right 💀) Future Work Start hardware work the moment it arrives on 7th June Get the Pi Bridge system up and collecting RSSI data from scanner nodes"}]...
|
Title: Spottr by @BrunoGG | Stardance
Devlogs:
DE Title: Spottr by @BrunoGG | Stardance
Devlogs:
DEVLOG #1 — WEBSITE WORK BEGINS Note: Hardware arrives on 7th June, the real work starts then Website: https://spottr.brunogg.in Work Done Designed a model for the badge using Fusion 360 and logo using Canva Got Hero Section working Added 3D model of the product in website using React Three Fiber Added Intro animation to the website using AceternityUI where the SPOTTR text draws itself across the full screen with color gradient stroke on load, then fades to reveal the hero content. (Took alot longer to perfect and get timings as well as colors right 💀) Future Work Start hardware work the moment it arrives on 7th June Get the Pi Bridge system up and collecting RSSI data from scanner nodes
DEVLOG #2 — HARDWARE ARRIVES, FIRMWARE WORK BEGINS Finally the hardware arrived and I started work straight away… First time diving into this deep of C++ programming… Dam it was tough fr Website: https://spottr.brunogg.in/ Work Done Set up PlatformIO in VS Code for programming the ESP32 Boards Flashed badge firmware on ESP32-C3 to continuously advertise via BLE with ID SPOTTR_BADGE_0XX Built scanner node firmware for ESP32-C6 to scan for BLE Devices with ID starting from SPOTTR_ Set up Raspberry Pi OS and installed MQTT broker Improved Scanner Node range by using antennas salvaged from old WiFi routers Added 30 second heartbeat from scanner to monitor online/offline status Future Work Write code for Python Pi Bridge to receive MQTT data and push to Firebase Continue work on landing page of the website
DEVLOG #3 — WEBSITE POLISH + PI BRIDGE COMPLETE Website: https://spottr.brunogg.in Work Done Built floating navbar with sliding hover pill animation on desktop Added hamburger menu for mobile with smooth open/close animations and click-outside-to-close Logo centers on mobile, left-aligns on desktop Fixed SPOTTR intro animation to be properly centered on all screen sizes Made hero section fully responsive for mobile Pi Bridge now pushes live badge locations to Firebase RTDB and logs history to Firestore Added online/offline detection for both scanner nodes and badges with 60 second timeout Future Work Build admin dashboard with live floor map pulling from Firebase RTDB Add How It Works, Hardware and Software sections to landing page Add Firebase Auth to protect the dashboard Flash second scanner node and test strongest-signal room detection across multiple rooms Deep sleep badge firmware for battery life
DEVLOG #4 - LOGIN PAGE, BUG FIXES AND OVERHALL BADGE AND SCANNER FIRMWARE ALONG WITH CHANGES IN PI-BRIDGE Website: https://spottr.brunogg.in Work Done: Implemented a login page with Firebase Auth which supports but Google Sign-In as well as via Email & Password (Added a test user with its credentials posted on login page for future testing and for public showcase of the project) Added Protected routes - dashboard will remain inaccessible without logging in Switched the badge identification from using device_id ex. SPOTTR_BADGE_0XX to a MAC Address based identification coz its much more reliable and harder to spook Fixed some major and minor bugs Worked on the pi-bridge code to get readings of MAC Address . Set up Firebase RTDB badges/ node — each badge registered by MAC address with label, owner name and active status. This will be used in the dashboard to display owner names instead of raw MAC addresses and also used to assign a badge to a user and block or allow access Future Work: Build the admin dashboard with live floor map giving location data for each badge user Continue work on the landing page
DEVLOG #5 — STARTED WORK ON ADMIN DASHBOARD, IMPLEMENTED LIVE FLOOR MAP Website: https://spottr.brunogg.in Work Done: Started work on the admin dashboard Built the floor map feature and made it show in which room a badge is currently in Live badge dots render directly on the floor map, positioned in the room they were last detected in Added StatCards to the Overview page -> Badges Online, Scanners Online, Rooms Occupied, Total Badges Future Work Add dynamically updating status for scanners where pi-bridge sends a heartbeat and scanner-node responds to it Add sections to admin dashboard to add, remove or manage badges and scanners, along with a logs section to log any changes
DEVLOG #6 - SCANNER HEALTH CHECKS IMPLEMENTED, IDENTIFY SCANNERS VIA MAC, BADGE MANAGEMENT & OTA GROUNDWORK SET Website : https://spottr.brunogg.in Work Done: Built an active scanner health-check system - pi-bridge pings each scanner every 15s over MQTT, scanner replies with a pong , and a missed pong marks it offline within a few seconds. This replaced the old passive system where the scanner sent a heartbeat every 30 seconds to update its status Switched scanner identity to its MAC Address . with the pi-bridge verifying each scanner’s MAC and registering unknown scanners into Firebase as unassigned Refactored pi-bridge from one single large file into multiple sub-files ( config.py , handlers.py , health.py , presence.py , registry.py , state.py and main.py ) Started work on the Badges Management Page where the admin can add, edit, delete or enable/disable badges , where each row shows the live status of each badge as online/offline and current room, along with confirmation dialog boxes for destructive actions like deletion or disabling badges Laid the groundwork for OTA firmware updates for the scanner nodes, where I switched the scanner partition table to support two app slots, added semantic version tracking and comparison, and wrote the OTA update function (yet to be implemented properly) Future Work Fully implement the OTA function where the pi-bridge triggers the update by publishing the new firmware version over MQTT and automatically flash it to the scanners Add a captive portal where the scanners can be configured (Adding WiFi and Scanner IDs) without editing the code Build the Scanners Management page to assign rooms to auto-registered scanners and Logs Page to view history of every action performed
DEVLOG #7 - OTA FULLY IMPLEMENTED WITH AUTO-UPDATES, CAPTIVE PORTAL ADDED, FIRMWARE REFACTORED & STATUS LED Website : https://spottr.brunogg.in Work Done: Fully implemented Over-The-Air (OTA) updates for the scanner nodes. The pi-bridge watches Firebase for a new firmware version and publishes it over MQTT, each scanner compares it against its own version and only updates if it’s newer, then downloads, flashes and reboots itself. The version check runs on each scanner, so one publish updates every outdated node automatically Set up automatic releases using a GitHub Action, so publishing a new release on GitHub writes the version and download URL to Firebase on its own, which then cascades down to every scanner. Now a single release publish updates the whole fleet with no manual steps Added a WiFi captive portal for first-time scanner setup. On first boot the scanner hosts its own network and serves a 4-step wizard (name the room, connect WiFi, set the broker, confirm) styled to match the website. Config is saved to NVS after every step and the portal won’t let a scanner boot into normal mode until setup is fully complete, so one firmware image now works for every scanner without editing code Refactored the scanner firmware from one large file into separate modules ( config , portal , scanner , ota , led and globals ) for cleaner, more maintainable code Added a status LED on the scanner so its state can be read at a glance without a serial monitor - blinking while connecting, solid when online, a slow breathing fade while in the config portal, and a distinct pattern during an OTA update Fixed a bug where the dashboard counted an offline scanner as online, by trusting the health status set by the pi-bridge instead of guessing from the last-seen timestamp Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner
DEVLOG #8 - MQTT AUTH, POWER-FAILURE RECOVERY, DASHBOARD REDESIGNED FROM SCRATCH Website : https://spottr.brunogg.in Work Done: Added MQTT username and password support across the whole stack. The captive portal now has optional auth fields, the credentials save to NVS with the rest of the config, and the pi-bridge authenticates the same way. Leaving them blank keeps the old anonymous behaviour, so nothing broke for existing setups Fixed a bug where every scanner broadcast the same setup network name . The AP name is built from the last two bytes of the device MAC, but it was being read from the WiFi driver before the interface existed, so every board came up as Spottr-Scanner-0000 . Reading the MAC directly from efuse fixed it, and each scanner now shows its real suffix, unique per device and stable across reboots Fixed a power-failure recovery bug that only showed up in the real deployment. When the power came back, the scanners booted in about two seconds but the router took closer to a minute, so the scanners found no network, assumed they were unconfigured, and dropped into the config portal. Every node had to be manually restarted. The logic was treating “can’t connect right now” as “isn’t set up”. Now a scanner with credentials in NVS retries WiFi indefinitely and only ever opens the portal if there are genuinely no credentials or the command is given over serial Added a WiFi watchdog to the main loop, so a dropout during normal operation reconnects on its own instead of leaving the scanner stuck retrying MQTT over a dead network Fixed the OTA status LED never actually animating . ledSet() only records the state, and the pin write happens in ledUpdate() , which runs from the main loop, but the OTA download blocks that loop entirely. So the LED just froze at whatever brightness it had. Driving it from httpUpdate ’s progress callback fixed it, and the pattern is twice as fast now so a quick update is still visible Redesigned the dashboard from scratch. Went for a design language closer to Nothing and Apple’s dark mode, so the whole thing is monochrome with mono uppercase labels, thin tabular numerals and a lot of empty space. Stripped out the animated gradient orbs, the dot-grid background and the glassmorphism, since that look is everywhere now and reads as generic. Cards are visible because they’re lighter than the page rather than because they have a border, and colour only appears where it means something, so a room lighting up when someone walks in is the only saturated thing on screen Rebuilt the Overview page as three columns, with stats and occupied rooms on the left, the floor map in the middle, and a badge rail on the right where every badge can be searched, edited, disabled or deleted without leaving the page. Added pan and zoom to the map Fixed a bug where any badge added through the dashboard would never show a location. New badges were saved with an uppercase MAC while the pi-bridge writes location keys in lowercase, so the two never matched. Pulled the MAC handling into a shared module so both pages normalise the same way Replaced the component-library sidebar with a custom animated one , and moved the shared liveness and badge logic into lib/status.js and lib/badges.js . The duplicated copies of that logic are exactly what let the floor map and the overview page drift apart and disagree about which scanners were online Future Work Build the Scanners Management page to assign rooms to auto-registered scanners and a Logs Page to view the history of every action performed Add offline buffering to the scanner firmware so badge detections aren’t lost if WiFi drops, and flush them once reconnected Add checksum verification to the OTA process so a corrupted download can’t be flashed to a scanner
DEVLOG #9 - BADGE CASE REDESIGNED, PRINTED AND ASSEMBLED Website : https://spottr.brunogg.in Work Done: Redesigned the badge enclosure from scratch in Fusion 360 to fit the new battery, which got thicker but smaller in footprint while the badge had to stay credit-card sized at 86 x 54 mm Made the whole model parametric , so every dimension falls out of a handful of named values and the next component change is a one-number edit instead of another rebuild Added the Spottr logo embossed on the lid and a USB-C cutout sized off the actual connector Got it printed through #printing-legion and it came out clean Assembled the hardware into it : XIAO ESP32-C3, LiPo and status LED all sit flat in the cavity with the lid seating properly on top
Ships:
SPOTTR is an open-source indoor presence tracking system built on ESP32-C3 and Bluetooth Low Energy. Wear a badge, walk into a room, show up on the map....
|
1793098074.0191033
|
1793184474.0191033
|
|
1502
|
tachyoo - a (fast) minecraft server by @hq2000 | S tachyoo - a (fast) minecraft server by @hq2000 | Stardance...
|
hq2000
|
0
|
49.27
|
0
|
[]
|
[{"post_id": 41396, "ts": "202 [{"post_id": 41396, "ts": "2026-08-05T16:14:16Z", "hours": 14.1728, "text": "I though I already made a devlog, but well… I needed to read my past commits to write this, so basically, I added more packets, created a packet viewer (wip, doesn’t really work) , a wasm plugin crate and tried to get it to communicate with the client. As of now, the login nearly works, I only need to reply to the cleint using the correct player profile info and session id. But, after looking at the logic, I (again) realize thinking about the architecture should be the top priority especially if you want to write a highly concurrent (and hopefully fast) minecraft server. This means I’m going to remove the old code and make a readable, maintainable and fun to work with protocol implementation (= config, status and login stages of the protocol). below is the stderr output of the server (yes, that’s my uuid)"}, {"post_id": 11789, "ts": "2026-06-19T05:51:58Z", "hours": 13.4533, "text": "“making it work”: I added a tokio (async runtime) task that gets spawned for each incoming connection and more parsing infrastructure, though I know have the fun to either write a “few” trait impls or mess with pseudo-variadics. below is a screenshot of the server output after receiving a handshake from the client"}, {"post_id": 8122, "ts": "2026-06-13T15:46:17Z", "hours": 10.2433, "text": "can’t believe it’s 10h again, I needed to look through my past commits to recount what I did, which turns out to be a quite mixed bag. I added a few types for server -> client transmission. trying to write them to a buffer first (because packets can be compressed), I realized I need to make the Transmission trait (/interface) sync and then write the packet to the tcp stream asynchronously…a dumb mistake, but rewriting existing code was easy using the search+replace functionality. I tried to get it to work (which json is pretty useful for), but didn’t finish it. thanks serde_json! aside from that, I added a server wip implementation using tokio, I think the design will for now just be having an asynchronous task for each connection which parses the packets and sends them as messages to the (ecs) minecraft world and the simulation send some messages back to the same task (or a separate one?). my next priority will be to have my server be recognized by the client (and making more frequent devlogs maybe). below a screenshot of some code (maybe next time something else?)"}, {"post_id": 2350, "ts": "2026-06-04T20:01:01Z", "hours": 10.0253, "text": "I’m still implementing the Data Types for server -> client transmission as well as the traits necessary (I changed them like 4 times, and some changes meant a reimplementation of existing impls). Now there is just a Transfer trait for types that are ready to transmit (≙ types that can easily write their transmission data to, e. g., a tcp stream or a buffer around one). The implementation now is supposed to be correct, but not necessarily the fastest / most memory efficient one, I will come back to do that later. I already implemented a majority of the data types, prominently lacking NBT (efficient binary data format), some JSON stuff (I guess) and a few small other things, I won’t do the debug data types until I need them. Below is a screenshot of the trait the code I wrote is centered around."}, {"post_id": 419, "ts": "2026-06-01T20:24:08Z", "hours": 1.3764, "text": "I’m currently trying to implement the Java Edition Server protocol, starting with the data types (like Boolean, VarInt, BitSet, Slot) and transfering them via tcp packets. I’m trying to make it type-safe via a Transferable trait (as seen below) that a few newtypes (respectively called VarInt, Boolean etc) which can be sent over will implement, so I can later just put some of these together for actually implementing the protocol without having to worry about the low-level details (= I can just do sth like send(stream, [VarInt(45), Byte]) ). I hope this accelerates the implementation."}]...
|
Title: tachyoo - a (fast) minecraft server by @hq2 Title: tachyoo - a (fast) minecraft server by @hq2000 | Stardance
Devlogs:
I’m currently trying to implement the Java Edition Server protocol, starting with the data types (like Boolean, VarInt, BitSet, Slot) and transfering them via tcp packets. I’m trying to make it type-safe via a Transferable trait (as seen below) that a few newtypes (respectively called VarInt, Boolean etc) which can be sent over will implement, so I can later just put some of these together for actually implementing the protocol without having to worry about the low-level details (= I can just do sth like send(stream, [VarInt(45), Byte]) ). I hope this accelerates the implementation.
I’m still implementing the Data Types for server -> client transmission as well as the traits necessary (I changed them like 4 times, and some changes meant a reimplementation of existing impls). Now there is just a Transfer trait for types that are ready to transmit (≙ types that can easily write their transmission data to, e. g., a tcp stream or a buffer around one). The implementation now is supposed to be correct, but not necessarily the fastest / most memory efficient one, I will come back to do that later. I already implemented a majority of the data types, prominently lacking NBT (efficient binary data format), some JSON stuff (I guess) and a few small other things, I won’t do the debug data types until I need them. Below is a screenshot of the trait the code I wrote is centered around.
can’t believe it’s 10h again, I needed to look through my past commits to recount what I did, which turns out to be a quite mixed bag. I added a few types for server -> client transmission. trying to write them to a buffer first (because packets can be compressed), I realized I need to make the Transmission trait (/interface) sync and then write the packet to the tcp stream asynchronously…a dumb mistake, but rewriting existing code was easy using the search+replace functionality. I tried to get it to work (which json is pretty useful for), but didn’t finish it. thanks serde_json! aside from that, I added a server wip implementation using tokio, I think the design will for now just be having an asynchronous task for each connection which parses the packets and sends them as messages to the (ecs) minecraft world and the simulation send some messages back to the same task (or a separate one?). my next priority will be to have my server be recognized by the client (and making more frequent devlogs maybe). below a screenshot of some code (maybe next time something else?)
“making it work”: I added a tokio (async runtime) task that gets spawned for each incoming connection and more parsing infrastructure, though I know have the fun to either write a “few” trait impls or mess with pseudo-variadics. below is a screenshot of the server output after receiving a handshake from the client
I though I already made a devlog, but well… I needed to read my past commits to write this, so basically, I added more packets, created a packet viewer (wip, doesn’t really work) , a wasm plugin crate and tried to get it to communicate with the client. As of now, the login nearly works, I only need to reply to the cleint using the correct player profile info and session id. But, after looking at the logic, I (again) realize thinking about the architecture should be the top priority especially if you want to write a highly concurrent (and hopefully fast) minecraft server. This means I’m going to remove the old code and make a readable, maintainable and fun to work with protocol implementation (= config, status and login stages of the protocol). below is the stderr output of the server (yes, that’s my uuid)...
|
1792727628.5528948
|
1793332428.5528948
|
|
67089
|
AI-YOU by @Koi-II | Stardance
|
Koi-II
|
0
|
49.21
|
0
|
[]
|
[{"post_id": 75658, "ts": "202 [{"post_id": 75658, "ts": "2026-09-30T17:30:35Z", "hours": 49.2142, "text": "working on my ai substitute, a sort of brain that tells agent what to do instead of me"}]...
|
Title: AI-YOU by @Koi-II | Stardance
Devlogs:
wor Title: AI-YOU by @Koi-II | Stardance
Devlogs:
working on my ai substitute, a sort of brain that tells agent what to do instead of me...
|
1793105657.402265
|
1793710457.402265
|
|
308
|
Apollo Accord by @alien | Stardance
|
alien
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T12:42:36Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a shooter-RPG ish game where you fight invading aliens that are seeking to take over your ship. As the captain, you must fight your way against the overpowering enemies, and send clear signals of surrender before your entire ship is taken over. I wanted to finish this project up until the player can communicate with other alien civilizations other than the invading one, but due to time constraints and my busier than ever schedule I won’t be able to work on this project much more, at least for the time being. I’ll be shipping this project and packing up. You can try the project by downloading the appropriate zip file for your system. Linux and the web package is still unverified, so potential players are advised to stick to the MacOS and Windows releases. Thank you for your understanding.", "repo": "https://github.com/SoHiEarth/Apollo-Accord", "demo": "https://sohiearth.itch.io/apollo-accord"}]...
|
[{"post_id": 65938, "ts": "202 [{"post_id": 65938, "ts": "2026-09-11T12:36:46Z", "hours": 1.3, "text": "Build Update. Worked on building releases for Linux, Mac, Windows and web (html). Not much on the technical side either, just baking light maps and polishing up some stuff in the game. This is because I have some priorities that are higher than Stardance, unfortunately, and I think I won’t be able to finish this project to the level I was expecting. I appreciate your understanding."}, {"post_id": 59140, "ts": "2026-08-31T19:23:39Z", "hours": 3.3025, "text": "Lights Out. Major Doom 3 vibes happening Explore the Unknown, and sometimes, terrifying. Decided to lean in a bit more on the “explore” factor and made many rooms darker overall. The capsules you see here are the enemies you fight, multiplied by the difficulty set in the settings. I’m thinking of adding red, glowing eyes or something to make it a bit scarier. I plan to not lean too much on this aspect, though. This is only for the first chapter of the story. PSA on the lighting. The reflections on the gun is a bit off, I know, I’m fixing it right now. Anyway, that’s the update for today! Going to work on some more story content soon."}, {"post_id": 57188, "ts": "2026-08-29T09:21:04Z", "hours": 2.8056, "text": "Apollo Accord: Gameplay and story updates, finally! After multiple delays, I started working on expanding the next chapter of the story. Story areas! First, I made the mess hall area where the player goes to support their teammates and fight the boss. I’ve started noticing the similarities between my combat system and the combat systems of arena style shooters, so I intentionally made this area larger so the player has a lot of space to move around (foreshadowing) I’ve finished the interaction system where the player can interact with in-game objects to trigger story changes, etc. Nothing too special to see here. Major movement updates! I made a GRAPPLING SYSTEM . It works by pressing right mouse button, and a circle shows up at where the target is. Simple, but it allows for more dynamic combat, and lets players take advantage of height. So, simple stuff! I have a lot of smaller updates like showing damage dealt when shooting enemies and stuff like that packed into this update, be tuned for more!"}, {"post_id": 54316, "ts": "2026-08-25T08:22:20Z", "hours": 2.0378, "text": "Apollo Accord: Finishing up the main menu. I was working on the SaveManager system, and thought, Hey, why don’t I just finish up the options menu using this interface? , and voila , 2 hours later I finished up the partially done main menu. This update includes very minor changes to the game itself, only the main menu, so nothing to note of gameplay changes here… I feel like the main menu looks pretty good and functional, the only complaint I have right now is the visibly low-poly moon (the moon is NOT supposed to look like that lol) Also, I had to make a work-around for Unity’s default JSON utility not being compatible with Dictionary structures, made my own custom format instead which is MUCH more space efficient than JSON and suits my needs perfectly. Well, what happened to the game itself? Will continue working on the story and gameplay after this little tangent. P.S. Tysm for the super star!!"}, {"post_id": 46763, "ts": "2026-08-14T07:54:46Z", "hours": 2.1783, "text": "APOLLO ACCORD: Spherical enemies, In-Game UI Combat Primitive enemy combat implementation, but it works. Stylizing will come later. The sensitivity’s a bit low, so I will have to investigate that. In addition, the enemies are all capsules atm, which is 100% temporary ( obviously ). With this update I also started laying down the groundwork for the next step, which is a world space control panel for communicating with aliens. This is probably the most challenging part of this game, since I have very little experience in Unity’s Canvas system and I don’t like it too much."}, {"post_id": 45357, "ts": "2026-08-11T19:14:32Z", "hours": 3.0819, "text": "APOLLO ACCORD: Official website is now open! Minor update that isn’t directly linked to the game. Made a website for the page advertising its promised features. Also added a news section that will bring more frequent updates to the project, based on GitHub commits. Development Update Things are going smoothly. Enemy combat need some reworking, but other than that I still have plenty of time to finish this game."}, {"post_id": 42810, "ts": "2026-08-07T18:36:08Z", "hours": 1.0667, "text": "APOLLO ACCORD: Honing in Specific Parts Working on improving the movement, creating scripts for future gameplay and changing the lighting to feel less intrusive. Graphics Graphically, this update isn’t much different compared to the previous update. I added localized post process volumes that make each area look different and cleaner. In addition, this allowed me to make some areas brighter , letting me do cool scenes like screenshot #1 . (I wish they weren’t T-posing) Scripting and Behaviour In the real world, you’ll be fired from the military as soon as you point a rifle to an ally, in a safe place. This is why I implemented safe zones , where health recovers and the gun is holstered (pointed down in a M4’s case) so that they aren’t always pointing towards someone. Plus, I made use of the localized post process areas to only enable DOF in the command center, so the gun is out of focus. Take a look at screenshot #2 for reference. Next Up: Storytime I keep procastinating making the story, but I’ll do it this time. The foundations are all set and everything non-story related is pretty polished, such as scripts and movement. This is where I: Implement enemies (and create assets) so that they block the player’s path to the tech module. Implement a scene equipment interaction script/UI so the player can communicate to alien civilizations. Implement a tutorial system so the player doesn’t get lost. Phew! That’s quite a lot to finish. I guess I’ll start cracking at it then. Quote of the Update: Motivation is key. Enjoying what you’re doing is the best way to put in more effort and make a better product."}, {"post_id": 41242, "ts": "2026-08-05T10:16:08Z", "hours": 3.8, "text": "Apollo Accord: Refining graphics, improving gameplay, expanding the story. Minor upgrades that span across all aspects of the game Story Wrote the script up to the point where the player interacts with the communication system. Improved the fading in/out of dialouge by removing the hardcoded wait times and making it into a integrated animation system. I also added the ability for the dialouge system to know when the player has exited the speaker’s range of influence, and quits speaking after. Graphical changes I think I hit peak with this one. Performance-wise, it’s not much different compared to earlier builds and it looks much more colorful and interesting. The blue undertones give it a much more colder and space-like look. Next steps Working on the assets, fleshing out boxes (theres alot of them) and making the communication system. I hope to be able to integrate procedural generation when making aliens, making for a fun gameplay loop."}, {"post_id": 40421, "ts": "2026-08-03T22:17:57Z", "hours": 1.3, "text": "Apollo Accord Minor Update TL;DR: Minor updates that improve the UX Focused on cleaning up the lighting and improving legibility. Removed excessive effects like film grain and motion blur that reduces clarity and bogs down performance. Added stylized backgrounds to the quest HUD so there’s more contrast between the scene and text. Colors are matched to the 70’s - 80’s retro kind of color scheme (I think it was called supergraphics ) that I feel like represents the golden age of space. Again, HDR screenshots look overly bright, explaining the blinding white of the screenshot attached. Next Steps I am going to work more on the story next, up until the player interacts with the aliens. After that, I’m going to implement gameplay mechanics for communicating with external civilizations, which will mark a departure from the first person camera for a bit."}, {"post_id": 40267, "ts": "2026-08-03T18:00:05Z", "hours": 0.7333, "text": "Changing the project’s goals Just a ramble on how the project is gonna be made for the future. First, graphically I’m going to try to achieve a matte, clean look since I don’t have access to tools (cameras, money for 3d model websites, etc) that would let me get high quality, realistic textures/models in order to maintain a uniform look throughout the game. Going to focus more on shaders and world details, and also adding more handmade models to the game. Update on the project Other than that, I improved the stability of dialouges now, they trigger consistently and don’t get confused when the player enters multiple dialouge trigger spaces. PS Had to go through exam stuff and formatting my computer because Asahi Linux messed it up hard. Working on recovering my data and reinstalling Unity, etc."}, {"post_id": 4035, "ts": "2026-06-07T06:46:03Z", "hours": 2.1025, "text": "Apollo Accord Movement Update TL;DR Crouching works! Snappier movement Leaning in the works; conflicts with mouse yaw. Raycasted bullets Long Version So I was somehow able to get crouching working. It’s more of a semi-crouch , since I haven’t implemented the humanoid animator yet and it works by moving the camera down. (Yikes) In addition, I’m currently working on leaning, but it’s not really stable yet and conflicts with the mouse yaw. I think it’ll be fixed by the next devlog. ?? Last, I got a comment on the last devlog suggesting a raycast + physics based solution for bullets and implemented that."}, {"post_id": 3484, "ts": "2026-06-06T13:17:41Z", "hours": 1.0453, "text": "[RANT] Character Animation Woes I have ALOT to say about Unity’s Humanoid animation system. Like, why do I have to go through the Animator thing that has wayy too much parameters, that override each other and create a jumbled mess?? And WHY actually WHY??? does the character dip through the floor when it’s idle??? Who in the world decided that humanoids should ignore all boundaries and start dipping through the floor when there’s nothing playing??? Why is the default animation like that??? I literally have no idea. [^1] [^1]: I eventually got it working somehow. Really frustrating process. Edit: I just noticed that the video looks really bright. That’s because I’m recording in SDR while the game is in HDR. In reality, the game looks much darker."}, {"post_id": 3388, "ts": "2026-06-06T09:01:31Z", "hours": 0.6489, "text": "Very minor update. I changed the weapon script so it fires physical bullets instead of raycasting. Shooting moveable stuff like chairs now interact with the bullet upon collision, and also bump into other objects in the process which creates a domino effect. Very cool to see. In addition, I added a flash light to the underbarrel of the gun so players can navigate dark environments (which I predict will be a lot of)"}, {"post_id": 3370, "ts": "2026-06-06T08:10:22Z", "hours": 3.0089, "text": "Apollo Accord Minor Update Finally finished the (temporary) control center. Control center made! Performance & Color Improvements Also detailed some other parts of the ship The main idea was to have a bright, high-tech command & control center, so I took reference from a lot of NASA and Sci-Fi media and made this. It’s supposed to encompass the people inside it. In addition, the control center has chairs that are moveable. Since this is in space, I turned down the gravity quite a lot so now they float when you bump into them, and settle onto the ground after some time. Feels more like a physics simulator now. Next Steps I’m going to start working on the storytelling next. While development has definitely slowed over the past week, I hope to maintain this pace, and accumulate small improvements over time to make this into something I’m proud of."}, {"post_id": 2125, "ts": "2026-06-04T13:36:53Z", "hours": 1.5869, "text": "Apollo Accord Minor Update: Main Menu Changes Added Features Added Earth, Mars and Moon ( Luna ) to the main menu’s background. (With animated clouds and rotation!) Added a options menu that allows the player to change the planet in the background, or set it to random on start. Comments Just a minor update. More settings to tweak coming soon. Planned Features DLSS/FSR upscaler support Ability to change enemy difficulty Ability to change volume Probably delaying these features for more important stuff, like storybuilding, etc."}, {"post_id": 1479, "ts": "2026-06-03T15:01:54Z", "hours": 2.6597, "text": "Apollo Accord Update #5: Curing Loneliness The Premise & Changes Decided I was lonely so I added some background characters and a “colleague” character to spice things up a bit. While not fully AI, these guys can say stuff and makes the atmosphere a bit more grounded. Added dudes talking military lingo Changed up the environment lighting a bit more so it looks more like a emergency and not just a house on fire. Assisted the player a bit by shining spotlights onto path signs. The guys also act as blockades to assist player navigation. Next up: More environment building Expand the right side of the base a bit more Clean up messy geometry I STILL HAVEN’T WORKED ON THE MAIN MENU Detail the control center. Script systems for campaign flow & to make it a true RPG, a inventory system Quote of the Update Animating these guys is DEFINITELY something I am NOT looking forward to."}, {"post_id": 1348, "ts": "2026-06-03T09:32:22Z", "hours": 5.0986, "text": "Apollo Accord Minor Update: HDRP Changes Finished the dialouge thingy Changed rendering pipeline from URP to HDRP (mostly for volumetric effects) It was a pretty daunting task, and as you can see from the time I spent just changing the rendering pipeline, was painstakingly buggy. Major Issues Solved Exposure being weird, everything was either white or black. Materials not being ported from URP to HDRP - I had to create them from scratch . Artifacting when backing lighting. The Earth disappearing?!?!?! Emissions and lighting combined made things really complicated. To make it easier to maintain, I decided to only use material emissions for baked environment lights and actual lights for dynamic lights. Quote of the Update It’s really hard to debug visually"}, {"post_id": 1227, "ts": "2026-06-03T02:36:24Z", "hours": 3.2822, "text": "Apollo Accord Update 4 What’s New Lots of animations for jumping and shooting, all smoothly transitioning between movement animations. More work on the environment. Showcasing the power of baked lighting. Optimizations to improve performance. ~150k vertices in total, around 200 FPS on my Mac rn. Next Steps Expanding and detailing environment (mostly blocking, textures later) Finishing up the main menu Working on game characters & HUD Animating the character model DLSS? Maybe? Quote of the Update Don’t want to get close to C#"}, {"post_id": 783, "ts": "2026-06-02T13:27:05Z", "hours": 1.0147, "text": "Let There Be Light! Long Version Small update onto the development of Apollo Accord. Implemented baked lighting to optmize performance early on. Had trouble deciding which light type to use (directional, spot, point, area) but ultimately I decided on a option E - emissive materials . Basically, emissive materials make the material itself a light. The downside is that it’s only baked, so non-static objects, like the gun and player, isn’t affected by it. So in short, it makes non-static objects unlit. To resolve this, I had to use Adaptive Probe Volumes , which are basically version 2 of Light Probes . These take data from baked lights to approximately light moving objects. In combination with reflection probes, these make great visuals - or at least visuals better than my last devlog, w/o sacrificing performance. TL;DR: Baked lighting beautiful computer go brrr"}, {"post_id": 756, "ts": "2026-06-02T12:04:16Z", "hours": 3.9294, "text": "Apollo Accord Update 3 What’s New Major refinements to UI. Found a way to combine in-world text (weapon ammo, etc) and on-screen text. Animations for walking, running and idling Wrote scripts for core gameplay systems, like weapon switching and character communication (putting alot of emphasis on the RPG mechanics this time around) Next Steps Incremental changes over time for the shooting system. Getting started on the environment. Adding a core story. Finishing the UI/Load+Save systems Thoughts I’m trying to get things right the first time, so I’m putting a lot more work into my initial “draft” for the game. I’ll work on hud legibility, procedural recoil, and more afterwards, once the core gameplay mechanics are pretty tidy. Quote of the Update I really don’t like C#"}, {"post_id": 92, "ts": "2026-05-31T18:01:51Z", "hours": 1.4375, "text": "Apollo Accord: Assets & Envisioning Roadmap Summary Started moving forward into the start screen. Thinking of a soldier on the ground w/ a M4 to their left, and then being helped up to fight the offensive. During that, the player listens to the main character speaking about the past. Then, FF a few days and the player is promoted to commander, where then the main gameplay starts. New Changes Added spacesuit model (player) Added M4A1 model Scripted & animated scene Performance improvements here and there (player settings, using Vulkan, etc.) Early HDR Support"}, {"post_id": 62, "ts": "2026-05-31T15:36:11Z", "hours": 1.3606, "text": "Space is calling! Started work on Apollo Accord , a game where you command Earth and discover new aliens. You can trade, fight or form alliances with aliens, and lead Earth to become a galactic empire. What I did today Created the banner and logotype for promotion purposes. Finished a temporary main menu with a cool little animation. Made a rather detailed README.md"}]...
|
Title: Apollo Accord by @alien | Stardance
Devlog Title: Apollo Accord by @alien | Stardance
Devlogs:
Space is calling! Started work on Apollo Accord , a game where you command Earth and discover new aliens. You can trade, fight or form alliances with aliens, and lead Earth to become a galactic empire. What I did today Created the banner and logotype for promotion purposes. Finished a temporary main menu with a cool little animation. Made a rather detailed README.md
Apollo Accord: Assets & Envisioning Roadmap Summary Started moving forward into the start screen. Thinking of a soldier on the ground w/ a M4 to their left, and then being helped up to fight the offensive. During that, the player listens to the main character speaking about the past. Then, FF a few days and the player is promoted to commander, where then the main gameplay starts. New Changes Added spacesuit model (player) Added M4A1 model Scripted & animated scene Performance improvements here and there (player settings, using Vulkan, etc.) Early HDR Support
Apollo Accord Update 3 What’s New Major refinements to UI. Found a way to combine in-world text (weapon ammo, etc) and on-screen text. Animations for walking, running and idling Wrote scripts for core gameplay systems, like weapon switching and character communication (putting alot of emphasis on the RPG mechanics this time around) Next Steps Incremental changes over time for the shooting system. Getting started on the environment. Adding a core story. Finishing the UI/Load+Save systems Thoughts I’m trying to get things right the first time, so I’m putting a lot more work into my initial “draft” for the game. I’ll work on hud legibility, procedural recoil, and more afterwards, once the core gameplay mechanics are pretty tidy. Quote of the Update I really don’t like C#
Let There Be Light! Long Version Small update onto the development of Apollo Accord. Implemented baked lighting to optmize performance early on. Had trouble deciding which light type to use (directional, spot, point, area) but ultimately I decided on a option E - emissive materials . Basically, emissive materials make the material itself a light. The downside is that it’s only baked, so non-static objects, like the gun and player, isn’t affected by it. So in short, it makes non-static objects unlit. To resolve this, I had to use Adaptive Probe Volumes , which are basically version 2 of Light Probes . These take data from baked lights to approximately light moving objects. In combination with reflection probes, these make great visuals - or at least visuals better than my last devlog, w/o sacrificing performance. TL;DR: Baked lighting beautiful computer go brrr
Apollo Accord Update 4 What’s New Lots of animations for jumping and shooting, all smoothly transitioning between movement animations. More work on the environment. Showcasing the power of baked lighting. Optimizations to improve performance. ~150k vertices in total, around 200 FPS on my Mac rn. Next Steps Expanding and detailing environment (mostly blocking, textures later) Finishing up the main menu Working on game characters & HUD Animating the character model DLSS? Maybe? Quote of the Update Don’t want to get close to C#
Apollo Accord Minor Update: HDRP Changes Finished the dialouge thingy Changed rendering pipeline from URP to HDRP (mostly for volumetric effects) It was a pretty daunting task, and as you can see from the time I spent just changing the rendering pipeline, was painstakingly buggy. Major Issues Solved Exposure being weird, everything was either white or black. Materials not being ported from URP to HDRP - I had to create them from scratch . Artifacting when backing lighting. The Earth disappearing?!?!?! Emissions and lighting combined made things really complicated. To make it easier to maintain, I decided to only use material emissions for baked environment lights and actual lights for dynamic lights. Quote of the Update It’s really hard to debug visually
Apollo Accord Update #5: Curing Loneliness The Premise & Changes Decided I was lonely so I added some background characters and a “colleague” character to spice things up a bit. While not fully AI, these guys can say stuff and makes the atmosphere a bit more grounded. Added dudes talking military lingo Changed up the environment lighting a bit more so it looks more like a emergency and not just a house on fire. Assisted the player a bit by shining spotlights onto path signs. The guys also act as blockades to assist player navigation. Next up: More environment building Expand the right side of the base a bit more Clean up messy geometry I STILL HAVEN’T WORKED ON THE MAIN MENU Detail the control center. Script systems for campaign flow & to make it a true RPG, a inventory system Quote of the Update Animating these guys is DEFINITELY something I am NOT looking forward to.
Apollo Accord Minor Update: Main Menu Changes Added Features Added Earth, Mars and Moon ( Luna ) to the main menu’s background. (With animated clouds and rotation!) Added a options menu that allows the player to change the planet in the background, or set it to random on start. Comments Just a minor update. More settings to tweak coming soon. Planned Features DLSS/FSR upscaler support Ability to change enemy difficulty Ability to change volume Probably delaying these features for more important stuff, like storybuilding, etc.
Apollo Accord Minor Update Finally finished the (temporary) control center. Control center made! Performance & Color Improvements Also detailed some other parts of the ship The main idea was to have a bright, high-tech command & control center, so I took reference from a lot of NASA and Sci-Fi media and made this. It’s supposed to encompass the people inside it. In addition, the control center has chairs that are moveable. Since this is in space, I turned down the gravity quite a lot so now they float when you bump into them, and settle onto the ground after some time. Feels more like a physics simulator now. Next Steps I’m going to start working on the storytelling next. While development has definitely slowed over the past week, I hope to maintain this pace, and accumulate small improvements over time to make this into something I’m proud of.
Very minor update. I changed the weapon script so it fires physical bullets instead of raycasting. Shooting moveable stuff like chairs now interact with the bullet upon collision, and also bump into other objects in the process which creates a domino effect. Very cool to see. In addition, I added a flash light to the underbarrel of the gun so players can navigate dark environments (which I predict will be a lot of)
[RANT] Character Animation Woes I have ALOT to say about Unity’s Humanoid animation system. Like, why do I have to go through the Animator thing that has wayy too much parameters, that override each other and create a jumbled mess?? And WHY actually WHY??? does the character dip through the floor when it’s idle??? Who in the world decided that humanoids should ignore all boundaries and start dipping through the floor when there’s nothing playing??? Why is the default animation like that??? I literally have no idea. [^1] [^1]: I eventually got it working somehow. Really frustrating process. Edit: I just noticed that the video looks really bright. That’s because I’m recording in SDR while the game is in HDR. In reality, the game looks much darker.
Apollo Accord Movement Update TL;DR Crouching works! Snappier movement Leaning in the works; conflicts with mouse yaw. Raycasted bullets Long Version So I was somehow able to get crouching working. It’s more of a semi-crouch , since I haven’t implemented the humanoid animator yet and it works by moving the camera down. (Yikes) In addition, I’m currently working on leaning, but it’s not really stable yet and conflicts with the mouse yaw. I think it’ll be fixed by the next devlog. ?? Last, I got a comment on the last devlog suggesting a raycast + physics based solution for bullets and implemented that.
Changing the project’s goals Just a ramble on how the project is gonna be made for the future. First, graphically I’m going to try to achieve a matte, clean look since I don’t have access to tools (cameras, money for 3d model websites, etc) that would let me get high quality, realistic textures/models in order to maintain a uniform look throughout the game. Going to focus more on shaders and world details, and also adding more handmade models to the game. Update on the project Other than that, I improved the stability of dialouges now, they trigger consistently and don’t get confused when the player enters multiple dialouge trigger spaces. PS Had to go through exam stuff and formatting my computer because Asahi Linux messed it up hard. Working on recovering my data and reinstalling Unity, etc.
Apollo Accord Minor Update TL;DR: Minor updates that improve the UX Focused on cleaning up the lighting and improving legibility. Removed excessive effects like film grain and motion blur that reduces clarity and bogs down performance. Added stylized backgrounds to the quest HUD so there’s more contrast between the scene and text. Colors are matched to the 70’s - 80’s retro kind of color scheme (I think it was called supergraphics ) that I feel like represents the golden age of space. Again, HDR screenshots look overly bright, explaining the blinding white of the screenshot attached. Next Steps I am going to work more on the story next, up until the player interacts with the aliens. After that, I’m going to implement gameplay mechanics for communicating with external civilizations, which will mark a departure from the first person camera for a bit.
Apollo Accord: Refining graphics, improving gameplay, expanding the story. Minor upgrades that span across all aspects of the game Story Wrote the script up to the point where the player interacts with the communication system. Improved the fading in/out of dialouge by removing the hardcoded wait times and making it into a integrated animation system. I also added the ability for the dialouge system to know when the player has exited the speaker’s range of influence, and quits speaking after. Graphical changes I think I hit peak with this one. Performance-wise, it’s not much different compared to earlier builds and it looks much more colorful and interesting. The blue undertones give it a much more colder and space-like look. Next steps Working on the assets, fleshing out boxes (theres alot of them) and making the communication system. I hope to be able to integrate procedural generation when making aliens, making for a fun gameplay loop.
APOLLO ACCORD: Honing in Specific Parts Working on improving the movement, creating scripts for future gameplay and changing the lighting to feel less intrusive. Graphics Graphically, this update isn’t much different compared to the previous update. I added localized post process volumes that make each area look different and cleaner. In addition, this allowed me to make some areas brighter , letting me do cool scenes like screenshot #1 . (I wish they weren’t T-posing) Scripting and Behaviour In the real world, you’ll be fired from the military as soon as you point a rifle to an ally, in a safe place. This is why I implemented safe zones , where health recovers and the gun is holstered (pointed down in a M4’s case) so that they aren’t always pointing towards someone. Plus, I made use of the localized post process areas to only enable DOF in the command center, so the gun is out of focus. Take a look at screenshot #2 for reference. Next Up: Storytime I keep procastinating making the story, but I’ll do it this time. The foundations are all set and everything non-story related is pretty polished, such as scripts and movement. This is where I: Implement enemies (and create assets) so that they block the player’s path to the tech module. Implement a scene equipment interaction script/UI so the player can communicate to alien civilizations. Implement a tutorial system so the player doesn’t get lost. Phew! That’s quite a lot to finish. I guess I’ll start cracking at it then. Quote of the Update: Motivation is key. Enjoying what you’re doing is the best way to put in more effort and make a better product.
APOLLO ACCORD: Official website is now open! Minor update that isn’t directly linked to the game. Made a website for the page advertising its promised features. Also added a news section that will bring more frequent updates to the project, based on GitHub commits. Development Update Things are going smoothly. Enemy combat need some reworking, but other than that I still have plenty of time to finish this game.
APOLLO ACCORD: Spherical enemies, In-Game UI Combat Primitive enemy combat implementation, but it works. Stylizing will come later. The sensitivity’s a bit low, so I will have to investigate that. In addition, the enemies are all capsules atm, which is 100% temporary ( obviously ). With this update I also started laying down the groundwork for the next step, which is a world space control panel for communicating with aliens. This is probably the most challenging part of this game, since I have very little experience in Unity’s Canvas system and I don’t like it too much.
Apollo Accord: Finishing up the main menu. I was working on the SaveManager system, and thought, Hey, why don’t I just finish up the options menu using this interface? , and voila , 2 hours later I finished up the partially done main menu. This update includes very minor changes to the game itself, only the main menu, so nothing to note of gameplay changes here… I feel like the main menu looks pretty good and functional, the only complaint I have right now is the visibly low-poly moon (the moon is NOT supposed to look like that lol) Also, I had to make a work-around for Unity’s default JSON utility not being compatible with Dictionary structures, made my own custom format instead which is MUCH more space efficient than JSON and suits my needs perfectly. Well, what happened to the game itself? Will continue working on the story and gameplay after this little tangent. P.S. Tysm for the super star!!
Apollo Accord: Gameplay and story updates, finally! After multiple delays, I started working on expanding the next chapter of the story. Story areas! First, I made the mess hall area where the player goes to support their teammates and fight the boss. I’ve started noticing the similarities between my combat system and the combat systems of arena style shooters, so I intentionally made this area larger so the player has a lot of space to move around (foreshadowing) I’ve finished the interaction system where the player can interact with in-game objects to trigger story changes, etc. Nothing too special to see here. Major movement updates! I made a GRAPPLING SYSTEM . It works by pressing right mouse button, and a circle shows up at where the target is. Simple, but it allows for more dynamic combat, and lets players take advantage of height. So, simple stuff! I have a lot of smaller updates like showing damage dealt when shooting enemies and stuff like that packed into this update, be tuned for more!
Lights Out. Major Doom 3 vibes happening Explore the Unknown, and sometimes, terrifying. Decided to lean in a bit more on the “explore” factor and made many rooms darker overall. The capsules you see here are the enemies you fight, multiplied by the difficulty set in the settings. I’m thinking of adding red, glowing eyes or something to make it a bit scarier. I plan to not lean too much on this aspect, though. This is only for the first chapter of the story. PSA on the lighting. The reflections on the gun is a bit off, I know, I’m fixing it right now. Anyway, that’s the update for today! Going to work on some more story content soon.
Build Update. Worked on building releases for Linux, Mac, Windows and web (html). Not much on the technical side either, just baking light maps and polishing up some stuff in the game. This is because I have some priorities that are higher than Stardance, unfortunately, and I think I won’t be able to finish this project to the level I was expecting. I appreciate your understanding.
Ships:
I built a shooter-RPG ish game where you fight invading aliens that are seeking to take over your ship. As the captain, you must fight your way against the overpowering enemies, and send clear signals of surrender before your entire ship is taken over. I wanted to finish this project up until the player can communicate with other alien civilizations other than the invading one, but due to time constraints and my busier than ever schedule I won’t be able to work on this project much more, at least for the time being. I’ll be shipping this project and packing up. You can try the project by downloading the appropriate zip file for your system. Linux and the web package is still unverified, so potential players are advised to stick to the MacOS and Windows releases. Thank you for your understanding....
|
1793148599.7140005
|
1793234999.7140005
|
|
17291
|
an EPIC Light Sail Simulation by @SpaceEvee | Star an EPIC Light Sail Simulation by @SpaceEvee | Stardance...
|
SpaceEvee
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T08:42:06Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is the first ship of an interstellar light sail simulation for a research paper I am working on. The simulation models an idealised Gaussian laser beam with a fixed nominal propagation direction along +Z. The beam settings include peak intensity (I_0), waist (w_0), wavelength (\\lambda), and lateral beam-centre offsets. The sail model estimates radiation-pressure force and torque over the discretised surface, then advances translational and rotational state. The workbench records time histories so configurations can be inspected and compared. A local radiative-equilibrium calculation estimates surface temperature from absorbed illumination and the configured emissivity. Few Notes: The simulation is not very optimised so it may take some time to function on lower end PCs I have added a video performing some functions of the software in the github ReadMe. (As in the ship of my last project, many people told me to have a video as they didn’t want to download the package itself.) If there the runner throws an exception or error pop up at the end, i.e. after running the program, the data can still be accessed (plots, .json, .csv, etc.)", "repo": "https://github.com/Evyvaan-Space-Lover/Nyx", "demo": "https://github.com/Evyvaan-Space-Lover/Nyx/releases/tag/v1.0"}]...
|
[{"post_id": 79732, "ts": "202 [{"post_id": 79732, "ts": "2026-10-15T07:54:51Z", "hours": 0.3886, "text": "Mini Devlog :yoooo-chat-whats-up–are-yall-ready-for-another-weekly-journal–i-hope-so-kitty-dance-mb-sorry-for-b: I completed the parameter sweep and it works (still pretty glitchy tho) and added a 3d visualisation section to the program (prolly the most visually appealing thing ) GONNA SHIP NOW YAY"}, {"post_id": 79555, "ts": "2026-10-14T16:10:53Z", "hours": 9.5667, "text": "NYX DEVLOG MUHEHEHEHHE (NO IDEA BOUT THE INDEX) sorry for being dead for so long. i was busy with irl stuff The Simulator is ALMOST done yay I made the GUI for yall (the program is not user friendly ) and now the simulated data can FINALLY be saved into .json and .csv and some boring physics shit heres the run down: Physics World frame inertia calculation. i CORRECTED THE INERTIA TENSOR TRANSFORMATION so that angular momentum and rotational dynamics use the inertia tensor in the world frame Rotational Dynamics used the rigid body rotational equation normalised the intermediate RK4 orientation states (so yeah lots of attitude control yk) paraboloid COM and hemisphere COM were straight wrong as i found out so they are fixed now respectively GUI added a workbench/gui for the whole program (I HATE this) and in the repo i added the Read Me after two gazillion years ill say Nyx (the simulator) is done and i can ship it FINALLY after so long and start working on the paper FINALLY. btw the BEANS SHALL PREVAIL some things the 3d geometry visualization doesnt work with the gui stack so ill have to fix that and the parameter sweep doesnt work any bit. these things ill have to do before the first ship and besides ill say the same is pretty good and completed"}, {"post_id": 59110, "ts": "2026-08-31T18:55:55Z", "hours": 7.2819, "text": "DEVLOG 6 (and seven soon) Its been soooooooooooooooo long since my last devlog. I had my exams and well I couldn’t much and didn’t write my devlog last time. Oh you don’t know what Nyx? It is a light sail simulation I am working on for a paper I am writing (btw there are emojis now so cool stuff got added when I was gone) NEW ADDITIONS: Introduce a materials package (Material dataclass + presets: Graphene, Aluminium, SiliconCarbide) and an analysis package with plotting helpers and an Experiment helper. Update SimMain to accept a material for each sail type, pull reflectivity/absorptivity from the material, and record max/average temperature history. Fix numeric/geometry issues: correct sphere inertia, improve normal/rotation math for sphere and paraboloid, and ensure positions use rotated local coordinates. Add multiple debug/test scripts and enable analysis plotting at the end of simLoop to visualize force, position, velocity, acceleration, angular velocity and temperature histories. I did NOT copy-paste the commit here trust. If you think I did, you're wrong Well, thats it for now, Ill put more effort in the next devlog See YALL soon (no one cares, but I care )"}, {"post_id": 28180, "ts": "2026-07-14T09:47:43Z", "hours": 8.4836, "text": "DEVLOG - smth im bad at remembering numbers and its been sometime too WHATS UP LOVELY PEOPLE Another Nyx devlog it is! You dont know what Nyx is? Its my light sail simulation for a paper im working on! I did some code refining and yeah lots of boring stuff. Used the Stefan–Boltzmann equilibrium approximation to estimate local surface temperature. Added a temperature mapping system based on absorbed laser intensity (Absolutely obsolete btw ): ) Fixed the paraboloid sign issue so it curved in the intended direction. -Also tried using other libraries for rendering, but MatPlotLib is the best option right now other miscellaneous stuff I cant remember honestly (Next devlog will be more detailed trust)"}, {"post_id": 16406, "ts": "2026-06-26T18:05:21Z", "hours": 12.8053, "text": "Devlog - 4 YO PEOPLE, i am BACK (ts so cringe. literally nobody cares). This devlog is about how almost lost my minds migrating my simulation’s rotation calculations into Quaternions , integrating RK4 and as always solving bugs, because Nyx is filled with bugs (Oh, you dont know what Nyx is? well it is my passive beam riding light sail simulation, for a research paper im working on) Euler Angles Started Tweaking Ok so before this, Nyx used normal Euler angle rotations using thetaX and thetaY for orientation. At first it worked fine, but after longer simulations stuff started tweaking hard The sphere and paraboloid would randomly start flattening into weird pancake/disc things (which i lowkey think might be cuz matplotlib library hates me idk) , rotations started looking cursed, and the orientation slowly became unstable over time. At first I thought matplotlib was just being goofy again, but nah, the actual orientation system itself was kinda cooked (most likely) . The problem was that Euler angles are not really built for stable continuous 3D rotational dynamics. Rotations started interfering with each other and the geometry would slowly drift into nonphysical states during longer simulations.Basically Nyx had reached the point where the old orientation system just wasn’t enough anymore :(. Quaternion Migration (The Pain of ’26 ) So yeah, this devlog was basically the “quaternion suffering” update I replaced the entire orientation system with quaternions. Instead of storing orientation as separate thetaX and thetaY values, Nyx now stores orientation as a quaternion state directly integrated through RK4.This was honestly one of the biggest upgrades to the simulator so far because now orientation itself is physically simulated instead of just being fake angle accumulation and stuff. The migration was WAY more painful than expected At first literally everything exploded: infinitiesNaNsbroken, normals-cursed, and sphere geometry intensity overflows. At one point the simulator straight up started generating inf values and the sphere looked like it got compressed by a hydraulic press .The biggest issue ended up being invalid normal vectors inside the sphere mesh generation. A single broken normal could completely destroy the intensity calculations and then infect the entire simulation state with NaNs.After fixing all that, Nyx now has stable quaternion orientation. quaternion vector rotation, quaternion RK4 integration, much more stable rotational dynamics, no more gimbal-lock-type weird ahh stuff . This was really hard for me to add lol now what ? so thats what took more than 10 hours. I think my boi Nyx is doing pretty good and will help me in great magnitude for my research paper. For now at least, i wanna make a sort of UI and replace ‘matplotlib’ with smth better cuz’ I am lowkey fed up. I would also like to add a feature of mass data collection, so that there is much data to study. – that’s it for me today, I hope YOU have a great day! (BTW, i have no idea why the markdown on this devlog is so weird, i can not seem to fix it lowkey)"}, {"post_id": 13176, "ts": "2026-06-21T15:45:41Z", "hours": 4.1456, "text": "Devlog 3 - NYX HAS FRIED MY BRAN btw, if you havent seen my older devlogs, you are legally obligated to do so, and if not done, the police shall come for you so, after my last devlog, added a new sail geometry, fixed A LOT OF BUGS and made the code efficient (not really) and improved the physics calculation, to a more complex force calculation engine (its not an engine, idk why i said that). also, i realized paraboloids are pretty niffty as with some dingle dangle, we can have a circular sail without even making a new class! Features i added Paraboloid geometry, cleaned up the radiation pressure code, quivers for visualization and better force equation. the force equation is now F = fmag * (2*cosTheta*normal - beamDih) (this is embarrassing, but in my code, the beam direction variable is beamDih ) Whats Next? wanna improve the visualization local force vector rendering time evolution moving sail oscillation simulation ability to upload a .obj file as a sail (The image below is when i broke the code. i accidentally wrote =+ instead of += )"}, {"post_id": 10036, "ts": "2026-06-16T16:26:48Z", "hours": 3.6364, "text": "Nyx Devlog #2: The Curved Sail Arc Status: Nyx V2 Complete Mood: Sleep-deprived aerospace engineer Bug Count: We don’t talk about the 90° bug. So… what happened? This dev cycle started with a simple goal: “Let’s add some tilt to the sails.” Several hours later, we somehow ended up with a computational beam-riding lightsail simulator. Oops. Gaussian Beams Are Cool Nyx uses a Gaussian beam to model the laser intensity distribution. def gaussian(r): return I0 * np.exp(-2 * r 2 / w0 2) Basically: The beam is strongest at the center. The farther away you go, the weaker it gets. Nature decided lasers should have exponential decay because apparently linear wasn’t dramatic enough. Tilting the Sails The sails can now rotate about the X and Y axes. def rotateX(vector, angle): x, y, z = vector return np.array([ x, y*np.cos(angle) - z*np.sin(angle), y*np.sin(angle) + z*np.cos(angle) ]) def rotateY(vector, angle): x, y, z = vector return np.array([ x*np.cos(angle) + z*np.sin(angle), y, -x*np.sin(angle) + z*np.cos(angle) ]) This worked surprisingly well. Unlike the visualization. Introducing: The Hemisphere™ Rectangle sails were getting lonely. So Nyx gained a new geometry: class SphereLightSail(): (Yes, it’s technically a hemisphere. Naming things is hard.) The hemisphere is discretized into tiny patches that each experience radiation pressure from the laser beam. Science! Radiation Pressure Time Every tiny patch gets hit by photons. The force magnitude is calculated using: fmag = (2 * I / c) * (cosTheta**2) * dA where: I is beam intensity, c is the speed of light, cosTheta accounts for sail orientation, dA is the patch area. Translation: Tiny packets of light aggressively boop the sail. Torque Has Entered The Chat Turns out forces acting away from the center like to cause problems. tau = np.cross(position, F) Nyx now computes total torque acting on the sail. This means we can begin asking questions like: Which geometries are stable? instead of: Why is Matplotlib gaslighting me? Visualization! Nyx can now visualize sail geometries using 3D plots. scatter = ax.scatter( self.xPoints, self.yPoints, self.zPoints, c=self.intensities, cmap=‘plasma’, s=30 ) With a colorbar: fig.colorbar( scatter, ax=ax, label=‘Beam Intensity (W/m^2)’ ) And even a force vector: ax.quiver( 0, 0, 0, Force[0], Force[1], Force[2], color=‘red’, length=2, normalize=True ) It looks surprisingly professional. Until you rotate it to 90°. The Great 90° Incident At one point, Nyx decided that rotating things by 90° was optional. Several debugging sessions later: “It’s probably fine.” Nyx is now operating under the internationally recognized engineering principle of: If the physics works, Future Me can fix the plotting (ik guys, ELITE mindset). What Nyx V2 Can Do Nyx V2 ├── Gaussian beam model ✓ ├── Rectangle sail geometry ✓ ├── Hemisphere sail geometry ✓ ├── Sail tilting ✓ ├── Radiation pressure forces ✓ ├── Torque calculations ✓ ├── Intensity heatmaps ✓ └── Force vector visualization ✓ What’s Next? We’re moving beyond random shapes. Future geometries need to answer one question: Could someone actually use this as a lightsail? Possible candidates: □ Paraboloids □ Hyperboloids □ Other beam-riding geometries from literature Party hats are currently under review. Final Thoughts Nyx V2 was the phase where the project stopped feeling like a collection of scripts and started feeling like an actual research tool. Also, I now know far more about Matplotlib’s quirks than any human"}, {"post_id": 7524, "ts": "2026-06-12T15:48:47Z", "hours": 2.8322, "text": "#Devlog 001 — The Beginning of Nyx (I call the light sails Nyx, because why not) Started building the computational simulator for my project on passive beam-riding stability of interstellar lightsails. What I implemented: -A Gaussian laser beam model to simulate how beam intensity changes from the center outward. -A rectangular lightsail simulator divided into tiny surface patches. -Calculations for net force and net torque acting on the sail. -Support for changing the sail’s position relative to the beam. -Support for x-axis and y-axis tilts, allowing the sail to change orientation. -Validation tests showing that centered sails produce near-zero torque and that results converge with increasing resolution. -The beginnings of a 3D geometry engine, including a hemispherical lightsail generator using spherical coordinates. -3D visualization of the hemispherical sail to verify that the geometry was generated correctly. (Am currently working on the the force and torque calculation for the spherical sails) (The test cases are for tilted says, the first one is not tilted at all and the last one is tilted 90 degrees)"}]...
|
Title: an EPIC Light Sail Simulation by @SpaceEvee Title: an EPIC Light Sail Simulation by @SpaceEvee | Stardance
Devlogs:
#Devlog 001 — The Beginning of Nyx (I call the light sails Nyx, because why not) Started building the computational simulator for my project on passive beam-riding stability of interstellar lightsails. What I implemented: -A Gaussian laser beam model to simulate how beam intensity changes from the center outward. -A rectangular lightsail simulator divided into tiny surface patches. -Calculations for net force and net torque acting on the sail. -Support for changing the sail’s position relative to the beam. -Support for x-axis and y-axis tilts, allowing the sail to change orientation. -Validation tests showing that centered sails produce near-zero torque and that results converge with increasing resolution. -The beginnings of a 3D geometry engine, including a hemispherical lightsail generator using spherical coordinates. -3D visualization of the hemispherical sail to verify that the geometry was generated correctly. (Am currently working on the the force and torque calculation for the spherical sails) (The test cases are for tilted says, the first one is not tilted at all and the last one is tilted 90 degrees)
Nyx Devlog #2: The Curved Sail Arc Status: Nyx V2 Complete Mood: Sleep-deprived aerospace engineer Bug Count: We don’t talk about the 90° bug. So… what happened? This dev cycle started with a simple goal: “Let’s add some tilt to the sails.” Several hours later, we somehow ended up with a computational beam-riding lightsail simulator. Oops. Gaussian Beams Are Cool Nyx uses a Gaussian beam to model the laser intensity distribution. def gaussian(r): return I0 * np.exp(-2 * r 2 / w0 2) Basically: The beam is strongest at the center. The farther away you go, the weaker it gets. Nature decided lasers should have exponential decay because apparently linear wasn’t dramatic enough. Tilting the Sails The sails can now rotate about the X and Y axes. def rotateX(vector, angle): x, y, z = vector return np.array([ x, y*np.cos(angle) - z*np.sin(angle), y*np.sin(angle) + z*np.cos(angle) ]) def rotateY(vector, angle): x, y, z = vector return np.array([ x*np.cos(angle) + z*np.sin(angle), y, -x*np.sin(angle) + z*np.cos(angle) ]) This worked surprisingly well. Unlike the visualization. Introducing: The Hemisphere™ Rectangle sails were getting lonely. So Nyx gained a new geometry: class SphereLightSail(): (Yes, it’s technically a hemisphere. Naming things is hard.) The hemisphere is discretized into tiny patches that each experience radiation pressure from the laser beam. Science! Radiation Pressure Time Every tiny patch gets hit by photons. The force magnitude is calculated using: fmag = (2 * I / c) * (cosTheta**2) * dA where: I is beam intensity, c is the speed of light, cosTheta accounts for sail orientation, dA is the patch area. Translation: Tiny packets of light aggressively boop the sail. Torque Has Entered The Chat Turns out forces acting away from the center like to cause problems. tau = np.cross(position, F) Nyx now computes total torque acting on the sail. This means we can begin asking questions like: Which geometries are stable? instead of: Why is Matplotlib gaslighting me? Visualization! Nyx can now visualize sail geometries using 3D plots. scatter = ax.scatter( self.xPoints, self.yPoints, self.zPoints, c=self.intensities, cmap=‘plasma’, s=30 ) With a colorbar: fig.colorbar( scatter, ax=ax, label=‘Beam Intensity (W/m^2)’ ) And even a force vector: ax.quiver( 0, 0, 0, Force[0], Force[1], Force[2], color=‘red’, length=2, normalize=True ) It looks surprisingly professional. Until you rotate it to 90°. The Great 90° Incident At one point, Nyx decided that rotating things by 90° was optional. Several debugging sessions later: “It’s probably fine.” Nyx is now operating under the internationally recognized engineering principle of: If the physics works, Future Me can fix the plotting (ik guys, ELITE mindset). What Nyx V2 Can Do Nyx V2 ├── Gaussian beam model ✓ ├── Rectangle sail geometry ✓ ├── Hemisphere sail geometry ✓ ├── Sail tilting ✓ ├── Radiation pressure forces ✓ ├── Torque calculations ✓ ├── Intensity heatmaps ✓ └── Force vector visualization ✓ What’s Next? We’re moving beyond random shapes. Future geometries need to answer one question: Could someone actually use this as a lightsail? Possible candidates: □ Paraboloids □ Hyperboloids □ Other beam-riding geometries from literature Party hats are currently under review. Final Thoughts Nyx V2 was the phase where the project stopped feeling like a collection of scripts and started feeling like an actual research tool. Also, I now know far more about Matplotlib’s quirks than any human
Devlog 3 - NYX HAS FRIED MY BRAN btw, if you havent seen my older devlogs, you are legally obligated to do so, and if not done, the police shall come for you so, after my last devlog, added a new sail geometry, fixed A LOT OF BUGS and made the code efficient (not really) and improved the physics calculation, to a more complex force calculation engine (its not an engine, idk why i said that). also, i realized paraboloids are pretty niffty as with some dingle dangle, we can have a circular sail without even making a new class! Features i added Paraboloid geometry, cleaned up the radiation pressure code, quivers for visualization and better force equation. the force equation is now F = fmag * (2*cosTheta*normal - beamDih) (this is embarrassing, but in my code, the beam direction variable is beamDih ) Whats Next? wanna improve the visualization local force vector rendering time evolution moving sail oscillation simulation ability to upload a .obj file as a sail (The image below is when i broke the code. i accidentally wrote =+ instead of += )
Devlog - 4 YO PEOPLE, i am BACK (ts so cringe. literally nobody cares). This devlog is about how almost lost my minds migrating my simulation’s rotation calculations into Quaternions , integrating RK4 and as always solving bugs, because Nyx is filled with bugs (Oh, you dont know what Nyx is? well it is my passive beam riding light sail simulation, for a research paper im working on) Euler Angles Started Tweaking Ok so before this, Nyx used normal Euler angle rotations using thetaX and thetaY for orientation. At first it worked fine, but after longer simulations stuff started tweaking hard The sphere and paraboloid would randomly start flattening into weird pancake/disc things (which i lowkey think might be cuz matplotlib library hates me idk) , rotations started looking cursed, and the orientation slowly became unstable over time. At first I thought matplotlib was just being goofy again, but nah, the actual orientation system itself was kinda cooked (most likely) . The problem was that Euler angles are not really built for stable continuous 3D rotational dynamics. Rotations started interfering with each other and the geometry would slowly drift into nonphysical states during longer simulations.Basically Nyx had reached the point where the old orientation system just wasn’t enough anymore :(. Quaternion Migration (The Pain of ’26 ) So yeah, this devlog was basically the “quaternion suffering” update I replaced the entire orientation system with quaternions. Instead of storing orientation as separate thetaX and thetaY values, Nyx now stores orientation as a quaternion state directly integrated through RK4.This was honestly one of the biggest upgrades to the simulator so far because now orientation itself is physically simulated instead of just being fake angle accumulation and stuff. The migration was WAY more painful than expected At first literally everything exploded: infinitiesNaNsbroken, normals-cursed, and sphere geometry intensity overflows. At one point the simulator straight up started generating inf values and the sphere looked like it got compressed by a hydraulic press .The biggest issue ended up being invalid normal vectors inside the sphere mesh generation. A single broken normal could completely destroy the intensity calculations and then infect the entire simulation state with NaNs.After fixing all that, Nyx now has stable quaternion orientation. quaternion vector rotation, quaternion RK4 integration, much more stable rotational dynamics, no more gimbal-lock-type weird ahh stuff . This was really hard for me to add lol now what ? so thats what took more than 10 hours. I think my boi Nyx is doing pretty good and will help me in great magnitude for my research paper. For now at least, i wanna make a sort of UI and replace ‘matplotlib’ with smth better cuz’ I am lowkey fed up. I would also like to add a feature of mass data collection, so that there is much data to study. – that’s it for me today, I hope YOU have a great day! (BTW, i have no idea why the markdown on this devlog is so weird, i can not seem to fix it lowkey)
DEVLOG - smth im bad at remembering numbers and its been sometime too WHATS UP LOVELY PEOPLE Another Nyx devlog it is! You dont know what Nyx is? Its my light sail simulation for a paper im working on! I did some code refining and yeah lots of boring stuff. Used the Stefan–Boltzmann equilibrium approximation to estimate local surface temperature. Added a temperature mapping system based on absorbed laser intensity (Absolutely obsolete btw ): ) Fixed the paraboloid sign issue so it curved in the intended direction. -Also tried using other libraries for rendering, but MatPlotLib is the best option right now other miscellaneous stuff I cant remember honestly (Next devlog will be more detailed trust)
DEVLOG 6 (and seven soon) Its been soooooooooooooooo long since my last devlog. I had my exams and well I couldn’t much and didn’t write my devlog last time. Oh you don’t know what Nyx? It is a light sail simulation I am working on for a paper I am writing (btw there are emojis now so cool stuff got added when I was gone) NEW ADDITIONS: Introduce a materials package (Material dataclass + presets: Graphene, Aluminium, SiliconCarbide) and an analysis package with plotting helpers and an Experiment helper. Update SimMain to accept a material for each sail type, pull reflectivity/absorptivity from the material, and record max/average temperature history. Fix numeric/geometry issues: correct sphere inertia, improve normal/rotation math for sphere and paraboloid, and ensure positions use rotated local coordinates. Add multiple debug/test scripts and enable analysis plotting at the end of simLoop to visualize force, position, velocity, acceleration, angular velocity and temperature histories. I did NOT copy-paste the commit here trust. If you think I did, you're wrong Well, thats it for now, Ill put more effort in the next devlog See YALL soon (no one cares, but I care )
NYX DEVLOG MUHEHEHEHHE (NO IDEA BOUT THE INDEX) sorry for being dead for so long. i was busy with irl stuff The Simulator is ALMOST done yay I made the GUI for yall (the program is not user friendly ) and now the simulated data can FINALLY be saved into .json and .csv and some boring physics shit heres the run down: Physics World frame inertia calculation. i CORRECTED THE INERTIA TENSOR TRANSFORMATION so that angular momentum and rotational dynamics use the inertia tensor in the world frame Rotational Dynamics used the rigid body rotational equation normalised the intermediate RK4 orientation states (so yeah lots of attitude control yk) paraboloid COM and hemisphere COM were straight wrong as i found out so they are fixed now respectively GUI added a workbench/gui for the whole program (I HATE this) and in the repo i added the Read Me after two gazillion years ill say Nyx (the simulator) is done and i can ship it FINALLY after so long and start working on the paper FINALLY. btw the BEANS SHALL PREVAIL some things the 3d geometry visualization doesnt work with the gui stack so ill have to fix that and the parameter sweep doesnt work any bit. these things ill have to do before the first ship and besides ill say the same is pretty good and completed
Mini Devlog :yoooo-chat-whats-up–are-yall-ready-for-another-weekly-journal–i-hope-so-kitty-dance-mb-sorry-for-b: I completed the parameter sweep and it works (still pretty glitchy tho) and added a 3d visualisation section to the program (prolly the most visually appealing thing ) GONNA SHIP NOW YAY
Ships:
This is the first ship of an interstellar light sail simulation for a research paper I am working on. The simulation models an idealised Gaussian laser beam with a fixed nominal propagation direction along +Z. The beam settings include peak intensity (I_0), waist (w_0), wavelength (\lambda), and lateral beam-centre offsets. The sail model estimates radiation-pressure force and torque over the discretised surface, then advances translational and rotational state. The workbench records time histories so configurations can be inspected and compared. A local radiative-equilibrium calculation estimates surface temperature from absorbed illumination and the configured emissivity. Few Notes: The simulation is not very optimised so it may take some time to function on lower end PCs I have added a video performing some functions of the software in the github ReadMe. (As in the ship of my last project, many people told me to have a video as they didn’t want to download the package itself.) If there the runner throws an exception or error pop up at the end, i.e. after running the program, the data can still be accessed (plots, .json, .csv, etc.)...
|
1793199074.8100688
|
1793285474.8100688
|
|
21938
|
lockrs by @confused-ace-noises | Stardance
|
confused-ace-noises
|
2
|
49.0
|
865
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-23T18:19:09Z", "hours": 16.0, "multiplier": 15.58, "payout": 249, "blessing": "neutral", "text": "This ship adds some new functionality! Namely, the ability to take a screenshot of the lockscreen (if you dont want this, it can be disabled through the disabling of the default screenshot feature), new builtin widgets, and some stuff buried a bit more deeply in the logic, such as adding a worker thread for slow operations, fixing some bad output-dependant handling and adding support for more keyboard keys. The most challenging thing about this ship was trying to understand how to make vulkan play nice with ext_session_lock_v1 when setting the buffer scaling, it took me a long time for like- no reason TuT. Anyways, here’s two screenshots of lockscreens i made while developing lockrs:", "repo": "https://github.com/confused-ace-noises/lockrs/", "demo": "https://crates.io/crates/lockrs"}, {"ship_num": 2, "ts": "2026-06-30T14:45:51Z", "hours": 33.0, "multiplier": 18.69, "payout": 616, "blessing": "neutral", "text": "Lockrs is a library that aims to make Wayland screen lockers as customizable as possible. First of all, it’s written in the Rust language, and it’s essentially an implementation of the egui crate for lock screen surfaces; This means it can be truly used for anything (or well, anything egui can possibly do). This project was born out of frustration of the little customizability that other projects offer, relying at most on a simple config file to define everything. It is based on the wayland-client, wgpu and egui crates, which make it compatible with practically any modern Wayland compositor (to be specific, all compositors implementing the ext-session-lock-v1 protocol); using wayland-client was quite hard, as it was really my first time making something that supports graphics and juggling communications with an outside application in the meantime. I think this project was very successful in helping me learn about how Wayland works, and a little bit of how rendering works too. Overall, I’m quite proud of how it turned out, and i have already made my own lock screen (see picture below).", "repo": "https://github.com/confused-ace-noises/lockrs/", "demo": "https://crates.io/crates/lockrs"}]...
|
[{"post_id": 72759, "ts": "202 [{"post_id": 72759, "ts": "2026-09-23T17:56:49Z", "hours": 0.5272, "text": "Reviewed the code before the ship! noting much to report, i’ll just put the new lockscreen again"}, {"post_id": 71234, "ts": "2026-09-20T14:25:17Z", "hours": 10.2025, "text": "A lot of big changes! these 10 hours of coding felt like a constant rabbit hole, but i finally fixed all the things i found TuT. First of all, i made some new widgets: namely, a text input for the password that reserves space for the “login failed” failure text, an uptime widget and widget that fetches the default network interface. While making an example lock screen using these new widgets, i noticed that taking a screenshot was just a huge pain; One had to go do gpu texture copying magic and it was just A Bad Time in general. So, i decided to bake that functionality into lockrs itself, so now there’s a screenshot feature (enabled by default) which makes it able to save screenshots. But while implementing the screenshot feature, i noticed that there were some inconsistencies in the multiple output logic and in the buffer scaling logic, so i fixed those (this took surprisingly long :p). After implementing that, i went to take that screenshot, and noticed that the UI would freeze for a bit while the disk I/O of saving the image was running. This was quite annoying, so i also decided to make a whole ass worker thread that handles password checking (which also used to hang the UI thread, albeit for a short time) and to save the screenshot. Anyways, after this journey of a few days of coding, here’s the example screenshot, finally: P.S.: while trying to put an image here, firefox crashed and i had to rewrite this whole thing… to anyone seeing this, save your devlogs somewhere before adding pics :p"}, {"post_id": 61515, "ts": "2026-09-04T13:55:26Z", "hours": 5.4758, "text": "Well, im at it again with this project. I took quite a long break to make another project, and now have had the time to come back to this. I’ve finally written some in-depth docs, and will review them later today with a fresh mind to be sure that they’re as right as possible. I also fixed a design flaw, but im not very sure if how i did it really fixed it. Before, this is the old way it’s doing it: app .ui (| _ , ui | { // put stuff inside some ui levels egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // maybe make new ui levels // inside the levels, return TryExit TryExit :: Force }) .inner.inner.inner //as many .inner as ui levels // TryExit is in, because you need to return the inner TryExit }) this felt extremely clunky. So, i solved it like this: // mutable reference to a TryExit app .ui (| _ , ui , exit : & mut TryExit | { // as many levels as you want egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // instead of returning it, mutate the passed-in reference * exit = TryExit :: Force ; }); // no need to return anything, so no .inner }) this feels a bit better, but idrk still. For the time being, the API will be the latter. Anyways, have a look at the new docs:"}, {"post_id": 19151, "ts": "2026-06-30T12:13:07Z", "hours": 5.495, "text": "After taking a small break, i finally finished this project. I decided to turn it into a library instead of a really customizable lockscreen, because what would be the purpose in making something that could very well work in any number of ways and then limiting it to a few widgets? I’m quite satisfied with how it turned out, even if there are a few rough spots. Also, i decided to license it under MIT or Apache 2.0, as per convention for rust libraries. In the end, i’ll be definitely using lockrs, and i hope some other people will too."}, {"post_id": 15087, "ts": "2026-06-24T14:53:06Z", "hours": 3.2564, "text": "I managed to add PAM authentication. I also tried to add support for shaders and in general gpu work, and discovering i bit off way more than i can chew, i just decided not to. So, i tried to add a background, but i stumbled upon an obstacle which sent me diving into egui’s source code, because it kept claiming that it couldn’t load images with side bigger than 2048px; turns out this is only a limitation of the WebGPU API, that, as the name suggests, runs on browsers, not on desktops. Anyways, after a lot of fiddling with egui’s components, i managed to make it use images with sides up to 8000px. Now i’ll probably customize the bar a little, and maybe make a few egui widgets for it."}, {"post_id": 14354, "ts": "2026-06-23T13:37:48Z", "hours": 9.2189, "text": "After wrecking my mind unnecessarily over how to handle pointer events for a ridiculous amount of time, I finally got something that somehow works; now i also have a working text input! It just prints the input to the terminal for now, but I’ll be messing with PAM a bit to do authentication now. wish me luck!"}, {"post_id": 12838, "ts": "2026-06-21T00:42:13Z", "hours": 8.1453, "text": "I finally got the keyboard to work! for now, it just exits as soon as a key is pressed, but i’m working on implementing full functionality. also, now the code is much much cleaner, properly divided in functions instead of being all chucked into main. I don’t really have a way to display this with a screenshot, so i’ll just reuse an old one unfortunately :p"}, {"post_id": 11926, "ts": "2026-06-19T13:25:36Z", "hours": 2.0419, "text": "Well, i managed to render to the lock screen with egui instead of using the raw buffer; for now, it’s still a mess of spaghetti code that barely works and will turn into a footgun very quickly if i don’t get working on the lower level part of it instead of throwing stuff at the wall and seeing if it sticks. The next step is tidying the code up instead of throwing everything into main, so that i can get some customization going. Also, i should probably add the authentication part of the lock screen instead of having it unlock after a few seconds."}, {"post_id": 11649, "ts": "2026-06-19T00:01:07Z", "hours": 4.8064, "text": "I finished a first proof of concept for wl-lock; right now, it locks the user out for two seconds while displaying a mauve screen. For now, it’s still fully cpu rendered, but i plan on adding gpu-accelerated background blur and general effects. The next step is hooking egui into it!"}]...
|
Title: lockrs by @confused-ace-noises | Stardance
Title: lockrs by @confused-ace-noises | Stardance
Devlogs:
I finished a first proof of concept for wl-lock; right now, it locks the user out for two seconds while displaying a mauve screen. For now, it’s still fully cpu rendered, but i plan on adding gpu-accelerated background blur and general effects. The next step is hooking egui into it!
Well, i managed to render to the lock screen with egui instead of using the raw buffer; for now, it’s still a mess of spaghetti code that barely works and will turn into a footgun very quickly if i don’t get working on the lower level part of it instead of throwing stuff at the wall and seeing if it sticks. The next step is tidying the code up instead of throwing everything into main, so that i can get some customization going. Also, i should probably add the authentication part of the lock screen instead of having it unlock after a few seconds.
I finally got the keyboard to work! for now, it just exits as soon as a key is pressed, but i’m working on implementing full functionality. also, now the code is much much cleaner, properly divided in functions instead of being all chucked into main. I don’t really have a way to display this with a screenshot, so i’ll just reuse an old one unfortunately :p
After wrecking my mind unnecessarily over how to handle pointer events for a ridiculous amount of time, I finally got something that somehow works; now i also have a working text input! It just prints the input to the terminal for now, but I’ll be messing with PAM a bit to do authentication now. wish me luck!
I managed to add PAM authentication. I also tried to add support for shaders and in general gpu work, and discovering i bit off way more than i can chew, i just decided not to. So, i tried to add a background, but i stumbled upon an obstacle which sent me diving into egui’s source code, because it kept claiming that it couldn’t load images with side bigger than 2048px; turns out this is only a limitation of the WebGPU API, that, as the name suggests, runs on browsers, not on desktops. Anyways, after a lot of fiddling with egui’s components, i managed to make it use images with sides up to 8000px. Now i’ll probably customize the bar a little, and maybe make a few egui widgets for it.
After taking a small break, i finally finished this project. I decided to turn it into a library instead of a really customizable lockscreen, because what would be the purpose in making something that could very well work in any number of ways and then limiting it to a few widgets? I’m quite satisfied with how it turned out, even if there are a few rough spots. Also, i decided to license it under MIT or Apache 2.0, as per convention for rust libraries. In the end, i’ll be definitely using lockrs, and i hope some other people will too.
Well, im at it again with this project. I took quite a long break to make another project, and now have had the time to come back to this. I’ve finally written some in-depth docs, and will review them later today with a fresh mind to be sure that they’re as right as possible. I also fixed a design flaw, but im not very sure if how i did it really fixed it. Before, this is the old way it’s doing it: app .ui (| _ , ui | { // put stuff inside some ui levels egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // maybe make new ui levels // inside the levels, return TryExit TryExit :: Force }) .inner.inner.inner //as many .inner as ui levels // TryExit is in, because you need to return the inner TryExit }) this felt extremely clunky. So, i solved it like this: // mutable reference to a TryExit app .ui (| _ , ui , exit : & mut TryExit | { // as many levels as you want egui :: CentralPanel :: default () .frame ( egui :: Frame :: NONE ) .show ( ui , | ui | { // instead of returning it, mutate the passed-in reference * exit = TryExit :: Force ; }); // no need to return anything, so no .inner }) this feels a bit better, but idrk still. For the time being, the API will be the latter. Anyways, have a look at the new docs:
A lot of big changes! these 10 hours of coding felt like a constant rabbit hole, but i finally fixed all the things i found TuT. First of all, i made some new widgets: namely, a text input for the password that reserves space for the “login failed” failure text, an uptime widget and widget that fetches the default network interface. While making an example lock screen using these new widgets, i noticed that taking a screenshot was just a huge pain; One had to go do gpu texture copying magic and it was just A Bad Time in general. So, i decided to bake that functionality into lockrs itself, so now there’s a screenshot feature (enabled by default) which makes it able to save screenshots. But while implementing the screenshot feature, i noticed that there were some inconsistencies in the multiple output logic and in the buffer scaling logic, so i fixed those (this took surprisingly long :p). After implementing that, i went to take that screenshot, and noticed that the UI would freeze for a bit while the disk I/O of saving the image was running. This was quite annoying, so i also decided to make a whole ass worker thread that handles password checking (which also used to hang the UI thread, albeit for a short time) and to save the screenshot. Anyways, after this journey of a few days of coding, here’s the example screenshot, finally: P.S.: while trying to put an image here, firefox crashed and i had to rewrite this whole thing… to anyone seeing this, save your devlogs somewhere before adding pics :p
Reviewed the code before the ship! noting much to report, i’ll just put the new lockscreen again
Ships:
Lockrs is a library that aims to make Wayland screen lockers as customizable as possible. First of all, it’s written in the Rust language, and it’s essentially an implementation of the egui crate for lock screen surfaces; This means it can be truly used for anything (or well, anything egui can possibly do). This project was born out of frustration of the little customizability that other projects offer, relying at most on a simple config file to define everything. It is based on the wayland-client, wgpu and egui crates, which make it compatible with practically any modern Wayland compositor (to be specific, all compositors implementing the ext-session-lock-v1 protocol); using wayland-client was quite hard, as it was really my first time making something that supports graphics and juggling communications with an outside application in the meantime. I think this project was very successful in helping me learn about how Wayland works, and a little bit of how rendering works too. Overall, I’m quite proud of how it turned out, and i have already made my own lock screen (see picture below).
This ship adds some new functionality! Namely, the ability to take a screenshot of the lockscreen (if you dont want this, it can be disabled through the disabling of the default screenshot feature), new builtin widgets, and some stuff buried a bit more deeply in the logic, such as adding a worker thread for slow operations, fixing some bad output-dependant handling and adding support for more keyboard keys. The most challenging thing about this ship was trying to understand how to make vulkan play nice with ext_session_lock_v1 when setting the buffer scaling, it took me a long time for like- no reason TuT. Anyways, here’s two screenshots of lockscreens i made while developing lockrs:...
|
1793083652.2289445
|
1793170052.2289445
|
|
24796
|
Soulful by @Alafandri | Stardance
|
Alafandri
|
2
|
49.0
|
409
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T00:23:16Z", "hours": 3.0, "multiplier": 12.86, "payout": 43, "blessing": "neutral", "text": "I made an update to my game called ‘Soulful’. It’s a game about a soul sent to earth to defeat a corrupted soul who is trying to take over the world. This update mainly features bug fixes and big improvements to the game. The most challenging part was to get the systems to feel right. I am most proud of the outcome of everything and very happy about doing these fixes. People who plan on playing it should know that in the end there is also a cutscene when you finish the game. Also note that the game bosses are quite wonky and being able to save inside the arena and also heal is a feature ;). Anyways have fun!", "repo": "https://github.com/Alafandri/Soulful", "demo": "https://alafandri.itch.io/soulful"}, {"ship_num": 2, "ts": "2026-08-07T17:40:13Z", "hours": 46.0, "multiplier": 15.91, "payout": 366, "blessing": "neutral", "text": "I made a pixel art style platformer game that includes enemies, bosses, abilities, platformer challenges a story and much more. This project might be by far my biggest game project I have ever made! And I am really proud of the results. The most challenging thing with making this game was programming. I ran into a bunch of problems, had really weird bugs but I somehow managed to outcome them. I am really proud of the art for this game. That is because I haven’t really ever made pixel art before until this project. This project really forced me to step out of my comfort zone. People who are planning on playing this should know that don’t expect anything insane. This game doesn’t take very long to complete. I would say around 5-10 min, depending on the person. Anyways, enjoy!", "repo": "https://github.com/Alafandri/Soulful", "demo": "https://alafandri.itch.io/soulful"}]...
|
[{"post_id": 57733, "ts": "202 [{"post_id": 57733, "ts": "2026-08-30T00:10:36Z", "hours": 3.3725, "text": "Devlog #8: overhaul Hello guys! So I have come back to the game after some time cause I wanted to do some improvements that I just had to get out of my head. Everything new: 🔥 More settings options Improved lighting Platforming improvements Sound fixes Bug fixes Buttons and menu overhaul And a few small other things like tweaking particle amounts and a few settings So after reading everyones feedback to the game I realized that some parts of the game really needed to be improved. So I got to work and thats what I did. Also tysm to everyones feedback on the game and those amazing words❤️. Anyways that is it for now! Will probably return to this project in the future or will work on the game but without the devlog thing anymore. Anyways enjoy!🥰"}, {"post_id": 42771, "ts": "2026-08-07T17:29:49Z", "hours": 1.8014, "text": "Game is ready for release!"}, {"post_id": 42605, "ts": "2026-08-07T12:52:46Z", "hours": 8.5772, "text": "Devlog #8: Sound 🎵 Hi guys! So the game is basically done but it is missing alot of sfx and there is no music yet in the game. But other than that I have gotten everything else done! Everything new: 🔥 Ending Credits Tutorial Menu Settings Some sfx and ambience All I am doing currently with the game pretty much is just finishing off areas, adding final touches and adding in sfx. The music will be probably the hardest part but we will see. I am so proud of the game and I cannot wait to make it public for everyone. The game is about to come out any day now. Maybe even today if I lock in. We will see. Byeeeee❤️"}, {"post_id": 41600, "ts": "2026-08-05T21:58:58Z", "hours": 4.7264, "text": "Devlog #7: The game 😍 Yo wsp everyone!!! The game is so so close to being done. I decided to make a final long form devlog on this project. I will probably do another small one later when I am really close to release. Everything new: 2 bosses new enemy a bunch of areas And bunch other stuff you will find out about when you play the game Okay. so I have added actually a lot of stuff since last devlog. All of the areas are basically finished, they just need a little touch of love. I currently am working on the final boss of the game which I am proud of. This game isn’t anything big. You will probs finish it in a few minutes. It’s nothing special, but I am proud of it since so much work went into this and the results so far are more than I ever thought I was capable of. Until starting this project I hadn’t basically really ever done pixel art. I have tried before and watched tutorials for it but it always seemed too hard for me. While making this game I have improved so much in making pixel art and I will definitely in the future continue making pixel art cause it is alot of fun. This project has definitely been a challenge but but it has also been alot of fun. I like writing this devlogs and sharing updates with everyone, even though my post barely get any attention. Anyways, I should get back to work. Basically the game is almost done and I don’t have much left to do. Byeee!!!!"}, {"post_id": 40389, "ts": "2026-08-03T21:10:15Z", "hours": 1.4594, "text": "Another update: All of the areas are finished! All that is needed to be worked on is the final boss, adding detail, end cutscene. When this game comes out you will have option to either download it or just to play it on your browser. Also heres a little sneak peek of a tileset for a area in the game"}, {"post_id": 40054, "ts": "2026-08-03T12:35:58Z", "hours": 4.0144, "text": "Little update: So much work is being done! I just finished one of the areas for the game. I got 3 more to go and final boss to be implemented to the game. The boss is fully drawn but it’s not in the game yet. The game will be out very very soon!"}, {"post_id": 38830, "ts": "2026-08-01T12:08:20Z", "hours": 8.0881, "text": "Devlog #6: World building 😆 Hey everyone! This devlog will be short and without a current progress video like usually. That is because I have started to build the games world. I have finished the starting area and got a rough layout for the next one. I have written out the game lore and how the game should progress so I know what keep in mind while building the map. Most of the current time is spent drawing cause so much art is needed for the game but the progress is overall really good! Also check out this cool tree I made. It wont have any purpose in the game but It does help with the world feel. See you soon!"}, {"post_id": 36380, "ts": "2026-07-28T13:38:19Z", "hours": 5.6547, "text": "Devlog #5: Npc, new art, health and bug fixes 😆 Hey guys! I haven’t posted in a while and I wasn’t able to work much on the game in the time but now I’m back and working on the game again! 🥳 Even though I haven’t worked on the game much then I still have got quite a few new things to show you guys for this devlog. Everything new: 🔥 Npc New enemy sprites, death particles and few fixes Ball Player improvements(bug fixes. few tweaks and hit invincibility indicator!) New decorational flower sprites Health bar And some other things that I’m not going to bore you with… So that’s quite a lot of stuff I would say, It might not seem like it to you but It does for me. Seeing the game coming slowly together really motivates me to work on it even more. SO so much needs to be still done until it can be finally shipped and you to be able to play it, but eventually we will get there! Next I’m planning on working on the abilities, then I will try to make 2 bosses for the game. Wait lemme just make a roadmap for the game real quick… ROADMAP: 🗺️ other 2 Abilities Breakable walls Attacking enemies 2 Bosses Save/load system Ending/s? map 2 Areas Parkour sections Boss rooms Some other stuff I can’t think of rn Currently my plan is to make the basic things for the game before I can start building it out. I want save the map for the last cause I want it to feel nice and logical to explore. But thats all for this devlog! See you next time!!!!👋"}, {"post_id": 19188, "ts": "2026-06-30T13:35:01Z", "hours": 3.0072, "text": "Devlog #4: Player, enemies and visuals ✨ Hello everyone once again! I am back with a nother devlog. This time I will be talking about the new visuals for the game and player and enemy interactions. Everything new: 🔥 Parallax background Enemy ai Enemy damage player Player health Added player attack function Visual improvements I have been having so much fun making this game. I love going back to look at the old footage I have filmed of the game and see how much has changed. With every devlog I’m getting closer to shipping the game. Even though a lot needs still to be done to get to that point I’m still very happy with what I have made so far. I’ve had a lot of problems before getting the parallax background to work properly but somehow I got it to work! One of the things I have been wanting to add was a enemy which finally is here now. Currently I only got one enemy who doesn’t do much but still it’s at least something for now and I will be definitely adding more in the future. A lot of things still need to be added like player health ui and sprites need to be made for the enemy and hopefully I will have those things for the next devlog! In the next devlog you can hopefully expect: 😁 Expand world Dialogue system New art Player death respawn fix probs more stuff idk Oki, that’s it for this devlog! See you soon!!!! 🤑"}, {"post_id": 17896, "ts": "2026-06-28T20:42:11Z", "hours": 5.2508, "text": "Devlog #3: Character and the world 🔥 Hey everyone! I haven’t posted for a few days but that’s because I have been doing a lot of work on the game. So far everything is coming along very nicely. Everything new: Grass wind shader Character attack Checkpoints Particles Menu screen Tweaked character settings Changed some sprites Visual changes(particles and etc) So as you can see I have added quite a few things but there is still a lot for me left to do until it’s an actual game where you have something to do. Probably the biggest things that I have added are the player attack, checkpoints and menu. Other are just visual changes and some tiny value and number changes here and there. I also changed the grass sprite cause I wanted to add a wind shader on the grass but I ran into a problem that when the grass has an outline then it disappears sometimes to who knows where or there are suddenly more black pixels than there should be. So I decided that I will just remake the texture and replace the old ones. I have also added wind particles which I had already made earlier but it didn’t look very good before so I had to tweak the settings around here and there until it looked right. I think that it still could be a little better but for now it will do just fine. I also have already written some lore for the game and what that game is going to be about which I will start working once I have all of the main systems that I would need to start building the game. I will hopefully be working next on: Enemies Parallax background Expand world Dialogue system Character death animations some sfx respawn Abilities? Keep in mind that I won’t probably have added all of those things by the next devlog but definitely some. Anyways, thank you so much for reading my devlog! I hope to see you in the next one!!!🥰"}, {"post_id": 15270, "ts": "2026-06-24T20:02:18Z", "hours": 2.6256, "text": "Devlog #2: Art and particles ✨ Hey everyone! In this devlog I have made mostly **visual **changes.😆 All changes: Added particles Also made wind particles but that needs to be worked on and isn’t shown in the video Player sprites and animations Grass sprites Player movement improvements Tilemap ground sprites Grass sprites to make stuff more lively Modified background color I have done actually quite a lot since the last devlog and piece by piece eventually I will have a full functioning game. But to get there there is so much still to do. Anyways the biggest thing I worked on in this devlog is obviously the visual side of things. I wanted to game to look a bit more pleasing on the eye when developing the game. The character design might not be final but I am very proud of myself for this result since I don’t usually do pixel art at all and I thought it might be a nice challange and an opportunity to learn something new while making this game. So far I’m loving making art for this game cause it’s so fun but also hard for me since one wrongly placed pixel can ruin the effect so easily and look wrong overall. I’ve still got to do some work on the grass since it might look a bit tall next to the player cause I’m going for a pixel perfect game and using 16x16 for both the player and grass sprites. I’m also working on a wind shader to give the grass some movement. But yeah that’s all, and I’ve got a lot to do so.. see you in the next devlog. Byeee 🥰 !!!"}, {"post_id": 14662, "ts": "2026-06-23T21:02:37Z", "hours": 0.8072, "text": "DEVLOG #1: Setup Yayyyy a new godot project!!😆😆😆 There is nothing more exciting than starting a new game development project and opening up the fresh new project window. What I have done so far: Made the godot project and setup github page Added keybinds to godots input map Made a character controller Changed window settings Made a basic platform Configured games gravitational settings I’m trying to make a pixel perfect system something like in Celeste so that the game would look extra clean😁 . It doesn’t look that great rn but I’m going to start making art soon when I have the basic stuff setup. That’s all for this devlog but see you very very soon in the next one!!! byeeeee🥰 !!!!!!!!"}]...
|
Title: Soulful by @Alafandri | Stardance
Devlogs: Title: Soulful by @Alafandri | Stardance
Devlogs:
DEVLOG #1: Setup Yayyyy a new godot project!!😆😆😆 There is nothing more exciting than starting a new game development project and opening up the fresh new project window. What I have done so far: Made the godot project and setup github page Added keybinds to godots input map Made a character controller Changed window settings Made a basic platform Configured games gravitational settings I’m trying to make a pixel perfect system something like in Celeste so that the game would look extra clean😁 . It doesn’t look that great rn but I’m going to start making art soon when I have the basic stuff setup. That’s all for this devlog but see you very very soon in the next one!!! byeeeee🥰 !!!!!!!!
Devlog #2: Art and particles ✨ Hey everyone! In this devlog I have made mostly **visual **changes.😆 All changes: Added particles Also made wind particles but that needs to be worked on and isn’t shown in the video Player sprites and animations Grass sprites Player movement improvements Tilemap ground sprites Grass sprites to make stuff more lively Modified background color I have done actually quite a lot since the last devlog and piece by piece eventually I will have a full functioning game. But to get there there is so much still to do. Anyways the biggest thing I worked on in this devlog is obviously the visual side of things. I wanted to game to look a bit more pleasing on the eye when developing the game. The character design might not be final but I am very proud of myself for this result since I don’t usually do pixel art at all and I thought it might be a nice challange and an opportunity to learn something new while making this game. So far I’m loving making art for this game cause it’s so fun but also hard for me since one wrongly placed pixel can ruin the effect so easily and look wrong overall. I’ve still got to do some work on the grass since it might look a bit tall next to the player cause I’m going for a pixel perfect game and using 16x16 for both the player and grass sprites. I’m also working on a wind shader to give the grass some movement. But yeah that’s all, and I’ve got a lot to do so.. see you in the next devlog. Byeee 🥰 !!!
Devlog #3: Character and the world 🔥 Hey everyone! I haven’t posted for a few days but that’s because I have been doing a lot of work on the game. So far everything is coming along very nicely. Everything new: Grass wind shader Character attack Checkpoints Particles Menu screen Tweaked character settings Changed some sprites Visual changes(particles and etc) So as you can see I have added quite a few things but there is still a lot for me left to do until it’s an actual game where you have something to do. Probably the biggest things that I have added are the player attack, checkpoints and menu. Other are just visual changes and some tiny value and number changes here and there. I also changed the grass sprite cause I wanted to add a wind shader on the grass but I ran into a problem that when the grass has an outline then it disappears sometimes to who knows where or there are suddenly more black pixels than there should be. So I decided that I will just remake the texture and replace the old ones. I have also added wind particles which I had already made earlier but it didn’t look very good before so I had to tweak the settings around here and there until it looked right. I think that it still could be a little better but for now it will do just fine. I also have already written some lore for the game and what that game is going to be about which I will start working once I have all of the main systems that I would need to start building the game. I will hopefully be working next on: Enemies Parallax background Expand world Dialogue system Character death animations some sfx respawn Abilities? Keep in mind that I won’t probably have added all of those things by the next devlog but definitely some. Anyways, thank you so much for reading my devlog! I hope to see you in the next one!!!🥰
Devlog #4: Player, enemies and visuals ✨ Hello everyone once again! I am back with a nother devlog. This time I will be talking about the new visuals for the game and player and enemy interactions. Everything new: 🔥 Parallax background Enemy ai Enemy damage player Player health Added player attack function Visual improvements I have been having so much fun making this game. I love going back to look at the old footage I have filmed of the game and see how much has changed. With every devlog I’m getting closer to shipping the game. Even though a lot needs still to be done to get to that point I’m still very happy with what I have made so far. I’ve had a lot of problems before getting the parallax background to work properly but somehow I got it to work! One of the things I have been wanting to add was a enemy which finally is here now. Currently I only got one enemy who doesn’t do much but still it’s at least something for now and I will be definitely adding more in the future. A lot of things still need to be added like player health ui and sprites need to be made for the enemy and hopefully I will have those things for the next devlog! In the next devlog you can hopefully expect: 😁 Expand world Dialogue system New art Player death respawn fix probs more stuff idk Oki, that’s it for this devlog! See you soon!!!! 🤑
Devlog #5: Npc, new art, health and bug fixes 😆 Hey guys! I haven’t posted in a while and I wasn’t able to work much on the game in the time but now I’m back and working on the game again! 🥳 Even though I haven’t worked on the game much then I still have got quite a few new things to show you guys for this devlog. Everything new: 🔥 Npc New enemy sprites, death particles and few fixes Ball Player improvements(bug fixes. few tweaks and hit invincibility indicator!) New decorational flower sprites Health bar And some other things that I’m not going to bore you with… So that’s quite a lot of stuff I would say, It might not seem like it to you but It does for me. Seeing the game coming slowly together really motivates me to work on it even more. SO so much needs to be still done until it can be finally shipped and you to be able to play it, but eventually we will get there! Next I’m planning on working on the abilities, then I will try to make 2 bosses for the game. Wait lemme just make a roadmap for the game real quick… ROADMAP: 🗺️ other 2 Abilities Breakable walls Attacking enemies 2 Bosses Save/load system Ending/s? map 2 Areas Parkour sections Boss rooms Some other stuff I can’t think of rn Currently my plan is to make the basic things for the game before I can start building it out. I want save the map for the last cause I want it to feel nice and logical to explore. But thats all for this devlog! See you next time!!!!👋
Devlog #6: World building 😆 Hey everyone! This devlog will be short and without a current progress video like usually. That is because I have started to build the games world. I have finished the starting area and got a rough layout for the next one. I have written out the game lore and how the game should progress so I know what keep in mind while building the map. Most of the current time is spent drawing cause so much art is needed for the game but the progress is overall really good! Also check out this cool tree I made. It wont have any purpose in the game but It does help with the world feel. See you soon!
Little update: So much work is being done! I just finished one of the areas for the game. I got 3 more to go and final boss to be implemented to the game. The boss is fully drawn but it’s not in the game yet. The game will be out very very soon!
Another update: All of the areas are finished! All that is needed to be worked on is the final boss, adding detail, end cutscene. When this game comes out you will have option to either download it or just to play it on your browser. Also heres a little sneak peek of a tileset for a area in the game
Devlog #7: The game 😍 Yo wsp everyone!!! The game is so so close to being done. I decided to make a final long form devlog on this project. I will probably do another small one later when I am really close to release. Everything new: 2 bosses new enemy a bunch of areas And bunch other stuff you will find out about when you play the game Okay. so I have added actually a lot of stuff since last devlog. All of the areas are basically finished, they just need a little touch of love. I currently am working on the final boss of the game which I am proud of. This game isn’t anything big. You will probs finish it in a few minutes. It’s nothing special, but I am proud of it since so much work went into this and the results so far are more than I ever thought I was capable of. Until starting this project I hadn’t basically really ever done pixel art. I have tried before and watched tutorials for it but it always seemed too hard for me. While making this game I have improved so much in making pixel art and I will definitely in the future continue making pixel art cause it is alot of fun. This project has definitely been a challenge but but it has also been alot of fun. I like writing this devlogs and sharing updates with everyone, even though my post barely get any attention. Anyways, I should get back to work. Basically the game is almost done and I don’t have much left to do. Byeee!!!!
Devlog #8: Sound 🎵 Hi guys! So the game is basically done but it is missing alot of sfx and there is no music yet in the game. But other than that I have gotten everything else done! Everything new: 🔥 Ending Credits Tutorial Menu Settings Some sfx and ambience All I am doing currently with the game pretty much is just finishing off areas, adding final touches and adding in sfx. The music will be probably the hardest part but we will see. I am so proud of the game and I cannot wait to make it public for everyone. The game is about to come out any day now. Maybe even today if I lock in. We will see. Byeeeee❤️
Game is ready for release!
Devlog #8: overhaul Hello guys! So I have come back to the game after some time cause I wanted to do some improvements that I just had to get out of my head. Everything new: 🔥 More settings options Improved lighting Platforming improvements Sound fixes Bug fixes Buttons and menu overhaul And a few small other things like tweaking particle amounts and a few settings So after reading everyones feedback to the game I realized that some parts of the game really needed to be improved. So I got to work and thats what I did. Also tysm to everyones feedback on the game and those amazing words❤️. Anyways that is it for now! Will probably return to this project in the future or will work on the game but without the devlog thing anymore. Anyways enjoy!🥰
Ships:
I made a pixel art style platformer game that includes enemies, bosses, abilities, platformer challenges a story and much more. This project might be by far my biggest game project I have ever made! And I am really proud of the results. The most challenging thing with making this game was programming. I ran into a bunch of problems, had really weird bugs but I somehow managed to outcome them. I am really proud of the art for this game. That is because I haven’t really ever made pixel art before until this project. This project really forced me to step out of my comfort zone. People who are planning on playing this should know that don’t expect anything insane. This game doesn’t take very long to complete. I would say around 5-10 min, depending on the person. Anyways, enjoy!
I made an update to my game called ‘Soulful’. It’s a game about a soul sent to earth to defeat a corrupted soul who is trying to take over the world. This update mainly features bug fixes and big improvements to the game. The most challenging part was to get the systems to feel right. I am most proud of the outcome of everything and very happy about doing these fixes. People who plan on playing it should know that in the end there is also a cutscene when you finish the game. Also note that the game bosses are quite wonky and being able to save inside the arena and also heal is a feature ;). Anyways have fun!...
|
1793094885.7099712
|
1793181285.7099712
|
|
30766
|
Pixel Void by @carinshark | Stardance
|
carinshark
|
1
|
49.0
|
808
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-28T00:27:57Z", "hours": 49.0, "multiplier": 16.44, "payout": 808, "blessing": "neutral", "text": "This is PixelVoid! A drawing app that limits your placement of color! (Like the structure of a 7 segment display but extended) My favorite thing about making this was using inheritance to combine pygame with my own code. It was quite challenging to get the coordinates of the mouse to match the custom grid of lines that it has. That was probably where I spent most of my time. Please note: this project only contains executable binaries for linux and windows. MacOS is not currently supported. The README should contain tips and tricks as well to help you create something wonderful!", "repo": "https://github.com/carinshark/Pixel-Void", "demo": "https://github.com/carinshark/Pixel-Void/releases"}]...
|
[{"post_id": 36120, "ts": "202 [{"post_id": 36120, "ts": "2026-07-28T00:18:18Z", "hours": 3.9083, "text": "README is complete! I added instructions on installing, some tips and tricks, and an overview of how to use the UI. I was struggling with the MacOS Build for this app, due to not having a mac, so i’ve decided to keep the support currently for windows and linux only (tho I guess you could still compile the code directly if you wanted to). I think i’m finally ready to ship!"}, {"post_id": 33303, "ts": "2026-07-23T03:01:17Z", "hours": 4.3114, "text": "The user is experienced! Added some UX features - buttons can be told apart easier, and the undo button works!! Here is today’s work - the stormy mountain. I think i’m understanding rules i can include for the readme - you have to work with the white space rather than fill it in. You have to treat it different than pixel art. I’m gonna make the README, do some field testing, and if it goes well, ship time!!"}, {"post_id": 32138, "ts": "2026-07-21T02:59:46Z", "hours": 0.8681, "text": "Decided to pause preparing for shipping During some field testing, I learned that the user experience needs improvement. I need to make buttons more clear, and add the greatest thing to be created: THE UNDO BUTTON !!! So this is my goal moving forward! In the meantime, this is the logo I made for the app! Since this entire project was inspired by 7-segment displays, thats what the logo portrays, along with some filler lines on top to fill in the extra space :)"}, {"post_id": 32071, "ts": "2026-07-20T23:40:26Z", "hours": 3.8319, "text": "UI REVAMP! Everything was so inconsistent so I spent some time recoloring everything! (before and after images) In the process i learned that an old feature I had (debug mode, which showed cool dots on the screen) hasn’t been working for a reallly long time!!! woops- had to fix that Its almost ready to ship!! Just need to work on the readme and add some finishing touches!"}, {"post_id": 31648, "ts": "2026-07-20T06:58:16Z", "hours": 2.3625, "text": "Added some UI settings! the app now lets you customize the length and amount of squares in the grid! I haven’t fully implemented it because I ran out of time, but yay stuff! I do realize the UI colors are kinda a mess so ill need to fix that. The project is almost complete!! p.s. - sorry I didnt have anything to draw this time, I spent the whole day cleaning and stuff so i’m short on time today"}, {"post_id": 29979, "ts": "2026-07-17T06:13:11Z", "hours": 5.2322, "text": "Added buttons! You can now load and save from files, which also saves your current colors and the palette as well. In addition, you can download as an image or the canvas! this wasn’t too hard, was mostly research on file prompts and saving numpy files, so I got distracted with my work quite often and went on to do other stuff. I’m also getting better at learning to draw on this thing, and am thinking of some things I could include in the readme guide."}, {"post_id": 29277, "ts": "2026-07-16T02:54:16Z", "hours": 2.2178, "text": "Added a color palette system! so funny thing- when I added this, the right click input just stopped registering so had to spend some time figuring out what changed!!! colors can now be added and removed in the palette! I’m not the most proud of the design of it, it works! Main problem is that some of the UI elements feel too small due to just the way it is. Hopefully by the end all the lil issues will be fixed"}, {"post_id": 28759, "ts": "2026-07-15T07:13:44Z", "hours": 4.745, "text": "New modular UI has been implemented! It fully works, and I’ve also designed a new piece of the UI for color palette on aseprite! this should hopefully be able to be implemented quite easily with the new system. The main reason i’m doing this is because it was quite hard to get the same color twice, and this will give you the ability to save them. IVE ALSO NOTICED THAT IVE SPELLED PALETTE AS PALLETTE ON ALL MY CODE SO NOW I NEED TO FIX THAT"}, {"post_id": 28140, "ts": "2026-07-14T07:37:51Z", "hours": 2.3122, "text": "The canvas is now a strong indepenent individual! After making the color picker, I realized - the main drawing canvas was not modular at all!! it would have been a pain to add anything new or change the UI in any way, So i’ve moved the entire thing into it’s own class, and made it support the same input system the color picker uses!! This also means I could theoretically have MULTIPLE canvas to draw on!! the possibilities are endless…."}, {"post_id": 27975, "ts": "2026-07-13T22:44:14Z", "hours": 1.8758, "text": "(#11) Color picker is complete ^_^ ok well there are a few things to fine tune but this was my first time making my own inputs for pygame! I added a bit of extra space on the click detection since the slider was a bit small, so hopefully it should make it more user friendly! the strugle Everything was surpsisingly working smoothly - except for the fact that I never set it up for the screen to update!!! turns out it updated once and never again, and when I fixed that it all worked yayayay I’m learning a lot about pygame doing this!"}, {"post_id": 27552, "ts": "2026-07-13T07:05:22Z", "hours": 4.3292, "text": "(#10) UI Planned out! I still need to figure out what to do with some of the empty space, but a lot of it is filled in now. I’ve also started implementation of the color picker I designed! (third image)"}, {"post_id": 27044, "ts": "2026-07-12T07:09:53Z", "hours": 0.5778, "text": "UI design day! Today was my day off so I did not do much. I planned out the UI a bit, and was going to work on it on aseprite, but the wakatime extension kept causing the app to freeze and opened a new terminal every second."}, {"post_id": 26269, "ts": "2026-07-10T23:29:20Z", "hours": 1.595, "text": "The brush supports other colors now! clicking leftmouse activates one color, and right mouse activates the other! clicking both mixes the color as a bonus, which currently just averages the rgb values, so might change that later if it looks bad for complementary colors. I can feel this project start to come together ^_^ I also fixed some bugs that the brush had because it was detecting the pixels completely wrong and inefficiently!"}, {"post_id": 25625, "ts": "2026-07-10T00:50:13Z", "hours": 3.9469, "text": "The Brush Can Paint Now!! I tried to make it as optimized as I could but there’s still a lot to improve on! I got such satisfaction seeing it work for the first time this genuinely took so long - so many issues one of the silliest ones was that i had 2 variables that had similar names (because they did similar things) and i used the wrong one!!! i forgot to occasionally change the size of the grid so it was tragic when i found out everything was broken when i changed it 😱😱😱 Isn’t the ✨distance formula✨ the greatest thing ever? now hopefully i just need to add more color options, improve the ui a bit, and it should be ready!"}, {"post_id": 24553, "ts": "2026-07-08T06:10:32Z", "hours": 1.8061, "text": "part 1 of collision check is complete! my brain sometimes gives me hints of a solution to a coding problem and i need to decipher the rest myself from what it pictures to what needs to be written the blue dots on the video is the range its gonna check from to see if its within the circle"}, {"post_id": 24475, "ts": "2026-07-08T01:35:44Z", "hours": 1.5025, "text": "pixels are correctly detected!!! since the entire thing was scaled, i had to unscale the mouse coordinates to get the pixel coordinates back. I also spent a bunch of time trying to figure out how to basically detect collision and it was a pain . but i think i figured something out! (second pic is my planning) I LOVE CODING WOOOOOO"}, {"post_id": 24398, "ts": "2026-07-07T22:31:03Z", "hours": 0.4536, "text": "Brush has working visuals! i drew a cursor since the screenshot doesnt contain one. contains fully adjustable brush size with a scroll wheel! next up is making it draw… hopefully it wont cause 1 billion lag!"}, {"post_id": 23666, "ts": "2026-07-06T19:37:19Z", "hours": 0.7414, "text": "Implemented Pygame for UI! grid now displays properly, and is scaled to a 500x500 resolution. not sure how it would do with constant updates, might switch to a different system later on. plan is to render a circle over the mouse when hovered over the grid, which is going to be the paint brush. also considering making the piece in between the lines a mix of all colors around it"}, {"post_id": 23610, "ts": "2026-07-06T17:46:33Z", "hours": 2.2703, "text": "Grid renders correctly! parameters can customize the length easily!"}, {"post_id": 23273, "ts": "2026-07-06T03:55:13Z", "hours": 0.2747, "text": "Planning the structure!"}]...
|
Title: Pixel Void by @carinshark | Stardance
Devl Title: Pixel Void by @carinshark | Stardance
Devlogs:
Planning the structure!
Grid renders correctly! parameters can customize the length easily!
Implemented Pygame for UI! grid now displays properly, and is scaled to a 500x500 resolution. not sure how it would do with constant updates, might switch to a different system later on. plan is to render a circle over the mouse when hovered over the grid, which is going to be the paint brush. also considering making the piece in between the lines a mix of all colors around it
Brush has working visuals! i drew a cursor since the screenshot doesnt contain one. contains fully adjustable brush size with a scroll wheel! next up is making it draw… hopefully it wont cause 1 billion lag!
pixels are correctly detected!!! since the entire thing was scaled, i had to unscale the mouse coordinates to get the pixel coordinates back. I also spent a bunch of time trying to figure out how to basically detect collision and it was a pain . but i think i figured something out! (second pic is my planning) I LOVE CODING WOOOOOO
part 1 of collision check is complete! my brain sometimes gives me hints of a solution to a coding problem and i need to decipher the rest myself from what it pictures to what needs to be written the blue dots on the video is the range its gonna check from to see if its within the circle
The Brush Can Paint Now!! I tried to make it as optimized as I could but there’s still a lot to improve on! I got such satisfaction seeing it work for the first time this genuinely took so long - so many issues one of the silliest ones was that i had 2 variables that had similar names (because they did similar things) and i used the wrong one!!! i forgot to occasionally change the size of the grid so it was tragic when i found out everything was broken when i changed it 😱😱😱 Isn’t the ✨distance formula✨ the greatest thing ever? now hopefully i just need to add more color options, improve the ui a bit, and it should be ready!
The brush supports other colors now! clicking leftmouse activates one color, and right mouse activates the other! clicking both mixes the color as a bonus, which currently just averages the rgb values, so might change that later if it looks bad for complementary colors. I can feel this project start to come together ^_^ I also fixed some bugs that the brush had because it was detecting the pixels completely wrong and inefficiently!
UI design day! Today was my day off so I did not do much. I planned out the UI a bit, and was going to work on it on aseprite, but the wakatime extension kept causing the app to freeze and opened a new terminal every second.
(#10) UI Planned out! I still need to figure out what to do with some of the empty space, but a lot of it is filled in now. I’ve also started implementation of the color picker I designed! (third image)
(#11) Color picker is complete ^_^ ok well there are a few things to fine tune but this was my first time making my own inputs for pygame! I added a bit of extra space on the click detection since the slider was a bit small, so hopefully it should make it more user friendly! the strugle Everything was surpsisingly working smoothly - except for the fact that I never set it up for the screen to update!!! turns out it updated once and never again, and when I fixed that it all worked yayayay I’m learning a lot about pygame doing this!
The canvas is now a strong indepenent individual! After making the color picker, I realized - the main drawing canvas was not modular at all!! it would have been a pain to add anything new or change the UI in any way, So i’ve moved the entire thing into it’s own class, and made it support the same input system the color picker uses!! This also means I could theoretically have MULTIPLE canvas to draw on!! the possibilities are endless….
New modular UI has been implemented! It fully works, and I’ve also designed a new piece of the UI for color palette on aseprite! this should hopefully be able to be implemented quite easily with the new system. The main reason i’m doing this is because it was quite hard to get the same color twice, and this will give you the ability to save them. IVE ALSO NOTICED THAT IVE SPELLED PALETTE AS PALLETTE ON ALL MY CODE SO NOW I NEED TO FIX THAT
Added a color palette system! so funny thing- when I added this, the right click input just stopped registering so had to spend some time figuring out what changed!!! colors can now be added and removed in the palette! I’m not the most proud of the design of it, it works! Main problem is that some of the UI elements feel too small due to just the way it is. Hopefully by the end all the lil issues will be fixed
Added buttons! You can now load and save from files, which also saves your current colors and the palette as well. In addition, you can download as an image or the canvas! this wasn’t too hard, was mostly research on file prompts and saving numpy files, so I got distracted with my work quite often and went on to do other stuff. I’m also getting better at learning to draw on this thing, and am thinking of some things I could include in the readme guide.
Added some UI settings! the app now lets you customize the length and amount of squares in the grid! I haven’t fully implemented it because I ran out of time, but yay stuff! I do realize the UI colors are kinda a mess so ill need to fix that. The project is almost complete!! p.s. - sorry I didnt have anything to draw this time, I spent the whole day cleaning and stuff so i’m short on time today
UI REVAMP! Everything was so inconsistent so I spent some time recoloring everything! (before and after images) In the process i learned that an old feature I had (debug mode, which showed cool dots on the screen) hasn’t been working for a reallly long time!!! woops- had to fix that Its almost ready to ship!! Just need to work on the readme and add some finishing touches!
Decided to pause preparing for shipping During some field testing, I learned that the user experience needs improvement. I need to make buttons more clear, and add the greatest thing to be created: THE UNDO BUTTON !!! So this is my goal moving forward! In the meantime, this is the logo I made for the app! Since this entire project was inspired by 7-segment displays, thats what the logo portrays, along with some filler lines on top to fill in the extra space :)
The user is experienced! Added some UX features - buttons can be told apart easier, and the undo button works!! Here is today’s work - the stormy mountain. I think i’m understanding rules i can include for the readme - you have to work with the white space rather than fill it in. You have to treat it different than pixel art. I’m gonna make the README, do some field testing, and if it goes well, ship time!!
README is complete! I added instructions on installing, some tips and tricks, and an overview of how to use the UI. I was struggling with the MacOS Build for this app, due to not having a mac, so i’ve decided to keep the support currently for windows and linux only (tho I guess you could still compile the code directly if you wanted to). I think i’m finally ready to ship!
Ships:
This is PixelVoid! A drawing app that limits your placement of color! (Like the structure of a 7 segment display but extended) My favorite thing about making this was using inheritance to combine pygame with my own code. It was quite challenging to get the coordinates of the mouse to match the custom grid of lines that it has. That was probably where I spent most of my time. Please note: this project only contains executable binaries for linux and windows. MacOS is not currently supported. The README should contain tips and tricks as well to help you create something wonderful!...
|
1793109206.1648765
|
1793195606.1648765
|
|
39387
|
ROCKET LAUNCHER by @nishchaybhudia | Stardance
|
nishchaybhudia
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-28T18:44:27Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A rocket sim in pygame … you build a multi stage rocket from parts in an assembly bay, then launch it and try to reach orbit. It’s got a real (ish lol) physics model (gravity, atmosphere, drag) and an autopilot that can fly the ascent for you. Getting the orbital physics to actually behave …the gravity turn and the insertion burn kept overshooting or flipping the rocket. The other headache was drag: I forgot the atmosphere spins with the planet, so the numbers were way off until I accounted for that. …. have fun trying because i defo did not have fun debugging this one lol", "repo": "https://github.com/Hidden-Ghost-123/ROCKET-FLYING-SIM", "demo": "https://hidden-ghost-123.github.io/ROCKET-FLYING-SIM/"}]...
|
[{"post_id": 36477, "ts": "202 [{"post_id": 36477, "ts": "2026-07-28T16:42:57Z", "hours": 6.0, "text": "i fixed many major bugs .. i have now completed the game and am about to ship .. if you have any features that would make the game better then please comment … i would really appreciate the critisism … i fixed bugs such as a infitnite fuel glithch and a auto bootser dropper bug that happens when you reach a certain alititute but havnt clicked the detach button even with plenty of fluel left…"}, {"post_id": 36285, "ts": "2026-07-28T09:02:13Z", "hours": 5.0, "text": "im just finishing off the game now … i worked on fixing some incoveniences that you may encounter while playing … i worked on re organising the homescreen so it is more approachable and easy to navigate.. i make the refresh rate every 20 seconds to that you can easily make changes while you are playing .. i then encountered a bug that if you click 2 operations together your rocket has infinite fuel and it NEVER runs out .. which is not good , good for you guys playing maybe … but this was not good … so i need to fix that in this next devlog coming up…. stay tuned !!"}, {"post_id": 35887, "ts": "2026-07-27T16:42:10Z", "hours": 6.0, "text": "Circularisation, the report screen, balancing. The circularisation burn was overshooting spectacularly. Ask for a 200 km orbit and you get 200 x 4578 km. The cut off condition was “burn until the delta-v needed at apoapsis is zero”, and the flaw in that is that the moment the engine lights, the apoapsis runs away in front of the ship, so the number it is chasing keeps moving and it burns to depletion. Split it in two: circularisation_dv() still uses the apoapsis figure to decide when to start the burn, and a new remaining_burn_dv() compares current speed against circular speed at the current radius to decide when to stop. Also tapered the throttle as the burn finishes, because a nearly dry upper stage pulls about 7 g and blows straight past the target in the last two seconds. Then a subtler one. Success is declared when periapsis passes 140 km, and it was firing in the middle of the burn, so a 200 km orbit was being reported as “140 x 202 km” and the flight ended early. Now the check also requires the engine to be off. Reads better and gives the right numbers. Rest of the session was the report screen. Two graphs drawn from the telemetry samples, summary panel, event list, and a CSV export so I can open a flight in a spreadsheet. draw_graph() divided by zero on its first run because a flight that ends on the pad has a maximum of zero on both axes, so the scaling starts from 1.0 now. Time warp was the last problem. I accumulate real time multiplied by the warp factor and step 20 ms at a time, and at high warp the loop could not keep up, so the accumulator grew every frame and the game got slower and slower until it stopped responding. Capped it at 900 steps per frame and drop the leftover. Time is slightly wrong at extreme warp, which nobody will notice, and the frame rate holds. Finished by flying every preset to orbit and adjusting the tank sizes until they all just about make it — the medium launcher gets to a 192 x 208 km orbit with about 1.4 tonnes of propellant left, which is close enough that a sloppy ascent profile still loses the vehicle. That is the point of it. Known things I am leaving alone: there is no rotating frame drag on the vehicle during the coast, the sounding rocket preset still tries to run a circularisation burn it has no hope of completing, and the map view does not draw a predicted orbit path, only the trail it has already flown…. wow that was a huge devlog .. next im going to work on making the code as efficient as possible and fixing many many bugs"}, {"post_id": 35671, "ts": "2026-07-27T08:30:11Z", "hours": 7.0, "text": "wow … i feel like i actually work at nasa !!!!!!!! @nasa Guidance. Mostly one very stupid bug. The plan was simple: fly straight up to the turn altitude, pitch over on a square root curve, follow prograde, stage automatically, coast, circularise. The first four hours of this session were spent on a rocket that flew sideways into the ground five seconds after lift off, every single time, with the pitch program pinned at 79 degrees before it had cleared the tower. The cause is almost funny. I start the vehicle already moving at 465 m/s eastwards, because that is what sitting on a rotating planet means, and the autopilot has an angle of attack limiter that says “do not point more than 11 degrees away from prograde while there is air about”. On the pad, prograde in the inertial frame is 90 degrees, straight sideways. So the limiter looked at a vehicle sitting still on the ground, decided it was already flying east at Mach 1.4, and dutifully pitched the rocket over to match. The fix is air_prograde_pitch(), which subtracts the local air velocity before working out the angle. Angle of attack is defined against the airflow, not against an inertial frame, so this is the correct thing anyway. I spent those four hours convinced the bug was in the pitch interpolation. Once that was sorted the vehicle flew a proper gravity turn, and then failed a completely different way. It would level off at about 100 km, sit there, and burn the whole upper stage flying horizontally, ending up with an apoapsis of 102 km and a periapsis just under the surface. The pitch program hits its final value at 64 km, so from then on the vehicle points flat and the apoapsis just never climbs to the target. Added an apoapsis hold to ascent_pitch(): above 40 km, if apoapsis is short of target, work out a wanted climb rate and lift the nose above prograde by up to 30 degrees to get it. Crude proportional control but it works, and the shortfall term means it lifts hard early and eases off as the apoapsis comes up. Small one at the end of the session: I found the vehicle getting slightly more delta-v than the fuel could pay for. On the last physics tick of a stage the code was applying a full step of thrust while only being able to subtract the fuel that was actually left. Now the thrust is scaled by the fraction of the requested propellant that exists. Next: the circularisation burn, which I already know is wrong."}, {"post_id": 35262, "ts": "2026-07-26T15:47:05Z", "hours": 7.0, "text": "Pygame, the assembly bay, and drawing the rocket. Window, clock, fixed timestep, font loading, screen switching. Then the whole assembly bay: catalogue panel on the left, the stack in the middle, stage list, performance panel with the ascent profile sliders. Everything is drawn from pygame primitives, no widget library, so I wrote small Button, Slider and TextInput classes. Three things bit me. The first was drawing the rocket at an angle. rotate_point() looked right and the stack still went haywire once the pitch passed about 30 degrees. The rotate function was fine. The problem was that I was rotating each part around its own centre instead of around a single pivot at the base of the vehicle, so the stack unfolded like a fan. Passing the pivot in explicitly fixed it. Worth saying that on a screen y grows downwards, so the rotation you write is the mirror of the one on paper, and I got that wrong first too. Second, the camera. I scaled pixels per metre as SCREEN_H / altitude, which divides by zero on the pad and then makes the rocket a single pixel by 5 km. Now the view height is altitude * 2.4 + 90 metres clamped to a sane range, so you start with a 90 m tall view and it opens out smoothly. Below about 14 pixels of vehicle I stop drawing the real shape and draw a marker with a plume, otherwise it is just a flickering smudge. Third, clicking parts in the catalogue. As soon as I added scrolling, clicks started adding the wrong part. The hit test was using raw mouse coordinates while the drawing used mouse minus scroll offset. Now the click rectangles are built during the draw pass with the offset already applied and stored in self.catalogue_rects, and the click handler just walks that list. Same trick for the stage list and for removing fitted parts. Also learned the hard way that pygame.font.SysFont(“consolas”, 14) silently gives you an ugly default if the font is not installed, which it is not on a lot of machines. Passing a comma separated list of names means it tries each in turn."}, {"post_id": 34862, "ts": "2026-07-25T22:21:08Z", "hours": 8.0, "text": "wow this is going to be a massive devlog …. i was supposed to post one earlier this afternoon but its now nearly 12 am lol … anyways …. Wrote the Part class and the catalogue. Engines, tanks, nose cones,payloads. The numbers are loosely inspired by real hardware but I deliberately did not use real names. Every engine carries sea level and vacuum thrust and Isp, and Stage.thrust() interpolates between them on ambient pressure, so a vacuum bell is genuinely useless at sea level and genuinely good up high. Getting the delta-v map right took two goes. My first version computed each stage’s mass ratio from that stage’s own mass only, which made the upper stages look like they had thousands of m/s and the first stage almost nothing. Obvious the moment you say it out loud, since stage one has to push everything stacked above it as well. Added Rocket.mass_from(index) and used it for both the start and end masses. Second mistake in the same corner: I was using sea level Isp in Tsiolkovsky. Everyone quotes vacuum delta-v, so my numbers did not match anything I could compare against. Switched to stage.isp(0.0) and left a comment saying it flatters the first stage, because it does. The Isp of a stage with mixed engines was the fiddly bit. You cannot average Isp directly, you have to add the mass flows and divide the total thrust by them. Wrote it as a thrust weighted average in Stage.isp() and tested it with two engines whose Isp differ by 100 s. Spent the last two hours balancing the catalogue so the preset vehicles are not ridiculous. My first heavy launcher lifted off at a thrust to weight of 3.7, which flies like a dart and burns most of its propellant fighting drag in the first 20 km. Real launchers sit somewhere around 1.2 to 1.7. Fixed by pairing each engine with much larger tanks, which also brought first stage burn times up to a believable 120 to 200 seconds instead of forty. …"}, {"post_id": 34525, "ts": "2026-07-25T09:51:34Z", "hours": 8.0, "text": "Physics only, nothing on screen yet. Started with the part I was least confident about, which is the atmosphere. I wanted drag to actually matter instead of being a made up constant, so I looked up the International Standard Atmosphere and typed the layer table in by hand: base altitude, base temperature, base pressure, lapse rate, seven layers up to 84.8 km. The barometric formula has two cases, one for layers where the temperature changes with height and one for the isothermal layers where the lapse rate is zero, and I lost about an hour to the first one. My pressures came out roughly three times too low above 20 km. I had written the exponent as -G0 * lapse / AIR_R instead of -G0 / (lapse * AIR_R). Staring at it did nothing. What actually found it was printing my pressure at 0, 11, 20 and 32 km next to the published numbers, at which point it was obvious the error grew with altitude and therefore lived in the exponent. The second problem was the top of the atmosphere. Above 84.8 km the tables run out so I bolted on an exponential tail, and then noticed the vehicle was still picking up a tiny bit of drag at 300 km, which slowly ate the orbit over a long coast. Added a linear fade so density genuinely hits zero at ATMOSPHERE_TOP = 140 km. Not physically correct, but the alternative is modelling the thermosphere and I am not doing that for a game. Last thing was the integrator. I wrote Euler first because it is four lines, and wrote a test that drops a mass from 200 km with no thrust and no air and checks that the specific orbital energy stays constant. It did not. It drifted about half a percent per simulated minute, which sounds harmless until you realise a long coast to apoapsis is fifteen minutes and the apoapsis walks while you watch it. Rewrote derivatives() and pushed it through RK4, holding thrust and mass fixed across the four evaluations. The mass changes by a few kg over a 20 ms step so it makes no difference, and it keeps the state vector down to four numbers instead of five. Energy now holds to about seven decimal places."}]...
|
Title: ROCKET LAUNCHER by @nishchaybhudia | Starda Title: ROCKET LAUNCHER by @nishchaybhudia | Stardance
Devlogs:
Physics only, nothing on screen yet. Started with the part I was least confident about, which is the atmosphere. I wanted drag to actually matter instead of being a made up constant, so I looked up the International Standard Atmosphere and typed the layer table in by hand: base altitude, base temperature, base pressure, lapse rate, seven layers up to 84.8 km. The barometric formula has two cases, one for layers where the temperature changes with height and one for the isothermal layers where the lapse rate is zero, and I lost about an hour to the first one. My pressures came out roughly three times too low above 20 km. I had written the exponent as -G0 * lapse / AIR_R instead of -G0 / (lapse * AIR_R). Staring at it did nothing. What actually found it was printing my pressure at 0, 11, 20 and 32 km next to the published numbers, at which point it was obvious the error grew with altitude and therefore lived in the exponent. The second problem was the top of the atmosphere. Above 84.8 km the tables run out so I bolted on an exponential tail, and then noticed the vehicle was still picking up a tiny bit of drag at 300 km, which slowly ate the orbit over a long coast. Added a linear fade so density genuinely hits zero at ATMOSPHERE_TOP = 140 km. Not physically correct, but the alternative is modelling the thermosphere and I am not doing that for a game. Last thing was the integrator. I wrote Euler first because it is four lines, and wrote a test that drops a mass from 200 km with no thrust and no air and checks that the specific orbital energy stays constant. It did not. It drifted about half a percent per simulated minute, which sounds harmless until you realise a long coast to apoapsis is fifteen minutes and the apoapsis walks while you watch it. Rewrote derivatives() and pushed it through RK4, holding thrust and mass fixed across the four evaluations. The mass changes by a few kg over a 20 ms step so it makes no difference, and it keeps the state vector down to four numbers instead of five. Energy now holds to about seven decimal places.
wow this is going to be a massive devlog …. i was supposed to post one earlier this afternoon but its now nearly 12 am lol … anyways …. Wrote the Part class and the catalogue. Engines, tanks, nose cones,payloads. The numbers are loosely inspired by real hardware but I deliberately did not use real names. Every engine carries sea level and vacuum thrust and Isp, and Stage.thrust() interpolates between them on ambient pressure, so a vacuum bell is genuinely useless at sea level and genuinely good up high. Getting the delta-v map right took two goes. My first version computed each stage’s mass ratio from that stage’s own mass only, which made the upper stages look like they had thousands of m/s and the first stage almost nothing. Obvious the moment you say it out loud, since stage one has to push everything stacked above it as well. Added Rocket.mass_from(index) and used it for both the start and end masses. Second mistake in the same corner: I was using sea level Isp in Tsiolkovsky. Everyone quotes vacuum delta-v, so my numbers did not match anything I could compare against. Switched to stage.isp(0.0) and left a comment saying it flatters the first stage, because it does. The Isp of a stage with mixed engines was the fiddly bit. You cannot average Isp directly, you have to add the mass flows and divide the total thrust by them. Wrote it as a thrust weighted average in Stage.isp() and tested it with two engines whose Isp differ by 100 s. Spent the last two hours balancing the catalogue so the preset vehicles are not ridiculous. My first heavy launcher lifted off at a thrust to weight of 3.7, which flies like a dart and burns most of its propellant fighting drag in the first 20 km. Real launchers sit somewhere around 1.2 to 1.7. Fixed by pairing each engine with much larger tanks, which also brought first stage burn times up to a believable 120 to 200 seconds instead of forty. …
Pygame, the assembly bay, and drawing the rocket. Window, clock, fixed timestep, font loading, screen switching. Then the whole assembly bay: catalogue panel on the left, the stack in the middle, stage list, performance panel with the ascent profile sliders. Everything is drawn from pygame primitives, no widget library, so I wrote small Button, Slider and TextInput classes. Three things bit me. The first was drawing the rocket at an angle. rotate_point() looked right and the stack still went haywire once the pitch passed about 30 degrees. The rotate function was fine. The problem was that I was rotating each part around its own centre instead of around a single pivot at the base of the vehicle, so the stack unfolded like a fan. Passing the pivot in explicitly fixed it. Worth saying that on a screen y grows downwards, so the rotation you write is the mirror of the one on paper, and I got that wrong first too. Second, the camera. I scaled pixels per metre as SCREEN_H / altitude, which divides by zero on the pad and then makes the rocket a single pixel by 5 km. Now the view height is altitude * 2.4 + 90 metres clamped to a sane range, so you start with a 90 m tall view and it opens out smoothly. Below about 14 pixels of vehicle I stop drawing the real shape and draw a marker with a plume, otherwise it is just a flickering smudge. Third, clicking parts in the catalogue. As soon as I added scrolling, clicks started adding the wrong part. The hit test was using raw mouse coordinates while the drawing used mouse minus scroll offset. Now the click rectangles are built during the draw pass with the offset already applied and stored in self.catalogue_rects, and the click handler just walks that list. Same trick for the stage list and for removing fitted parts. Also learned the hard way that pygame.font.SysFont(“consolas”, 14) silently gives you an ugly default if the font is not installed, which it is not on a lot of machines. Passing a comma separated list of names means it tries each in turn.
wow … i feel like i actually work at nasa !!!!!!!! @nasa Guidance. Mostly one very stupid bug. The plan was simple: fly straight up to the turn altitude, pitch over on a square root curve, follow prograde, stage automatically, coast, circularise. The first four hours of this session were spent on a rocket that flew sideways into the ground five seconds after lift off, every single time, with the pitch program pinned at 79 degrees before it had cleared the tower. The cause is almost funny. I start the vehicle already moving at 465 m/s eastwards, because that is what sitting on a rotating planet means, and the autopilot has an angle of attack limiter that says “do not point more than 11 degrees away from prograde while there is air about”. On the pad, prograde in the inertial frame is 90 degrees, straight sideways. So the limiter looked at a vehicle sitting still on the ground, decided it was already flying east at Mach 1.4, and dutifully pitched the rocket over to match. The fix is air_prograde_pitch(), which subtracts the local air velocity before working out the angle. Angle of attack is defined against the airflow, not against an inertial frame, so this is the correct thing anyway. I spent those four hours convinced the bug was in the pitch interpolation. Once that was sorted the vehicle flew a proper gravity turn, and then failed a completely different way. It would level off at about 100 km, sit there, and burn the whole upper stage flying horizontally, ending up with an apoapsis of 102 km and a periapsis just under the surface. The pitch program hits its final value at 64 km, so from then on the vehicle points flat and the apoapsis just never climbs to the target. Added an apoapsis hold to ascent_pitch(): above 40 km, if apoapsis is short of target, work out a wanted climb rate and lift the nose above prograde by up to 30 degrees to get it. Crude proportional control but it works, and the shortfall term means it lifts hard early and eases off as the apoapsis comes up. Small one at the end of the session: I found the vehicle getting slightly more delta-v than the fuel could pay for. On the last physics tick of a stage the code was applying a full step of thrust while only being able to subtract the fuel that was actually left. Now the thrust is scaled by the fraction of the requested propellant that exists. Next: the circularisation burn, which I already know is wrong.
Circularisation, the report screen, balancing. The circularisation burn was overshooting spectacularly. Ask for a 200 km orbit and you get 200 x 4578 km. The cut off condition was “burn until the delta-v needed at apoapsis is zero”, and the flaw in that is that the moment the engine lights, the apoapsis runs away in front of the ship, so the number it is chasing keeps moving and it burns to depletion. Split it in two: circularisation_dv() still uses the apoapsis figure to decide when to start the burn, and a new remaining_burn_dv() compares current speed against circular speed at the current radius to decide when to stop. Also tapered the throttle as the burn finishes, because a nearly dry upper stage pulls about 7 g and blows straight past the target in the last two seconds. Then a subtler one. Success is declared when periapsis passes 140 km, and it was firing in the middle of the burn, so a 200 km orbit was being reported as “140 x 202 km” and the flight ended early. Now the check also requires the engine to be off. Reads better and gives the right numbers. Rest of the session was the report screen. Two graphs drawn from the telemetry samples, summary panel, event list, and a CSV export so I can open a flight in a spreadsheet. draw_graph() divided by zero on its first run because a flight that ends on the pad has a maximum of zero on both axes, so the scaling starts from 1.0 now. Time warp was the last problem. I accumulate real time multiplied by the warp factor and step 20 ms at a time, and at high warp the loop could not keep up, so the accumulator grew every frame and the game got slower and slower until it stopped responding. Capped it at 900 steps per frame and drop the leftover. Time is slightly wrong at extreme warp, which nobody will notice, and the frame rate holds. Finished by flying every preset to orbit and adjusting the tank sizes until they all just about make it — the medium launcher gets to a 192 x 208 km orbit with about 1.4 tonnes of propellant left, which is close enough that a sloppy ascent profile still loses the vehicle. That is the point of it. Known things I am leaving alone: there is no rotating frame drag on the vehicle during the coast, the sounding rocket preset still tries to run a circularisation burn it has no hope of completing, and the map view does not draw a predicted orbit path, only the trail it has already flown…. wow that was a huge devlog .. next im going to work on making the code as efficient as possible and fixing many many bugs
im just finishing off the game now … i worked on fixing some incoveniences that you may encounter while playing … i worked on re organising the homescreen so it is more approachable and easy to navigate.. i make the refresh rate every 20 seconds to that you can easily make changes while you are playing .. i then encountered a bug that if you click 2 operations together your rocket has infinite fuel and it NEVER runs out .. which is not good , good for you guys playing maybe … but this was not good … so i need to fix that in this next devlog coming up…. stay tuned !!
i fixed many major bugs .. i have now completed the game and am about to ship .. if you have any features that would make the game better then please comment … i would really appreciate the critisism … i fixed bugs such as a infitnite fuel glithch and a auto bootser dropper bug that happens when you reach a certain alititute but havnt clicked the detach button even with plenty of fluel left…
Ships:
A rocket sim in pygame … you build a multi stage rocket from parts in an assembly bay, then launch it and try to reach orbit. It’s got a real (ish lol) physics model (gravity, atmosphere, drag) and an autopilot that can fly the ascent for you. Getting the orbital physics to actually behave …the gravity turn and the insertion burn kept overshooting or flipping the rocket. The other headache was drag: I forgot the atmosphere spins with the planet, so the numbers were way off until I accounted for that. …. have fun trying because i defo did not have fun debugging this one lol...
|
1792878784.7307148
|
1793742784.7307148
|
|
41290
|
My take on a whiteboard by @jayeshsinghal | Starda My take on a whiteboard by @jayeshsinghal | Stardance...
|
jayeshsinghal
|
1
|
49.0
|
618
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-04T22:17:55Z", "hours": 49.0, "multiplier": 12.53, "payout": 618, "blessing": "neutral", "text": "What I made was a whiteboard for myself with infinite zoom and an easy space to organize notes. I was challenged by a lot of things, but I took time to work through them. Especially challenged by the export.", "repo": "https://github.com/jsplaystore/Whiteboard", "demo": "https://whiteboard-eastside.vercel.app/"}]...
|
[{"post_id": 41013, "ts": "202 [{"post_id": 41013, "ts": "2026-08-04T22:10:41Z", "hours": 2.2008, "text": "FINAL DEVLOG BEFORE SHIP. (I spent 47 hours teaching myself to build a whiteboard this week 😭) Thats not a problem, I didn’t have anything to do anyway. Okay, what i’ve done. First off I did the PDF export but then I realized that its not helpful at all to have a static image of an infinite zoom whiteboard, so I made an adjustment to an HTML export. (this took quite a while because i’ve never implemented an export before so I had quite a bit of debugging to do, excerpt of the script below.) I also added the right click. Anyway, pushing to vercel and finalizing github now."}, {"post_id": 40945, "ts": "2026-08-04T19:57:29Z", "hours": 2.1164, "text": "Okay, so what I realized is that you can’t navigate the whiteboard using anything, so I added right-click scroll. More detailed devlog later once I finish up the Export."}, {"post_id": 40555, "ts": "2026-08-04T05:46:44Z", "hours": 6.4878, "text": "got a lot done today. Devlog #7 or 8? Anyway, I took some time to fix the sticky note issue. addNote mixed units. When centering a new note, it subtracted a screen-pixel offset (NOTE_WIDTH/2) directly from a world-space coordinate instead of dividing it by scale first. CSS transform: scale() made text blurry. My first attempt at “scale with zoom” applied a single CSS scale() transform to the whole notes layer. So those issues were fixed and the sticky notes scale with zoom. I then ran into the issue of not being able to find sticky notes zoomed in alot, so I made a minimap to find your notes. (I think its getting really complex) Anyway… Added a small canvas, bottom-right corner, that: Computes the bounding box of all your strokes + notes (reusing the same bounds logic as “Fit content”), unioned with your current viewport so the indicator is always inside the map. Fits that box into a 200×140px canvas and redraws it every frame: strokes as thin dark lines, notes as colored rectangles. Draws your current viewport as a purple rectangle with a translucent fill and a 14px minimum size, so it doesn’t shrink to invisibility when you’re zoomed in a lot. Is clickable: clicking anywhere on it pans the main view to that spot (inverting the same fit-to-box math used to draw it). Now, last addition I want to do is add PDF export, and I think this is ready to ship. Images attached of progress! See ya in the next one."}, {"post_id": 39912, "ts": "2026-08-03T06:41:55Z", "hours": 5.2158, "text": "Okay – productive day today (i think) Unfortunately, I tried to implement sticky notes but I got pretty frustrated becasue I couldn’t get them to scale with the zoom of the whiteboard (super complex for some reason), so i am going to put more time into and see what I can do. It’s pretty late so expect a more detailed devlog tomorrow."}, {"post_id": 38884, "ts": "2026-08-01T13:31:28Z", "hours": 5.8733, "text": "I’m back. Devlog 6. Heres what i’ve done: Added a partial eraser that removes the point under the cursor and splits the stroke into remaining pieces. Effectively unlimited zoom now added, range widened from 0.0005×–2000× to 1e-6×–1e6× (true infinity isn’t representable in floating point, but this is far beyond any practical drawing scale). Fit content button now allows you to not lose your notes in the big space… computes the bounding box of everything drawn and animates the view to frame it all, so no matter how far you’ve zoomed in or out, you can always snap back and find your notes instead of losing them in empty space What to do: Lessen the speed of zoom Add more features. Images are the partial eraser working"}, {"post_id": 38509, "ts": "2026-07-31T22:48:10Z", "hours": 5.9586, "text": "Okay, so today I took some time to fix things from yesterdays devlog Oh wait, Devlog #5 (i think) Here’s what I did: pointermove now pulls getCoalescedEvents() to capture every sub-frame sample the browser batched (previously only the latest position per frame was used, which is what caused faceting on fast circular motion). Also added a small minimum-distance filter (~1.2 screen px) to suppress mouse-sensor jitter without losing shape on fast strokes. wheel input now updates a targetView and a requestAnimationFrame loop eases the actual view toward it (lerp factor 0.3) instead of snapping instantly. Panning or hitting Reset cancels any in-flight zoom animation and re-syncs the target so it doesn’t jump afterward. Same issue with the infinite zoom is only about 20000x so I think by slowing the zoom increments will give the illusion of more “infinite zoom”. Also, things will get small so you can lose notes so I am going to try and workshop some solutions. Overall, progress being made."}, {"post_id": 38011, "ts": "2026-07-31T04:29:18Z", "hours": 5.8892, "text": "Okay, so devlog #4, and probably the last one for today… Here is what i’ve done: Infinite zoom, scale range widened from 0.1×–8× to 0.0005×–2000× (effectively unbounded for practical use), plus an adaptive dot grid that keeps spacing readable at any zoom level so the space still feels navigable instead of a blank void. Added a live zoom-% readout and a “Reset view” button in the toolbar. (Screenshots below) – Also, infinite zoom not totally infinite yet, but its more “infinite” than the last devlog, also need to workshop this. Smoother strokes, replaced straight lineTo segments between raw pointer samples with quadraticCurveTo through midpoints, so fast circular motions render as smooth curves instead of jagged polygons. (Before and After below) – Honestly, its still kinda sucky, and maybe even worse then before, so I have to workshop this a little bit over the next few devlogs… Added reset view and view UI buttons, but not working yet, so this will be done next as well. Things left to do (aside from whats highlighted above): Add more features Make it more quirky Make it less boring Collaborative whiteboard??? (probably not.) First three kinda the same lol."}, {"post_id": 37900, "ts": "2026-07-30T21:49:25Z", "hours": 4.8006, "text": "Devlog #4 – I think? What I’ve done: Calibrated the mouse tool Created a stroke eraser (not semi) What to do? Stroke semi-eraser Infinite zoom Add various features as I think them up"}, {"post_id": 37416, "ts": "2026-07-30T03:37:15Z", "hours": 4.5544, "text": "Devpost 3! What I’ve Done: After a bit of learning, I was able to build the initial whiteboard and deploy it in my browser. I was also able to afix a drawing tool to it, so you can draw things. Things I need to do: Draw tool is not calibrated correctly with mouse (see attachment below; black point represents where my mouse is clicking) Can’t zoom infinitely Your ideas are permanent (which is not ideal), so I will make an erase feature. Overall, its very barebones and boring. As always, I’ve attached a sample of the code I’ve added."}, {"post_id": 37236, "ts": "2026-07-29T19:51:38Z", "hours": 3.9142, "text": "Hi Everyone! Devlog #2 for my own whiteboard project… So far what i’ve been able to to do is 2 things, I removed the boilerplate assets from the Vite setup and I had App.tsx render a bare resizable to serve as the base for my whiteboard… Attached is an image of the base whiteboard script…"}, {"post_id": 36825, "ts": "2026-07-29T03:59:48Z", "hours": 2.3256, "text": "Learned about Vite frontend which is a software to build things like whiteboards with the features that I want, and built the scaffolding… took a bit of debugging but I figured it out."}]...
|
Title: My take on a whiteboard by @jayeshsinghal | Title: My take on a whiteboard by @jayeshsinghal | Stardance
Devlogs:
Learned about Vite frontend which is a software to build things like whiteboards with the features that I want, and built the scaffolding… took a bit of debugging but I figured it out.
Hi Everyone! Devlog #2 for my own whiteboard project… So far what i’ve been able to to do is 2 things, I removed the boilerplate assets from the Vite setup and I had App.tsx render a bare resizable to serve as the base for my whiteboard… Attached is an image of the base whiteboard script…
Devpost 3! What I’ve Done: After a bit of learning, I was able to build the initial whiteboard and deploy it in my browser. I was also able to afix a drawing tool to it, so you can draw things. Things I need to do: Draw tool is not calibrated correctly with mouse (see attachment below; black point represents where my mouse is clicking) Can’t zoom infinitely Your ideas are permanent (which is not ideal), so I will make an erase feature. Overall, its very barebones and boring. As always, I’ve attached a sample of the code I’ve added.
Devlog #4 – I think? What I’ve done: Calibrated the mouse tool Created a stroke eraser (not semi) What to do? Stroke semi-eraser Infinite zoom Add various features as I think them up
Okay, so devlog #4, and probably the last one for today… Here is what i’ve done: Infinite zoom, scale range widened from 0.1×–8× to 0.0005×–2000× (effectively unbounded for practical use), plus an adaptive dot grid that keeps spacing readable at any zoom level so the space still feels navigable instead of a blank void. Added a live zoom-% readout and a “Reset view” button in the toolbar. (Screenshots below) – Also, infinite zoom not totally infinite yet, but its more “infinite” than the last devlog, also need to workshop this. Smoother strokes, replaced straight lineTo segments between raw pointer samples with quadraticCurveTo through midpoints, so fast circular motions render as smooth curves instead of jagged polygons. (Before and After below) – Honestly, its still kinda sucky, and maybe even worse then before, so I have to workshop this a little bit over the next few devlogs… Added reset view and view UI buttons, but not working yet, so this will be done next as well. Things left to do (aside from whats highlighted above): Add more features Make it more quirky Make it less boring Collaborative whiteboard??? (probably not.) First three kinda the same lol.
Okay, so today I took some time to fix things from yesterdays devlog Oh wait, Devlog #5 (i think) Here’s what I did: pointermove now pulls getCoalescedEvents() to capture every sub-frame sample the browser batched (previously only the latest position per frame was used, which is what caused faceting on fast circular motion). Also added a small minimum-distance filter (~1.2 screen px) to suppress mouse-sensor jitter without losing shape on fast strokes. wheel input now updates a targetView and a requestAnimationFrame loop eases the actual view toward it (lerp factor 0.3) instead of snapping instantly. Panning or hitting Reset cancels any in-flight zoom animation and re-syncs the target so it doesn’t jump afterward. Same issue with the infinite zoom is only about 20000x so I think by slowing the zoom increments will give the illusion of more “infinite zoom”. Also, things will get small so you can lose notes so I am going to try and workshop some solutions. Overall, progress being made.
I’m back. Devlog 6. Heres what i’ve done: Added a partial eraser that removes the point under the cursor and splits the stroke into remaining pieces. Effectively unlimited zoom now added, range widened from 0.0005×–2000× to 1e-6×–1e6× (true infinity isn’t representable in floating point, but this is far beyond any practical drawing scale). Fit content button now allows you to not lose your notes in the big space… computes the bounding box of everything drawn and animates the view to frame it all, so no matter how far you’ve zoomed in or out, you can always snap back and find your notes instead of losing them in empty space What to do: Lessen the speed of zoom Add more features. Images are the partial eraser working
Okay – productive day today (i think) Unfortunately, I tried to implement sticky notes but I got pretty frustrated becasue I couldn’t get them to scale with the zoom of the whiteboard (super complex for some reason), so i am going to put more time into and see what I can do. It’s pretty late so expect a more detailed devlog tomorrow.
got a lot done today. Devlog #7 or 8? Anyway, I took some time to fix the sticky note issue. addNote mixed units. When centering a new note, it subtracted a screen-pixel offset (NOTE_WIDTH/2) directly from a world-space coordinate instead of dividing it by scale first. CSS transform: scale() made text blurry. My first attempt at “scale with zoom” applied a single CSS scale() transform to the whole notes layer. So those issues were fixed and the sticky notes scale with zoom. I then ran into the issue of not being able to find sticky notes zoomed in alot, so I made a minimap to find your notes. (I think its getting really complex) Anyway… Added a small canvas, bottom-right corner, that: Computes the bounding box of all your strokes + notes (reusing the same bounds logic as “Fit content”), unioned with your current viewport so the indicator is always inside the map. Fits that box into a 200×140px canvas and redraws it every frame: strokes as thin dark lines, notes as colored rectangles. Draws your current viewport as a purple rectangle with a translucent fill and a 14px minimum size, so it doesn’t shrink to invisibility when you’re zoomed in a lot. Is clickable: clicking anywhere on it pans the main view to that spot (inverting the same fit-to-box math used to draw it). Now, last addition I want to do is add PDF export, and I think this is ready to ship. Images attached of progress! See ya in the next one.
Okay, so what I realized is that you can’t navigate the whiteboard using anything, so I added right-click scroll. More detailed devlog later once I finish up the Export.
FINAL DEVLOG BEFORE SHIP. (I spent 47 hours teaching myself to build a whiteboard this week 😭) Thats not a problem, I didn’t have anything to do anyway. Okay, what i’ve done. First off I did the PDF export but then I realized that its not helpful at all to have a static image of an infinite zoom whiteboard, so I made an adjustment to an HTML export. (this took quite a while because i’ve never implemented an export before so I had quite a bit of debugging to do, excerpt of the script below.) I also added the right click. Anyway, pushing to vercel and finalizing github now.
Ships:
What I made was a whiteboard for myself with infinite zoom and an easy space to organize notes. I was challenged by a lot of things, but I took time to work through them. Especially challenged by the export....
|
1792878783.0897236
|
1793742783.0897236
|
|
43116
|
X-Revenant by @nejenabinupa | Stardance
|
nejenabinupa
|
1
|
49.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T17:17:01Z", "hours": 49.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this model is finished now all of the details are in the readme how you like it", "repo": "https://github.com/binupax6699/X-REVENANT-3D-MODLE", "demo": "https://sketchfab.com/3d-models/x-revenant-d105edc6008d4e148df14087eecc2355"}]...
|
[{"post_id": 77351, "ts": "202 [{"post_id": 77351, "ts": "2026-10-06T17:11:44Z", "hours": 1.4131, "text": "finished up all and its ready now"}, {"post_id": 43397, "ts": "2026-08-08T16:48:16Z", "hours": 6.4225, "text": "Finally finished baking the textures to the body"}, {"post_id": 42499, "ts": "2026-08-07T08:42:02Z", "hours": 9.8578, "text": "I did the texturing for the all and I make the interior and put weapons that come out from openings, next will be backing the texture and sum small details to make it perfect."}, {"post_id": 41340, "ts": "2026-08-05T14:27:20Z", "hours": 10.5606, "text": "I added small details and sum small changes to the topology and cut out opening to add this that come out and I add the landing gear and it was the most complex part today and i even animated it and it look so perfect."}, {"post_id": 40203, "ts": "2026-08-03T16:38:36Z", "hours": 10.9303, "text": "Did so much changes and I think this is the final model I can get, maybe little more changes and textures I can add in next devlog, it’s looking good i think I did a great job to get to here and make it much more my style and better over time"}, {"post_id": 39555, "ts": "2026-08-02T16:15:05Z", "hours": 10.265, "text": "Took so long to make the based mash and it was good enough to work ok and need to make it perfect and make some small small changes along the way."}]...
|
Title: X-Revenant by @nejenabinupa | Stardance
De Title: X-Revenant by @nejenabinupa | Stardance
Devlogs:
Took so long to make the based mash and it was good enough to work ok and need to make it perfect and make some small small changes along the way.
Did so much changes and I think this is the final model I can get, maybe little more changes and textures I can add in next devlog, it’s looking good i think I did a great job to get to here and make it much more my style and better over time
I added small details and sum small changes to the topology and cut out opening to add this that come out and I add the landing gear and it was the most complex part today and i even animated it and it look so perfect.
I did the texturing for the all and I make the interior and put weapons that come out from openings, next will be backing the texture and sum small details to make it perfect.
Finally finished baking the textures to the body
finished up all and its ready now
Ships:
this model is finished now all of the details are in the readme how you like it...
|
1793148441.4466455
|
1793234841.4466455
|