|
51983
|
Drums_Kit_Player by @jithendra | Stardance
|
jithendra
|
1
|
1.93
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T16:23:14Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a drums kit player. Just for fun and entrainment when set together with friends we can play the drums and make band music together with friends.", "repo": "https://github.com/jithendrasahoo3-bit/drums_kit", "demo": "https://jithendrasahoo3-bit.github.io/drums_kit/"}]...
|
[{"post_id": 52266, "ts": "202 [{"post_id": 52266, "ts": "2026-08-22T11:28:15Z", "hours": 0.9269, "text": "This remembers me the first capstone project i have learned how the logic will flow my coding journey started with this type of doing fun projects using basic html, css, JavaScript"}, {"post_id": 51098, "ts": "2026-08-20T16:21:20Z", "hours": 1.1575, "text": "I have done a playful online drums kit everyone can easily access it and play there wish music the drums and have a fun."}]...
|
Title: Drums_Kit_Player by @jithendra | Stardance
Title: Drums_Kit_Player by @jithendra | Stardance
Devlogs:
I have done a playful online drums kit everyone can easily access it and play there wish music the drums and have a fun.
This remembers me the first capstone project i have learned how the logic will flow my coding journey started with this type of doing fun projects using basic html, css, JavaScript
Ships:
I have made a drums kit player. Just for fun and entrainment when set together with friends we can play the drums and make band music together with friends....
|
1793318227.1207366
|
1793404627.1207366
|
|
52016
|
Bio_seq Project by @govindrkumar | Stardance
|
govindrkumar
|
1
|
15.0
|
100
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-04T00:40:22Z", "hours": 15.0, "multiplier": 13.65, "payout": 100, "blessing": "neutral", "text": "Helps you analyse .fasta and .genbank files directly from browser without being need to install biopython on your computer. It helps as aid for students who want to understand genomic data directly online. Tech stacks : Django, Biopython, HTML, CSS, JS and Cloud Mysql.", "repo": "https://github.com/govindrkumar/DNA-Sequence-Analysis-Visualization-Toolkit", "demo": "https://govindrkumar.hackclub.app/"}]...
|
[{"post_id": 60306, "ts": "202 [{"post_id": 60306, "ts": "2026-09-02T16:12:51Z", "hours": 0.6922, "text": "Devlog-12 Trying to ship my website, but failing terribly."}, {"post_id": 59874, "ts": "2026-09-01T21:13:52Z", "hours": 1.9617, "text": "Devlog-11; Very stressful day. But anyways, I have finished overview and statistics section. Also, I have removed from comparsion and history section. I am losing my interest in this project now."}, {"post_id": 58442, "ts": "2026-08-30T21:19:06Z", "hours": 1.5844, "text": "Devlog-10; Hey Guys! It’s newtongks. Today, I just wanted to finish as much work, as I could, in lesser time. So, I integrated a youtube video on my home page. And, for my final dashboard, I had to go to w3schools to learn some dom manipulation which helped me integrate eventlistener property so, I can already calculate and send the final stuff to user and when they will click each tab they can see values. And, Blast integration is incredible but slow. I wasn’t able to integrate it. If anyone wants to help me, please comment down below."}, {"post_id": 57748, "ts": "2026-08-30T00:42:37Z", "hours": 1.6778, "text": "Devlog-9; Hey Guys! It’s newtongks. Today, I was in a good mood. So, firstly, I went to add a cute footer in base.html. (Great shout out to w3schools for teaching me that.) Then, I started creating providers.html to acknowledge the tech stacks, I am going to use in my project. Then, I created about.html in diary entry format so each person can read it. Last work was to create analyze.html uploader button. It was preety rough. I didn’t knew js, so had to ask to chatgpt ( https://www.chatgpt.com ) and get this code for my uploader."}, {"post_id": 57437, "ts": "2026-08-29T16:18:50Z", "hours": 0.4153, "text": "Devlog-8 Hey Guys! It’s newtongks. Today, I am busy in adding comments to existing codebase, cause all program had became big mess."}, {"post_id": 56832, "ts": "2026-08-28T19:39:21Z", "hours": 0.3864, "text": "Devlog 7 Hello guys! It’s newtongks. Currently, I am going to learn Biopython from official github page. Wish me luck!!!!"}, {"post_id": 56475, "ts": "2026-08-28T07:56:27Z", "hours": 3.5297, "text": "Devlog-6 Hey guys! It’s newtongks. It’s Day 6 of creating a biopython website. So, today I integrated cloud mysql in my django admin panel. Then, I went on to create file upload section which supports (.gb and .fasta) format. (You will soon see its usage.) Then, I have created my final dashboard panel. Everything else, will be shown in next update. Stay tuned!!!! Love you all!!!!!"}, {"post_id": 54120, "ts": "2026-08-24T22:54:22Z", "hours": 1.82, "text": "Devlog - 5 ; Hey Guys! It’s newtongks. It’s Day 5 of creating a biopython website. So, today, I created base.html, So I don’t need to write repetitive code many times. I created issues form. For this, first I created a model.py where I defined how to store the data. Then, I created forms.py to create the form to be displayed on website. Then, I created my admin panel using built-in form to view the issues which are reported. It was super fun!!! Bye Bye!"}, {"post_id": 53287, "ts": "2026-08-23T18:52:32Z", "hours": 1.1039, "text": "#Devlog-4; Hey guys! It’s newtongks. It’s day 4 of designing a biopython website. So, today I added a navigation bar in my website, designed the logo for it and wrote style.css. I have decided to add home, about, providers, issues and a search bar (will add in next devlog). Thank you! Love you all!"}, {"post_id": 52663, "ts": "2026-08-22T22:24:06Z", "hours": 0.4717, "text": "#Devlog 3; today, i learnt how to create a form in django. Thank you!"}, {"post_id": 52133, "ts": "2026-08-22T07:05:08Z", "hours": 0.6125, "text": "#Devlog-2; Hey guys, it’s newtongks. It was short working session today due to stress. Anyways, Today I learnt how to add route pages and add static/style.css in a django based file. Thank! Love you all!"}, {"post_id": 51516, "ts": "2026-08-21T08:52:09Z", "hours": 0.3467, "text": "Good Afternoon Everyone, This is Govind Kumar Singh. Today, I was working on Bioseq project. Basically, it’s from Biopython used for analyzing DNA sequence. Initially, I thought working on flask. But, I personally felt that django will be more appropriate for my project. So, this is start of my django journey. Wish me luck!"}]...
|
Title: Bio_seq Project by @govindrkumar | Stardanc Title: Bio_seq Project by @govindrkumar | Stardance
Devlogs:
Good Afternoon Everyone, This is Govind Kumar Singh. Today, I was working on Bioseq project. Basically, it’s from Biopython used for analyzing DNA sequence. Initially, I thought working on flask. But, I personally felt that django will be more appropriate for my project. So, this is start of my django journey. Wish me luck!
#Devlog-2; Hey guys, it’s newtongks. It was short working session today due to stress. Anyways, Today I learnt how to add route pages and add static/style.css in a django based file. Thank! Love you all!
#Devlog 3; today, i learnt how to create a form in django. Thank you!
#Devlog-4; Hey guys! It’s newtongks. It’s day 4 of designing a biopython website. So, today I added a navigation bar in my website, designed the logo for it and wrote style.css. I have decided to add home, about, providers, issues and a search bar (will add in next devlog). Thank you! Love you all!
Devlog - 5 ; Hey Guys! It’s newtongks. It’s Day 5 of creating a biopython website. So, today, I created base.html, So I don’t need to write repetitive code many times. I created issues form. For this, first I created a model.py where I defined how to store the data. Then, I created forms.py to create the form to be displayed on website. Then, I created my admin panel using built-in form to view the issues which are reported. It was super fun!!! Bye Bye!
Devlog-6 Hey guys! It’s newtongks. It’s Day 6 of creating a biopython website. So, today I integrated cloud mysql in my django admin panel. Then, I went on to create file upload section which supports (.gb and .fasta) format. (You will soon see its usage.) Then, I have created my final dashboard panel. Everything else, will be shown in next update. Stay tuned!!!! Love you all!!!!!
Devlog 7 Hello guys! It’s newtongks. Currently, I am going to learn Biopython from official github page. Wish me luck!!!!
Devlog-8 Hey Guys! It’s newtongks. Today, I am busy in adding comments to existing codebase, cause all program had became big mess.
Devlog-9; Hey Guys! It’s newtongks. Today, I was in a good mood. So, firstly, I went to add a cute footer in base.html. (Great shout out to w3schools for teaching me that.) Then, I started creating providers.html to acknowledge the tech stacks, I am going to use in my project. Then, I created about.html in diary entry format so each person can read it. Last work was to create analyze.html uploader button. It was preety rough. I didn’t knew js, so had to ask to chatgpt ( https://www.chatgpt.com ) and get this code for my uploader.
Devlog-10; Hey Guys! It’s newtongks. Today, I just wanted to finish as much work, as I could, in lesser time. So, I integrated a youtube video on my home page. And, for my final dashboard, I had to go to w3schools to learn some dom manipulation which helped me integrate eventlistener property so, I can already calculate and send the final stuff to user and when they will click each tab they can see values. And, Blast integration is incredible but slow. I wasn’t able to integrate it. If anyone wants to help me, please comment down below.
Devlog-11; Very stressful day. But anyways, I have finished overview and statistics section. Also, I have removed from comparsion and history section. I am losing my interest in this project now.
Devlog-12 Trying to ship my website, but failing terribly.
Ships:
Helps you analyse .fasta and .genbank files directly from browser without being need to install biopython on your computer. It helps as aid for students who want to understand genomic data directly online. Tech stacks : Django, Biopython, HTML, CSS, JS and Cloud Mysql....
|
1793256529.8014767
|
1793342929.8014767
|
|
52019
|
Pointer Fighter (C based) by @nano | Stardance
|
nano
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:19:08Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project", "repo": "https://github.com/skibidi-nano/Stardance-roguelike", "demo": "https://github.com/skibidi-nano/Stardance-roguelike/releases/tag/v1.0.1"}]...
|
[{"post_id": 73295, "ts": "202 [{"post_id": 73295, "ts": "2026-09-24T19:37:40Z", "hours": 3.1092, "text": "LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function"}, {"post_id": 71417, "ts": "2026-09-20T19:47:13Z", "hours": 5.0142, "text": "LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)"}, {"post_id": 69703, "ts": "2026-09-17T16:40:29Z", "hours": 4.2308, "text": "LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies"}, {"post_id": 68741, "ts": "2026-09-15T17:34:46Z", "hours": 2.2667, "text": "LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \\0 terminator). The fix was to just not print out the \\0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored"}, {"post_id": 68208, "ts": "2026-09-14T18:13:59Z", "hours": 4.045, "text": "LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal"}, {"post_id": 67326, "ts": "2026-09-13T12:07:21Z", "hours": 3.1628, "text": "LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function"}, {"post_id": 66634, "ts": "2026-09-12T14:15:36Z", "hours": 1.4594, "text": "LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!"}, {"post_id": 66094, "ts": "2026-09-11T17:53:56Z", "hours": 3.0956, "text": "LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player"}, {"post_id": 65457, "ts": "2026-09-10T16:29:10Z", "hours": 1.7283, "text": "LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)"}, {"post_id": 64879, "ts": "2026-09-09T16:10:45Z", "hours": 2.0467, "text": "LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways"}, {"post_id": 63783, "ts": "2026-09-07T18:59:06Z", "hours": 3.6586, "text": "LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)"}, {"post_id": 62408, "ts": "2026-09-05T19:04:09Z", "hours": 2.9256, "text": "LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )"}, {"post_id": 61748, "ts": "2026-09-04T20:04:49Z", "hours": 4.0994, "text": "LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game."}, {"post_id": 60461, "ts": "2026-09-02T19:58:48Z", "hours": 2.5567, "text": "LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!"}, {"post_id": 59815, "ts": "2026-09-01T19:33:57Z", "hours": 0.7692, "text": "LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!"}, {"post_id": 59787, "ts": "2026-09-01T18:38:08Z", "hours": 1.3131, "text": "LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!"}, {"post_id": 55276, "ts": "2026-08-27T00:06:09Z", "hours": 1.4606, "text": "LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!"}, {"post_id": 54777, "ts": "2026-08-25T21:47:45Z", "hours": 1.3933, "text": "LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!"}, {"post_id": 54087, "ts": "2026-08-24T21:27:57Z", "hours": 2.0, "text": "added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)"}, {"post_id": 52721, "ts": "2026-08-23T01:22:10Z", "hours": 1.3925, "text": "Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)"}, {"post_id": 52658, "ts": "2026-08-22T22:08:53Z", "hours": 1.2631, "text": "Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)"}, {"post_id": 51911, "ts": "2026-08-21T20:21:08Z", "hours": 0.9469, "text": "Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties."}, {"post_id": 51814, "ts": "2026-08-21T17:36:52Z", "hours": 1.5833, "text": "Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized."}, {"post_id": 51346, "ts": "2026-08-20T23:28:52Z", "hours": 0.9203, "text": "Added collision checks for walls so you cant escape the rooms"}, {"post_id": 51318, "ts": "2026-08-20T22:03:55Z", "hours": 1.0767, "text": "Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!"}, {"post_id": 51226, "ts": "2026-08-20T19:16:10Z", "hours": 0.4381, "text": "“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now"}]...
|
Title: Pointer Fighter (C based) by @nano | Starda Title: Pointer Fighter (C based) by @nano | Stardance
Devlogs:
“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now
Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!
Added collision checks for walls so you cant escape the rooms
Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized.
Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties.
Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)
Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)
added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)
LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!
LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!
LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!
LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!
LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!
LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game.
LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )
LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)
LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways
LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)
LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player
LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!
LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function
LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal
LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \0 terminator). The fix was to just not print out the \0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored
LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies
LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)
LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function
Ships:
A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project...
|
1793152224.1501145
|
1793238624.1501145
|
|
52030
|
CARGAME by @Tallurisaikumar | Stardance
|
Tallurisaikumar
|
1
|
12.0
|
19
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T09:27:35Z", "hours": 12.0, "multiplier": 1.62, "payout": 19, "blessing": "neutral", "text": "complet my cargame", "repo": "https://github.com/tallurisai9346-beep/CARGAME", "demo": "https://cargame-rouge.vercel.app/"}]...
|
[{"post_id": 51535, "ts": "202 [{"post_id": 51535, "ts": "2026-08-21T09:26:49Z", "hours": 2.1575, "text": "finnaly my car game is complete"}, {"post_id": 51470, "ts": "2026-08-21T06:13:48Z", "hours": 1.9761, "text": "adding car select option colour"}, {"post_id": 51409, "ts": "2026-08-21T02:56:55Z", "hours": 7.5847, "text": "iam complet HTML"}]...
|
Title: CARGAME by @Tallurisaikumar | Stardance
De Title: CARGAME by @Tallurisaikumar | Stardance
Devlogs:
iam complet HTML
adding car select option colour
finnaly my car game is complete
Ships:
complet my cargame...
|
1792878698.6122587
|
1793742698.6122587
|
|
52037
|
a simple harmonic motion simulator by @emmanuel67 a simple harmonic motion simulator by @emmanuel67 | Stardance...
|
emmanuel67
|
1
|
11.05
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T09:48:43Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a simple harmonic wave simulator, i did this cause i think the hardest part of studying math and physics is visualizations.", "repo": "https://github.com/emmanuelnkangolo319-hash/simple-harmonic-oscilation-simulator", "demo": "https://github.com/emmanuelnkangolo319-hash/simple-harmonic-oscilation-simulator/releases/tag/v1.0.0"}]...
|
[{"post_id": 60198, "ts": "202 [{"post_id": 60198, "ts": "2026-09-02T12:55:15Z", "hours": 1.6486, "text": "we are done baby, atleast i think so, i added funtions and simple harmonic waves, i remind you that this is just a tool, focusing of one of the biggest problems with studying math, visualization. please dont give up, remember why you study these stem subjectss its to understand the universe, simply put, math is just the universe, translated to human, i hope this will become an actual product, with many more concepts and features, i will add more, this website will kinda show my journey, since im avoiding using ai, im only putting the things i have learned, yes this website will be constentlly changing, because of vast amount of knowlegde the human mind can hold"}, {"post_id": 59552, "ts": "2026-09-01T13:14:58Z", "hours": 2.3981, "text": "Okay, so i finally made a ui for it, but im really having trouble with the design. Im using streamlit since its often recommended to make ui’s for math and data visualization. So if you have any advice on design choice and what other things it should plot (maybe custom charts and other math concepts), it would truly help alot"}, {"post_id": 57194, "ts": "2026-08-29T09:35:23Z", "hours": 6.1975, "text": "simple harmonic waves simulation"}, {"post_id": 51247, "ts": "2026-08-20T19:44:20Z", "hours": 0.32, "text": "Well, its just something to help me visualize waves in harmonic motion while i do the math"}]...
|
Title: a simple harmonic motion simulator by @emma Title: a simple harmonic motion simulator by @emmanuel67 | Stardance
Devlogs:
Well, its just something to help me visualize waves in harmonic motion while i do the math
simple harmonic waves simulation
Okay, so i finally made a ui for it, but im really having trouble with the design. Im using streamlit since its often recommended to make ui’s for math and data visualization. So if you have any advice on design choice and what other things it should plot (maybe custom charts and other math concepts), it would truly help alot
we are done baby, atleast i think so, i added funtions and simple harmonic waves, i remind you that this is just a tool, focusing of one of the biggest problems with studying math, visualization. please dont give up, remember why you study these stem subjectss its to understand the universe, simply put, math is just the universe, translated to human, i hope this will become an actual product, with many more concepts and features, i will add more, this website will kinda show my journey, since im avoiding using ai, im only putting the things i have learned, yes this website will be constentlly changing, because of vast amount of knowlegde the human mind can hold
Ships:
i made a simple harmonic wave simulator, i did this cause i think the hardest part of studying math and physics is visualizations....
|
1793310808.3720322
|
1793397208.3720322
|
|
52039
|
Polaroid Booth by @Aamina | Stardance
|
Aamina
|
1
|
2.0
|
38
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T23:05:54Z", "hours": 2.0, "multiplier": 15.93, "payout": 38, "blessing": "neutral", "text": "I built Polaroid Booth, a browser-based photo booth app using HTML, CSS, and JavaScript that captures pictures from your webcam and turns them into realistic polaroid-style snapshots, complete with a white border and a randomly rotated tilt. The trickiest part was handling the camera access and capture logic,getting the video feed to reliably render onto a canvas and convert into a clean image without lag or permission issues took some trial and error, along with fine-tuning the CSS rotation so the photos looked naturally scattered instead of just messy.", "repo": "https://github.com/Aaminanad/Polaroid-Booth", "demo": "https://aaminanad.github.io/Polaroid-Booth/"}]...
|
[{"post_id": 51333, "ts": "202 [{"post_id": 51333, "ts": "2026-08-20T22:46:48Z", "hours": 1.3739, "text": "DEVLOG #2 JavaScript (Vanilla): Camera access via navigator.mediaDevices.getUserMedia(), drawing video frames to canvas, converting canvas to image, DOM manipulation, randomized rotation logic, download functionality the cam is working yayayayayy!!"}, {"post_id": 51235, "ts": "2026-08-20T19:30:08Z", "hours": 0.9972, "text": "DEVLOG #1: Worked on HTML and CSS: Built the whole Polaroid Booth interface from scratch in a single HTML file. The HTML sets up a retro camera viewfinder (element), a big red snap button, and a gallery wall where Polaroids pile up. In CSS I added a blue background, a camera module (rounded corners, shadows, a pressable button with a 3D click effect), and each Polaroid card gets its own random rotation via a CSS custom property (–rot) so the wall looks like a real messy photo table."}]...
|
Title: Polaroid Booth by @Aamina | Stardance
Devl Title: Polaroid Booth by @Aamina | Stardance
Devlogs:
DEVLOG #1: Worked on HTML and CSS: Built the whole Polaroid Booth interface from scratch in a single HTML file. The HTML sets up a retro camera viewfinder (element), a big red snap button, and a gallery wall where Polaroids pile up. In CSS I added a blue background, a camera module (rounded corners, shadows, a pressable button with a 3D click effect), and each Polaroid card gets its own random rotation via a CSS custom property (–rot) so the wall looks like a real messy photo table.
DEVLOG #2 JavaScript (Vanilla): Camera access via navigator.mediaDevices.getUserMedia(), drawing video frames to canvas, converting canvas to image, DOM manipulation, randomized rotation logic, download functionality the cam is working yayayayayy!!
Ships:
I built Polaroid Booth, a browser-based photo booth app using HTML, CSS, and JavaScript that captures pictures from your webcam and turns them into realistic polaroid-style snapshots, complete with a white border and a randomly rotated tilt. The trickiest part was handling the camera access and capture logic,getting the video feed to reliably render onto a canvas and convert into a clean image without lag or permission issues took some trial and error, along with fine-tuning the CSS rotation so the photos looked naturally scattered instead of just messy....
|
1793137748.0786831
|
1793224148.0786831
|
|
52054
|
Mith's Personal Site by @mithbhasker | Stardan Mith's Personal Site by @mithbhasker | Stardance...
|
mithbhasker
|
1
|
1.99
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T04:59:20Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made this for the mission and to be able to show it to other people especially when I go to fairs and etc.", "repo": "https://github.com/Mithilessh2010/Stardance-Website", "demo": "https://stardance-website.vercel.app/"}]...
|
[{"post_id": 54218, "ts": "202 [{"post_id": 54218, "ts": "2026-08-25T03:17:27Z", "hours": 0.9889, "text": "I made it from scratch as my previous one was too AI this one has barely any AI used other than cleaning up the code and basic optimization"}, {"post_id": 51440, "ts": "2026-08-21T04:46:58Z", "hours": 0.6411, "text": "I finished my UI the website itself has some really cool features like when you scroll which I was able to get help from due to my old projects and on top of that I got inspired by someone else’s project to change my cursor for my website which made it amazing, I also deployed the project to vercel and everything seems to work."}]...
|
Title: Mith's Personal Site by @mithbhasker | Title: Mith's Personal Site by @mithbhasker | Stardance
Devlogs:
I finished my UI the website itself has some really cool features like when you scroll which I was able to get help from due to my old projects and on top of that I got inspired by someone else’s project to change my cursor for my website which made it amazing, I also deployed the project to vercel and everything seems to work.
I made it from scratch as my previous one was too AI this one has barely any AI used other than cleaning up the code and basic optimization
Ships:
I made this for the mission and to be able to show it to other people especially when I go to fairs and etc....
|
1793138238.9916599
|
1793224638.9916599
|
|
52059
|
School Website Overhaul by @sklebi | Stardance
|
sklebi
|
1
|
11.0
|
115
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-29T03:21:32Z", "hours": 11.0, "multiplier": 10.33, "payout": 115, "blessing": "neutral", "text": "Okay so I decided to create my school website but make it look better because for some reason on our website the colors are neon blue and red (very ugly) and like its really glitchy/some things are just impossible to access This is my first HTML project ever (I just finished a 4 hour tutorial before this sooooo hopefully its okay :)) Please note that it is currently a concept design and only the first page is done lol", "repo": "https://github.com/Sklebi/my_website", "demo": "https://sklebi.github.io/my_website/index.html"}]...
|
[{"post_id": 57024, "ts": "202 [{"post_id": 57024, "ts": "2026-08-29T03:04:19Z", "hours": 1.7456, "text": "Devlog #8 (final devlog before ship) Everything (on the first page at least) is completed! -> I updated github repository and figured out how to use pages to get a demo link -> I finished the annoucements section and made the scrollbar pixel perfect to the footer (I hope) made sure every button worked -> added a “WIP” page cuz I will do the rest after getting feedback for the first page."}, {"post_id": 56712, "ts": "2026-08-28T16:05:56Z", "hours": 0.7617, "text": "Devlog #7 This is a bit of a shorter devlog. It took forever to finish though Finally evened out the calendar carousel. Was genuinely tweaking out. It works as well as I can make it with just straight CSS and HTML Removed the little dots on the bottom because I could not get it to look good and work properly since the sixth card and first card would always get skipped I added more hover animations to buttons and yah thats about it for devlog #7"}, {"post_id": 54564, "ts": "2026-08-25T16:11:21Z", "hours": 1.6344, "text": "Devlog #6 -> Carousel time!! added a header part to say calendar w icon from fontawesome -> added cards and made the overall carousel smooth (as much as I can with only using CSS) -> added long arrow buttons cuz i like the design from the og school website (just changed the colors cuz I want it to match the website theme) -> not as interactive as I would’ve liked but I’m not there yet on animations so I guess it’s okay for now -> made the little bottom dot things work by removing card #5 to display none -> made the calendar icon a button -> made the two scroll clickers on the left and right have hover colors"}, {"post_id": 54457, "ts": "2026-08-25T14:04:16Z", "hours": 1.6078, "text": "Devlog #5 -> Scrollbar day! -> learnt about the pseudoclass to change scrollbars -> made it blocky with dark blue background -> it turns red when you hover over it cuz i thought it would be kinda cool -> the actual scroll thumb is light blue -> i decreased the size of the footer so then when you scroll all the way down, the scrollbar like “fits” into place so it looks more aesthetically pleasing -> I also made custom recreations of the school logo and background lol -> made the logos actual buttons so you can click on them. -> Added text to the front of the background -> Currently trying to add a CSS carousel (idk JS yet so ima try my best)"}, {"post_id": 53413, "ts": "2026-08-23T23:03:44Z", "hours": 0.9486, "text": "Devlog #4 OKAY FOOTER DAY! Made my own logo Added buttons with underline animations with the CONTACT US and ACCESSIBILITY STATEMENT Added a fake phone # Added fake address & name learnt a bit of flexbox & how to organize my code Good progress! Oh also i removed the previous background image"}, {"post_id": 51793, "ts": "2026-08-21T17:07:48Z", "hours": 0.5394, "text": "Devlog #3: BIG CHANGES! OK MADE WEBSITE LAYOUT Added footers, main part and school background -> made the navbar sticky -> added text to background to signify this is NOT official -> I might replace the background with placeholder image -> going to add contacts -> i want to change the font but idk, it looks ok -> want to remove scrollbar -> made the background scrollable"}, {"post_id": 51314, "ts": "2026-08-20T21:57:40Z", "hours": 0.7703, "text": "Devlog #2 damn this took forever for so little progress lol removed margin on the body so the nav bar fully takes up entire line added an underline animation (wooo!) So when you hover over stuff it goes from left to right Fixed the font being weird on the first row of the nav bar (i misspelt inherit lmao) I also found out I was using the wrong link to get my downwards pointed caret so I fixed that (the tutorial i found originally to get it on the dropdown was like 10 years old so when i yoinked the link everything was outdated) Fixed it by going to awesome fonts and then making a kit and getting my own code Labeled all the stuff in my css page because it was super long and convoluted and took forever to find stuff (i dont have a monitor so split screen takes a hot minute to scroll)"}, {"post_id": 51287, "ts": "2026-08-20T20:50:34Z", "hours": 3.1131, "text": "Devlog #1 Okay so I decided to create my school website but make it look better because for some reason on our website the colors are neon blue and red and like its really glitchy/some things are just impossible to access Progress so far: I added a dropdown navigation bar -> Fun little triangle animation -> I shortened the original dropdown lengths to the things that ppl actually use -> still debating if I should make it actually usable or just a design concept -> Added hover colors to the dropdown -> I might change the font because it looks kinda ugly but idk -> I don’t know if its legal to use the school website images and stuff so i’ll make those placeholders so far lol"}]...
|
Title: School Website Overhaul by @sklebi | Starda Title: School Website Overhaul by @sklebi | Stardance
Devlogs:
Devlog #1 Okay so I decided to create my school website but make it look better because for some reason on our website the colors are neon blue and red and like its really glitchy/some things are just impossible to access Progress so far: I added a dropdown navigation bar -> Fun little triangle animation -> I shortened the original dropdown lengths to the things that ppl actually use -> still debating if I should make it actually usable or just a design concept -> Added hover colors to the dropdown -> I might change the font because it looks kinda ugly but idk -> I don’t know if its legal to use the school website images and stuff so i’ll make those placeholders so far lol
Devlog #2 damn this took forever for so little progress lol removed margin on the body so the nav bar fully takes up entire line added an underline animation (wooo!) So when you hover over stuff it goes from left to right Fixed the font being weird on the first row of the nav bar (i misspelt inherit lmao) I also found out I was using the wrong link to get my downwards pointed caret so I fixed that (the tutorial i found originally to get it on the dropdown was like 10 years old so when i yoinked the link everything was outdated) Fixed it by going to awesome fonts and then making a kit and getting my own code Labeled all the stuff in my css page because it was super long and convoluted and took forever to find stuff (i dont have a monitor so split screen takes a hot minute to scroll)
Devlog #3: BIG CHANGES! OK MADE WEBSITE LAYOUT Added footers, main part and school background -> made the navbar sticky -> added text to background to signify this is NOT official -> I might replace the background with placeholder image -> going to add contacts -> i want to change the font but idk, it looks ok -> want to remove scrollbar -> made the background scrollable
Devlog #4 OKAY FOOTER DAY! Made my own logo Added buttons with underline animations with the CONTACT US and ACCESSIBILITY STATEMENT Added a fake phone # Added fake address & name learnt a bit of flexbox & how to organize my code Good progress! Oh also i removed the previous background image
Devlog #5 -> Scrollbar day! -> learnt about the pseudoclass to change scrollbars -> made it blocky with dark blue background -> it turns red when you hover over it cuz i thought it would be kinda cool -> the actual scroll thumb is light blue -> i decreased the size of the footer so then when you scroll all the way down, the scrollbar like “fits” into place so it looks more aesthetically pleasing -> I also made custom recreations of the school logo and background lol -> made the logos actual buttons so you can click on them. -> Added text to the front of the background -> Currently trying to add a CSS carousel (idk JS yet so ima try my best)
Devlog #6 -> Carousel time!! added a header part to say calendar w icon from fontawesome -> added cards and made the overall carousel smooth (as much as I can with only using CSS) -> added long arrow buttons cuz i like the design from the og school website (just changed the colors cuz I want it to match the website theme) -> not as interactive as I would’ve liked but I’m not there yet on animations so I guess it’s okay for now -> made the little bottom dot things work by removing card #5 to display none -> made the calendar icon a button -> made the two scroll clickers on the left and right have hover colors
Devlog #7 This is a bit of a shorter devlog. It took forever to finish though Finally evened out the calendar carousel. Was genuinely tweaking out. It works as well as I can make it with just straight CSS and HTML Removed the little dots on the bottom because I could not get it to look good and work properly since the sixth card and first card would always get skipped I added more hover animations to buttons and yah thats about it for devlog #7
Devlog #8 (final devlog before ship) Everything (on the first page at least) is completed! -> I updated github repository and figured out how to use pages to get a demo link -> I finished the annoucements section and made the scrollbar pixel perfect to the footer (I hope) made sure every button worked -> added a “WIP” page cuz I will do the rest after getting feedback for the first page.
Ships:
Okay so I decided to create my school website but make it look better because for some reason on our website the colors are neon blue and red (very ugly) and like its really glitchy/some things are just impossible to access This is my first HTML project ever (I just finished a 4 hour tutorial before this sooooo hopefully its okay :)) Please note that it is currently a concept design and only the first page is done lol...
|
1793314153.725271
|
1793400553.725271
|
|
52076
|
Driver guessing game by @ameeksinghv | Stardance
|
ameeksinghv
|
1
|
1.33
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-20T23:31:38Z", "hours": 1.0, "multiplier": 1.06, "payout": 1, "blessing": "neutral", "text": "I made a game where you guess an f1 driver based on their driver number. Keep in mind this is still in early stages!", "repo": "https://github.com/singhameek/driver-guessing-game", "demo": "https://driver-guessing-game.vercel.app/"}]...
|
[{"post_id": 52044, "ts": "202 [{"post_id": 52044, "ts": "2026-08-22T02:48:41Z", "hours": 0.335, "text": "The game now loops, and the buttons are centered!"}, {"post_id": 51342, "ts": "2026-08-20T23:11:01Z", "hours": 0.3561, "text": "First build done! soon i will make it work more than once and center the buttons"}, {"post_id": 51335, "ts": "2026-08-20T22:48:10Z", "hours": 0.7797, "text": "I’ve got the ui mostly done, just need to work on backend"}]...
|
Title: Driver guessing game by @ameeksinghv | Star Title: Driver guessing game by @ameeksinghv | Stardance
Devlogs:
I’ve got the ui mostly done, just need to work on backend
First build done! soon i will make it work more than once and center the buttons
The game now loops, and the buttons are centered!
Ships:
I made a game where you guess an f1 driver based on their driver number. Keep in mind this is still in early stages!...
|
1793138241.7849357
|
1793224641.7849357
|
|
52081
|
My own site! by @AE | Stardance
|
AE
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-26T20:09:26Z", "hours": 6.0, "multiplier": 1.28, "payout": 0, "blessing": "neutral", "text": "Este es mi pagina personal. Aunque tiene un diseño simple para mi no fue tan fácil hacerla porque soy muy mala diseñando, estuve cambiando , moviendo y agregando cosas constantemente. Siento que he avanzado un poco en mi habilidad de diseño y por eso quiero compartir este pequeño pero importante proyecto.", "repo": "https://github.com/MANDCHELLE/stardance", "demo": "https://mandchelle.github.io/stardance/"}]...
|
[{"post_id": 74139, "ts": "202 [{"post_id": 74139, "ts": "2026-09-26T19:03:42Z", "hours": 5.6372, "text": "El sitio web que construí es simple pero lo veo bonito. No soy buena diseñando por eso considero que esto es un gran avance ."}]...
|
Title: My own site! by @AE | Stardance
Devlogs:
E Title: My own site! by @AE | Stardance
Devlogs:
El sitio web que construí es simple pero lo veo bonito. No soy buena diseñando por eso considero que esto es un gran avance .
Ships:
Este es mi pagina personal. Aunque tiene un diseño simple para mi no fue tan fácil hacerla porque soy muy mala diseñando, estuve cambiando , moviendo y agregando cosas constantemente. Siento que he avanzado un poco en mi habilidad de diseño y por eso quiero compartir este pequeño pero importante proyecto....
|
1793152226.6412745
|
1793238626.6412745
|
|
52099
|
My Own Website yayyy by @phantom-ascii | Stardance
|
phantom-ascii
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T02:15:58Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created this personal website to leave my mark on the internet. It contains an about me, a who i am, a hero page, a socials dock and a little secret. AI was used to help me code as this is the first big website Ive ever made. It was used mainly to ask how to do things and it cleaned up my code for me at the end so everyone else can read it easier but the majority of the code was made by me", "repo": "https://github.com/phantom-ascii/personal-website", "demo": "https://phantom-ascii.github.io/personal-website/"}]...
|
[{"post_id": 51393, "ts": "202 [{"post_id": 51393, "ts": "2026-08-21T02:08:23Z", "hours": 1.2883, "text": "Finished my portfolio page (I used a bit of AI but the majority was made by me and AI was mainly used to ask questions like how to do smth) What do you lot think and what should i add? byeeeee"}]...
|
Title: My Own Website yayyy by @phantom-ascii | St Title: My Own Website yayyy by @phantom-ascii | Stardance
Devlogs:
Finished my portfolio page (I used a bit of AI but the majority was made by me and AI was mainly used to ask questions like how to do smth) What do you lot think and what should i add? byeeeee
Ships:
I created this personal website to leave my mark on the internet. It contains an about me, a who i am, a hero page, a socials dock and a little secret. AI was used to help me code as this is the first big website Ive ever made. It was used mainly to ask how to do things and it cleaned up my code for me at the end so everyone else can read it easier but the majority of the code was made by me...
|
1793138246.2069566
|
1793224646.2069566
|
|
52109
|
kenpadV1 by @keni67 | Stardance
|
keni67
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T15:48:23Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I’ve made a hackpad with 6 keys and 1 rotary encoder. The hardest part was building a case but I do think there are still some mistakes. I’m very happy that I was able learn and make this hackpad though it took plenty of time", "repo": "https://github.com/keni769/kenpadV1", "demo": ""}]...
|
[{"post_id": 67023, "ts": "202 [{"post_id": 67023, "ts": "2026-09-13T02:03:46Z", "hours": 1.9961, "text": "Tried out qmk and finished firmware. Took alot of time (many warnings and errors)"}, {"post_id": 62506, "ts": "2026-09-05T22:11:54Z", "hours": 1.2669, "text": "Took me alot of time on how to make a case, I think I took an easy way out but it looks good"}, {"post_id": 56407, "ts": "2026-08-28T05:12:42Z", "hours": 0.8339, "text": "Finished Pcb"}, {"post_id": 53515, "ts": "2026-08-24T03:03:17Z", "hours": 0.3333, "text": "I’m planning to build a 2x3 macropad with a rotary encoder. Built the schematic for it"}]...
|
Title: kenpadV1 by @keni67 | Stardance
Devlogs:
I Title: kenpadV1 by @keni67 | Stardance
Devlogs:
I’m planning to build a 2x3 macropad with a rotary encoder. Built the schematic for it
Finished Pcb
Took me alot of time on how to make a case, I think I took an easy way out but it looks good
Tried out qmk and finished firmware. Took alot of time (many warnings and errors)
Ships:
I’ve made a hackpad with 6 keys and 1 rotary encoder. The hardest part was building a case but I do think there are still some mistakes. I’m very happy that I was able learn and make this hackpad though it took plenty of time...
|
1793152233.2070847
|
1793238633.2070847
|
|
52111
|
Website by @vedude42 | Stardance
|
vedude42
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T05:42:45Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first ever website!!!!! I honestly didnt think I would ever be able to understand anything about programming, but the tutorial on the website actually helped me a lot, I was able to understand what most of the stuff did and was able to try and do it by myself. I didnt really get how to integrate youtube videos with my code so I did get a little bit of help from gemini, but the rest was just doing the code my self, and double checking with the tutorial. I think this was a really fun project and I want to work more with web development in the future -Vedude42 :P", "repo": "https://github.com/Vedude42/NASA-API-WEBSITE", "demo": "https://vedude42.github.io/NASA-API-WEBSITE/"}]...
|
[{"post_id": 55375, "ts": "202 [{"post_id": 55375, "ts": "2026-08-27T05:13:56Z", "hours": 3.1114, "text": "Finished the website! It includes Title Picture/Videos/Youtube Explanation of the Image/Video Cool Color Scheme"}]...
|
Title: Website by @vedude42 | Stardance
Devlogs:
Title: Website by @vedude42 | Stardance
Devlogs:
Finished the website! It includes Title Picture/Videos/Youtube Explanation of the Image/Video Cool Color Scheme
Ships:
I made my first ever website!!!!! I honestly didnt think I would ever be able to understand anything about programming, but the tutorial on the website actually helped me a lot, I was able to understand what most of the stuff did and was able to try and do it by myself. I didnt really get how to integrate youtube videos with my code so I did get a little bit of help from gemini, but the rest was just doing the code my self, and double checking with the tutorial. I think this was a really fun project and I want to work more with web development in the future -Vedude42 :P...
|
1793317760.6070697
|
1793404160.6070697
|
|
52113
|
SV-Deck by @SiddhantVerma_04 | Stardance
|
SiddhantVerma_04
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-13T00:30:20Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "SV - Deck This is my very own HackPad, SV - Deck. SV - Deck has a XIAO RP2040, 4 SK6812MINI-E LEDs, 9 switches, and an OLED display. I made this macropad mainly for gaming and simple shortcuts that I use regularly. I made the PCB in KiCad, the firmware using QMK, and the case with Onshape. It was pretty challenging because this is my first real hardware project, making things . But I got through it and I’m very happy with the outcome. It was a really great experience, thank you!", "repo": "https://github.com/siddhantverma04/My-HackPad", "demo": ""}]...
|
[{"post_id": 77199, "ts": "202 [{"post_id": 77199, "ts": "2026-10-06T02:13:40Z", "hours": 2.2836, "text": "Finally done with the HackPad! So I finished soldering the PCB and everything works fine! I also printed the case and put everything together. I just need to ship now!"}, {"post_id": 66899, "ts": "2026-09-12T21:02:12Z", "hours": 2.2378, "text": "Devlog 7 Ready to submit! I finished the firmware, and I’m ready to submit. I also decided to add some diodes to the PCB for each key. So I had to change a lot, including the case. But I am done now and everything is set up in my Github repository for submiting."}, {"post_id": 62473, "ts": "2026-09-05T20:36:22Z", "hours": 0.9383, "text": "Devlog 6 Made the basic firware for the hackpad. Started to make the firmware in VSCode. So far I have made a version with just the keys coded. Still need to add the LEDs and OLED screen."}, {"post_id": 58540, "ts": "2026-08-30T23:44:29Z", "hours": 2.1694, "text": "Devlog 5 Finished the case. Made a simple case for then PCB to sit in. Added a cutout for the USB, OLED screen and the keys. Might still add a design or something in the top right above the microcontroller. Need to code firmware now."}, {"post_id": 57106, "ts": "2026-08-29T06:30:40Z", "hours": 2.4258, "text": "Devlog 4 Big update. I’m now fully done with the PCB! I added LEDs, and and OLED screen. Finished wiring everything too. Hopefully I just need to code firmware now and design the case."}, {"post_id": 53492, "ts": "2026-08-24T02:05:17Z", "hours": 0.6436, "text": "Devlog 3 Made my PCB Made my PCB following the guide but then I decided to change it to be my own. So I scrapped everything and started again. I added 9 keys and wired it all. I left space for an OLED screen or something on the top left, that I’m going to add later."}, {"post_id": 52652, "ts": "2026-08-22T21:56:37Z", "hours": 1.5719, "text": "Devlog 2 Worked on the cad part of my hackpad. I made the case for the hackpad using Onshape. I know that I have to make it my own, but I’m just following the guide for now, and I’m going to change stuff later."}, {"post_id": 51982, "ts": "2026-08-21T23:51:50Z", "hours": 1.0978, "text": "Devlog 1 Finished schematic and imports. This is the start of me making my very own hack pad! I imported the care package and installed KiCad, Lapse, and lookout, so everything is working smoothly now. I had some trouble with the default KiCad files but I managed to import all of them manually. Going to start working on the PCB now!"}]...
|
Title: SV-Deck by @SiddhantVerma_04 | Stardance
D Title: SV-Deck by @SiddhantVerma_04 | Stardance
Devlogs:
Devlog 1 Finished schematic and imports. This is the start of me making my very own hack pad! I imported the care package and installed KiCad, Lapse, and lookout, so everything is working smoothly now. I had some trouble with the default KiCad files but I managed to import all of them manually. Going to start working on the PCB now!
Devlog 2 Worked on the cad part of my hackpad. I made the case for the hackpad using Onshape. I know that I have to make it my own, but I’m just following the guide for now, and I’m going to change stuff later.
Devlog 3 Made my PCB Made my PCB following the guide but then I decided to change it to be my own. So I scrapped everything and started again. I added 9 keys and wired it all. I left space for an OLED screen or something on the top left, that I’m going to add later.
Devlog 4 Big update. I’m now fully done with the PCB! I added LEDs, and and OLED screen. Finished wiring everything too. Hopefully I just need to code firmware now and design the case.
Devlog 5 Finished the case. Made a simple case for then PCB to sit in. Added a cutout for the USB, OLED screen and the keys. Might still add a design or something in the top right above the microcontroller. Need to code firmware now.
Devlog 6 Made the basic firware for the hackpad. Started to make the firmware in VSCode. So far I have made a version with just the keys coded. Still need to add the LEDs and OLED screen.
Devlog 7 Ready to submit! I finished the firmware, and I’m ready to submit. I also decided to add some diodes to the PCB for each key. So I had to change a lot, including the case. But I am done now and everything is set up in my Github repository for submiting.
Finally done with the HackPad! So I finished soldering the PCB and everything works fine! I also printed the case and put everything together. I just need to ship now!
Ships:
SV - Deck This is my very own HackPad, SV - Deck. SV - Deck has a XIAO RP2040, 4 SK6812MINI-E LEDs, 9 switches, and an OLED display. I made this macropad mainly for gaming and simple shortcuts that I use regularly. I made the PCB in KiCad, the firmware using QMK, and the case with Onshape. It was pretty challenging because this is my first real hardware project, making things . But I got through it and I’m very happy with the outcome. It was a really great experience, thank you!...
|
1793199032.6054811
|
1793285432.6054811
|
|
52116
|
my website! by @gabbyq_gu | Stardance
|
gabbyq_gu
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T02:24:07Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "FIRST SHIP WOOHOO! I am very proud of this project :) I really feel like i learned a lot more about HTML, CSS, and JS and I really enjoyed customizing it. I really struggled with the formatting esp the divs as well as the JS. This is is my own personal website with a couple of diferent pages for you to explore! I am really new to shipping and stardance and hack club and all that fun stuff so would apreciate any feedback :D", "repo": "https://github.com/gabbyqgu/my-website1", "demo": "https://gabbyqgu.github.io/my-website1/"}]...
|
[{"post_id": 51383, "ts": "202 [{"post_id": 51383, "ts": "2026-08-21T01:40:32Z", "hours": 4.8444, "text": "first devlog! I am transferring this project over from Macondo. This website is about me and it has a lot of little details that I think are really cool :) a fortune cookie clicker of quotes! a rickroll 🤫 things turn when u hover over them :O a page of my hobbies and favorite foods! I have attached a picture of what it looked like when I first started (litearlly nothing) and what it looks like now!!! I am very proud of my progress : ’) i read a lot about css through this website: https://www.w3schools.com/css/css3_gradients.asp which was super helpful but honestly a lot. it helped me a lot with the formatting and like when to use things(like the display, position, absolute vs relative, etc) the relative in regards to the parent element still confuses me though. id love any feedback on formatting, because divs are SO CONFUSING and I feel like the website doesn’t really work on different screens… :("}]...
|
Title: my website! by @gabbyq_gu | Stardance
Devl Title: my website! by @gabbyq_gu | Stardance
Devlogs:
first devlog! I am transferring this project over from Macondo. This website is about me and it has a lot of little details that I think are really cool :) a fortune cookie clicker of quotes! a rickroll 🤫 things turn when u hover over them :O a page of my hobbies and favorite foods! I have attached a picture of what it looked like when I first started (litearlly nothing) and what it looks like now!!! I am very proud of my progress : ’) i read a lot about css through this website: https://www.w3schools.com/css/css3_gradients.asp which was super helpful but honestly a lot. it helped me a lot with the formatting and like when to use things(like the display, position, absolute vs relative, etc) the relative in regards to the parent element still confuses me though. id love any feedback on formatting, because divs are SO CONFUSING and I feel like the website doesn’t really work on different screens… :(
Ships:
FIRST SHIP WOOHOO! I am very proud of this project :) I really feel like i learned a lot more about HTML, CSS, and JS and I really enjoyed customizing it. I really struggled with the formatting esp the divs as well as the JS. This is is my own personal website with a couple of diferent pages for you to explore! I am really new to shipping and stardance and hack club and all that fun stuff so would apreciate any feedback :D...
|
1793141562.3707466
|
1793227962.3707466
|
|
52121
|
Personal Site by @ameeksinghv | Stardance
|
ameeksinghv
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T17:26:07Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal site! most challenging part was lowk getting the css to function for the images, took a few tries", "repo": "https://github.com/singhameek/site", "demo": "https://singhameek.github.io/site/index.html"}]...
|
[{"post_id": 51762, "ts": "202 [{"post_id": 51762, "ts": "2026-08-21T16:30:14Z", "hours": 0.6544, "text": "DONE THE SITE!!!!, gotta do readme now😔😔"}, {"post_id": 51721, "ts": "2026-08-21T15:36:20Z", "hours": 0.6692, "text": "Working on homepage"}]...
|
Title: Personal Site by @ameeksinghv | Stardance
Title: Personal Site by @ameeksinghv | Stardance
Devlogs:
Working on homepage
DONE THE SITE!!!!, gotta do readme now😔😔
Ships:
I made a personal site! most challenging part was lowk getting the css to function for the images, took a few tries...
|
1793141564.455474
|
1793227964.455474
|
|
52132
|
Camo Generator by @aamir_pa2009 | Stardance
|
aamir_pa2009
|
1
|
1.0
|
2
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T01:51:50Z", "hours": 1.0, "multiplier": 3.69, "payout": 2, "blessing": "neutral", "text": "I made a digicam type camo generator that you can use different colours to generate. I attached some of the CADPAT patterns I made.", "repo": "https://github.com/AamirKPathan/Camo-Generator", "demo": "https://aamirkpathan.github.io/Camo-Generator/"}]...
|
[{"post_id": 51391, "ts": "202 [{"post_id": 51391, "ts": "2026-08-21T02:06:40Z", "hours": 0.9903, "text": "I made a digiCAM type CAMO generator."}]...
|
Title: Camo Generator by @aamir_pa2009 | Stardance Title: Camo Generator by @aamir_pa2009 | Stardance
Devlogs:
I made a digiCAM type CAMO generator.
Ships:
I made a digicam type camo generator that you can use different colours to generate. I attached some of the CADPAT patterns I made....
|
1793141579.0022504
|
1793227979.0022504
|
|
52138
|
Phantom Vault by @phantom-ascii | Stardance
|
phantom-ascii
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T22:54:05Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Phantom Vault is a local file vault I built with HTML, CSS and JavaScript. It lets you upload files, encrypt them and store them locally in your browser instead of sending them to a server. It uses the Web Crypto API for encryption and IndexedDB for local storage. You can lock and unlock the vault, open your encrypted files, delete them, or completely reset the vault if you forget your passkey. This is mainly a learning project where I wanted to understand how encryption, browser storage and JavaScript actually work by building something myself.", "repo": "https://github.com/phantom-ascii/PhantomVault", "demo": "https://phantom-ascii.github.io/PhantomVault/"}]...
|
[{"post_id": 51958, "ts": "202 [{"post_id": 51958, "ts": "2026-08-21T22:51:20Z", "hours": 1.0256, "text": "#DevLog 2: the end pretty quickly finished, Hope you enjoy"}, {"post_id": 51932, "ts": "2026-08-21T21:17:41Z", "hours": 1.6972, "text": "DevLog 1: New World Ive started this small quirky website. Its a vault with all you file stored locally.* Its current a work in progress.* I made a simple locked screen and a working button i also added a effect where the screen leans towards your mouse.If you like what im making make sure to follow! byeee"}]...
|
Title: Phantom Vault by @phantom-ascii | Stardance Title: Phantom Vault by @phantom-ascii | Stardance
Devlogs:
DevLog 1: New World Ive started this small quirky website. Its a vault with all you file stored locally.* Its current a work in progress.* I made a simple locked screen and a working button i also added a effect where the screen leans towards your mouse.If you like what im making make sure to follow! byeee
#DevLog 2: the end pretty quickly finished, Hope you enjoy
Ships:
Phantom Vault is a local file vault I built with HTML, CSS and JavaScript. It lets you upload files, encrypt them and store them locally in your browser instead of sending them to a server. It uses the Web Crypto API for encryption and IndexedDB for local storage. You can lock and unlock the vault, open your encrypted files, delete them, or completely reset the vault if you forget your passkey. This is mainly a learning project where I wanted to understand how encryption, browser storage and JavaScript actually work by building something myself....
|
1793141580.793406
|
1793227980.793406
|
|
52163
|
ThirdView by @shivakaushal | Stardance
|
shivakaushal
|
1
|
16.29
|
39
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T11:57:29Z", "hours": 6.0, "multiplier": 6.82, "payout": 39, "blessing": "neutral", "text": "I made ThirdView - you type a description of a scene and it jumps straight to that moment in a video, instead of scrubbing through the timeline forever. It runs fully in the browser using CLIP through Transformer.js, no uploads, no server. The hard part was getting an actual ML model to run smoothly with zero backend, plus CLIP wasn’t built for video, so figuring out how often to sample frames took a lot of trial and error. What we’re proud of is that it just works fully private, fully free, and it actually fixes something that annoys us every single time we watch something not together, without turning into some bloated overengineered app.", "repo": "https://github.com/ThisShivaKaushal/ThirdView-Max", "demo": ""}]...
|
[{"post_id": 71013, "ts": "202 [{"post_id": 71013, "ts": "2026-09-20T06:28:36Z", "hours": 0.9111, "text": "I have changed the UI, and some elements are hidden, because when we upload video then it appears. And now I’m going to write the logic(Javascript), i’m too fast because I have already made it, so basic things don’t take much time, but now i’m going to work on logic, and i also have to add some more features, so i think it usually takes 3-4 hours, and then the projects will get completed."}, {"post_id": 70990, "ts": "2026-09-20T05:14:27Z", "hours": 0.4422, "text": "HTML is completed, now I have to style it, and have to make the logic. Because our project is completely base on logic, so the javascript will be too long. Nd i also suffer sometimes with making logic, and let see what happen:D"}, {"post_id": 70487, "ts": "2026-09-19T08:41:14Z", "hours": 2.0139, "text": "Hey Everyone, I’m going to continue my ThirdView project again but this time, its name will be Thirdview Max, because it is the updated version, so. Now, you can also see the old version at github, which is at another repo. But Thirdview Max have more and extra feature then Thirdview, now it can give accurate result, but in past I said that it also have feature, by which you can just paste link, nd find the part. But because, i have to fetch the video in .mp4 first, which is difficult part, I tried, but i failed. That’s why I decided to skip this feature. and the main things, the Ui is going to completely change."}, {"post_id": 58121, "ts": "2026-08-30T13:56:28Z", "hours": 0.5769, "text": "#Devlog:6 of #Ship:2 I have made these files, but now my logic has hit a limitation because YouTube doesn’t allow frame extraction. To solve this, we are using a public API which helps a lot with YouTube search. I use yt-dlp to resolve the YouTube URL, specifically using an Invidious public API. I know it might get shut down sometimes by YouTube, but what can we do? I will use my own yt-dlp backend to get a CORS-friendly video stream. By doing this, we can access the YouTube video as a .mp4 file, which allows us to extract frames. Let’s see if it works perfectly or not. However, my own backend will work for only 7 days because it is an open-source project."}, {"post_id": 58009, "ts": "2026-08-30T10:54:52Z", "hours": 2.6042, "text": "#Devlog:5 of #Ship:2 I have made my UI, and now I have to write the logic. The best part is that I have messed up my style.css file. I want to improve it more, but I got confused with my colors. I gave names to the colors, but in the end, I could not understand my own color pattern or what I had decided to use each color for. By the way, I think the UI looks good. Now, let’s talk about the UI features: I have made the header sticky and also added a blur effect to it. Instead of taking YouTube’s color palette, I used a popular palette from coolors.co because I liked it at first sight. You can see the UI below."}, {"post_id": 57238, "ts": "2026-08-29T10:45:40Z", "hours": 0.9719, "text": "#Devlog:4 of #Ship:2 I have made the HTML, and now I’m working on the CSS. I am making the UI look good. By the way, I think I have done only 30-40% of the CSS, and I think I’ll try to complete it today. Then, I’ll start focusing on the logic, like JavaScript, because it is our main stuff. I’d take inspiration from YouTube, like using YouTube’s color palette, and the structure is like the old one."}, {"post_id": 57189, "ts": "2026-08-29T09:24:01Z", "hours": 0.2992, "text": "#Devlog:3 of #Ship:2 I have just put my real hosted website into maintenance mode. Normally, if I push code to GitHub, Vercel automatically hosts the new version. If someone visits suddenly during that time, they might think the website has a code error. That’s why I created a vercel.json file a week ago and now pushed it to GitHub. Now, I can continuously make changes for a while without any tension related to the main website, because it always shows that it is in maintenance."}, {"post_id": 57145, "ts": "2026-08-29T07:49:32Z", "hours": 0.5208, "text": "#Devlog:2 of #Ship:2 I have implemented two things: 1.Now you can paste the link of a YouTube video and it will help you find the timestamp. Although I have just created the HTML, this time I didn’t have an idea of how I will grab the frames. By the way, I think I’ll try to download the video in low quality, and then grab the frames. If anyone has any ideas, just let me know, or I’ll try to serch and understand an easier way. 2. I have implemented a new model (Audio Model). In the Shipwright review video, I saw that the reviewer typed “MrBeast saying ‘Red Light,’” and my website at that time was only able to search through visuals. But now it can walk through the vocal parts. It converts the video’s audio into text, and then it will match the query. But here’s an error: we can’t check the query’s exact result matching percentage, and it may create some problems. By the way, when you search, it has two options like @visual and @vocal . So when you select one, it only runs that one model. But if you have added say or said, then it also runs both things simultaneously. If you only put one thing, then it runs one model only, so it saves memory and works fast. But let’s suppose you didn’t select either one; then for accurate results, it runs both models."}, {"post_id": 57108, "ts": "2026-08-29T06:36:15Z", "hours": 0.7319, "text": "#Devlog:1 of #Ship:2 Hi guys, when I shipped my first project, 2-3 people said that I used AI. I really did use it, but in different ways, and now I am also feeling ashamed of myself. Why? Because that was my first project, and my manner of writing code is not good, I even dn’t like what I write myself. That’s why I used AI by giving it my own code and tellng it to make it professional, understandable, and much more. That was my mistake, but now after searching a lot, I understand it didn’t matter. So now I am going to write this project again with some more features, and mainly the UI, which looked very cheap (and I know people were also saying it is AI—by the way, I took color decisions from AI). But now, instead of asking any AI out of fear of making mistakes, that fear has gone, and I am going to design everything by myself. However, my JavaScript is a little bit weak, so I am gong to use AI for learning purposes, but now I will upload the raw code that I write. By the way, the new feature will contain a YouTube video link."}, {"post_id": 53602, "ts": "2026-08-24T07:22:10Z", "hours": 0.7489, "text": "Another new feature, I copied it from Github, because I have used it many time."}, {"post_id": 53591, "ts": "2026-08-24T06:28:53Z", "hours": 0.47, "text": "I built the Thirdview project, but after shipping it, I received requests to make the design more appealing. I didn’t love the original look either, so I am redesigning the UI and adding more color. By the way, I am also working on a new feature—see if you can guess what it is!"}, {"post_id": 52890, "ts": "2026-08-23T08:37:28Z", "hours": 0.9194, "text": "Guys, I was suffering from a problem. When my friends and I watch any movies or something else, mostly anime, then we surely find a scene where me and my boys melt. And when we meet physically, we have to tell each other about that. And this is the most time-consuming part. My one friend who doesn’t even know the episode, then how can we think he will remember the timestamp? That’s why, by the way, I’m also like my friend. That’s why I built this app. It means you just have to upload the videos and then tell about the scene, like, “the main character, who wears yellow clothes, is beating the man,” and you will get the timestamp without any problem. Now, my friends and I don’t have to waste more than 30 minutes for just a 10- to 15-second clip in a one-hour episode. Maybe we can get the correct timestamp in just two or three minutes. Hold a minute. If you are lucky, then you might get the correct timestamp randomly. But I know our and your luck are not that great. And it’s just HTML, CSS, and JavaScript. By the way, let me tell you how it is working. For this, you can read the README.md. For the trial, you can visit thirdview.vercel.app. By the way, for most people, it is just extra storage. But for me, this is my first project, such a great project I made. Bye-bye. Just visit the repo. Oh, and it completely works locally, means in the browser, but it’s not connected to the cloud. That’s why it may be slow. I have just host my project on Vercel, and I will ship this project today after making a show video."}, {"post_id": 52402, "ts": "2026-08-22T15:03:55Z", "hours": 4.8003, "text": "My first project is almost ready to ship! I can’t wait to show you guys. It’s just HTML, CSS, and JavaScript, but it solves a really annoying problem in our friend group. I’ll try to publish it tomorrow. Bye for now!"}]...
|
Title: ThirdView by @shivakaushal | Stardance
Dev Title: ThirdView by @shivakaushal | Stardance
Devlogs:
My first project is almost ready to ship! I can’t wait to show you guys. It’s just HTML, CSS, and JavaScript, but it solves a really annoying problem in our friend group. I’ll try to publish it tomorrow. Bye for now!
Guys, I was suffering from a problem. When my friends and I watch any movies or something else, mostly anime, then we surely find a scene where me and my boys melt. And when we meet physically, we have to tell each other about that. And this is the most time-consuming part. My one friend who doesn’t even know the episode, then how can we think he will remember the timestamp? That’s why, by the way, I’m also like my friend. That’s why I built this app. It means you just have to upload the videos and then tell about the scene, like, “the main character, who wears yellow clothes, is beating the man,” and you will get the timestamp without any problem. Now, my friends and I don’t have to waste more than 30 minutes for just a 10- to 15-second clip in a one-hour episode. Maybe we can get the correct timestamp in just two or three minutes. Hold a minute. If you are lucky, then you might get the correct timestamp randomly. But I know our and your luck are not that great. And it’s just HTML, CSS, and JavaScript. By the way, let me tell you how it is working. For this, you can read the README.md. For the trial, you can visit thirdview.vercel.app. By the way, for most people, it is just extra storage. But for me, this is my first project, such a great project I made. Bye-bye. Just visit the repo. Oh, and it completely works locally, means in the browser, but it’s not connected to the cloud. That’s why it may be slow. I have just host my project on Vercel, and I will ship this project today after making a show video.
I built the Thirdview project, but after shipping it, I received requests to make the design more appealing. I didn’t love the original look either, so I am redesigning the UI and adding more color. By the way, I am also working on a new feature—see if you can guess what it is!
Another new feature, I copied it from Github, because I have used it many time.
#Devlog:1 of #Ship:2 Hi guys, when I shipped my first project, 2-3 people said that I used AI. I really did use it, but in different ways, and now I am also feeling ashamed of myself. Why? Because that was my first project, and my manner of writing code is not good, I even dn’t like what I write myself. That’s why I used AI by giving it my own code and tellng it to make it professional, understandable, and much more. That was my mistake, but now after searching a lot, I understand it didn’t matter. So now I am going to write this project again with some more features, and mainly the UI, which looked very cheap (and I know people were also saying it is AI—by the way, I took color decisions from AI). But now, instead of asking any AI out of fear of making mistakes, that fear has gone, and I am going to design everything by myself. However, my JavaScript is a little bit weak, so I am gong to use AI for learning purposes, but now I will upload the raw code that I write. By the way, the new feature will contain a YouTube video link.
#Devlog:2 of #Ship:2 I have implemented two things: 1.Now you can paste the link of a YouTube video and it will help you find the timestamp. Although I have just created the HTML, this time I didn’t have an idea of how I will grab the frames. By the way, I think I’ll try to download the video in low quality, and then grab the frames. If anyone has any ideas, just let me know, or I’ll try to serch and understand an easier way. 2. I have implemented a new model (Audio Model). In the Shipwright review video, I saw that the reviewer typed “MrBeast saying ‘Red Light,’” and my website at that time was only able to search through visuals. But now it can walk through the vocal parts. It converts the video’s audio into text, and then it will match the query. But here’s an error: we can’t check the query’s exact result matching percentage, and it may create some problems. By the way, when you search, it has two options like @visual and @vocal . So when you select one, it only runs that one model. But if you have added say or said, then it also runs both things simultaneously. If you only put one thing, then it runs one model only, so it saves memory and works fast. But let’s suppose you didn’t select either one; then for accurate results, it runs both models.
#Devlog:3 of #Ship:2 I have just put my real hosted website into maintenance mode. Normally, if I push code to GitHub, Vercel automatically hosts the new version. If someone visits suddenly during that time, they might think the website has a code error. That’s why I created a vercel.json file a week ago and now pushed it to GitHub. Now, I can continuously make changes for a while without any tension related to the main website, because it always shows that it is in maintenance.
#Devlog:4 of #Ship:2 I have made the HTML, and now I’m working on the CSS. I am making the UI look good. By the way, I think I have done only 30-40% of the CSS, and I think I’ll try to complete it today. Then, I’ll start focusing on the logic, like JavaScript, because it is our main stuff. I’d take inspiration from YouTube, like using YouTube’s color palette, and the structure is like the old one.
#Devlog:5 of #Ship:2 I have made my UI, and now I have to write the logic. The best part is that I have messed up my style.css file. I want to improve it more, but I got confused with my colors. I gave names to the colors, but in the end, I could not understand my own color pattern or what I had decided to use each color for. By the way, I think the UI looks good. Now, let’s talk about the UI features: I have made the header sticky and also added a blur effect to it. Instead of taking YouTube’s color palette, I used a popular palette from coolors.co because I liked it at first sight. You can see the UI below.
#Devlog:6 of #Ship:2 I have made these files, but now my logic has hit a limitation because YouTube doesn’t allow frame extraction. To solve this, we are using a public API which helps a lot with YouTube search. I use yt-dlp to resolve the YouTube URL, specifically using an Invidious public API. I know it might get shut down sometimes by YouTube, but what can we do? I will use my own yt-dlp backend to get a CORS-friendly video stream. By doing this, we can access the YouTube video as a .mp4 file, which allows us to extract frames. Let’s see if it works perfectly or not. However, my own backend will work for only 7 days because it is an open-source project.
Hey Everyone, I’m going to continue my ThirdView project again but this time, its name will be Thirdview Max, because it is the updated version, so. Now, you can also see the old version at github, which is at another repo. But Thirdview Max have more and extra feature then Thirdview, now it can give accurate result, but in past I said that it also have feature, by which you can just paste link, nd find the part. But because, i have to fetch the video in .mp4 first, which is difficult part, I tried, but i failed. That’s why I decided to skip this feature. and the main things, the Ui is going to completely change.
HTML is completed, now I have to style it, and have to make the logic. Because our project is completely base on logic, so the javascript will be too long. Nd i also suffer sometimes with making logic, and let see what happen:D
I have changed the UI, and some elements are hidden, because when we upload video then it appears. And now I’m going to write the logic(Javascript), i’m too fast because I have already made it, so basic things don’t take much time, but now i’m going to work on logic, and i also have to add some more features, so i think it usually takes 3-4 hours, and then the projects will get completed.
Ships:
I made ThirdView - you type a description of a scene and it jumps straight to that moment in a video, instead of scrubbing through the timeline forever. It runs fully in the browser using CLIP through Transformer.js, no uploads, no server. The hard part was getting an actual ML model to run smoothly with zero backend, plus CLIP wasn’t built for video, so figuring out how often to sample frames took a lot of trial and error. What we’re proud of is that it just works fully private, fully free, and it actually fixes something that annoys us every single time we watch something not together, without turning into some bloated overengineered app....
|
1793202953.9732127
|
1793289353.9732127
|
|
52177
|
645 Run Club by @k_nilesh | Stardance
|
k_nilesh
|
1
|
13.0
|
29
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T05:36:06Z", "hours": 13.0, "multiplier": 2.93, "payout": 29, "blessing": "neutral", "text": "I built 645 Run Club, a running community platform designed to bring runners together through runs, challenges, events, and community activities. The most challenging part was making the website functional beyond just the frontend, especially working with the backend, APIs, data handling, and fixing unexpected bugs. I’m proud that I took an idea and turned it into a real working project while learning how different parts of a full-stack application connect together. To test it, people can visit the 645 Run Club website, explore the available features, and sign up or log in where required to experience the platform.", "repo": "https://github.com/k-nilesh04/645-running-club", "demo": "https://645-running-club.vercel.app/"}]...
|
[{"post_id": 51453, "ts": "202 [{"post_id": 51453, "ts": "2026-08-21T05:33:12Z", "hours": 13.0578, "text": "645 Run Club is a community-based running platform/club that I’m building to bring people together through running and fitness. The idea is to create a space where people can join runs, participate in challenges and events, track their progress, and stay motivated with a community. I’m currently working on the website and backend, making the platform functional and building the features needed to manage members, runs, events, and communication."}]...
|
Title: 645 Run Club by @k_nilesh | Stardance
Devl Title: 645 Run Club by @k_nilesh | Stardance
Devlogs:
645 Run Club is a community-based running platform/club that I’m building to bring people together through running and fitness. The idea is to create a space where people can join runs, participate in challenges and events, track their progress, and stay motivated with a community. I’m currently working on the website and backend, making the platform functional and building the features needed to manage members, runs, events, and communication.
Ships:
I built 645 Run Club, a running community platform designed to bring runners together through runs, challenges, events, and community activities. The most challenging part was making the website functional beyond just the frontend, especially working with the backend, APIs, data handling, and fixing unexpected bugs. I’m proud that I took an idea and turned it into a real working project while learning how different parts of a full-stack application connect together. To test it, people can visit the 645 Run Club website, explore the available features, and sign up or log in where required to experience the platform....
|
1793202958.0240567
|
1793289358.0240567
|
|
52216
|
orbital by @ttyChud | Stardance
|
ttyChud
|
1
|
56.0
|
993
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-02T04:23:11Z", "hours": 56.0, "multiplier": 17.6, "payout": 993, "blessing": "neutral", "text": "This is Orbit Lens, a real-time 3D satellite tracking website built using vanilla JavaScript and Three.js. It tracks over 16,000 live space objects around earth using real-time data from CelesTrak. It has many features including 3d and 2d orbit tracking, 3d models of select satellites (ISS, Terra, HST, and Aqua). It also includes a filtering feature where you can filter satellites based on specific categories Before testing this project, it is important to know some stuff: You will have the best experience if you access this through a laptop or desktop Sometimes, the api maybe down or is not responding to requests so please keep in mind that if you see an alert saying API not responding, it is out of the website’s hands and it an error outside of my control. That’s it. Thank you for testing this project and hope you like it :)", "repo": "https://github.com/Himanshu121865/orbital", "demo": "https://orbital-sandy.vercel.app/"}]...
|
[{"post_id": 60029, "ts": "202 [{"post_id": 60029, "ts": "2026-09-02T04:19:17Z", "hours": 0.5989, "text": "OrbitLens Devlog #13: fixing deployment bugs 😭😭 Before i continue with this devlog, let me start by saying that modern security rules are the worst. Like istg, why do they have to be so strict? Anyway, you’ll see what i mean by that down below. THis session was all about fixing the deployment bugs. I was almost done and then these f bugs ruined it. This devlog has only abt 30 mins logged because i had the help of ai to fix this because this was way way out of my expertise. Here are the changes. I used ai for this devlog though cus i didn’t understand what it did (but i only used it for htis devlog): Problem 1: The [UNSUPPORTED_FEATURE] Vite Crash My very first Vercel build crashed immediately with a “Top-level await is currently not supported with the ‘iife’ output format” error. Apparently, the satellite.js library I use for SGP4 orbital propagation runs heavy calculations using Web Workers and WebAssembly. By default, Vite tries to bundle everything into an older iife format for maximum browser compatibility, which completely choked on the newer await feature inside the worker file. I fixed this (with the help of ai) by explicitly telling Vite’s internal bundler (Rolldown) to output modern ES modules for both the main thread and the background workers. I created a vite.config.js file and updated the configuration (see vite.config.js in the github repo) Problem 2: 404 Missing 3D Models After fixing the build, the site successfully deployed, but my 3D models (like the ISS and Hubble) and Earth textures threw 404 Not Found errors in the console. Because I was loading these assets while the app was running in my Three.js code using string paths (e.g., ‘/models/iss.glb’), Vite didn’t know they existed and simply excluded them from the final production build. I moved my models and textures folders into Vite’s public directory. Anything placed in the public folder gets copied exactly as is to the root of the final build. This bug wasn’t too bad but the next one was absolute hell. Problem 3: API, Cloudflare and CORS block This was the hardest part. Orbit Lens fetches live Two-Line Element (TLE) data for over 16,000 satellites directly from CelesTrak. It worked perfectly when i hosted it locally, but on Vercel, the browser instantly threw a 403 Forbidden error. CelesTrak uses Cloudflare to prevent automated scraping. When Cloudflare saw an Origin header coming from a deployed Vercel frontend instead of an normaly IP like my computer’s, it blocked the connection. Attempts to use public proxies (like allorigins) resulted in 408 Request Timeout errors because the multiple mb big satellite data took too long to transfer. To fix this, I used Vercel’s Native Rewrites (i have no idea how to use this so i asked ai to do it for me). “I” ;) created a vercel.json file in the root directory to act as a silent backend proxy. By fetching from my own local route (/api/celestrak), the browser doesn’t trigger CORS security. Vercel’s backend intercepts the request, strips the frontend Origin header that was triggering the firewall, and routes the raw data back to the application. This worked! And the website is finally live and i am about to ship the project!"}, {"post_id": 60005, "ts": "2026-09-02T03:10:06Z", "hours": 1.5539, "text": "OrbitLens Devlog #12: Added README.md and ARCHITECTURE.md In this session, i added the README and ARCHITECTURE.md. The README.md highlights the basic features of the website, the tech stack used and how to run this project locally. The ARCHITECTURE.md goes deeper into how the code itself works so anyone perusing it can get a better idea on how i built this project."}, {"post_id": 59764, "ts": "2026-09-01T18:10:36Z", "hours": 2.1944, "text": "OrbitLens Devlog #11: Semi-final changes In this session, i focused on finding small aspects that need to be improved and improved them. Change 1: Firstly, i realised that the dropdown i had implemented was the default dropdown and it didn’t rlly fare well when there were 16000 items to choose from. So i made a custom dropdown, which looks much better than the default one, and made a funciton along with it that shows like the first 200 items matching the search query or, if nothing in being searched, the first 200 items in the list that the API gave. This made the entire experiene so much better because the default dropdown looked kinda ugly cus it took the whole length of the screen. Normally, this wouldnt take too long but i accidentally deleted the wrong eventListeners multiple times because satFilter and satSearch were so similar. So i spent like a good amount of time trying ot find the problem, and it turned out that i justmodified or deleted the wrong thing. Change 2: I found a problem with the filtering system, more specifically in filtering the space stations. Previously, i just had all the satellites with ISS or CSS in their names classified as space station because there are only two space statoins in space right now (ISS and Tiangong) so i filtered any satellites with those two names. But i failed to take into account that other satellites might also have ISS or CSS in their names so instead of two satellites showin up, 16 satellites were avaialbe in that filter. And these were not space stations but rather other statellits which had like ISS or CSS in their names (e.g. Swisscube). So i changed the filter to filter the space stations by their respective NoradIDs, which worked. Change 3: This change wasnt too big; i modified the expanded map layout becaues how it was before led to it having a lot of blank space and probalby wouldnt have looked good in differnet devices."}, {"post_id": 59360, "ts": "2026-09-01T03:31:31Z", "hours": 4.2022, "text": "OrbitLens Devlog #10: mobile layout implementation + better loading screen I am nearing the first ship of this project so this session were just about the final aspects that needed to be improved Change 1: I completely changed the loading screen. Firstly, it now displays the loading percentage that accurately shows the real time progress. Secondly, overall it just looks much better. Thirdly, i also implemented an error notification in the main dashboard in case the API doesnt work and so the website doesnt look like it’s broken Change 2: I added a mobile layout option. by that i mean that if the user is accessing this website on a mobile, it won’t be completely botched (hopefully) p.s. i know this devlog isnt that detailed as my previous ones and that’s because there isn’t much to talk about in this session cus the main changes were in the styles.css (and i’m hella tired)"}, {"post_id": 58733, "ts": "2026-08-31T08:54:43Z", "hours": 6.5158, "text": "OrbitLens Devlog #9: implemented satellite filtering + earth connecting line and complete UI overhaul Now that the website has a proper engine and everything was working well, i decided to add some more stuff. I had two goals for this session. One was to add a satellite filtering option where the user can filter categories of satellites. The other is to change the ui because there were many imprefectoins. Here is a breakdown of what i changed and the challenges i faced: Change 1: I added a global filtering system to fiter satellites by categories. To do this i first built a string-matching engine directly into the TLE parsing loop. As the engine downloads the TLE data from the API, it scans the satellite names and tags them each with categories. I didn’t really know what to categorise them so i thought of some categories and i asked ai to think of some categories. These are the categories: StarlinkOnewebCommsNavigationWeatherand Other/Miscallaneous (which i impemented later; read below) I then wired the HTML dropdown directly into the WebGL gpu loop. Instead of deleting unselected satellites (which would take up too much gpu memory), the gpu simply multiplies their matrix scale to 0, 0, 0, which would just hide them. But there was a challenge that i faced, though it wasn’t a big one. When i first implemented the filter, I noticed that the total satellite count dropped to around 12,000. It turned out that all the satellites that didnt fit into any cateogry were not shown at all so i expanded the categories to include an OTHER category. I also had to make some changes in the raycaster or the users would accidentally be clicking on the hidden satellites. Change 2: I also added a line connecting the selected satellite directly to its exact spot on the Earth’s surface directly beneath it. I did this by first pre-allocating a THREE.BufferGeometry with exactly two vertices. Inside the animation loop, i then took the satellite’s live 3D coordinates and use a .normalize() math function. Because the Earth has a radius of exactly 1, normalizing the 3d coordinates perfectly attaches the bottom of the line to the planet’s surface. But, i ran into a bug where the line would randomly disappear depending on the camera angle. After some research (ai) i found out that this was caused by Three.js’s “Frustum Culling.” The code calculated the line bounding box once when the websited started up and when the camera moved away from that initial box, the gpu assumed the line was out of sight and stopped rendering it to save memory. So i just added a line of code (frustumCulled = false) that just overrode that. Change 3: Lastly, i essentially completely rewrote the styles.css to change how the ui looked cus i didn’t relaly like how it looked before. So this was the third change."}, {"post_id": 57886, "ts": "2026-08-30T06:40:40Z", "hours": 6.5181, "text": "OrbitLens Devlog #8: Scaling the 3d globe and some other stuff In the last update, i finally implemented the 2d map so this time i want to take this website a step further since the foundation is stable enough. I decided to go from tracking 5 hardcoded satellites to over 16,000 space objects. Here is what i changed, how i changed it and the challenges i faced: Change 1: Originally, i just added the starlink satellites to what i already had which was my initial goal. but the thing was, i was requesting the API for thousands of satellites, which did work once and all of them were stored in localStorage but for ‘testing purposes’ (i was just stupif), i cleared the localStorage and re-requested the TLE which it then instantly rejected cus of its ‘anti-bot firewalls’ and i got ip banned for like a couple of hours and it gave a 403 error aswell. To fix this, i read some CelesTrak documentation and i realised that there is a way to ismply request all the satellite (every satellite that it had) data in one request. Apparently there was a special search query (‘active’) that i could’ve used but instead i individually fetched everything. So once i used that query, i got all of the satellitse (a bit more than 16000) rendered on the earth but it was laggy, which leads to my second change. Change 2 To fix this massive lag caused by the 16000+ satellites, I completely replaced the standard 3D mesh pipeline with THREE.InstancedMesh so that instead of creating 16,000 individual sphere objects (which would like instantly crashes the browser), i can feed the GPU a single geometry and material, along with an array of 16,000 matrixes. That means now the gpu like renders everything in one go. But, I hit a massive 5-second freeze whenever a user clicked the ISS (which makes sense cus this was a 4k extremely detailed 3d model). The thing was, WebGL delays uploading heavy 3D textures to the GPU until an object is actually rendered on screen. And because the ISS model was hidden on startup, the compiler skipped it, so the website was stuck trying to render it when i selected the ISS. I solved this by forcing the renderer to draw one “dummy frame” with all models visible during the loading screen, which, in a sense, ‘warmed up’ the GPU. Change 3: The lag was better but it was still there and i realised the problem was that each of the dots representing a satellite were smoothly moving in space. This smooth-moving physics applied to over 16000 dots was what slowed down the website. To fix this, I rewrote the loop that propogates the satellite dots so physics calculations wouldn’t choke the main JavaScript thread. To do this i built a system to process the satellites in batches of 4,000 satellites per frame instead of all 16,000. Second, i scrapped geodetic trigonometry (latitude/longitude conversions; see one of the earlier devlogs) and replaced it with direct Earth-Centered, Earth-Fixed (ECEF) 3D vector rotation. Initially, our batches were too small, causing satellites to visually ‘teleport’ instead of smoothly gliding, which looked really glitchy. But by upgrading to matrix rotation, i managed to get a huge increase in speed. This allowed me to crank the batch size up and get that smooth motion across the entire thing. Change(s) 4: There were still some small bugs in the visual aspects like the dots disappearing or the transition jump (see previous devlog(s) to understand) and stuff but i took care of them."}, {"post_id": 56499, "ts": "2026-08-28T09:22:18Z", "hours": 3.8858, "text": "OrbitLens Devlog #7: Implementing a 2D orbit map To expand the functinality of the website, i wanted to add a 2D world map that has the 3d orbit projected on to it. Here is a breakdown of what i built, how i built it and the challenge i faced. What I Built: I made a 2D projection of the 3d globe using the HTML5 Canvas API that runs at the same time with the WebGL 3D engine. The map automatically appears when a satellite is selected, and fetches live telemetry to draw exactly one full orbital period (half past, half future). The orbit line looks like how it does on the 3d globe with a yellow line representing the past trail and a dotted blue line representing the predicted future track. I also built an “EXPAND” toggle that expands the map to fill most of the screen if the user wants to take a close look. Challenges: If a satellite flies east across the Pacific Ocean (where the International Date Line is), its longitude coordinates suddenly jump from +179deg to -179deg. I originally didnt take this into account and it had like this massive, horizontal glitch streak entirely across the screen cus of the sudden coordinate shift. To fix this, I programmed a strict mathematical distance gate into the drawing loop. If the engine detects that the X-coordinate has jumped by more than half the width of the canvas, it forces the renderer to break the current stroke (mapCtx.stroke()), lift the ‘pen’, and begin a completely new path on the opposite edge of the map (mapCtx.beginPath()). When plotting a full 90-minute orbit, the beginning of the yellow line and the end of the cyan line do not connect perfectly, leaving a massive gap. I originally thought this was a problem and tried for quite a while to fix this and i double checked the math formulas again and again. But i realised this isnt a math error, it’s just physics. While the satellite flies in a continuous circle, the Earth is physically rotating underneath it. By the time the satellite completes one lap, the ground has shifted roughly 22.5 degrees to the east, pushing the satellite’s relative ground track to the west. So i just left it like that to accurately represent the Earth’s rotation. This was the biggest problem and took the most time to fix. Three.js orbital camera controls are incredibly aggressive about capturing mouse events. The 3D engine was always suppressing the HTML ‘click’ events, making the “EXPAND” button not work. Not only that, the standard inline CSS was pushing the 3D canvas down the page, which misaligned everything and didnt allow me to select the satellites at all. To fix this, fisrt, i locked the 3D canvas to a fixed background layer (z-index: -1) to completely isolate it from the UI layout. Second, i bypassed the WebGL event interceptors entirely and connected the code that handles the expansion directly to a global window function (window.toggleMap) and just injected the button with the HTML onclick attribute. This fixed everything and now it works really great."}, {"post_id": 55587, "ts": "2026-08-27T15:15:22Z", "hours": 6.2028, "text": "OrbitLens Devlog #6: Implemented Sun and the day night cycles + camera panning improvements The core engine was working smoothly, so this session was focused on the ui and aesthetics and realism. Here are the changes i made, how i made them, and the challenges i faced: Change 1: Implemented the Sun The first major goal was replacing the static and boring lighting the 3D earth originally had with a Sun. To do this, I wrote a custom Solar Ephemeris algorithm. Using the current Julian date, it calculates the sun’s exact Right Ascension, Declination, and Earth’s Greenwich Mean Sidereal Time (GMST) to pinpoint the real-time subsolar vector. Since this was some complicated math, i had to use some ai for this. But in a WebGL engine, lights are purely mathematical vectors and there is no physical object in the sky. So when i first added a solid white sphere, it literally looked like a flat plastic toy and looked really ugly. To fix this, I abandoned the 3D ball and built a 2D Sprite using the HTML5 Canvas API to generate a radial gradient. By using Additive Blending to the material, I forced it to mathematically layer the light over the space, which created like this blinding, light that looked like the sun, which was good. Change 2: The Day/Night City lights cycle: To make the globe even more realistic, I wanted the night side of the Earth to have like the night time city lights rather than just a dark shadow. To build this, I added an 8k night-map texture (from Solar System Scope) and implemented a WebGL fragment shader into the Three.js’s native MeshPhongMaterial using a compiler hook. But there was a problem, the free night map that i implemented had this blue tint to it, and when i tried to correct it, it literally turned to this muddy, polluted yellow. To fix this, I programmed the shader to intercept the texture data, remove the color tint by calculating luminance, and pass it through a smoothstep noise gate. Anything below a 10% threshold was forced to pitch black, while populated areas were recolored with a warm golden orange hue. And it worked great! Change 3: More camera improvements Despite the previous session having to do with correcting the camera engine, there were still some stuff that i fixed here. The problem was since i removed OrbitControls in the last session (read previous devlog), once i had like hte earth upside, it was very hard to make it upright again. like at one point, i had the entire europe upside down and Africa was at the top of the globe but i couldnt get it back to normal. To fix this I changed the code so that the panning controls thing swaps between OrbitControls (for the 3D globe) and TrackballControls (for the satellites/spacecrafts). But there were some more challenges: When a zoom-in animation (read previous devlogs) finished (after selecting e.g. a satellite), the camera would like glitch backward into a less zoomed in position which was kinds uncomfortable to look at. Because the satellites were moving a static transition speed couldn’t catch them before the animation finished, so the final frame was a bit glitchy and the screen like jumped a bit. To fix all of these problems, I first made sure that disabled camera controls are completely turned off so they can’t fight the active zoom animations. I also made it that instead of moving at a steady speed, I added a speed-up effect as the camera gets closer to the target. This ensures that the camera glides smoothly into place right on time without any jerky jumps."}, {"post_id": 55313, "ts": "2026-08-27T01:49:10Z", "hours": 7.3289, "text": "OrbitLens Devlog #5: Camera panning improvements and performance updates After the changes from Devlog #4, all the math and the 3d models were all working but i faced some problems in other aspects of the website. Here are soe of the changes i made: Change 1: Correct orientation This was a small change, but i noticed that some satellites were a bit too big (like Aqua) and were positioned wrongly, so i just chaged teh scale and the rotation to make it a bit more realistic Changes 2, 3, and 4: The camera improvements I faced a lots of problems with the camera and how it worked. Before, i couldn’t rotated in all directions around the earth or the satellites because they were using OrbitControls so i swapped that out with TrackballControls, which allows for 360deg panninh There was also like a rubber band effect where the camera, when the camera lock was selected as satellite, zoomed in towards a satellite, i couldn’t interact with the satellite at all. THis was because as the satellite’s moving, the camera is also actuvely trying to catch up so it never actually ‘ended’ its animation so i was blocked from interacting with the satellite. To fix this i implemented delta tracking. The engine now calculates the exact mathematical vector the satellite moves every frame and shifts the camera’s physical position by that exact same amount, which worked. Previously, switching targets caused the camera to travel in a straight line, clipping through the Earth, which looked kinda unprofessional so I engineered a custom transition that separates the camera’s direction from its altitude. Now, when you select a new satellite, the camera zooms out, tracels in a an arc over the globe, and zooms in to the destination satellite. The animation still needs a lot of improvement cus some parts are still a bit glitchy, but i’m happy for now. Change 5: I implemented it that the TLEs are now stored in the actual localStorage for like 6 hours and then fetch new TLEs. So the user will always have the latest TLEs cus they update evey 12hrs."}, {"post_id": 54315, "ts": "2026-08-25T08:17:16Z", "hours": 5.8253, "text": "OrbitLens Devlog #4: Adding multiple satellites In my last update, I finally got a 3D model of the ISS rendering on the globe with a basic UI dashboard. It looked cool, but I wanted to scale it up. I wanted to add multiple famous satellites on top of the ISS: The Hubble Space Telescope (HST)NASA’s AquaNASA’s TerraTiangongISS (which already exists) At least for now. Maybe in later stages, I can add Starlink satellites or sth. Here is waht I built, how I built it, and the challenges I faced. Change/Challenge 1: the orbit that looked like a slinky I hardcoded a 90-minute orbit line (the ISS orbit time). But other satellites have different orbital periods, so 90 mins fell short. Increasing it to a 12-hour calculation made the ISS orbit look like a massive slinky wrapping around the Earth cus its orbit is only 90mins. I fixed this by dynamically calculating the exact total orbit time using the satellite’s math: const periodMinutes = Math.ceil((2 * Math.PI) / satrec.no); const halfPeriod = Math.floor(periodMinutes / 2); Change/Challenge 2: IP ban (again) The JS fetch() doesn’t consider a ‘429 too many requests’ (i got this cus vite reloaded the page every time i saved something) response as a network error, so it tried calculating the HTML error page as orbital math and crashed. I fixed this by manually checking the response.ok HTTP status. If the API blocks me, the code redirects to an “Offline Fallback Mode”—loading a hardcoded string of ISS TLE math so the app survives. Change/Challenge 3: improper API request After like 4 hours, I realized I still wasn’t getting a proper API response even though the IP ban would have worn off. I looked at the code and realized I was pulling data for all five satellites in one go by just comma-separating the values in the URL like this: …/gp.php?CATNR=25544,20580,48274&FORMAT=tle (each number references to a satellite) But after CelesTrak’s documentation, it strictly dictated that the CATNR parameter only accepts a single catalog number. The server rejected the request, my code assumed 0 satellites, and the engine crashed. The fix: Writing five separate fetch() blocks is messy, and implementing an await fetch() in a for-loop creates a slow “waterfall” effect (waiting for one to finish before starting the next). I fixed this with JavaScript’s Promise.all. I created an array of the exact NORAD IDs, mapped over it to generate separate, perfectly formatted fetch requests, and Promise.all fires them all at the exact same time. Change/Challenge 4: I wanted 3D models for all of these. I found Aqua and HST easily from NASA. I found Terra, but it was fetching some other incompatible file I didn’t have, so I just scratched the Terra model. Tiangong was the biggest pain—everywhere I looked was either paid or on Sketchfab, and I cant create a Sketchfab account cus of some stupid Epic Games restriction. Implementing the files I did have was the next issue. Hardcoding multiple GLTFLoader blocks would turn the code into spaghetti. Plus, 3D models from the internet aren’t scaled equally—my Hubble was massive, and my Aqua model was tiny. The fix: I built a central Model Registry object. It maps a satellite’s NORAD ID to its file path and a specific scale multiplier. Even better, I implemented a fallback for satellites I done have a model for. If I track a satellite (like Tiangong) but leave the file path as null, the code detects this and dynamically generates a glowing cyan sphere using Three.js math to take its place. Changes 5 and 6: I updated the dashboard to include a dropdown to select the satellite and the telemetry updates accordingly. I also added a camera toggle feature where the user can lock the camera to follow the satellite or stay locked on the Earth. Lastly, I implemented a custom loading screen while the models load. P.S.Lots of info is compressed cus i crossed the 4000 char limit."}, {"post_id": 53856, "ts": "2026-08-24T15:41:08Z", "hours": 5.4819, "text": "OrbitLens Devlog #3: Adding a dashboard + ISS 3d model implementation I had two goals in my mind in this session. One was to add a dashboard which displays some stats of the ISS and the other is to replace the red dot with a 3d model of the ISS. Here is what and how I implemented these stuff and the challenges i faced: Change/Problem 1: Before I even got started on the new stuff i wanted to add, i faced a big problem. While testing the physics code and other stuff, my build tool (Vite) was auto-refreshing the browser every time I hit save. This I spammed CelesTrak’s public API with dozens of requests per minute. This lead to me kinda getting IP blocked temporarily, at least that’s what i think happend because it always returned an HTML error page instead of a TLE string. My engine tried to calculate stuff with that empty TLE and just crashed the engine The fix: It is important to know that a TLE is not like a live GPS broadcast that gets transmitted every second. It’s literally like a mathematical snapshot of a ton of stuff of the ISS like its position and its orbit and NORAD only updates these TLEs like twice a day or sth. So I fixed this api problem by making it such that the localStorage caches the TLE once and uses it for the calculation for the next 12 hours and then updates the TLE after that. Change 2: Dashboard implementation I implemented a dashboard that shows up on the top left of the screen and shows the following stuff abotu the ISS: Longitude: the method i used to calculate this is in one of my previous devlogs (i think my last one). But here is a quick summary: To find coordinates I first calculated the Greenwich Mean Sidereal Time (gmst), which gives me the exact rotational angle of the Earth at that specific millisecond. I passed the ECI position (one of the previosu devlogs) and gmst into satellite.eciToGeodetic(), which projects the point onto the spinning globe in radians. I then multiplied those values by 180/pi to convert the radians into standard degrees latitude: same as longitude -altitude: The eciToGeodetic() function also calculates the distance from the satellite’s coordinates down to the mathematical surface of the Earth (the WGS84 or the ‘World Geodetic System 1984’ ellipsoid which is like a mathematical reference representation of the earth that is used in calculatoin and stuff). It outputs this directly as height in kilometers, which I then simply rounded to two dp. -velocity: The propagate() function outputs the satellite’s speed broken into X, Y, and Z axes (measured in km/s). To get a single speed, I calculated the magnitude of that 3D vector using the 3D Pythagorean theorem: v = squareroot(x^2 + y^2 + z^2) Change 3: To implement a 3d model, i first needed that 3d image. I wanted the highest quality NASA model available (Model D - IGOAL). I downloaded the official .fbx, converted it to a .glb, and ended up with a 255mb file. Which is really bad because shoving a 255mb file into a web browser would just crash the entire thing. So i just ran that through a draco compression and a texture compression (WebP 1024x1024) which brought the size to about 18mb which was much better. To render this, I used Three.js’s GLTFLoader with a dedicated Google WebAssembly DRACOLoader to decode the compressed math. The next couple of changes were just to make it more realistic: i changed the scale from 0.02 (where it was the size of a continent) to 0.001 (which made it a good size) the direction the ISS faced was not accurate at all so I wanted to rotate until its in the correct position. But because the animate() loop was actively using math to point the model forward 60 times a second, it kept overriding my manual rotation. So I wrapped the ISS in a THREE.Group, rotated the mesh 90 degrees inside that container, and then applied the math."}, {"post_id": 52416, "ts": "2026-08-22T15:23:19Z", "hours": 3.9075, "text": "OrbitLens Devlog #2: Adding ISS + Orbit This session was mainly focused on implementing the ISS first to the satellite tracker. Here are the changes I made: Satellite Data Extraction and ISS Positioning To understand what I did in this session, it is important to know how I can get the ‘live’ location of the ISS works: firstly, satellites don’t broadcast live GPS coordinates to the internet. Instead, radars track them and publish Two-Line Element (TLE) sets. A TLE is like a raw string that “acts as a mathematical variable of an orbit’s shape at a specific moment.” I got these TLE from a non-profit API called CelesTrak. these TLEs are kinda useless so I used the satellite.js library to parse te TLEs. This js engine also allows you to run what is known as SGP4 models (Simplified General Perturbations 4) which is a mathematical model used to predict an orbit. Using this, TLEs are then converted to what’s known as Earth-Centered Inertial (ECI) vectors which is a “non-rotating 3D coordinate system anchored to the center of the Earth with its axes fixed relative to the stars, allowing you to calculate a satellite’s absolute mathematical position in space independent of the Earth spinning beneath it.” The ECI is still not useful so I passed it through satellite.eciToGeodetic which converted the eci to geodetic coordinates (longitude, latitude and altitude) But there’s one more step before the data is useful. The thing is Three.js only understands Cartesian coordinates (x, y, z) so the geodetic coordinates need to be converted to catesian. I did that using these mathematical formulas: x = r * cos(lat) * cos(lon) y = r * sin(lat) z = -r * cos(lat) * sin(lon) Orbit Implementation Satellites do not orbit in perfect circles; they follow complex trajectories that shift as the Earth rotates underneath them. The ISS takes roughly 92 minutes to complete one full orbit around the Earth. I captured this entire window by running two separate for loops. For these loops, i created 92 differed Date objects spaced exactly 1 second apart. here are the loops and how they work in a small nutshell: The Past: I looped backward from -46 minutes up to 0 (the current moment) and inputted the X, Y, and Z coordinates in each loop into THREE.BufferGeometry to draw a solid yellow LineBasicMaterial. The Future: I looped forward from 0 to +46 minutes. In every single iteration of those loops, and did the same thing. Challenges: the hemisphere and orbit were originally flipped or were completely false so i had to wrack my brain and dind the cause. I spent more than an hour debugging this. Turns out the formula was wrong and i used sin instaed of cos. In te end, I also double checked my orbit and position with official ISS trackers, and they matched!"}, {"post_id": 51593, "ts": "2026-08-21T11:15:14Z", "hours": 2.2086, "text": "OrbitLens Devlog #1: Rendering the Earth 3D I just kick started this project, Orbit Lens, and my aim is to build a fully free, real-time 3D satellite tracker from scratch using Three.js and maybe some other libraries. Today was all about creating the core 3D arch. You can’t track a satellite without a planet to orbit, so Phase 1 was focused on rendering the Earth and setting up the Three.js environment. What I accomplished in Phase 1: Set up my environment with ViteBuilt the Three.js scene, camera, and render loop.Rendered a 3D Earth utilizing maps from solar system scope.Enabled OrbitControls to enable camera panning This is just the basic foundations of the project so there’ll be much more development in the future."}]...
|
Title: orbital by @ttyChud | Stardance
Devlogs:
O Title: orbital by @ttyChud | Stardance
Devlogs:
OrbitLens Devlog #1: Rendering the Earth 3D I just kick started this project, Orbit Lens, and my aim is to build a fully free, real-time 3D satellite tracker from scratch using Three.js and maybe some other libraries. Today was all about creating the core 3D arch. You can’t track a satellite without a planet to orbit, so Phase 1 was focused on rendering the Earth and setting up the Three.js environment. What I accomplished in Phase 1: Set up my environment with ViteBuilt the Three.js scene, camera, and render loop.Rendered a 3D Earth utilizing maps from solar system scope.Enabled OrbitControls to enable camera panning This is just the basic foundations of the project so there’ll be much more development in the future.
OrbitLens Devlog #2: Adding ISS + Orbit This session was mainly focused on implementing the ISS first to the satellite tracker. Here are the changes I made: Satellite Data Extraction and ISS Positioning To understand what I did in this session, it is important to know how I can get the ‘live’ location of the ISS works: firstly, satellites don’t broadcast live GPS coordinates to the internet. Instead, radars track them and publish Two-Line Element (TLE) sets. A TLE is like a raw string that “acts as a mathematical variable of an orbit’s shape at a specific moment.” I got these TLE from a non-profit API called CelesTrak. these TLEs are kinda useless so I used the satellite.js library to parse te TLEs. This js engine also allows you to run what is known as SGP4 models (Simplified General Perturbations 4) which is a mathematical model used to predict an orbit. Using this, TLEs are then converted to what’s known as Earth-Centered Inertial (ECI) vectors which is a “non-rotating 3D coordinate system anchored to the center of the Earth with its axes fixed relative to the stars, allowing you to calculate a satellite’s absolute mathematical position in space independent of the Earth spinning beneath it.” The ECI is still not useful so I passed it through satellite.eciToGeodetic which converted the eci to geodetic coordinates (longitude, latitude and altitude) But there’s one more step before the data is useful. The thing is Three.js only understands Cartesian coordinates (x, y, z) so the geodetic coordinates need to be converted to catesian. I did that using these mathematical formulas: x = r * cos(lat) * cos(lon) y = r * sin(lat) z = -r * cos(lat) * sin(lon) Orbit Implementation Satellites do not orbit in perfect circles; they follow complex trajectories that shift as the Earth rotates underneath them. The ISS takes roughly 92 minutes to complete one full orbit around the Earth. I captured this entire window by running two separate for loops. For these loops, i created 92 differed Date objects spaced exactly 1 second apart. here are the loops and how they work in a small nutshell: The Past: I looped backward from -46 minutes up to 0 (the current moment) and inputted the X, Y, and Z coordinates in each loop into THREE.BufferGeometry to draw a solid yellow LineBasicMaterial. The Future: I looped forward from 0 to +46 minutes. In every single iteration of those loops, and did the same thing. Challenges: the hemisphere and orbit were originally flipped or were completely false so i had to wrack my brain and dind the cause. I spent more than an hour debugging this. Turns out the formula was wrong and i used sin instaed of cos. In te end, I also double checked my orbit and position with official ISS trackers, and they matched!
OrbitLens Devlog #3: Adding a dashboard + ISS 3d model implementation I had two goals in my mind in this session. One was to add a dashboard which displays some stats of the ISS and the other is to replace the red dot with a 3d model of the ISS. Here is what and how I implemented these stuff and the challenges i faced: Change/Problem 1: Before I even got started on the new stuff i wanted to add, i faced a big problem. While testing the physics code and other stuff, my build tool (Vite) was auto-refreshing the browser every time I hit save. This I spammed CelesTrak’s public API with dozens of requests per minute. This lead to me kinda getting IP blocked temporarily, at least that’s what i think happend because it always returned an HTML error page instead of a TLE string. My engine tried to calculate stuff with that empty TLE and just crashed the engine The fix: It is important to know that a TLE is not like a live GPS broadcast that gets transmitted every second. It’s literally like a mathematical snapshot of a ton of stuff of the ISS like its position and its orbit and NORAD only updates these TLEs like twice a day or sth. So I fixed this api problem by making it such that the localStorage caches the TLE once and uses it for the calculation for the next 12 hours and then updates the TLE after that. Change 2: Dashboard implementation I implemented a dashboard that shows up on the top left of the screen and shows the following stuff abotu the ISS: Longitude: the method i used to calculate this is in one of my previous devlogs (i think my last one). But here is a quick summary: To find coordinates I first calculated the Greenwich Mean Sidereal Time (gmst), which gives me the exact rotational angle of the Earth at that specific millisecond. I passed the ECI position (one of the previosu devlogs) and gmst into satellite.eciToGeodetic(), which projects the point onto the spinning globe in radians. I then multiplied those values by 180/pi to convert the radians into standard degrees latitude: same as longitude -altitude: The eciToGeodetic() function also calculates the distance from the satellite’s coordinates down to the mathematical surface of the Earth (the WGS84 or the ‘World Geodetic System 1984’ ellipsoid which is like a mathematical reference representation of the earth that is used in calculatoin and stuff). It outputs this directly as height in kilometers, which I then simply rounded to two dp. -velocity: The propagate() function outputs the satellite’s speed broken into X, Y, and Z axes (measured in km/s). To get a single speed, I calculated the magnitude of that 3D vector using the 3D Pythagorean theorem: v = squareroot(x^2 + y^2 + z^2) Change 3: To implement a 3d model, i first needed that 3d image. I wanted the highest quality NASA model available (Model D - IGOAL). I downloaded the official .fbx, converted it to a .glb, and ended up with a 255mb file. Which is really bad because shoving a 255mb file into a web browser would just crash the entire thing. So i just ran that through a draco compression and a texture compression (WebP 1024x1024) which brought the size to about 18mb which was much better. To render this, I used Three.js’s GLTFLoader with a dedicated Google WebAssembly DRACOLoader to decode the compressed math. The next couple of changes were just to make it more realistic: i changed the scale from 0.02 (where it was the size of a continent) to 0.001 (which made it a good size) the direction the ISS faced was not accurate at all so I wanted to rotate until its in the correct position. But because the animate() loop was actively using math to point the model forward 60 times a second, it kept overriding my manual rotation. So I wrapped the ISS in a THREE.Group, rotated the mesh 90 degrees inside that container, and then applied the math.
OrbitLens Devlog #4: Adding multiple satellites In my last update, I finally got a 3D model of the ISS rendering on the globe with a basic UI dashboard. It looked cool, but I wanted to scale it up. I wanted to add multiple famous satellites on top of the ISS: The Hubble Space Telescope (HST)NASA’s AquaNASA’s TerraTiangongISS (which already exists) At least for now. Maybe in later stages, I can add Starlink satellites or sth. Here is waht I built, how I built it, and the challenges I faced. Change/Challenge 1: the orbit that looked like a slinky I hardcoded a 90-minute orbit line (the ISS orbit time). But other satellites have different orbital periods, so 90 mins fell short. Increasing it to a 12-hour calculation made the ISS orbit look like a massive slinky wrapping around the Earth cus its orbit is only 90mins. I fixed this by dynamically calculating the exact total orbit time using the satellite’s math: const periodMinutes = Math.ceil((2 * Math.PI) / satrec.no); const halfPeriod = Math.floor(periodMinutes / 2); Change/Challenge 2: IP ban (again) The JS fetch() doesn’t consider a ‘429 too many requests’ (i got this cus vite reloaded the page every time i saved something) response as a network error, so it tried calculating the HTML error page as orbital math and crashed. I fixed this by manually checking the response.ok HTTP status. If the API blocks me, the code redirects to an “Offline Fallback Mode”—loading a hardcoded string of ISS TLE math so the app survives. Change/Challenge 3: improper API request After like 4 hours, I realized I still wasn’t getting a proper API response even though the IP ban would have worn off. I looked at the code and realized I was pulling data for all five satellites in one go by just comma-separating the values in the URL like this: …/gp.php?CATNR=25544,20580,48274&FORMAT=tle (each number references to a satellite) But after CelesTrak’s documentation, it strictly dictated that the CATNR parameter only accepts a single catalog number. The server rejected the request, my code assumed 0 satellites, and the engine crashed. The fix: Writing five separate fetch() blocks is messy, and implementing an await fetch() in a for-loop creates a slow “waterfall” effect (waiting for one to finish before starting the next). I fixed this with JavaScript’s Promise.all. I created an array of the exact NORAD IDs, mapped over it to generate separate, perfectly formatted fetch requests, and Promise.all fires them all at the exact same time. Change/Challenge 4: I wanted 3D models for all of these. I found Aqua and HST easily from NASA. I found Terra, but it was fetching some other incompatible file I didn’t have, so I just scratched the Terra model. Tiangong was the biggest pain—everywhere I looked was either paid or on Sketchfab, and I cant create a Sketchfab account cus of some stupid Epic Games restriction. Implementing the files I did have was the next issue. Hardcoding multiple GLTFLoader blocks would turn the code into spaghetti. Plus, 3D models from the internet aren’t scaled equally—my Hubble was massive, and my Aqua model was tiny. The fix: I built a central Model Registry object. It maps a satellite’s NORAD ID to its file path and a specific scale multiplier. Even better, I implemented a fallback for satellites I done have a model for. If I track a satellite (like Tiangong) but leave the file path as null, the code detects this and dynamically generates a glowing cyan sphere using Three.js math to take its place. Changes 5 and 6: I updated the dashboard to include a dropdown to select the satellite and the telemetry updates accordingly. I also added a camera toggle feature where the user can lock the camera to follow the satellite or stay locked on the Earth. Lastly, I implemented a custom loading screen while the models load. P.S.Lots of info is compressed cus i crossed the 4000 char limit.
OrbitLens Devlog #5: Camera panning improvements and performance updates After the changes from Devlog #4, all the math and the 3d models were all working but i faced some problems in other aspects of the website. Here are soe of the changes i made: Change 1: Correct orientation This was a small change, but i noticed that some satellites were a bit too big (like Aqua) and were positioned wrongly, so i just chaged teh scale and the rotation to make it a bit more realistic Changes 2, 3, and 4: The camera improvements I faced a lots of problems with the camera and how it worked. Before, i couldn’t rotated in all directions around the earth or the satellites because they were using OrbitControls so i swapped that out with TrackballControls, which allows for 360deg panninh There was also like a rubber band effect where the camera, when the camera lock was selected as satellite, zoomed in towards a satellite, i couldn’t interact with the satellite at all. THis was because as the satellite’s moving, the camera is also actuvely trying to catch up so it never actually ‘ended’ its animation so i was blocked from interacting with the satellite. To fix this i implemented delta tracking. The engine now calculates the exact mathematical vector the satellite moves every frame and shifts the camera’s physical position by that exact same amount, which worked. Previously, switching targets caused the camera to travel in a straight line, clipping through the Earth, which looked kinda unprofessional so I engineered a custom transition that separates the camera’s direction from its altitude. Now, when you select a new satellite, the camera zooms out, tracels in a an arc over the globe, and zooms in to the destination satellite. The animation still needs a lot of improvement cus some parts are still a bit glitchy, but i’m happy for now. Change 5: I implemented it that the TLEs are now stored in the actual localStorage for like 6 hours and then fetch new TLEs. So the user will always have the latest TLEs cus they update evey 12hrs.
OrbitLens Devlog #6: Implemented Sun and the day night cycles + camera panning improvements The core engine was working smoothly, so this session was focused on the ui and aesthetics and realism. Here are the changes i made, how i made them, and the challenges i faced: Change 1: Implemented the Sun The first major goal was replacing the static and boring lighting the 3D earth originally had with a Sun. To do this, I wrote a custom Solar Ephemeris algorithm. Using the current Julian date, it calculates the sun’s exact Right Ascension, Declination, and Earth’s Greenwich Mean Sidereal Time (GMST) to pinpoint the real-time subsolar vector. Since this was some complicated math, i had to use some ai for this. But in a WebGL engine, lights are purely mathematical vectors and there is no physical object in the sky. So when i first added a solid white sphere, it literally looked like a flat plastic toy and looked really ugly. To fix this, I abandoned the 3D ball and built a 2D Sprite using the HTML5 Canvas API to generate a radial gradient. By using Additive Blending to the material, I forced it to mathematically layer the light over the space, which created like this blinding, light that looked like the sun, which was good. Change 2: The Day/Night City lights cycle: To make the globe even more realistic, I wanted the night side of the Earth to have like the night time city lights rather than just a dark shadow. To build this, I added an 8k night-map texture (from Solar System Scope) and implemented a WebGL fragment shader into the Three.js’s native MeshPhongMaterial using a compiler hook. But there was a problem, the free night map that i implemented had this blue tint to it, and when i tried to correct it, it literally turned to this muddy, polluted yellow. To fix this, I programmed the shader to intercept the texture data, remove the color tint by calculating luminance, and pass it through a smoothstep noise gate. Anything below a 10% threshold was forced to pitch black, while populated areas were recolored with a warm golden orange hue. And it worked great! Change 3: More camera improvements Despite the previous session having to do with correcting the camera engine, there were still some stuff that i fixed here. The problem was since i removed OrbitControls in the last session (read previous devlog), once i had like hte earth upside, it was very hard to make it upright again. like at one point, i had the entire europe upside down and Africa was at the top of the globe but i couldnt get it back to normal. To fix this I changed the code so that the panning controls thing swaps between OrbitControls (for the 3D globe) and TrackballControls (for the satellites/spacecrafts). But there were some more challenges: When a zoom-in animation (read previous devlogs) finished (after selecting e.g. a satellite), the camera would like glitch backward into a less zoomed in position which was kinds uncomfortable to look at. Because the satellites were moving a static transition speed couldn’t catch them before the animation finished, so the final frame was a bit glitchy and the screen like jumped a bit. To fix all of these problems, I first made sure that disabled camera controls are completely turned off so they can’t fight the active zoom animations. I also made it that instead of moving at a steady speed, I added a speed-up effect as the camera gets closer to the target. This ensures that the camera glides smoothly into place right on time without any jerky jumps.
OrbitLens Devlog #7: Implementing a 2D orbit map To expand the functinality of the website, i wanted to add a 2D world map that has the 3d orbit projected on to it. Here is a breakdown of what i built, how i built it and the challenge i faced. What I Built: I made a 2D projection of the 3d globe using the HTML5 Canvas API that runs at the same time with the WebGL 3D engine. The map automatically appears when a satellite is selected, and fetches live telemetry to draw exactly one full orbital period (half past, half future). The orbit line looks like how it does on the 3d globe with a yellow line representing the past trail and a dotted blue line representing the predicted future track. I also built an “EXPAND” toggle that expands the map to fill most of the screen if the user wants to take a close look. Challenges: If a satellite flies east across the Pacific Ocean (where the International Date Line is), its longitude coordinates suddenly jump from +179deg to -179deg. I originally didnt take this into account and it had like this massive, horizontal glitch streak entirely across the screen cus of the sudden coordinate shift. To fix this, I programmed a strict mathematical distance gate into the drawing loop. If the engine detects that the X-coordinate has jumped by more than half the width of the canvas, it forces the renderer to break the current stroke (mapCtx.stroke()), lift the ‘pen’, and begin a completely new path on the opposite edge of the map (mapCtx.beginPath()). When plotting a full 90-minute orbit, the beginning of the yellow line and the end of the cyan line do not connect perfectly, leaving a massive gap. I originally thought this was a problem and tried for quite a while to fix this and i double checked the math formulas again and again. But i realised this isnt a math error, it’s just physics. While the satellite flies in a continuous circle, the Earth is physically rotating underneath it. By the time the satellite completes one lap, the ground has shifted roughly 22.5 degrees to the east, pushing the satellite’s relative ground track to the west. So i just left it like that to accurately represent the Earth’s rotation. This was the biggest problem and took the most time to fix. Three.js orbital camera controls are incredibly aggressive about capturing mouse events. The 3D engine was always suppressing the HTML ‘click’ events, making the “EXPAND” button not work. Not only that, the standard inline CSS was pushing the 3D canvas down the page, which misaligned everything and didnt allow me to select the satellites at all. To fix this, fisrt, i locked the 3D canvas to a fixed background layer (z-index: -1) to completely isolate it from the UI layout. Second, i bypassed the WebGL event interceptors entirely and connected the code that handles the expansion directly to a global window function (window.toggleMap) and just injected the button with the HTML onclick attribute. This fixed everything and now it works really great.
OrbitLens Devlog #8: Scaling the 3d globe and some other stuff In the last update, i finally implemented the 2d map so this time i want to take this website a step further since the foundation is stable enough. I decided to go from tracking 5 hardcoded satellites to over 16,000 space objects. Here is what i changed, how i changed it and the challenges i faced: Change 1: Originally, i just added the starlink satellites to what i already had which was my initial goal. but the thing was, i was requesting the API for thousands of satellites, which did work once and all of them were stored in localStorage but for ‘testing purposes’ (i was just stupif), i cleared the localStorage and re-requested the TLE which it then instantly rejected cus of its ‘anti-bot firewalls’ and i got ip banned for like a couple of hours and it gave a 403 error aswell. To fix this, i read some CelesTrak documentation and i realised that there is a way to ismply request all the satellite (every satellite that it had) data in one request. Apparently there was a special search query (‘active’) that i could’ve used but instead i individually fetched everything. So once i used that query, i got all of the satellitse (a bit more than 16000) rendered on the earth but it was laggy, which leads to my second change. Change 2 To fix this massive lag caused by the 16000+ satellites, I completely replaced the standard 3D mesh pipeline with THREE.InstancedMesh so that instead of creating 16,000 individual sphere objects (which would like instantly crashes the browser), i can feed the GPU a single geometry and material, along with an array of 16,000 matrixes. That means now the gpu like renders everything in one go. But, I hit a massive 5-second freeze whenever a user clicked the ISS (which makes sense cus this was a 4k extremely detailed 3d model). The thing was, WebGL delays uploading heavy 3D textures to the GPU until an object is actually rendered on screen. And because the ISS model was hidden on startup, the compiler skipped it, so the website was stuck trying to render it when i selected the ISS. I solved this by forcing the renderer to draw one “dummy frame” with all models visible during the loading screen, which, in a sense, ‘warmed up’ the GPU. Change 3: The lag was better but it was still there and i realised the problem was that each of the dots representing a satellite were smoothly moving in space. This smooth-moving physics applied to over 16000 dots was what slowed down the website. To fix this, I rewrote the loop that propogates the satellite dots so physics calculations wouldn’t choke the main JavaScript thread. To do this i built a system to process the satellites in batches of 4,000 satellites per frame instead of all 16,000. Second, i scrapped geodetic trigonometry (latitude/longitude conversions; see one of the earlier devlogs) and replaced it with direct Earth-Centered, Earth-Fixed (ECEF) 3D vector rotation. Initially, our batches were too small, causing satellites to visually ‘teleport’ instead of smoothly gliding, which looked really glitchy. But by upgrading to matrix rotation, i managed to get a huge increase in speed. This allowed me to crank the batch size up and get that smooth motion across the entire thing. Change(s) 4: There were still some small bugs in the visual aspects like the dots disappearing or the transition jump (see previous devlog(s) to understand) and stuff but i took care of them.
OrbitLens Devlog #9: implemented satellite filtering + earth connecting line and complete UI overhaul Now that the website has a proper engine and everything was working well, i decided to add some more stuff. I had two goals for this session. One was to add a satellite filtering option where the user can filter categories of satellites. The other is to change the ui because there were many imprefectoins. Here is a breakdown of what i changed and the challenges i faced: Change 1: I added a global filtering system to fiter satellites by categories. To do this i first built a string-matching engine directly into the TLE parsing loop. As the engine downloads the TLE data from the API, it scans the satellite names and tags them each with categories. I didn’t really know what to categorise them so i thought of some categories and i asked ai to think of some categories. These are the categories: StarlinkOnewebCommsNavigationWeatherand Other/Miscallaneous (which i impemented later; read below) I then wired the HTML dropdown directly into the WebGL gpu loop. Instead of deleting unselected satellites (which would take up too much gpu memory), the gpu simply multiplies their matrix scale to 0, 0, 0, which would just hide them. But there was a challenge that i faced, though it wasn’t a big one. When i first implemented the filter, I noticed that the total satellite count dropped to around 12,000. It turned out that all the satellites that didnt fit into any cateogry were not shown at all so i expanded the categories to include an OTHER category. I also had to make some changes in the raycaster or the users would accidentally be clicking on the hidden satellites. Change 2: I also added a line connecting the selected satellite directly to its exact spot on the Earth’s surface directly beneath it. I did this by first pre-allocating a THREE.BufferGeometry with exactly two vertices. Inside the animation loop, i then took the satellite’s live 3D coordinates and use a .normalize() math function. Because the Earth has a radius of exactly 1, normalizing the 3d coordinates perfectly attaches the bottom of the line to the planet’s surface. But, i ran into a bug where the line would randomly disappear depending on the camera angle. After some research (ai) i found out that this was caused by Three.js’s “Frustum Culling.” The code calculated the line bounding box once when the websited started up and when the camera moved away from that initial box, the gpu assumed the line was out of sight and stopped rendering it to save memory. So i just added a line of code (frustumCulled = false) that just overrode that. Change 3: Lastly, i essentially completely rewrote the styles.css to change how the ui looked cus i didn’t relaly like how it looked before. So this was the third change.
OrbitLens Devlog #10: mobile layout implementation + better loading screen I am nearing the first ship of this project so this session were just about the final aspects that needed to be improved Change 1: I completely changed the loading screen. Firstly, it now displays the loading percentage that accurately shows the real time progress. Secondly, overall it just looks much better. Thirdly, i also implemented an error notification in the main dashboard in case the API doesnt work and so the website doesnt look like it’s broken Change 2: I added a mobile layout option. by that i mean that if the user is accessing this website on a mobile, it won’t be completely botched (hopefully) p.s. i know this devlog isnt that detailed as my previous ones and that’s because there isn’t much to talk about in this session cus the main changes were in the styles.css (and i’m hella tired)
OrbitLens Devlog #11: Semi-final changes In this session, i focused on finding small aspects that need to be improved and improved them. Change 1: Firstly, i realised that the dropdown i had implemented was the default dropdown and it didn’t rlly fare well when there were 16000 items to choose from. So i made a custom dropdown, which looks much better than the default one, and made a funciton along with it that shows like the first 200 items matching the search query or, if nothing in being searched, the first 200 items in the list that the API gave. This made the entire experiene so much better because the default dropdown looked kinda ugly cus it took the whole length of the screen. Normally, this wouldnt take too long but i accidentally deleted the wrong eventListeners multiple times because satFilter and satSearch were so similar. So i spent like a good amount of time trying ot find the problem, and it turned out that i justmodified or deleted the wrong thing. Change 2: I found a problem with the filtering system, more specifically in filtering the space stations. Previously, i just had all the satellites with ISS or CSS in their names classified as space station because there are only two space statoins in space right now (ISS and Tiangong) so i filtered any satellites with those two names. But i failed to take into account that other satellites might also have ISS or CSS in their names so instead of two satellites showin up, 16 satellites were avaialbe in that filter. And these were not space stations but rather other statellits which had like ISS or CSS in their names (e.g. Swisscube). So i changed the filter to filter the space stations by their respective NoradIDs, which worked. Change 3: This change wasnt too big; i modified the expanded map layout becaues how it was before led to it having a lot of blank space and probalby wouldnt have looked good in differnet devices.
OrbitLens Devlog #12: Added README.md and ARCHITECTURE.md In this session, i added the README and ARCHITECTURE.md. The README.md highlights the basic features of the website, the tech stack used and how to run this project locally. The ARCHITECTURE.md goes deeper into how the code itself works so anyone perusing it can get a better idea on how i built this project.
OrbitLens Devlog #13: fixing deployment bugs 😭😭 Before i continue with this devlog, let me start by saying that modern security rules are the worst. Like istg, why do they have to be so strict? Anyway, you’ll see what i mean by that down below. THis session was all about fixing the deployment bugs. I was almost done and then these f bugs ruined it. This devlog has only abt 30 mins logged because i had the help of ai to fix this because this was way way out of my expertise. Here are the changes. I used ai for this devlog though cus i didn’t understand what it did (but i only used it for htis devlog): Problem 1: The [UNSUPPORTED_FEATURE] Vite Crash My very first Vercel build crashed immediately with a “Top-level await is currently not supported with the ‘iife’ output format” error. Apparently, the satellite.js library I use for SGP4 orbital propagation runs heavy calculations using Web Workers and WebAssembly. By default, Vite tries to bundle everything into an older iife format for maximum browser compatibility, which completely choked on the newer await feature inside the worker file. I fixed this (with the help of ai) by explicitly telling Vite’s internal bundler (Rolldown) to output modern ES modules for both the main thread and the background workers. I created a vite.config.js file and updated the configuration (see vite.config.js in the github repo) Problem 2: 404 Missing 3D Models After fixing the build, the site successfully deployed, but my 3D models (like the ISS and Hubble) and Earth textures threw 404 Not Found errors in the console. Because I was loading these assets while the app was running in my Three.js code using string paths (e.g., ‘/models/iss.glb’), Vite didn’t know they existed and simply excluded them from the final production build. I moved my models and textures folders into Vite’s public directory. Anything placed in the public folder gets copied exactly as is to the root of the final build. This bug wasn’t too bad but the next one was absolute hell. Problem 3: API, Cloudflare and CORS block This was the hardest part. Orbit Lens fetches live Two-Line Element (TLE) data for over 16,000 satellites directly from CelesTrak. It worked perfectly when i hosted it locally, but on Vercel, the browser instantly threw a 403 Forbidden error. CelesTrak uses Cloudflare to prevent automated scraping. When Cloudflare saw an Origin header coming from a deployed Vercel frontend instead of an normaly IP like my computer’s, it blocked the connection. Attempts to use public proxies (like allorigins) resulted in 408 Request Timeout errors because the multiple mb big satellite data took too long to transfer. To fix this, I used Vercel’s Native Rewrites (i have no idea how to use this so i asked ai to do it for me). “I” ;) created a vercel.json file in the root directory to act as a silent backend proxy. By fetching from my own local route (/api/celestrak), the browser doesn’t trigger CORS security. Vercel’s backend intercepts the request, strips the frontend Origin header that was triggering the firewall, and routes the raw data back to the application. This worked! And the website is finally live and i am about to ship the project!
Ships:
This is Orbit Lens, a real-time 3D satellite tracking website built using vanilla JavaScript and Three.js. It tracks over 16,000 live space objects around earth using real-time data from CelesTrak. It has many features including 3d and 2d orbit tracking, 3d models of select satellites (ISS, Terra, HST, and Aqua). It also includes a filtering feature where you can filter satellites based on specific categories Before testing this project, it is important to know some stuff: You will have the best experience if you access this through a laptop or desktop Sometimes, the api maybe down or is not responding to requests so please keep in mind that if you see an alert saying API not responding, it is out of the website’s hands and it an error outside of my control. That’s it. Thank you for testing this project and hope you like it :)...
|
1792878696.1561775
|
1793742696.1561775
|
|
52223
|
Handy Clock/Timer by @lantern | Stardance
|
lantern
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T13:01:56Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Handy Clock/Timer my first web application built with Python and Streamlit that displays the live time and includes a customizable countdown timer, its pretty basic but you get the idea right……", "repo": "https://github.com/jigneshphalsawal-cloud/handy-clock", "demo": "https://handy-clock.streamlit.app/"}]...
|
[{"post_id": 54421, "ts": "202 [{"post_id": 54421, "ts": "2026-08-25T13:00:17Z", "hours": 1.05, "text": "First time Making a project in python ,steamlit its pretty basic but you get the idea right….."}]...
|
Title: Handy Clock/Timer by @lantern | Stardance
Title: Handy Clock/Timer by @lantern | Stardance
Devlogs:
First time Making a project in python ,steamlit its pretty basic but you get the idea right…..
Ships:
Handy Clock/Timer my first web application built with Python and Streamlit that displays the live time and includes a customizable countdown timer, its pretty basic but you get the idea right……...
|
1792958007.0698228
|
1793822007.0698228
|
|
52229
|
OldOS by @teerth | Stardance
|
teerth
|
1
|
11.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-27T16:48:05Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "LEMME PRESENT TO Y’ALL THE (*wannabe) BEST OS (*in a very cottagecore and nostalgia core category) This os has a LEDGER! So that you can enter the names of your guests A working analog clock! Very time appropriate (pun intended) A random quote! Cause we humans need it! A random emoji! Cause we humans deserve it! A lock screen (without a lock ofc, we welcome everyone to our inn) Yes, that’s pretty much it! I hope to add a few more tasks to this site to make it feel more of a inn simulator, but you’ll have to wait for it. Anyways I hope you like the effort. See y’all soon!", "repo": "https://github.com/spiceTheCode/WebOs", "demo": "https://oldosteerth.vercel.app/"}]...
|
[{"post_id": 55648, "ts": "202 [{"post_id": 55648, "ts": "2026-08-27T16:38:53Z", "hours": 3.0303, "text": "HERE WE GO!!! OLD OS IS READY TO BE PUBLISHED! Added a few aesthetic changes to make it look less minimalistic and older and rustic, still more to do! Please do drop suggestions if you’re reading this. Love y’all!"}, {"post_id": 53807, "ts": "2026-08-24T14:43:21Z", "hours": 5.3925, "text": "old os now has 2 closable and restackable apps including Ledger. Ledger is your go to guest management app! Looking for more theme related apps btw, do comment if you have any ideas!"}, {"post_id": 52309, "ts": "2026-08-22T12:55:01Z", "hours": 2.3536, "text": "t2os Is now OLDOS!!"}, {"post_id": 52166, "ts": "2026-08-22T08:06:56Z", "hours": 0.2969, "text": "Introduce y’all to the newest os in town! And it will only get better!"}]...
|
Title: OldOS by @teerth | Stardance
Devlogs:
Intr Title: OldOS by @teerth | Stardance
Devlogs:
Introduce y’all to the newest os in town! And it will only get better!
t2os Is now OLDOS!!
old os now has 2 closable and restackable apps including Ledger. Ledger is your go to guest management app! Looking for more theme related apps btw, do comment if you have any ideas!
HERE WE GO!!! OLD OS IS READY TO BE PUBLISHED! Added a few aesthetic changes to make it look less minimalistic and older and rustic, still more to do! Please do drop suggestions if you’re reading this. Love y’all!
Ships:
LEMME PRESENT TO Y’ALL THE (*wannabe) BEST OS (*in a very cottagecore and nostalgia core category) This os has a LEDGER! So that you can enter the names of your guests A working analog clock! Very time appropriate (pun intended) A random quote! Cause we humans need it! A random emoji! Cause we humans deserve it! A lock screen (without a lock ofc, we welcome everyone to our inn) Yes, that’s pretty much it! I hope to add a few more tasks to this site to make it feel more of a inn simulator, but you’ll have to wait for it. Anyways I hope you like the effort. See y’all soon!...
|
1793134528.3066547
|
1793220928.3066547
|
|
52241
|
DDSim by @yaasshh | Stardance
|
yaasshh
|
1
|
124.76
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T16:51:16Z", "hours": 87.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built DDSim, a program that simulates what happens inside the tiny parts that computer chips are made of, ie diodes, capacitors and transistors. You describe a device by its shape and which parts of the silicon have extra electrons or holes. DDSim then works out how those electrons and holes move, and draws the current and voltage curves. I didn’t fit anything to make the graphs look right. Everything comes straight from the physics equations. (NOTE: ITS STILL VERY CLUNKY SO ITS NOT GOING TO BE PERFECT AS OF RIGHT NOW. IF YOU FACE ANY TROUBLES IM REALLY SORRY) To make sure everything accurate, I checked it against textbook formulas and against DEVSIM, a simulator other people wrote. They agree to within a few percent, and the project has about 2,700 automated tests. You can try it in your browser at ddsim.fly.dev. Pick a device, press solve, and watch the answer draw itself. Every button and graph has a little “i” that explains what it means, and there are guided lessons if you’re new to this. It’s a school-level instrument, not a chip design tool. Below about 50 nanometers the physics it uses stops being accurate, so I didn’t go beyond that", "repo": "https://github.com/yaasshh09/DDSim", "demo": "https://ddsim.fly.dev"}]...
|
[{"post_id": 82276, "ts": "202 [{"post_id": 82276, "ts": "2026-10-24T13:22:27Z", "hours": 9.6742, "text": "Devlog #23 The trick for the MOS capacitor worked. Making the electrons react faster put the slow wiggles at a speed the computer can handle, and the answers came out right. That FINALLY finished the AC phase. I also added noise, a tiny random jitter in current that every device has. Next I added time. Now its possible to flip a diode from on to off and watch it recover. When you switch a diode off, it keeps conducting for a moment because of all the charge stored inside it. I compared that against DEVSIM, and our results were within 0.03% of each other which is quite frankly something im really proud off. Then I added a feature where the simulator shows how inaccurate it may be. It now checks its own answer against a finer mesh and puts a little error bar on every point in the plots. It can also improve its own mesh by adding points only where they’re needed. On 5 of my 8 test devices it hit the target accuracy with fewer points than my hand-made meshes. I was aiming for around 6, so that’s still doable. The newest addition is a bipolar transistor, where a small current into the middle layer controls a much bigger current through the whole device. I built a simple 1D version and a more realistic 2D one. The 1D version matches the textbook formula to within 0.03%. The best part is that its gain drops off at both very low and very high current, the way real transistors do, and I never told it to. It figured that out from the physics."}, {"post_id": 80341, "ts": "2026-10-17T10:12:36Z", "hours": 1.9553, "text": "Devlog #22 The long DEVSIM run finally finished. It took about 6 hours and matched the expert result almost exactly, which closes out the scoreboard phase. Then I started the next phase, which is about AC. That essentially means wiggling the voltage back and forth and watching how the device reacts at different speeds. Before, my simulator could only handle super slow wiggles, or fast ones where I froze some electrons by hand. Now it can handle any speed. To get there, I first taught the simulator how fast electrons and holes pile up or drain away over time. Then I wrote the part that works out how much current flows into each contact when one of them gets wiggled. I tested it on diodes, since they have textbook formulas to compare against. A long diode matched within about 1%, and a short one within 1.3%. Along the way I found a bug where my mesh maker gave up on very long devices, so I fixed that too. The MOS capacitor is giving me some trouble. At really slow wiggles, the math needs more precision than normal computer numbers have, so the answers came out wrong by up to 46%. Fast wiggles work fine. Right now I’m trying a trick where I make the electrons react faster, so the slow case happens at a speed the computer can handle. Below are some of the DEVSIM scoreboard values"}, {"post_id": 80105, "ts": "2026-10-16T07:52:45Z", "hours": 4.8328, "text": "Devlog #21 Since the last devlog I finished most of the temperature phases. First I compared the diode at 400 K against DEVSIM. I saved that result so my other tests compare with it from now on. Then I added two new sliders to the website. One sets the temperature, from 200 to 500 K. The other sets the fixed charge where the silicon meets the oxide. I picked both ranges by running the simulator across them. Each slider also has a short lesson that explains what it does. While I was writing those, I found some broken math formatting in the temperature lesson and fixed it. The biggest addition is freeze-out. To make silicon conduct, we add extra atoms that give up electrons. When it gets really cold, those atoms stop giving up their electrons. Before, my simulator assumed they always did. Now there’s a switch for it, and it works. At 100, 200 and 300 K it matches the textbook formula almost exactly. I also checked that a plain frozen silicon bar still follows Ohm’s law, and that the capacitance results still work at 150 K."}, {"post_id": 79306, "ts": "2026-10-13T13:29:32Z", "hours": 4.9631, "text": "Devlog #20 In this devlog i firstly fixed up the website. It now has a little icon in the browser tab, a terms page, a privacy page and a footer with a contact button. The icon didn’t show up on the live site at first, so I fixed that too. Then I started the next phase, which is all about fixing temperature related stuff. A lot of the calculations of the simulator took room temperature which might have led to some wrong calculations, so I’ve been fixing that. The gate’s energy level was stuck at its room-temperature value. it was a real bug and its fixed now. When the silicon gets hotter, electrons now max out at a lower speed, just like in real-life chips. From 250 to 400 K, the junction’s built-in voltage matches the textbook formula. From 300 to 400 K, the diode’s leakage current stays within 0.3% of the formula. I also added a fixed charge that sits where the silicon meets the oxide layer. Real chips always have some, and it changes the voltage where a transistor turns on. Next up are the big jobs. A long DEVSIM run is still going, and after that I’ll test the temperature effects on a full 2D transistor. I also still need to put the website changes live."}, {"post_id": 76513, "ts": "2026-10-03T19:43:47Z", "hours": 7.6606, "text": "Devlog #19 The speed and robustness numbers are now saved on the scoreboard. On the first 8 benchmarks, my solver takes about 1.6x less time per bias point than DEVSIM. I also added a test that reads the README and fails if the README claims anything the data doesn’t back up (I hate getting 100% vibe code assumptions on my readme btw). I renamed a lot of variables across the code (to pass the 30% ai rule that im apparently violating) to shorter names. That kind of change can break the tests if some of the variables reference each other across multiple files, so I checked that python turns the old code and the new code into exactly the same instructions. Thankfully it did. I also moved all the settings into one file. Things like how many tries the solver gets, how small the mesh can get, and the server limits used to be scattered across about 20 files. I checked that every single value stayed exactly the same after the move. I also deleted the last few leftover comments. Then I pushed everything. The tests ran on three Python versions, and 2,723 of 2,724 passed. The one that failed was a browser test on Python 3.11 that waited too long for the page to load. The same test passed on the other two versions, so it’s probably just a slow test machine, but I’m going to rerun it to make sure. My laptop ran out of memory again, which stopped me from finishing the type hints in the tests. That’s next, once I’m not running a bunch of other stuff at the same time."}, {"post_id": 74357, "ts": "2026-09-27T07:21:49Z", "hours": 2.1619, "text": "Devlog #18 The robustness runs are almost done. Robustness checks a simple concept, if I give the solver a device cold, with no warm-up, does it actually finish? I ran 200 test cases through my solver and through DEVSIM, each in a few different setups. The robustness numbers aren’t final yet. One DEVSIM result is still missing. The first time my laptop ran out of memory, and the second time it went to sleep overnight, so it’s running again now. I also found out DEVSIM acts much differently depending on how many CPU threads it gets. With only one, some solves failed or took forever which was kinda interesting to see. On the cleanup side, I turned on the strictest type checking across the whole project and fixed what it found. Every color on the website now comes from one file. I also deleted a bunch of old files nobody used and cut the README down."}, {"post_id": 73883, "ts": "2026-09-26T07:55:09Z", "hours": 4.0261, "text": "Devlog #17 I restarted the scoreboard runs, and before looking/mentioning any of the results I checked my own setup for DEVSIM. That showed a few bugs on my side. My starting guess for the voltage inside the device did a log of zero on heavily doped chips, so DEVSIM crashed INSTANTLY. I also wasn’t giving it enough steps to settle on some devices. I fixed both, because it wouldn’t be fair to count my mistakes as DEVSIM’s. I also cleaned up the code, I tried to ship all progress so far but there was just too much AI (guilty) so I am working on redoing the python, css and javascript code again mainly from scratch. (The image shows all the values from the DDSim tests)"}, {"post_id": 73631, "ts": "2026-09-25T15:22:18Z", "hours": 2.4842, "text": "Devlog #16 Now that DDSim is live, my next goal is to make it better than DEVSIM, a free, open-source simulator a lot of people already use. “Better” doesn’t count unless I can measure it, so I planned out the next 11 stages of the project, and the first one is a scoreboard. The scoreboard runs both simulators on the same set of devices and compares them in four ways: how often each one finishes a solve without crashing, how accurate the answers are, how fast they run, and what each one can do at all. Some of these runs take hours, and my laptop ran out of memory partway through, so I paused them. I’ll post the results once they’re done, even the parts where DEVSIM is better than mine. While building the accuracy check, I found a bug in my own math. Sometimes it reported numbers that didn’t make physical sense, so now it throws those out instead of trusting them. I also went through all the style files for the website. They’re about a third smaller now, and I checked that the page still looks exactly the same. Then I found a small bug that had been there all along. The little “i” buttons that explain each setting were supposed to turn blue when you hover over them, but a different style rule was overriding it. Last, I cleaned up the README again. The pictures are centered now, I took out the GIF, and I rewrote some of the text so it reads more naturally."}, {"post_id": 73215, "ts": "2026-09-24T16:47:16Z", "hours": 1.6669, "text": "Devlog #15 DDSim is FINALLY deployed and live! You can try it at ddsim.fly.dev Getting it online took one extra step. The cheap shared server was too slow: the hardest transistor solve takes about 50 seconds on my laptop and would have taken around 7 minutes there. That’s past the 5-minute limit I set, so it would have been stopped every time. I moved it to a faster server, and now it finishes in under a minute. Once it was up, I found a bug. When every contact on a transistor was at the same voltage, the picture still drew current flowing through it. That’s impossible, because with no voltage difference nothing moves. I fixed it, and now the page says “no current flows” instead of showing an empty plot with no explanation. Then I rewrote the README from scratch. The old one was over 500 lines and way too dense. The new one is about 200 lines, mostly screenshots from the live site plus a few tables, so someone can see what the project does in a couple of minutes. While doing that, I caught a mistake. One number in my results table didn’t match the graph right next to it. I reran the full simulation, which took 20 minutes, and fixed the table so it matches. Last, I took the deployment files out of the public code. Anyone who downloads it gets everything they need to run it on their own computer, but not the setup for putting it online. Next up, I might be thinking of getting a custom name for this simulator and my other atom simulator. If anyone knows where I can get free domains, lmk in the comments"}, {"post_id": 72803, "ts": "2026-09-23T19:24:31Z", "hours": 2.5789, "text": "Devlog #14 Since then, most of my work has been getting DDSim ready for other people to use. First I cleaned up the controls. Some sliders and number boxes let you pick values that made the solver fail, which just showed up as a red error. I went through the diode, the MOS capacitor, the transistor and the draw-your-own device and found the range where each setting actually works. The sliders now stay inside those ranges, so a beginner can’t break things by accident. Then I cleaned up the code. I deleted about 2,400 lines of comments that just repeated what the code already said and kept the ones that explain something nessessary. Next came the writing. The site has about 40 short articles that explain the physics, and a lot of them sounded stiff, so I rewrote all of them. I did the same for the project docs, and on the way I found a few places where the docs no longer matched what the code does, so I fixed those too. Now I’m working on putting it online. I picked Fly.io to host it, and I’m hoping to get a free custom name. Since anyone will be able to use it, I’m adding some safety limits first. Only a couple of solves can run at the same time, old results get cleared out after a while, and a solve that runs too long gets stopped with a message explaining why. I tested each limit by breaking it on purpose to make sure the test catches it. It isn’t live yet, but it’s close! [lazy pic, i dont wanna open server again :( ]"}, {"post_id": 72407, "ts": "2026-09-22T21:05:00Z", "hours": 1.9161, "text": "Devlog #13 This one is all about the page itself. The physics didn’t change, but you’ll notice everything else did. I rebuilt the whole look from scratch. The old version was only friendly if you already knew semiconductors, and I want someone who has never heard of a diode to open it and get somewhere. Now it opens by asking you to pick a device: a diode, a MOS capacitor, a transistor, or draw your own. Each one comes with a sentence or two on what it is. Every number and switch has a little “i” next to it that explains it, and an empty plot tells you what it’s waiting for instead of sitting blank. Drawing your own device used to happen in a tiny box off to the side. Now it gets the whole screen. Some layers are so thin they basically disappeared, so I stretch the picture up and down until you can see them, and a label says when it’s stretched. Doped areas get a soft color so you can tell them apart. I also changed the font a couple of times. It started in a terminal style that felt cold. I tried one replacement and ended on Poppins, which just feels warmer. My favorite change is in the runs panel. It used to list your old runs as text, like “doping 1e17.” Now every solve saves a little picture of its own curve, and they all share the same scale, so you can see at a glance how each change moved the result. I switched the license to CC BY-NC so that it still stays technically open source but I own intellectual property for commercial use. Anyone can use it and change it for free, as long as they credit me and don’t sell it. A bit of AI usage in the frontend i will agree but not overkill in terms of it."}, {"post_id": 72227, "ts": "2026-09-22T14:20:14Z", "hours": 2.8683, "text": "Devlog #12 Last time I left off with a transistor sitting on oxide that would not solve. I think ive fixed it. The silicon body had no contact touching it anywhere, so the solver had no idea what voltage that body should sit at. There is no single right answer, so it just wanders. That is not a bug I can fix, it is the physics of the thing, so now the simulator refuses that drawing up front and says why instead of grinding away at it. Then I went hunting for every other way someone could break it. I wrote something that tries every combination of settings the page can send and watched what fell over. A few things did: A gate metal with a work function no real metal has. Surface scattering asked for on a 1D device, which has no surface to scatter off. A shape so thin the grid ends up dividing by zero. All of them now get refused before the solve starts, with a sentence saying what to change. A few smaller ones. The device picture was drawn half a grid cell off, which threw off the line you drag across it to read values. That same line returned nothing at all where silicon meets oxide. And the explanations could load out of order and show you the wrong one. I think now i should wrap the version 1 of the project and finish polishing the frontend considering stardance is getting over soon. another lazy code pic btw cause i dont wanna open the servers again"}, {"post_id": 70662, "ts": "2026-09-19T15:24:06Z", "hours": 2.4228, "text": "Devlog #11 Since the last devlog, you can draw your own 2D devices, not just stack layers in a line. You draw rectangles of silicon and oxide, paint doping onto them, and place metal contacts along the edges. The simulator builds a grid that fits your drawing and solves it. Before it solves, it checks for mistakes and tells you what’s wrong in plain words: a piece of silicon with no contact touching it, a gate sitting right on silicon, or a shape too small for the grid to see. To make sure drawing works, I redrew the MOS capacitor and the transistor I already had and checked that they give the same answers. The capacitor matched almost exactly and the transistor was within about 1%. Testing it in a real browser caught two bugs. One made every solve hang forever. The other made the picture of the device grow every time it redrew on high resolution screens. Both seem to be fixed now but I’ll be on the lookout for similar bugs. Then I tried something new, a transistor sitting on a layer of oxide, the way a lot of modern chips are built. It won’t solve yet. I narrowed it down to the oxide underneath the silicon, and I’m still wondering how breaks things. More on that next time. random picture cause im too lazy to start the servers again"}, {"post_id": 70075, "ts": "2026-09-18T12:25:44Z", "hours": 3.6847, "text": "Devlog #10 Since the last devlog, the simulator has gone from explaining things to letting you play with them. First, you can now compare runs. Every time you solve, the curve stays on the plot, so you can change one thing and see exactly what moved. The diode also got live sliders. Drag the doping or voltage and the answer updates while you drag. The 2D devices like the MOSFET are too slow for that, so I added a quick mode that uses a rougher grid. It’s a little less accurate, and I wrote down exactly how much. Then I built five guided lessons: a diode sitting at rest, a diode with voltage on it, a MOS capacitor, a transistor turning on, and what goes wrong when transistors get really small. Each lesson walks you through experiments step by step. The important part is that every claim a lesson makes is checked by a test against the solver I developed as part of the project. For example: if a lesson says “the current goes up,” a test runs it and makes sure it actually does. The biggest addition is a device builder. You stack layers of doped silicon however you want, and the simulator solves whatever you made. You can also save a design and load it again later. I agree I used AI for the frontend but I did not go VERY heavy on it. Only to build upon the frontend base I coded"}, {"post_id": 69600, "ts": "2026-09-17T12:07:30Z", "hours": 6.0439, "text": "Devlog #9 Since my last devlog, my solver and DEVSIM have started to cooperate. All ten benchmark devices match, the MOSFETs included, so the physics phase is done. THANK THE LORD Now I’m working on the part I care about most personally, which is making the simulator teach. The browser used to be a wall of knobs and plots with no explanation. Now every knob and every plot has a small “i” button. Click it and a drawer slides out with a plain explanation first, then the real equations for anyone who wants to go deeper. I wrote 35 of these explanations covering the physics, how the solver works, the devices, and how to read each plot. Then I checked them against the code. One credited the diodes with an accuracy number that actually belonged to a different device. Another claimed that one failed point in a sweep doesn’t ruin the rest, but the code stops at the first failure. The equations turned out to be hard to figure. The markdown reader treated the backslashes inside the math as its own escape characters and deleted them, so 92 bits of spacing and notation came out messed up. Now I pull the math out before the markdown step and put it back after. I also bundled the math and markdown libraries into the project, so the page works with no internet. Next up are band diagrams, which show the energy levels electrons can sit at. The page will draw them straight from the solved device."}, {"post_id": 68669, "ts": "2026-09-15T14:33:26Z", "hours": 1.7181, "text": "Devlog #8 Really tired today. Just ran a bunch of tests today and got a bunch of values ill sort through tomorrow."}, {"post_id": 67223, "ts": "2026-09-13T08:42:33Z", "hours": 3.7983, "text": "Devlog #7 Since my last devlog I have been teaching DEVSIM to run the same physics my own solver runs. Before this it was on a stripped down model set, so the two codes had similar geometry and nothing about mobility. Now it runs the real thing: doping dependent mobility, surface scattering at the oxide, velocity saturation, and proper Fermi-Dirac statistics. Getting there meant three more small lies. DEVSIM will easily chain a derivative through one kind of model and silently return zero for another. No error, no warning. My solver just diverged on the first step. It took a dump of every derivative on the device to see a column of exact zeros where numbers should have been. Then a field magnitude written as a square root of a square. Mathematically, sounds good but numerically it produces a nan wherever the field is exactly zero, which in a neutral chunk of silicon is nearly every edge. Then the surface mobility. I was refreshing it on every pass, forever. That is not a converging loop, that is two numbers chasing each other. The gate walk climbed to 0.50 V and then refused 0.55 V at every step size I gave it, down to a tenth of a millivolt. A failure that ignores step size is not a step size problem. I gave the refresh a stopping rule and re-ran it. Same answer to the last digit, just reachable now. The 1 micron device now agrees between the two codes to under 3.3 percent at low drain and under 1.3 percent at high drain, across four decades of current. The remaining blocker is not code. My browser is holding 15 of the machine’s 16 GB."}, {"post_id": 66590, "ts": "2026-09-12T13:16:11Z", "hours": 3.9589, "text": "Devlog #6 Im not going to say much this devlog. I hate Github CI errors with a passion and everybody that creates software relates."}, {"post_id": 65940, "ts": "2026-09-11T12:39:46Z", "hours": 2.6142, "text": "Devlog #5 Since the license was added, all my time has gone into one stubborn thing, that is getting DEVSIM simulator, to produce trustworthy MOSFET curves. It has been a long journey of small lies the application tells you. DEVSIM’s solve doesn’t take a device argument, so it solves everything you’ve ever built in that process at once. I was building one device per curve and leaving them around, so the second curve was dragging a finished device along with it and ruining the shared error check. Deleting each device when its curve finishes fixed a whole family of weird failures. Then I found the equilibrium solve was starting from all zeros, which on this device is 0.6 V off. I supply it from charge neutrality now. Same final output but far less trouble getting there. 2 of my own ideas turned out wrong and got reverted, but I wrote the measurements rather than dropping them. Capping the solver’s pass budget moved the current by 0.4%. Pinning the math library to one thread made a four second step take three minutes. Big Ouch. Currently, the 1 micron transfer curve at 50 mV of drain runs end to end and confirms with my simulator to within 0.23% above threshold. The 1 V curve still stalls at 0.4 V of gate, and I checked it properly rather than simply loosening the tolerance, because it turns out DEVSIM isn’t converging there at all. My own code, for contrast, does the same curve in 4.6 seconds."}, {"post_id": 65618, "ts": "2026-09-10T21:14:24Z", "hours": 1.4086, "text": "Dev log #4 After the last devlog I pushed and CI went red on all three Python versions. One test, one solver that would not converge. I guessed this before and fixed the wrong line. Last time I saw the residual and assumed a gate step was missing the convergence basin, so I put continuation on the gate ramp. That was a real improvement, just not this bug. This time I actually read the CI log The failing solve was the one before the ramp even starts. Gate at zero, drain already at 1 V, starting from a cold guess. So I measured it instead of guessing. Cold at 0 V drain takes 1 step. At 1 V it takes 22, and 12 of those get clipped by the step limiter, which means the solver is being dragged the whole way instead of converging properly The fix walks the bias in from zero using the continuation I already had. I regenerated the whole roll-off table through the new path and every digit came out identical. Only the path changed, not the answer. Also added the Open-Source MIT license, and cleaned the commit history."}, {"post_id": 65362, "ts": "2026-09-10T13:29:09Z", "hours": 2.1169, "text": "Dev log #3 I found a bug that made every 2D current in the simulator wrong by a factor of about 245, WAY too big. The cause, i believe, was one missing conversion. The code turns an internal number into a real current, and in 2D that conversion needs an extra length factor that I never included. In 1D it happened to be right, which is why it went un-noticed. I fixed it and then wrote a test that compares a 2D current against Ohm’s law, worked out by hand with no solver involved. This test was missing before. The reassuring part: I measure the turn-on voltage two completely different ways. They used to differ by 180 mV, which I didnt pay much attention to previously. After the fix they agree to about 2 mV. I did not tune anything to make that happen, so I might have to start believing in miracles. I also fixed two divide-by-zero crashes in the surface mobility code that were blocking a whole test combination. Also updated the README numbers and the decisions log. The full test suite is still running, and I will push to github once done."}, {"post_id": 64702, "ts": "2026-09-09T10:05:49Z", "hours": 15.2131, "text": "Devlog #2 Two things this stretch, and both started as “that’s odd” rather than “that’s broken.” First, the solver was crawling. Every step up in voltage cost more than the last, and past a point it just gave up. I traced it back to the starting guess, which was asking what makes glass electrically neutral. That question has no answer, because glass has no charges to balance in the first place. The solver was grinding away at something stupid before it ever got to the real problem. I gave it a proper starting answer instead, and the slowdown disappeared entirely. Second, I stopped trusting my tests and went to check them. I broke my own code ten different ways on purpose, one at a time, and watched to see which breakages the suite would catch. 9/10 failed, which is what I wanted. 1 slipped through clean, and that is the interesting one, because a test that cannot fail is not a test. Chasing the one that got away turned up a real bug hiding underneath it. Setting the voltage on the bottom contact was silently doing nothing at all. The code ran, reported success, and ignored the value. One line to fix, and it would have been very hard to find any other way, since nothing about the output looked wrong. Heads up! Light AI usage to debug the tests and break code to find errors"}, {"post_id": 54968, "ts": "2026-08-26T12:21:42Z", "hours": 35.26, "text": "DDSim Devlog I’m building a chip simulator from scratch. Today I got it to simulate a MOS capacitor, a silicon slab with a thin glass layer and a metal plate on top. It’s the heart of every transistor ever made. What I built: I stacked two grids together: a fine one near the silicon surface where all the action is, and a coarse one for the glass where nothing happens. Then I wrote one function that builds the whole sandwich. I wrote every test before the code. This kind of maths loves to give you wrong answers that look perfectly reasonable, so I only trust it when it matches something I can work out on paper. I’m happy that the “flatband” voltage came out exact to 15 decimal places. The threshold voltage matched the textbook to 0.13 millivolts, 50 times better than I needed. I also identified a few problems; the solver was getting slower and slower at high voltage, then giving up. The starting guess was asking “what makes glass electrically neutral?”, a meaningless question, since glass has no charges. I gave it a proper answer instead and the slowdown vanished completely. Then I deliberately broke my own code ten ways to check the tests would catch it. Nine got caught. One didn’t. Chasing that turned up a real bug: the bottom-contact voltage setting was silently doing nothing. One line to fix. Current Position: 1339 tests passing, everything clean, C-V curve working across all three regimes."}]...
|
Title: DDSim by @yaasshh | Stardance
Devlogs:
DDS Title: DDSim by @yaasshh | Stardance
Devlogs:
DDSim Devlog I’m building a chip simulator from scratch. Today I got it to simulate a MOS capacitor, a silicon slab with a thin glass layer and a metal plate on top. It’s the heart of every transistor ever made. What I built: I stacked two grids together: a fine one near the silicon surface where all the action is, and a coarse one for the glass where nothing happens. Then I wrote one function that builds the whole sandwich. I wrote every test before the code. This kind of maths loves to give you wrong answers that look perfectly reasonable, so I only trust it when it matches something I can work out on paper. I’m happy that the “flatband” voltage came out exact to 15 decimal places. The threshold voltage matched the textbook to 0.13 millivolts, 50 times better than I needed. I also identified a few problems; the solver was getting slower and slower at high voltage, then giving up. The starting guess was asking “what makes glass electrically neutral?”, a meaningless question, since glass has no charges. I gave it a proper answer instead and the slowdown vanished completely. Then I deliberately broke my own code ten ways to check the tests would catch it. Nine got caught. One didn’t. Chasing that turned up a real bug: the bottom-contact voltage setting was silently doing nothing. One line to fix. Current Position: 1339 tests passing, everything clean, C-V curve working across all three regimes.
Devlog #2 Two things this stretch, and both started as “that’s odd” rather than “that’s broken.” First, the solver was crawling. Every step up in voltage cost more than the last, and past a point it just gave up. I traced it back to the starting guess, which was asking what makes glass electrically neutral. That question has no answer, because glass has no charges to balance in the first place. The solver was grinding away at something stupid before it ever got to the real problem. I gave it a proper starting answer instead, and the slowdown disappeared entirely. Second, I stopped trusting my tests and went to check them. I broke my own code ten different ways on purpose, one at a time, and watched to see which breakages the suite would catch. 9/10 failed, which is what I wanted. 1 slipped through clean, and that is the interesting one, because a test that cannot fail is not a test. Chasing the one that got away turned up a real bug hiding underneath it. Setting the voltage on the bottom contact was silently doing nothing at all. The code ran, reported success, and ignored the value. One line to fix, and it would have been very hard to find any other way, since nothing about the output looked wrong. Heads up! Light AI usage to debug the tests and break code to find errors
Dev log #3 I found a bug that made every 2D current in the simulator wrong by a factor of about 245, WAY too big. The cause, i believe, was one missing conversion. The code turns an internal number into a real current, and in 2D that conversion needs an extra length factor that I never included. In 1D it happened to be right, which is why it went un-noticed. I fixed it and then wrote a test that compares a 2D current against Ohm’s law, worked out by hand with no solver involved. This test was missing before. The reassuring part: I measure the turn-on voltage two completely different ways. They used to differ by 180 mV, which I didnt pay much attention to previously. After the fix they agree to about 2 mV. I did not tune anything to make that happen, so I might have to start believing in miracles. I also fixed two divide-by-zero crashes in the surface mobility code that were blocking a whole test combination. Also updated the README numbers and the decisions log. The full test suite is still running, and I will push to github once done.
Dev log #4 After the last devlog I pushed and CI went red on all three Python versions. One test, one solver that would not converge. I guessed this before and fixed the wrong line. Last time I saw the residual and assumed a gate step was missing the convergence basin, so I put continuation on the gate ramp. That was a real improvement, just not this bug. This time I actually read the CI log The failing solve was the one before the ramp even starts. Gate at zero, drain already at 1 V, starting from a cold guess. So I measured it instead of guessing. Cold at 0 V drain takes 1 step. At 1 V it takes 22, and 12 of those get clipped by the step limiter, which means the solver is being dragged the whole way instead of converging properly The fix walks the bias in from zero using the continuation I already had. I regenerated the whole roll-off table through the new path and every digit came out identical. Only the path changed, not the answer. Also added the Open-Source MIT license, and cleaned the commit history.
Devlog #5 Since the license was added, all my time has gone into one stubborn thing, that is getting DEVSIM simulator, to produce trustworthy MOSFET curves. It has been a long journey of small lies the application tells you. DEVSIM’s solve doesn’t take a device argument, so it solves everything you’ve ever built in that process at once. I was building one device per curve and leaving them around, so the second curve was dragging a finished device along with it and ruining the shared error check. Deleting each device when its curve finishes fixed a whole family of weird failures. Then I found the equilibrium solve was starting from all zeros, which on this device is 0.6 V off. I supply it from charge neutrality now. Same final output but far less trouble getting there. 2 of my own ideas turned out wrong and got reverted, but I wrote the measurements rather than dropping them. Capping the solver’s pass budget moved the current by 0.4%. Pinning the math library to one thread made a four second step take three minutes. Big Ouch. Currently, the 1 micron transfer curve at 50 mV of drain runs end to end and confirms with my simulator to within 0.23% above threshold. The 1 V curve still stalls at 0.4 V of gate, and I checked it properly rather than simply loosening the tolerance, because it turns out DEVSIM isn’t converging there at all. My own code, for contrast, does the same curve in 4.6 seconds.
Devlog #6 Im not going to say much this devlog. I hate Github CI errors with a passion and everybody that creates software relates.
Devlog #7 Since my last devlog I have been teaching DEVSIM to run the same physics my own solver runs. Before this it was on a stripped down model set, so the two codes had similar geometry and nothing about mobility. Now it runs the real thing: doping dependent mobility, surface scattering at the oxide, velocity saturation, and proper Fermi-Dirac statistics. Getting there meant three more small lies. DEVSIM will easily chain a derivative through one kind of model and silently return zero for another. No error, no warning. My solver just diverged on the first step. It took a dump of every derivative on the device to see a column of exact zeros where numbers should have been. Then a field magnitude written as a square root of a square. Mathematically, sounds good but numerically it produces a nan wherever the field is exactly zero, which in a neutral chunk of silicon is nearly every edge. Then the surface mobility. I was refreshing it on every pass, forever. That is not a converging loop, that is two numbers chasing each other. The gate walk climbed to 0.50 V and then refused 0.55 V at every step size I gave it, down to a tenth of a millivolt. A failure that ignores step size is not a step size problem. I gave the refresh a stopping rule and re-ran it. Same answer to the last digit, just reachable now. The 1 micron device now agrees between the two codes to under 3.3 percent at low drain and under 1.3 percent at high drain, across four decades of current. The remaining blocker is not code. My browser is holding 15 of the machine’s 16 GB.
Devlog #8 Really tired today. Just ran a bunch of tests today and got a bunch of values ill sort through tomorrow.
Devlog #9 Since my last devlog, my solver and DEVSIM have started to cooperate. All ten benchmark devices match, the MOSFETs included, so the physics phase is done. THANK THE LORD Now I’m working on the part I care about most personally, which is making the simulator teach. The browser used to be a wall of knobs and plots with no explanation. Now every knob and every plot has a small “i” button. Click it and a drawer slides out with a plain explanation first, then the real equations for anyone who wants to go deeper. I wrote 35 of these explanations covering the physics, how the solver works, the devices, and how to read each plot. Then I checked them against the code. One credited the diodes with an accuracy number that actually belonged to a different device. Another claimed that one failed point in a sweep doesn’t ruin the rest, but the code stops at the first failure. The equations turned out to be hard to figure. The markdown reader treated the backslashes inside the math as its own escape characters and deleted them, so 92 bits of spacing and notation came out messed up. Now I pull the math out before the markdown step and put it back after. I also bundled the math and markdown libraries into the project, so the page works with no internet. Next up are band diagrams, which show the energy levels electrons can sit at. The page will draw them straight from the solved device.
Devlog #10 Since the last devlog, the simulator has gone from explaining things to letting you play with them. First, you can now compare runs. Every time you solve, the curve stays on the plot, so you can change one thing and see exactly what moved. The diode also got live sliders. Drag the doping or voltage and the answer updates while you drag. The 2D devices like the MOSFET are too slow for that, so I added a quick mode that uses a rougher grid. It’s a little less accurate, and I wrote down exactly how much. Then I built five guided lessons: a diode sitting at rest, a diode with voltage on it, a MOS capacitor, a transistor turning on, and what goes wrong when transistors get really small. Each lesson walks you through experiments step by step. The important part is that every claim a lesson makes is checked by a test against the solver I developed as part of the project. For example: if a lesson says “the current goes up,” a test runs it and makes sure it actually does. The biggest addition is a device builder. You stack layers of doped silicon however you want, and the simulator solves whatever you made. You can also save a design and load it again later. I agree I used AI for the frontend but I did not go VERY heavy on it. Only to build upon the frontend base I coded
Devlog #11 Since the last devlog, you can draw your own 2D devices, not just stack layers in a line. You draw rectangles of silicon and oxide, paint doping onto them, and place metal contacts along the edges. The simulator builds a grid that fits your drawing and solves it. Before it solves, it checks for mistakes and tells you what’s wrong in plain words: a piece of silicon with no contact touching it, a gate sitting right on silicon, or a shape too small for the grid to see. To make sure drawing works, I redrew the MOS capacitor and the transistor I already had and checked that they give the same answers. The capacitor matched almost exactly and the transistor was within about 1%. Testing it in a real browser caught two bugs. One made every solve hang forever. The other made the picture of the device grow every time it redrew on high resolution screens. Both seem to be fixed now but I’ll be on the lookout for similar bugs. Then I tried something new, a transistor sitting on a layer of oxide, the way a lot of modern chips are built. It won’t solve yet. I narrowed it down to the oxide underneath the silicon, and I’m still wondering how breaks things. More on that next time. random picture cause im too lazy to start the servers again
Devlog #12 Last time I left off with a transistor sitting on oxide that would not solve. I think ive fixed it. The silicon body had no contact touching it anywhere, so the solver had no idea what voltage that body should sit at. There is no single right answer, so it just wanders. That is not a bug I can fix, it is the physics of the thing, so now the simulator refuses that drawing up front and says why instead of grinding away at it. Then I went hunting for every other way someone could break it. I wrote something that tries every combination of settings the page can send and watched what fell over. A few things did: A gate metal with a work function no real metal has. Surface scattering asked for on a 1D device, which has no surface to scatter off. A shape so thin the grid ends up dividing by zero. All of them now get refused before the solve starts, with a sentence saying what to change. A few smaller ones. The device picture was drawn half a grid cell off, which threw off the line you drag across it to read values. That same line returned nothing at all where silicon meets oxide. And the explanations could load out of order and show you the wrong one. I think now i should wrap the version 1 of the project and finish polishing the frontend considering stardance is getting over soon. another lazy code pic btw cause i dont wanna open the servers again
Devlog #13 This one is all about the page itself. The physics didn’t change, but you’ll notice everything else did. I rebuilt the whole look from scratch. The old version was only friendly if you already knew semiconductors, and I want someone who has never heard of a diode to open it and get somewhere. Now it opens by asking you to pick a device: a diode, a MOS capacitor, a transistor, or draw your own. Each one comes with a sentence or two on what it is. Every number and switch has a little “i” next to it that explains it, and an empty plot tells you what it’s waiting for instead of sitting blank. Drawing your own device used to happen in a tiny box off to the side. Now it gets the whole screen. Some layers are so thin they basically disappeared, so I stretch the picture up and down until you can see them, and a label says when it’s stretched. Doped areas get a soft color so you can tell them apart. I also changed the font a couple of times. It started in a terminal style that felt cold. I tried one replacement and ended on Poppins, which just feels warmer. My favorite change is in the runs panel. It used to list your old runs as text, like “doping 1e17.” Now every solve saves a little picture of its own curve, and they all share the same scale, so you can see at a glance how each change moved the result. I switched the license to CC BY-NC so that it still stays technically open source but I own intellectual property for commercial use. Anyone can use it and change it for free, as long as they credit me and don’t sell it. A bit of AI usage in the frontend i will agree but not overkill in terms of it.
Devlog #14 Since then, most of my work has been getting DDSim ready for other people to use. First I cleaned up the controls. Some sliders and number boxes let you pick values that made the solver fail, which just showed up as a red error. I went through the diode, the MOS capacitor, the transistor and the draw-your-own device and found the range where each setting actually works. The sliders now stay inside those ranges, so a beginner can’t break things by accident. Then I cleaned up the code. I deleted about 2,400 lines of comments that just repeated what the code already said and kept the ones that explain something nessessary. Next came the writing. The site has about 40 short articles that explain the physics, and a lot of them sounded stiff, so I rewrote all of them. I did the same for the project docs, and on the way I found a few places where the docs no longer matched what the code does, so I fixed those too. Now I’m working on putting it online. I picked Fly.io to host it, and I’m hoping to get a free custom name. Since anyone will be able to use it, I’m adding some safety limits first. Only a couple of solves can run at the same time, old results get cleared out after a while, and a solve that runs too long gets stopped with a message explaining why. I tested each limit by breaking it on purpose to make sure the test catches it. It isn’t live yet, but it’s close! [lazy pic, i dont wanna open server again :( ]
Devlog #15 DDSim is FINALLY deployed and live! You can try it at ddsim.fly.dev Getting it online took one extra step. The cheap shared server was too slow: the hardest transistor solve takes about 50 seconds on my laptop and would have taken around 7 minutes there. That’s past the 5-minute limit I set, so it would have been stopped every time. I moved it to a faster server, and now it finishes in under a minute. Once it was up, I found a bug. When every contact on a transistor was at the same voltage, the picture still drew current flowing through it. That’s impossible, because with no voltage difference nothing moves. I fixed it, and now the page says “no current flows” instead of showing an empty plot with no explanation. Then I rewrote the README from scratch. The old one was over 500 lines and way too dense. The new one is about 200 lines, mostly screenshots from the live site plus a few tables, so someone can see what the project does in a couple of minutes. While doing that, I caught a mistake. One number in my results table didn’t match the graph right next to it. I reran the full simulation, which took 20 minutes, and fixed the table so it matches. Last, I took the deployment files out of the public code. Anyone who downloads it gets everything they need to run it on their own computer, but not the setup for putting it online. Next up, I might be thinking of getting a custom name for this simulator and my other atom simulator. If anyone knows where I can get free domains, lmk in the comments
Devlog #16 Now that DDSim is live, my next goal is to make it better than DEVSIM, a free, open-source simulator a lot of people already use. “Better” doesn’t count unless I can measure it, so I planned out the next 11 stages of the project, and the first one is a scoreboard. The scoreboard runs both simulators on the same set of devices and compares them in four ways: how often each one finishes a solve without crashing, how accurate the answers are, how fast they run, and what each one can do at all. Some of these runs take hours, and my laptop ran out of memory partway through, so I paused them. I’ll post the results once they’re done, even the parts where DEVSIM is better than mine. While building the accuracy check, I found a bug in my own math. Sometimes it reported numbers that didn’t make physical sense, so now it throws those out instead of trusting them. I also went through all the style files for the website. They’re about a third smaller now, and I checked that the page still looks exactly the same. Then I found a small bug that had been there all along. The little “i” buttons that explain each setting were supposed to turn blue when you hover over them, but a different style rule was overriding it. Last, I cleaned up the README again. The pictures are centered now, I took out the GIF, and I rewrote some of the text so it reads more naturally.
Devlog #17 I restarted the scoreboard runs, and before looking/mentioning any of the results I checked my own setup for DEVSIM. That showed a few bugs on my side. My starting guess for the voltage inside the device did a log of zero on heavily doped chips, so DEVSIM crashed INSTANTLY. I also wasn’t giving it enough steps to settle on some devices. I fixed both, because it wouldn’t be fair to count my mistakes as DEVSIM’s. I also cleaned up the code, I tried to ship all progress so far but there was just too much AI (guilty) so I am working on redoing the python, css and javascript code again mainly from scratch. (The image shows all the values from the DDSim tests)
Devlog #18 The robustness runs are almost done. Robustness checks a simple concept, if I give the solver a device cold, with no warm-up, does it actually finish? I ran 200 test cases through my solver and through DEVSIM, each in a few different setups. The robustness numbers aren’t final yet. One DEVSIM result is still missing. The first time my laptop ran out of memory, and the second time it went to sleep overnight, so it’s running again now. I also found out DEVSIM acts much differently depending on how many CPU threads it gets. With only one, some solves failed or took forever which was kinda interesting to see. On the cleanup side, I turned on the strictest type checking across the whole project and fixed what it found. Every color on the website now comes from one file. I also deleted a bunch of old files nobody used and cut the README down.
Devlog #19 The speed and robustness numbers are now saved on the scoreboard. On the first 8 benchmarks, my solver takes about 1.6x less time per bias point than DEVSIM. I also added a test that reads the README and fails if the README claims anything the data doesn’t back up (I hate getting 100% vibe code assumptions on my readme btw). I renamed a lot of variables across the code (to pass the 30% ai rule that im apparently violating) to shorter names. That kind of change can break the tests if some of the variables reference each other across multiple files, so I checked that python turns the old code and the new code into exactly the same instructions. Thankfully it did. I also moved all the settings into one file. Things like how many tries the solver gets, how small the mesh can get, and the server limits used to be scattered across about 20 files. I checked that every single value stayed exactly the same after the move. I also deleted the last few leftover comments. Then I pushed everything. The tests ran on three Python versions, and 2,723 of 2,724 passed. The one that failed was a browser test on Python 3.11 that waited too long for the page to load. The same test passed on the other two versions, so it’s probably just a slow test machine, but I’m going to rerun it to make sure. My laptop ran out of memory again, which stopped me from finishing the type hints in the tests. That’s next, once I’m not running a bunch of other stuff at the same time.
Devlog #20 In this devlog i firstly fixed up the website. It now has a little icon in the browser tab, a terms page, a privacy page and a footer with a contact button. The icon didn’t show up on the live site at first, so I fixed that too. Then I started the next phase, which is all about fixing temperature related stuff. A lot of the calculations of the simulator took room temperature which might have led to some wrong calculations, so I’ve been fixing that. The gate’s energy level was stuck at its room-temperature value. it was a real bug and its fixed now. When the silicon gets hotter, electrons now max out at a lower speed, just like in real-life chips. From 250 to 400 K, the junction’s built-in voltage matches the textbook formula. From 300 to 400 K, the diode’s leakage current stays within 0.3% of the formula. I also added a fixed charge that sits where the silicon meets the oxide layer. Real chips always have some, and it changes the voltage where a transistor turns on. Next up are the big jobs. A long DEVSIM run is still going, and after that I’ll test the temperature effects on a full 2D transistor. I also still need to put the website changes live.
Devlog #21 Since the last devlog I finished most of the temperature phases. First I compared the diode at 400 K against DEVSIM. I saved that result so my other tests compare with it from now on. Then I added two new sliders to the website. One sets the temperature, from 200 to 500 K. The other sets the fixed charge where the silicon meets the oxide. I picked both ranges by running the simulator across them. Each slider also has a short lesson that explains what it does. While I was writing those, I found some broken math formatting in the temperature lesson and fixed it. The biggest addition is freeze-out. To make silicon conduct, we add extra atoms that give up electrons. When it gets really cold, those atoms stop giving up their electrons. Before, my simulator assumed they always did. Now there’s a switch for it, and it works. At 100, 200 and 300 K it matches the textbook formula almost exactly. I also checked that a plain frozen silicon bar still follows Ohm’s law, and that the capacitance results still work at 150 K.
Devlog #22 The long DEVSIM run finally finished. It took about 6 hours and matched the expert result almost exactly, which closes out the scoreboard phase. Then I started the next phase, which is about AC. That essentially means wiggling the voltage back and forth and watching how the device reacts at different speeds. Before, my simulator could only handle super slow wiggles, or fast ones where I froze some electrons by hand. Now it can handle any speed. To get there, I first taught the simulator how fast electrons and holes pile up or drain away over time. Then I wrote the part that works out how much current flows into each contact when one of them gets wiggled. I tested it on diodes, since they have textbook formulas to compare against. A long diode matched within about 1%, and a short one within 1.3%. Along the way I found a bug where my mesh maker gave up on very long devices, so I fixed that too. The MOS capacitor is giving me some trouble. At really slow wiggles, the math needs more precision than normal computer numbers have, so the answers came out wrong by up to 46%. Fast wiggles work fine. Right now I’m trying a trick where I make the electrons react faster, so the slow case happens at a speed the computer can handle. Below are some of the DEVSIM scoreboard values
Devlog #23 The trick for the MOS capacitor worked. Making the electrons react faster put the slow wiggles at a speed the computer can handle, and the answers came out right. That FINALLY finished the AC phase. I also added noise, a tiny random jitter in current that every device has. Next I added time. Now its possible to flip a diode from on to off and watch it recover. When you switch a diode off, it keeps conducting for a moment because of all the charge stored inside it. I compared that against DEVSIM, and our results were within 0.03% of each other which is quite frankly something im really proud off. Then I added a feature where the simulator shows how inaccurate it may be. It now checks its own answer against a finer mesh and puts a little error bar on every point in the plots. It can also improve its own mesh by adding points only where they’re needed. On 5 of my 8 test devices it hit the target accuracy with fewer points than my hand-made meshes. I was aiming for around 6, so that’s still doable. The newest addition is a bipolar transistor, where a small current into the middle layer controls a much bigger current through the whole device. I built a simple 1D version and a more realistic 2D one. The 1D version matches the textbook formula to within 0.03%. The best part is that its gain drops off at both very low and very high current, the way real transistors do, and I never told it to. It figured that out from the physics.
Ships:
I built DDSim, a program that simulates what happens inside the tiny parts that computer chips are made of, ie diodes, capacitors and transistors. You describe a device by its shape and which parts of the silicon have extra electrons or holes. DDSim then works out how those electrons and holes move, and draws the current and voltage curves. I didn’t fit anything to make the graphs look right. Everything comes straight from the physics equations. (NOTE: ITS STILL VERY CLUNKY SO ITS NOT GOING TO BE PERFECT AS OF RIGHT NOW. IF YOU FACE ANY TROUBLES IM REALLY SORRY) To make sure everything accurate, I checked it against textbook formulas and against DEVSIM, a simulator other people wrote. They agree to within a few percent, and the project has about 2,700 automated tests. You can try it in your browser at ddsim.fly.dev. Pick a device, press solve, and watch the answer draw itself. Every button and graph has a little “i” that explains what it means, and there are guided lessons if you’re new to this. It’s a school-level instrument, not a chip design tool. Below about 50 nanometers the physics it uses stops being accurate, so I didn’t go beyond that...
|
1793152243.3827555
|
1793238643.3827555
|
|
52248
|
City Sweep by @gungu | Stardance
|
gungu
|
1
|
43.0
|
838
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-06T10:11:00Z", "hours": 43.0, "multiplier": 19.27, "payout": 838, "blessing": "neutral", "text": "City Sweep is a game I made in about 2-3 weeks with the sole purpose to test out how well I can make a game in my freshly made 3D renderer and basically game engine. In this game you pick up trash in a small city. You earn money from the picked up trash, which you can spend on more storage, tools, or upgrades for your tools. That’s about it, this is just a tech demo I made for my engine, so it isn’t that ambitious.", "repo": "https://github.com/gungugugungu/City_Sweep", "demo": "https://github.com/gungugugungu/City_Sweep/releases/tag/1.0"}]...
|
[{"post_id": 62800, "ts": "202 [{"post_id": 62800, "ts": "2026-09-06T10:08:17Z", "hours": 0.7683, "text": "DEMO !! And that’s it, the demo is live. I’m going to ship the project and finally relax after a long summer. Unless there are bugs to fix of course, but I sure as hell hope there are none."}, {"post_id": 62502, "ts": "2026-09-05T22:02:26Z", "hours": 0.3247, "text": "SETTINGS and HELP MENU That’s it, I’m done. I made a game in my own renderer, and pretty well too. What I’ve made in the past couple of weeks simply amazes me, I never thought I would make a game in completely my own engine, and look at me now. Yes it’s just a simple tech demo, but it’s still a playable game."}, {"post_id": 62494, "ts": "2026-09-05T21:40:06Z", "hours": 0.6536, "text": "Sound effects Yeah there are sounds for everything now, the game is coming together, it’s sure as hell good for a tech demo."}, {"post_id": 62141, "ts": "2026-09-05T12:11:56Z", "hours": 0.3622, "text": "Music !! I spent the morning making a song that doesn’t feel to repetitive, as the game is like 15 minutes long, and I’m pretty sure this song is basic enough that it that it can be listened to for 15 minutes. I also had to implement SDL_mixer into my game so I can listen play sounds, but that was pretty easy. I wanted the song to have a vibe straight out of High On Life, and I think I’ve got it. I’ve attached a part of it so you can listen to it too."}, {"post_id": 61723, "ts": "2026-09-04T19:19:39Z", "hours": 1.3453, "text": "Everything finally has a proper price! I tried beating the entire game with this, and of course it’s a tech demo so it’s like a 10 minute experience at best, it’s still extremely cool. I’m almost there, just some polishing here and there and I’m done."}, {"post_id": 61586, "ts": "2026-09-04T15:58:33Z", "hours": 1.5619, "text": "I finished the upgrades for the broom and vacuum I did it for the storage too, it was only half done. It’s pretty cool. I also rearranged all the trash in the city, and nearly doubled it too. Now all I need is: Make everything cost money. All the prices are already calculated, I just need to make them work. I need to music, sound effects, and settings to make them work. I need to make a proper help menu, because I still use the placeholder. And then the last thing is some multi-platform playtesting, to make sure everything works as it’s supposed to."}, {"post_id": 60893, "ts": "2026-09-03T15:18:56Z", "hours": 1.7419, "text": "I filled the city with trash I doesn’t look too great yet, I’m definitely going to do something about how it looks, but as of right now I’m: A. Happy that it’s even working B. Surprised that my renderer can handle so many objects at once. This project was basically made so I can see how well my renderer can handle a full game, and it seems like it’s doing quite fine. Now all that remains is to: Finish all the upgrades for all the tools Give everything a price and display it Add some sfx and music Add a loading screen That’s not a bad list, I’m practically done already!😅"}, {"post_id": 60338, "ts": "2026-09-02T16:51:29Z", "hours": 1.1717, "text": "I finished the city!!! It’s neither the prettiest or the biggest, but I can’t commit to a map bigger than this for my first game in this renderer. So, for now, this is enough. It looks kinda cool tho, it might just be me. The point is: this is a basic map, but a great map for picking up trash in, all things considered I’m happy."}, {"post_id": 59635, "ts": "2026-09-01T15:36:29Z", "hours": 1.6458, "text": "Many changes, so here’s a list: I wrote an entire pixelation post-processing effect in the renderer so now the entire thing is cool and pixelated, I love how it looks. I worked a bit more on the map and re-lit the whole thing I drew a new skybox, I think it looks really cool."}, {"post_id": 58822, "ts": "2026-08-31T12:28:05Z", "hours": 2.0081, "text": "I started working on the world for the demo. It’s going to be quite small, I’ve already got 2 of 10 buildings down. I also need to make a new skybox too, but that’ll come later I suppose. I also want to make a pixelating effect that makes it look a bit more stylized, but that’ll come later."}, {"post_id": 58000, "ts": "2026-08-30T10:37:15Z", "hours": 1.9097, "text": "VACUUM TOOL I’m beginning to get to the end of the project. I still need to make the upgrades for the broom and vacuum, an actual map, sounds effects, music or ambience and make a build for windows too. I’m pretty sure that’s it."}, {"post_id": 57268, "ts": "2026-08-29T11:34:02Z", "hours": 4.8394, "text": "TOOL SYSTEM and BROOM I implemented an entire system for switching tools. I didn’t want to make a devlog without an example, so I drew, animated and programmed the broom tool as well. All of it’s settings are changeable, now all I need to do is spend a bit of time with the upgrades and it’s all done. I’m unsure if I talked about money in the last update, but if not then yeah, money exists too now, although it doesn’t have a use quite yet."}, {"post_id": 55742, "ts": "2026-08-27T18:34:04Z", "hours": 4.7506, "text": "BUYING TOOLS and TOOL ANIMATIONS Most my time spent in this update was actually with optimization. I freaked out the the game wasn’t performing well in a rendering situation that I won’t even come close to in the finished product, so I realized it was only a problem if I made it one. After that debacle I implemented buying tools and then I started working on animating the hands. All the other tools will be 2D and animated like this too."}, {"post_id": 54608, "ts": "2026-08-25T17:08:08Z", "hours": 1.1217, "text": "STORAGE UPGRADES minus the trashcan and wheelbarrow, I’m planning to make those actual physical objects you can move around and interact with which will come later on in development, I’ve still got a lot to do before that. But that does technically mean that most of the UI work is done (jippie !!!) , I only need to do the purchasing for other tools now, and the settings menu will come far later in development. I’m almost out of UI hell, almost there"}, {"post_id": 54491, "ts": "2026-08-25T14:45:23Z", "hours": 1.5553, "text": "It took a bit longer then I would have wanted, but I designed the storage upgrade menu. First image is nothing purchased, second image is everything bought."}, {"post_id": 53969, "ts": "2026-08-24T17:57:38Z", "hours": 1.5842, "text": "HAND UPGRADES Upgrade 1 : Pickup speed: shrinks the time between pickups Upgrade 2 : Palm size: the radius in which the player can pick up trash (basically just how much trash you can pick up at once) Upgrade 3 : Hold pick up: (one-time upgrade) allows holding the mouse button for picking up trash instead of having to click individually for each one"}, {"post_id": 53874, "ts": "2026-08-24T16:04:48Z", "hours": 2.2628, "text": "EXPANDABLE UPGRADE SYSTEM This is just the base for it, upgrades are not yet implemented, but thanks to all the work right now, implementing upgrades is easier than ever. The progress bars are how well the upgrades are progressing, and those are driven by a variable as well. Much of the time on this was just spent on figuring out how the UI should look, and to be honest I’m a bit disappointed because it’s not that good, but it’ll be better once it actually functions, because right now you can press the buttons but they don’t do anything that’s visible to the naked eye"}, {"post_id": 53158, "ts": "2026-08-23T16:30:23Z", "hours": 2.3658, "text": "this took way longer than it should have, but BASIC PAUSE MENU AND UI SYSTEM I made a simple button class and made sure they worked, I also had to do a bunch of debugging in the engine and in my raycasting function to iron out a bunch of bugs, I am finding why making your own engine is way more time consuming. I love it tho, it’s way more fun than making this in a big engine."}, {"post_id": 52969, "ts": "2026-08-23T10:50:30Z", "hours": 0.44, "text": "EMPTYING TRASH AND MAX TRASH AMOUNT Yeah pretty self explanatory. I capped the max amount you can hold and added bins on the map that you can empty trash into. Pretty cool."}, {"post_id": 52948, "ts": "2026-08-23T10:15:07Z", "hours": 1.0661, "text": "PHYSICS OPTIMIZATION Yeah the physics were really slow, I needed to work on optimizing it a little. Also, if you look closely you can see that the trash counter text is finally centered. That cool, right? Anyways, the point is that I won’t be having any trouble with performance anytime soon."}, {"post_id": 52630, "ts": "2026-08-22T21:05:36Z", "hours": 1.2803, "text": "TRASH COUNTER Yeah it’s not centered, I’ll fix that, I just want this feature out. I had to rewrite much of the 2D rendering in my renderer for this, so please appreciate it.😅"}, {"post_id": 52582, "ts": "2026-08-22T19:21:29Z", "hours": 0.8422, "text": "I added trash you can pick up It’s loaded from the map file you give it, and automatically identified based on the name. You can also kick it around, that’s it. Now that I finally built out all the necessary systems developing this game is a breeze, I so love the environment I built for myself. Totally worth the 60 hours I spent on it."}, {"post_id": 52538, "ts": "2026-08-22T18:16:57Z", "hours": 3.6858, "text": "I can’t believe I’m saying this, but FPS MOVEMENT AND PHYSICS SYSTEM If you saw any of my older devlogs (you didn’t tho) , you would point out that I already made a physics system and FPS movement. And that’s true, but those systems were copied from my last engine and slightly edited to fit my new renderer (except for PhysicsObject that was basically a full rewrite) , but I didn’t account for the fact that React Physics 3D may have been updated during this time. And of course they added breaking changes, which I had to annoyingly chase down with no information on why anything was happening. I’m not going to go into it because I don’t fully understand what it was freaking out so much about, but the point is that I had to rewrite most of the CharacterController and FPSController, or else the entire physics system would just collapse on itself. Anyways, here’s a video of me walking around on the dev environment."}, {"post_id": 51539, "ts": "2026-08-21T09:32:46Z", "hours": 0.3761, "text": "CHARACTERCONTROLLER AND FPSCONTROLLER CLASS I ported over an old CharacterController class from my old game engine along with the FPSController subclass. I had to do a little rewriting because this project uses a different math library and camera setup, but other than that it was really simple."}, {"post_id": 51521, "ts": "2026-08-21T09:02:32Z", "hours": 3.8094, "text": "RENDERER IMPLEMENTATION AND PHYSICS This project is a follow-up to my last project, which is a renderer using Vulkan. I spent some time figuring out how to use my own renderer as a library, but after a bunch of rewriting I managed to do it. After that I implemented ReactPhysics3D, which is a 3D physics library I used before, and I want to use it in this game too, so I spent some time writing a PhysicsObject class based on the PhysicsComponent from my game engine I built last year. I had to do a bunch of rewriting, and I also had to modify my GLTF loader in my renderer so it also returns vertex dat for convex shape generation, but it’s all done and working. The next step is a CharacterController class and an FPSController subclass, which I can hopefully just rip from my old game engine."}]...
|
Title: City Sweep by @gungu | Stardance
Devlogs:
Title: City Sweep by @gungu | Stardance
Devlogs:
RENDERER IMPLEMENTATION AND PHYSICS This project is a follow-up to my last project, which is a renderer using Vulkan. I spent some time figuring out how to use my own renderer as a library, but after a bunch of rewriting I managed to do it. After that I implemented ReactPhysics3D, which is a 3D physics library I used before, and I want to use it in this game too, so I spent some time writing a PhysicsObject class based on the PhysicsComponent from my game engine I built last year. I had to do a bunch of rewriting, and I also had to modify my GLTF loader in my renderer so it also returns vertex dat for convex shape generation, but it’s all done and working. The next step is a CharacterController class and an FPSController subclass, which I can hopefully just rip from my old game engine.
CHARACTERCONTROLLER AND FPSCONTROLLER CLASS I ported over an old CharacterController class from my old game engine along with the FPSController subclass. I had to do a little rewriting because this project uses a different math library and camera setup, but other than that it was really simple.
I can’t believe I’m saying this, but FPS MOVEMENT AND PHYSICS SYSTEM If you saw any of my older devlogs (you didn’t tho) , you would point out that I already made a physics system and FPS movement. And that’s true, but those systems were copied from my last engine and slightly edited to fit my new renderer (except for PhysicsObject that was basically a full rewrite) , but I didn’t account for the fact that React Physics 3D may have been updated during this time. And of course they added breaking changes, which I had to annoyingly chase down with no information on why anything was happening. I’m not going to go into it because I don’t fully understand what it was freaking out so much about, but the point is that I had to rewrite most of the CharacterController and FPSController, or else the entire physics system would just collapse on itself. Anyways, here’s a video of me walking around on the dev environment.
I added trash you can pick up It’s loaded from the map file you give it, and automatically identified based on the name. You can also kick it around, that’s it. Now that I finally built out all the necessary systems developing this game is a breeze, I so love the environment I built for myself. Totally worth the 60 hours I spent on it.
TRASH COUNTER Yeah it’s not centered, I’ll fix that, I just want this feature out. I had to rewrite much of the 2D rendering in my renderer for this, so please appreciate it.😅
PHYSICS OPTIMIZATION Yeah the physics were really slow, I needed to work on optimizing it a little. Also, if you look closely you can see that the trash counter text is finally centered. That cool, right? Anyways, the point is that I won’t be having any trouble with performance anytime soon.
EMPTYING TRASH AND MAX TRASH AMOUNT Yeah pretty self explanatory. I capped the max amount you can hold and added bins on the map that you can empty trash into. Pretty cool.
this took way longer than it should have, but BASIC PAUSE MENU AND UI SYSTEM I made a simple button class and made sure they worked, I also had to do a bunch of debugging in the engine and in my raycasting function to iron out a bunch of bugs, I am finding why making your own engine is way more time consuming. I love it tho, it’s way more fun than making this in a big engine.
EXPANDABLE UPGRADE SYSTEM This is just the base for it, upgrades are not yet implemented, but thanks to all the work right now, implementing upgrades is easier than ever. The progress bars are how well the upgrades are progressing, and those are driven by a variable as well. Much of the time on this was just spent on figuring out how the UI should look, and to be honest I’m a bit disappointed because it’s not that good, but it’ll be better once it actually functions, because right now you can press the buttons but they don’t do anything that’s visible to the naked eye
HAND UPGRADES Upgrade 1 : Pickup speed: shrinks the time between pickups Upgrade 2 : Palm size: the radius in which the player can pick up trash (basically just how much trash you can pick up at once) Upgrade 3 : Hold pick up: (one-time upgrade) allows holding the mouse button for picking up trash instead of having to click individually for each one
It took a bit longer then I would have wanted, but I designed the storage upgrade menu. First image is nothing purchased, second image is everything bought.
STORAGE UPGRADES minus the trashcan and wheelbarrow, I’m planning to make those actual physical objects you can move around and interact with which will come later on in development, I’ve still got a lot to do before that. But that does technically mean that most of the UI work is done (jippie !!!) , I only need to do the purchasing for other tools now, and the settings menu will come far later in development. I’m almost out of UI hell, almost there
BUYING TOOLS and TOOL ANIMATIONS Most my time spent in this update was actually with optimization. I freaked out the the game wasn’t performing well in a rendering situation that I won’t even come close to in the finished product, so I realized it was only a problem if I made it one. After that debacle I implemented buying tools and then I started working on animating the hands. All the other tools will be 2D and animated like this too.
TOOL SYSTEM and BROOM I implemented an entire system for switching tools. I didn’t want to make a devlog without an example, so I drew, animated and programmed the broom tool as well. All of it’s settings are changeable, now all I need to do is spend a bit of time with the upgrades and it’s all done. I’m unsure if I talked about money in the last update, but if not then yeah, money exists too now, although it doesn’t have a use quite yet.
VACUUM TOOL I’m beginning to get to the end of the project. I still need to make the upgrades for the broom and vacuum, an actual map, sounds effects, music or ambience and make a build for windows too. I’m pretty sure that’s it.
I started working on the world for the demo. It’s going to be quite small, I’ve already got 2 of 10 buildings down. I also need to make a new skybox too, but that’ll come later I suppose. I also want to make a pixelating effect that makes it look a bit more stylized, but that’ll come later.
Many changes, so here’s a list: I wrote an entire pixelation post-processing effect in the renderer so now the entire thing is cool and pixelated, I love how it looks. I worked a bit more on the map and re-lit the whole thing I drew a new skybox, I think it looks really cool.
I finished the city!!! It’s neither the prettiest or the biggest, but I can’t commit to a map bigger than this for my first game in this renderer. So, for now, this is enough. It looks kinda cool tho, it might just be me. The point is: this is a basic map, but a great map for picking up trash in, all things considered I’m happy.
I filled the city with trash I doesn’t look too great yet, I’m definitely going to do something about how it looks, but as of right now I’m: A. Happy that it’s even working B. Surprised that my renderer can handle so many objects at once. This project was basically made so I can see how well my renderer can handle a full game, and it seems like it’s doing quite fine. Now all that remains is to: Finish all the upgrades for all the tools Give everything a price and display it Add some sfx and music Add a loading screen That’s not a bad list, I’m practically done already!😅
I finished the upgrades for the broom and vacuum I did it for the storage too, it was only half done. It’s pretty cool. I also rearranged all the trash in the city, and nearly doubled it too. Now all I need is: Make everything cost money. All the prices are already calculated, I just need to make them work. I need to music, sound effects, and settings to make them work. I need to make a proper help menu, because I still use the placeholder. And then the last thing is some multi-platform playtesting, to make sure everything works as it’s supposed to.
Everything finally has a proper price! I tried beating the entire game with this, and of course it’s a tech demo so it’s like a 10 minute experience at best, it’s still extremely cool. I’m almost there, just some polishing here and there and I’m done.
Music !! I spent the morning making a song that doesn’t feel to repetitive, as the game is like 15 minutes long, and I’m pretty sure this song is basic enough that it that it can be listened to for 15 minutes. I also had to implement SDL_mixer into my game so I can listen play sounds, but that was pretty easy. I wanted the song to have a vibe straight out of High On Life, and I think I’ve got it. I’ve attached a part of it so you can listen to it too.
Sound effects Yeah there are sounds for everything now, the game is coming together, it’s sure as hell good for a tech demo.
SETTINGS and HELP MENU That’s it, I’m done. I made a game in my own renderer, and pretty well too. What I’ve made in the past couple of weeks simply amazes me, I never thought I would make a game in completely my own engine, and look at me now. Yes it’s just a simple tech demo, but it’s still a playable game.
DEMO !! And that’s it, the demo is live. I’m going to ship the project and finally relax after a long summer. Unless there are bugs to fix of course, but I sure as hell hope there are none.
Ships:
City Sweep is a game I made in about 2-3 weeks with the sole purpose to test out how well I can make a game in my freshly made 3D renderer and basically game engine. In this game you pick up trash in a small city. You earn money from the picked up trash, which you can spend on more storage, tools, or upgrades for your tools. That’s about it, this is just a tech demo I made for my engine, so it isn’t that ambitious....
|
1793270936.7826302
|
1793357336.7826302
|
|
52250
|
Smart Doorbell by @yannickalois | Stardance
|
yannickalois
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T11:15:34Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a smart touchscreen dashboard for a Raspberry Pi with a live webcam, weather information, and a music section. The most challenging part was connecting the webcam to the Flask backend and creating a responsive interface for the touchscreen. I am proud of creating a system that can run continuously and automatically start on the Raspberry Pi. To test it, you need a Raspberry Pi, a USB webcam, a touchscreen, Python, and the required dependencies from the project.", "repo": "https://github.com/Keinchili/Smart-Doorbell", "demo": ""}]...
|
[{"post_id": 53169, "ts": "202 [{"post_id": 53169, "ts": "2026-08-23T16:44:43Z", "hours": 0.3686, "text": "Finished the Frontend HTML"}, {"post_id": 51550, "ts": "2026-08-21T10:04:31Z", "hours": 0.325, "text": "Code the first art of my webinterface backend"}]...
|
Title: Smart Doorbell by @yannickalois | Stardance Title: Smart Doorbell by @yannickalois | Stardance
Devlogs:
Code the first art of my webinterface backend
Finished the Frontend HTML
Ships:
I built a smart touchscreen dashboard for a Raspberry Pi with a live webcam, weather information, and a music section. The most challenging part was connecting the webcam to the Flask backend and creating a responsive interface for the touchscreen. I am proud of creating a system that can run continuously and automatically start on the Raspberry Pi. To test it, you need a Raspberry Pi, a USB webcam, a touchscreen, Python, and the required dependencies from the project....
|
1793224332.8748784
|
1793310732.8748784
|
|
52263
|
SlackPilot — Your Workspace Assistant by @adityaja SlackPilot — Your Workspace Assistant by @adityajain1225 | Stardance...
|
adityajain1225
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T10:51:25Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "SlackPilot Bring your productivity tools directly into Slack — no more app-switching. SlackPilot is a Node.js bot built with Slack Bolt that brings task management, reminders, saved notes, and AI-powered conversation tools straight into Slack. Instead of jumping between Slack, your task manager, your notes app, and a separate AI tool, SlackPilot tries to handle all of it in one place. Features Task Management Create, view, and complete tasks without leaving Slack. Tasks are stored persistently, and SlackPilot can also automatically pick up on tasks mentioned in normal conversation. Automatic AI Task Detection SlackPilot listens for messages that sound like tasks and uses OpenAI to figure out: Whether the message actually contains a task What the task is Whether a deadline was mentioned Who it’s assigned to It only auto-creates a task if someone is explicitly mentioned — no false positives from general chatter. Example: @Aditya can you finish the presentation by Friday? Reminders Set quick reminders and get pinged when they’re due. /slackpilot-remind 30 Finish the presentation Saved Information Save notes, links, ideas, or deadlines for later with /slackpilot-save, and pull them back up with /slackpilot-saved. AI Recap /slackpilot-recap pulls recent channel messages and summarizes them into clear sections: IMPORTANT TASKS DECISIONS NEEDS ATTENTION SUMMARY AI Conversation Analysis /slackpilot-analyze goes a step further and breaks down a conversation into: Main topic Important information Tasks Decisions Unanswered questions Potential problems Recommended next actions XP and Gamification Using SlackPilot earns you XP, and XP builds into levels. It’s a small incentive to actually use the bot instead of forgetting it exists. Action XP Ping +2 Help +3 Roll / Coin +3 Joke / Cat Fact +5 Fortune +5 Create task +10 Create reminder +10 Complete task +20 AI recap +25 AI analysis +30 Check your stats with /slackpilot-me or see where you rank with /slackpilot-leaderboard. Fun Commands Because not everything in Slack needs to be productive. /slackpilot-joke /slackpilot-catfact /slackpilot-roll /slackpilot-coin /slackpilot-fortune Utility Commands /slackpilot-help /slackpilot-ping Command Reference Command Description /slackpilot-task Create a new task /slackpilot-tasks View active tasks /slackpilot-done Mark a task as complete /slackpilot-remind Set a reminder /slackpilot-reminders View active reminders /slackpilot-save Save a note, link, or idea /slackpilot-saved View saved information /slackpilot-recap AI summary of recent messages /slackpilot-analyze Deeper AI analysis of a conversation /slackpilot-me View your XP and level /slackpilot-leaderboard View the XP leaderboard /slackpilot-joke Random joke /slackpilot-catfact Random cat fact /slackpilot-roll Random number (1-100) /slackpilot-coin Heads or tails /slackpilot-fortune Random fortune /slackpilot-help List all commands /slackpilot-ping Check if the bot is alive Tech Stack", "repo": "https://github.com/AdityaJainDXB/SlackPilot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0P5NE354?_gl=1*170tuuh*_gcl_au*OTA5NTQwNzMzLjE3ODY4NjE1NTEuLS4tLjE3ODY5NTExNDcuMTI2NzExMjkxOS4xNzg3MjkwNzg1LjE3ODczMDkwMTU."}]...
|
[{"post_id": 51559, "ts": "202 [{"post_id": 51559, "ts": "2026-08-21T10:28:33Z", "hours": 0.35, "text": "Testing after hosting"}, {"post_id": 51552, "ts": "2026-08-21T10:06:26Z", "hours": 0.2872, "text": "Added onto github"}]...
|
Title: SlackPilot — Your Workspace Assistant by @a Title: SlackPilot — Your Workspace Assistant by @adityajain1225 | Stardance
Devlogs:
Added onto github
Testing after hosting
Ships:
SlackPilot Bring your productivity tools directly into Slack — no more app-switching. SlackPilot is a Node.js bot built with Slack Bolt that brings task management, reminders, saved notes, and AI-powered conversation tools straight into Slack. Instead of jumping between Slack, your task manager, your notes app, and a separate AI tool, SlackPilot tries to handle all of it in one place. Features Task Management Create, view, and complete tasks without leaving Slack. Tasks are stored persistently, and SlackPilot can also automatically pick up on tasks mentioned in normal conversation. Automatic AI Task Detection SlackPilot listens for messages that sound like tasks and uses OpenAI to figure out: Whether the message actually contains a task What the task is Whether a deadline was mentioned Who it’s assigned to It only auto-creates a task if someone is explicitly mentioned — no false positives from general chatter. Example: @Aditya can you finish the presentation by Friday? Reminders Set quick reminders and get pinged when they’re due. /slackpilot-remind 30 Finish the presentation Saved Information Save notes, links, ideas, or deadlines for later with /slackpilot-save, and pull them back up with /slackpilot-saved. AI Recap /slackpilot-recap pulls recent channel messages and summarizes them into clear sections: IMPORTANT TASKS DECISIONS NEEDS ATTENTION SUMMARY AI Conversation Analysis /slackpilot-analyze goes a step further and breaks down a conversation into: Main topic Important information Tasks Decisions Unanswered questions Potential problems Recommended next actions XP and Gamification Using SlackPilot earns you XP, and XP builds into levels. It’s a small incentive to actually use the bot instead of forgetting it exists. Action XP Ping +2 Help +3 Roll / Coin +3 Joke / Cat Fact +5 Fortune +5 Create task +10 Create reminder +10 Complete task +20 AI recap +25 AI analysis +30 Check your stats with /slackpilot-me or see where you rank with /slackpilot-leaderboard. Fun Commands Because not everything in Slack needs to be productive. /slackpilot-joke /slackpilot-catfact /slackpilot-roll /slackpilot-coin /slackpilot-fortune Utility Commands /slackpilot-help /slackpilot-ping Command Reference Command Description /slackpilot-task Create a new task /slackpilot-tasks View active tasks /slackpilot-done Mark a task as complete /slackpilot-remind Set a reminder /slackpilot-reminders View active reminders /slackpilot-save Save a note, link, or idea /slackpilot-saved View saved information /slackpilot-recap AI summary of recent messages /slackpilot-analyze Deeper AI analysis of a conversation /slackpilot-me View your XP and level /slackpilot-leaderboard View the XP leaderboard /slackpilot-joke Random joke /slackpilot-catfact Random cat fact /slackpilot-roll Random number (1-100) /slackpilot-coin Heads or tails /slackpilot-fortune Random fortune /slackpilot-help List all commands /slackpilot-ping Check if the bot is alive Tech Stack...
|
1793224335.5816832
|
1793310735.5816832
|
|
52276
|
Bank Management System by @gravityonmars | Stardan Bank Management System by @gravityonmars | Stardance...
|
gravityonmars
|
1
|
4.39
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T15:54:02Z", "hours": 4.0, "multiplier": 3.67, "payout": 16, "blessing": "neutral", "text": "Last 4-5 hours I spent building a CLI based Bank Management System with featuers: 1. Deposit funds 2. Withdraw funds (with balance validation) 3. Account-to-account money transfers 4. View current balance & account details 5. View transaction history and bank statements The main issue I faced was as I just started learning python, I had issue in learning new things like cryptography and also the main problem and time taking process was Transaction history logic.", "repo": "https://github.com/gravityonmars/Bank-Management-System", "demo": "https://github.com/gravityonmars/Bank-Management-System/releases/download/v0.1.0/bank-management-system.exe"}]...
|
[{"post_id": 51820, "ts": "202 [{"post_id": 51820, "ts": "2026-08-21T17:43:22Z", "hours": 0.395, "text": "so I made a exe file for better demo of this project"}, {"post_id": 51731, "ts": "2026-08-21T15:49:04Z", "hours": 1.0492, "text": "Added some new features to the program (account to account transfer, transaction history)"}, {"post_id": 51673, "ts": "2026-08-21T14:05:25Z", "hours": 0.6939, "text": "Added Pin Encrypting Feature so that the user’s pin wont show in the database"}, {"post_id": 51553, "ts": "2026-08-21T10:13:33Z", "hours": 2.7267, "text": "Finished the major function like Create account, login, deposit and withdraw!!"}]...
|
Title: Bank Management System by @gravityonmars | Title: Bank Management System by @gravityonmars | Stardance
Devlogs:
Finished the major function like Create account, login, deposit and withdraw!!
Added Pin Encrypting Feature so that the user’s pin wont show in the database
Added some new features to the program (account to account transfer, transaction history)
so I made a exe file for better demo of this project
Ships:
Last 4-5 hours I spent building a CLI based Bank Management System with featuers: 1. Deposit funds 2. Withdraw funds (with balance validation) 3. Account-to-account money transfers 4. View current balance & account details 5. View transaction history and bank statements The main issue I faced was as I just started learning python, I had issue in learning new things like cryptography and also the main problem and time taking process was Transaction history logic....
|
1793224349.206999
|
1793310749.206999
|
|
52277
|
FreeOs by @tobias_pacal | Stardance
|
tobias_pacal
|
1
|
5.98
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T17:31:42Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I mede my Web os called Free os its so much base on windows (couse you need a subscription). You can check it you :3", "repo": "https://github.com/tobiawspac/Free-Os", "demo": "https://0729e9a3.freeos-10r.pages.dev/"}]...
|
[{"post_id": 55013, "ts": "202 [{"post_id": 55013, "ts": "2026-08-26T13:16:59Z", "hours": 1.8636, "text": "redo time for like the 100th time"}, {"post_id": 53632, "ts": "2026-08-24T08:43:48Z", "hours": 1.1186, "text": "recertification time"}, {"post_id": 52509, "ts": "2026-08-22T17:28:25Z", "hours": 0.7608, "text": "Now workyyyy"}, {"post_id": 52454, "ts": "2026-08-22T16:03:01Z", "hours": 1.4083, "text": "it brokyyy"}, {"post_id": 51619, "ts": "2026-08-21T12:19:14Z", "hours": 0.4475, "text": "got an working draft"}]...
|
Title: FreeOs by @tobias_pacal | Stardance
Devlog Title: FreeOs by @tobias_pacal | Stardance
Devlogs:
got an working draft
it brokyyy
Now workyyyy
recertification time
redo time for like the 100th time
Ships:
I mede my Web os called Free os its so much base on windows (couse you need a subscription). You can check it you :3...
|
1792882085.0095913
|
1793746085.0095913
|
|
52314
|
Idea → Business Maker by @KhTuran | Stardance
|
KhTuran
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T10:00:05Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Ai agent that takes your ideas and turns into the real business idea that you can read and use. because there are lots of people with ideas dont know where to start- this ai agent can help them. The challenging part was making sure that ai’s memory-it was forgetting the previous sentences. im proud of making my 2nd ai agent running on server. im making sure to learn new things every code sessions!", "repo": "https://github.com/Turanusok/idea-business-maker", "demo": "https://idea-business.duckdns.org"}]...
|
[{"post_id": 54353, "ts": "202 [{"post_id": 54353, "ts": "2026-08-25T09:41:19Z", "hours": 0.6394, "text": "finished the project! short but i enjoyed the journey,learning!"}, {"post_id": 53668, "ts": "2026-08-24T10:36:33Z", "hours": 1.3411, "text": "worked on html of the agent mainly. tested few times and the results are very great. so close to make it to real link"}, {"post_id": 52637, "ts": "2026-08-22T21:29:13Z", "hours": 1.5369, "text": "Hey yall. i just started to work on my second Ai agent after discovering stardance. im building a idea – to business. ai that reads your idea makes up prices,info, by searching around. the errors i got a lot was the ai just forget what i told in terminal window- i caught it was memory error instantly. still working on it - will make it a real link to check it out!!"}]...
|
Title: Idea → Business Maker by @KhTuran | Stardan Title: Idea → Business Maker by @KhTuran | Stardance
Devlogs:
Hey yall. i just started to work on my second Ai agent after discovering stardance. im building a idea – to business. ai that reads your idea makes up prices,info, by searching around. the errors i got a lot was the ai just forget what i told in terminal window- i caught it was memory error instantly. still working on it - will make it a real link to check it out!!
worked on html of the agent mainly. tested few times and the results are very great. so close to make it to real link
finished the project! short but i enjoyed the journey,learning!
Ships:
I made a Ai agent that takes your ideas and turns into the real business idea that you can read and use. because there are lots of people with ideas dont know where to start- this ai agent can help them. The challenging part was making sure that ai’s memory-it was forgetting the previous sentences. im proud of making my 2nd ai agent running on server. im making sure to learn new things every code sessions!...
|
1793238540.9390228
|
1793324940.9390228
|
|
52351
|
Obscure Exchange by @poepoepipi | Stardance
|
poepoepipi
|
1
|
5.0
|
30
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T10:52:06Z", "hours": 5.0, "multiplier": 5.63, "payout": 30, "blessing": "neutral", "text": "Disrupting the industry with our patented, decentralized, machine-learning-enhanced, edge-computing JSON blockchain solution. Obscure Exchange is a simple exchange rate calculator for unusual digital currencies and units. It has currencies like Stardust from StarDance, which I had to do some calculations for because I wanted to find its precise worth. It also has some other stuff that I threw in, so now you can convert boring currencies into your favorites, like Big Macs or even DDR4 RAM.", "repo": "https://github.com/poepoepipi/Obscure-Exchange", "demo": "https://poepoepipi.github.io/Obscure-Exchange/"}]...
|
[{"post_id": 52568, "ts": "202 [{"post_id": 52568, "ts": "2026-08-22T19:04:15Z", "hours": 0.8092, "text": "I finished the database and the README. I had to do some calculations, like determining the worth of Stardust with a lot of data points, and I threw in some other stuff too. This is definitely something that, when I am bored, I will just add stuff to since it was pretty fun to research all the stuff."}, {"post_id": 52381, "ts": "2026-08-22T14:29:51Z", "hours": 4.5461, "text": "I made this website that shows exchange rates for special, weird, and digital currencies instead of standard currencies. Right now, I’ve mainly focused on building the website itself. I made it so all the currency data is loaded from a JSON file, so adding or changing currencies will be easy. The only thing left to do is create the actual data file."}]...
|
Title: Obscure Exchange by @poepoepipi | Stardance Title: Obscure Exchange by @poepoepipi | Stardance
Devlogs:
I made this website that shows exchange rates for special, weird, and digital currencies instead of standard currencies. Right now, I’ve mainly focused on building the website itself. I made it so all the currency data is loaded from a JSON file, so adding or changing currencies will be easy. The only thing left to do is create the actual data file.
I finished the database and the README. I had to do some calculations, like determining the worth of Stardust with a lot of data points, and I threw in some other stuff too. This is definitely something that, when I am bored, I will just add stuff to since it was pretty fun to research all the stuff.
Ships:
Disrupting the industry with our patented, decentralized, machine-learning-enhanced, edge-computing JSON blockchain solution. Obscure Exchange is a simple exchange rate calculator for unusual digital currencies and units. It has currencies like Stardust from StarDance, which I had to do some calculations for because I wanted to find its precise worth. It also has some other stuff that I threw in, so now you can convert boring currencies into your favorites, like Big Macs or even DDR4 RAM....
|
1792882102.6078708
|
1793746102.6078708
|
|
52394
|
Warden: Agentic Windows Troubleshooter by @Aaryama Warden: Agentic Windows Troubleshooter by @Aaryaman | Stardance...
|
Aaryaman
|
1
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T14:37:21Z", "hours": 14.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an agentic system troubleshooter, the most challenging part of building this was probably the infinite windows errors which made it difficult to predefine the fixes for them. I am proud of the fact that you can install Warden from it’s demo website.", "repo": "https://github.com/genix2600/warden", "demo": "https://wardensys.vercel.app/"}]...
|
[{"post_id": 51684, "ts": "202 [{"post_id": 51684, "ts": "2026-08-21T14:33:51Z", "hours": 13.8103, "text": "This project is finally over and I regret forgetting to post devlogs about it. This is Warden: An agentic windows sytstem troubleshooter. I spent a week trying to think of an agentic tool which is original, everything I thought of had already been built. During the brainstorming phase, I ran into wifi problems which led me to think of building an agentic system troubleshooter for windows. I quickly wrote down the idea on a page and described it with as much detail as I could and then showed it to my friends. They loved the idea but worried about the feasibility, I assured them and said that it didn’t matter because the important thing is what you learn from it. I spent another week trying to brainstorm the features and the technical aspects and when we were ready, we all started building. After some time, we were ready with the first draft. It wasn’t great, the ui was very bad but it was a start. Soon after, we hired claude code and spent hours trying to debug and improve the badly written code in hopes of learning from our mistakes. This went on for some time. Eventually, the first version was ready and it passed all the tests. But, it still failed to actually troubleshoot real windows errors. In the end, we realized that with 0 funds and a team of 5 lazy students, it wasn’t possible to compete with the folks at microsoft who built the not so useful windows troubleshooter."}]...
|
Title: Warden: Agentic Windows Troubleshooter by @ Title: Warden: Agentic Windows Troubleshooter by @Aaryaman | Stardance
Devlogs:
This project is finally over and I regret forgetting to post devlogs about it. This is Warden: An agentic windows sytstem troubleshooter. I spent a week trying to think of an agentic tool which is original, everything I thought of had already been built. During the brainstorming phase, I ran into wifi problems which led me to think of building an agentic system troubleshooter for windows. I quickly wrote down the idea on a page and described it with as much detail as I could and then showed it to my friends. They loved the idea but worried about the feasibility, I assured them and said that it didn’t matter because the important thing is what you learn from it. I spent another week trying to brainstorm the features and the technical aspects and when we were ready, we all started building. After some time, we were ready with the first draft. It wasn’t great, the ui was very bad but it was a start. Soon after, we hired claude code and spent hours trying to debug and improve the badly written code in hopes of learning from our mistakes. This went on for some time. Eventually, the first version was ready and it passed all the tests. But, it still failed to actually troubleshoot real windows errors. In the end, we realized that with 0 funds and a team of 5 lazy students, it wasn’t possible to compete with the folks at microsoft who built the not so useful windows troubleshooter.
Ships:
I made an agentic system troubleshooter, the most challenging part of building this was probably the infinite windows errors which made it difficult to predefine the fixes for them. I am proud of the fact that you can install Warden from it’s demo website....
|
1793245755.6872134
|
1793332155.6872134
|
|
52397
|
printing legion bot by @itis | Stardance
|
itis
|
1
|
6.84
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T23:02:17Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Slack bot for #printing-legion that pings printers that are near the location of the request. It is able to fetch stl/step files to find its bounding box dimensions to be filtered by custom per printer filters. I also got beta testers to test, which is where I got some of these ideas. I speedran making this, so somehow, I made everything in 6 hours even though I’ve never made a slack bot.", "repo": "https://github.com/Heinrich-XIAO/printing-legion-bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0BS5HBEA73"}]...
|
[{"post_id": 54183, "ts": "202 [{"post_id": 54183, "ts": "2026-08-25T01:52:35Z", "hours": 0.5269, "text": "It is now more reliable, though it’ll still go down when hackai goes down and slack just stop responding every once in a while. It is now more clear in the testing guidelines, and I have improved the reliability of the region checking. I have also removed the feature where it checks for duplicates, as spam isn’t much of a problem (for now) and it makes testing hard."}, {"post_id": 53948, "ts": "2026-08-24T17:30:21Z", "hours": 0.31, "text": "I updated the readme with the required changes, and I also fixed the bug where it would say (undefined) if the printer didn’t specify filament stock."}, {"post_id": 53365, "ts": "2026-08-23T21:46:54Z", "hours": 2.8606, "text": "After some feedback from some beta testers, i found that people want dimension filters, since most post companies only accept mail under a certain set of dimentions, and mail is much cheaper than parcel, especially internationally. I wired everything up to threejs and occt and the github api and got the bounding box. Now, there is also a /add-custom-filter command, allowing you to restrict it to any arbitrary set of filters."}, {"post_id": 52723, "ts": "2026-08-23T01:25:04Z", "hours": 0.6325, "text": "I got it running on the server, but since most of my time was spent over ssh, that wasn’t captured by hackatime, but anyhow, it runs on the server now, and I also got a bunch of willing beta testers who are also printing for printing legion."}, {"post_id": 52053, "ts": "2026-08-22T03:00:22Z", "hours": 1.2111, "text": "I got the database working, and the bot probably almost completely works. There is now a /add-as-printer command where you can specify the region where your receiving prints, and it will only include those. I also got eslint setup and refactored the whole codebase. Next, I need to make and upload all the assets like the icons and stuff and make good documentation. Also, I applied for a best server and I’m waiting for approval."}, {"post_id": 51781, "ts": "2026-08-21T16:54:53Z", "hours": 1.3131, "text": "The bot is now able to parse print requests into a json schema using the hack club ai api. Currently the api is down, but it still kinda works with stealth models since they’re free, so right now, i’m using stealth/ox-alpha. I will switch to gpt oss 120b soon for speeeeeed. next, i’ll setup a json db (ik, eww, but it’s easier and im lazy) to store the requests."}]...
|
Title: printing legion bot by @itis | Stardance
D Title: printing legion bot by @itis | Stardance
Devlogs:
The bot is now able to parse print requests into a json schema using the hack club ai api. Currently the api is down, but it still kinda works with stealth models since they’re free, so right now, i’m using stealth/ox-alpha. I will switch to gpt oss 120b soon for speeeeeed. next, i’ll setup a json db (ik, eww, but it’s easier and im lazy) to store the requests.
I got the database working, and the bot probably almost completely works. There is now a /add-as-printer command where you can specify the region where your receiving prints, and it will only include those. I also got eslint setup and refactored the whole codebase. Next, I need to make and upload all the assets like the icons and stuff and make good documentation. Also, I applied for a best server and I’m waiting for approval.
I got it running on the server, but since most of my time was spent over ssh, that wasn’t captured by hackatime, but anyhow, it runs on the server now, and I also got a bunch of willing beta testers who are also printing for printing legion.
After some feedback from some beta testers, i found that people want dimension filters, since most post companies only accept mail under a certain set of dimentions, and mail is much cheaper than parcel, especially internationally. I wired everything up to threejs and occt and the github api and got the bounding box. Now, there is also a /add-custom-filter command, allowing you to restrict it to any arbitrary set of filters.
I updated the readme with the required changes, and I also fixed the bug where it would say (undefined) if the printer didn’t specify filament stock.
It is now more reliable, though it’ll still go down when hackai goes down and slack just stop responding every once in a while. It is now more clear in the testing guidelines, and I have improved the reliability of the region checking. I have also removed the feature where it checks for duplicates, as spam isn’t much of a problem (for now) and it makes testing hard.
Ships:
I made a Slack bot for #printing-legion that pings printers that are near the location of the request. It is able to fetch stl/step files to find its bounding box dimensions to be filtered by custom per printer filters. I also got beta testers to test, which is where I got some of these ideas. I speedran making this, so somehow, I made everything in 6 hours even though I’ve never made a slack bot....
|
1793245758.364949
|
1793332158.364949
|
|
52412
|
Desk Bud by @Afraz | Stardance
|
Afraz
|
1
|
7.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T10:39:13Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a a Small Cute Bot That Sit By Your Desk Side. It is Useful For Setting Alarms and Reminding oF Tasks Hardest Part Of The Entire Project was finding a box that would fit everything and actually look good, this was hard because i needed to find a random box as i couldnt make one as i dont have a 3d printer. ISNT IT CUTE :] ? lol", "repo": "https://github.com/afrazakbar/Desk-Bud", "demo": ""}]...
|
[{"post_id": 52438, "ts": "202 [{"post_id": 52438, "ts": "2026-08-22T15:41:17Z", "hours": 3.15, "text": "made the desk bot an enclosure, transfered the circuit from a breadboard to a perfboard, mounted stuff in the enclosure and testing and a heck lot of debugging, main issues were: components not fitting in the enclosure, oled glitching out, power issues etc."}, {"post_id": 51765, "ts": "2026-08-21T16:35:34Z", "hours": 0.9642, "text": "trial and error(mostly errors) OF TRYNA FIT IT INTO A BOX, i first got like 3 boxes they were all too big and janky, so i took a small box and added some foam board inside to make it sturdy, then i failed as the ESP32 wont fit in the box and i just felt tired so i left it for the next day"}, {"post_id": 51691, "ts": "2026-08-21T14:49:36Z", "hours": 3.0267, "text": "Desk Bud Work In Progress Desk Bud is a desk bot that sits on your desks and helps you complete your tasks, set alarms and to just look cute, (it is supposed to resemble something like an elmo)"}]...
|
Title: Desk Bud by @Afraz | Stardance
Devlogs:
De Title: Desk Bud by @Afraz | Stardance
Devlogs:
Desk Bud Work In Progress Desk Bud is a desk bot that sits on your desks and helps you complete your tasks, set alarms and to just look cute, (it is supposed to resemble something like an elmo)
trial and error(mostly errors) OF TRYNA FIT IT INTO A BOX, i first got like 3 boxes they were all too big and janky, so i took a small box and added some foam board inside to make it sturdy, then i failed as the ESP32 wont fit in the box and i just felt tired so i left it for the next day
made the desk bot an enclosure, transfered the circuit from a breadboard to a perfboard, mounted stuff in the enclosure and testing and a heck lot of debugging, main issues were: components not fitting in the enclosure, oled glitching out, power issues etc.
Ships:
I made a a Small Cute Bot That Sit By Your Desk Side. It is Useful For Setting Alarms and Reminding oF Tasks Hardest Part Of The Entire Project was finding a box that would fit everything and actually look good, this was hard because i needed to find a random box as i couldnt make one as i dont have a 3d printer. ISNT IT CUTE :] ? lol...
|
1793249367.064026
|
1793335767.064026
|
|
52434
|
Chatbot by @aliraza | Stardance
|
aliraza
|
1
|
37.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-04T06:51:46Z", "hours": 37.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made Sylqora AI, a study companion that helps students understand topics, practice with quizzes and flashcards and ask question about study material. The PDFs gave me PTSD especially scanned PDFs that needed OCR. Getting AI responses to stream also was a lot of debugging. In the end I did manage to turn idea into working app with advanced AI features like PDF uploads, OCR, quizzes, flashcards, streaming messages and chat history. Try asking Sylqora a study question, then try Explain mode, Flashcards, Quiz mode. You can also upload PDF and ask about it but length should be 3 pages and less", "repo": "https://github.com/aliraza-glitch/Sylqora.AI", "demo": "https://sylqora-2tjpakhfw-aliraza-glitch.vercel.app/"}]...
|
[{"post_id": 76376, "ts": "202 [{"post_id": 76376, "ts": "2026-10-03T10:37:26Z", "hours": 0.9631, "text": "OK so I improved the main chattin page. It looked plain before but now mwah. I added a subtle purple glow behing the welcome text and also fixed some scaling problems. The structure of entire CSS file was changed to :root since it is more convinient and easy to handle. I made the send button glow rather than stay rigid purple. Also the sidebar was fixed too.I also added mobile responsiveness. Check it out at https://sylqora-b80j2x291-aliraza-glitch.vercel.app/"}, {"post_id": 76333, "ts": "2026-10-03T07:22:13Z", "hours": 0.2978, "text": "Fixed the mobile responsiveness, The about section cards were leaking out making them look messy and get started button was weird overall page composition was trash and not good at all so I fixed it for mobile users. Try it out at https://sylqora-6eww0xam9-aliraza-glitch.vercel.app/"}, {"post_id": 76229, "ts": "2026-10-02T19:31:48Z", "hours": 2.7119, "text": "I prettied up the landing page. Sylqora is now getting it’s finishing touches. Just aesthetic really! I converted the landing page from previous flat version of it to a more sleek, modern and professional version using advanced CSS concepts like :root etc. The landing page is fully purple themed and I also changed size of texts at different places and gave a glow behind main heading. The nav bar is transparent glass type and the get started button is also much much better. But it still looks ugly on phone so I will fix that tomorrow I mean I am writing this at midnight. The overall landing page is so cool but who am I to brag check it out for yourselves on desktop at https://sylqora-evmi55cgw-aliraza-glitch.vercel.app/"}, {"post_id": 74891, "ts": "2026-09-28T15:09:11Z", "hours": 2.2025, "text": "I enabled streaming in the request of Sylqora so now the messages are streamed instead of a block just appearing on the screen. which means that it now generates responses in real time. I changed the front end and backend to handle streaming. I also added an Abort Controller which means that user can cancel their requests. Try Sylqora yourself at https://sylqora-78fvmrxhz-aliraza-glitch.vercel.app/"}, {"post_id": 70810, "ts": "2026-09-19T19:55:57Z", "hours": 2.0689, "text": "I am excited to announce that Sylqora can now read text files uploaded to it and answer questions related to it. The attach file button is a paperclip but there are limitation such as the content should be plain text and not a scanned image or OCR. Pdf with text only can be read and well processed by Sylqora. File chip showing file’s name and the ability to cancel the upload is also included. I am planning on connecting ability to read files in modes such as quiz mode and explain mode so it doesn’t just sit there. It is also possible that I add the feature to read OCR and scanned image. I will also make the input bar sticky so it doesn’t get lost while scrolling. Check Sylqora out at https://sylqora-cod6nfhx5-aliraza-glitch.vercel.app/"}, {"post_id": 68575, "ts": "2026-09-15T10:38:29Z", "hours": 1.5392, "text": "Improved the UI and UX so much and its 100 times better. The annoying sidebar is now closable like a drawer. The Bot message bubble is gone and now it only shows clean text on screen which looks neat and aesthetic. I also learned about SVG and implemented it which took most of my time. The SVG is just too complex but I got the hang of it. The sidebar open and close icons are SVG. I also improved the way it renders equations. I also coded it to keep response length reasonable and short. The 3 modes work very fine. I also added responsiveness for phones and now Mobile phone users can also use Sylqora without a crashing interface. Try it yourself at https://sylqora-2g4j7b8o9-aliraza-glitch.vercel.app/"}, {"post_id": 66396, "ts": "2026-09-12T06:41:11Z", "hours": 1.5786, "text": "Ok so I just finished making Flashcard mode. Once the user clicks on the flashcard mode on the suggestions menu, Sylqora asks in input place name of the topic and once topic name is entered, the flashcards are generated. The proportions of the flashcard mimick the actual card. The Reveal Answer button is also present to check whether you remember or forgot. The Next Card button generates Next flash card not same as previous one. While a card is being generated, a neat Loading Card message is shown on a screen. It’s literally a banger get amongst it! https://sylqora-rcf3kmb64-aliraza-glitch.vercel.app/"}, {"post_id": 66089, "ts": "2026-09-11T17:45:29Z", "hours": 1.4408, "text": "So I refined the Quiz mode even more. Explain Mode was also upgraded. The topic heading of Explain Mode. And termination of Explain mode once another chat is opened. Explained paragraph is also well formatted since I enhanced markdown even more like It is so neat and professional. I also increased max tokens and restricted the LaTex notation making the ## and – appear in responses. Explain Mode is finished. I am now making flashcards mode. Try it on https://sylqora-e1txs56h0-aliraza-glitch.vercel.app/"}, {"post_id": 63646, "ts": "2026-09-07T15:51:41Z", "hours": 1.4519, "text": "Made the heading for Quiz mode It only asks 5 questions. The heading appears up showing topic of quiz when it is in quizmode and keeps locked in place until 5 questions are asked and then displays score and heading is gone too. Going to the New Chat disbles the quiz mode. Try it yourself at https://sylqora-o6vwi4ha6-aliraza-glitch.vercel.app/"}, {"post_id": 63045, "ts": "2026-09-06T16:50:47Z", "hours": 1.4414, "text": "I added a feature for sidebar to change height incase of large messages by user to improve readability. I also made the Quiz mode. Once the quiz mode is pressed, It asks on the placeholder what topic should the quiz be on. So user just names the topic and sends and the rest of the prompt is generated automatically and sent. I also modified the Quiz mode. It can now ask you 5 questions in a quiz and tells you the score for the quiz. Check it out at https://sylqora-f0r4pa9ur-aliraza-glitch.vercel.app/"}, {"post_id": 62260, "ts": "2026-09-05T15:26:44Z", "hours": 0.3106, "text": "Finished Sylqora version 1. Had to give final touches to the bot such as the Sylqora is thinking was light mode whereas rest of the site is dark mode so I just changed the message’s theme. Also changed number of max tokens again. Gave the feature of highlight current chat in the sidebar so user isn’t confused. Also handled the chats overflow and title overflow in the sidebar. Try Sylqora at https://sylqora-fd08yehag-aliraza-glitch.vercel.app/"}, {"post_id": 62174, "ts": "2026-09-05T13:10:43Z", "hours": 2.3347, "text": "Done styling the chat box. I realized it was way too plain and boring. But now everything is alive. I changed the send button to an arrow. Added heading and subtitle in the sidebar. Improved the New Chat button. I also created a welcome screen that comes with options. If you click on Explain me a topic it automatically types “Explain “ and you have to complete it with what ever you want same goes with with Quiz me one. I also changed the input to a proper professional Chatgpt style input area. I also changed the dimensions of messages so that it looks like a dialogue box rather than a rectangle. I thought that was all true but then script.js threw a barrage of errors. One time it would load previous chat’s response in New chat. Then it just stopped working. Then I realized I was running activechatid before autosave which ruined the whole program and caused the message to not render on the screen. Test Sylqora yourself at https://sylqora-l9bzpy2gn-aliraza-glitch.vercel.app/"}, {"post_id": 61783, "ts": "2026-09-04T21:11:33Z", "hours": 2.3183, "text": "I added a sidebar and made it so that it can start a new chat and switch between chats. Not as complex and hellish but wasn’t easy either. The clickable chats and resolving errors was a major change. I also learned a lot in this such as duplication of an array, dealing with localStorage, pushing the right objects and elements into the functions. Overall a great session I’d say. Try it yourself at https://sylqora-qle4c0c7x-aliraza-glitch.vercel.app/"}, {"post_id": 60874, "ts": "2026-09-03T14:58:54Z", "hours": 1.3014, "text": "I have done giving Sylqora memory. Now it doesn’t just forget what you just told it and keep greeting you like a very smart person. Something funny also happened. I kept debugging and writing code so confused what was wrong. The landing page opened but when I clicked on Get Started it just didn’t have memory when tested. So then I realised that Get Started was pointing to older version of Sylqora and URL wasn’t refreshed to newer version so I then linked it to app.html and boooom it worked!"}, {"post_id": 60449, "ts": "2026-09-02T19:45:12Z", "hours": 1.8067, "text": "Ok i finished the landing page, improved nav bar, made it so that the links in navbar lead to the sections. I also added the feature that animation of the features and about section is triggered only when user scrolls down to them. I also added animations for hero section and navbar and now it looks so cool"}, {"post_id": 59579, "ts": "2026-09-01T14:14:50Z", "hours": 1.625, "text": "I just made the landing page for Sylqora so that user first lands on the page and then when Get Started is clicked, it leads to the main app. I made use of all the CSS knowledge I possessed and managed to make it and it was the easiest thing I ever did for Sylqora. You can look at the website at https://aliraza-glitch.github.io/Sylqora.AI/"}, {"post_id": 59081, "ts": "2026-08-31T18:07:48Z", "hours": 2.5072, "text": "So I cleaned up all the coded mess. Sylqora is now intelligent and has a personality. The textContent was changed to innerHTML and the model was also changed. I also changed the UI and added a Sylqora is thinking box. I removed the Check Server button Since it was annoying and unnecessary. The inner HTML part was difficult. The HTML escaping and Markdown parsing were easy to understand but difficult to write. Also I had to deal with Sylqora just dumping infomation and unnecessary gibberish by limiting max tokens to 400 and also begged it in the role to not give unnecessary details. Do try Sylqora and tell how good it is in the comments. Sylqora is live at https://sylqora-b5h77ipua-aliraza-glitch.vercel.app/"}, {"post_id": 57976, "ts": "2026-08-30T09:44:58Z", "hours": 0.8425, "text": "Finally! It can recieve and reply. A major milestone. I used Groq API key and vercel. The coding wasn’t much but dealing with errors again and again was very discouraging but in the end I updated the script.js and got it right. But still needs work with formatting the messages, UI and giving it a personality. Test Sylqora yourself at https://sylqora-5w8pp1mrn-aliraza-glitch.vercel.app/"}, {"post_id": 57472, "ts": "2026-08-29T17:00:00Z", "hours": 2.1475, "text": "Pure sweat and blood for deployment of Sylqora AI like using vercel for this was so confusing. Although the code is a mess and way too unorgainzed but it did work. I changed the structure and stuff so vercel can run it and now the backend is live. Though the logic and responses are almost the same but we are getting close to adding API key. Anyways Sylqora is live at https://sylqora-ai-git-master-aliraza-glitch.vercel.app/ only ask questions containg acceleration, momenum and hello and what in lower case only"}, {"post_id": 53185, "ts": "2026-08-23T16:58:35Z", "hours": 2.1283, "text": "Today was HELL! It was so confusing and frustrating the front and backend were so humiliating. I was literally in tears referring again and again to tutorials. Anyways, I made a front end that only sends message to backend, a backend at a local host. Today theory and understanding took most of the time making me dizzy. I learned a lot of new things such as JSON, headers, stringify, await, async, fetch, req and res along with HTTP server making, making CORS and connecting frontend and backend. Right now the immediate issue is [object Object] is printed whenever write anything. No actual AI responds but the terminal is smart enough to show me what I typed so I guess that’s it for today."}, {"post_id": 52336, "ts": "2026-08-22T13:23:03Z", "hours": 1.2025, "text": "Today was a hassle. I just kept experimenting with stuff and learned about a lot of new things in JavaScript. At first I made it so it only answer commands word to word. But then I made the user input case insensitive and then I used includes function. It also has some sarcasm making it feel less like a teacher and more like a study buddy. For testing it, the acceptance data includes acceleration, momentum and hello greeting. It doesn’t have an API integration yet but that is something I will be working on in the near future. The bot is live at https://aliraza-glitch.github.io/Sylqora.AI/"}, {"post_id": 51728, "ts": "2026-08-21T15:40:51Z", "hours": 2.8689, "text": "I just made a User Interface for study companion “Sylqora” using HTML, CSS and I also wrote the function for sending messages in Java Script. Though the CSS part was way too frustrating but it is solved now"}]...
|
Title: Chatbot by @aliraza | Stardance
Devlogs:
I Title: Chatbot by @aliraza | Stardance
Devlogs:
I just made a User Interface for study companion “Sylqora” using HTML, CSS and I also wrote the function for sending messages in Java Script. Though the CSS part was way too frustrating but it is solved now
Today was a hassle. I just kept experimenting with stuff and learned about a lot of new things in JavaScript. At first I made it so it only answer commands word to word. But then I made the user input case insensitive and then I used includes function. It also has some sarcasm making it feel less like a teacher and more like a study buddy. For testing it, the acceptance data includes acceleration, momentum and hello greeting. It doesn’t have an API integration yet but that is something I will be working on in the near future. The bot is live at https://aliraza-glitch.github.io/Sylqora.AI/
Today was HELL! It was so confusing and frustrating the front and backend were so humiliating. I was literally in tears referring again and again to tutorials. Anyways, I made a front end that only sends message to backend, a backend at a local host. Today theory and understanding took most of the time making me dizzy. I learned a lot of new things such as JSON, headers, stringify, await, async, fetch, req and res along with HTTP server making, making CORS and connecting frontend and backend. Right now the immediate issue is [object Object] is printed whenever write anything. No actual AI responds but the terminal is smart enough to show me what I typed so I guess that’s it for today.
Pure sweat and blood for deployment of Sylqora AI like using vercel for this was so confusing. Although the code is a mess and way too unorgainzed but it did work. I changed the structure and stuff so vercel can run it and now the backend is live. Though the logic and responses are almost the same but we are getting close to adding API key. Anyways Sylqora is live at https://sylqora-ai-git-master-aliraza-glitch.vercel.app/ only ask questions containg acceleration, momenum and hello and what in lower case only
Finally! It can recieve and reply. A major milestone. I used Groq API key and vercel. The coding wasn’t much but dealing with errors again and again was very discouraging but in the end I updated the script.js and got it right. But still needs work with formatting the messages, UI and giving it a personality. Test Sylqora yourself at https://sylqora-5w8pp1mrn-aliraza-glitch.vercel.app/
So I cleaned up all the coded mess. Sylqora is now intelligent and has a personality. The textContent was changed to innerHTML and the model was also changed. I also changed the UI and added a Sylqora is thinking box. I removed the Check Server button Since it was annoying and unnecessary. The inner HTML part was difficult. The HTML escaping and Markdown parsing were easy to understand but difficult to write. Also I had to deal with Sylqora just dumping infomation and unnecessary gibberish by limiting max tokens to 400 and also begged it in the role to not give unnecessary details. Do try Sylqora and tell how good it is in the comments. Sylqora is live at https://sylqora-b5h77ipua-aliraza-glitch.vercel.app/
I just made the landing page for Sylqora so that user first lands on the page and then when Get Started is clicked, it leads to the main app. I made use of all the CSS knowledge I possessed and managed to make it and it was the easiest thing I ever did for Sylqora. You can look at the website at https://aliraza-glitch.github.io/Sylqora.AI/
Ok i finished the landing page, improved nav bar, made it so that the links in navbar lead to the sections. I also added the feature that animation of the features and about section is triggered only when user scrolls down to them. I also added animations for hero section and navbar and now it looks so cool
I have done giving Sylqora memory. Now it doesn’t just forget what you just told it and keep greeting you like a very smart person. Something funny also happened. I kept debugging and writing code so confused what was wrong. The landing page opened but when I clicked on Get Started it just didn’t have memory when tested. So then I realised that Get Started was pointing to older version of Sylqora and URL wasn’t refreshed to newer version so I then linked it to app.html and boooom it worked!
I added a sidebar and made it so that it can start a new chat and switch between chats. Not as complex and hellish but wasn’t easy either. The clickable chats and resolving errors was a major change. I also learned a lot in this such as duplication of an array, dealing with localStorage, pushing the right objects and elements into the functions. Overall a great session I’d say. Try it yourself at https://sylqora-qle4c0c7x-aliraza-glitch.vercel.app/
Done styling the chat box. I realized it was way too plain and boring. But now everything is alive. I changed the send button to an arrow. Added heading and subtitle in the sidebar. Improved the New Chat button. I also created a welcome screen that comes with options. If you click on Explain me a topic it automatically types “Explain “ and you have to complete it with what ever you want same goes with with Quiz me one. I also changed the input to a proper professional Chatgpt style input area. I also changed the dimensions of messages so that it looks like a dialogue box rather than a rectangle. I thought that was all true but then script.js threw a barrage of errors. One time it would load previous chat’s response in New chat. Then it just stopped working. Then I realized I was running activechatid before autosave which ruined the whole program and caused the message to not render on the screen. Test Sylqora yourself at https://sylqora-l9bzpy2gn-aliraza-glitch.vercel.app/
Finished Sylqora version 1. Had to give final touches to the bot such as the Sylqora is thinking was light mode whereas rest of the site is dark mode so I just changed the message’s theme. Also changed number of max tokens again. Gave the feature of highlight current chat in the sidebar so user isn’t confused. Also handled the chats overflow and title overflow in the sidebar. Try Sylqora at https://sylqora-fd08yehag-aliraza-glitch.vercel.app/
I added a feature for sidebar to change height incase of large messages by user to improve readability. I also made the Quiz mode. Once the quiz mode is pressed, It asks on the placeholder what topic should the quiz be on. So user just names the topic and sends and the rest of the prompt is generated automatically and sent. I also modified the Quiz mode. It can now ask you 5 questions in a quiz and tells you the score for the quiz. Check it out at https://sylqora-f0r4pa9ur-aliraza-glitch.vercel.app/
Made the heading for Quiz mode It only asks 5 questions. The heading appears up showing topic of quiz when it is in quizmode and keeps locked in place until 5 questions are asked and then displays score and heading is gone too. Going to the New Chat disbles the quiz mode. Try it yourself at https://sylqora-o6vwi4ha6-aliraza-glitch.vercel.app/
So I refined the Quiz mode even more. Explain Mode was also upgraded. The topic heading of Explain Mode. And termination of Explain mode once another chat is opened. Explained paragraph is also well formatted since I enhanced markdown even more like It is so neat and professional. I also increased max tokens and restricted the LaTex notation making the ## and – appear in responses. Explain Mode is finished. I am now making flashcards mode. Try it on https://sylqora-e1txs56h0-aliraza-glitch.vercel.app/
Ok so I just finished making Flashcard mode. Once the user clicks on the flashcard mode on the suggestions menu, Sylqora asks in input place name of the topic and once topic name is entered, the flashcards are generated. The proportions of the flashcard mimick the actual card. The Reveal Answer button is also present to check whether you remember or forgot. The Next Card button generates Next flash card not same as previous one. While a card is being generated, a neat Loading Card message is shown on a screen. It’s literally a banger get amongst it! https://sylqora-rcf3kmb64-aliraza-glitch.vercel.app/
Improved the UI and UX so much and its 100 times better. The annoying sidebar is now closable like a drawer. The Bot message bubble is gone and now it only shows clean text on screen which looks neat and aesthetic. I also learned about SVG and implemented it which took most of my time. The SVG is just too complex but I got the hang of it. The sidebar open and close icons are SVG. I also improved the way it renders equations. I also coded it to keep response length reasonable and short. The 3 modes work very fine. I also added responsiveness for phones and now Mobile phone users can also use Sylqora without a crashing interface. Try it yourself at https://sylqora-2g4j7b8o9-aliraza-glitch.vercel.app/
I am excited to announce that Sylqora can now read text files uploaded to it and answer questions related to it. The attach file button is a paperclip but there are limitation such as the content should be plain text and not a scanned image or OCR. Pdf with text only can be read and well processed by Sylqora. File chip showing file’s name and the ability to cancel the upload is also included. I am planning on connecting ability to read files in modes such as quiz mode and explain mode so it doesn’t just sit there. It is also possible that I add the feature to read OCR and scanned image. I will also make the input bar sticky so it doesn’t get lost while scrolling. Check Sylqora out at https://sylqora-cod6nfhx5-aliraza-glitch.vercel.app/
I enabled streaming in the request of Sylqora so now the messages are streamed instead of a block just appearing on the screen. which means that it now generates responses in real time. I changed the front end and backend to handle streaming. I also added an Abort Controller which means that user can cancel their requests. Try Sylqora yourself at https://sylqora-78fvmrxhz-aliraza-glitch.vercel.app/
I prettied up the landing page. Sylqora is now getting it’s finishing touches. Just aesthetic really! I converted the landing page from previous flat version of it to a more sleek, modern and professional version using advanced CSS concepts like :root etc. The landing page is fully purple themed and I also changed size of texts at different places and gave a glow behind main heading. The nav bar is transparent glass type and the get started button is also much much better. But it still looks ugly on phone so I will fix that tomorrow I mean I am writing this at midnight. The overall landing page is so cool but who am I to brag check it out for yourselves on desktop at https://sylqora-evmi55cgw-aliraza-glitch.vercel.app/
Fixed the mobile responsiveness, The about section cards were leaking out making them look messy and get started button was weird overall page composition was trash and not good at all so I fixed it for mobile users. Try it out at https://sylqora-6eww0xam9-aliraza-glitch.vercel.app/
OK so I improved the main chattin page. It looked plain before but now mwah. I added a subtle purple glow behing the welcome text and also fixed some scaling problems. The structure of entire CSS file was changed to :root since it is more convinient and easy to handle. I made the send button glow rather than stay rigid purple. Also the sidebar was fixed too.I also added mobile responsiveness. Check it out at https://sylqora-b80j2x291-aliraza-glitch.vercel.app/
Ships:
I made Sylqora AI, a study companion that helps students understand topics, practice with quizzes and flashcards and ask question about study material. The PDFs gave me PTSD especially scanned PDFs that needed OCR. Getting AI responses to stream also was a lot of debugging. In the end I did manage to turn idea into working app with advanced AI features like PDF uploads, OCR, quizzes, flashcards, streaming messages and chat history. Try asking Sylqora a study question, then try Explain mode, Flashcards, Quiz mode. You can also upload PDF and ask about it but length should be 3 pages and less...
|
1793152266.9744928
|
1793238666.9744928
|
|
52444
|
Block Reality by @rocky59487 | Stardance
|
rocky59487
|
1
|
4.97
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T14:45:25Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "During stardance, I built the public website for block reality,an early Minecraft structural analysis mod. The site explain how the project give blocks force 。", "repo": "https://github.com/rocky59487/block-reality", "demo": "https://rocky59487.github.io/block-reality-site/"}]...
|
[{"post_id": 58767, "ts": "202 [{"post_id": 58767, "ts": "2026-08-31T10:26:30Z", "hours": 0.2725, "text": "Block Reality mod is now live on CurseForge!"}, {"post_id": 57271, "ts": "2026-08-29T11:40:48Z", "hours": 0.6989, "text": "Finished v0.3b!"}, {"post_id": 52387, "ts": "2026-08-22T14:37:57Z", "hours": 0.9769, "text": "Add the install tutorial"}, {"post_id": 52284, "ts": "2026-08-22T12:16:49Z", "hours": 2.9161, "text": "I made the first version of the Block Reality website today. I started with Mimo and some HTML/CSS tutorials, then went back to the site and changed the structure, spacing, and styling myself. I finally understand the basic relationship: HTML decides what is on the page, and CSS decides how it looks, so I can now make simple pages and edits without relying on generated code for everything. The JavaScript visual effects were generated with Gemini; JS is still outside my current skill level, while I integrated and tested the result. The site and this first devlog are now online: https://rocky59487.github.io/block-reality-site/ Next I want to improve the mobile layout and learn enough JavaScript to change the effects myself."}]...
|
Title: Block Reality by @rocky59487 | Stardance
D Title: Block Reality by @rocky59487 | Stardance
Devlogs:
I made the first version of the Block Reality website today. I started with Mimo and some HTML/CSS tutorials, then went back to the site and changed the structure, spacing, and styling myself. I finally understand the basic relationship: HTML decides what is on the page, and CSS decides how it looks, so I can now make simple pages and edits without relying on generated code for everything. The JavaScript visual effects were generated with Gemini; JS is still outside my current skill level, while I integrated and tested the result. The site and this first devlog are now online: https://rocky59487.github.io/block-reality-site/ Next I want to improve the mobile layout and learn enough JavaScript to change the effects myself.
Add the install tutorial
Finished v0.3b!
Block Reality mod is now live on CurseForge!
Ships:
During stardance, I built the public website for block reality,an early Minecraft structural analysis mod. The site explain how the project give blocks force 。...
|
1793249421.7709012
|
1793335821.7709012
|
|
52450
|
mix it fix it by @Tallurisaikumar | Stardance
|
Tallurisaikumar
|
1
|
13.0
|
100
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T06:22:44Z", "hours": 13.0, "multiplier": 7.96, "payout": 100, "blessing": "neutral", "text": "I made a puzzle sliding game called “mix it. fix it.” where the user can choose a random image or insert his/her image and make it into a puzzle which he/she can solve it by moving the pieces into their correct position. I included some extra features like streaks, XP, levels, coins, missions, hints, undo, personal best, pause/restart, dark mode, keyboard, and mobile controls. What were the challenges? The most challenging part was to make the mechanics of the game work correctly. Every piece has to move only when it is next to the empty slot, and to test it all out on different sizes, like 5×5, 6×6, 7×7 to see if it worked. Another challenge was to make it compatible for both mobile and pc because their controls are different. What are you most proud of? I’m most proud of turning the project into something “real,” that makes it feel like an actual small game and not just a demo sliding puzzle experiment. Having XP, streaks, missions, hints, personal best, and puzzle sizes all make the game feel more complete, like a real game that makes you want to play more. Another thing that I am proud of is that the user can insert his/her photo into the game which creates a unique experience. What feedback would you give to other testers? First, I recommend to try a 2×2 puzzle first to get used to the controls. Tap/click on the piece that is next to the empty slot to move it there. After getting used to it, you can try bigger sizes like 4×4, 5×5, etc. Also, you can: -insert your own image, try different sizes of puzzles, hit the hint button when you are stuck, press undo to go back to your previous move, try keyboard controls, test on mobile if you have one, and try to beat your personal best! 💪 Pro tip: the bigger the size is, the harder it is!", "repo": "https://github.com/tallurisai9346-beep/Mix-it-Fix-it", "demo": "https://mix-it-fix-it.vercel.app/"}]...
|
[{"post_id": 52113, "ts": "202 [{"post_id": 52113, "ts": "2026-08-22T06:11:21Z", "hours": 0.3853, "text": "finally my game complete"}, {"post_id": 52081, "ts": "2026-08-22T04:47:27Z", "hours": 0.9117, "text": "my game complet"}, {"post_id": 52054, "ts": "2026-08-22T03:05:13Z", "hours": 6.4922, "text": "add this like bord size,and levels"}, {"post_id": 51850, "ts": "2026-08-21T18:32:28Z", "hours": 0.7711, "text": "now my main some complete out put is very good"}, {"post_id": 51747, "ts": "2026-08-21T16:01:12Z", "hours": 3.9742, "text": "my new project now name is mix it fix it game i typing html now"}]...
|
Title: mix it fix it by @Tallurisaikumar | Stardan Title: mix it fix it by @Tallurisaikumar | Stardance
Devlogs:
my new project now name is mix it fix it game i typing html now
now my main some complete out put is very good
add this like bord size,and levels
my game complet
finally my game complete
Ships:
I made a puzzle sliding game called “mix it. fix it.” where the user can choose a random image or insert his/her image and make it into a puzzle which he/she can solve it by moving the pieces into their correct position. I included some extra features like streaks, XP, levels, coins, missions, hints, undo, personal best, pause/restart, dark mode, keyboard, and mobile controls. What were the challenges? The most challenging part was to make the mechanics of the game work correctly. Every piece has to move only when it is next to the empty slot, and to test it all out on different sizes, like 5×5, 6×6, 7×7 to see if it worked. Another challenge was to make it compatible for both mobile and pc because their controls are different. What are you most proud of? I’m most proud of turning the project into something “real,” that makes it feel like an actual small game and not just a demo sliding puzzle experiment. Having XP, streaks, missions, hints, personal best, and puzzle sizes all make the game feel more complete, like a real game that makes you want to play more. Another thing that I am proud of is that the user can insert his/her photo into the game which creates a unique experience. What feedback would you give to other testers? First, I recommend to try a 2×2 puzzle first to get used to the controls. Tap/click on the piece that is next to the empty slot to move it there. After getting used to it, you can try bigger sizes like 4×4, 5×5, etc. Also, you can: -insert your own image, try different sizes of puzzles, hit the hint button when you are stuck, press undo to go back to your previous move, try keyboard controls, test on mobile if you have one, and try to beat your personal best! 💪 Pro tip: the bigger the size is, the harder it is!...
|
1792875258.8018405
|
1793739258.8018405
|
|
52457
|
WebOS X1 by @Cosmic | Stardance
|
Cosmic
|
1
|
1.43
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T18:57:46Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "made it for webos1 after this is approved I can finally start with WebOs 2 mission so I can start with different type of Os I took the idea I bit from macos", "repo": "https://github.com/Arhan-collab/automatic-couscous", "demo": "https://arhan-collab.github.io/automatic-couscous/"}]...
|
[{"post_id": 52117, "ts": "202 [{"post_id": 52117, "ts": "2026-08-22T06:29:25Z", "hours": 0.4336, "text": "Added another panel and also working terminal I dont know why it my hackatime doesnt really load my time properly but yea"}, {"post_id": 51865, "ts": "2026-08-21T18:55:17Z", "hours": 0.2667, "text": "Added functional clock"}, {"post_id": 51831, "ts": "2026-08-21T18:05:05Z", "hours": 0.2711, "text": "Done cuz Ai helped me improve my code"}, {"post_id": 51815, "ts": "2026-08-21T17:37:04Z", "hours": 0.3544, "text": "started with html almost completed"}]...
|
Title: WebOS X1 by @Cosmic | Stardance
Devlogs:
s Title: WebOS X1 by @Cosmic | Stardance
Devlogs:
started with html almost completed
Done cuz Ai helped me improve my code
Added functional clock
Added another panel and also working terminal I dont know why it my hackatime doesnt really load my time properly but yea
Ships:
made it for webos1 after this is approved I can finally start with WebOs 2 mission so I can start with different type of Os I took the idea I bit from macos...
|
1793253055.8959427
|
1793339455.8959427
|
|
52472
|
developer_56 by @developergaurav56 | Stardance
|
developergaurav56
|
1
|
1.28
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T06:22:19Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "THIS IS MY FIRST INTRODUCTION WEBSITE LIVE! ON https://developer-56.onrender.com/ PLEASE CHECK OUT!! THIS WEBSITE IS INSPIRED FROM RETRO GAMES IT TOOKED ME 2 DAYS TO MAKE THIS WEBSITE I USED OPENCLAW WITH GPT5.6 LUNA FOR PUSHING THE CODE TO GITHUB AND FOR MAKING README.", "repo": "https://github.com/Developer-Gaurav-dev/developer_56", "demo": "https://developer-56.onrender.com/"}]...
|
[{"post_id": 58765, "ts": "202 [{"post_id": 58765, "ts": "2026-08-31T10:22:15Z", "hours": 0.2844, "text": "Small Start Again …"}, {"post_id": 52500, "ts": "2026-08-22T17:19:34Z", "hours": 0.2781, "text": "How’s the Ui Guys??"}, {"post_id": 52414, "ts": "2026-08-22T15:22:27Z", "hours": 0.265, "text": "Working on Portfolio…"}]...
|
Title: developer_56 by @developergaurav56 | Starda Title: developer_56 by @developergaurav56 | Stardance
Devlogs:
Working on Portfolio…
How’s the Ui Guys??
Small Start Again …
Ships:
THIS IS MY FIRST INTRODUCTION WEBSITE LIVE! ON https://developer-56.onrender.com/ PLEASE CHECK OUT!! THIS WEBSITE IS INSPIRED FROM RETRO GAMES IT TOOKED ME 2 DAYS TO MAKE THIS WEBSITE I USED OPENCLAW WITH GPT5.6 LUNA FOR PUSHING THE CODE TO GITHUB AND FOR MAKING README....
|
1793253058.6435378
|
1793339458.6435378
|
|
52478
|
Sheety by @manayp | Stardance
|
manayp
|
1
|
10.0
|
182
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-25T18:07:20Z", "hours": 10.0, "multiplier": 18.11, "payout": 182, "blessing": "neutral", "text": "Sheety is basically a browser sheet music web application. You can click piano keys or hum into your microphone, and you can watch the notes appear on a actual staff which plays the tune back based on what you picked. No frameworks and no dependencies and it is just ONE HTML file with around 900 lines of code mixed with css and js. I had various challenges with javascript because it was very complex based on what I wanted to do but I learned how to do it on youtube and ai and I did most of it but claude still had to assist me with the more complex stuff. I am proud of this idea especially the background because it was not preplanned and I kept changing it and finally I got my last chosen one that I picked which was a blue icy sort of background. So overall I love that part and I am super proud of that because honestly it was not easy for me. Overall I had an amazing time creating this and as a musician this helps me a lot in certain ways which you can see in my readme.md.", "repo": "https://github.com/manayparikh1/sheety", "demo": "https://courageous-jalebi-7a0cbc.netlify.app/"}]...
|
[{"post_id": 54638, "ts": "202 [{"post_id": 54638, "ts": "2026-08-25T17:43:52Z", "hours": 1.2625, "text": "This is 100% my last devlog. So basically what I did is add a quiz option so the thing is I had no idea how to do that but with a bit of youtube and ai I figured it out and I create 10 questions by myself and then most of the code was repeating due to the questions so I just gave claude the questions and the write answers with example code of what I wrote and it just duplicated everything but with the right answers. And then I completed the full CSS and the rest of the HTML. I used no JavaScript this time because I am not that good with it so I only used HTML for the logical part. And it is just a button which you can click with easy questions. So overall everything is completed and the readme is updated."}, {"post_id": 54527, "ts": "2026-08-25T15:34:00Z", "hours": 2.0658, "text": "This may be my last devlog. If you have any suggestions lemme know. So basically what I did was completed my readme which took 2 hours because I added a huge amount of data. I talked about a lot including what I learned, how it all started, how to run it, and even features. I also changed the font style because of a recent suggestion and I changed it to comic sans because it is nice and soft but claude helped me in finding the code lines because at that time it was super unorganized. Overall I may add a small mini game at this point to make it more fun but otherwise my readme is done for now."}, {"post_id": 54201, "ts": "2026-08-25T02:47:42Z", "hours": 0.7014, "text": "SO what I did was added a key signature which can be changed so scales can be changed. For example you can change the scale from C to D which will change its whole tone. Claude helped me with a bit of the logic and I did the whole css and html portion of it, but just for the logic claude helped me on some of it because it involved sin and tan. Overall I love the colour scheme and now Ima go onto the readme which is gonna be PACKEED with detail because my old projects kept complaining about that. Soo stay tuned for the readme."}, {"post_id": 54159, "ts": "2026-08-25T00:36:38Z", "hours": 0.4728, "text": "For the past 30 minutes I have just been changing the background because the orange was superrr ugly so personally I like space and the sky so I made it blue. Using css I also added snow flakes which are kind of light. So I updated the root with various shades of blue and also updated 5 to 6 colours in the root. Now it looks amazing especially the shadow coming from the top left of the screen to the bottom right. So it goes from white to light blue in the corner. I controlled majority of this by changing the background-image. So yes everything is going well. Next I am gonna add another tool or possibly make this one better. Lettss see."}, {"post_id": 54141, "ts": "2026-08-24T23:38:46Z", "hours": 2.3314, "text": "I added a hum function so when some hums it puts notes on the screen but the problem is that you have to hum each note slowly because it wont detect properly. I also did the css for it by myself which was not too hard but the only thing I had a bit of issues from was the javascript so claude helped me in it and then I had a issue with the scripts which was 1000% my fault. In the last couple of lines in js I decided to do it myself and I forgot to close the so that took a while to fix lol. Overall it is going well and I am thinking of adding more."}, {"post_id": 53392, "ts": "2026-08-23T22:26:11Z", "hours": 1.4514, "text": "So far I worked on my javascript and I did 30-40 lines which were not that hard but then I struggled on the harder part of javascript so claude helped me A LOT and youtube to. And I spend like 30 minutes fixing and changing the CSS and now it looks better, well mostly the buttons. Now when you hover it has a shadow and the colours are way less better in hovering. It looks ugly still I know and I want to change the theme again lol but now right now first I gotta figure out and read the WHOLEEE javascript again. So lemme get reading. Letss see what happens ima fix these bugs and eventually change the theme. Adioss. Currently I have huge issues in javascript and html primarily because it does not load right now as you can see in the pic below."}, {"post_id": 53125, "ts": "2026-08-23T15:34:50Z", "hours": 0.4133, "text": "I finished the HTML part and for now it is less around 60-70 lines but I am going to add more later as soon as I recieve more ideas. I also figured out the sound of the play button which is going to be the built in ones, which include sine, triangle, square and sawtooth. These 4 honestly sound good enough so I picked them. And the note lengths I set it to was again 4 options which include whole, half, quarter, eigth. And honestly this is enough because this is not made for complexity or anything. I also created buttons which are rest, undo, clear, save, and load. ALL of these is without the logic though so it does not work yet. Below I added a pic of how it looks and the colours look soooo odd especially when I hover over the buttons lol Ill fix that. Anyway for now ima work on the logical (JS) part adioss."}, {"post_id": 52785, "ts": "2026-08-23T04:02:22Z", "hours": 0.8322, "text": "I worked on css and fixed a few bugs that were minor. So I am trying out a new look so that will be prettyy cool. But honestly I also need AI because some stuff I neeed is a bit to hard but thats fine ill learn it though first on youtube and stuff. Letss see how it goess. Now i am moving onto the main html adioss."}, {"post_id": 51858, "ts": "2026-08-21T18:44:35Z", "hours": 0.5156, "text": "Hi this is my first devlog so basically what I did was start the css before the html because I have an idea of what I am gonna do and I also picked root colours. So I am inspiring this from one of my old projects but I am adding way more because the old project was good but it couldve been more creative so I am restarting and changing the colours and majority of the logical aspects of this. And I wanna make the buttons more fun and creative so I need to do something about that and add extra cool css when someone hovers over a button and overall it will be pretty good but my buttons are usually not creative but nows the time to make it creative possibly with some glassmorphism…. Next I’ll keep working on the css and keep making it better rn im like 40-50 percent done honestly but I still gotta make the buttons creative so that will take time bc i dont really know how to do that yet"}]...
|
Title: Sheety by @manayp | Stardance
Devlogs:
Hi Title: Sheety by @manayp | Stardance
Devlogs:
Hi this is my first devlog so basically what I did was start the css before the html because I have an idea of what I am gonna do and I also picked root colours. So I am inspiring this from one of my old projects but I am adding way more because the old project was good but it couldve been more creative so I am restarting and changing the colours and majority of the logical aspects of this. And I wanna make the buttons more fun and creative so I need to do something about that and add extra cool css when someone hovers over a button and overall it will be pretty good but my buttons are usually not creative but nows the time to make it creative possibly with some glassmorphism…. Next I’ll keep working on the css and keep making it better rn im like 40-50 percent done honestly but I still gotta make the buttons creative so that will take time bc i dont really know how to do that yet
I worked on css and fixed a few bugs that were minor. So I am trying out a new look so that will be prettyy cool. But honestly I also need AI because some stuff I neeed is a bit to hard but thats fine ill learn it though first on youtube and stuff. Letss see how it goess. Now i am moving onto the main html adioss.
I finished the HTML part and for now it is less around 60-70 lines but I am going to add more later as soon as I recieve more ideas. I also figured out the sound of the play button which is going to be the built in ones, which include sine, triangle, square and sawtooth. These 4 honestly sound good enough so I picked them. And the note lengths I set it to was again 4 options which include whole, half, quarter, eigth. And honestly this is enough because this is not made for complexity or anything. I also created buttons which are rest, undo, clear, save, and load. ALL of these is without the logic though so it does not work yet. Below I added a pic of how it looks and the colours look soooo odd especially when I hover over the buttons lol Ill fix that. Anyway for now ima work on the logical (JS) part adioss.
So far I worked on my javascript and I did 30-40 lines which were not that hard but then I struggled on the harder part of javascript so claude helped me A LOT and youtube to. And I spend like 30 minutes fixing and changing the CSS and now it looks better, well mostly the buttons. Now when you hover it has a shadow and the colours are way less better in hovering. It looks ugly still I know and I want to change the theme again lol but now right now first I gotta figure out and read the WHOLEEE javascript again. So lemme get reading. Letss see what happens ima fix these bugs and eventually change the theme. Adioss. Currently I have huge issues in javascript and html primarily because it does not load right now as you can see in the pic below.
I added a hum function so when some hums it puts notes on the screen but the problem is that you have to hum each note slowly because it wont detect properly. I also did the css for it by myself which was not too hard but the only thing I had a bit of issues from was the javascript so claude helped me in it and then I had a issue with the scripts which was 1000% my fault. In the last couple of lines in js I decided to do it myself and I forgot to close the so that took a while to fix lol. Overall it is going well and I am thinking of adding more.
For the past 30 minutes I have just been changing the background because the orange was superrr ugly so personally I like space and the sky so I made it blue. Using css I also added snow flakes which are kind of light. So I updated the root with various shades of blue and also updated 5 to 6 colours in the root. Now it looks amazing especially the shadow coming from the top left of the screen to the bottom right. So it goes from white to light blue in the corner. I controlled majority of this by changing the background-image. So yes everything is going well. Next I am gonna add another tool or possibly make this one better. Lettss see.
SO what I did was added a key signature which can be changed so scales can be changed. For example you can change the scale from C to D which will change its whole tone. Claude helped me with a bit of the logic and I did the whole css and html portion of it, but just for the logic claude helped me on some of it because it involved sin and tan. Overall I love the colour scheme and now Ima go onto the readme which is gonna be PACKEED with detail because my old projects kept complaining about that. Soo stay tuned for the readme.
This may be my last devlog. If you have any suggestions lemme know. So basically what I did was completed my readme which took 2 hours because I added a huge amount of data. I talked about a lot including what I learned, how it all started, how to run it, and even features. I also changed the font style because of a recent suggestion and I changed it to comic sans because it is nice and soft but claude helped me in finding the code lines because at that time it was super unorganized. Overall I may add a small mini game at this point to make it more fun but otherwise my readme is done for now.
This is 100% my last devlog. So basically what I did is add a quiz option so the thing is I had no idea how to do that but with a bit of youtube and ai I figured it out and I create 10 questions by myself and then most of the code was repeating due to the questions so I just gave claude the questions and the write answers with example code of what I wrote and it just duplicated everything but with the right answers. And then I completed the full CSS and the rest of the HTML. I used no JavaScript this time because I am not that good with it so I only used HTML for the logical part. And it is just a button which you can click with easy questions. So overall everything is completed and the readme is updated.
Ships:
Sheety is basically a browser sheet music web application. You can click piano keys or hum into your microphone, and you can watch the notes appear on a actual staff which plays the tune back based on what you picked. No frameworks and no dependencies and it is just ONE HTML file with around 900 lines of code mixed with css and js. I had various challenges with javascript because it was very complex based on what I wanted to do but I learned how to do it on youtube and ai and I did most of it but claude still had to assist me with the more complex stuff. I am proud of this idea especially the background because it was not preplanned and I kept changing it and finally I got my last chosen one that I picked which was a blue icy sort of background. So overall I love that part and I am super proud of that because honestly it was not easy for me. Overall I had an amazing time creating this and as a musician this helps me a lot in certain ways which you can see in my readme.md....
|
1793253061.3240592
|
1793339461.3240592
|
|
52494
|
GlaesOs by @suvyakthacharya | Stardance
|
suvyakthacharya
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T06:42:47Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made an extra glassy ox, because I am just one of those guys who likes the effect of glassOs. I named it GlaesOs, because I just kept misspelling it so now it just reminds me of that 😂. Then things to know, just the bug reporting thing, just saves as a doc, then you can comment perhaps for me to fix it in future versions. But apart from that, feel free to customise it as you feel and use it for your workflow. I feel the rest is self-explanatory, and you can refer to the readme, for more 😂.", "repo": "https://github.com/suvyakth/dancestaros", "demo": "https://suvyakth.github.io/dancestaros/"}]...
|
[{"post_id": 60435, "ts": "202 [{"post_id": 60435, "ts": "2026-09-02T19:21:21Z", "hours": 0.4775, "text": "Woking on bugs, and other minor things. Also adding a flappy bird inspired game!"}, {"post_id": 59797, "ts": "2026-09-01T18:48:20Z", "hours": 1.0728, "text": "Games!! More bug fixes two. + a fun little reward system to unlock new things for new records!"}, {"post_id": 59072, "ts": "2026-08-31T17:56:28Z", "hours": 0.7883, "text": "Language support, bug reporting, more bug fixes!!!"}, {"post_id": 57259, "ts": "2026-08-29T11:26:13Z", "hours": 0.3444, "text": "More customization, and features! Check out at github! ( https://github.com/suvyakth/dancestaros )"}, {"post_id": 57239, "ts": "2026-08-29T10:46:16Z", "hours": 1.8019, "text": "Xtra Glassie OS!"}]...
|
Title: GlaesOs by @suvyakthacharya | Stardance
De Title: GlaesOs by @suvyakthacharya | Stardance
Devlogs:
Xtra Glassie OS!
More customization, and features! Check out at github! ( https://github.com/suvyakth/dancestaros )
Language support, bug reporting, more bug fixes!!!
Games!! More bug fixes two. + a fun little reward system to unlock new things for new records!
Woking on bugs, and other minor things. Also adding a flappy bird inspired game!
Ships:
I made an extra glassy ox, because I am just one of those guys who likes the effect of glassOs. I named it GlaesOs, because I just kept misspelling it so now it just reminds me of that 😂. Then things to know, just the bug reporting thing, just saves as a doc, then you can comment perhaps for me to fix it in future versions. But apart from that, feel free to customise it as you feel and use it for your workflow. I feel the rest is self-explanatory, and you can refer to the readme, for more 😂....
|
1793285439.6469274
|
1793371839.6469274
|
|
52501
|
Updgrading My Website Knowloedge by @nove | Starda Updgrading My Website Knowloedge by @nove | Stardance...
|
nove
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T12:29:46Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Yes i updgraded my knowledge of website and javascript. its now level 3 i think need to go far more away. thank you stardance, hackclub for making this possible. Love you guysss.", "repo": "https://github.com/NOVE300IQ/nasawebsite", "demo": "https://nove300iq.github.io/nasawebsite/"}]...
|
[{"post_id": 53737, "ts": "202 [{"post_id": 53737, "ts": "2026-08-24T12:28:11Z", "hours": 1.9972, "text": "Ohh now i hacked some data from NASA 🥲🫨"}]...
|
Title: Updgrading My Website Knowloedge by @nove | Title: Updgrading My Website Knowloedge by @nove | Stardance
Devlogs:
Ohh now i hacked some data from NASA 🥲🫨
Ships:
Yes i updgraded my knowledge of website and javascript. its now level 3 i think need to go far more away. thank you stardance, hackclub for making this possible. Love you guysss....
|
1793256841.3048277
|
1793343241.3048277
|
|
52504
|
Myself in a website by @nove | Stardance
|
nove
|
1
|
2.87
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T14:23:21Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a small webpage, its a page containing my social informations and a button to get into my portfolio.", "repo": "https://github.com/NOVE300IQ/myself", "demo": "https://myself-three-hazel.vercel.app/"}]...
|
[{"post_id": 53310, "ts": "202 [{"post_id": 53310, "ts": "2026-08-23T19:39:42Z", "hours": 1.3144, "text": "Hehe its simple but powerfull right ?"}, {"post_id": 53258, "ts": "2026-08-23T18:17:34Z", "hours": 0.5508, "text": "Fully Reconstructing the website from scratch :D"}, {"post_id": 52372, "ts": "2026-08-22T14:17:03Z", "hours": 0.6353, "text": "Finally Done. this website works like a landing page for my portfolio website."}, {"post_id": 51839, "ts": "2026-08-21T18:18:18Z", "hours": 0.5444, "text": "Started the work of my portal for my personal web"}]...
|
Title: Myself in a website by @nove | Stardance
D Title: Myself in a website by @nove | Stardance
Devlogs:
Started the work of my portal for my personal web
Finally Done. this website works like a landing page for my portfolio website.
Fully Reconstructing the website from scratch :D
Hehe its simple but powerfull right ?
Ships:
I made a small webpage, its a page containing my social informations and a button to get into my portfolio....
|
1793256844.064065
|
1793343244.064065
|
|
52506
|
Particle simulation (Vulkan Compute Shaders + C++) Particle simulation (Vulkan Compute Shaders + C++) by @Knaj | Stardance...
|
Knaj
|
1
|
33.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-15T19:12:22Z", "hours": 33.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Particle Simulation, semi-finished. At last I’ve done it, this a mini-dream come true. I’ve finally “mastered” Vulkan compute shaders and got better at using C++ and GLSL. The program spawns 2000 particles (a very humble number, so I can run it on almost any machine) and simulates their gravity and collisions. In my very humble opinion, it’s quite impressive.", "repo": "https://github.com/Knajp/ParticleSimulation", "demo": "https://github.com/Knajp/ParticleSimulation/releases/tag/1.0.0"}]...
|
[{"post_id": 79981, "ts": "202 [{"post_id": 79981, "ts": "2026-10-15T18:46:09Z", "hours": 7.6886, "text": "The end? Probably not, but it sounds cool and is a Minecraft reference. Anyway, as you can see, I (sadly along with the help of an LLM, since I’m not the best at physics (i promise I only used it to explain the physics part and fix some insanely weird bugs)) implemented the collision system. What it took So, to achieve this and not make my computer burn down, I used a spatial grid. The way this one worked is: I added 2 buffers, one for cell heads, and other for next particles Created a linked list using those, with the last one pointing to index -1. Then, using some nonsense calculations, for every particle I checked every particle in their own cell and the 8 surrounding ones. That way I didn’t have to make a literal billion if statements per second. Then I fiddled around with making the particles stop moving on their own, and bim bam boom, I’ve got a nice layer of particles at the bottom. What’s next? I probably won’t finish this during stardance, but I’ll add some mouse interactions so the simulation isn’t so stagnant, and that should probably be it. Attachments In the attachments you’ve got a simulation of 2,000 and 100,000 particles, and a screenshot of the final result."}, {"post_id": 76212, "ts": "2026-10-02T18:03:56Z", "hours": 9.3442, "text": "Not a nothingburger anymore! Just a regular burger now, though. As you can see, the particles are there. And there’s many of them. Three thousand if I remember correctly. I can’t lie, implementing this took a lot and made me experiment with a lot of new things and especially modern Vulkan. What it took So, in my last devlog I said that the particles were in memory. They in fact were not, because my compute invocation was broken. But as you might imagine by now, I fixed that. What was wrong is that I was calling vkDispatch(cb, [actual number of dispatches], 0, 0) . Since x * 0 * 0 = 0 , the total number of calls was, you guessed it - zero. Changed it to vkDispatch(..., 1, 1) and it worked like a charm. Then I had issues with displaying the stuff (passing uninitialized values to the shaders), and also making the particles round. Overall, a nice challenging part of the project."}, {"post_id": 70047, "ts": "2026-09-18T11:08:06Z", "hours": 8.6511, "text": "A very big nothingburger. Yup. Despite working on this devlog for about 9 hours, I’ve made no visible progress. There’s still no window displaying anything (there is one on traditional DEs, but it won’t work on Hyprland for some unknown reason). However, it’s not as simple as it sounds, since I had to be working on something, right? Right. That thing being the base for the particle simulation – The compute pipeline, the compute shader, the compute everything. Additionally, I’ve finished the renderer init. Now the program launches without any issues! Somehow. Lol. The obvious next step is to actually get something rendering, and since the particles, or at least potential particles should be in their SSBO by now, I think I should be able to make a humble hundred-thousand-vertex draw call and be good! In theory, of course. How it will turn out in practice, we will see. And because as I said, I don’t have any visual output yet, you can have another picture of the terminal output as a treat."}, {"post_id": 61481, "ts": "2026-09-04T12:47:12Z", "hours": 7.3406, "text": "Devlog #1 Project Setup This was supposed to be covered a separate devlog, however posting the devlog failed and I simply gave up. Anyhow, I set up the project in quite a simple way, hoping to minimize the amount of bloat in the vendor directory. The project uses C++, Vulkan (my two beloved technologies) and CMake, which is a first for me. Renderer base So far, I’ve made use of GLFW to create a window and then used Vulkan to create a window surface and prepare the swapchain. What the swapchain in plain terms is that it makes sure you dont have to wait for the next frame to be rendered with a blank screen. Next Steps The next obvious step would be a graphics pipeline, however this time I’m thinking of going straight into rendering particles instead of the regular triangle. That would require a different (possibly instanced) . graphics pipeline, more sophisticated shaders and of course, a compute pipeline, learning which is the very point of this project. -# ignore assert failed please"}]...
|
Title: Particle simulation (Vulkan Compute Shaders Title: Particle simulation (Vulkan Compute Shaders + C++) by @Knaj | Stardance
Devlogs:
Devlog #1 Project Setup This was supposed to be covered a separate devlog, however posting the devlog failed and I simply gave up. Anyhow, I set up the project in quite a simple way, hoping to minimize the amount of bloat in the vendor directory. The project uses C++, Vulkan (my two beloved technologies) and CMake, which is a first for me. Renderer base So far, I’ve made use of GLFW to create a window and then used Vulkan to create a window surface and prepare the swapchain. What the swapchain in plain terms is that it makes sure you dont have to wait for the next frame to be rendered with a blank screen. Next Steps The next obvious step would be a graphics pipeline, however this time I’m thinking of going straight into rendering particles instead of the regular triangle. That would require a different (possibly instanced) . graphics pipeline, more sophisticated shaders and of course, a compute pipeline, learning which is the very point of this project. -# ignore assert failed please
A very big nothingburger. Yup. Despite working on this devlog for about 9 hours, I’ve made no visible progress. There’s still no window displaying anything (there is one on traditional DEs, but it won’t work on Hyprland for some unknown reason). However, it’s not as simple as it sounds, since I had to be working on something, right? Right. That thing being the base for the particle simulation – The compute pipeline, the compute shader, the compute everything. Additionally, I’ve finished the renderer init. Now the program launches without any issues! Somehow. Lol. The obvious next step is to actually get something rendering, and since the particles, or at least potential particles should be in their SSBO by now, I think I should be able to make a humble hundred-thousand-vertex draw call and be good! In theory, of course. How it will turn out in practice, we will see. And because as I said, I don’t have any visual output yet, you can have another picture of the terminal output as a treat.
Not a nothingburger anymore! Just a regular burger now, though. As you can see, the particles are there. And there’s many of them. Three thousand if I remember correctly. I can’t lie, implementing this took a lot and made me experiment with a lot of new things and especially modern Vulkan. What it took So, in my last devlog I said that the particles were in memory. They in fact were not, because my compute invocation was broken. But as you might imagine by now, I fixed that. What was wrong is that I was calling vkDispatch(cb, [actual number of dispatches], 0, 0) . Since x * 0 * 0 = 0 , the total number of calls was, you guessed it - zero. Changed it to vkDispatch(..., 1, 1) and it worked like a charm. Then I had issues with displaying the stuff (passing uninitialized values to the shaders), and also making the particles round. Overall, a nice challenging part of the project.
The end? Probably not, but it sounds cool and is a Minecraft reference. Anyway, as you can see, I (sadly along with the help of an LLM, since I’m not the best at physics (i promise I only used it to explain the physics part and fix some insanely weird bugs)) implemented the collision system. What it took So, to achieve this and not make my computer burn down, I used a spatial grid. The way this one worked is: I added 2 buffers, one for cell heads, and other for next particles Created a linked list using those, with the last one pointing to index -1. Then, using some nonsense calculations, for every particle I checked every particle in their own cell and the 8 surrounding ones. That way I didn’t have to make a literal billion if statements per second. Then I fiddled around with making the particles stop moving on their own, and bim bam boom, I’ve got a nice layer of particles at the bottom. What’s next? I probably won’t finish this during stardance, but I’ll add some mouse interactions so the simulation isn’t so stagnant, and that should probably be it. Attachments In the attachments you’ve got a simulation of 2,000 and 100,000 particles, and a screenshot of the final result.
Ships:
Particle Simulation, semi-finished. At last I’ve done it, this a mini-dream come true. I’ve finally “mastered” Vulkan compute shaders and got better at using C++ and GLSL. The program spawns 2000 particles (a very humble number, so I can run it on almost any machine) and simulates their gravity and collisions. In my very humble opinion, it’s quite impressive....
|
1793199064.404929
|
1793285464.404929
|
|
52508
|
Card-OS by @DSK | Stardance
|
DSK
|
1
|
10.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T20:48:31Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is card-os an card themed os.In this i have added 3 draggable windows/apps , one is the information about the theme the second is the notes app and third is the calendar app. I have also added live clock and the current date.I have used HTML,CSS and JAVASCRIPT in this os and this os is made completely out of scrtach.I have used light ai for debugging and Javascript. the most difficult part of this os was the calendar, i had so many issues and errors with the calendar but i eventually figured it out. I hav also added my stardance link in the welcome to card os window. i even had alot of issues with the javascript but it all worked out. I have also added a feature in the calendar app where you can see the future/past dates.i plan on adding more apps and windows in my os and make it more advanced.", "repo": "https://github.com/dhyansandeep/nebula-os", "demo": "https://dhyansandeep.github.io/Card-os/"}]...
|
[{"post_id": 59172, "ts": "202 [{"post_id": 59172, "ts": "2026-08-31T20:03:06Z", "hours": 3.7461, "text": "So today i did alot of changes and i had a change of mind i shifted from nebulaOS to Card-OS and added like 3 windows changed the color the style and did css and major changes to my javascript plus i added calendar. i had so many problems with the calendar but i eventually figured it out"}, {"post_id": 58375, "ts": "2026-08-30T19:44:32Z", "hours": 1.3294, "text": "Hey there, today i finished part 3 and added a task bar and a dragable window plus did a little of changes in the content in the os."}, {"post_id": 58010, "ts": "2026-08-30T10:55:57Z", "hours": 1.5033, "text": "Hey there, I figured out how to space properly and completed placing a window I also finished designing a desktop and tracking time on java script and finally how to make it run every second.soon ill start part 3."}, {"post_id": 57653, "ts": "2026-08-29T21:18:54Z", "hours": 1.5197, "text": "Hey there, okay so today I started working on placing a window, designing a desktop and learned alot about customizing spacing but I’m having issues in spacing I don’t know where I went wrong but ill figure it out hopefully."}, {"post_id": 56630, "ts": "2026-08-28T13:48:49Z", "hours": 1.4175, "text": "Hey there, so today i added padding, borders, added content, changed the color to lavender and purple, changed the progress status to 25%, added margin and started working on creating a window"}, {"post_id": 51870, "ts": "2026-08-21T19:04:37Z", "hours": 0.4547, "text": "i have started learning html and followed the guide and have completed one tag so far. I’m working on adding more tags and colors."}]...
|
Title: Card-OS by @DSK | Stardance
Devlogs:
i hav Title: Card-OS by @DSK | Stardance
Devlogs:
i have started learning html and followed the guide and have completed one tag so far. I’m working on adding more tags and colors.
Hey there, so today i added padding, borders, added content, changed the color to lavender and purple, changed the progress status to 25%, added margin and started working on creating a window
Hey there, okay so today I started working on placing a window, designing a desktop and learned alot about customizing spacing but I’m having issues in spacing I don’t know where I went wrong but ill figure it out hopefully.
Hey there, I figured out how to space properly and completed placing a window I also finished designing a desktop and tracking time on java script and finally how to make it run every second.soon ill start part 3.
Hey there, today i finished part 3 and added a task bar and a dragable window plus did a little of changes in the content in the os.
So today i did alot of changes and i had a change of mind i shifted from nebulaOS to Card-OS and added like 3 windows changed the color the style and did css and major changes to my javascript plus i added calendar. i had so many problems with the calendar but i eventually figured it out
Ships:
This is card-os an card themed os.In this i have added 3 draggable windows/apps , one is the information about the theme the second is the notes app and third is the calendar app. I have also added live clock and the current date.I have used HTML,CSS and JAVASCRIPT in this os and this os is made completely out of scrtach.I have used light ai for debugging and Javascript. the most difficult part of this os was the calendar, i had so many issues and errors with the calendar but i eventually figured it out. I hav also added my stardance link in the welcome to card os window. i even had alot of issues with the javascript but it all worked out. I have also added a feature in the calendar app where you can see the future/past dates.i plan on adding more apps and windows in my os and make it more advanced....
|
1793220647.9385448
|
1793307047.9385448
|
|
52531
|
Neon quiz by @kevinamir | Stardance
|
kevinamir
|
1
|
3.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-22T21:39:29Z", "hours": 3.0, "multiplier": 1.06, "payout": 3, "blessing": "neutral", "text": "This is a website where you are given 3 questions, and 15 seconds to answer each question, I had some really hard time to figure out the 15 seconds timer", "repo": "https://github.com/kevinamirr1/Neon-quiz", "demo": "https://kevinamirr1.github.io/Neon-quiz/"}]...
|
[{"post_id": 52641, "ts": "202 [{"post_id": 52641, "ts": "2026-08-22T21:37:30Z", "hours": 2.3333, "text": "Neon quiz"}, {"post_id": 52334, "ts": "2026-08-22T13:19:29Z", "hours": 0.6936, "text": "Neon quiz"}]...
|
Title: Neon quiz by @kevinamir | Stardance
Devlog Title: Neon quiz by @kevinamir | Stardance
Devlogs:
Neon quiz
Neon quiz
Ships:
This is a website where you are given 3 questions, and 15 seconds to answer each question, I had some really hard time to figure out the 15 seconds timer...
|
1793256846.8432312
|
1793343246.8432312
|
|
52537
|
MySite by @K_muistaa501 | Stardance
|
K_muistaa501
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T11:03:06Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Its alive!!! This was a great mission!!!! thank you for going on the site, enjoy doing homework :D Its not much, but pls enjoy", "repo": "https://github.com/K-muistaa501/New-Proj--PS26-", "demo": "https://k-muistaa501.github.io/New-Proj--PS26-/"}]...
|
[{"post_id": 60473, "ts": "202 [{"post_id": 60473, "ts": "2026-09-02T20:25:47Z", "hours": 0.3592, "text": "Part 5: Buttons, part 2…. I redesigned the buttons for the site, because i thought they look boring"}, {"post_id": 59856, "ts": "2026-09-01T20:38:20Z", "hours": 0.3678, "text": "Part 4 laziest upload ever… redesigned some elements"}, {"post_id": 59111, "ts": "2026-08-31T18:56:09Z", "hours": 1.0925, "text": "Part 3 just updating…"}, {"post_id": 58178, "ts": "2026-08-30T15:13:39Z", "hours": 1.5464, "text": "Part 2 Did the ascii font, used TAAG by patorjk and added BUTTONS"}, {"post_id": 57278, "ts": "2026-08-29T11:54:59Z", "hours": 1.5503, "text": "Part 1 I’m trying to make a frutiger aero style window. Kinda tricky as the sections are weirdly formatted"}]...
|
Title: MySite by @K_muistaa501 | Stardance
Devlog Title: MySite by @K_muistaa501 | Stardance
Devlogs:
Part 1 I’m trying to make a frutiger aero style window. Kinda tricky as the sections are weirdly formatted
Part 2 Did the ascii font, used TAAG by patorjk and added BUTTONS
Part 3 just updating…
Part 4 laziest upload ever… redesigned some elements
Part 5: Buttons, part 2…. I redesigned the buttons for the site, because i thought they look boring
Ships:
Its alive!!! This was a great mission!!!! thank you for going on the site, enjoy doing homework :D Its not much, but pls enjoy...
|
1793152279.9281132
|
1793238679.9281132
|
|
52541
|
King of rock paper scissors by @busy_cheesy | Star King of rock paper scissors by @busy_cheesy | Stardance...
|
busy_cheesy
|
1
|
17.0
|
236
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T22:56:56Z", "hours": 17.0, "multiplier": 13.9, "payout": 236, "blessing": "neutral", "text": "This project is a real time rock, paper scissors ai predictor built entirely from scratch in python, displayed with a retro look made using pygame. Yes, this probably could’ve been a website to make it more accessible for more people, but I have absolutely no experience with js css or html, my experience is almost exclusively in python, so for the sake of goal of this project, which was to learn about how machine learning actually works, I made this project in python. To truly understand how these algorithms work, I decided to build one myself from scratch instead of relying on prebuilt machine learning libraries. This includes the full neural network with backpropagation and dynamic hidden layer scaling. I started with just one input given to the algorithm: the last 8 player choices. There were also just two parameters the bot had: number of games it receives (8) and the learning rate (how much it should learn from each move). I first experimented with different prediction strategies, starting from the simple highest likelyhood that the ai predicted, then opting for weighted choices (ex: if the ai predicted 40% for rock, 10% for paper and 50% for scissors, there would be a 40% chance it chose rock, 10% it chose paper, and 50% it chose scissors. this was decided randomly, with those weights). I finally settled on the epsilon-greedy strategy, which is like the highest likelyhood strategy except there is a 10% chance it takes a random choice to keep the bot a little unpredictable. I then added momentum, which accumulates the updates made to the model, which lets it notice patterns much quicker. Finally I added feature engineering, that adds more inputs that the bot could have made from the game histroy, but instead I give it to the bot. This gives more information to the bot such as shoft transitions, outcome history, and move frequencies, which it doesnt have to deduce on its own, which helps the bot find patterns quicker and predict better. The biggest challenge for me was tuning the bot by changing the parameters to find the best combination. I kept tweaking the values until it seemed like the bot was absolutely crushing me, but the next run it would be like I was playing against a toddler, an abysmal performace put on by the same values. To solve this problem, I ran a “championship” of bots, where i made 1400 combinations that then played 10 rounds of 100 games against the best bot I made so far. If they won more than 50%, they moved on. Around 140 bots made it to the second stage, a round-robin style tournament where each bot played the others in 20 rounds, each with 100 games. In total, there were about 13 000 000 games played. The winner was absolutely not who I was expecting: 2 game memory, 0.2 learning rate (pretty high) and 0.1 momentum. While the models with more game memomry and lower learning rate performed better in the q3 and q4, this proved that quick adaptation was much better suited for this project, and after testing that was certainly the case. I am most proud of how the interface turned out. In my humble opinion, the retro arcade aesthetic was perfectly executed (no glaze) with the scannlines, the font, and the pixel art. The prediction bars showing how the model predicted your next move are also a nice touch, giving a peek into the algorithm’s mind. When you play, expect some trash talk from the bot. From experience, it gets better and better the more you play. It varies from person to person, as some people are more predictable than others. That’s about the whole project! Thanks for having read the whole thing (if you did)!", "repo": "https://github.com/cream-of-wheat/RPS-King", "demo": "https://github.com/cream-of-wheat/RPS-King/releases/tag/v1.0.1"}]...
|
[{"post_id": 57736, "ts": "202 [{"post_id": 57736, "ts": "2026-08-30T00:13:49Z", "hours": 2.2383, "text": "This will probably be my last devlog before the ship. I have overhauled the manager to include feature engineering, which should help the model make connections much faster. It now receives choice shifts, match outcomes and overall move frequencies instead of just the history of past rounds. Changed the algorithm to predict the user’s next move instead of the counter. This makes it easier to understand how it was thinking that you would act. It still returns the counter to the player move tho. Also changed back from the probability weighted selection method to the epsilon greedy strategy (highest probability move is chosen 90% of the time and 10% is random). The only thing left is to tweak all the values until I am satisfied with the result and then off it goes into the sea."}, {"post_id": 56964, "ts": "2026-08-29T00:37:33Z", "hours": 2.35, "text": "Completely overhauled the UI and I think it looks much better now. The bot has taunts now, but performance is marginal at best right now. Taking all the different strategies I’ve tried to make the bot better and consolidating them to find the best possible parameters for it will be the next and probably final problem the project will face before shipping. Might try the round robbin style face offs with different parametered bots facing each other. Overall it’s been a very interesting journey learning about all these concepts in machine learning."}, {"post_id": 56328, "ts": "2026-08-28T01:49:44Z", "hours": 1.1167, "text": "So I did a lot of digging to find out how to improve the model and found some interesting stuff, but the main problem was that i was telling the model that the target move was a draw (immitating the player’s move) instead of beating them -_-. Also the idea of the round robbin to find the best bot parametersalso fell out because the models just trained to draw each other, but it took forever to execute so I don’t know if I should maybe retry it. There is still the very valid concern that the best bot would be the one that’s the best against other bots and not players so. On a more positive note, I introduced momentum. It keeps a running memory of the past updates, like a rolling bolder that builds speed. This enables it to recongnize patterns much quicker by stacking the past changes together. Caught onto patterns of length 1, 2, 3 and 4 in 1, 4, 12, and 17 moves, respectively. Below is a comparison (100 games of normal human rock paper scissors, not repeating a pattern, or atleast not conciously) vs random ouput (left) and the new bot (right). Glad to see it’s doing better. Will do more research on improving but polishing the game now is a better priority."}, {"post_id": 55336, "ts": "2026-08-27T02:27:30Z", "hours": 3.0167, "text": "So clearly what I said earlier about the algorithm was wrong. I tested it some more and it seems like sometimes it is just reading my mind and other attemps it’s like it’s not even trying. I have fiddled around with the number of games the algorithm sees and it’s learning rate, and every time I think I got it I ask my brother (unbiased third party) to test it where it promptly fails. So, I have devised a plan to find the ultimate round robbin with about 200 different algorithms playing a total of 30 000 000 games of rock paper scissors to find the true champion. Hopefully this will let me find the best learning rate and sample size for the ai, therefore improving it’s game. might take a little while to execute, so we’ll see when that happens. also if there’s anyone who knows more about machine learning, please don’t hesitate to tell me what i could try. Thanks!"}, {"post_id": 54086, "ts": "2026-08-24T21:26:27Z", "hours": 2.8667, "text": "Got the basic UI working with a simple animation, just need to transfer the text from the terminal to the app instead. Still have to work on making the algorithm better, as spamming the same move 20 times in a row, the AI was still picking the wrong options sometimes (maybe trying to predict when i would switch it up?). Cool to see everything coming together"}, {"post_id": 53348, "ts": "2026-08-23T20:48:03Z", "hours": 1.3167, "text": "Very scary progress, I am barely winning now. All it took was some minor adjustements to the layer sizes, learning rate, and number of games stored, as well as making the output a weighted random choice based on the probabilities given by the algorithm, and changing the input for the bot from just the human inputs to also include the bot inputs. I bet there’s even more to make it better which is even more scary. Very nice to see the progress showing though!"}, {"post_id": 52685, "ts": "2026-08-22T23:17:50Z", "hours": 2.0167, "text": "Second deblog working on the machine learning algorithm. I got the backpropagation working after some time, but clearly I have to tweak some things, like the learning rate, game history size, number of neurons per layer, etc. The issue probably also lies beyond that, so more research will have to be done. The algorithm easily gets outsmarted. So for now, humans still reign as rock paper scissors champions!"}, {"post_id": 52003, "ts": "2026-08-22T00:53:18Z", "hours": 2.0669, "text": "New project: a machine learning algorithm that plays rock paper scissors against you and learns in real time to predict your next move to beat you. Figured it was a pretty good way to get into machine learning as AI is on the rise, and coding my own will force me to truly understand how it works. I got the forward propagation working, and set everything up for back propagation for the next session. Can’t wait"}]...
|
Title: King of rock paper scissors by @busy_cheesy Title: King of rock paper scissors by @busy_cheesy | Stardance
Devlogs:
New project: a machine learning algorithm that plays rock paper scissors against you and learns in real time to predict your next move to beat you. Figured it was a pretty good way to get into machine learning as AI is on the rise, and coding my own will force me to truly understand how it works. I got the forward propagation working, and set everything up for back propagation for the next session. Can’t wait
Second deblog working on the machine learning algorithm. I got the backpropagation working after some time, but clearly I have to tweak some things, like the learning rate, game history size, number of neurons per layer, etc. The issue probably also lies beyond that, so more research will have to be done. The algorithm easily gets outsmarted. So for now, humans still reign as rock paper scissors champions!
Very scary progress, I am barely winning now. All it took was some minor adjustements to the layer sizes, learning rate, and number of games stored, as well as making the output a weighted random choice based on the probabilities given by the algorithm, and changing the input for the bot from just the human inputs to also include the bot inputs. I bet there’s even more to make it better which is even more scary. Very nice to see the progress showing though!
Got the basic UI working with a simple animation, just need to transfer the text from the terminal to the app instead. Still have to work on making the algorithm better, as spamming the same move 20 times in a row, the AI was still picking the wrong options sometimes (maybe trying to predict when i would switch it up?). Cool to see everything coming together
So clearly what I said earlier about the algorithm was wrong. I tested it some more and it seems like sometimes it is just reading my mind and other attemps it’s like it’s not even trying. I have fiddled around with the number of games the algorithm sees and it’s learning rate, and every time I think I got it I ask my brother (unbiased third party) to test it where it promptly fails. So, I have devised a plan to find the ultimate round robbin with about 200 different algorithms playing a total of 30 000 000 games of rock paper scissors to find the true champion. Hopefully this will let me find the best learning rate and sample size for the ai, therefore improving it’s game. might take a little while to execute, so we’ll see when that happens. also if there’s anyone who knows more about machine learning, please don’t hesitate to tell me what i could try. Thanks!
So I did a lot of digging to find out how to improve the model and found some interesting stuff, but the main problem was that i was telling the model that the target move was a draw (immitating the player’s move) instead of beating them -_-. Also the idea of the round robbin to find the best bot parametersalso fell out because the models just trained to draw each other, but it took forever to execute so I don’t know if I should maybe retry it. There is still the very valid concern that the best bot would be the one that’s the best against other bots and not players so. On a more positive note, I introduced momentum. It keeps a running memory of the past updates, like a rolling bolder that builds speed. This enables it to recongnize patterns much quicker by stacking the past changes together. Caught onto patterns of length 1, 2, 3 and 4 in 1, 4, 12, and 17 moves, respectively. Below is a comparison (100 games of normal human rock paper scissors, not repeating a pattern, or atleast not conciously) vs random ouput (left) and the new bot (right). Glad to see it’s doing better. Will do more research on improving but polishing the game now is a better priority.
Completely overhauled the UI and I think it looks much better now. The bot has taunts now, but performance is marginal at best right now. Taking all the different strategies I’ve tried to make the bot better and consolidating them to find the best possible parameters for it will be the next and probably final problem the project will face before shipping. Might try the round robbin style face offs with different parametered bots facing each other. Overall it’s been a very interesting journey learning about all these concepts in machine learning.
This will probably be my last devlog before the ship. I have overhauled the manager to include feature engineering, which should help the model make connections much faster. It now receives choice shifts, match outcomes and overall move frequencies instead of just the history of past rounds. Changed the algorithm to predict the user’s next move instead of the counter. This makes it easier to understand how it was thinking that you would act. It still returns the counter to the player move tho. Also changed back from the probability weighted selection method to the epsilon greedy strategy (highest probability move is chosen 90% of the time and 10% is random). The only thing left is to tweak all the values until I am satisfied with the result and then off it goes into the sea.
Ships:
This project is a real time rock, paper scissors ai predictor built entirely from scratch in python, displayed with a retro look made using pygame. Yes, this probably could’ve been a website to make it more accessible for more people, but I have absolutely no experience with js css or html, my experience is almost exclusively in python, so for the sake of goal of this project, which was to learn about how machine learning actually works, I made this project in python. To truly understand how these algorithms work, I decided to build one myself from scratch instead of relying on prebuilt machine learning libraries. This includes the full neural network with backpropagation and dynamic hidden layer scaling. I started with just one input given to the algorithm: the last 8 player choices. There were also just two parameters the bot had: number of games it receives (8) and the learning rate (how much it should learn from each move). I first experimented with different prediction strategies, starting from the simple highest likelyhood that the ai predicted, then opting for weighted choices (ex: if the ai predicted 40% for rock, 10% for paper and 50% for scissors, there would be a 40% chance it chose rock, 10% it chose paper, and 50% it chose scissors. this was decided randomly, with those weights). I finally settled on the epsilon-greedy strategy, which is like the highest likelyhood strategy except there is a 10% chance it takes a random choice to keep the bot a little unpredictable. I then added momentum, which accumulates the updates made to the model, which lets it notice patterns much quicker. Finally I added feature engineering, that adds more inputs that the bot could have made from the game histroy, but instead I give it to the bot. This gives more information to the bot such as shoft transitions, outcome history, and move frequencies, which it doesnt have to deduce on its own, which helps the bot find patterns quicker and predict better. The biggest challenge for me was tuning the bot by changing the parameters to find the best combination. I kept tweaking the values until it seemed like the bot was absolutely crushing me, but the next run it would be like I was playing against a toddler, an abysmal performace put on by the same values. To solve this problem, I ran a “championship” of bots, where i made 1400 combinations that then played 10 rounds of 100 games against the best bot I made so far. If they won more than 50%, they moved on. Around 140 bots made it to the second stage, a round-robin style tournament where each bot played the others in 20 rounds, each with 100 games. In total, there were about 13 000 000 games played. The winner was absolutely not who I was expecting: 2 game memory, 0.2 learning rate (pretty high) and 0.1 momentum. While the models with more game memomry and lower learning rate performed better in the q3 and q4, this proved that quick adaptation was much better suited for this project, and after testing that was certainly the case. I am most proud of how the interface turned out. In my humble opinion, the retro arcade aesthetic was perfectly executed (no glaze) with the scannlines, the font, and the pixel art. The prediction bars showing how the model predicted your next move are also a nice touch, giving a peek into the algorithm’s mind. When you play, expect some trash talk from the bot. From experience, it gets better and better the more you play. It varies from person to person, as some people are more predictable than others. That’s about the whole project! Thanks for having read the whole thing (if you did)!...
|
1793220696.32255
|
1793307096.32255
|
|
52547
|
Python Cashier System by @M_Lasheen | Stardance
|
M_Lasheen
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T18:49:27Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Built a terminal cashier system in Python that takes product orders, validates inputs, applies a 15% discount, and prints an ASCII receipt. The hardest part was fixing the input validation loop — I kept crashing the program by putting input() outside the while loop and had to rewrite the whole function. Honestly most proud of the receipt formatting, seeing those = borders line up perfectly in the terminal was super satisfying. To test it, just run python Register.py in your terminal and follow the prompts.", "repo": "https://github.com/Lasheen7/Register", "demo": "https://github.com/Lasheen7/Register/raw/refs/heads/main/Cashier_Vid.mp4"}]...
|
[{"post_id": 53263, "ts": "202 [{"post_id": 53263, "ts": "2026-08-23T18:27:20Z", "hours": 3.555, "text": "Finally finished my cashier system after way too many hours of fighting with Python. The input validation absolutely broke me — I kept testing with random inputs like “thy” or “56” and the program would either crash or loop forever because I accidentally put the input() call outside the while loop. Had to rewrite the whole choose_product() function from scratch which was annoying but it actually works perfectly now.The ASCII receipt at the end was way more fun to build though. I added a 15% discount and got everything formatting properly in EGP. Seeing those = borders line up in the terminal after buying meat, rice, and salt was weirdly satisfying.Screen recording below shows the full flow including all the invalid input handling and the final receipt. Project is basically done and I’m way too tired to touch it again lol."}]...
|
Title: Python Cashier System by @M_Lasheen | Stard Title: Python Cashier System by @M_Lasheen | Stardance
Devlogs:
Finally finished my cashier system after way too many hours of fighting with Python. The input validation absolutely broke me — I kept testing with random inputs like “thy” or “56” and the program would either crash or loop forever because I accidentally put the input() call outside the while loop. Had to rewrite the whole choose_product() function from scratch which was annoying but it actually works perfectly now.The ASCII receipt at the end was way more fun to build though. I added a 15% discount and got everything formatting properly in EGP. Seeing those = borders line up in the terminal after buying meat, rice, and salt was weirdly satisfying.Screen recording below shows the full flow including all the invalid input handling and the final receipt. Project is basically done and I’m way too tired to touch it again lol.
Ships:
Built a terminal cashier system in Python that takes product orders, validates inputs, applies a 15% discount, and prints an ASCII receipt. The hardest part was fixing the input validation loop — I kept crashing the program by putting input() outside the while loop and had to rewrite the whole function. Honestly most proud of the receipt formatting, seeing those = borders line up perfectly in the terminal was super satisfying. To test it, just run python Register.py in your terminal and follow the prompts....
|
1793256852.2163553
|
1793343252.2163553
|
|
52548
|
NeuralNetworkFromScratch by @MattiaAle | Stardance
|
MattiaAle
|
1
|
8.4
|
12
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T23:21:55Z", "hours": 7.0, "multiplier": 1.72, "payout": 12, "blessing": "neutral", "text": "I made this Neural Network from Scratch in python learning all the math behind and some cool new functions", "repo": "https://github.com/MattiaAlessi/NNFS", "demo": "https://github.com/MattiaAlessi/NNFS/releases"}]...
|
[{"post_id": 63859, "ts": "202 [{"post_id": 63859, "ts": "2026-09-07T20:52:35Z", "hours": 1.3978, "text": "Finally finished the project. Shipping date, please upvote"}, {"post_id": 53417, "ts": "2026-08-23T23:10:48Z", "hours": 6.8908, "text": "This is the first version of my NNFS in python, I’m gonna add more activation functions etc…"}]...
|
Title: NeuralNetworkFromScratch by @MattiaAle | St Title: NeuralNetworkFromScratch by @MattiaAle | Stardance
Devlogs:
This is the first version of my NNFS in python, I’m gonna add more activation functions etc…
Finally finished the project. Shipping date, please upvote
Ships:
I made this Neural Network from Scratch in python learning all the math behind and some cool new functions...
|
1793256854.132608
|
1793343254.132608
|