|
16451
|
My awesome macropad! by @-adi | Stardance
|
-adi
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @-adi | Stardance
|
1793220580.517246
|
1793825380.517246
|
|
16452
|
Journey to a black hole! by @aayushi16 | Stardance
|
aayushi16
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Journey to a black hole! by @aayushi16 | St Title: Journey to a black hole! by @aayushi16 | Stardance...
|
1793397177.5884566
|
1794001977.5884566
|
|
16453
|
My awesome macropad! by @Ryan123 | Stardance
|
Ryan123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Ryan123 | Stardanc Title: My awesome macropad! by @Ryan123 | Stardance...
|
1793263804.985562
|
1793868604.985562
|
|
16454
|
My very own WebOS by @harmanism | Stardance
|
harmanism
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @harmanism | Stardance
|
1793501357.9865193
|
1794106157.9865193
|
|
16455
|
sat-practice-discord-bot by @BoltOneUp | Stardance
|
BoltOneUp
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: sat-practice-discord-bot by @BoltOneUp | St Title: sat-practice-discord-bot by @BoltOneUp | Stardance...
|
1793393296.01309
|
1793998096.01309
|
|
16456
|
Filedrop by @pratham | Stardance
|
pratham
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Filedrop by @pratham | Stardance
|
1793786157.1234086
|
1794650157.1234086
|
|
16457
|
Frictionless by @Lilioo | Stardance
|
Lilioo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @Lilioo | Stardance
|
1793789362.9898453
|
1794394162.9898453
|
|
16458
|
Frictionless by @sirLewis | Stardance
|
sirLewis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @sirLewis | Stardance
|
1793469256.6198285
|
1794074056.6198285
|
|
16459
|
2.1 Audio Amp by @Arkaprava | Stardance
|
Arkaprava
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 2.1 Audio Amp by @Arkaprava | Stardance
|
1793389687.1335568
|
1793994487.1335568
|
|
16460
|
horizontmoster shuffler by @davids_beinerts | Star horizontmoster shuffler by @davids_beinerts | Stardance...
|
davids_beinerts
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: horizontmoster shuffler by @davids_beinerts Title: horizontmoster shuffler by @davids_beinerts | Stardance...
|
1793166604.555308
|
1793771404.555308
|
|
16461
|
My awesome macropad! by @AbdulRehmanShah | Stardan My awesome macropad! by @AbdulRehmanShah | Stardance...
|
AbdulRehmanShah
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @AbdulRehmanShah | Title: My awesome macropad! by @AbdulRehmanShah | Stardance...
|
1793436850.457415
|
1794041650.457415
|
|
16462
|
Veltro Rover by @AbdulRehmanShah | Stardance
|
AbdulRehmanShah
|
0
|
1.61
|
0
|
[]
|
[{"post_id": 7102, "ts": "2026 [{"post_id": 7102, "ts": "2026-06-11T21:31:39Z", "hours": 1.6131, "text": "Devlog #1 – Building a Self-Driving Car Simulator in Python Project Overview Today I started building a self-driving car simulator in Python using Pygame. The goal of this project is to create an autonomous vehicle that can navigate a track using virtual sensors and eventually learn to drive through evolutionary algorithms and neural networks. This project is being developed in stages, starting with a simple car and gradually adding intelligence. What I Built MVP 1 – Basic Car Movement The first milestone was creating a car that could: Move forward and backward Turn left and right Rotate smoothly Move using basic trigonometry The car’s movement is calculated using sine and cosine functions based on its current heading angle. MVP 2 – Sensor System After movement was working, I added five distance sensors. The sensors act like rays extending from the front of the vehicle: Left Front-left Front Front-right Right Each sensor checks for collisions with walls and returns the distance to the nearest obstacle. This allows the car to “see” its surroundings. Example sensor output: [150, 120, 85, 140, 150] The smaller the number, the closer an obstacle is. MVP 3 – First Autonomous Driver Using the sensor data, I implemented a simple rule-based AI. The logic is straightforward: Drive forward continuously If an obstacle appears ahead, turn toward the side with more open space Avoid walls detected by side sensors Although the AI is simple, it can already navigate parts of the track without human input. Challenges Faced One of the biggest issues was setting up Pygame. Initially, installation failed because I was using Python 3.14, which caused compatibility problems with the version of Pygame being installed. I switched to pygame-ce and successfully got the simulator running. I also encountered several coding mistakes: Misspelled method names Incorrect variable references Nested functions due to indentation errors Collision detection bugs Debugging these issues helped me better understand Python classes and object-oriented programming. What I Learned Throughout this session I learned: Pygame basics Real-time game loops Raycasting concepts Collision detection Trigonometry for movement Basic autonomous navigation I also gained experience reading Python error messages and tracking down bugs. Current Status Completed: ✓ Vehicle movement ✓ Sensor system ✓ Wall collision detection ✓ Basic autonomous driving In Progress: □ Better collision model □ Track checkpoints □ Fitness scoring □ Multiple vehicles Planned: □ Genetic algorithms □ Neural networks □ Procedural track generation □ Training visualization Next Steps The next major milestone is creating multiple AI-controlled cars and implementing a fitness system. Instead of manually programming driving behavior, future versions will evolve better drivers over time through genetic algorithms. The long-term vision is to build a miniature autonomous driving research sandbox where hundreds of vehicles learn and improve through simulation. This is only the beginning, but seeing the first car successfully avoid walls was a satisfying milestone."}]...
|
Title: Veltro Rover by @AbdulRehmanShah | Stardanc Title: Veltro Rover by @AbdulRehmanShah | Stardance
Devlogs:
Devlog #1 – Building a Self-Driving Car Simulator in Python Project Overview Today I started building a self-driving car simulator in Python using Pygame. The goal of this project is to create an autonomous vehicle that can navigate a track using virtual sensors and eventually learn to drive through evolutionary algorithms and neural networks. This project is being developed in stages, starting with a simple car and gradually adding intelligence. What I Built MVP 1 – Basic Car Movement The first milestone was creating a car that could: Move forward and backward Turn left and right Rotate smoothly Move using basic trigonometry The car’s movement is calculated using sine and cosine functions based on its current heading angle. MVP 2 – Sensor System After movement was working, I added five distance sensors. The sensors act like rays extending from the front of the vehicle: Left Front-left Front Front-right Right Each sensor checks for collisions with walls and returns the distance to the nearest obstacle. This allows the car to “see” its surroundings. Example sensor output: [150, 120, 85, 140, 150] The smaller the number, the closer an obstacle is. MVP 3 – First Autonomous Driver Using the sensor data, I implemented a simple rule-based AI. The logic is straightforward: Drive forward continuously If an obstacle appears ahead, turn toward the side with more open space Avoid walls detected by side sensors Although the AI is simple, it can already navigate parts of the track without human input. Challenges Faced One of the biggest issues was setting up Pygame. Initially, installation failed because I was using Python 3.14, which caused compatibility problems with the version of Pygame being installed. I switched to pygame-ce and successfully got the simulator running. I also encountered several coding mistakes: Misspelled method names Incorrect variable references Nested functions due to indentation errors Collision detection bugs Debugging these issues helped me better understand Python classes and object-oriented programming. What I Learned Throughout this session I learned: Pygame basics Real-time game loops Raycasting concepts Collision detection Trigonometry for movement Basic autonomous navigation I also gained experience reading Python error messages and tracking down bugs. Current Status Completed: ✓ Vehicle movement ✓ Sensor system ✓ Wall collision detection ✓ Basic autonomous driving In Progress: □ Better collision model □ Track checkpoints □ Fitness scoring □ Multiple vehicles Planned: □ Genetic algorithms □ Neural networks □ Procedural track generation □ Training visualization Next Steps The next major milestone is creating multiple AI-controlled cars and implementing a fitness system. Instead of manually programming driving behavior, future versions will evolve better drivers over time through genetic algorithms. The long-term vision is to build a miniature autonomous driving research sandbox where hundreds of vehicles learn and improve through simulation. This is only the beginning, but seeing the first car successfully avoid walls was a satisfying milestone....
|
1793573636.2129564
|
1794178436.2129564
|
|
16463
|
My first slack bot! by @lulu | Stardance
|
lulu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @lulu | Stardance
|
1793516032.0536206
|
1794120832.0536206
|
|
16464
|
money mentor by @rohondutta02 | Stardance
|
rohondutta02
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: money mentor by @rohondutta02 | Stardance
|
1793371785.9151664
|
1793976585.9151664
|
|
16465
|
My very own WebOS by @aimecelce | Stardance
|
aimecelce
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @aimecelce | Stardance
|
1793444163.858714
|
1794048963.858714
|
|
16466
|
Bounce by @WPGmaciek | Stardance
|
WPGmaciek
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bounce by @WPGmaciek | Stardance
|
1793523297.8872702
|
1794128097.8872702
|
|
16467
|
Brainf*ck IDE by @MarioS271 | Stardance
|
MarioS271
|
1
|
30.0
|
539
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-19T10:01:36Z", "hours": 30.0, "multiplier": 18.23, "payout": 539, "blessing": "neutral", "text": "Brainf * ck IDE Hello and welcome to my project: an IDE for the brainf * ck programming language! What is it Brainf * ck IDE is a text editor, interpreter and debugger for brainf * ck. It is a powerful tool for developing brain * ck applications (if you wanna do that for some reason) How to use it The editor has two modes, Normal and Debug . Normally, youre in normal mode, but you can switch between normal and debug by using the DEBUG button. The editor is divided into three panels and a menubar. The three panels are: Editor Panel (Top Left) Output Panel (Top Right) Tape Panel (Bottom) Known Issues Maximizing the window and resizing it larger than a specific size causes the contents to dissapear, to reverse just make the window smaller again Resizing the window smaller than the size of a popup causes a heap corruption I would recommend avoiding resizing the window unless absolutely necessary 😅 If you’re interested in the details, feel free to read the rest on the GitHub Repo . :)", "repo": "https://github.com/MarioS271/brainfuck_ide", "demo": "https://github.com/MarioS271/brainfuck_ide/releases/tag/v1.2.1"}]...
|
[{"post_id": 11570, "ts": "202 [{"post_id": 11570, "ts": "2026-06-18T21:09:08Z", "hours": 0.4989, "text": "Whoops Had a small bug in the left arrow key in normal editing mode and popups weren’t resizing and re-positioning correctly, fixed all that :) FINAL RELEASE BABYYYY (hopefully)"}, {"post_id": 11526, "ts": "2026-06-18T20:29:28Z", "hours": 5.8544, "text": "Finally, the debugger is working properly . If you’ve tried a beta version, especially v1.1.0, you might have noticed the debugger being broken and kinda weird. I noticed that too, so I decided to rewrite it! (technically, I rewrote it twice but oh well) Why it needed a rewrite Before, the debugger worked by executing the next step in-place and jumping in loops by moving the cursor to the matching bracket. The problem was: to jump backwards when looping, you had to keep a history which could pretty quickly get filled if you were debugging enough and overall the system was too overengineered for what it was supposed to do. The new architecture The new debugger does almost the same that the live tape preview already does. The live tape preview has one caveat that doesn’t allow it to be directly used for the debugger though: we cannot track loop iterations on the cursor position alone, as we always just compute until the cursor. If we’re before a loop’s end, we’re only computing the first iteration. If we move past the loop, the whole loop gets computed in one move.Instead of the cursor pos, the debugger uses an instruction counter. It basically counts how many brainf * ck instructions it should run, which solves all problems here. Why this works Take this program: ++++++++ [ > ++++ [ > ++ > +++ > +++ > + <<<< - ] > + > + > - >> + [ < ] < - ] >> . > ---.+++++++..+++. >> . < -. < .+++.------.--------. >> +. > ++. Say we wanna run 40 instructions. We first step over the initial ++++++++[>++++[>++>+++>+++>+<<<<- (33 instructions), and then we get to the first ] . When we do, the current cell is non-zero, meaning we jump back to the instruction after the highlighted bracket ( ++++++++[>++++ [ >++>+++>+++>+<<<<- ). The jump is one instruction. Then we run >++>++ and reach 40. Notice how we’re in the second iteration when it ends. If we now move the cursor forward by one, we tell the tape generator “execute 41 instructions”. The same as before happens now (execute first bit, jump back, continue executing - but one instruction more than before this time) but we land in the second iteration again."}, {"post_id": 10201, "ts": "2026-06-16T20:23:44Z", "hours": 4.6389, "text": "Popups are finished! (almost) After a little bit of work, a popup system (which I gotta say is written kinda well compared to all the other code) is in place! Currently, there are: Exit Confirmation Popup Save File Dialog Load File Dialog One last thing is still missing though: The please press a button popup for inputs ( , ). Technical Details The popup system works by using a sub-struct inside of the global state struct ( state.popup ). It contains data such as whether a popup is active, if it accepts text input and handlers for drawing and the confirm button. There’s a base func ( create_popup_base() ) that draws a new basic outline for the popup. After that, only the contents of the popup get refreshed via the custom handler set via setting a function pointer ( state.popup.refresh_handler ). The popup also “captures” input. There’s a seperate if for state.popup.active before the main input validation which processes inputs and then skips the normal input processing."}, {"post_id": 9244, "ts": "2026-06-15T15:03:22Z", "hours": 3.7889, "text": "The debugger works!! After hours of work (mainly debugging and patching up code), it finally works! :DD The power of the debugger You can use the debugger to step forward and backward in your brainf * ck program. While stepping, a live program counter display (labelled “PC”) shows the current program counter index, while the tape in the bottom panel shows the current state of each cell, which cell is currently selected by the data pointer and what the cell contains, in both decimal and ASCII format. The following is just for if you’re interested in the technical details ;) Why I wanted to wipe my drive several times while making this (Problem 1) The first main problem in writing the debugger was stepping backward. You’d think its just “do the instruction in reverse, like when you back-step a - , just do a + instead” but the problem arises when, for example, you read in something using , and the info got overwritten. How do you reverse to something that got destroyed? Well, you don’t. The Solution to the Back-Stepping problem I implemented backward stepping by just recomputing the entire tape from scratch on every backstep. Yes, it’s probably not the best way, but it works. Problem 2 Loops. Once. Again. The jumping around of loops in brainf * ck is not the simplest thing to correctly compute, especially when only partially executing a program. When you land on a [ or a ] , you also need to account for nested loops. You can probably imagine that that can definitely cause some headaches."}, {"post_id": 8947, "ts": "2026-06-14T21:29:52Z", "hours": 3.0733, "text": "Live tape preview is done! While writing or editing code or by literally just moving your cursor, you now get a live preview of the programs “tape” (basically it’s entire data it works with). There is one big problem with the current system however. If you’re interested, feel free to read the following. The big Issue Loops. You see, in brainf * ck, loops work by using [ to jump to the matching ] if the current cell is zero and by using ] to jump to the matching [ if the cell is non-zero. This behaviour is actually not that pleasant to simulate when you’re only executing to a specific point in the program, because the “simulator” (the thing that interprets the bit of brainf * ck code up until your cursor and then generates a tape from that) can’t see the matching closing ] as it comes after the cursor. This means the loop will never really execute. But, when you navigate past the entire loop block, the cells jump to a completely different state (as seen in the video at around 0:08 ). How am I going to solve it then? I’ve decided that I dont want to “solve” it by somehow making loops work in live preview. I’ve decided live preview should only be relatively basic. For serious loop-involved debugging, I wanna introduce a special “Debug Mode”. In this mode, you’ll be able to step through your code, have chars printed into the output panel live AND also have the cursor/program pointer correctly jump around."}, {"post_id": 8714, "ts": "2026-06-14T14:06:09Z", "hours": 0.9819, "text": "Menubar Navigation, Code Running and Output Display works!! 🎉 :) Today, the IDE ran its first program! (and yes, of course, it was a hello world program) What changed? As already mentioned in the last post, I’ve rewritten part of the menubar rendering and also implemented output field rendering. Also, I’ve refactored the run_brainfuck function to be compatible with the UI. Changes in the run_brainfuck(...) function Before, it just stubbornly printed to stdout and read from stdin which of course kinda conflicts with the UI. To solve this, I made it write into an output buffer and accept a function pointer for a function that needs to return an int of which char was read in. The actual reading in will be handled by the pointed to function, which will probably be a “Please press a button” popup. What’s next Looking forward to getting the tape reel and then popups (including file saving/loading, exit confirm and please press a button) to work!"}, {"post_id": 7738, "ts": "2026-06-12T22:24:42Z", "hours": 1.9525, "text": "Great News! The editor is now fully working! I’ve managed to implement everything from syntax highlighting to special keys such as delete, home and end. Nice! What now? I’m also working on getting the menubar to work, which’ll require rewriting a little part of the menubar rendering, as currently, the text entries get printed in one go with the spaces. If I somehow wanna highlight the text only, I gotta draw it all seperately."}, {"post_id": 7365, "ts": "2026-06-12T08:38:10Z", "hours": 1.3817, "text": "Typing works!! not Another Memory Violation :) Gonna debug that one too i guess On the flip side, I got syntax highlighting working!"}, {"post_id": 7314, "ts": "2026-06-12T05:59:01Z", "hours": 0.4856, "text": "This was literally me after opening my code today On a side note: I’ve cleaned up the codebase a little and split stuff into separate files for readability, like moving the editor draw function along with all its helpers into a separate file. I’m about to start working on finishing the editor panel now. :)"}, {"post_id": 7038, "ts": "2026-06-11T19:57:39Z", "hours": 1.5256, "text": "holy productivity spike I got the editor fully working!!! :) After wanting to throw my computer from a comically large height (multiple times), it finally runs: proper arrow-key navigation, a fully working cursor, soft wraps, line numbers, and so on. Vertical scrolling is now fully functional aswell. Even some comfort features like using the Home and End keys work! Fun stuff I found out in the process In the process of getting this to work I also discovered things like the fact that the pdcurses getch() macro implicitly refreshes the stdscr and then… doesnt… flush it 😐 Anything still borked? Some things also still don’t work fully, which kinda bothers me. The main example of this is navigating the cursor vertically into soft-wrapped lines; because of how I wrote the row up/down logic - which is to check in the editor buffer where the next or previous line feed is and then navigate based on that - I can’t just say “oh theres a soft line wrap lets just detect that instead of a \\n ” because the rendering (which does the soft line wrapping) and the I/O loop don’t communicate with each other Sure, I could fix it by adding a shared data structure which contains all line wrappings, but for now, I just wanna get the more important stuff running. Any plans now? Anyways, I’m planning to finish the editor fully by adding writing text (wild concept, i know!) and syntax highlighting next. Stay tuned to find out how much I continue to suffer! :’)"}, {"post_id": 6959, "ts": "2026-06-11T17:48:58Z", "hours": 0.7281, "text": "No more Access Violation! Also, I managed to get the editor drawing going! :) The interesting thing about the access violation fix is: I have no clue what caused it - it just kinda went away?? But oh well, the error is not happening anymore :D Whats working now? I so far mainly implemented colored line numbers and soft wrapping. The implementation for vertical scrolling however isn’t written yet, that’s the plan next. Also, I’ll probably implement cursor navigation with that in one go. I also made some small optimizations to the main loop plus a few fixes and adjustments here and there."}, {"post_id": 6930, "ts": "2026-06-11T16:40:49Z", "hours": 2.2344, "text": "I managed to prove why C is the most memory safe language that exists!! This gets triggered by literally just resizing the window and I have zero idea why :’) On a side note though, I’ve been working on the editor panel a little and it’s slowly coming together. Anyways, looking forward to debugging hell for that one overflow or nullpointer (or whatever the hell this is)!"}, {"post_id": 6777, "ts": "2026-06-11T10:56:05Z", "hours": 1.02, "text": "Panel borders are done and working! :D How annonying was it? The tricky part was getting the layout constants to line up correctly (it gets pretty annoying if you’re trying to find where you accidentally forgot to add one to a value) Got there in the end though. Anything else? Also cleaned up the repo. I also added a git submodule so that PDCurses actually gets cloned too if you pass the --recurse-submodules when cloning. Now the foundation is solid and I can actually start on the editor itself next session. :) I also included a lil preview of how it looks rn :)"}, {"post_id": 6754, "ts": "2026-06-11T09:43:15Z", "hours": 1.4886, "text": "Introducing: Brainf * ck IDE - a TUI-based IDE for writing and running brainf * ck, built in C using PDCurses. The IDE has a panelized layout: code editor on the left, output on the right, and a live tape viewer along the bottom so you can actually watch memory change in real time while writing code! The screenshot is mocked up manually for now, the code for drawing doesn’t exist yet 😅 Whats already started So far I’ve got the interpreter written and a few basic rendering steps working, including the top menubar. How it works The brainf * ck interpreter is actually really simple: you need a loop to iterate through a program buffer, then check for any “special” chars like < , + , … and then just increment/decrement values or do some simple logic depending on which char it is. Next, I’ll try to do the panel borders and some panel setup. Looking forward to how much stuff will break! :)"}]...
|
Title: Brainf*ck IDE by @MarioS271 | Stardance
De Title: Brainf*ck IDE by @MarioS271 | Stardance
Devlogs:
Introducing: Brainf * ck IDE - a TUI-based IDE for writing and running brainf * ck, built in C using PDCurses. The IDE has a panelized layout: code editor on the left, output on the right, and a live tape viewer along the bottom so you can actually watch memory change in real time while writing code! The screenshot is mocked up manually for now, the code for drawing doesn’t exist yet 😅 Whats already started So far I’ve got the interpreter written and a few basic rendering steps working, including the top menubar. How it works The brainf * ck interpreter is actually really simple: you need a loop to iterate through a program buffer, then check for any “special” chars like < , + , … and then just increment/decrement values or do some simple logic depending on which char it is. Next, I’ll try to do the panel borders and some panel setup. Looking forward to how much stuff will break! :)
Panel borders are done and working! :D How annonying was it? The tricky part was getting the layout constants to line up correctly (it gets pretty annoying if you’re trying to find where you accidentally forgot to add one to a value) Got there in the end though. Anything else? Also cleaned up the repo. I also added a git submodule so that PDCurses actually gets cloned too if you pass the --recurse-submodules when cloning. Now the foundation is solid and I can actually start on the editor itself next session. :) I also included a lil preview of how it looks rn :)
I managed to prove why C is the most memory safe language that exists!! This gets triggered by literally just resizing the window and I have zero idea why :’) On a side note though, I’ve been working on the editor panel a little and it’s slowly coming together. Anyways, looking forward to debugging hell for that one overflow or nullpointer (or whatever the hell this is)!
No more Access Violation! Also, I managed to get the editor drawing going! :) The interesting thing about the access violation fix is: I have no clue what caused it - it just kinda went away?? But oh well, the error is not happening anymore :D Whats working now? I so far mainly implemented colored line numbers and soft wrapping. The implementation for vertical scrolling however isn’t written yet, that’s the plan next. Also, I’ll probably implement cursor navigation with that in one go. I also made some small optimizations to the main loop plus a few fixes and adjustments here and there.
holy productivity spike I got the editor fully working!!! :) After wanting to throw my computer from a comically large height (multiple times), it finally runs: proper arrow-key navigation, a fully working cursor, soft wraps, line numbers, and so on. Vertical scrolling is now fully functional aswell. Even some comfort features like using the Home and End keys work! Fun stuff I found out in the process In the process of getting this to work I also discovered things like the fact that the pdcurses getch() macro implicitly refreshes the stdscr and then… doesnt… flush it 😐 Anything still borked? Some things also still don’t work fully, which kinda bothers me. The main example of this is navigating the cursor vertically into soft-wrapped lines; because of how I wrote the row up/down logic - which is to check in the editor buffer where the next or previous line feed is and then navigate based on that - I can’t just say “oh theres a soft line wrap lets just detect that instead of a \n ” because the rendering (which does the soft line wrapping) and the I/O loop don’t communicate with each other Sure, I could fix it by adding a shared data structure which contains all line wrappings, but for now, I just wanna get the more important stuff running. Any plans now? Anyways, I’m planning to finish the editor fully by adding writing text (wild concept, i know!) and syntax highlighting next. Stay tuned to find out how much I continue to suffer! :’)
This was literally me after opening my code today On a side note: I’ve cleaned up the codebase a little and split stuff into separate files for readability, like moving the editor draw function along with all its helpers into a separate file. I’m about to start working on finishing the editor panel now. :)
Typing works!! not Another Memory Violation :) Gonna debug that one too i guess On the flip side, I got syntax highlighting working!
Great News! The editor is now fully working! I’ve managed to implement everything from syntax highlighting to special keys such as delete, home and end. Nice! What now? I’m also working on getting the menubar to work, which’ll require rewriting a little part of the menubar rendering, as currently, the text entries get printed in one go with the spaces. If I somehow wanna highlight the text only, I gotta draw it all seperately.
Menubar Navigation, Code Running and Output Display works!! 🎉 :) Today, the IDE ran its first program! (and yes, of course, it was a hello world program) What changed? As already mentioned in the last post, I’ve rewritten part of the menubar rendering and also implemented output field rendering. Also, I’ve refactored the run_brainfuck function to be compatible with the UI. Changes in the run_brainfuck(...) function Before, it just stubbornly printed to stdout and read from stdin which of course kinda conflicts with the UI. To solve this, I made it write into an output buffer and accept a function pointer for a function that needs to return an int of which char was read in. The actual reading in will be handled by the pointed to function, which will probably be a “Please press a button” popup. What’s next Looking forward to getting the tape reel and then popups (including file saving/loading, exit confirm and please press a button) to work!
Live tape preview is done! While writing or editing code or by literally just moving your cursor, you now get a live preview of the programs “tape” (basically it’s entire data it works with). There is one big problem with the current system however. If you’re interested, feel free to read the following. The big Issue Loops. You see, in brainf * ck, loops work by using [ to jump to the matching ] if the current cell is zero and by using ] to jump to the matching [ if the cell is non-zero. This behaviour is actually not that pleasant to simulate when you’re only executing to a specific point in the program, because the “simulator” (the thing that interprets the bit of brainf * ck code up until your cursor and then generates a tape from that) can’t see the matching closing ] as it comes after the cursor. This means the loop will never really execute. But, when you navigate past the entire loop block, the cells jump to a completely different state (as seen in the video at around 0:08 ). How am I going to solve it then? I’ve decided that I dont want to “solve” it by somehow making loops work in live preview. I’ve decided live preview should only be relatively basic. For serious loop-involved debugging, I wanna introduce a special “Debug Mode”. In this mode, you’ll be able to step through your code, have chars printed into the output panel live AND also have the cursor/program pointer correctly jump around.
The debugger works!! After hours of work (mainly debugging and patching up code), it finally works! :DD The power of the debugger You can use the debugger to step forward and backward in your brainf * ck program. While stepping, a live program counter display (labelled “PC”) shows the current program counter index, while the tape in the bottom panel shows the current state of each cell, which cell is currently selected by the data pointer and what the cell contains, in both decimal and ASCII format. The following is just for if you’re interested in the technical details ;) Why I wanted to wipe my drive several times while making this (Problem 1) The first main problem in writing the debugger was stepping backward. You’d think its just “do the instruction in reverse, like when you back-step a - , just do a + instead” but the problem arises when, for example, you read in something using , and the info got overwritten. How do you reverse to something that got destroyed? Well, you don’t. The Solution to the Back-Stepping problem I implemented backward stepping by just recomputing the entire tape from scratch on every backstep. Yes, it’s probably not the best way, but it works. Problem 2 Loops. Once. Again. The jumping around of loops in brainf * ck is not the simplest thing to correctly compute, especially when only partially executing a program. When you land on a [ or a ] , you also need to account for nested loops. You can probably imagine that that can definitely cause some headaches.
Popups are finished! (almost) After a little bit of work, a popup system (which I gotta say is written kinda well compared to all the other code) is in place! Currently, there are: Exit Confirmation Popup Save File Dialog Load File Dialog One last thing is still missing though: The please press a button popup for inputs ( , ). Technical Details The popup system works by using a sub-struct inside of the global state struct ( state.popup ). It contains data such as whether a popup is active, if it accepts text input and handlers for drawing and the confirm button. There’s a base func ( create_popup_base() ) that draws a new basic outline for the popup. After that, only the contents of the popup get refreshed via the custom handler set via setting a function pointer ( state.popup.refresh_handler ). The popup also “captures” input. There’s a seperate if for state.popup.active before the main input validation which processes inputs and then skips the normal input processing.
Finally, the debugger is working properly . If you’ve tried a beta version, especially v1.1.0, you might have noticed the debugger being broken and kinda weird. I noticed that too, so I decided to rewrite it! (technically, I rewrote it twice but oh well) Why it needed a rewrite Before, the debugger worked by executing the next step in-place and jumping in loops by moving the cursor to the matching bracket. The problem was: to jump backwards when looping, you had to keep a history which could pretty quickly get filled if you were debugging enough and overall the system was too overengineered for what it was supposed to do. The new architecture The new debugger does almost the same that the live tape preview already does. The live tape preview has one caveat that doesn’t allow it to be directly used for the debugger though: we cannot track loop iterations on the cursor position alone, as we always just compute until the cursor. If we’re before a loop’s end, we’re only computing the first iteration. If we move past the loop, the whole loop gets computed in one move.Instead of the cursor pos, the debugger uses an instruction counter. It basically counts how many brainf * ck instructions it should run, which solves all problems here. Why this works Take this program: ++++++++ [ > ++++ [ > ++ > +++ > +++ > + <<<< - ] > + > + > - >> + [ < ] < - ] >> . > ---.+++++++..+++. >> . < -. < .+++.------.--------. >> +. > ++. Say we wanna run 40 instructions. We first step over the initial ++++++++[>++++[>++>+++>+++>+<<<<- (33 instructions), and then we get to the first ] . When we do, the current cell is non-zero, meaning we jump back to the instruction after the highlighted bracket ( ++++++++[>++++ [ >++>+++>+++>+<<<<- ). The jump is one instruction. Then we run >++>++ and reach 40. Notice how we’re in the second iteration when it ends. If we now move the cursor forward by one, we tell the tape generator “execute 41 instructions”. The same as before happens now (execute first bit, jump back, continue executing - but one instruction more than before this time) but we land in the second iteration again.
Whoops Had a small bug in the left arrow key in normal editing mode and popups weren’t resizing and re-positioning correctly, fixed all that :) FINAL RELEASE BABYYYY (hopefully)
Ships:
Brainf * ck IDE Hello and welcome to my project: an IDE for the brainf * ck programming language! What is it Brainf * ck IDE is a text editor, interpreter and debugger for brainf * ck. It is a powerful tool for developing brain * ck applications (if you wanna do that for some reason) How to use it The editor has two modes, Normal and Debug . Normally, youre in normal mode, but you can switch between normal and debug by using the DEBUG button. The editor is divided into three panels and a menubar. The three panels are: Editor Panel (Top Left) Output Panel (Top Right) Tape Panel (Bottom) Known Issues Maximizing the window and resizing it larger than a specific size causes the contents to dissapear, to reverse just make the window smaller again Resizing the window smaller than the size of a popup causes a heap corruption I would recommend avoiding resizing the window unless absolutely necessary 😅 If you’re interested in the details, feel free to read the rest on the GitHub Repo . :)...
|
1793717760.1497085
|
1793804160.1497085
|
|
16468
|
Vaion by @vaishnav_singh | Stardance
|
vaishnav_singh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Vaion by @vaishnav_singh | Stardance
|
1793774899.934534
|
1794379699.934534
|
|
16469
|
My awesome macropad! by @skulltrap79 | Stardance
|
skulltrap79
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @skulltrap79 | Star Title: My awesome macropad! by @skulltrap79 | Stardance...
|
1793530274.2528317
|
1794135074.2528317
|
|
16470
|
Blueprint by @evilpineappledudelol | Stardance
|
evilpineappledudelol
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Blueprint by @evilpineappledudelol | Starda Title: Blueprint by @evilpineappledudelol | Stardance...
|
1793267328.7435331
|
1793872128.7435331
|
|
16471
|
A Game by @scone | Stardance
|
scone
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A Game by @scone | Stardance
|
1793526864.6715262
|
1794131664.6715262
|
|
16472
|
DuckyPaste by @ZiggyZonko | Stardance
|
ZiggyZonko
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-11T04:34:16Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a simple clipboard tool that is backed up by a .json file to prevent loss of entries. The app features a pinning, searching and deleting system to not only store pasted content, but manage them. I created this to categorise and sort my pasted content rather than the usual windows / linux clipboard ( which I actually didn’t know existed prior 😿 ). The sorting by topic is coming in a future update…. The Qol improvements I created: Pinning of entries to help hold on to important content. Deletion of entries, I’m unsure if there is a simple way to delete clipboard entries within the built-in clipboards. Easy to find (as I had no idea about Windows+V). All backed up in a stored .json file in the /db folder, meaning you can easily sort through that if data the application stops. Additionally, the searching of entries helps be organised with your entries, locating important content quickly.", "repo": "https://github.com/ZiggyZonko/DuckyPaste", "demo": "https://github.com/ZiggyZonko/DuckyPaste/releases/tag/v1.0.0-alpha"}]...
|
[{"post_id": 8642, "ts": "2026 [{"post_id": 8642, "ts": "2026-06-14T11:22:05Z", "hours": 0.5542, "text": "Implemented a tray icon with a show and quit button, so it runs in the background and picks up on your clipboard when it’s merely running as a task. I also fixed the pinning button, so when pinned, the entry adds a pin emoji 📌 and places it at the top of the list. Release 1.0 is being shipped soon…."}, {"post_id": 8019, "ts": "2026-06-13T11:45:29Z", "hours": 0.555, "text": "Added a working delete button and fixed a few bugs associated with the search bar and the history array, soon to be finalised"}, {"post_id": 7452, "ts": "2026-06-12T12:46:53Z", "hours": 1.0428, "text": "Created a json saving and loading system so you can close down the application and still have the clipboard saved. Added a search bar and pinning button, search bar functionality is added while pinning is not. More to come!"}, {"post_id": 6773, "ts": "2026-06-11T10:50:23Z", "hours": 1.0197, "text": "I created the basis of the clipboard, overiding duplicates, adding a nice aesthetic and consolidating the foundation of DuckyPaste."}]...
|
Title: DuckyPaste by @ZiggyZonko | Stardance
Devl Title: DuckyPaste by @ZiggyZonko | Stardance
Devlogs:
I created the basis of the clipboard, overiding duplicates, adding a nice aesthetic and consolidating the foundation of DuckyPaste.
Created a json saving and loading system so you can close down the application and still have the clipboard saved. Added a search bar and pinning button, search bar functionality is added while pinning is not. More to come!
Added a working delete button and fixed a few bugs associated with the search bar and the history array, soon to be finalised
Implemented a tray icon with a show and quit button, so it runs in the background and picks up on your clipboard when it’s merely running as a task. I also fixed the pinning button, so when pinned, the entry adds a pin emoji 📌 and places it at the top of the list. Release 1.0 is being shipped soon….
Ships:
I made a simple clipboard tool that is backed up by a .json file to prevent loss of entries. The app features a pinning, searching and deleting system to not only store pasted content, but manage them. I created this to categorise and sort my pasted content rather than the usual windows / linux clipboard ( which I actually didn’t know existed prior 😿 ). The sorting by topic is coming in a future update…. The Qol improvements I created: Pinning of entries to help hold on to important content. Deletion of entries, I’m unsure if there is a simple way to delete clipboard entries within the built-in clipboards. Easy to find (as I had no idea about Windows+V). All backed up in a stored .json file in the /db folder, meaning you can easily sort through that if data the application stops. Additionally, the searching of entries helps be organised with your entries, locating important content quickly....
|
1793796638.5990953
|
1793883038.5990953
|
|
16473
|
Chill Record Player by @miles_s_aguilar | Stardanc Chill Record Player by @miles_s_aguilar | Stardance...
|
|
2
|
83.25
|
623
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T18:29:14Z", "hours": 30.0, "multiplier": 19.74, "payout": 466, "blessing": "neutral", "text": "I made a website for playing vinyls! I think an important aspect of enjoying music is being able to experience it physically, through interacting personally with the forms it comes in. Now obviously, this record player is online, so I did my best to bring that physical experience into a virtual website. Hopefully everything is self-explanatory on the site, and I incorperated a lot of feedback from the first round!! In the future, I plan to make this a standalone app, giving people the ability to upload their own music. Also, I’ll try to fix performance issues as I understand this website can be a bit resource-itensive.", "repo": "https://github.com/stackofdoggos/Chill-Music-Player", "demo": "https://milesaguilar.com/music/"}, {"ship_num": 2, "ts": "2026-06-21T07:05:21Z", "hours": 10.0, "multiplier": 16.59, "payout": 157, "blessing": "neutral", "text": "Hey everyone, I made a 3D vinyl player online to play classical music. Please try it!!! It’s fully hosted on my personal website at https://milesaguilar.com/music One of the most challenging aspects of this project was making everything feel as tactile as possible. To do this, I needed to balance realism with how annoying things would be to use. To this end, I spent a lot of time thinking about which controls were most intuitive. In the future, I plan to let people upload their own vinyls and have more furniture in the room. This is mostly just a proof of concept to see if people find this interesting", "repo": "https://github.com/stackofdoggos/Chill-Music-Player", "demo": "https://milesaguilar.com/music/"}]...
|
[{"post_id": 39588, "ts": "202 [{"post_id": 39588, "ts": "2026-08-02T17:44:39Z", "hours": 8.6531, "text": "Devlog #12: Chill Record Player I think the video I attatched was too large so I’m now rewriting this devlog ;-; Anyways, I’ve spent the last week implementing the Yandhi intro as I mentioned last devlog/product idea. I spent a ton of time modelling/keyframing it in Blender, then integrating it with the website to infinitely loop, then dissasemble the vinyl when a user enters the website. What took the longest was definitely the smooth yet neat transition where the inside of the record turns into the room, so please check it out!! PS caustics take foreverrrr to render…"}, {"post_id": 35320, "ts": "2026-07-26T17:17:22Z", "hours": 0.3014, "text": "CONCEPT: Loading Screen Hey all! This isn’t gonna be a normal devlog, but rather a quick update on something I’ll be hoping to add to the app. I’ve been tossing around a couple loading screen ideas but I think I have a really cool one. I want to mimic the Yandhi opening where an exploded view of a CD comes together and begins to spin. I think I can recreate that with my record player (or maybe just one vinyl, although that would be boring-ish?) Since this animation is a little long, I’ll probably only have it play when the user hasn’t logged on in awhile or something."}, {"post_id": 35076, "ts": "2026-07-26T08:21:15Z", "hours": 8.665, "text": "Devlog #11: Chill Record Player Spent all day adding a new table, and then using TypeScript to change the texture on it. I’m a bit worried about how I’m dividing the texturing between Blender and ts, as I have no rhyme or reason right now between which textures I delegate to which platform. Usually, the procedurally-generated textures are loaded in ts though. I also smoothed the grain on the bookshelf. The rug looks bad so I’ll work on that next, and then prepare the website for a MacOS app and implement more of the features I talked about in Devlog #9!!"}, {"post_id": 33809, "ts": "2026-07-24T01:31:18Z", "hours": 7.1611, "text": "Devlog #10: Chill Record Player Made a much more simplified loading screen and recorded some sound effects. Truthfully, I haven’t had that much time to work on the website. AND, I wasn’t able to export my original idea for a loading screen without a watermark. I’m gonna try and make something better than this…"}, {"post_id": 27539, "ts": "2026-07-13T06:03:22Z", "hours": 1.7986, "text": "Devlog #9: Chill Record Player A little hard to tell, but I updated the model of the bookshelf to be more visually interesting (extended the rails and added a metal base) and I also re-UV-unwrapped the bookshelf so the wood texture looks less stretched. I think I’m going to try and code something that blurs the texture a little though as the black parts are a little too dark for my taste. I was also thinking of adding this really cool animation I saw (see below) on Twitter to my loading screen, so keep an eye out for that!"}, {"post_id": 26712, "ts": "2026-07-11T17:41:40Z", "hours": 10.0772, "text": "Devlog #8: Chill Record Player I implemented more major performance enhancements, specifically aimed at increasing performance on retinal displays. Since retinal displays have so many pixels, computers bundle individual pixels together into logical pixels. The ratio at which this happens is called DPR. A higher DPR means sharper images but lower performance. I capped the DPR at 2x on “High”. Other changes were: Capped FPS at 60 -> 45 Added performance benchmarking to determine optimal settings for device Brought back temporal blur post-fx scan with extra leeway gained by reducing FPS Made “reflections on” default behavior Pushed more work to the loading screen Further performance changes planned before standalone app release Seeing if there’s a way to smush the 8x post-fx render stack into fewer passes Decimating more geometry Further ideas planned before app release: MAJOR: Letting user add more music MAJOR: Letting user add own props MAJOR: Tutorial/more tooltips MAJOR: Fixing flip animations upon un-focusing MAJOR: Adding zoom view to baskets MAJOR: Fixing audio bug between tracks (hard to pin down and test fixes, I’ll work on that tomorrow probably) MINOR: Generating normal maps for textures and replacing procedurally-generated floor MINOR: Modelling a better-looking table with legs that aren’t just metal poles lol MINOR: Fixing weird blur bug on the vinyl cover MINOR: Adding above-vinyl view that shows users where the start and end of every track is in different colors, allowing greater control over what songs can be played and when (see image below)"}, {"post_id": 26221, "ts": "2026-07-10T21:41:53Z", "hours": 6.5947, "text": "HOTFIX: Performance Enhancement So I was messing around with the website today and realized it was maxing out my GPU, which I thought was ridiculous. It turns out I had been vastly underestimating the performance impacts of some of the effects I had on the website, as well as the meshes I was using. I decimated a model I had on top of the bookshelf but it was simply too many tris, so I removed it and implemented other code that made the default graphical settings less taxing."}, {"post_id": 24858, "ts": "2026-07-08T18:26:22Z", "hours": 0.8017, "text": "Devlog #7: Chill Record Player Last one before ship #2! Got everything in order, including uploading things to my site and adding some more props. Also fixed some pathing issues. I also kinda got rid of the blur… After adding HDRIs, it looked kinda like Garry’s mod lol"}, {"post_id": 24323, "ts": "2026-07-07T20:36:35Z", "hours": 12.4606, "text": "Devlog #6: Chill Music Player Added a bonsai tree and started modelling other objects I want in the room. Pulled an all-nighter for this. While I was doing this, I realized that the file format I was using to render the room (glb) doesnt support specific node setups and textures. This essentially limited the realism of the textures I was trying to create. To alleviate this, I’ll have to rely heavily on realistic lighting and things like glossiness. So, I decided that the lighting should be handled by an HDR and reflections be rendered in real time (I wonder how bad the performance hit will be on this). However, I also want to keep the day-night slider. This poses an issue, as HDRs are static images. This means I’ll need to write code to interpolate (probably just a linear ramp) between a couple HDRs throughout the day. Now, I don’t know if this will give me the same very warm lighting I have now. I also intend to add reflections to the glass cover of the record player after I implement HDRs, but we’ll see… Other changes: Removed emitted dots Performance changes Worked on modeling a new table behind the scenes (I modeled my dining room table a year ago but p sure I deleted it unforch)"}, {"post_id": 23214, "ts": "2026-07-06T01:09:10Z", "hours": 14.3861, "text": "Devlog #5: Chill Record Player After a monumental amount of work, I’ve ported the geometry of the room (which I had originally written in typescript) into Blender. Hopefully, this gives me more control over adding more complex geometry into the scene like plants on the ground and trinkets on the desk before I export it as a GLB file. I really can’t emphasize enough how long this took; this literally doubled the amount of time I’ve spent on this project. Anyways, some of you may have noticed that the scene in Blender looks pretty plain, though, and that’s intentional! I’m gonna handle the lighting and some of the texturing in typescript. Some of the other features I’ve added/fixes I’ve done are a nicer settings panel, warm lighting, and reducing the crackle from the record player, which I heard was a little annoying. I’ve also added post-processing to the camera, including chromatic abberation, some bloom, and a grain filter which becomes more noticeable during sunset.. My next goal will be to add as much detail to the scene as I can in Blender to really make the scene come alive. That definitely means replacing the cactus-ish plant on top of the bookshelf lol."}, {"post_id": 22020, "ts": "2026-07-04T08:14:47Z", "hours": 2.7978, "text": "Devlog #4: Chill Record Player Since my ship, I’ve been working on more features such as a day-night slider (which I hope I can sync to the user’s time at some point), a remodeled bookshelf (this took awhile), and a better lighting system. I also added bins below the bookshelf for bulk storage of records after I friend recommended I do that. Some features people have been asking for and my thoughts: Hosting your own music: until I set up a dedicated DB for this, this is not going to be possible. Once I make this a standalone app I’ll definitely implement that. Also note that I can’t add non-classical music here because 99.99% of non-classical music that is popular right now is not in the public domain. Tutorial: Yes! I’ll work on accessability Favoriting records: Yes, with the new bookshelf I can implement that For now, I’m going to try and make the room feel warmer/more cozy by using volumetric shaders and introducing subsurface scattering on my models if I can do that without hurting performance. Follow to stay updated!!!!"}, {"post_id": 12970, "ts": "2026-06-21T07:01:31Z", "hours": 0.865, "text": "Devlog 3: Before first ship! added a custom shader which allows the user to switch between what time of day it is. will get rid of the slider in a future ship but its the best i could do for now…"}, {"post_id": 11517, "ts": "2026-06-18T20:15:15Z", "hours": 3.5244, "text": "Devlog 2: A super chill music website Over the past few days, I’ve been slowly chipping away at some QOL features. Users can now see which keystrokes can be used at any given moment and users can now inspect vinyls. Other features that were improved were the ability to move the arm of the record player with higher precision, and a top-down view which enhances that experience. Unfortunately, I had to change the records to be public domain in preparation for my first ship. MBDTF will not be avaliable, but maybe I’ll let users locally host their own vinyls! Ideas ideas ideas… Maybe this could also become a standalone app. Planned features (either before or after first ship) Custom shaders -> Moody lighting or time of day slider with lamp u can turn on and off Ability to locally host music or add your own Way more records Ability to change record order More views for inspecting your records Improve the top-down angle to show when tracks begin and end on a record Ability to customize painting"}, {"post_id": 7310, "ts": "2026-06-12T05:42:23Z", "hours": 5.2231, "text": "A super chill music website Recently, I’ve been kind of inspired by this Brian Eno quote: “Whatever you now find weird, ugly, uncomfortable and nasty about a new medium will surely become its signature. CD distortion, the jitteriness of digital video, the crap sound of 8-bit — all of these will be cherished and emulated as soon as they can be avoided. It’s the sound of failure: so much modern art is the sound of things going out of control, of a medium pushing to its limits and breaking apart. The distorted guitar sound is the sound of something too loud for the medium supposed to carry it. The blues singer with the cracked voice is the sound of an emotional cry too powerful for the throat that releases it. The excitement of grainy film, of bleached-out black and white, is the excitement of witnessing events too momentous for the medium assigned to record them.” For this reason, I’ve decided to build a chill music website for listening to vinyl records. Imo, the feel of interacting with music is just as important as listening to the music itself, and in an age of ultra-high-fidelity lossless downloads on Spotify, I think there’s something special about vinyl (and this is coming from someone who listens to a ton of Spotify). It’s taken a while to get this 3D view set up, and there are still a lot of bugs and sound effects I want to fix or implement to bring everything to life, but the challenge has been making the experience feel as tactile as possible. I look forward to seeing where this’ll go :)"}]...
|
Title: Chill Record Player by @miles_s_aguilar | S Title: Chill Record Player by @miles_s_aguilar | Stardance
Devlogs:
A super chill music website Recently, I’ve been kind of inspired by this Brian Eno quote: “Whatever you now find weird, ugly, uncomfortable and nasty about a new medium will surely become its signature. CD distortion, the jitteriness of digital video, the crap sound of 8-bit — all of these will be cherished and emulated as soon as they can be avoided. It’s the sound of failure: so much modern art is the sound of things going out of control, of a medium pushing to its limits and breaking apart. The distorted guitar sound is the sound of something too loud for the medium supposed to carry it. The blues singer with the cracked voice is the sound of an emotional cry too powerful for the throat that releases it. The excitement of grainy film, of bleached-out black and white, is the excitement of witnessing events too momentous for the medium assigned to record them.” For this reason, I’ve decided to build a chill music website for listening to vinyl records. Imo, the feel of interacting with music is just as important as listening to the music itself, and in an age of ultra-high-fidelity lossless downloads on Spotify, I think there’s something special about vinyl (and this is coming from someone who listens to a ton of Spotify). It’s taken a while to get this 3D view set up, and there are still a lot of bugs and sound effects I want to fix or implement to bring everything to life, but the challenge has been making the experience feel as tactile as possible. I look forward to seeing where this’ll go :)
Devlog 2: A super chill music website Over the past few days, I’ve been slowly chipping away at some QOL features. Users can now see which keystrokes can be used at any given moment and users can now inspect vinyls. Other features that were improved were the ability to move the arm of the record player with higher precision, and a top-down view which enhances that experience. Unfortunately, I had to change the records to be public domain in preparation for my first ship. MBDTF will not be avaliable, but maybe I’ll let users locally host their own vinyls! Ideas ideas ideas… Maybe this could also become a standalone app. Planned features (either before or after first ship) Custom shaders -> Moody lighting or time of day slider with lamp u can turn on and off Ability to locally host music or add your own Way more records Ability to change record order More views for inspecting your records Improve the top-down angle to show when tracks begin and end on a record Ability to customize painting
Devlog 3: Before first ship! added a custom shader which allows the user to switch between what time of day it is. will get rid of the slider in a future ship but its the best i could do for now…
Devlog #4: Chill Record Player Since my ship, I’ve been working on more features such as a day-night slider (which I hope I can sync to the user’s time at some point), a remodeled bookshelf (this took awhile), and a better lighting system. I also added bins below the bookshelf for bulk storage of records after I friend recommended I do that. Some features people have been asking for and my thoughts: Hosting your own music: until I set up a dedicated DB for this, this is not going to be possible. Once I make this a standalone app I’ll definitely implement that. Also note that I can’t add non-classical music here because 99.99% of non-classical music that is popular right now is not in the public domain. Tutorial: Yes! I’ll work on accessability Favoriting records: Yes, with the new bookshelf I can implement that For now, I’m going to try and make the room feel warmer/more cozy by using volumetric shaders and introducing subsurface scattering on my models if I can do that without hurting performance. Follow to stay updated!!!!
Devlog #5: Chill Record Player After a monumental amount of work, I’ve ported the geometry of the room (which I had originally written in typescript) into Blender. Hopefully, this gives me more control over adding more complex geometry into the scene like plants on the ground and trinkets on the desk before I export it as a GLB file. I really can’t emphasize enough how long this took; this literally doubled the amount of time I’ve spent on this project. Anyways, some of you may have noticed that the scene in Blender looks pretty plain, though, and that’s intentional! I’m gonna handle the lighting and some of the texturing in typescript. Some of the other features I’ve added/fixes I’ve done are a nicer settings panel, warm lighting, and reducing the crackle from the record player, which I heard was a little annoying. I’ve also added post-processing to the camera, including chromatic abberation, some bloom, and a grain filter which becomes more noticeable during sunset.. My next goal will be to add as much detail to the scene as I can in Blender to really make the scene come alive. That definitely means replacing the cactus-ish plant on top of the bookshelf lol.
Devlog #6: Chill Music Player Added a bonsai tree and started modelling other objects I want in the room. Pulled an all-nighter for this. While I was doing this, I realized that the file format I was using to render the room (glb) doesnt support specific node setups and textures. This essentially limited the realism of the textures I was trying to create. To alleviate this, I’ll have to rely heavily on realistic lighting and things like glossiness. So, I decided that the lighting should be handled by an HDR and reflections be rendered in real time (I wonder how bad the performance hit will be on this). However, I also want to keep the day-night slider. This poses an issue, as HDRs are static images. This means I’ll need to write code to interpolate (probably just a linear ramp) between a couple HDRs throughout the day. Now, I don’t know if this will give me the same very warm lighting I have now. I also intend to add reflections to the glass cover of the record player after I implement HDRs, but we’ll see… Other changes: Removed emitted dots Performance changes Worked on modeling a new table behind the scenes (I modeled my dining room table a year ago but p sure I deleted it unforch)
Devlog #7: Chill Record Player Last one before ship #2! Got everything in order, including uploading things to my site and adding some more props. Also fixed some pathing issues. I also kinda got rid of the blur… After adding HDRIs, it looked kinda like Garry’s mod lol
HOTFIX: Performance Enhancement So I was messing around with the website today and realized it was maxing out my GPU, which I thought was ridiculous. It turns out I had been vastly underestimating the performance impacts of some of the effects I had on the website, as well as the meshes I was using. I decimated a model I had on top of the bookshelf but it was simply too many tris, so I removed it and implemented other code that made the default graphical settings less taxing.
Devlog #8: Chill Record Player I implemented more major performance enhancements, specifically aimed at increasing performance on retinal displays. Since retinal displays have so many pixels, computers bundle individual pixels together into logical pixels. The ratio at which this happens is called DPR. A higher DPR means sharper images but lower performance. I capped the DPR at 2x on “High”. Other changes were: Capped FPS at 60 -> 45 Added performance benchmarking to determine optimal settings for device Brought back temporal blur post-fx scan with extra leeway gained by reducing FPS Made “reflections on” default behavior Pushed more work to the loading screen Further performance changes planned before standalone app release Seeing if there’s a way to smush the 8x post-fx render stack into fewer passes Decimating more geometry Further ideas planned before app release: MAJOR: Letting user add more music MAJOR: Letting user add own props MAJOR: Tutorial/more tooltips MAJOR: Fixing flip animations upon un-focusing MAJOR: Adding zoom view to baskets MAJOR: Fixing audio bug between tracks (hard to pin down and test fixes, I’ll work on that tomorrow probably) MINOR: Generating normal maps for textures and replacing procedurally-generated floor MINOR: Modelling a better-looking table with legs that aren’t just metal poles lol MINOR: Fixing weird blur bug on the vinyl cover MINOR: Adding above-vinyl view that shows users where the start and end of every track is in different colors, allowing greater control over what songs can be played and when (see image below)
Devlog #9: Chill Record Player A little hard to tell, but I updated the model of the bookshelf to be more visually interesting (extended the rails and added a metal base) and I also re-UV-unwrapped the bookshelf so the wood texture looks less stretched. I think I’m going to try and code something that blurs the texture a little though as the black parts are a little too dark for my taste. I was also thinking of adding this really cool animation I saw (see below) on Twitter to my loading screen, so keep an eye out for that!
Devlog #10: Chill Record Player Made a much more simplified loading screen and recorded some sound effects. Truthfully, I haven’t had that much time to work on the website. AND, I wasn’t able to export my original idea for a loading screen without a watermark. I’m gonna try and make something better than this…
Devlog #11: Chill Record Player Spent all day adding a new table, and then using TypeScript to change the texture on it. I’m a bit worried about how I’m dividing the texturing between Blender and ts, as I have no rhyme or reason right now between which textures I delegate to which platform. Usually, the procedurally-generated textures are loaded in ts though. I also smoothed the grain on the bookshelf. The rug looks bad so I’ll work on that next, and then prepare the website for a MacOS app and implement more of the features I talked about in Devlog #9!!
CONCEPT: Loading Screen Hey all! This isn’t gonna be a normal devlog, but rather a quick update on something I’ll be hoping to add to the app. I’ve been tossing around a couple loading screen ideas but I think I have a really cool one. I want to mimic the Yandhi opening where an exploded view of a CD comes together and begins to spin. I think I can recreate that with my record player (or maybe just one vinyl, although that would be boring-ish?) Since this animation is a little long, I’ll probably only have it play when the user hasn’t logged on in awhile or something.
Devlog #12: Chill Record Player I think the video I attatched was too large so I’m now rewriting this devlog ;-; Anyways, I’ve spent the last week implementing the Yandhi intro as I mentioned last devlog/product idea. I spent a ton of time modelling/keyframing it in Blender, then integrating it with the website to infinitely loop, then dissasemble the vinyl when a user enters the website. What took the longest was definitely the smooth yet neat transition where the inside of the record turns into the room, so please check it out!! PS caustics take foreverrrr to render…
Ships:
Hey everyone, I made a 3D vinyl player online to play classical music. Please try it!!! It’s fully hosted on my personal website at https://milesaguilar.com/music One of the most challenging aspects of this project was making everything feel as tactile as possible. To do this, I needed to balance realism with how annoying things would be to use. To this end, I spent a lot of time thinking about which controls were most intuitive. In the future, I plan to let people upload their own vinyls and have more furniture in the room. This is mostly just a proof of concept to see if people find this interesting
I made a website for playing vinyls! I think an important aspect of enjoying music is being able to experience it physically, through interacting personally with the forms it comes in. Now obviously, this record player is online, so I did my best to bring that physical experience into a virtual website. Hopefully everything is self-explanatory on the site, and I incorperated a lot of feedback from the first round!! In the future, I plan to make this a standalone app, giving people the ability to upload their own music. Also, I’ll try to fix performance issues as I understand this website can be a bit resource-itensive....
|
1793688834.1423194
|
1793775234.1423194
|
|
16474
|
My very own WebOS by @skulltrap79 | Stardance
|
skulltrap79
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @skulltrap79 | Stardan Title: My very own WebOS by @skulltrap79 | Stardance...
|
1793231802.998153
|
1793836602.998153
|
|
16475
|
Ai Based Healthcare Platform by @Ritesh_Dev | Star Ai Based Healthcare Platform by @Ritesh_Dev | Stardance...
|
Ritesh_Dev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ai Based Healthcare Platform by @Ritesh_Dev Title: Ai Based Healthcare Platform by @Ritesh_Dev | Stardance...
|
1793537841.7939599
|
1794142641.7939599
|
|
16476
|
Hassy by @Shades | Stardance
|
Shades
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Hassy by @Shades | Stardance
|
1793537580.6281278
|
1794142380.6281278
|
|
16477
|
My awesome macropad! by @Fourat | Stardance
|
Fourat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Fourat | Stardance
|
1793480179.6240745
|
1794084979.6240745
|
|
16478
|
My very own WebOS by @Lee | Stardance
|
Lee
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Lee | Stardance
|
1792921819.339477
|
1793785819.339477
|
|
16479
|
Sending you a letter by @BayerischKind | Stardance
|
BayerischKind
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-20T08:23:36Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Hand detection was a fun thing to learn, and i would love to create more fun projects using mediapipe.", "repo": "https://github.com/jashbrook123/ascii-webcam", "demo": "https://github.com/jashbrook123/finished-ascii-cam"}]...
|
[{"post_id": 12414, "ts": "202 [{"post_id": 12414, "ts": "2026-06-20T08:09:29Z", "hours": 0.6797, "text": "Finished some edge cases for crashes and made slightly more efficient. Will now also output as ascii webcam (using OBS cam) so can be used on zoom meetings and such."}, {"post_id": 7123, "ts": "2026-06-11T22:05:33Z", "hours": 1.0197, "text": "Hand detection, rotate to turn up/down resolution and then close a fist to swap rendering."}]...
|
Title: Sending you a letter by @BayerischKind | St Title: Sending you a letter by @BayerischKind | Stardance
Devlogs:
Hand detection, rotate to turn up/down resolution and then close a fist to swap rendering.
Finished some edge cases for crashes and made slightly more efficient. Will now also output as ascii webcam (using OBS cam) so can be used on zoom meetings and such.
Ships:
Hand detection was a fun thing to learn, and i would love to create more fun projects using mediapipe....
|
1793720914.5114956
|
1793807314.5114956
|
|
16480
|
My very own WebOS by @Mohammed_Ayman_Sheraaz | Sta My very own WebOS by @Mohammed_Ayman_Sheraaz | Stardance...
|
Mohammed_Ayman_Sheraaz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Mohammed_Ayman_Sheraa Title: My very own WebOS by @Mohammed_Ayman_Sheraaz | Stardance...
|
1793386166.0642107
|
1793990966.0642107
|
|
16481
|
gta by @moayed_jouini | Stardance
|
moayed_jouini
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T14:10:37Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "my mini 3D parkour game by godot", "repo": "https://github.com/moayedjouini6-prog/my-parkour-game-by-godot", "demo": "https://moayed-dev.itch.io/moayed-crostina"}]...
|
[{"post_id": 16043, "ts": "202 [{"post_id": 16043, "ts": "2026-06-26T02:10:30Z", "hours": 4.8225, "text": "my shooter game"}]...
|
Title: gta by @moayed_jouini | Stardance
Devlogs: Title: gta by @moayed_jouini | Stardance
Devlogs:
my shooter game
Ships:
my mini 3D parkour game by godot...
|
1793714328.6037269
|
1793800728.6037269
|
|
16482
|
Frictionless by @ziton | Stardance
|
ziton
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @ziton | Stardance
|
1793393560.4503155
|
1793998360.4503155
|
|
16483
|
My awesome macropad! by @oska3435 | Stardance
|
oska3435
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @oska3435 | Stardan Title: My awesome macropad! by @oska3435 | Stardance...
|
1793303315.4208624
|
1793908115.4208624
|
|
16484
|
My very own WebOS by @Nincik | Stardance
|
Nincik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Nincik | Stardance
|
1793159546.5077748
|
1793764346.5077748
|
|
16485
|
Art by @FishyDrawer | Stardance
|
FishyDrawer
|
0
|
1.95
|
0
|
[]
|
[{"post_id": 7463, "ts": "2026 [{"post_id": 7463, "ts": "2026-06-12T13:18:32Z", "hours": 1.9483, "text": "Learning new art styles For this drawing I tried out bluebiscuits style. @bloo on Insta am pretty sure. I had fun drawing this, ill defo incorporate some of what I learned into my personal style"}]...
|
Title: Art by @FishyDrawer | Stardance
Devlogs:
L Title: Art by @FishyDrawer | Stardance
Devlogs:
Learning new art styles For this drawing I tried out bluebiscuits style. @bloo on Insta am pretty sure. I had fun drawing this, ill defo incorporate some of what I learned into my personal style...
|
1793444045.938663
|
1794048845.938663
|
|
16486
|
My very own WebOS by @Saksham_Kumar_Rawat | Starda My very own WebOS by @Saksham_Kumar_Rawat | Stardance...
|
Saksham_Kumar_Rawat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Saksham_Kumar_Rawat | Title: My very own WebOS by @Saksham_Kumar_Rawat | Stardance...
|
1793523361.6392074
|
1794128161.6392074
|
|
16487
|
My awesome macropad! by @TheWindArcanum | Stardanc My awesome macropad! by @TheWindArcanum | Stardance...
|
TheWindArcanum
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @TheWindArcanum | S Title: My awesome macropad! by @TheWindArcanum | Stardance...
|
1793282242.507114
|
1793887042.507114
|
|
16488
|
Debug Nexus by @Younes | Stardance
|
Younes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Debug Nexus by @Younes | Stardance
|
1793170337.982322
|
1793775137.982322
|
|
16489
|
Pico WH Regular and Mecanum Wheeled Robot by @tiar Pico WH Regular and Mecanum Wheeled Robot by @tiara_kothari | Stardance...
|
tiara_kothari
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pico WH Regular and Mecanum Wheeled Robot b Title: Pico WH Regular and Mecanum Wheeled Robot by @tiara_kothari | Stardance...
|
1793292690.3524814
|
1793897490.3524814
|
|
16490
|
The Productivity Macro Pad by @Rea | Stardance
|
Rea
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: The Productivity Macro Pad by @Rea | Starda Title: The Productivity Macro Pad by @Rea | Stardance...
|
1793253038.6617322
|
1793857838.6617322
|
|
16491
|
My very own WebOS by @afrxcan | Stardance
|
afrxcan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @afrxcan | Stardance
|
1793361063.892842
|
1793965863.892842
|
|
16492
|
My awesome macropad! by @Noro | Stardance
|
Noro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Noro | Stardance
|
1793793261.4645195
|
1794657261.4645195
|
|
16493
|
My awesome macropad! by @Noro | Stardance
|
Noro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Noro | Stardance
|
1792947243.0695214
|
1793811243.0695214
|
|
16494
|
My awesome macropad! by @Noro | Stardance
|
Noro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Noro | Stardance
|
1792947072.9755614
|
1793811072.9755614
|
|
16495
|
My awesome macropad! by @Noro | Stardance
|
Noro
|
0
|
2.74
|
0
|
[]
|
[{"post_id": 7445, "ts": "2026 [{"post_id": 7445, "ts": "2026-06-12T12:19:02Z", "hours": 1.1408, "text": "And were off making the CAD models for the case and plate. Overall not that difficult. I made the shape of the plate and case, inspiered by the cookie cat from Steven Universe and to stay on theme to the title of the macropad. Added an area for my own lipo and a tp4056 for chargin the lipo and the meowpad and now have do some slight polishing here and there and thats it (+ the work on github but besides that) Anyway, heres the final cad model(i hope):"}, {"post_id": 6899, "ts": "2026-06-11T15:48:14Z", "hours": 1.6, "text": "Heyoo, today I started work on a hackpad (a Meowpad™)following the guide for a hackpad. I started by drawing out the schematic and the rough pcb design which took lot more than expected but, overall was quite fun. The final hackpad, would have 3x3 grid matrix of diode+switches for optimal layout and 2 rotary encoders with 9 SK6812 mini-e RGB-LEDs one on each switch and cant forget the XIAO MCU too. Next up would be to polish the deisgn add some cool silkscreen while im at it and finish the debug the layout!"}]...
|
Title: My awesome macropad! by @Noro | Stardance
Title: My awesome macropad! by @Noro | Stardance
Devlogs:
Heyoo, today I started work on a hackpad (a Meowpad™)following the guide for a hackpad. I started by drawing out the schematic and the rough pcb design which took lot more than expected but, overall was quite fun. The final hackpad, would have 3x3 grid matrix of diode+switches for optimal layout and 2 rotary encoders with 9 SK6812 mini-e RGB-LEDs one on each switch and cant forget the XIAO MCU too. Next up would be to polish the deisgn add some cool silkscreen while im at it and finish the debug the layout!
And were off making the CAD models for the case and plate. Overall not that difficult. I made the shape of the plate and case, inspiered by the cookie cat from Steven Universe and to stay on theme to the title of the macropad. Added an area for my own lipo and a tp4056 for chargin the lipo and the meowpad and now have do some slight polishing here and there and thats it (+ the work on github but besides that) Anyway, heres the final cad model(i hope):...
|
1793433094.4446166
|
1794037894.4446166
|
|
16496
|
StarPad by @Aahil78 | Stardance
|
Aahil78
|
0
|
8.64
|
0
|
[]
|
[{"post_id": 84155, "ts": "202 [{"post_id": 84155, "ts": "2026-10-29T06:08:26Z", "hours": 0.8653, "text": "Okay so good news and bad news. Good news is that I’m finally back in Hack Club!!!!!!!!!!! Bad news is my PC broke and I lost the whole fucking project :(((((((( So im starting from scratch, im using the journal images for reference so its much much faster. Rn im like 90ish percent done with the schematic just gotta arrange and final check the schematic. Bye! Oh also here’s the lapse link! Lapse"}, {"post_id": 16455, "ts": "2026-06-26T19:42:28Z", "hours": 2.0617, "text": "I wrote all the QMK Firmware, having some compiling issues but I’ll try to fix that later when I get the hardware as itll be easier for me to debug and troubleshoot. Worst case I’ll switch to KMK or RMK as I have written in KMK before"}, {"post_id": 10998, "ts": "2026-06-18T00:50:40Z", "hours": 0.9686, "text": "Hi, I made the Plate of the Case and did some finishing touches. Now I’ll do the QMK so for that I’ll do everything in Github Codespaces bcz my laptop only has 100mb free on C Drive and no other storage. So rn I’ll make a git repo and upload all production and src files in one commit then start doing the QMK. Lapse Link: Lapse"}, {"post_id": 10487, "ts": "2026-06-17T07:20:47Z", "hours": 0.9119, "text": "I finished off the base of the case rn, I’ll do the top plate then start the QMK. I may not be writing much rn bcz my mood is rlly messed up (apparently 2hrs is too much to learn HTML and make ur first ever website - according to macondo, if you spend too long learning smthn it means u are foing fraud and they ban ur project that u made with ur whole heart) Lapse Link: https://lapse.hackclub.com/timelapse/3z5x-61gHgDi"}, {"post_id": 9768, "ts": "2026-06-16T06:29:37Z", "hours": 0.9028, "text": "Hi! Right now I finished the rest of the PCB, I: Rounded off the corners (3mm fillet) Finished all routing and changed some traces to make everything work (I used ALOT of vias hope that isn’t an issue!) Ran DRC - 3 times - to make sure nothing goes wrong Repositioned the LED Pad for easier soldering And I think that’s pretty much it! Oh yeah I crashed out a lot cz some traces were in the area of the LED which is the hole area (I can NOT speak rn) but u get the point like the hole that is cut out for the LED, over there, there were traces so i had to move them, then, some tracks were inside other tracks of totally different nets like I crashed out sm cz of this. Anyways, im done with my PCB i’ll just double check diode orientation (I can fix it later by soldering diodes other way around but i wanna make this easier for me) and then I’ll start working on the CAD. I hope I can use OnShape Hackatime instead of lapse cz i am tired of using lapse. Anyways, cyaaa!!!! Lapse Link: https://lapse.hackclub.com/timelapse/jHSqlRHYnwNE"}, {"post_id": 8537, "ts": "2026-06-14T06:11:59Z", "hours": 1.6903, "text": "Hi, back with another devlog, right now I added all the components to my PCB, routed alot, arranged everything, searched for footprints, and I did manual precise placement of LEDs. Right now theres still some routing left, gotta round the corners, add art, and make the entire thing just better in general. Then we can move on to the software. Lapse Link: https://lapse.hackclub.com/timelapse/04KqJEMffp7a"}, {"post_id": 7500, "ts": "2026-06-12T14:41:28Z", "hours": 0.6936, "text": "Hi! I added the RGB, double checked everything, and organized the schematic and made it prettier! I was also tryna add the stardance logo in the bottom left corner but it just wasnt working so I added the orpheus skating on a pcb image. For the RGB, I added a 330ohm resistor on the data line for Anti Ringing and to limit the data current so it dosent bounce around and cause data corruption or whatever, and I added a connector in the schematic at the RGB Pin, that will be an SMD Pad on the PCB so i solder a wire from the SMD Pad to the Xiao RGB Pin. Now I just gotta make the PCB then the case. Lapse Link: https://lapse.hackclub.com/timelapse/yA3oJffGrZsA"}, {"post_id": 7017, "ts": "2026-06-11T19:30:32Z", "hours": 0.5431, "text": "So I decided what components to use, I decided the following: 1x EC11 w/Switch 3x4 MX Layout 1x 0.91” i2c OLED Seeed Studio XIAO RP2040 12x SK6812 RGB LEDs Since there are only 11 GPIO Pins broken out, I’m going to solder the NeoPixel LED DIN Pin to the on-board RGB LED DIN Pin or via, this will allow me to also have RGB without having to compromise on my components selection. I could’ve tried using an I/O Expander IC like the MCP23017 or similar but that would’ve added cost and complexity, and since this will be the first time I make a macropad/keeb that will (or should) actually work, I wanna keep the hardware and firmware as easy as possible to reduce the chances of me fucking it up. After deciding everything, I created a KiCad proj, downloaded the libs and added them to KiCad, opened lapse, and locked in and designed the schematic. Some pauses where my mouse was moving but nothing going on in KiCad was me searching up on google to fact-check my decisions, like how to wire the matrix and stuff. Sometimes I was going to the Hackpad docs (like for the OLED part), and sometimes it was when I was adding footprints or net labels, so sorry for those pauses lol. Now all I have to do is add the RGB, double check everything, assign footprints, etc. Then I can move on to the PCB and CAD. Lapse Link: https://lapse.hackclub.com/timelapse/DoOaE3jAJ1TA"}]...
|
Title: StarPad by @Aahil78 | Stardance
Devlogs:
S Title: StarPad by @Aahil78 | Stardance
Devlogs:
So I decided what components to use, I decided the following: 1x EC11 w/Switch 3x4 MX Layout 1x 0.91” i2c OLED Seeed Studio XIAO RP2040 12x SK6812 RGB LEDs Since there are only 11 GPIO Pins broken out, I’m going to solder the NeoPixel LED DIN Pin to the on-board RGB LED DIN Pin or via, this will allow me to also have RGB without having to compromise on my components selection. I could’ve tried using an I/O Expander IC like the MCP23017 or similar but that would’ve added cost and complexity, and since this will be the first time I make a macropad/keeb that will (or should) actually work, I wanna keep the hardware and firmware as easy as possible to reduce the chances of me fucking it up. After deciding everything, I created a KiCad proj, downloaded the libs and added them to KiCad, opened lapse, and locked in and designed the schematic. Some pauses where my mouse was moving but nothing going on in KiCad was me searching up on google to fact-check my decisions, like how to wire the matrix and stuff. Sometimes I was going to the Hackpad docs (like for the OLED part), and sometimes it was when I was adding footprints or net labels, so sorry for those pauses lol. Now all I have to do is add the RGB, double check everything, assign footprints, etc. Then I can move on to the PCB and CAD. Lapse Link: https://lapse.hackclub.com/timelapse/DoOaE3jAJ1TA
Hi! I added the RGB, double checked everything, and organized the schematic and made it prettier! I was also tryna add the stardance logo in the bottom left corner but it just wasnt working so I added the orpheus skating on a pcb image. For the RGB, I added a 330ohm resistor on the data line for Anti Ringing and to limit the data current so it dosent bounce around and cause data corruption or whatever, and I added a connector in the schematic at the RGB Pin, that will be an SMD Pad on the PCB so i solder a wire from the SMD Pad to the Xiao RGB Pin. Now I just gotta make the PCB then the case. Lapse Link: https://lapse.hackclub.com/timelapse/yA3oJffGrZsA
Hi, back with another devlog, right now I added all the components to my PCB, routed alot, arranged everything, searched for footprints, and I did manual precise placement of LEDs. Right now theres still some routing left, gotta round the corners, add art, and make the entire thing just better in general. Then we can move on to the software. Lapse Link: https://lapse.hackclub.com/timelapse/04KqJEMffp7a
Hi! Right now I finished the rest of the PCB, I: Rounded off the corners (3mm fillet) Finished all routing and changed some traces to make everything work (I used ALOT of vias hope that isn’t an issue!) Ran DRC - 3 times - to make sure nothing goes wrong Repositioned the LED Pad for easier soldering And I think that’s pretty much it! Oh yeah I crashed out a lot cz some traces were in the area of the LED which is the hole area (I can NOT speak rn) but u get the point like the hole that is cut out for the LED, over there, there were traces so i had to move them, then, some tracks were inside other tracks of totally different nets like I crashed out sm cz of this. Anyways, im done with my PCB i’ll just double check diode orientation (I can fix it later by soldering diodes other way around but i wanna make this easier for me) and then I’ll start working on the CAD. I hope I can use OnShape Hackatime instead of lapse cz i am tired of using lapse. Anyways, cyaaa!!!! Lapse Link: https://lapse.hackclub.com/timelapse/jHSqlRHYnwNE
I finished off the base of the case rn, I’ll do the top plate then start the QMK. I may not be writing much rn bcz my mood is rlly messed up (apparently 2hrs is too much to learn HTML and make ur first ever website - according to macondo, if you spend too long learning smthn it means u are foing fraud and they ban ur project that u made with ur whole heart) Lapse Link: https://lapse.hackclub.com/timelapse/3z5x-61gHgDi
Hi, I made the Plate of the Case and did some finishing touches. Now I’ll do the QMK so for that I’ll do everything in Github Codespaces bcz my laptop only has 100mb free on C Drive and no other storage. So rn I’ll make a git repo and upload all production and src files in one commit then start doing the QMK. Lapse Link: Lapse
I wrote all the QMK Firmware, having some compiling issues but I’ll try to fix that later when I get the hardware as itll be easier for me to debug and troubleshoot. Worst case I’ll switch to KMK or RMK as I have written in KMK before
Okay so good news and bad news. Good news is that I’m finally back in Hack Club!!!!!!!!!!! Bad news is my PC broke and I lost the whole fucking project :(((((((( So im starting from scratch, im using the journal images for reference so its much much faster. Rn im like 90ish percent done with the schematic just gotta arrange and final check the schematic. Bye! Oh also here’s the lapse link! Lapse...
|
1793306919.8507342
|
1793911719.8507342
|
|
16497
|
HYDRA by @JoonHyuk | Stardance
|
JoonHyuk
|
0
|
1.37
|
0
|
[]
|
[{"post_id": 8104, "ts": "2026 [{"post_id": 8104, "ts": "2026-06-13T15:01:43Z", "hours": 0.2733, "text": "FINISHED ALL WIRING!"}, {"post_id": 7263, "ts": "2026-06-12T03:36:02Z", "hours": 1.0928, "text": "FINSIHED DAY 1"}]...
|
Title: HYDRA by @JoonHyuk | Stardance
Devlogs:
FI Title: HYDRA by @JoonHyuk | Stardance
Devlogs:
FINSIHED DAY 1
FINISHED ALL WIRING!...
|
1793505374.6431932
|
1794110174.6431932
|
|
16498
|
Calculator by @HanzalaIjaz | Stardance
|
HanzalaIjaz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Calculator by @HanzalaIjaz | Stardance
|
1793566118.869729
|
1794170918.869729
|
|
16499
|
My very own WebOS by @always_424 | Stardance
|
always_424
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @always_424 | Stardanc Title: My very own WebOS by @always_424 | Stardance...
|
1793231724.0749753
|
1793836524.0749753
|
|
16500
|
MinimalisticPortfolio by @Timhongphuc | Stardance
|
Timhongphuc
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MinimalisticPortfolio by @Timhongphuc | Sta Title: MinimalisticPortfolio by @Timhongphuc | Stardance...
|
1793328942.637904
|
1793933742.637904
|