|
16651
|
TheWindArcanumOS by @TheWindArcanum | Stardance
|
TheWindArcanum
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T15:50:35Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first webOS It was very..new; it’s my first time even touching code, so it took me a while to even be able to comprehend what was happening", "repo": "https://github.com/TheWindArcanum/TheWindArcanum.OS", "demo": "https://thewindarcanum.github.io/TheWindArcanum.OS/"}]...
|
[{"post_id": 22910, "ts": "202 [{"post_id": 22910, "ts": "2026-07-05T15:31:33Z", "hours": 0.7964, "text": "Made the UI in CSS, over 150 lines of code just for this aesthetic, completely worth it, I love video games, so I’m gonna show that to the world, GOOD NEWS, THE BUTTONS WORK! I made the clock look better and bigger and shoved it into timeout(the corner), AND THE FONT I WENT THROUGH 5 DIFFERENT FONTS JUST TO COME BACK TO THIS ONE LOL, i changed up the color scheme too, well that’s my last devlog for this project for a while, i have a lot more planned for webOS 2 though SO PLS GIVE ME YOUR SUPPORT(i want a camera to get better shots of clouds- I’m a amateur photographer)"}, {"post_id": 22824, "ts": "2026-07-05T12:56:40Z", "hours": 4.4739, "text": "I started working on the CSS and JS, and it’s starting to look… good? Idk, but I’ve spent hours trying to GET THESE UNCOOPERATIVE BUTTONS TO WORK! Oh, and I’ve also been learning a lot about coding; for example, the memes were not kidding. This is painful. More next time"}, {"post_id": 8083, "ts": "2026-06-13T14:31:13Z", "hours": 0.6461, "text": "Started working on the html bit of it, basically just laying the foundation for it, i just stuck to the guide(i had no clue what i was doing pls send help)"}]...
|
Title: TheWindArcanumOS by @TheWindArcanum | Stard Title: TheWindArcanumOS by @TheWindArcanum | Stardance
Devlogs:
Started working on the html bit of it, basically just laying the foundation for it, i just stuck to the guide(i had no clue what i was doing pls send help)
I started working on the CSS and JS, and it’s starting to look… good? Idk, but I’ve spent hours trying to GET THESE UNCOOPERATIVE BUTTONS TO WORK! Oh, and I’ve also been learning a lot about coding; for example, the memes were not kidding. This is painful. More next time
Made the UI in CSS, over 150 lines of code just for this aesthetic, completely worth it, I love video games, so I’m gonna show that to the world, GOOD NEWS, THE BUTTONS WORK! I made the clock look better and bigger and shoved it into timeout(the corner), AND THE FONT I WENT THROUGH 5 DIFFERENT FONTS JUST TO COME BACK TO THIS ONE LOL, i changed up the color scheme too, well that’s my last devlog for this project for a while, i have a lot more planned for webOS 2 though SO PLS GIVE ME YOUR SUPPORT(i want a camera to get better shots of clouds- I’m a amateur photographer)
Ships:
I made my first webOS It was very..new; it’s my first time even touching code, so it took me a while to even be able to comprehend what was happening...
|
1793714280.0967224
|
1793800680.0967224
|
|
16652
|
My very own WebOS by @AuraMonster | Stardance
|
AuraMonster
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @AuraMonster | Stardan Title: My very own WebOS by @AuraMonster | Stardance...
|
1792914733.377109
|
1793778733.377109
|
|
16653
|
Untitled by @notishi28 | Stardance
|
notishi28
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @notishi28 | Stardance
|
1792943407.5340781
|
1793807407.5340781
|
|
16654
|
... by @JK_Pi | Stardance
|
JK_Pi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ... by @JK_Pi | Stardance
|
1793235306.4094887
|
1793840106.4094887
|
|
16655
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792939654.279825
|
1793803654.279825
|
|
16656
|
Orbital (name is in progress) by @sqrilizz | Stard Orbital (name is in progress) by @sqrilizz | Stardance...
|
sqrilizz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Orbital (name is in progress) by @sqrilizz Title: Orbital (name is in progress) by @sqrilizz | Stardance...
|
1792914719.6024766
|
1793778719.6024766
|
|
16657
|
My very own WebOS by @MystieWistie | Stardance
|
MystieWistie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @MystieWistie | Starda Title: My very own WebOS by @MystieWistie | Stardance...
|
1793433430.2151535
|
1794038230.2151535
|
|
16658
|
Bananify by @bananabeenu | Stardance
|
bananabeenu
|
0
|
2.91
|
0
|
[]
|
[{"post_id": 7653, "ts": "2026 [{"post_id": 7653, "ts": "2026-06-12T19:55:25Z", "hours": 0.9758, "text": "What I did: Added screen states (loading, timer, and shop screen). The loading screen loads all of the music while loading so that when the user switches music tracks there isn’t a delay. It basically lasts 5 seconds and loads everything in that time. Took a bit because I had to make the loading system load a song every frame and I had to deal with strings (which I don’t like at all). What’s next: Now I have to add the banana currency system. I probably will make it so that you earn bananas every 5 minutes and you gain a lot when completing a full session. After that I have to add the stuff to buy in the shop (new music, accessories, etc.) which will take a lot of time because adding button hitboxes is annoying."}, {"post_id": 7552, "ts": "2026-06-12T16:55:20Z", "hours": 1.9317, "text": "I’ve added the Pomodoro timer (took me wayyyy to long to implement), custom cursor, animated monkey, and a music system. I didn’t test the breaks and stuff but I’ll do that when I’m done with everything else. I have to now add a banana currency which you get when you finish one part of the timer, but I have to decide what you can buy with the bananas. Also when switching through the music there’s a delay for like a second because it’s loading the music every time. I’ll have to add a loading screen to load it before so that the music switching is smooth."}]...
|
Title: Bananify by @bananabeenu | Stardance
Devlo Title: Bananify by @bananabeenu | Stardance
Devlogs:
I’ve added the Pomodoro timer (took me wayyyy to long to implement), custom cursor, animated monkey, and a music system. I didn’t test the breaks and stuff but I’ll do that when I’m done with everything else. I have to now add a banana currency which you get when you finish one part of the timer, but I have to decide what you can buy with the bananas. Also when switching through the music there’s a delay for like a second because it’s loading the music every time. I’ll have to add a loading screen to load it before so that the music switching is smooth.
What I did: Added screen states (loading, timer, and shop screen). The loading screen loads all of the music while loading so that when the user switches music tracks there isn’t a delay. It basically lasts 5 seconds and loads everything in that time. Took a bit because I had to make the loading system load a song every frame and I had to deal with strings (which I don’t like at all). What’s next: Now I have to add the banana currency system. I probably will make it so that you earn bananas every 5 minutes and you gain a lot when completing a full session. After that I have to add the stuff to buy in the shop (new music, accessories, etc.) which will take a lot of time because adding button hitboxes is annoying....
|
1793281838.7609744
|
1793886638.7609744
|
|
16659
|
My Website by @Ikelene | Stardance
|
Ikelene
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My Website by @Ikelene | Stardance
|
1793267694.5890658
|
1793872494.5890658
|
|
16660
|
IrawoPad ;) by @Irawo | Stardance
|
Irawo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: IrawoPad ;) by @Irawo | Stardance
|
1793220928.6834064
|
1793825728.6834064
|
|
16661
|
My very own WebOS by @nafilrizqi | Stardance
|
nafilrizqi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @nafilrizqi | Stardanc Title: My very own WebOS by @nafilrizqi | Stardance...
|
1793443662.4781585
|
1794048462.4781585
|
|
16662
|
My very own WebOS by @weebryan256 | Stardance
|
weebryan256
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @weebryan256 | Stardan Title: My very own WebOS by @weebryan256 | Stardance...
|
1793210041.6287467
|
1793814841.6287467
|
|
16663
|
Self navigating Azmuth Arm by @ibrahimsadat716 | S Self navigating Azmuth Arm by @ibrahimsadat716 | Stardance...
|
ibrahimsadat716
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Self navigating Azmuth Arm by @ibrahimsadat Title: Self navigating Azmuth Arm by @ibrahimsadat716 | Stardance...
|
1793490977.2822003
|
1794095777.2822003
|
|
16664
|
Knowidiot by @bobbychinmay | Stardance
|
bobbychinmay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Knowidiot by @bobbychinmay | Stardance
|
1793458068.403842
|
1794062868.403842
|
|
16665
|
study garden by @Kim | Stardance
|
Kim
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: study garden by @Kim | Stardance
|
1793317825.7997375
|
1793922625.7997375
|
|
16666
|
Frictionless by @Egemen | Stardance
|
Egemen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @Egemen | Stardance
|
1793231748.3514416
|
1793836548.3514416
|
|
16667
|
My first slack bot! by @Coolguyboss | Stardance
|
Coolguyboss
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Coolguyboss | Stard Title: My first slack bot! by @Coolguyboss | Stardance...
|
1793174137.080569
|
1793778937.080569
|
|
16668
|
My very own WebOS by @gigiii | Stardance
|
gigiii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @gigiii | Stardance
|
1793292985.962706
|
1793897785.962706
|
|
16669
|
My very own WebOS by @Hridayesh | Stardance
|
Hridayesh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Hridayesh | Stardance
|
1793411593.9508994
|
1794016393.9508994
|
|
16670
|
My awesome macropad! by @zachary_t | Stardance
|
zachary_t
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @zachary_t | Starda Title: My awesome macropad! by @zachary_t | Stardance...
|
1793573647.3489316
|
1794178447.3489316
|
|
16671
|
My very own WebOS by @zimamakmal17 | Stardance
|
zimamakmal17
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @zimamakmal17 | Starda Title: My very own WebOS by @zimamakmal17 | Stardance...
|
1793224399.3890646
|
1793829199.3890646
|
|
16672
|
GhostWriter by @TheAbsoluteMin | Stardance
|
TheAbsoluteMin
|
0
|
24.39
|
0
|
[]
|
[{"post_id": 10348, "ts": "202 [{"post_id": 10348, "ts": "2026-06-17T01:01:54Z", "hours": 14.1661, "text": "6.14.2026 - 6.15.2026 - PCB Rework and CAD (Again!) Timelapses: https://lapse.hackclub.com/timelapse/E1LnFFSLee0y , https://lapse.hackclub.com/timelapse/EB85sy2FXnay ( I know that the logged 14 hours do not match up with the logged time; there was a server problem with the publishing of the time lapse, so the server actually doubled the real time (7 hours total) by accident. ) Upon realizing that my circuit did not safely handle the high voltage from the battery, I had to adjust the PCB again! Then, I went back to working on the CAD design. It was really frustrating to deal with the micro servo as I had to figure out how i could get its servo arm to actually reach inside a tube mechanism that would push a pencil up and down with ease. Future work: One day I will figure out how to get all the pieces to cleanly fit together in the CAD…"}, {"post_id": 8478, "ts": "2026-06-14T03:10:52Z", "hours": 3.7631, "text": "June 13, 2026 - PCB Rework and Start of CAD Design - 3.5 hours Timelapse link: https://lapse.hackclub.com/timelapse/GZH49ChQPIuN I spent too much time trying to figure out where the M3 scews would go on the PCB, keeping in mind the motors below the PCB… and I had to move many wires and components solely to make room for them. After finally deciding on safe places for the screws, I quickly realized that the wheel I wanted to use would be too small for the NEMA 11 pancake stepper motor… Future work: I will try to find a solution to finally solve this puzzle so that the CAD and PCB fit together with all the components."}, {"post_id": 7813, "ts": "2026-06-13T01:16:17Z", "hours": 1.7567, "text": "June 12, 2026 - Schematics and PCB (Again) Timelapse link: https://lapse.hackclub.com/timelapse/tfSmttbk7TpE After updating the schematics and routing all the traces in the PCB, I had to plan how I would insert the M3 screw footprints, but I quickly ran into space conflicts. As a result, I had to think for a while to come up with the structure and layout of GhostWriter, which will reveal whether or not everything will be in the right place. Future work: After drawing that diagram I realized numerous conflicts in component locations, especially the micro servo, which needs to be held down with the rigid body of a 3D printed chassis, not on the PCB board! I still have to figure out where to put the M3 screws and how I will attach the micro servo and design the pen holder (how do I move a pen up and down if the servo moves in an arc?). This is quickly turning into a puzzle to solve."}, {"post_id": 7243, "ts": "2026-06-12T02:46:55Z", "hours": 4.7025, "text": "6.11.2026 - GhostWriter Schematics and PCB Timelapse link: https://lapse.hackclub.com/timelapse/goEPWNanbXN _ ( to access the link include the “_” at the end of the URL ) Hello! Welcome to the official beginning of GhostWriter! GhostWriter was inspired by DIY pen plotters, but instead of long, heavy rails, this project will feature a pocket sized pen plotter on wheels! After some research, I began to create the schematics and design the PCB layout. It was rather difficult trying to keep everything in a 90mm by 90mm layout while accommodating all the sizes of the components. Current Technical Specifications: Controller: Seeed Studio XIAO ESP32-C3 Motion: Two NEMA 11 pancake stepper motors with TMC2209 drivers and a micro servo pen lifter Power: 12V DC battery pack with a step-down buck converter for 5V and 3.3V lanes Sensors: Two TCRT5000 IR reflectance modules for detecting the edges of paper Signals: A red LED to indicate power! Future work: I changed my mind about using the A4988 motor driver after finishing the PCB layout, so next time, I will have to figure out how to adapt the wiring for the TMC2209. I will also be routing the PCB later."}]...
|
Title: GhostWriter by @TheAbsoluteMin | Stardance
Title: GhostWriter by @TheAbsoluteMin | Stardance
Devlogs:
6.11.2026 - GhostWriter Schematics and PCB Timelapse link: https://lapse.hackclub.com/timelapse/goEPWNanbXN _ ( to access the link include the “_” at the end of the URL ) Hello! Welcome to the official beginning of GhostWriter! GhostWriter was inspired by DIY pen plotters, but instead of long, heavy rails, this project will feature a pocket sized pen plotter on wheels! After some research, I began to create the schematics and design the PCB layout. It was rather difficult trying to keep everything in a 90mm by 90mm layout while accommodating all the sizes of the components. Current Technical Specifications: Controller: Seeed Studio XIAO ESP32-C3 Motion: Two NEMA 11 pancake stepper motors with TMC2209 drivers and a micro servo pen lifter Power: 12V DC battery pack with a step-down buck converter for 5V and 3.3V lanes Sensors: Two TCRT5000 IR reflectance modules for detecting the edges of paper Signals: A red LED to indicate power! Future work: I changed my mind about using the A4988 motor driver after finishing the PCB layout, so next time, I will have to figure out how to adapt the wiring for the TMC2209. I will also be routing the PCB later.
June 12, 2026 - Schematics and PCB (Again) Timelapse link: https://lapse.hackclub.com/timelapse/tfSmttbk7TpE After updating the schematics and routing all the traces in the PCB, I had to plan how I would insert the M3 screw footprints, but I quickly ran into space conflicts. As a result, I had to think for a while to come up with the structure and layout of GhostWriter, which will reveal whether or not everything will be in the right place. Future work: After drawing that diagram I realized numerous conflicts in component locations, especially the micro servo, which needs to be held down with the rigid body of a 3D printed chassis, not on the PCB board! I still have to figure out where to put the M3 screws and how I will attach the micro servo and design the pen holder (how do I move a pen up and down if the servo moves in an arc?). This is quickly turning into a puzzle to solve.
June 13, 2026 - PCB Rework and Start of CAD Design - 3.5 hours Timelapse link: https://lapse.hackclub.com/timelapse/GZH49ChQPIuN I spent too much time trying to figure out where the M3 scews would go on the PCB, keeping in mind the motors below the PCB… and I had to move many wires and components solely to make room for them. After finally deciding on safe places for the screws, I quickly realized that the wheel I wanted to use would be too small for the NEMA 11 pancake stepper motor… Future work: I will try to find a solution to finally solve this puzzle so that the CAD and PCB fit together with all the components.
6.14.2026 - 6.15.2026 - PCB Rework and CAD (Again!) Timelapses: https://lapse.hackclub.com/timelapse/E1LnFFSLee0y , https://lapse.hackclub.com/timelapse/EB85sy2FXnay ( I know that the logged 14 hours do not match up with the logged time; there was a server problem with the publishing of the time lapse, so the server actually doubled the real time (7 hours total) by accident. ) Upon realizing that my circuit did not safely handle the high voltage from the battery, I had to adjust the PCB again! Then, I went back to working on the CAD design. It was really frustrating to deal with the micro servo as I had to figure out how i could get its servo arm to actually reach inside a tube mechanism that would push a pencil up and down with ease. Future work: One day I will figure out how to get all the pieces to cleanly fit together in the CAD…...
|
1793638197.5390556
|
1794242997.5390556
|
|
16673
|
My very own WebOS by @himabh643 | Stardance
|
himabh643
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @himabh643 | Stardance
|
1793537404.389824
|
1794142204.389824
|
|
16674
|
My very own WebOS by @asour | Stardance
|
asour
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @asour | Stardance
|
1793404241.9601
|
1794009041.9601
|
|
16675
|
My very own WebOS by @Nari | Stardance
|
Nari
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Nari | Stardance
|
1793440446.2038982
|
1794045246.2038982
|
|
16676
|
Untitled project by @ezekiel_oshay | Stardance
|
ezekiel_oshay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @ezekiel_oshay | Starda Title: Untitled project by @ezekiel_oshay | Stardance...
|
1793170208.1166885
|
1793775008.1166885
|
|
16677
|
My very own WebOS by @Amritanshu | Stardance
|
Amritanshu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Amritanshu | Stardanc Title: My very own WebOS by @Amritanshu | Stardance...
|
1793382508.6809146
|
1793987308.6809146
|
|
16678
|
Webshooter beta by @MRme22 | Stardance
|
MRme22
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Webshooter beta by @MRme22 | Stardance
|
1793569929.8026161
|
1794433929.8026161
|
|
16679
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792921817.691187
|
1793785817.691187
|
|
16680
|
1812 - Board Game by @TyrantLizard76 | Stardance
|
TyrantLizard76
|
0
|
33.12
|
0
|
[]
|
[{"post_id": 50288, "ts": "202 [{"post_id": 50288, "ts": "2026-08-19T13:18:40Z", "hours": 5.1994, "text": "After a long break due to… Life…. I am back again, and this time I have worked on making the next game piece: artillery! (I also figured out how to render)."}, {"post_id": 31790, "ts": "2026-07-20T13:52:04Z", "hours": 11.1297, "text": "Post-vacation now, and I have had time to get a lot done. I forgot to post a photo of the one game piece, but this is what I have so far. I started drawing provinces in the Duchy of Warsaw and the Prussian area, and I will have more work done soon! (Sorry, I would post more, but I am short on time)"}, {"post_id": 13749, "ts": "2026-06-22T15:15:13Z", "hours": 9.3169, "text": "GAME BOARDS!!!!! After hours of work, I have now finally drawn the all of the nations that will be on the map! I still have to draw the providences, but this is a great place to be in!!"}, {"post_id": 8839, "ts": "2026-06-14T18:13:08Z", "hours": 7.4731, "text": "Game Instructions!! I have started work on a board game that take insperation for Axis and Allies, along with Risk. I wanted to do something with the Napoleonic wars, so I decided to do one of the largest turning points of the era, the 1812 invasion of Russia! For the first 7 hours, I have just been working on instructions. Please read the background below to hear what I have."}]...
|
Title: 1812 - Board Game by @TyrantLizard76 | Star Title: 1812 - Board Game by @TyrantLizard76 | Stardance
Devlogs:
Game Instructions!! I have started work on a board game that take insperation for Axis and Allies, along with Risk. I wanted to do something with the Napoleonic wars, so I decided to do one of the largest turning points of the era, the 1812 invasion of Russia! For the first 7 hours, I have just been working on instructions. Please read the background below to hear what I have.
GAME BOARDS!!!!! After hours of work, I have now finally drawn the all of the nations that will be on the map! I still have to draw the providences, but this is a great place to be in!!
Post-vacation now, and I have had time to get a lot done. I forgot to post a photo of the one game piece, but this is what I have so far. I started drawing provinces in the Duchy of Warsaw and the Prussian area, and I will have more work done soon! (Sorry, I would post more, but I am short on time)
After a long break due to… Life…. I am back again, and this time I have worked on making the next game piece: artillery! (I also figured out how to render)....
|
1793447293.500445
|
1794052093.500445
|
|
16681
|
Untitled by @Sasindu25 | Stardance
|
Sasindu25
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Sasindu25 | Stardance
|
1793472804.8214815
|
1794077604.8214815
|
|
16682
|
Foodprints by @AK2477 | Stardance
|
AK2477
|
0
|
27.1
|
0
|
[]
|
[{"post_id": 33096, "ts": "202 [{"post_id": 33096, "ts": "2026-07-22T18:10:59Z", "hours": 3.34, "text": "Foodprints - Devlog 2 Implemented receiptp generation Improved aesthetics Fixed minor bugs"}, {"post_id": 31099, "ts": "2026-07-19T07:07:07Z", "hours": 23.7594, "text": "Foodprints - DEVLOG 1 Most calorie trackers focus on data. Foodprints focuses on create memorable daily records through receipt style summaries, making tracking feel more engaging and less like a chore. (PS: This is my first project and my first time learning to code)"}]...
|
Title: Foodprints by @AK2477 | Stardance
Devlogs: Title: Foodprints by @AK2477 | Stardance
Devlogs:
Foodprints - DEVLOG 1 Most calorie trackers focus on data. Foodprints focuses on create memorable daily records through receipt style summaries, making tracking feel more engaging and less like a chore. (PS: This is my first project and my first time learning to code)
Foodprints - Devlog 2 Implemented receiptp generation Improved aesthetics Fixed minor bugs...
|
1793274927.7303436
|
1793879727.7303436
|
|
16683
|
Blur Stuff by @AbdurRehman | Stardance
|
AbdurRehman
|
1
|
126.53
|
826
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-15T15:46:55Z", "hours": 118.0, "multiplier": 14.02, "payout": 826, "blessing": "neutral", "text": "I made Blur Stuff, a privacy focused tool for safely sharing images, videos, GIFs, and documents. It automatically detects sensitive information such as faces, license plates, text, and PII, then lets you anonymize the detected areas with different anonymization effects. It also removes EXIF metadata so other sensitive information isn’t left hidden inside the file. The goal of this project is to make sharing media safely as easy as uploading it. Instead of manually searching through a file like a document or photo and manually covering stuff you don’t want others to see, Blur Stuff does this work for you. The hardest part of making this project was making anonymization work reliably across different types of media. Images were relatively simple, but videos and GIFs require frame by frame processing while keeping detections consistent over time. And to make things efficient and fast I also had to deal with things like tracking which were really tricky. Connecting the frontend and backend was also another challenge and then hosting everything also brought it’s problems with dependency conflicts which took quite a while to solve. The thing I am most proud of is that this became a real working and professional looking application rather than just a prototype type thing. It supports most of the commonly used media formats, has multiple customization options among other neat functionalities. Also I like how this project is privacy focused. Like it doesn’t store the user’s files ever. It just processes them, removing EXIF, and gives the result. Blur Stuff can be tested by uploading an image containing faces, text, or a license plate and let it detect the sensitive regions and then select what you want anonymized, and run the anonymization. The current deployment has limited memory and resources since I’m on a free plan, so larger videos and documents can take a while to process, and very large files may run into resource limitations. The app is also deployed using Railway’s serverless option, so the server may need a few seconds to start up if it hasn’t received a request recently. Also the selected region anonymization for videos is still a bit buggy but mostly it works. These are areas I will improve in the future.", "repo": "https://github.com/RealAbdurRehman/blur-stuff", "demo": "https://blurstuff.up.railway.app"}]...
|
[{"post_id": 50269, "ts": "202 [{"post_id": 50269, "ts": "2026-08-19T13:00:35Z", "hours": 8.5269, "text": "Since shipping Blur Stuff, I got feedback that the frontend felt too generic so I completely revamped the UI to give it a more intentional and fun style. I redesigned everything from colors to typography and everything else. Now the app has a more personal feel. I also cleaned up some small things here and there."}, {"post_id": 47548, "ts": "2026-08-15T14:59:59Z", "hours": 6.7497, "text": "Since the previous dev log, I have been focused on getting Blur Stuff ready for deployment. This ended up being much more painful than I expected. The biggest part was dealing with dependency issues. The project worked locally, but moving everything to a production environment exposed a bunch of problems with Python versions, PaddlePaddle, PaddleOCR, PaddleX, PyYAML, spaCy, OpenCV and other dependencies. I spent a lot of time testing different configurations, fixing dependency conflicts, debugging the production container, and figuring out why things that seemed to work okay locally were breaking during deployment. The biggest headache was PaddleOCR. I had to deal with missing system libraries, model downloading, Paddle initialization issues and eventually a oneDNN runtime error that was causing OCR requests to return 503s. After a lot of debugging and testing different configurations, I eventually got the OCR pipeline working properly in production. That was probably the one of the most frustrating parts of the entire project, but it is finally done. I also switched the spaCy model from en_core_web_lg to en_core_web_sm. The larger model was unnecessarily heavy for what Blur Stuff needs and was making deployments take way longer. Switching to the smaller model made deployment faster and also improved performance without having a noticeable impact on the PII detection quality. After successful deployment I finished the README and added the final assets, screenshots, logo and documentation. I added the MIT license, favicon, deployment related changes and generally cleaned up the entire repository. At this point, I think Blur Stuff is ready to ship. There are definitely still improvements I could make, especially improving performance, making video anonymization more reliable and efficient, and polishing various parts of the application but I don’t want to spend more time trying to make everything perfect. The current deployment is also running on Railway’s free plan, so there are some resource and memory limitations since Blur Stuff runs several machine learning models in the same process. For now, I’m okay with that rather than spending more time optimizing around the limitations of a free deployment. For now, I’m calling it finished and shipping it since the core functionality is working and the project is deployed. I’ll definitely come back to Blur Stuff later to improve it, but I think it’s time to move on to something new."}, {"post_id": 46326, "ts": "2026-08-13T13:59:24Z", "hours": 10.0189, "text": "Since the previous dev log, I worked on fixing the remaining issues in the anonymization workflow and finishing the frontend around the application. The biggest thing I worked on was selected video anonymization. There were still some problems where selected areas could stop being anonymized correctly or the anonymization could move away from the actual object as it moved through the video or retracking when something like a face was lost. I spent quite a lot of time testing different things, tracking down where the problems were coming from, and making the selected anonymization much more reliable across video frames. This ended up taking a lot more work than I initially expected, but the selected video workflow is now working much better. It still isn’t perfect and there are still some bugs and I think I probably need a lot more time to find and fix them but right now it is in a decent working state so I don’t plan to spend more time on achieving perfection because debugging and stuff is boring as hell. I also made some improvements to the overall frontend and added the remaining main pages. I added the about, arivacy, documentation pages and also did some other improvents around the frontend. The documentation now explains the available endpoints, detection targets, anonymization modes and other features. At this point, I feel like the main application is in a really good place. The core functionality is implemented, the main frontend workflow is complete, and the remaining work is mostly getting this thing hosted and stuff. Next, I plan to write the README file, host the application, and do a final round of testing and cleanup. After that, I think I’ll consider this project finished for a while (I will work on improving it further later) and move on to building something new."}, {"post_id": 45041, "ts": "2026-08-11T08:51:50Z", "hours": 10.0544, "text": "Since the previous dev log, I continued building the application workflow and have almost completed the anonymization process. I first worked on the anonymization routes and updated the backend so that the frontend can send detected regions back to the API and have them anonymized. This allows the user to choose which detections they want to anonymize instead of always having to process everything. I also added support for passing dynamic padding (and also made it so that other dynamic stuff is easy to add later) through the request so that the effects can be customized based on what the user wants. I also added client side file handling required for the results page. The original and processed files are kept available in the browser so they can be previewed and downloaded without needing to be stored on the server. Everything also handles missing files and stuff without breaking and I also added error handling with notifications which are displayed to the user. I also made a bunch of smaller UI improvements while connecting everything together. At this point, the main frontend workflow is coming together. Next I will fix small remaining issues and improve reliability rather than adding any major change. The next things I plan to work on are to mainly fix bugs in the code. Like GIFs still need some additional handling to make sure detections are applied across the animation rather than being treated like a normal image and the existing video tracking system is able to follow detections across frames, but during testing I noticed that the anonymization can drift away from the actual detected regions in videos. This is the major thing I need to fix. And I also plan to do some small changes to the UI and stuff and fix some bugs there before adding the remaining pages like the API and documentation pages."}, {"post_id": 44018, "ts": "2026-08-09T14:49:05Z", "hours": 8.77, "text": "Since the previous dev log, I continued building the application workflow and moved beyond the initial upload interface into review/customization functionality. I first worked on the file preview system so that uploaded files can be displayed correctly even when the browser cannot natively display them. Now a preview is generated for unsupported images and documents while keeping browser previews for files that are already supported. After that, I built the results page, which is where the user can review the detections found in their uploaded file and also customise stuff for anonymisation. The biggest addition was the detection review panel. Instead of simply processing everything automatically, the interface now shows the detected content which will allow users to review individual detections and choose which ones they want to work with. A lot of the work also went into the smaller UI/UX improvements. I also fixed a ton of issues that came up while connecting the different pieces together and handling the detection data and working with different file formats. At this point, the frontend is starting to really come together and look like a real app. The next step is to connect stuff to my anonymization API. The user will be able to to select specific detections, choose how they want them anonymized, and add other customizations."}, {"post_id": 43070, "ts": "2026-08-08T04:16:11Z", "hours": 7.8842, "text": "Since the previous dev log, I continued working on the frontend and have now finished the main landing page as well as the initial anonymize/file upload page. I first started by completing the remaining parts of the landing page by adding the footer, API description section, and some final component layout and CSS improvements. After that, I started building the anonymize page, which is where the actual application workflow begins. I implemented the complete upload interface with both file selection and drag and drop feature. I also added client side file handling so uploaded files can be passed from the landing page to the anonymize page without having to upload them to the server first. To do this, I implemented a small IndexedDB based file storage system in the browser. Uploaded files are temporarily stored locally with a timestamp allowing the anonymize page to retrieve the file when the user arrives there. The stored file automatically expires after a short period and is also removed once it has been retrieved. This keeps the upload flow client side and also avoids putting the file data into the URL or sending it to the backend before processing when not needed. The anonymize page now also handles different file types correctly and displays a preview based on their type. I also added different anonymization options making it straightforward to pass the processing preferences to the backend. I too spent time fixing bugs and adding small UX improvements across the new frontend functionality. Next I am going to connect the interface to the backend API and build the actual processing experience. Rather than anonymizing everything automatically, I will create a processing page where the user will be able to decide what to anonymize and I will probably add more customization."}, {"post_id": 41878, "ts": "2026-08-06T11:22:26Z", "hours": 9.1442, "text": "Since the previous dev log I’ve been completely focused on the frontend. I first set up the frontend stack by integrating Tailwind CSS for styles and Alpine.js for lightweight interactivity. I also created a reusable layout with shared components such as the header that future pages can be built consistently and easily. With that foundation in place, I began implementing the landing page. I designed and built the hero section, which consists of a cool drag and drop upload area, and an interactive before/after comparison slider that allows users to visually compare original and anonymized images, which makes the landing page looks awesome. Besides frontend work, I made a few backend improvements as well, including cleaning up temporary video files after processing to avoid leaving unnecessary files behind as originally they weren’t properly disposed of. Next I plan to continue working on the landing page for a bit by adding a footer and maybe some other useful section before connecting everything to the existing API and implementing the upload and processing workflow and building the remaining pages needed."}, {"post_id": 40707, "ts": "2026-08-04T12:12:59Z", "hours": 5.1222, "text": "I focused on preparing everything for the frontend rather than adding new features. I reorganized the API by moving all routes into a dedicated package and grouping every endpoint under /api/v1. This gives everything a much cleaner structure and makes everything look professional. I also added detection endpoints for all supported files. Before the project was primarily focused on anonymization, and even though I had a detection endpoint, it only supported images and was buggy. These new endpoints allows receiving detection results directly without applying any effects and serve as a foundation for selective anonymization that I will implement later. While implementing these endpoints, I refactored how detection IDs are handled across the application. Before they too were buggy but I got them to work. I not only worked on the backend but also worked on the frontend by laying out it’s initial structure that I will build upon. I also spent some time cleaning up the codebase by removing unused imports and simplifying parts of the project. Now I plan to really start working on building the frontend. Now that the API structure is in place, I want to focus on creating a professional looking interface that allows users to interact with all of the functionality that has been implemented so far plus more."}, {"post_id": 40104, "ts": "2026-08-03T14:28:55Z", "hours": 7.8764, "text": "I expanded the range of file types that the application supports. Image support now includes TIFF/TIF, HEIC/HEIF, and GIF files. HEIC/HEIF images are automatically converted to PNG after processing since they are not widely supported for encoding. I also added support for documents which include PDF, DOCX, PPTX, and XLSX files. Rather than building separate anonymization logic for every Office file format, they are first converted to PDF and then are annonymized the same way as PDFs which keeps the implementation much simpler. While working on adding support for these files, I noticed that I had a bunch of duplicated code. So I spent some time refactoring stuff and removing duplicated stuff. I also found that GIF processing was slow so I worked on making it faster by treating it the same as a video and using trackers on it rather than running detection on every frame. I also made few smaller improvements, including adjusting the confidence thresholds for some of the detectors since I was noticing a bunch of false positives and fixing several bugs that came along the way. The next thing I plan to work on are cleaning up the code by finding and removing unused stuff, and then building the frontend for the application."}, {"post_id": 39358, "ts": "2026-08-02T09:02:20Z", "hours": 4.3503, "text": "I focused on improving the performance and maintainability of the anonymization system rather than adding new features. The biggest change was a refactor of the video anonymization system. Instead of repeatedly creating new anonymization masks for every frame, the tracker now caches and reuses them wherever possible. This reduces unnecessary work during video processing and also makes it easier in the future to add further performance improvements. I also improved the applications behavior by preventing both full text anonymization and PII anonymization to be selected at the same time since these targets overlap and would produce redundant processing. I also cleaned up several parts of the codebase by removing unused code and making the everything a bit easier to maintain. I also spent a lot of time experimenting with more aggressive optimization techniques but after testing, I decided to postpone those changes because they added complexity without providing the improvement I was looking for (and they were kind of buggy and it would take a lot more time to fix them). Instead, I decided to focus on optimizations that are simpler. Right now I don’t plan to work on improving the performance (even though there probably are tons of improvements to be made) because that stuff is boring and difficult as hell. Instead I’m going to add support for more file types like PDF."}, {"post_id": 38921, "ts": "2026-08-01T14:49:34Z", "hours": 4.2206, "text": "I expanded the anonymization system by adding multiple anonymization modes instead of having only the pixelization effect. The application can now switch between anonymizing regions using blur, solid fill, noise, emoji overlay, and inpainting. The emoji overlay right now is pretty basic but I plan on improving it later. I also improved the quality of face anonymization by replacing rectangular masks with elliptical masks (for some of the effects), producing better looking results. I also refactored the anonymization pipeline to separate anonymization effects from overlay rendering making future additions even easier and also cleaned up and reorganized the existing image effect implementations to improve readability and consistency across the project. Next, I plan to improve the performance of the anonymization system by trying to reuse detection targets and effect masks wherever possible."}, {"post_id": 38713, "ts": "2026-08-01T08:01:59Z", "hours": 2.0572, "text": "I improved the overall quality and efficiency of the video anonymization system. I updated detection intervals to use the video’s frame rate instead of relying on a hard coded number of frames. This allows the system to adapt well to videos with different frame rates. I also evaluated several object tracking algorithms, including DaSiamRPN, to find a good one that balances accuracy and speed. After comparing the performance of a bunch of them, I switched to Nano Tracker which was faster than my original KCF and CSRT trackers while being more accurate. I made additional improvements to privacy by removing metadata from exported videos. I am now also applying EXIF orientation before processing ensuring that images taken from different devices are processed in their correct orientation. Next, I plan to introduce different anonymization modes like blur and solid black boxes."}, {"post_id": 38633, "ts": "2026-08-01T04:05:36Z", "hours": 6.9461, "text": "I focused on adding support for videos. I first implemented a basic video anonymization system so uploaded videos could be processed the same way as images. I also made sure that the audio for the video is preserved so that it carries over to the anonymized video being unchanged. After getting the basic system working, I improved how videos are processed by adding object tracking and scene change detection. Instead of running detections on every frame, the system can now follow previously detected objects across frames and automatically run detections again when needed (when a tracker is lost, or the scene changes drastically, or periodically after a set amount of frames). This provides a great performance boost while the result stays reliable. Next, I want to continue improving video processing by optimizing it further and making it more accurate."}, {"post_id": 37518, "ts": "2026-07-30T10:23:19Z", "hours": 3.8147, "text": "I focused on improving the entire OCR system, as the previous approach with EasyOCR was missing too much text and reducing the accuracy of the entire system. After spending quite a bit of time trying to improve it, I decided to replace it with PaddleOCR. Now more accurate text detections are being produced making the entire program more robust. After, I expanded the regex based detectors to also account for URLs in addition to emails, etc. I also improved the phone number detection logic to reduce false positives and improve overall accuracy. Then, I adjusted padding around blurred regions so that stuff is covered more consistently and without blurring unnecessary content. The last thing I did was optimizing PaddleOCR as it was much slower than EasyOCR. After a lot of tinkering I was able to significantly reduce its processing time. For some files it now performs at roughly the same speed as EasyOCR while being way more accurate. Next, I probably want to add support for more file types and ultimately videos. And later also support for multiple languages."}, {"post_id": 36966, "ts": "2026-07-29T12:14:19Z", "hours": 3.4994, "text": "I added a new way for the app to detect personal information by using named entity recognition. Previously, the app could only find structured information like emails and phone numbers, but it could not detect things like names. So I integrated Presidio to identify such information from the text extracted from images. These extractions are then combined with the existing PII detections done using regex for the structured stuff. This improves the accuracy of the entire system by combining multiple detection methods instead of relying on one single approach. Next, I will improve the detection process further as right now it isn’t too accurate, mostly because I think the OCR is missing some stuff from the text. So I might try replacing it or find some other way."}, {"post_id": 36365, "ts": "2026-07-28T13:10:24Z", "hours": 6.6581, "text": "I implemented PII detection, allowing the app to identify and blur sensitive information within the text extracted from images instead of blurring everything blindly. First I used regular expressions to detect structured data such as email addresses, phone numbers, etc. But OCR frequently omitted punctuation, causing many valid emails to be missed. To fix this, I redesigned the everything around an OCR token graph. Each token stores its bounding box, neighboring tokens, and line information, allowing the detections to be more accurate. I might switch to PaddleOCR again or someother ocr so that I get more accurate detections. I also spent time improving the overall design of the PII detection system. These changes make it easier to extend in the future while improving the accuracy of the detected regions that are blurred. Next, I will implement NER based detection to identify unstructured personal information such as names."}, {"post_id": 21527, "ts": "2026-07-03T15:19:19Z", "hours": 5.6331, "text": "I implemented OCR-based text detection, allowing the application to detect text within uploaded images. I initially used PaddleOCR, but found that it took over 30 seconds to process a single image. After spending a lot of time trying to optimize its performance, I decided to switch to EasyOCR, which reduced the processing time to around one second while maintaining the same detection quality. Switching the OCR engines was well worth it. I also tried to keep the OCR implementation consistent with the face and license plate detectors and also optimized them too. Next, I will implement detection of sensitive information within the extracted text using regular expressions and NER. This will allow the application to distinguish ordinary text from personal information such as names, emails, phone numbers, etc, and allow me to blur only the relevant regions (right now the the entirety of the detected text is blurred)."}, {"post_id": 20974, "ts": "2026-07-02T18:27:02Z", "hours": 3.4869, "text": "I expanded the application by adding support for license plate detection and blurring. The app can now detect both faces and license plates in an image and blur them. I also made the API more flexible by allowing users to choose what they want to anonymize. Instead of always processing everything, they can now select whether to detect faces, license plates, or both. This makes the application more efficient and easier to extend with new features in the future. I also improved the structure of the project so that adding new types of detections will require much less work. I also added unique ids to each detection, which will be useful for future features that let users blur individual detections. Next, I will implement detection of sensitive text within images. This will allow the app to identify information such as email addresses, phone numbers, and other personal details, then blur them."}, {"post_id": 20600, "ts": "2026-07-02T07:10:58Z", "hours": 1.7692, "text": "I focused on improving the backend rather than adding new features. I reorganized the API by splitting it into smaller, more focused endpoints. For example, there’s now a dedicated endpoint that only detects faces and returns their locations, while separate endpoints handle image anonymization and API health checks. This makes the API easier to use and gives me more flexibility as I add new features. I also reorganized the detection system so that all object detection goes through a single service. At the moment it only detects faces, but it’s now much easier to add support for other types, such as license plates, without having to redesign the rest of the application. Health check endpoints let the application report whether it’s running correctly and whether the AI models have loaded successfully. Next I’m going to add detection beyond faces by adding license plate detection. These changes are gonna make it much easier for me to do so."}, {"post_id": 20144, "ts": "2026-07-01T18:06:28Z", "hours": 2.2011, "text": "I spent some time refining the face anonymization system. The pixelation effect was completely reworked to produce smoother, better looking results while blurring the faces more accurately (using the previous blur you could sometimes make out the features of the people). I also cleaned up the implementation, making the blur functionality much simpler and easier to maintain and most importantly I made it more reusable for ease of use in the future for more features. Behind the scenes, I also reorganized the project’s Python environment by removing unused libraries and recreating the virtual environment. Next I am planning to either add support for videos or make the API better by creating more focused routes such as one that only detects faces and other that returns the blur image. I also want to add functionality where the user can select which people to anonymize instead of blurring everybody detected. After that, I’ll expand beyond simple face anonymization by adding support for automatically detecting and anonymizing other sensitive information, such as license plates, documents, and other personally identifiable content."}, {"post_id": 19929, "ts": "2026-07-01T11:30:11Z", "hours": 4.4158, "text": "Replaced the temporary grayscale filter with automatic face anonymization. Uploaded images are now scanned for faces, and every detected face is pixelated. I also improved detection accuracy to reduce missed faces by tweaking a bunch of stuff for a while and adding more functionality to my face detection like running the image at multiple sizes. A lot of my time was also spent making the pixelated effect look good. I first went for only blurring the faces but now the face is pixelated along with a smooth transition into the surrounding image making the effect look pretty good. Right now images with large crowds are correctly blurred, including people who are far away or appear very small in the image."}, {"post_id": 19370, "ts": "2026-06-30T17:34:05Z", "hours": 1.9744, "text": "Integrated OpenCV so uploaded images are now decoded, processed, and returned to the client. I also introduced modularity into the code by creating separate modules for each step. The grayscale filter is only a temporary placeholder before I implement functionality such as blurring faces."}, {"post_id": 19094, "ts": "2026-06-30T09:42:15Z", "hours": 0.4869, "text": "Added image upload functionality with validation for missing files and non image uploads. The API right now only returns basic metadata about the upload. Next I’ll integrate OpenCV to begin the image processing stage."}, {"post_id": 19079, "ts": "2026-06-30T08:42:18Z", "hours": 0.6667, "text": "Set up the project’s foundation by creating Flask application structure, initializing Git, creating a virtual environment, and organizing the codebase for future features. I also got the development server running to verify everything is wired up correctly. Next, I’ll implement image uploads."}]...
|
Title: Blur Stuff by @AbdurRehman | Stardance
Dev Title: Blur Stuff by @AbdurRehman | Stardance
Devlogs:
Set up the project’s foundation by creating Flask application structure, initializing Git, creating a virtual environment, and organizing the codebase for future features. I also got the development server running to verify everything is wired up correctly. Next, I’ll implement image uploads.
Added image upload functionality with validation for missing files and non image uploads. The API right now only returns basic metadata about the upload. Next I’ll integrate OpenCV to begin the image processing stage.
Integrated OpenCV so uploaded images are now decoded, processed, and returned to the client. I also introduced modularity into the code by creating separate modules for each step. The grayscale filter is only a temporary placeholder before I implement functionality such as blurring faces.
Replaced the temporary grayscale filter with automatic face anonymization. Uploaded images are now scanned for faces, and every detected face is pixelated. I also improved detection accuracy to reduce missed faces by tweaking a bunch of stuff for a while and adding more functionality to my face detection like running the image at multiple sizes. A lot of my time was also spent making the pixelated effect look good. I first went for only blurring the faces but now the face is pixelated along with a smooth transition into the surrounding image making the effect look pretty good. Right now images with large crowds are correctly blurred, including people who are far away or appear very small in the image.
I spent some time refining the face anonymization system. The pixelation effect was completely reworked to produce smoother, better looking results while blurring the faces more accurately (using the previous blur you could sometimes make out the features of the people). I also cleaned up the implementation, making the blur functionality much simpler and easier to maintain and most importantly I made it more reusable for ease of use in the future for more features. Behind the scenes, I also reorganized the project’s Python environment by removing unused libraries and recreating the virtual environment. Next I am planning to either add support for videos or make the API better by creating more focused routes such as one that only detects faces and other that returns the blur image. I also want to add functionality where the user can select which people to anonymize instead of blurring everybody detected. After that, I’ll expand beyond simple face anonymization by adding support for automatically detecting and anonymizing other sensitive information, such as license plates, documents, and other personally identifiable content.
I focused on improving the backend rather than adding new features. I reorganized the API by splitting it into smaller, more focused endpoints. For example, there’s now a dedicated endpoint that only detects faces and returns their locations, while separate endpoints handle image anonymization and API health checks. This makes the API easier to use and gives me more flexibility as I add new features. I also reorganized the detection system so that all object detection goes through a single service. At the moment it only detects faces, but it’s now much easier to add support for other types, such as license plates, without having to redesign the rest of the application. Health check endpoints let the application report whether it’s running correctly and whether the AI models have loaded successfully. Next I’m going to add detection beyond faces by adding license plate detection. These changes are gonna make it much easier for me to do so.
I expanded the application by adding support for license plate detection and blurring. The app can now detect both faces and license plates in an image and blur them. I also made the API more flexible by allowing users to choose what they want to anonymize. Instead of always processing everything, they can now select whether to detect faces, license plates, or both. This makes the application more efficient and easier to extend with new features in the future. I also improved the structure of the project so that adding new types of detections will require much less work. I also added unique ids to each detection, which will be useful for future features that let users blur individual detections. Next, I will implement detection of sensitive text within images. This will allow the app to identify information such as email addresses, phone numbers, and other personal details, then blur them.
I implemented OCR-based text detection, allowing the application to detect text within uploaded images. I initially used PaddleOCR, but found that it took over 30 seconds to process a single image. After spending a lot of time trying to optimize its performance, I decided to switch to EasyOCR, which reduced the processing time to around one second while maintaining the same detection quality. Switching the OCR engines was well worth it. I also tried to keep the OCR implementation consistent with the face and license plate detectors and also optimized them too. Next, I will implement detection of sensitive information within the extracted text using regular expressions and NER. This will allow the application to distinguish ordinary text from personal information such as names, emails, phone numbers, etc, and allow me to blur only the relevant regions (right now the the entirety of the detected text is blurred).
I implemented PII detection, allowing the app to identify and blur sensitive information within the text extracted from images instead of blurring everything blindly. First I used regular expressions to detect structured data such as email addresses, phone numbers, etc. But OCR frequently omitted punctuation, causing many valid emails to be missed. To fix this, I redesigned the everything around an OCR token graph. Each token stores its bounding box, neighboring tokens, and line information, allowing the detections to be more accurate. I might switch to PaddleOCR again or someother ocr so that I get more accurate detections. I also spent time improving the overall design of the PII detection system. These changes make it easier to extend in the future while improving the accuracy of the detected regions that are blurred. Next, I will implement NER based detection to identify unstructured personal information such as names.
I added a new way for the app to detect personal information by using named entity recognition. Previously, the app could only find structured information like emails and phone numbers, but it could not detect things like names. So I integrated Presidio to identify such information from the text extracted from images. These extractions are then combined with the existing PII detections done using regex for the structured stuff. This improves the accuracy of the entire system by combining multiple detection methods instead of relying on one single approach. Next, I will improve the detection process further as right now it isn’t too accurate, mostly because I think the OCR is missing some stuff from the text. So I might try replacing it or find some other way.
I focused on improving the entire OCR system, as the previous approach with EasyOCR was missing too much text and reducing the accuracy of the entire system. After spending quite a bit of time trying to improve it, I decided to replace it with PaddleOCR. Now more accurate text detections are being produced making the entire program more robust. After, I expanded the regex based detectors to also account for URLs in addition to emails, etc. I also improved the phone number detection logic to reduce false positives and improve overall accuracy. Then, I adjusted padding around blurred regions so that stuff is covered more consistently and without blurring unnecessary content. The last thing I did was optimizing PaddleOCR as it was much slower than EasyOCR. After a lot of tinkering I was able to significantly reduce its processing time. For some files it now performs at roughly the same speed as EasyOCR while being way more accurate. Next, I probably want to add support for more file types and ultimately videos. And later also support for multiple languages.
I focused on adding support for videos. I first implemented a basic video anonymization system so uploaded videos could be processed the same way as images. I also made sure that the audio for the video is preserved so that it carries over to the anonymized video being unchanged. After getting the basic system working, I improved how videos are processed by adding object tracking and scene change detection. Instead of running detections on every frame, the system can now follow previously detected objects across frames and automatically run detections again when needed (when a tracker is lost, or the scene changes drastically, or periodically after a set amount of frames). This provides a great performance boost while the result stays reliable. Next, I want to continue improving video processing by optimizing it further and making it more accurate.
I improved the overall quality and efficiency of the video anonymization system. I updated detection intervals to use the video’s frame rate instead of relying on a hard coded number of frames. This allows the system to adapt well to videos with different frame rates. I also evaluated several object tracking algorithms, including DaSiamRPN, to find a good one that balances accuracy and speed. After comparing the performance of a bunch of them, I switched to Nano Tracker which was faster than my original KCF and CSRT trackers while being more accurate. I made additional improvements to privacy by removing metadata from exported videos. I am now also applying EXIF orientation before processing ensuring that images taken from different devices are processed in their correct orientation. Next, I plan to introduce different anonymization modes like blur and solid black boxes.
I expanded the anonymization system by adding multiple anonymization modes instead of having only the pixelization effect. The application can now switch between anonymizing regions using blur, solid fill, noise, emoji overlay, and inpainting. The emoji overlay right now is pretty basic but I plan on improving it later. I also improved the quality of face anonymization by replacing rectangular masks with elliptical masks (for some of the effects), producing better looking results. I also refactored the anonymization pipeline to separate anonymization effects from overlay rendering making future additions even easier and also cleaned up and reorganized the existing image effect implementations to improve readability and consistency across the project. Next, I plan to improve the performance of the anonymization system by trying to reuse detection targets and effect masks wherever possible.
I focused on improving the performance and maintainability of the anonymization system rather than adding new features. The biggest change was a refactor of the video anonymization system. Instead of repeatedly creating new anonymization masks for every frame, the tracker now caches and reuses them wherever possible. This reduces unnecessary work during video processing and also makes it easier in the future to add further performance improvements. I also improved the applications behavior by preventing both full text anonymization and PII anonymization to be selected at the same time since these targets overlap and would produce redundant processing. I also cleaned up several parts of the codebase by removing unused code and making the everything a bit easier to maintain. I also spent a lot of time experimenting with more aggressive optimization techniques but after testing, I decided to postpone those changes because they added complexity without providing the improvement I was looking for (and they were kind of buggy and it would take a lot more time to fix them). Instead, I decided to focus on optimizations that are simpler. Right now I don’t plan to work on improving the performance (even though there probably are tons of improvements to be made) because that stuff is boring and difficult as hell. Instead I’m going to add support for more file types like PDF.
I expanded the range of file types that the application supports. Image support now includes TIFF/TIF, HEIC/HEIF, and GIF files. HEIC/HEIF images are automatically converted to PNG after processing since they are not widely supported for encoding. I also added support for documents which include PDF, DOCX, PPTX, and XLSX files. Rather than building separate anonymization logic for every Office file format, they are first converted to PDF and then are annonymized the same way as PDFs which keeps the implementation much simpler. While working on adding support for these files, I noticed that I had a bunch of duplicated code. So I spent some time refactoring stuff and removing duplicated stuff. I also found that GIF processing was slow so I worked on making it faster by treating it the same as a video and using trackers on it rather than running detection on every frame. I also made few smaller improvements, including adjusting the confidence thresholds for some of the detectors since I was noticing a bunch of false positives and fixing several bugs that came along the way. The next thing I plan to work on are cleaning up the code by finding and removing unused stuff, and then building the frontend for the application.
I focused on preparing everything for the frontend rather than adding new features. I reorganized the API by moving all routes into a dedicated package and grouping every endpoint under /api/v1. This gives everything a much cleaner structure and makes everything look professional. I also added detection endpoints for all supported files. Before the project was primarily focused on anonymization, and even though I had a detection endpoint, it only supported images and was buggy. These new endpoints allows receiving detection results directly without applying any effects and serve as a foundation for selective anonymization that I will implement later. While implementing these endpoints, I refactored how detection IDs are handled across the application. Before they too were buggy but I got them to work. I not only worked on the backend but also worked on the frontend by laying out it’s initial structure that I will build upon. I also spent some time cleaning up the codebase by removing unused imports and simplifying parts of the project. Now I plan to really start working on building the frontend. Now that the API structure is in place, I want to focus on creating a professional looking interface that allows users to interact with all of the functionality that has been implemented so far plus more.
Since the previous dev log I’ve been completely focused on the frontend. I first set up the frontend stack by integrating Tailwind CSS for styles and Alpine.js for lightweight interactivity. I also created a reusable layout with shared components such as the header that future pages can be built consistently and easily. With that foundation in place, I began implementing the landing page. I designed and built the hero section, which consists of a cool drag and drop upload area, and an interactive before/after comparison slider that allows users to visually compare original and anonymized images, which makes the landing page looks awesome. Besides frontend work, I made a few backend improvements as well, including cleaning up temporary video files after processing to avoid leaving unnecessary files behind as originally they weren’t properly disposed of. Next I plan to continue working on the landing page for a bit by adding a footer and maybe some other useful section before connecting everything to the existing API and implementing the upload and processing workflow and building the remaining pages needed.
Since the previous dev log, I continued working on the frontend and have now finished the main landing page as well as the initial anonymize/file upload page. I first started by completing the remaining parts of the landing page by adding the footer, API description section, and some final component layout and CSS improvements. After that, I started building the anonymize page, which is where the actual application workflow begins. I implemented the complete upload interface with both file selection and drag and drop feature. I also added client side file handling so uploaded files can be passed from the landing page to the anonymize page without having to upload them to the server first. To do this, I implemented a small IndexedDB based file storage system in the browser. Uploaded files are temporarily stored locally with a timestamp allowing the anonymize page to retrieve the file when the user arrives there. The stored file automatically expires after a short period and is also removed once it has been retrieved. This keeps the upload flow client side and also avoids putting the file data into the URL or sending it to the backend before processing when not needed. The anonymize page now also handles different file types correctly and displays a preview based on their type. I also added different anonymization options making it straightforward to pass the processing preferences to the backend. I too spent time fixing bugs and adding small UX improvements across the new frontend functionality. Next I am going to connect the interface to the backend API and build the actual processing experience. Rather than anonymizing everything automatically, I will create a processing page where the user will be able to decide what to anonymize and I will probably add more customization.
Since the previous dev log, I continued building the application workflow and moved beyond the initial upload interface into review/customization functionality. I first worked on the file preview system so that uploaded files can be displayed correctly even when the browser cannot natively display them. Now a preview is generated for unsupported images and documents while keeping browser previews for files that are already supported. After that, I built the results page, which is where the user can review the detections found in their uploaded file and also customise stuff for anonymisation. The biggest addition was the detection review panel. Instead of simply processing everything automatically, the interface now shows the detected content which will allow users to review individual detections and choose which ones they want to work with. A lot of the work also went into the smaller UI/UX improvements. I also fixed a ton of issues that came up while connecting the different pieces together and handling the detection data and working with different file formats. At this point, the frontend is starting to really come together and look like a real app. The next step is to connect stuff to my anonymization API. The user will be able to to select specific detections, choose how they want them anonymized, and add other customizations.
Since the previous dev log, I continued building the application workflow and have almost completed the anonymization process. I first worked on the anonymization routes and updated the backend so that the frontend can send detected regions back to the API and have them anonymized. This allows the user to choose which detections they want to anonymize instead of always having to process everything. I also added support for passing dynamic padding (and also made it so that other dynamic stuff is easy to add later) through the request so that the effects can be customized based on what the user wants. I also added client side file handling required for the results page. The original and processed files are kept available in the browser so they can be previewed and downloaded without needing to be stored on the server. Everything also handles missing files and stuff without breaking and I also added error handling with notifications which are displayed to the user. I also made a bunch of smaller UI improvements while connecting everything together. At this point, the main frontend workflow is coming together. Next I will fix small remaining issues and improve reliability rather than adding any major change. The next things I plan to work on are to mainly fix bugs in the code. Like GIFs still need some additional handling to make sure detections are applied across the animation rather than being treated like a normal image and the existing video tracking system is able to follow detections across frames, but during testing I noticed that the anonymization can drift away from the actual detected regions in videos. This is the major thing I need to fix. And I also plan to do some small changes to the UI and stuff and fix some bugs there before adding the remaining pages like the API and documentation pages.
Since the previous dev log, I worked on fixing the remaining issues in the anonymization workflow and finishing the frontend around the application. The biggest thing I worked on was selected video anonymization. There were still some problems where selected areas could stop being anonymized correctly or the anonymization could move away from the actual object as it moved through the video or retracking when something like a face was lost. I spent quite a lot of time testing different things, tracking down where the problems were coming from, and making the selected anonymization much more reliable across video frames. This ended up taking a lot more work than I initially expected, but the selected video workflow is now working much better. It still isn’t perfect and there are still some bugs and I think I probably need a lot more time to find and fix them but right now it is in a decent working state so I don’t plan to spend more time on achieving perfection because debugging and stuff is boring as hell. I also made some improvements to the overall frontend and added the remaining main pages. I added the about, arivacy, documentation pages and also did some other improvents around the frontend. The documentation now explains the available endpoints, detection targets, anonymization modes and other features. At this point, I feel like the main application is in a really good place. The core functionality is implemented, the main frontend workflow is complete, and the remaining work is mostly getting this thing hosted and stuff. Next, I plan to write the README file, host the application, and do a final round of testing and cleanup. After that, I think I’ll consider this project finished for a while (I will work on improving it further later) and move on to building something new.
Since the previous dev log, I have been focused on getting Blur Stuff ready for deployment. This ended up being much more painful than I expected. The biggest part was dealing with dependency issues. The project worked locally, but moving everything to a production environment exposed a bunch of problems with Python versions, PaddlePaddle, PaddleOCR, PaddleX, PyYAML, spaCy, OpenCV and other dependencies. I spent a lot of time testing different configurations, fixing dependency conflicts, debugging the production container, and figuring out why things that seemed to work okay locally were breaking during deployment. The biggest headache was PaddleOCR. I had to deal with missing system libraries, model downloading, Paddle initialization issues and eventually a oneDNN runtime error that was causing OCR requests to return 503s. After a lot of debugging and testing different configurations, I eventually got the OCR pipeline working properly in production. That was probably the one of the most frustrating parts of the entire project, but it is finally done. I also switched the spaCy model from en_core_web_lg to en_core_web_sm. The larger model was unnecessarily heavy for what Blur Stuff needs and was making deployments take way longer. Switching to the smaller model made deployment faster and also improved performance without having a noticeable impact on the PII detection quality. After successful deployment I finished the README and added the final assets, screenshots, logo and documentation. I added the MIT license, favicon, deployment related changes and generally cleaned up the entire repository. At this point, I think Blur Stuff is ready to ship. There are definitely still improvements I could make, especially improving performance, making video anonymization more reliable and efficient, and polishing various parts of the application but I don’t want to spend more time trying to make everything perfect. The current deployment is also running on Railway’s free plan, so there are some resource and memory limitations since Blur Stuff runs several machine learning models in the same process. For now, I’m okay with that rather than spending more time optimizing around the limitations of a free deployment. For now, I’m calling it finished and shipping it since the core functionality is working and the project is deployed. I’ll definitely come back to Blur Stuff later to improve it, but I think it’s time to move on to something new.
Since shipping Blur Stuff, I got feedback that the frontend felt too generic so I completely revamped the UI to give it a more intentional and fun style. I redesigned everything from colors to typography and everything else. Now the app has a more personal feel. I also cleaned up some small things here and there.
Ships:
I made Blur Stuff, a privacy focused tool for safely sharing images, videos, GIFs, and documents. It automatically detects sensitive information such as faces, license plates, text, and PII, then lets you anonymize the detected areas with different anonymization effects. It also removes EXIF metadata so other sensitive information isn’t left hidden inside the file. The goal of this project is to make sharing media safely as easy as uploading it. Instead of manually searching through a file like a document or photo and manually covering stuff you don’t want others to see, Blur Stuff does this work for you. The hardest part of making this project was making anonymization work reliably across different types of media. Images were relatively simple, but videos and GIFs require frame by frame processing while keeping detections consistent over time. And to make things efficient and fast I also had to deal with things like tracking which were really tricky. Connecting the frontend and backend was also another challenge and then hosting everything also brought it’s problems with dependency conflicts which took quite a while to solve. The thing I am most proud of is that this became a real working and professional looking application rather than just a prototype type thing. It supports most of the commonly used media formats, has multiple customization options among other neat functionalities. Also I like how this project is privacy focused. Like it doesn’t store the user’s files ever. It just processes them, removing EXIF, and gives the result. Blur Stuff can be tested by uploading an image containing faces, text, or a license plate and let it detect the sensitive regions and then select what you want anonymized, and run the anonymization. The current deployment has limited memory and resources since I’m on a free plan, so larger videos and documents can take a while to process, and very large files may run into resource limitations. The app is also deployed using Railway’s serverless option, so the server may need a few seconds to start up if it hasn’t received a request recently. Also the selected region anonymization for videos is still a bit buggy but mostly it works. These are areas I will improve in the future....
|
1793789390.9205887
|
1793875790.9205887
|
|
16684
|
UU_OS by @DD_403 | Stardance
|
DD_403
|
0
|
1.83
|
0
|
[]
|
[{"post_id": 7612, "ts": "2026 [{"post_id": 7612, "ts": "2026-06-12T18:40:51Z", "hours": 1.8267, "text": "This is the first devlog of my Minecraft-themed Web OS! I have finished the first part - the welcome screen, including multicolored text and background, multiple different headings, and a rounded image. The hardest part was styling the image. First, it started “crunching.” Multiple times, I tried using style=object-fit: cover, but it failed. However, when I read the Google instructions more carefully, I realized that I had to include it in the same place as the width and height, and it worked! I used the same method to fix the border-radius issue, and the image came out exactly as I wanted!"}]...
|
Title: UU_OS by @DD_403 | Stardance
Devlogs:
This Title: UU_OS by @DD_403 | Stardance
Devlogs:
This is the first devlog of my Minecraft-themed Web OS! I have finished the first part - the welcome screen, including multicolored text and background, multiple different headings, and a rounded image. The hardest part was styling the image. First, it started “crunching.” Multiple times, I tried using style=object-fit: cover, but it failed. However, when I read the Google instructions more carefully, I realized that I had to include it in the same place as the width and height, and it worked! I used the same method to fix the border-radius issue, and the image came out exactly as I wanted!...
|
1793494414.890722
|
1794099214.890722
|
|
16685
|
Frictionless by @emilyloa | Stardance
|
emilyloa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @emilyloa | Stardance
|
1793800317.1931162
|
1794405117.1931162
|
|
16686
|
My very own WebOS by @knoxson | Stardance
|
knoxson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @knoxson | Stardance
|
1793415031.1208022
|
1794019831.1208022
|
|
16687
|
My awesome macropad! by @Ansh904 | Stardance
|
Ansh904
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Ansh904 | Stardanc Title: My awesome macropad! by @Ansh904 | Stardance...
|
1792929052.6042354
|
1793793052.6042354
|
|
16688
|
My very own WebOS by @huebert67 | Stardance
|
huebert67
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @huebert67 | Stardance
|
1793346450.5384367
|
1793951250.5384367
|
|
16689
|
Untitled by @GeneralKenobi | Stardance
|
GeneralKenobi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @GeneralKenobi | Stardance
|
1793476133.2606068
|
1794080933.2606068
|
|
16690
|
Project vector by @kuwarveersoni | Stardance
|
kuwarveersoni
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Project vector by @kuwarveersoni | Stardanc Title: Project vector by @kuwarveersoni | Stardance...
|
1793271255.7943833
|
1793876055.7943833
|
|
16691
|
My very own WebOS by @breadeater | Stardance
|
breadeater
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @breadeater | Stardanc Title: My very own WebOS by @breadeater | Stardance...
|
1793534220.9345202
|
1794139020.9345202
|
|
16692
|
My very own WebOS by @AS_ARYAN | Stardance
|
AS_ARYAN
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @AS_ARYAN | Stardance
|
1793425976.1820571
|
1794030776.1820571
|
|
16693
|
Evolve by @boredvoid | Stardance
|
boredvoid
|
1
|
61.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-10T07:42:22Z", "hours": 61.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This has been a hell of a ride and very interesting project to work on. Most challenging for me was all the shader work (normally my projects look meh at best xd). The project can be tested either in the browser on itch.io or downloaded there for all desktop platforms… Screenshots are in dev logs ( pls read I gave them a lot of love ((: ) and on itch!", "repo": "https://github.com/BoredVoidAter/Evolve", "demo": "https://boredvoidater.itch.io/evolve"}]...
|
[{"post_id": 44468, "ts": "202 [{"post_id": 44468, "ts": "2026-08-10T07:38:46Z", "hours": 5.0, "text": "Hi everyone, sorry for the long delay I’m in china rn so everything a bit difficult and I also lost ma laptop so I will be shipping this project early (updates to be expected so follow the itch if you are interested) Changes since last develop: finally tried implementing creatures and plants onto the planet generation which works for the most part now although the creature look a bit funny going up and down tiles… It’s been amazing I hope to participate in the next hack club event as well!"}, {"post_id": 35744, "ts": "2026-07-27T11:45:36Z", "hours": 7.0, "text": "Im baaaaaaaack! Lets go. I actually had the honor to go to an in person game dev event in NYC and even met Zack and some other amazing members of the hackclub team there, it was a blast. Anyways i also did some work on Evolve including some shader fixes for outlines (they didnt really look good on plants…), some general system fixes since the code base grew quite big and also isnt the most beautiful, fixed some IK issues that had been bugging me, implemented a lot of the #TODOs (: Anyways not really a lot of big new visual stuff so i just made a little animation of creatures and some plants hope you enjoy! (as always please test the game at https://boredvoidater.itch.io/evolve and tell me everything u got to say) byeee"}, {"post_id": 29625, "ts": "2026-07-16T18:00:56Z", "hours": 7.0, "text": "another big update this time, i noticed i was getting kinda lazy with the amount of devlogs per hours i promise ill do better first up is hormones: Adrenaline, Fear, and Aggression that the brain can hook up to. unlike normal math nodes that instantly flip on and off, these hormones smooth out over time so it is kinda like the memory nodes but they actually force the creature regardless of brain architecture to do specific stuff like turn away from everything, run faster, … second part: plants cus else creatures are all just carnivores. PlantDNA controls: branching depth, how many branches per node, Phototropism (fancy word for growing towards the light ) vs Gravitropism (gravity pulling branches down). meshes only get redone if there is substantial growth and ye, thas it do yall think of the chemical brain stuff? any ideas for other hormones or plant types i should add? let me know in the comments"}, {"post_id": 28848, "ts": "2026-07-15T12:08:44Z", "hours": 6.0, "text": "another big one this time added blinking eyes, moving mouths, eye movement just for some nice touch and then decided it’s finally time to give da animals a little bit of a brain. The system i decided on for now is a simple “neuronal network” kind of thing. I got a bunch of nodes like: sensor for vision/smell/time, math add/multiply/min/max/relu/…, memory basically just decaying values over time, actuators Move/Turn/Bite/Flee. these modules can then be linked up kinda like unity shader graph (thats why my ui look like dat lmao) the nodes are then connected via neurons that store a weight (which will later be adjusted via, who guessed it, Evolution). Addition of all the math nodes adds some complexity that i am quite a fan of. To recreate an idling cycle for example one could use a sin wave and time, … Anyways that’s all for now next up is probably instincts/hormones or sum else didnt decide yet. Any thoughts as always in the comments. Oh ye i also fixed webgl rendering via adressables (loading resources)."}, {"post_id": 28261, "ts": "2026-07-14T12:39:48Z", "hours": 5.0, "text": "Hello everybody, i was away for a week in kopenhagen (great place they got a bunch of cool animal museums as well and a trex head replica 1 to 1) but have finally returned. Now 1 of the 5h was spent on various bug fixes that i do not remember the others were spent on adding survivability stats. Up until know we only had weight, energy requirements and speed but now there is also attractiveness (eg a vibrant colored flower would have high atractiveness) and warning (also based on colors though also adapts per enviroment to fit in camoflauging into the same stat). then i added modular organs (eyes with different pupils, mouths with sharp teeth, no teeth or round teeth), snouts out of the same mouth shape, ears, … i also did some experiments with eyelid shapes but just landed on texturing a simple sphere since the 3d eyelids look like too much in my opinion (top left corner in devlog) what do you think"}, {"post_id": 20883, "ts": "2026-07-02T16:35:40Z", "hours": 4.0, "text": "A lot of changes in this one: Growth modifiers for regions like head, neck, abdomen, … give more granular simulation control over animals some new features like frills and scales new textures for various skin types like fur, feathers, scales, … me fighting with huge necks (see image ) next up i am gonna organs which im planning to make very universal using parametric 3d models"}, {"post_id": 20249, "ts": "2026-07-01T19:54:38Z", "hours": 3.0, "text": "I’ve been hard at work over the last few hours and made (a lot of) modifications: first i struggled with winding order for a solid hour before i just decided that i am not gonna win that fight (now i just don’t cull creature backfaces ), then i implemented muscles and fat which change weight and volume of limbs and as you might be able to see colors and textures for the skin, next up i also did some IK improvements ( @august pointed those out ), last but not least i added features like little spikes and scales. Also can we talk about how cute the starfish looks, its my favourite part about this project so far. all the creatures below are created with dna structures eg: (i’ll put the code here once i figured out how to format it nicely lmao) and animated proceduraly… (ignore the ape i made it a lil too fat )"}, {"post_id": 17772, "ts": "2026-06-28T18:23:43Z", "hours": 2.0, "text": "This one took quite a while but i finally got some meat on the bones: triangle winding order is a pain in the but soooo i’m just rendering front and back faces now , even more annoying is getting it to not twist with every single movement (still not fully working), still working on how the dna could sensibly define head shape since rn everything looks like megamind, UVs are next to tackle OH GOD PLEASE SAVE ME . Put ur favorite creature in the comments (as well as any feedback ofc xd)"}, {"post_id": 17439, "ts": "2026-06-28T06:51:43Z", "hours": 1.0, "text": "Work on IK is now nearly complete (for now ), now we move onto bigger any better things: putting meat n skin on the bones but first of all here’s some movies of stuff moving (the spider one is fixed dw)"}, {"post_id": 16237, "ts": "2026-06-26T11:43:13Z", "hours": 0.0, "text": "I’ve improved the IK through changes to: billateral limb distance (so far there was nothing in between for example 2 legs), timing adjustments, joint rotating planes, computed target body height and body center of mass, … Next up is animating limbs that aren’t legs! any feedback?put it in the comments (pretty please)"}, {"post_id": 15629, "ts": "2026-06-25T12:50:22Z", "hours": 1.0, "text": "FINALLLY starting work on Evolution with the first subject being animals. So far i’ve set up a DNA Structure that works in a bone like fashion with symmetry options. on the simulation layer these bone and thus resulting body shape will be represented like Position. Velocity, Mass,CenterOfMass,BoundingRadius, Height and prolly more that i didnt think of yet. As you may be able i’ve also tried my luck with IK with the FABRIK solver but so far yeaaaaaaaaaaaaah…."}, {"post_id": 15012, "ts": "2026-06-24T12:04:45Z", "hours": 0.0, "text": "Did a little more work on the water shader, i swear i’ll start with the Evolving part after this xd"}, {"post_id": 14937, "ts": "2026-06-24T08:34:42Z", "hours": 1.0, "text": "I’ve been working on an option to switch the layer to underwater since that is just as important as above water for us to see. Did quite a lot of work on the shader so now the above water terrain gets cut at sea level and its dirt color gets dithered into a fullscreen underwater shader with caustics and godrays, it definetly still needs imrpovement but its good enough for now"}, {"post_id": 14638, "ts": "2026-06-23T20:24:27Z", "hours": 1.0, "text": "This one is more of a cleanup where i finished some boring stuff so nothing that cool to showoff but i attached some screenshots. Also built the newest version of the game for all platforms (and web) and updated itch page. Feel free to give it a visit under https://boredvoidater.itch.io/evolve (:"}, {"post_id": 14536, "ts": "2026-06-23T17:58:01Z", "hours": 0.0, "text": "Aaaaaaaand another one about culling, this time the goal was to remove the particles from the river because, well, it looks bad. This took quite some time to solve but in the end i just calculate some spheres with diameter of river width and get rid of all particles in it"}, {"post_id": 14428, "ts": "2026-06-23T15:38:53Z", "hours": 0.0, "text": "Very quick and dirty one but i implemented particle culling since the particles would look really bad when zoomed out with the pixel art rendering…"}, {"post_id": 14396, "ts": "2026-06-23T14:47:09Z", "hours": 1.0, "text": "I’ve been working on some decorational particles on the terrain to make it loss less bland. These are however purely for visuals and not gonna be included in any evolution calculations (which i promise i’ll start doing at some point (: but for now i wanna finish the world generation, regarding that any ideas for what should be added to world gen in the COMMENTS!!)"}, {"post_id": 13713, "ts": "2026-06-22T14:11:42Z", "hours": 1.0, "text": "I’ve been working on the UI for a little bit which is a task i do not enjoy doing since i never like how it turns out. this time around the end result looks more like a cheap ai website than a good ui but oh well there will always be future possibility to make it better. Please put any ideas for making it look better in the comments Give it a play at: https://boredvoidater.itch.io/evolve I’d also be amazing if you’d check out my other devlogs if this project seems interesting to you"}, {"post_id": 13336, "ts": "2026-06-21T20:57:50Z", "hours": 1.0, "text": "i added rivers with width based on calculated flow and custom generated meshes. I am still thinking about another thing: in real life rivers sorta get momentum which causes them to cut trough terrain which i think would probably look a bit weird in my case but i still implemented the momentum but not the cutting so now sometimes rivers flow “up a tile” like a reverse waterfall… Not sure if i’ll keep that we’ll see"}, {"post_id": 11902, "ts": "2026-06-19T12:06:23Z", "hours": 0.0, "text": "I finally fixed the poles turned out i had my textures messed up and frozen water eg ice should also float ontop of the ocean ofc (: I also improved upon the water shader by reading depth and reconstructing the y pos difference from it"}, {"post_id": 11575, "ts": "2026-06-18T21:13:52Z", "hours": 1.0, "text": "improved the world generation with more interesting terrain with more variaty (stacked noise, different noise types, …) also imrpoved my simulation of humidity and made it get way colder towards poles, finally finished all the textures for the bioms and added a little water shader. Added camera movement and zooming to boot. thats it i belive, cyu in the next one"}, {"post_id": 10599, "ts": "2026-06-17T12:55:10Z", "hours": 0.0, "text": "the biomes are pretty much done, however i still got work to do regarding the biome simulation since what should be the poles is currently not ice biome but tundra in my generator (:"}, {"post_id": 10148, "ts": "2026-06-16T19:12:52Z", "hours": 0.0, "text": "Applying texture based on biome information (saved in uv’s so that we can still use srp batcher)"}, {"post_id": 10117, "ts": "2026-06-16T18:29:24Z", "hours": 1.0, "text": "have been spending some time on implementing my first attempt on landscape. landed on hex tiles since they are the easiest to simulate since movement in all 6 directions is the same distance and now spent some time visualizing the generated hex map"}, {"post_id": 7589, "ts": "2026-06-12T18:08:10Z", "hours": 1.0, "text": "I’ve finally finished the outline shader which is now looking a little bit unorganized but thats ok (: Also got some headache from the transparent rendering pass hogging my rendering textures since i didnt specifically declare which pass wants them which took quite a long while to figure out"}, {"post_id": 7074, "ts": "2026-06-11T21:00:12Z", "hours": 0.0, "text": "Highlight color is now detected based on sampling surrounding pixels and choosing closest based on death, also experimenting with light on outlines"}, {"post_id": 7049, "ts": "2026-06-11T20:18:17Z", "hours": 0.0, "text": "added a custom cell shader that can also use textures (black and white) to blend between colors and uses either only one color or textures based on shader keywords"}, {"post_id": 6996, "ts": "2026-06-11T19:02:05Z", "hours": 0.0, "text": "I’ve been working on a pixel perfect outline for this nice pixelized look and also shaded it according to surrounding colors instead of just black, it is based on a custom id texture and normals because i believe this is more reliable than just depth data. next up is cell shading"}]...
|
Title: Evolve by @boredvoid | Stardance
Devlogs:
Title: Evolve by @boredvoid | Stardance
Devlogs:
I’ve been working on a pixel perfect outline for this nice pixelized look and also shaded it according to surrounding colors instead of just black, it is based on a custom id texture and normals because i believe this is more reliable than just depth data. next up is cell shading
added a custom cell shader that can also use textures (black and white) to blend between colors and uses either only one color or textures based on shader keywords
Highlight color is now detected based on sampling surrounding pixels and choosing closest based on death, also experimenting with light on outlines
I’ve finally finished the outline shader which is now looking a little bit unorganized but thats ok (: Also got some headache from the transparent rendering pass hogging my rendering textures since i didnt specifically declare which pass wants them which took quite a long while to figure out
have been spending some time on implementing my first attempt on landscape. landed on hex tiles since they are the easiest to simulate since movement in all 6 directions is the same distance and now spent some time visualizing the generated hex map
Applying texture based on biome information (saved in uv’s so that we can still use srp batcher)
the biomes are pretty much done, however i still got work to do regarding the biome simulation since what should be the poles is currently not ice biome but tundra in my generator (:
improved the world generation with more interesting terrain with more variaty (stacked noise, different noise types, …) also imrpoved my simulation of humidity and made it get way colder towards poles, finally finished all the textures for the bioms and added a little water shader. Added camera movement and zooming to boot. thats it i belive, cyu in the next one
I finally fixed the poles turned out i had my textures messed up and frozen water eg ice should also float ontop of the ocean ofc (: I also improved upon the water shader by reading depth and reconstructing the y pos difference from it
i added rivers with width based on calculated flow and custom generated meshes. I am still thinking about another thing: in real life rivers sorta get momentum which causes them to cut trough terrain which i think would probably look a bit weird in my case but i still implemented the momentum but not the cutting so now sometimes rivers flow “up a tile” like a reverse waterfall… Not sure if i’ll keep that we’ll see
I’ve been working on the UI for a little bit which is a task i do not enjoy doing since i never like how it turns out. this time around the end result looks more like a cheap ai website than a good ui but oh well there will always be future possibility to make it better. Please put any ideas for making it look better in the comments Give it a play at: https://boredvoidater.itch.io/evolve I’d also be amazing if you’d check out my other devlogs if this project seems interesting to you
I’ve been working on some decorational particles on the terrain to make it loss less bland. These are however purely for visuals and not gonna be included in any evolution calculations (which i promise i’ll start doing at some point (: but for now i wanna finish the world generation, regarding that any ideas for what should be added to world gen in the COMMENTS!!)
Very quick and dirty one but i implemented particle culling since the particles would look really bad when zoomed out with the pixel art rendering…
Aaaaaaaand another one about culling, this time the goal was to remove the particles from the river because, well, it looks bad. This took quite some time to solve but in the end i just calculate some spheres with diameter of river width and get rid of all particles in it
This one is more of a cleanup where i finished some boring stuff so nothing that cool to showoff but i attached some screenshots. Also built the newest version of the game for all platforms (and web) and updated itch page. Feel free to give it a visit under https://boredvoidater.itch.io/evolve (:
I’ve been working on an option to switch the layer to underwater since that is just as important as above water for us to see. Did quite a lot of work on the shader so now the above water terrain gets cut at sea level and its dirt color gets dithered into a fullscreen underwater shader with caustics and godrays, it definetly still needs imrpovement but its good enough for now
Did a little more work on the water shader, i swear i’ll start with the Evolving part after this xd
FINALLLY starting work on Evolution with the first subject being animals. So far i’ve set up a DNA Structure that works in a bone like fashion with symmetry options. on the simulation layer these bone and thus resulting body shape will be represented like Position. Velocity, Mass,CenterOfMass,BoundingRadius, Height and prolly more that i didnt think of yet. As you may be able i’ve also tried my luck with IK with the FABRIK solver but so far yeaaaaaaaaaaaaah….
I’ve improved the IK through changes to: billateral limb distance (so far there was nothing in between for example 2 legs), timing adjustments, joint rotating planes, computed target body height and body center of mass, … Next up is animating limbs that aren’t legs! any feedback?put it in the comments (pretty please)
Work on IK is now nearly complete (for now ), now we move onto bigger any better things: putting meat n skin on the bones but first of all here’s some movies of stuff moving (the spider one is fixed dw)
This one took quite a while but i finally got some meat on the bones: triangle winding order is a pain in the but soooo i’m just rendering front and back faces now , even more annoying is getting it to not twist with every single movement (still not fully working), still working on how the dna could sensibly define head shape since rn everything looks like megamind, UVs are next to tackle OH GOD PLEASE SAVE ME . Put ur favorite creature in the comments (as well as any feedback ofc xd)
I’ve been hard at work over the last few hours and made (a lot of) modifications: first i struggled with winding order for a solid hour before i just decided that i am not gonna win that fight (now i just don’t cull creature backfaces ), then i implemented muscles and fat which change weight and volume of limbs and as you might be able to see colors and textures for the skin, next up i also did some IK improvements ( @august pointed those out ), last but not least i added features like little spikes and scales. Also can we talk about how cute the starfish looks, its my favourite part about this project so far. all the creatures below are created with dna structures eg: (i’ll put the code here once i figured out how to format it nicely lmao) and animated proceduraly… (ignore the ape i made it a lil too fat )
A lot of changes in this one: Growth modifiers for regions like head, neck, abdomen, … give more granular simulation control over animals some new features like frills and scales new textures for various skin types like fur, feathers, scales, … me fighting with huge necks (see image ) next up i am gonna organs which im planning to make very universal using parametric 3d models
Hello everybody, i was away for a week in kopenhagen (great place they got a bunch of cool animal museums as well and a trex head replica 1 to 1) but have finally returned. Now 1 of the 5h was spent on various bug fixes that i do not remember the others were spent on adding survivability stats. Up until know we only had weight, energy requirements and speed but now there is also attractiveness (eg a vibrant colored flower would have high atractiveness) and warning (also based on colors though also adapts per enviroment to fit in camoflauging into the same stat). then i added modular organs (eyes with different pupils, mouths with sharp teeth, no teeth or round teeth), snouts out of the same mouth shape, ears, … i also did some experiments with eyelid shapes but just landed on texturing a simple sphere since the 3d eyelids look like too much in my opinion (top left corner in devlog) what do you think
another big one this time added blinking eyes, moving mouths, eye movement just for some nice touch and then decided it’s finally time to give da animals a little bit of a brain. The system i decided on for now is a simple “neuronal network” kind of thing. I got a bunch of nodes like: sensor for vision/smell/time, math add/multiply/min/max/relu/…, memory basically just decaying values over time, actuators Move/Turn/Bite/Flee. these modules can then be linked up kinda like unity shader graph (thats why my ui look like dat lmao) the nodes are then connected via neurons that store a weight (which will later be adjusted via, who guessed it, Evolution). Addition of all the math nodes adds some complexity that i am quite a fan of. To recreate an idling cycle for example one could use a sin wave and time, … Anyways that’s all for now next up is probably instincts/hormones or sum else didnt decide yet. Any thoughts as always in the comments. Oh ye i also fixed webgl rendering via adressables (loading resources).
another big update this time, i noticed i was getting kinda lazy with the amount of devlogs per hours i promise ill do better first up is hormones: Adrenaline, Fear, and Aggression that the brain can hook up to. unlike normal math nodes that instantly flip on and off, these hormones smooth out over time so it is kinda like the memory nodes but they actually force the creature regardless of brain architecture to do specific stuff like turn away from everything, run faster, … second part: plants cus else creatures are all just carnivores. PlantDNA controls: branching depth, how many branches per node, Phototropism (fancy word for growing towards the light ) vs Gravitropism (gravity pulling branches down). meshes only get redone if there is substantial growth and ye, thas it do yall think of the chemical brain stuff? any ideas for other hormones or plant types i should add? let me know in the comments
Im baaaaaaaack! Lets go. I actually had the honor to go to an in person game dev event in NYC and even met Zack and some other amazing members of the hackclub team there, it was a blast. Anyways i also did some work on Evolve including some shader fixes for outlines (they didnt really look good on plants…), some general system fixes since the code base grew quite big and also isnt the most beautiful, fixed some IK issues that had been bugging me, implemented a lot of the #TODOs (: Anyways not really a lot of big new visual stuff so i just made a little animation of creatures and some plants hope you enjoy! (as always please test the game at https://boredvoidater.itch.io/evolve and tell me everything u got to say) byeee
Hi everyone, sorry for the long delay I’m in china rn so everything a bit difficult and I also lost ma laptop so I will be shipping this project early (updates to be expected so follow the itch if you are interested) Changes since last develop: finally tried implementing creatures and plants onto the planet generation which works for the most part now although the creature look a bit funny going up and down tiles… It’s been amazing I hope to participate in the next hack club event as well!
Ships:
This has been a hell of a ride and very interesting project to work on. Most challenging for me was all the shader work (normally my projects look meh at best xd). The project can be tested either in the browser on itch.io or downloaded there for all desktop platforms… Screenshots are in dev logs ( pls read I gave them a lot of love ((: ) and on itch!...
|
1793775145.5695043
|
1794639145.5695043
|
|
16694
|
Untitled by @himabh643 | Stardance
|
himabh643
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @himabh643 | Stardance
|
1793418553.4194942
|
1794023353.4194942
|
|
16695
|
Frictionless by @tung | Stardance
|
tung
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @tung | Stardance
|
1793526807.2777638
|
1794131607.2777638
|
|
16696
|
Helldivers macropad! by @WilliDih123 | Stardance
|
WilliDih123
|
0
|
8.89
|
0
|
[]
|
[{"post_id": 27820, "ts": "202 [{"post_id": 27820, "ts": "2026-07-13T18:23:06Z", "hours": 0.7333, "text": "Making notes from videos"}, {"post_id": 23681, "ts": "2026-07-06T19:51:36Z", "hours": 0.2833, "text": "I added a small cuff around the side of the lid to ensure a tighter fit."}, {"post_id": 22373, "ts": "2026-07-04T20:17:11Z", "hours": 3.305, "text": "I made a prototype board with a petentiometer and four buttons with a pico w with a rp 2040. I wanted to use it to see if I could even pull off the idea, I also made a case."}, {"post_id": 21848, "ts": "2026-07-04T00:08:25Z", "hours": 0.3667, "text": "Here I added a page for notes with links to what I am buying."}, {"post_id": 21817, "ts": "2026-07-03T23:00:28Z", "hours": 1.2647, "text": "Here I 100% redid my whole pcb design because some people said it was messy, also I made some gerber files for it and uploaded it to JLCPCB to get a quote."}, {"post_id": 8589, "ts": "2026-06-14T09:06:25Z", "hours": 1.2358, "text": "Adding new bits to the macropad"}, {"post_id": 8366, "ts": "2026-06-13T22:09:22Z", "hours": 0.4819, "text": "Improving and adding more things to the macropad"}, {"post_id": 8252, "ts": "2026-06-13T18:40:10Z", "hours": 1.2192, "text": "Making the PCB and the case"}]...
|
Title: Helldivers macropad! by @WilliDih123 | Star Title: Helldivers macropad! by @WilliDih123 | Stardance
Devlogs:
Making the PCB and the case
Improving and adding more things to the macropad
Adding new bits to the macropad
Here I 100% redid my whole pcb design because some people said it was messy, also I made some gerber files for it and uploaded it to JLCPCB to get a quote.
Here I added a page for notes with links to what I am buying.
I made a prototype board with a petentiometer and four buttons with a pico w with a rp 2040. I wanted to use it to see if I could even pull off the idea, I also made a case.
I added a small cuff around the side of the lid to ensure a tighter fit.
Making notes from videos...
|
1793544570.330107
|
1794149370.330107
|
|
16697
|
Auto pet feeder by @howzer12 | Stardance
|
howzer12
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Auto pet feeder by @howzer12 | Stardance
|
1793253125.0548198
|
1793857925.0548198
|
|
16698
|
My very own WebOS by @aayushim | Stardance
|
aayushim
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @aayushim | Stardance
|
1793209828.2858698
|
1793814628.2858698
|
|
16699
|
My first slack bot! by @remrmolina | Stardance
|
remrmolina
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @remrmolina | Starda Title: My first slack bot! by @remrmolina | Stardance...
|
1793307331.623761
|
1793912131.623761
|
|
16700
|
q-store by @sqwark | Stardance
|
sqwark
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: q-store by @sqwark | Stardance
|
1793562560.0175488
|
1794167360.0175488
|