|
59889
|
Minimalstic-phone-stand-multiuse-mat-for-two. by @ Minimalstic-phone-stand-multiuse-mat-for-two. by @aditis | Stardance...
|
aditis
|
0
|
0.93
|
0
|
[]
|
[{"post_id": 65075, "ts": "202 [{"post_id": 65075, "ts": "2026-09-09T22:50:00Z", "hours": 0.3667, "text": "(Sorry still not my final actually) I got the idea to fill in the zig zags for better grip, and made the speakers smaller so this whole thing is fully more compact. Let me know what you think in the comments!"}, {"post_id": 64468, "ts": "2026-09-08T21:46:23Z", "hours": 0.2836, "text": "NOW I IMPLEMENTED SPEAKERS! So, my last final design was not final because I came up with another idea right when I submitted so my idea is we can have Bluetooth speakers on it too!"}, {"post_id": 64445, "ts": "2026-09-08T20:38:40Z", "hours": 0.2833, "text": "Just finished the final design on cad!"}]...
|
Title: Minimalstic-phone-stand-multiuse-mat-for-tw Title: Minimalstic-phone-stand-multiuse-mat-for-two. by @aditis | Stardance
Devlogs:
Just finished the final design on cad!
NOW I IMPLEMENTED SPEAKERS! So, my last final design was not final because I came up with another idea right when I submitted so my idea is we can have Bluetooth speakers on it too!
(Sorry still not my final actually) I got the idea to fill in the zig zags for better grip, and made the speakers smaller so this whole thing is fully more compact. Let me know what you think in the comments!...
|
1793638419.6363707
|
1794243219.6363707
|
|
59993
|
macropad by @brickyonyt | Stardance
|
brickyonyt
|
0
|
0.28
|
0
|
[]
|
[{"post_id": 65070, "ts": "202 [{"post_id": 65070, "ts": "2026-09-09T22:39:08Z", "hours": 0.2844, "text": "Worked on macropad"}]...
|
Title: macropad by @brickyonyt | Stardance
Devlog Title: macropad by @brickyonyt | Stardance
Devlogs:
Worked on macropad...
|
1793638507.0329309
|
1794243307.0329309
|
|
29476
|
O.T.I.S by @Sharkle | Stardance
|
Sharkle
|
0
|
55.42
|
0
|
[]
|
[{"post_id": 65062, "ts": "202 [{"post_id": 65062, "ts": "2026-09-09T22:16:42Z", "hours": 9.0675, "text": "DEVLOG #13 What I did For this devlog, I started working on the web app for Otis. I want it to have controls that allow you to manually control him, as well as a button/textbox for AI questions. I was able to make a simple one with Tkinter, but decided to scrap that idea and go with a web server made with CSS and HTML. I then paused that and began working on the microphone feature, since I felt like that was much more important compared to the web server. Challenges Creating the app I initially wanted to create the app with Tkinter, as I had seen others use it and it did not seem too hard. So I began programming it with that. I made a simple window with 7buttons (4 for movement and 3 for AI use). But after realizing that I would not be able to control the ESP with Tkinter, I had to look elsewhere. This is when I realized I could make an ESP32 web server and upload the HTML code to it. This would allow me to create a local web server with a GUI that I could interact with. Working with the microphone After working on the web server, I decided that getting the microphone was a bigger priority for me, so I pivoted and began working on that. I looked at the Seeed Studio docs for microphone use and was able to create some code that would detect and package audio samples. I plan to use this with the Python script to transcribe it locally. The problem is that it is not working, and I have not yet found a solution. This all feels really sketchy, and I don’t expect it to work immediately, so wish me luck. What is next I don’t have a lot of time left, and I have yet to actually put any of the hardware together. I will likely try to 3d print the parts and begin putting stuff together by the end of next week. I will also continue working on the microphone."}, {"post_id": 56256, "ts": "2026-08-27T22:56:10Z", "hours": 8.7339, "text": "DEVLOG #12 What I did I know this is a lot of time for a single devlog, so I will try to post them more often moving forward. First, I worked on allowing the AI to control the movement of the treads. My first Idea was to create a JSON schema with all 4 directions that the AI could enter values into. The values would dictate the time (in milliseconds) for which the action should be executed. Initially, I decided the 4 directions should be forward, backward, left, and right. But I knew that this would not work, since the tank treads can really only move forward and backward, as well as turn. So I then decided to replace the directions with “Right tread forward”, “Left tread forward”, “Right tread backward”, and “Left tread backward”. I decided on this because I felt that it would allow the AI to reason through my commands, which would allow for much more abstract movement. But the model was not smart enough to map out its movements, and I didn’t really have any other ideas for movement except for forward, backward, and spinning. But that gave me the idea to just use those elements in the JSON scheme. So I set the directions to “forward”, “backward”, “spin left”, and “spin right”. This way, the AI would be able to move exactly how I wanted it to move, without overcomplicating the whole thing, giving me more accurate results. After this, I began working on the APP for OTIS’s controller. I have not decided on a layout, but I do know I want buttons for the 4 directions, a chat box, and a button to send voice commands and photos. Challenges 422 Unprocessable Content So while trying to find a way to get the AI to respond as JSON, I remembered Ollama allows you to send format requests as part of the API POST request to the AI. So after reading the docs, I was able to whip up a simple JSON format using Pydantic and BaseModel with the 4 directions. But when I tried to send the request, I kept getting the 422 error response code. So then I tried a bunch of different stuff, like removing the requirements and removing the nested JSON with the format data. But none of that worked. That’s when I did some research on the docs, and I found that it was the Pydantic JSON class that was causing all the problems. You see, Pydantic is used to check whether incoming data is formatted properly. So when I used it to create a JSON schema, it would constantly look for that data from the Arduino, which it wouldn’t find. This caused the 422 error. So I removed the class and created a JSON schema as a regular variable, and this solved the issue What is next The next thing on my agenda is going to be to create the OTIS app that will allow me to manually control OTIS like a mini rover. I am currently using Tkinter to create the GUI, and will likely use an ESP web server to allow the GUI to interact with the Arduino. Thank you."}, {"post_id": 52405, "ts": "2026-08-22T15:11:12Z", "hours": 5.0672, "text": "DEVLOG #10 What I did In this devlog, I really just updated some of the things I had already implemented. First, I remodeled the wheels from gears to regular smooth wheels. This is because I had the idea of using those silicone wristbands as the tank treads instead of timing belts. This would not only be more accessible, but it would also make OTIS much more customizable and, in my opinion, look much better. This is because the silicone bands are thicker than the timing belts, which means the tank treads are larger. I also installed another AI model, qwen3-VL:4b, because I believed it would have better image analysis. I tested out all the models to find the best one, and I think I will use qwen3-vl:4b for this project, as it was able to recognize pictures and follow instructions more accurately than Llava. Lastly, while testing the models, I realized the prompting was a bit tedious when using the camera, since I would have to take a photo each time I prompted the AI. So I revised the code so that it would ask if you wanted to take a photo. If you say “photo”, it will ask you to position the camera and send the prompt. If you don’t want to take a photo, you just put the prompt in the first question, and it will default to no-photo mode for that prompt. Challenges Modeling the wheels This wasn’t really one large problem, more so multiple smaller ones. You see, I had already completed the 3d model with the gears instead of the wheel. This meant that changing the wheels would alter the whole model. For this reason, I was contemplating whether this would be the right choice, as I would also have to fix the animation. But I decided to do it anyway. The main problem was that the wheels have a much larger diameter than the gears. So if I were to just replace them, it would look extremely disproportionate. So, I had to remodel the servo slot and the front axles by placing them closer together and moving them up. Once I completed this, I had to redo the whole animation because the old one did not fit the new wheels well. But after all this, I was able to reupload the new files to the GitHub repo and begin fixing the code. What is next The next thing I am going to do is test out the tool. I wrote up a simple tool in Python that would allow the AI to send data that controls the servos, but I have not tested it yet, which is what I will be doing next. I will also likely wire up the servos and continue testing other models to try to find a good setup. Thank you."}, {"post_id": 49979, "ts": "2026-08-19T00:14:54Z", "hours": 6.5842, "text": "DEVLOG #10 What I did So for this devlog, I mainly spent all of my time working on the camera. I looked up an example script from the Seeed Studio docs to learn about the main system. I then spent quite some time working on a way to convert the picture into a format that I could place into the JSON. I also shifted the old code a bit to better fit the way I wanted to use the camera. In the end, I was able to get the camera working and send a photo to the AI to reference in its response. Challenges Getting the conversion of the photo So I went into this knowing literally nothing about how cameras like this one worked. So I started with the docs and was able to write the code that took the photos. Although this was a bit tedious, the main challenge came when I tried to convert the photos to a format that was compatible with the AI. You see, when you take the photo, it is saved as a frame buffer JPEG. But I needed to convert it to Base64, since that is what Ollama uses when integrating images in the POST request. So I did some digging and came across mbedtls_base64_encode() from the mbedtls/base64.h library. This was really annoying to work with because there are a lot of required parameters, and I didn’t know what any of them meant, let alone how to use my code with them. After an hour of searching, I asked Gemini what each of the parameters meant and what to include in them, and I was able to get the code completed. But when I tried to run it, my ESP kept rebooting. After some more research, I learned that the cause was insufficient memory to store the Base64 string. I was able to fix this by adding if statements as well as memset() to manage the memory space better. After this, I added some code so that it would work regardless of whether the camera was connected. What is next The thing I am going to work on next is to create a way for the AI to use the servos. I already started working on a tool to handle that, but I have not tested it yet. I am also thinking about remodeling the wheels because I noticed that rubber wrist bands might be a better alternative to the timing belts. Thanks."}, {"post_id": 48409, "ts": "2026-08-16T18:57:43Z", "hours": 1.9836, "text": "DEVLOG #9 What I did For this block, I fixed minor details to make the prompting more seamless. First, I fixed the deserialization so that only the response would be printed. I also used Serial.readString() so the user can send multiple prompts without having to reupload the code with a new prompt Challenges Getting the Deserialization and print to work So this was a really annoying problem that I should not have had this much trouble with. When you receive the response from the AI, it comes back as JSON, with the response as well as other information like the date created, context, etc. I only wanted to print the response, so I tried using deserializeJson() from the ArduinoJson.h library. But for some reason, I kept getting null when trying to print the response element. I tried messing around with the data types, switching between string and const char*, but those didn’t work. I also tried basing my code off of an example from the ArduinoJson website, but it still would not work. Then I created an if statement that checked if there was an element in the JSON labeled response. This returned false, which meant that the data was not deserializing properly. At that point, I felt pretty lost. But then I thought of deserializing the JSON in the Python script and then sending just the response. So I looked into how to deserialize JSON strings through Python, and I came across json.loads() from the json library. There are two main versions of this method: json.loads() and json.load() . .load deserializes a file, while .loads deserializes a string. Because the response from the AI came back as a string, I was able to use the latter to separate the response from the rest of the data, which I was then able to send back and print successfully. What is next Now that I pretty much have the prompting working, my next course of action is likely going to be to figure out how to use the camera and send the feed to the AI. This will definitely be challenging, as I have no idea how I want this part of the project to work. Thank you."}, {"post_id": 46627, "ts": "2026-08-14T00:44:41Z", "hours": 7.3786, "text": "DEVLOG #8 ##What I did These 7 hours, I basically spent trying to get the HTTP POST request to work. I had a lot of trouble when trying to get it to work, but I was able to find a way to get the prompt to the AI and the response back to the ESP. ##Challenges ####Getting the POST to work Initially, I had decided to scrap the MCP idea and to just send an HTTP request directly to Ollama. This plan should have worked, but I could not get it to function. For some reason, I kept receiving a response code of -1 when I tried to send the request. This code means the connection was refused, and this could happen for a multitude of reasons. After some simple troubleshooting, I deduced that the problem was likely related to my firewall. You see, Ollama runs on port 11434, which is protected by the firewall. It also only listens to 127.0.0.1, which meant that I could not send data from the ESP32. To fix the IP problem, I tried setting an environment variable to allow it to listen on 0.0.0.0, but this didn’t work. Then I tried exposing port 11434 on my firewall to the IP of my ESP32, but that was also unsuccessful. I even tried connecting the ESP and my computer to my phone’s hotspot, but that also yielded -1. After consulting Google’s Gemini for any other solutions, I decided that I should just create a Python file that would handle all the requests. So I created a file, installed FastAPI with Uvicorn, and used those libraries along with requests to send an API request to Ollama’s REST API, which I could then return to the ESP. The ESP sent the prompt to the Python script via HTTPClient and ArduinoJSON. After creating all of this, I was finally able to get a response from the AI in serialized JSON, and I am currently trying to figure out why I can’t deserialize it and print it. ##What is next As I mentioned above, I will continue trying to find a way to print only the response and to send prompts seamlessly. This part of the project was definitely very frustrating, but I am so happy I was able to make it possible. Thanks."}, {"post_id": 43026, "ts": "2026-08-08T02:24:08Z", "hours": 2.2417, "text": "DEVLOG #7 What I did So this whole time, I basically spent trying to get the web server of the ESP32 to work, which I had a hard time understanding. I also tried using the Python script to send data to the web server, but that doesn’t seem to work either. So I began setting up the AI model with Open Web UI and Docker. I decided that I will probably scrap the whole MCP plan since i’m pretty sure I can just send and receive data as HTTP requests directly between Open Web UI and the ESP32 as JSON. Challenges Getting the data to send The main problem I have with all of this is that I don’t know what I’m doing a lot of the time. Even though I have worked with Arduino, I have never worked with an ESP32, and I don’t know how I can utilize the wifi to send and receive data. I tried understanding an example script for a basic web server that is built into the IDE, but I couldn’t wrap my head around the part where you create the server. I was able to get the ESP32 to connect to my WiFi, though, which I guess is progress. I also tried sending a POST request from the Python script, but I don’t think that is going to work since I have no idea how to get the ESP32 to receive the data. It’s even harder to find answers to these problems since I don’t even know what to look for. I decided that I should scrap the MCP plan, since I could just read JSON data that the ESP32 can receive through a GET request. In conclusion, I just ran in circles trying different things that all yielded the same results. Getting the AI to work For some reason, the model that I decided to use can only complete tasks, which are defined by a set of tools. I am able to use it in the CLI just fine, but this problem occurs when I use the model in Open Web UI. I’m using Qwen3-vl:8b because it can supposedly analyze images, though I will likely try another model if this persists. What is next The next thing is likely going to be to try other AI models to see if I can get one to work. I will also do more research on an alternative to creating a web server. This project has been very tedious, so wish me luck."}, {"post_id": 42189, "ts": "2026-08-06T20:03:58Z", "hours": 2.2336, "text": "DEVLOG #6 What I did So today, I decided that I should finish up my design before I apply to get funded. But there were a few things that I had yet to do. First, I created the top panel for OTIS. I don’t exactly know why I put it off until now, but I made a simple design that will just sit on top and be held in place by little stoppers. I also did a bit of research beforehand on what battery i should purchase, but a lot of them are too big. So I also increased the size of OTIS from 77mmx77mmx77mm to 80x80x78.5 (78.5 because the lid is 1.5 mm thick). Lastly, I went and updated the assembly video and drawing, and uploaded all the changed parts to the GitHub repo. Challenges Resizing the robot When I initially changed the size of the robot, I thought everything was ok. I used joints to attach everything, so all the parts just kinda “shifted” into the right spot. But the challenges came when I had to edit the parts of the robot that were now disproportionate. One example of this was the LCD. The screen is supposed to sit right in the middle of the robot, but it was not in the middle of the LCD board, which means all the dimensions got messed up when I resized the enclosure. To make matters worse, the project tool that I used to make the holes kept bugging out and offsetting the projection to where it was BEFORE I shifted the design. Eventually I got it to work by creating separate sketches from the projections, which is a setting on the pop-up. This way, the projections would stay exactly where I needed them instead of trying to auto-correct to some past position. I also fixed some other parts; the spacer near the servo also got messed up, but I was able to fix those problems much more easily. What Is Next The microcontroller and wires will arrive today, so I will begin working with them and the AI to figure out how to synchronize them all. I also applied for funding, so I will wait and see where that goes. Thank you."}, {"post_id": 41034, "ts": "2026-08-04T23:19:31Z", "hours": 1.7672, "text": "DEVLOG 5 What I did I began by updating the 3d model by updating the position of the screws. I did not like the visibility of the screws in the earlier design, which is why I decided to put them in from the back. I had placed some spacers between the front of the robot and the screw holes on the LCD, which meant I could screw it in from the back since the spacers created a place for the screws to screw in. This meant two things. The screws were now invisible from the exterior, and I didn’t need to use nuts. Then I created the assembly. I created my own animation for the assembly by manually transforming each component. I also created a drawing of the exploded view with a parts list. Lastly, I updated the schematic because someone suggested adding net labels to make it look cleaner. I also did quite a bit of research trying to wrap my head around MCPs and other options. But I landed on using Ollama to install a local AI model, Open Web UI to use the model with MCPs, and Python that will handle the MSPs as well as the communication between the AI and the microcontroller. Challenges Creating the exploded view. Creating the animation was hard enough, especially since the animation system is really annoying to work with. But I decided that an animation of the disassembly guide would not suffice, so I wanted to make a drawing from the animation as an exploded view. But the problem came up when I created the drawing, and not all of the parts were visible. So I solved this by creating a separate animation where all the parts are moved far enough that they are all visible from the same angle, but still in their relative locations. Figuring out the architecture workflow This has been the worst part of this project, especially because I have practically no knowledge whatsoever regarding this kind of stuff. The main problems I was having were trying to find a way to allow the AI to interact with the microcontroller. I had no Idea where to start, and was losing faith in this project. I also considered scrapping the whole movement idea because I didn’t know how I would integrate it effectively. But I stumbled on MCPs, which I think will work. They basically work by creating tools that an AI can use to interact with other software, and they are very versatile. I want to make an MCP server (a custom set of tools) that controls the code that the microcontroller runs on. Only problems are that I don’t know how to use Python or MCPs, and therefore have no idea what my options are. After some extensive research, I have a rough idea that I think might work. The prompt and camera feed will be sent to a web server created by the esp32, which a Python script will be able to access via an API. This prompt is then fed into the AI, which will use the data to generate an answer. I will also create tools in the Python script that the AI can use that will turn the servos on and off through an API if it decides it needs to move. This data, along with the response from the AI, will be sent back to the web server, which the microcontroller will display on the LCD. What is next Currently, I am waiting on my microcontroller, which is said to arrive later this week. While I wait, I will probably continue researching ways to get this to work and try to get a better idea of what I expect of OTIS. Any help or guidance with this matter would be greatly appreciated. Thank you."}, {"post_id": 40188, "ts": "2026-08-03T16:19:04Z", "hours": 7.1342, "text": "Devlog #4 Hey. This is my fourth Devlog for O.T.I.S, my personal AI desk robot. I know this is a lot of time to be putting into one Devlog, but I will try to go into as much depth as possible. What I did So, I started by creating a little notch for the camera module. I am going to buy an extension for the camera because it allows me to mount it separately, and because it comes with two heatsinks. Next, I made the gears that would hold the treads using a model of an SG90 attachment for dimensions. I also remodeled the top of the servo because the model had more comprehensive dimensions for the servo as well. After that, I began working on the front wheels. I created a model of a 2mm rod for the axle and made a cylindrical guide for the axle and gear. I also made a small stopper that I will attach to keep the axle from sliding out. Then I figured I should start on the assembly guide. I decided that an exploded view of the robot with a disassembly animation would suffice, but then I realized that I had not created a model for the LCD or the camera, so I began with the LCD. Once I completed that, I put the LCD on the robot and modeled holes for the screws. Lastly, I moved on to the camera module itself. I decided to model just the camera and the heatsink, since I didn’t think the extended wire would look accurate or contribute to the design. I also created models for the screws and nuts so that I could include them in the assembly guide. Lastly, I ordered the microcontroller, 22 AWG wire, and the servos. Challenges Modeling the gears I had quite a bit of trouble when trying to model the gears. I wanted them to have the grooves inside similar to other common servo attachments, but I couldn’t find dimensions for the attachments that included them. I did find a 3d model online that had dimensions, so I based my design off of that. I haven’t modeled the grooves, but I will likely do so if I can find some reference. I also had a little bit of trouble finding rubber treads for the robot, since they were all too large. But I came across timing belts, which are usually used in printers or small CNC machines, and they seemed like the perfect solution. This is because they were small enough, were made of rubber, and had teeth. Creating the screws When looking for ways to mount the LCD to the robot, I decided that screws would work well. So I measured the size of the holes on the LCD, but they were 3mm big. This meant that a standard M3 (3mm) screw would not fit. So I looked for one slightly smaller and found M2.5. This size should work, since it is slightly smaller than the hole, but not too small. I also had a bit of trouble finding dimensions for the threads, since I thought that I would need to specify all of that when creating the screw. But I realized that Fusion only needed the size of the screw (M2.5), which I was able to provide. I did the same for the nut, using a reference I found on a listing. I will likely buy these screws from a local hardware store, so I will update my design after I buy them. Deciding on a board This was one of the biggest problems I had when creating this robot. Buying an unsoldered version would mean I could make stronger connections by twisting wire or soldering (I don’t have a soldering iron and don’t know how to solder). But it would make testing harder, and I would also be risking causing a short circuit if the wires shift around too much. Buying the board with presoldered pins would mean easier and more reliable testing. But jumper wires are not very secure, which means I would have to learn to solder anyway. In the end, I decided to go for the unsoldered version. My plan is to wrap the wire around the pins and to add hot glue or shrink wrap to make the connection safer while I get comfortable with soldering. What is next I am going to do research on the best AI for OTIS’s brain, as well as finish the 3D model and assembly guide."}, {"post_id": 38444, "ts": "2026-07-31T20:13:58Z", "hours": 2.0119, "text": "DEVLOG #3 What I did So, I started with the Schematic on KiCad. I created symbols for the microcontroller and the LCD screen (since there weren’t ones on KiCad) and used the premade servo symbols for the continuous servos. I put them all on the page and wired them up in a way that made sense to me. I have never made a schematic before and did not know if my wiring was accurate. After that, I started on the BOM. I don’t have much on there yet, just details about the main components like the microcontroller and servos, but I will expand on it later. Challenges Making the schematic I had quite a bit of trouble when making the schematic. This was mainly because I had never done this before and didn’t know what to expect. One challenge I faced was creating the symbol for the Microcontroller. I started by going to the product page on Seeed Studios website. I saw a diagram with all the pins and their functions, but I didnt know what to include. So I googled an image of a schematic using the microcontroller and found that people would often just label the external GPIO pins, so thats what I did. Another problem I faced was trying to find the pin numbers. I was able to find the name of each pin on the diagram from the website, but they didn’t list the pin numbers. So I decided to look at the data sheet. So I googled for the data sheet, found one from Seeed Studio, and copied the pin numbers from a table on the sheet. But I noticed that they didn’t label all the pins on there, specifically the 5V (VBUS) pin and GPIO43 (which turned out to be TX), which is when I began to look elsewhere. Then I noticed that other schematics were just labeling them as 1 - 14 along the pins, so that is what I did. I faced similar problems with the LCD, but I decided to exclude the pin numbers and to just name them depending on their function. After I had made both symbols, I moved onto the schematic. This was fairly simple, since I just had to connect the right pins. But I was a little skeptical as to whether I had wired up the power correctly, since I didn’t know how I was supposed to wire the battery to all the components. However, I looked at some simple example schematics with batteries to see how they were implemented, and based mine off of them. I decided to power the LCD from the microcontroller since it runs off of 3.3V and the battery is set to 5V, with the servos and microcontroller running directly off of the battery. What is next Next, I will probably order the parts that I know I will need and begin working with them. Sadly, the microcontroller is said to arrive a week from now, while all the other parts are going to arrive much sooner unless I purchase an unsoldered version of the board. I was thinking about buying an unsoldered version and then just tying wire around the pins to make connections since I don’t have a soldering iron, but I don’t know how good of an Idea that is. Any suggestions would be greatly appreciated."}, {"post_id": 36129, "ts": "2026-07-28T00:35:50Z", "hours": 0.965, "text": "DEVLOG #2 What I did I created a rough 3d Model of OTIS’s body. I did so in Fusion360, and also used dimensions of servos and a sample LCD screen to model those parts as well. The servos are going to be MG90S continuous servos, and the LCD is most likely going to be a 2.4-inch LCD. I had some trouble when trying to decide how I was going to run the AI. But i decided that I will use an ESP-32 and run the AI on my PC. I also decided that instead of using YOLO or OpenCV, I will probably just use an LLM. This is because I want the robot to be able to answer more abstract questions about what it sees, and I don’t know how YOLO works with LLMs since it is designed to recognize a collection of specific items, but I will do research. I also updated my plan for what I am going to do. Also, I decided to go for a Seeed Studio ESP-32S3 with the camera module instead of the ESP-32S3 cam because its smaller and has a built in mic, which will not only make the robot more compact, but will also save me some pins. Challenges One of the biggest challenges I had was trying to find the right parts. This is the first time I had every done research to find parts for my own personal project, so it was very time consuming and tedious. Finding the right board One concern I had was whether I would even be able to use the ESP 32 for this project. While doing research, I knew that I would use SPI for the LCD, but I also assumed the camera module would use SPI as well. So, I was worried about whether I would be able to use both modules at the same time, especially since there was only one set of SPI pins on the board. This would have been possible regardless, but it didn’t matter because the camera module ended up not actually needing the SPI pins, so I think I am ok. Finding Dimensions Another big challenge I faced was while I was modeling the robot. I had never modeled something from scratch before, so I was really lost at the beginning. But I decided to just start somewhere and model a servo. I pulled up a random photo of the dimensions of the MG90S (I was fairly confident that the dimensions would be pretty accurate since its a popular model) and began modeling. Then I modeled the robot’s size based off of the Servos and then chose the size of the LCD by modeling it and seeing how it fit. What is next I will do more research on LLMs and whether this is the right option for my project, as well as the ways I can use them in my project. I will also update and create more designs and work on making a README.md file for GitHub."}, {"post_id": 31501, "ts": "2026-07-19T23:01:20Z", "hours": 0.2503, "text": "DEVLOG-1 What I did I created a document with a simple layout of OTIS. I have not modeled anything yet, but I created a description of my plan with parts. What is next I am going to create a rough 3D model and possibly create a schematic next."}]...
|
Title: O.T.I.S by @Sharkle | Stardance
Devlogs:
D Title: O.T.I.S by @Sharkle | Stardance
Devlogs:
DEVLOG-1 What I did I created a document with a simple layout of OTIS. I have not modeled anything yet, but I created a description of my plan with parts. What is next I am going to create a rough 3D model and possibly create a schematic next.
DEVLOG #2 What I did I created a rough 3d Model of OTIS’s body. I did so in Fusion360, and also used dimensions of servos and a sample LCD screen to model those parts as well. The servos are going to be MG90S continuous servos, and the LCD is most likely going to be a 2.4-inch LCD. I had some trouble when trying to decide how I was going to run the AI. But i decided that I will use an ESP-32 and run the AI on my PC. I also decided that instead of using YOLO or OpenCV, I will probably just use an LLM. This is because I want the robot to be able to answer more abstract questions about what it sees, and I don’t know how YOLO works with LLMs since it is designed to recognize a collection of specific items, but I will do research. I also updated my plan for what I am going to do. Also, I decided to go for a Seeed Studio ESP-32S3 with the camera module instead of the ESP-32S3 cam because its smaller and has a built in mic, which will not only make the robot more compact, but will also save me some pins. Challenges One of the biggest challenges I had was trying to find the right parts. This is the first time I had every done research to find parts for my own personal project, so it was very time consuming and tedious. Finding the right board One concern I had was whether I would even be able to use the ESP 32 for this project. While doing research, I knew that I would use SPI for the LCD, but I also assumed the camera module would use SPI as well. So, I was worried about whether I would be able to use both modules at the same time, especially since there was only one set of SPI pins on the board. This would have been possible regardless, but it didn’t matter because the camera module ended up not actually needing the SPI pins, so I think I am ok. Finding Dimensions Another big challenge I faced was while I was modeling the robot. I had never modeled something from scratch before, so I was really lost at the beginning. But I decided to just start somewhere and model a servo. I pulled up a random photo of the dimensions of the MG90S (I was fairly confident that the dimensions would be pretty accurate since its a popular model) and began modeling. Then I modeled the robot’s size based off of the Servos and then chose the size of the LCD by modeling it and seeing how it fit. What is next I will do more research on LLMs and whether this is the right option for my project, as well as the ways I can use them in my project. I will also update and create more designs and work on making a README.md file for GitHub.
DEVLOG #3 What I did So, I started with the Schematic on KiCad. I created symbols for the microcontroller and the LCD screen (since there weren’t ones on KiCad) and used the premade servo symbols for the continuous servos. I put them all on the page and wired them up in a way that made sense to me. I have never made a schematic before and did not know if my wiring was accurate. After that, I started on the BOM. I don’t have much on there yet, just details about the main components like the microcontroller and servos, but I will expand on it later. Challenges Making the schematic I had quite a bit of trouble when making the schematic. This was mainly because I had never done this before and didn’t know what to expect. One challenge I faced was creating the symbol for the Microcontroller. I started by going to the product page on Seeed Studios website. I saw a diagram with all the pins and their functions, but I didnt know what to include. So I googled an image of a schematic using the microcontroller and found that people would often just label the external GPIO pins, so thats what I did. Another problem I faced was trying to find the pin numbers. I was able to find the name of each pin on the diagram from the website, but they didn’t list the pin numbers. So I decided to look at the data sheet. So I googled for the data sheet, found one from Seeed Studio, and copied the pin numbers from a table on the sheet. But I noticed that they didn’t label all the pins on there, specifically the 5V (VBUS) pin and GPIO43 (which turned out to be TX), which is when I began to look elsewhere. Then I noticed that other schematics were just labeling them as 1 - 14 along the pins, so that is what I did. I faced similar problems with the LCD, but I decided to exclude the pin numbers and to just name them depending on their function. After I had made both symbols, I moved onto the schematic. This was fairly simple, since I just had to connect the right pins. But I was a little skeptical as to whether I had wired up the power correctly, since I didn’t know how I was supposed to wire the battery to all the components. However, I looked at some simple example schematics with batteries to see how they were implemented, and based mine off of them. I decided to power the LCD from the microcontroller since it runs off of 3.3V and the battery is set to 5V, with the servos and microcontroller running directly off of the battery. What is next Next, I will probably order the parts that I know I will need and begin working with them. Sadly, the microcontroller is said to arrive a week from now, while all the other parts are going to arrive much sooner unless I purchase an unsoldered version of the board. I was thinking about buying an unsoldered version and then just tying wire around the pins to make connections since I don’t have a soldering iron, but I don’t know how good of an Idea that is. Any suggestions would be greatly appreciated.
Devlog #4 Hey. This is my fourth Devlog for O.T.I.S, my personal AI desk robot. I know this is a lot of time to be putting into one Devlog, but I will try to go into as much depth as possible. What I did So, I started by creating a little notch for the camera module. I am going to buy an extension for the camera because it allows me to mount it separately, and because it comes with two heatsinks. Next, I made the gears that would hold the treads using a model of an SG90 attachment for dimensions. I also remodeled the top of the servo because the model had more comprehensive dimensions for the servo as well. After that, I began working on the front wheels. I created a model of a 2mm rod for the axle and made a cylindrical guide for the axle and gear. I also made a small stopper that I will attach to keep the axle from sliding out. Then I figured I should start on the assembly guide. I decided that an exploded view of the robot with a disassembly animation would suffice, but then I realized that I had not created a model for the LCD or the camera, so I began with the LCD. Once I completed that, I put the LCD on the robot and modeled holes for the screws. Lastly, I moved on to the camera module itself. I decided to model just the camera and the heatsink, since I didn’t think the extended wire would look accurate or contribute to the design. I also created models for the screws and nuts so that I could include them in the assembly guide. Lastly, I ordered the microcontroller, 22 AWG wire, and the servos. Challenges Modeling the gears I had quite a bit of trouble when trying to model the gears. I wanted them to have the grooves inside similar to other common servo attachments, but I couldn’t find dimensions for the attachments that included them. I did find a 3d model online that had dimensions, so I based my design off of that. I haven’t modeled the grooves, but I will likely do so if I can find some reference. I also had a little bit of trouble finding rubber treads for the robot, since they were all too large. But I came across timing belts, which are usually used in printers or small CNC machines, and they seemed like the perfect solution. This is because they were small enough, were made of rubber, and had teeth. Creating the screws When looking for ways to mount the LCD to the robot, I decided that screws would work well. So I measured the size of the holes on the LCD, but they were 3mm big. This meant that a standard M3 (3mm) screw would not fit. So I looked for one slightly smaller and found M2.5. This size should work, since it is slightly smaller than the hole, but not too small. I also had a bit of trouble finding dimensions for the threads, since I thought that I would need to specify all of that when creating the screw. But I realized that Fusion only needed the size of the screw (M2.5), which I was able to provide. I did the same for the nut, using a reference I found on a listing. I will likely buy these screws from a local hardware store, so I will update my design after I buy them. Deciding on a board This was one of the biggest problems I had when creating this robot. Buying an unsoldered version would mean I could make stronger connections by twisting wire or soldering (I don’t have a soldering iron and don’t know how to solder). But it would make testing harder, and I would also be risking causing a short circuit if the wires shift around too much. Buying the board with presoldered pins would mean easier and more reliable testing. But jumper wires are not very secure, which means I would have to learn to solder anyway. In the end, I decided to go for the unsoldered version. My plan is to wrap the wire around the pins and to add hot glue or shrink wrap to make the connection safer while I get comfortable with soldering. What is next I am going to do research on the best AI for OTIS’s brain, as well as finish the 3D model and assembly guide.
DEVLOG 5 What I did I began by updating the 3d model by updating the position of the screws. I did not like the visibility of the screws in the earlier design, which is why I decided to put them in from the back. I had placed some spacers between the front of the robot and the screw holes on the LCD, which meant I could screw it in from the back since the spacers created a place for the screws to screw in. This meant two things. The screws were now invisible from the exterior, and I didn’t need to use nuts. Then I created the assembly. I created my own animation for the assembly by manually transforming each component. I also created a drawing of the exploded view with a parts list. Lastly, I updated the schematic because someone suggested adding net labels to make it look cleaner. I also did quite a bit of research trying to wrap my head around MCPs and other options. But I landed on using Ollama to install a local AI model, Open Web UI to use the model with MCPs, and Python that will handle the MSPs as well as the communication between the AI and the microcontroller. Challenges Creating the exploded view. Creating the animation was hard enough, especially since the animation system is really annoying to work with. But I decided that an animation of the disassembly guide would not suffice, so I wanted to make a drawing from the animation as an exploded view. But the problem came up when I created the drawing, and not all of the parts were visible. So I solved this by creating a separate animation where all the parts are moved far enough that they are all visible from the same angle, but still in their relative locations. Figuring out the architecture workflow This has been the worst part of this project, especially because I have practically no knowledge whatsoever regarding this kind of stuff. The main problems I was having were trying to find a way to allow the AI to interact with the microcontroller. I had no Idea where to start, and was losing faith in this project. I also considered scrapping the whole movement idea because I didn’t know how I would integrate it effectively. But I stumbled on MCPs, which I think will work. They basically work by creating tools that an AI can use to interact with other software, and they are very versatile. I want to make an MCP server (a custom set of tools) that controls the code that the microcontroller runs on. Only problems are that I don’t know how to use Python or MCPs, and therefore have no idea what my options are. After some extensive research, I have a rough idea that I think might work. The prompt and camera feed will be sent to a web server created by the esp32, which a Python script will be able to access via an API. This prompt is then fed into the AI, which will use the data to generate an answer. I will also create tools in the Python script that the AI can use that will turn the servos on and off through an API if it decides it needs to move. This data, along with the response from the AI, will be sent back to the web server, which the microcontroller will display on the LCD. What is next Currently, I am waiting on my microcontroller, which is said to arrive later this week. While I wait, I will probably continue researching ways to get this to work and try to get a better idea of what I expect of OTIS. Any help or guidance with this matter would be greatly appreciated. Thank you.
DEVLOG #6 What I did So today, I decided that I should finish up my design before I apply to get funded. But there were a few things that I had yet to do. First, I created the top panel for OTIS. I don’t exactly know why I put it off until now, but I made a simple design that will just sit on top and be held in place by little stoppers. I also did a bit of research beforehand on what battery i should purchase, but a lot of them are too big. So I also increased the size of OTIS from 77mmx77mmx77mm to 80x80x78.5 (78.5 because the lid is 1.5 mm thick). Lastly, I went and updated the assembly video and drawing, and uploaded all the changed parts to the GitHub repo. Challenges Resizing the robot When I initially changed the size of the robot, I thought everything was ok. I used joints to attach everything, so all the parts just kinda “shifted” into the right spot. But the challenges came when I had to edit the parts of the robot that were now disproportionate. One example of this was the LCD. The screen is supposed to sit right in the middle of the robot, but it was not in the middle of the LCD board, which means all the dimensions got messed up when I resized the enclosure. To make matters worse, the project tool that I used to make the holes kept bugging out and offsetting the projection to where it was BEFORE I shifted the design. Eventually I got it to work by creating separate sketches from the projections, which is a setting on the pop-up. This way, the projections would stay exactly where I needed them instead of trying to auto-correct to some past position. I also fixed some other parts; the spacer near the servo also got messed up, but I was able to fix those problems much more easily. What Is Next The microcontroller and wires will arrive today, so I will begin working with them and the AI to figure out how to synchronize them all. I also applied for funding, so I will wait and see where that goes. Thank you.
DEVLOG #7 What I did So this whole time, I basically spent trying to get the web server of the ESP32 to work, which I had a hard time understanding. I also tried using the Python script to send data to the web server, but that doesn’t seem to work either. So I began setting up the AI model with Open Web UI and Docker. I decided that I will probably scrap the whole MCP plan since i’m pretty sure I can just send and receive data as HTTP requests directly between Open Web UI and the ESP32 as JSON. Challenges Getting the data to send The main problem I have with all of this is that I don’t know what I’m doing a lot of the time. Even though I have worked with Arduino, I have never worked with an ESP32, and I don’t know how I can utilize the wifi to send and receive data. I tried understanding an example script for a basic web server that is built into the IDE, but I couldn’t wrap my head around the part where you create the server. I was able to get the ESP32 to connect to my WiFi, though, which I guess is progress. I also tried sending a POST request from the Python script, but I don’t think that is going to work since I have no idea how to get the ESP32 to receive the data. It’s even harder to find answers to these problems since I don’t even know what to look for. I decided that I should scrap the MCP plan, since I could just read JSON data that the ESP32 can receive through a GET request. In conclusion, I just ran in circles trying different things that all yielded the same results. Getting the AI to work For some reason, the model that I decided to use can only complete tasks, which are defined by a set of tools. I am able to use it in the CLI just fine, but this problem occurs when I use the model in Open Web UI. I’m using Qwen3-vl:8b because it can supposedly analyze images, though I will likely try another model if this persists. What is next The next thing is likely going to be to try other AI models to see if I can get one to work. I will also do more research on an alternative to creating a web server. This project has been very tedious, so wish me luck.
DEVLOG #8 ##What I did These 7 hours, I basically spent trying to get the HTTP POST request to work. I had a lot of trouble when trying to get it to work, but I was able to find a way to get the prompt to the AI and the response back to the ESP. ##Challenges ####Getting the POST to work Initially, I had decided to scrap the MCP idea and to just send an HTTP request directly to Ollama. This plan should have worked, but I could not get it to function. For some reason, I kept receiving a response code of -1 when I tried to send the request. This code means the connection was refused, and this could happen for a multitude of reasons. After some simple troubleshooting, I deduced that the problem was likely related to my firewall. You see, Ollama runs on port 11434, which is protected by the firewall. It also only listens to 127.0.0.1, which meant that I could not send data from the ESP32. To fix the IP problem, I tried setting an environment variable to allow it to listen on 0.0.0.0, but this didn’t work. Then I tried exposing port 11434 on my firewall to the IP of my ESP32, but that was also unsuccessful. I even tried connecting the ESP and my computer to my phone’s hotspot, but that also yielded -1. After consulting Google’s Gemini for any other solutions, I decided that I should just create a Python file that would handle all the requests. So I created a file, installed FastAPI with Uvicorn, and used those libraries along with requests to send an API request to Ollama’s REST API, which I could then return to the ESP. The ESP sent the prompt to the Python script via HTTPClient and ArduinoJSON. After creating all of this, I was finally able to get a response from the AI in serialized JSON, and I am currently trying to figure out why I can’t deserialize it and print it. ##What is next As I mentioned above, I will continue trying to find a way to print only the response and to send prompts seamlessly. This part of the project was definitely very frustrating, but I am so happy I was able to make it possible. Thanks.
DEVLOG #9 What I did For this block, I fixed minor details to make the prompting more seamless. First, I fixed the deserialization so that only the response would be printed. I also used Serial.readString() so the user can send multiple prompts without having to reupload the code with a new prompt Challenges Getting the Deserialization and print to work So this was a really annoying problem that I should not have had this much trouble with. When you receive the response from the AI, it comes back as JSON, with the response as well as other information like the date created, context, etc. I only wanted to print the response, so I tried using deserializeJson() from the ArduinoJson.h library. But for some reason, I kept getting null when trying to print the response element. I tried messing around with the data types, switching between string and const char*, but those didn’t work. I also tried basing my code off of an example from the ArduinoJson website, but it still would not work. Then I created an if statement that checked if there was an element in the JSON labeled response. This returned false, which meant that the data was not deserializing properly. At that point, I felt pretty lost. But then I thought of deserializing the JSON in the Python script and then sending just the response. So I looked into how to deserialize JSON strings through Python, and I came across json.loads() from the json library. There are two main versions of this method: json.loads() and json.load() . .load deserializes a file, while .loads deserializes a string. Because the response from the AI came back as a string, I was able to use the latter to separate the response from the rest of the data, which I was then able to send back and print successfully. What is next Now that I pretty much have the prompting working, my next course of action is likely going to be to figure out how to use the camera and send the feed to the AI. This will definitely be challenging, as I have no idea how I want this part of the project to work. Thank you.
DEVLOG #10 What I did So for this devlog, I mainly spent all of my time working on the camera. I looked up an example script from the Seeed Studio docs to learn about the main system. I then spent quite some time working on a way to convert the picture into a format that I could place into the JSON. I also shifted the old code a bit to better fit the way I wanted to use the camera. In the end, I was able to get the camera working and send a photo to the AI to reference in its response. Challenges Getting the conversion of the photo So I went into this knowing literally nothing about how cameras like this one worked. So I started with the docs and was able to write the code that took the photos. Although this was a bit tedious, the main challenge came when I tried to convert the photos to a format that was compatible with the AI. You see, when you take the photo, it is saved as a frame buffer JPEG. But I needed to convert it to Base64, since that is what Ollama uses when integrating images in the POST request. So I did some digging and came across mbedtls_base64_encode() from the mbedtls/base64.h library. This was really annoying to work with because there are a lot of required parameters, and I didn’t know what any of them meant, let alone how to use my code with them. After an hour of searching, I asked Gemini what each of the parameters meant and what to include in them, and I was able to get the code completed. But when I tried to run it, my ESP kept rebooting. After some more research, I learned that the cause was insufficient memory to store the Base64 string. I was able to fix this by adding if statements as well as memset() to manage the memory space better. After this, I added some code so that it would work regardless of whether the camera was connected. What is next The thing I am going to work on next is to create a way for the AI to use the servos. I already started working on a tool to handle that, but I have not tested it yet. I am also thinking about remodeling the wheels because I noticed that rubber wrist bands might be a better alternative to the timing belts. Thanks.
DEVLOG #10 What I did In this devlog, I really just updated some of the things I had already implemented. First, I remodeled the wheels from gears to regular smooth wheels. This is because I had the idea of using those silicone wristbands as the tank treads instead of timing belts. This would not only be more accessible, but it would also make OTIS much more customizable and, in my opinion, look much better. This is because the silicone bands are thicker than the timing belts, which means the tank treads are larger. I also installed another AI model, qwen3-VL:4b, because I believed it would have better image analysis. I tested out all the models to find the best one, and I think I will use qwen3-vl:4b for this project, as it was able to recognize pictures and follow instructions more accurately than Llava. Lastly, while testing the models, I realized the prompting was a bit tedious when using the camera, since I would have to take a photo each time I prompted the AI. So I revised the code so that it would ask if you wanted to take a photo. If you say “photo”, it will ask you to position the camera and send the prompt. If you don’t want to take a photo, you just put the prompt in the first question, and it will default to no-photo mode for that prompt. Challenges Modeling the wheels This wasn’t really one large problem, more so multiple smaller ones. You see, I had already completed the 3d model with the gears instead of the wheel. This meant that changing the wheels would alter the whole model. For this reason, I was contemplating whether this would be the right choice, as I would also have to fix the animation. But I decided to do it anyway. The main problem was that the wheels have a much larger diameter than the gears. So if I were to just replace them, it would look extremely disproportionate. So, I had to remodel the servo slot and the front axles by placing them closer together and moving them up. Once I completed this, I had to redo the whole animation because the old one did not fit the new wheels well. But after all this, I was able to reupload the new files to the GitHub repo and begin fixing the code. What is next The next thing I am going to do is test out the tool. I wrote up a simple tool in Python that would allow the AI to send data that controls the servos, but I have not tested it yet, which is what I will be doing next. I will also likely wire up the servos and continue testing other models to try to find a good setup. Thank you.
DEVLOG #12 What I did I know this is a lot of time for a single devlog, so I will try to post them more often moving forward. First, I worked on allowing the AI to control the movement of the treads. My first Idea was to create a JSON schema with all 4 directions that the AI could enter values into. The values would dictate the time (in milliseconds) for which the action should be executed. Initially, I decided the 4 directions should be forward, backward, left, and right. But I knew that this would not work, since the tank treads can really only move forward and backward, as well as turn. So I then decided to replace the directions with “Right tread forward”, “Left tread forward”, “Right tread backward”, and “Left tread backward”. I decided on this because I felt that it would allow the AI to reason through my commands, which would allow for much more abstract movement. But the model was not smart enough to map out its movements, and I didn’t really have any other ideas for movement except for forward, backward, and spinning. But that gave me the idea to just use those elements in the JSON scheme. So I set the directions to “forward”, “backward”, “spin left”, and “spin right”. This way, the AI would be able to move exactly how I wanted it to move, without overcomplicating the whole thing, giving me more accurate results. After this, I began working on the APP for OTIS’s controller. I have not decided on a layout, but I do know I want buttons for the 4 directions, a chat box, and a button to send voice commands and photos. Challenges 422 Unprocessable Content So while trying to find a way to get the AI to respond as JSON, I remembered Ollama allows you to send format requests as part of the API POST request to the AI. So after reading the docs, I was able to whip up a simple JSON format using Pydantic and BaseModel with the 4 directions. But when I tried to send the request, I kept getting the 422 error response code. So then I tried a bunch of different stuff, like removing the requirements and removing the nested JSON with the format data. But none of that worked. That’s when I did some research on the docs, and I found that it was the Pydantic JSON class that was causing all the problems. You see, Pydantic is used to check whether incoming data is formatted properly. So when I used it to create a JSON schema, it would constantly look for that data from the Arduino, which it wouldn’t find. This caused the 422 error. So I removed the class and created a JSON schema as a regular variable, and this solved the issue What is next The next thing on my agenda is going to be to create the OTIS app that will allow me to manually control OTIS like a mini rover. I am currently using Tkinter to create the GUI, and will likely use an ESP web server to allow the GUI to interact with the Arduino. Thank you.
DEVLOG #13 What I did For this devlog, I started working on the web app for Otis. I want it to have controls that allow you to manually control him, as well as a button/textbox for AI questions. I was able to make a simple one with Tkinter, but decided to scrap that idea and go with a web server made with CSS and HTML. I then paused that and began working on the microphone feature, since I felt like that was much more important compared to the web server. Challenges Creating the app I initially wanted to create the app with Tkinter, as I had seen others use it and it did not seem too hard. So I began programming it with that. I made a simple window with 7buttons (4 for movement and 3 for AI use). But after realizing that I would not be able to control the ESP with Tkinter, I had to look elsewhere. This is when I realized I could make an ESP32 web server and upload the HTML code to it. This would allow me to create a local web server with a GUI that I could interact with. Working with the microphone After working on the web server, I decided that getting the microphone was a bigger priority for me, so I pivoted and began working on that. I looked at the Seeed Studio docs for microphone use and was able to create some code that would detect and package audio samples. I plan to use this with the Python script to transcribe it locally. The problem is that it is not working, and I have not yet found a solution. This all feels really sketchy, and I don’t expect it to work immediately, so wish me luck. What is next I don’t have a lot of time left, and I have yet to actually put any of the hardware together. I will likely try to 3d print the parts and begin putting stuff together by the end of next week. I will also continue working on the microphone....
|
1793461982.2636795
|
1794066782.2636795
|
|
15234
|
Animatronic Claptrap by @vivaan_khowal | Stardance
|
vivaan_khowal
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 6506, "ts": "2026 [{"post_id": 6506, "ts": "2026-06-10T22:41:32Z", "hours": 1.0, "text": "Started working on the project today. The first part I’m working on is the driving base. For that, I’m using a 6374 170KV motor for the torque, combined with two 6-inch lawn mower wheels joined together for its base. The plan is to use toothed belts and pulleys to transmit motion from the motor to the wheels, but we haven’t designed that part yet."}]...
|
Title: Animatronic Claptrap by @vivaan_khowal | St Title: Animatronic Claptrap by @vivaan_khowal | Stardance
Devlogs:
Started working on the project today. The first part I’m working on is the driving base. For that, I’m using a 6374 170KV motor for the torque, combined with two 6-inch lawn mower wheels joined together for its base. The plan is to use toothed belts and pulleys to transmit motion from the motor to the wheels, but we haven’t designed that part yet....
|
1793793355.7955732
|
1794657355.7955732
|
|
60426
|
grant finder by @anisht245 | Stardance
|
anisht245
|
0
|
5.24
|
0
|
[]
|
[{"post_id": 65053, "ts": "202 [{"post_id": 65053, "ts": "2026-09-09T21:50:53Z", "hours": 5.2447, "text": "I finished my FIRST grant finder. This website allows for teams to search for grants through an all in one database where teams can filter through requirements. Additionally, this website can help teams in the United States alongside international teams. Below I attached a view on how the website looks."}]...
|
Title: grant finder by @anisht245 | Stardance
Dev Title: grant finder by @anisht245 | Stardance
Devlogs:
I finished my FIRST grant finder. This website allows for teams to search for grants through an all in one database where teams can filter through requirements. Additionally, this website can help teams in the United States alongside international teams. Below I attached a view on how the website looks....
|
1793641967.0125985
|
1794246767.0125985
|
|
39640
|
WePod by @Nuno | Stardance
|
Nuno
|
0
|
6.74
|
0
|
[]
|
[{"post_id": 65052, "ts": "202 [{"post_id": 65052, "ts": "2026-09-09T21:49:44Z", "hours": 0.45, "text": "Devlog +: Fixes After printing one part i realised the brass inserts didnt fit and the bottom was too thin so I fixed that"}, {"post_id": 35452, "ts": "2026-07-26T21:34:48Z", "hours": 3.0003, "text": "DevLog 2: WePod- Orange Finished the Case for the WePod. Ended up going for an Orange and Yellow look with a spot to place a keychain similar to a phone case. I made it so it splits into 2 pieces that connect via 3M screws. The only ports exposed are the Charging Port, the SD Slot and 3.5mm Jack so if u ever want to change the firmware u are gonna need to take it apart"}, {"post_id": 34852, "ts": "2026-07-25T21:43:05Z", "hours": 3.2894, "text": "DevLog 1: WePod, An open source Mp3 Player. I was way too young to know what an IPod was until i began to like eletronics. I also never had an Mp3 player so with that and the fact we dont anything now i decided to create the WePod. Its a simple Mp3 that runs on the Xiao RP2040 and uses a SD Card as its memory to hold our very legitimate and totally not pirated songs. Right now I have only made the pcb without the BMS but i left 3 pads on the right to eventually connect a BMS"}]...
|
Title: WePod by @Nuno | Stardance
Devlogs:
DevLog Title: WePod by @Nuno | Stardance
Devlogs:
DevLog 1: WePod, An open source Mp3 Player. I was way too young to know what an IPod was until i began to like eletronics. I also never had an Mp3 player so with that and the fact we dont anything now i decided to create the WePod. Its a simple Mp3 that runs on the Xiao RP2040 and uses a SD Card as its memory to hold our very legitimate and totally not pirated songs. Right now I have only made the pcb without the BMS but i left 3 pads on the right to eventually connect a BMS
DevLog 2: WePod- Orange Finished the Case for the WePod. Ended up going for an Orange and Yellow look with a spot to place a keychain similar to a phone case. I made it so it splits into 2 pieces that connect via 3M screws. The only ports exposed are the Charging Port, the SD Slot and 3.5mm Jack so if u ever want to change the firmware u are gonna need to take it apart
Devlog +: Fixes After printing one part i realised the brass inserts didnt fit and the bottom was too thin so I fixed that...
|
1793422130.5664368
|
1794026930.5664368
|
|
33858
|
Tiny Jarvis by @louisd | Stardance
|
louisd
|
0
|
30.13
|
0
|
[]
|
[{"post_id": 65046, "ts": "202 [{"post_id": 65046, "ts": "2026-09-09T21:35:51Z", "hours": 2.1347, "text": "Added a Spotify waveform animation This will play on the OLED screen while the AI is speaking out loud. The waveform is generated in real time, randomly, by an algorithm, and displayed through the python library luma.oled Sadly, I still haven’t received funding and can’t continue with the hardware part of this project. I don’t know or understand why the funding keeps getting refused, even though I do all the right things as indicated everytime, and this is very frustratung because I literally went to the lengths of designing my own PCB from scratch, all of this to not get funded. I’m short of ideas for the software part now… still waiting for the funding (2 months btw, 22 demands)"}, {"post_id": 54709, "ts": "2026-08-25T19:42:51Z", "hours": 1.4408, "text": "“Hey Tiny Jarvis. where’d I put my keys again?” Tiny_Jarvis now has memory ! I’ve implemented a simple sqlite local database in Python to store every question the user asks. (first time doing this ! very satisifying) This means it can help you remember timings, dates, locations… anything! However, this also means that all these cumulatively added memories make the prompt for the AI longer and longer Which is why for the moment it only remembers the last 5 prompts. This may seem like a small amount, but for the most it is sufficient for remembering recent prompts. Should I make it remember more stuff? tell me"}, {"post_id": 52300, "ts": "2026-08-22T12:38:39Z", "hours": 2.8067, "text": "“Hey Tiny Jarvis, what’s going on in the world?” New feature: Tiny Jarvis automatically fetches the news from BBC World, chooses the most impactful headline, reads the articles and generates a summary! This happens in the background, every hour, to ensure that the news is recent. I discovered smth called RSS feeds, which is basically a tool that feeds website updates back to you in the form of XML files. Then I learnt about the feedparser python library, as well as trafilatura , for extracting text from HTML (for getting the text from the articles), which made the job ten times easier. However, this process does take some time: Step 1: script parses the BBC World feed Step 2: local AI chooses between the thirteen daily headlines Step 3: script fetches the associated articles text Step 4: local AI summarizes ALL THREE articles. On a Raspberry Pi 5, obviously, this can take at least 5 minutes. Now for the moment this is a bit biased, because I chose the “Technology” category for the RSS feed 😅 but i’ll add the option to change it later Is this a good feature? Please tell me"}, {"post_id": 51503, "ts": "2026-08-21T08:21:10Z", "hours": 2.5022, "text": "“Hey Tiny Jarvis, play Smooth Criminal” mopidy-youtube integrated! and it works! All you have to do is press the button, say out loud “Play (song) …” and it will search for it in Youtube music (FREE MUSIC!!!) and play it. You can then adjust the volume with the rotary encoder, which is satisfying asf. This was one hell of a debugging session, holy I had to search for forked repos on Github that fixed a obscure yt-dlp issue, and somehow it works. Anyways apart from that, i restructured the project code repo entirely, everything is now separated into different sections like firmware and pcb to distinguish hardware from software. New: the install.sh was finally tested and it works perfectly after a few tweaks! woohoo! Oh and finally: rewrote my README.md as recommended by the Stardance guides, and yh I agree it looks better Tell me if you have any other ideas of features to implement"}, {"post_id": 46357, "ts": "2026-08-13T15:06:41Z", "hours": 1.9442, "text": "Music handler + system metrics idle screen Time to make Tiny_Jarvis a little more like the real Jarvis…. SYSTEM METRICS SCREEN! Displays in real time: battery life, cpu temperature, current time on the OLED screen. Finished up the Mopidy part of the music player, can’t test it yet sadly (i don’t have access to my rpi5 right now) it was way more difficult than I thought AIM: “Play …” -> searches through free music online database like Youtube music for query and plays the music if it finds it. Added another quirky feature: flip a coin Tell me if you have ideas of other new useful features"}, {"post_id": 44309, "ts": "2026-08-09T23:46:42Z", "hours": 1.6589, "text": "New timer feature implemented, plus more Created a handle_prompt() function in main.py to handle any task-specific prompt given by the user. For example: if I say “Play …” or “Set a timer of …” then it will recognize this specific pattern and handle those actions perfectly, and if it’s something else than the AI will just answer it. It’s scalable, so I can add more features in the future, such as “Definition of” or idk (if you have any ideas lemme know in the comments) Created a timer.py file which handles the timer feature, which is sort of complicated but now works (it displays on-screen in real time, which is pretty cool) All in all, main.py is now very clean and readable."}, {"post_id": 42688, "ts": "2026-08-07T15:20:43Z", "hours": 1.0628, "text": "Cleaned up main.py and cooking_helper.py It’s been a while since I last worked on this project, I’m still waiting for my hardware funding request to be approved, which made me lose motivation. But I’m back, so here’s what’s new: I separated the main function in cooking_helper.py Unix-style, so that everything is cleaner and easier to debug or scale (in case the CSV file gets bigger) Now it doesn’t need to open the csv everytime, instead it just opens it once upon startup. In main.py , created an initialize() function which separates the tasks into an easier format. The AssistantDisplay class and the list of recipes is then passed onto the while True loop. The main() function is now much simpler: it calls the initialization function, then in the loop it checks whether there are new recordings thanks to an imported function, if there are not it waits 0.2 seconds before checking again, and if there is then it runs the process_recording() function. Very clean!"}, {"post_id": 34645, "ts": "2026-07-25T15:19:12Z", "hours": 1.0297, "text": "Upgraded the cooking helper + critical bug fixes Translated the recipes to english - will add more later Fixed a critical issue with initializing and importing different python files, now main.py has the real control of initialization thanks to a listener.init_listener() function. Added a speak(['Ingredients']) in main.py so Tiny_Jarvis will speak the ingredients of the chosen recipe out loud Switched from hardcoding random.randint(0,33) to random.choice(list) way simpler and easier to read, and created a format_cooking_sentence(recipe_object) function so that main.py doesn’t have to manage that, way better Future changes I might implement: apparently Raspberry Pi OS manages audio through the Advanced Linux Sound Architecture (ALSA) which is responsible for the hardware drivers, the audio routing and control, and the low-level utilities such as the commands I often use, such as alsamixer , aplay and arecord So when two python libraries that need to either record audio or output audio call ALSA to do so, it can lead to conflicts. In this case, sounddevice and pyaudio which are both wrappers of the C library PortAudio . So a future change would be only using sounddevice for example, or vice versa. This has another hidden advantage: removing a possibly finnicky dependency and making the whole process smoother, since compiling C on a Raspberry Pi can be difficult at times."}, {"post_id": 34096, "ts": "2026-07-24T16:00:12Z", "hours": 0.4331, "text": "Added a cool silkscreen logo Made an entry for the 23rd of July in JOURNAL.md Found and added this logo from The Noun Project . Really cool website btw. This icon clicked with me bc it really represents what Jarvis (or AI chatbots are in general) is, that being SIMULATED intelligence, and makes us remember that’s its all just complex math equations and not real intellect. Fixed some DFM issues, and rerouted a lot of traces, some were going over the mounting holes Tried to make more space for the logo but broke the whole thing and had to Ctrl+z my way out of there (help) Looks cool no?"}, {"post_id": 33554, "ts": "2026-07-23T16:16:59Z", "hours": 0.8894, "text": "PCB + updates on the cooking feature Wrote an entry in JOURNAL.md for today’s work Worked a lot on the PCB in EasyEDA Pro, mostly clearance issues but also a lot of struggling with the GND pour. Updates on the cooking feature: Thought it would be cool to be able to show the ingredients on the OLED screen So updated the AssistantDisplay class and created a neat function to show text using the python library luma.oled Problem is it would go off screen, so I implemented the built-in textwrap module and it can now display 5 lines. Will get to translating everything to english later, promised Anyways if anyone has any recommendations for the PCB don’t hesitate to leave a comment!"}, {"post_id": 32963, "ts": "2026-07-22T13:37:48Z", "hours": 1.3981, "text": "Added a cooking recipes feature for no reason Created a cooking_helper.py in a cooking/ folder OCR’d half of a cooking book with help from Gemini and put everything in a beautiful recipes.csv Used the csv.DictReader object to access the info and organize it into a list, very useful. Updated main.py so that when the user’s prompt starts with “Cooking”, it takes a random recipe from the csv file (using the random.randint(a, b) function) and returns a formatted sentence with all the info for cooking that recipe. Made this cos I’m really bad at cooking and it could also benefit others, you never know."}, {"post_id": 32400, "ts": "2026-07-21T15:40:27Z", "hours": 0.4131, "text": "Schematic and PCB tweaking Made an entry for today in JOURNAL.md I’ll keep this short, but basically: huge issues with my schematic, electrically incorrect for the most part, some useless components, which then translated into the actual PCB, having to rewire traces manually, making tons of mistakes along the way and spending waay too much time repairing them. Still waiting for the funding request to be approved before I can order these. Huge thanks to M-Mrk in the Slack electronics channel for all his help, he saved me"}, {"post_id": 31821, "ts": "2026-07-20T14:39:34Z", "hours": 1.0108, "text": "Error handling time! + bug and dependency fixing Now that I have a clean slate to test my project on, I ran python main.py and somwhow got three errors in a row. Spent an hour adding try s and except Exception as e everywhere to prevent this. Now debugging is way easier and more user-friendly. Fixed some bugs such as ssd1106 not being a real OLED screen part name As well as gpiozero missing the rpi-lgpio library, which needs system-wide packages swig and liblgpio-dev so yh dependency hell. Almost everything should be error-proof now. I tested it, and no errors popped up, just friendly reminders that I2C wasn’t enabled, or that my buttons weren’t detected, or no screen. Update install.sh with these changes, now works perfectly."}, {"post_id": 31697, "ts": "2026-07-20T09:51:03Z", "hours": 1.2397, "text": "RPI5 OS Switch + Tiny_Jarvis easier to put in place Worst day in my life. Tried to flash a Raspberry Pi OS Lite (64-bit) on the raspberry pi 5 (which btw has an NVMe SSD), and it did NOT go well: First flash using the Imager: didn’t work, nothing happened, the Pi started speaking in freaking morse code Spent an hour trying to decode that morse code according to documentation, thought it was an EEPROM bootloader issue, made a diagnostic card, made a factory reset card, nope. Realized I could plug it through HDMI to my projector; did that: it was asking me for a username. Didn’t have a USB keyboard so couldn’t type it in. Almost threw the Pi out of the window cos I configured all that in the fricking Imager. Realized I was using the Imager from Flathub and not rpi-imager Retried the whole thing with that Imager: still didn’t work. Spent two hours doing the same thing over and over: flashing the card with the Imager, going into the files, editing user-data , cloud-init-ouput.log , etc… realized the Imager wasn’t writing the information in those files but others, booting it up into HDMI, checking the logs, managing to bypass username but not keyboard layout, etc… I EVEN TRIED LEGACY VERSIONS OF THE OS AND CREATING A wpa_supplicant.conf . Atp I was going to crash out but then I checked my rpi-imager version (even though I had updated it) and turns out my laptop just couldn’t get the latest version : it was 1.8.0 , not 2.1.0 (the latest one). Downloaded the newest version, ran it, and it worked. I have officially lost faith in humanity. Anyways I read my README.md and decided that it was getting way too complicated (the installation part) so I pasted that whole part into Kimi K3 and he made me a install.sh which is basically fire since you just run chmod +x install.sh ./install.sh and the whole system-wide-packages-and-dependencies are all installed in the right order, easily. This is tested and proved (i did it with the newly flashed OS)."}, {"post_id": 30725, "ts": "2026-07-18T15:25:56Z", "hours": 1.0417, "text": "Major software update + PCB testing Found out yesterday that Ollama is just the whole UI and simplificator of use for the C library llama.cpp And turns out there’s a python wrapper for that library, llama-cpp-python , which has two advantages over Ollama: Faster Way more flexible, we can get every last bit of performance from the rpi5 So I updated ai.py with this new feature, there are more settings than Ollama for optimizing performance for CPU-only (4 cores) which is great, however I had to download a .gguf from Hugging Face and accidentally ended up being given access to a repository for the model?! so i can now propose changes to that repo, for some reason… Fixed a typo which would’ve raised a TypeError in main.py Made it so the second button shuts down the Pi safely Wrote another entry in JOURNAL.md , where I soldered and tested the prototype PCBs I ordered from JLCPCB"}, {"post_id": 30358, "ts": "2026-07-17T20:44:15Z", "hours": 0.6842, "text": "JOURNAL.md new entries! Added some entries for the 7th and 8th of July, where I delved into PCB making from scratch! As well as an entry for the 17th of July, when I received my first PCBs - spoiler alert: they do not work as intended Made a lot of mistakes, but managed to make a rather good first try, which will hopefully lead to a better final PCB (i’m working on that) This time I’ll check the DFM before ordering Hope you appreciate my storytelling!"}, {"post_id": 29013, "ts": "2026-07-15T17:41:24Z", "hours": 1.1994, "text": "JOURNAL.md started + Hardware time! Created a JOURNALmd file Documented everything I did on the 5th and 6th of July, with photos and some explanations as to what I was doing and trying to achieve To make it short: prototyping and creating some visuals for the OLED screen/UI, as well as assembling everything together. Connected README.md to JOURNAL.md You can read it here"}, {"post_id": 28941, "ts": "2026-07-15T15:42:24Z", "hours": 0.8244, "text": "Finishing up the software part Took on the task of making my code more readable, and as such easier to debug Created a AssistantDisplay class to better manage the OLED threads - way cleaner now Put sentence_buffer() in ai.py and get_lastest_recordings() in listener.py , now the only function in main.py is main() . Clean! Squeezed a bit more performance out of the faster-whisper model by setting cpu_threads to 4 and beam_size to 1, even if we’ll lose a tiny bit in quality. Still a good tradeoff Detected an avoided a critical issue: if glob detected the file while it was being written to and passed it on to faster-whisper , then it would be corrupted and be mashed garbage. So I read some documentation about the queue module and used that, it’s way better and easier in the end."}, {"post_id": 28791, "ts": "2026-07-15T09:10:34Z", "hours": 0.9594, "text": "Faster response speed thanks to streaming audio Ok so ollama ’s ChatResponse class allows, when creating an instance of it, to write stream = True . So I could stream the outputted response directly into Piper TTS and into the speakers. Except it would sound very weird, very robotic-like since the chatbot outputs tokens, not words. I then created a function called sentence_buffer() that seperates them into a list of words, that are then given to Piper TTS in speaker.py Then I used a library called pyaudio to stream the Piper TTS output into the speakers! it’s actually just a Python wrapper for a C library called portaudio , so I ran into a LOT of dependency issues, but that’s a battle for another day. Moved a few functions that were in main.py into other files for better management Other small modifications"}, {"post_id": 28461, "ts": "2026-07-14T18:30:50Z", "hours": 1.0342, "text": "Threading implementation for better speed Today I decided to learn about the python module threading , and realized it wasn’t that difficult to implement in my project. The issue was: when I ran oled(\"thinking_animation.gif\") it ran sequentially, so the whole script had to wait for the animation to finish, which obviously can’t happen. So I created different threads for each animation/png, and made a “switch”, better known as a threading.Event() which enabled me to manage the “workers” way better (sorry, i’m getting used to the vocabulary) Also I added comments everywhere in main.py for better explainability. Finally I adjusted the code in OLED.py with the switch implemented and added some small user-friendly checks throughout my project. Hopefully everything works! Note: sadly it will be difficult to use threads in the rest of the code, since the process is, at its core, sequential. Faster-whisper needs audio to proceed, the ollama AI chatbot needs a prompt to continue, etc…"}, {"post_id": 27948, "ts": "2026-07-13T21:51:29Z", "hours": 1.2056, "text": "README.md first commit Spent a LOT of time on the README.md, I want my project to be reusable so made a good How to install section, there are tons of different commands to run to ensure it works first try Didn’t write anything in the Hardware section, but will soon. (my first PCBs don’t work yet) In OLED.py : it now supports gifs, which is great because of Piskel which can turn simple animations into gifs. Made some visuals in Piskel for the screen ( thinking_animation.gif and button_pressed.gif ) Simplified drastically listener.py for future debugging. One of the biggest issues with this project so far: the difficulty to test it! I don’t have all the required materials yet. I might use the pytest module? we’ll see"}, {"post_id": 27692, "ts": "2026-07-13T14:03:16Z", "hours": 1.3119, "text": "Linking everything together Updated the project structure with more python scripts so that it now looks like this: Tiny_Jarvis/ ├── .venv/ ├── piper_voices/ ├── recordings/ # New ├── assets/ # New ├── ai.py ├── listener.py # New ├── main.py ├── OLED.py ├── speaker.py ├── transcriber.py # New ├── README.md └── requirements.txt What’s new: Added an assets/ folder for the OLED screen visuals Added a recordings/ folder for the audio captured by the mic when the user is speaking Created listener.py : actively listens for a button press; when pressed, records audio through the usb mic until the button is released, then that audio is sent to transcriber.py Created transcriber.py : takes that audio and passes it as input into faster-whisper to “translate” into text ! And finally, first time linking everything together in main.py : there is still a lot to be done if we are talking speed/efficiency, but the core pipeline is done. The user presses a button to talk, releases it when finished, the audio is captured and translated into text by faster-whisper , then that text is given as prompt to the AI chatbot (like Qwen3-0.6B . The response is then turned into a voice using Piper TTS and outputted through the speaker! Possible future implementation of the threading module to make it faster, even though I have no idea how it works."}, {"post_id": 27640, "ts": "2026-07-13T12:18:46Z", "hours": 1.9014, "text": "Initializing the project Created a virtual environment .venv/ so that all necessary python modules and packages are cleanly installed together. Created a requirements.txt , where I put all the python modules I import in the project so that people can reuse it. Created a piper_voices/ directory and downloaded a medium voice via python -m piper.download_voices en_US-lessac-medium Created 4 different files: Tiny_Jarvis/ ├── ai.py # the AI chatbot ├── main.py # the main script ├── OLED.py # The visuals! └── speaker.py # the audio Wrote the basic code for each of those files. For the moment, I concentrate on making importable functions that function indepedently, and will link them together in main.py later on. Created a README.md . It’s empty for now, will fill it in later."}]...
|
Title: Tiny Jarvis by @louisd | Stardance
Devlogs Title: Tiny Jarvis by @louisd | Stardance
Devlogs:
Initializing the project Created a virtual environment .venv/ so that all necessary python modules and packages are cleanly installed together. Created a requirements.txt , where I put all the python modules I import in the project so that people can reuse it. Created a piper_voices/ directory and downloaded a medium voice via python -m piper.download_voices en_US-lessac-medium Created 4 different files: Tiny_Jarvis/ ├── ai.py # the AI chatbot ├── main.py # the main script ├── OLED.py # The visuals! └── speaker.py # the audio Wrote the basic code for each of those files. For the moment, I concentrate on making importable functions that function indepedently, and will link them together in main.py later on. Created a README.md . It’s empty for now, will fill it in later.
Linking everything together Updated the project structure with more python scripts so that it now looks like this: Tiny_Jarvis/ ├── .venv/ ├── piper_voices/ ├── recordings/ # New ├── assets/ # New ├── ai.py ├── listener.py # New ├── main.py ├── OLED.py ├── speaker.py ├── transcriber.py # New ├── README.md └── requirements.txt What’s new: Added an assets/ folder for the OLED screen visuals Added a recordings/ folder for the audio captured by the mic when the user is speaking Created listener.py : actively listens for a button press; when pressed, records audio through the usb mic until the button is released, then that audio is sent to transcriber.py Created transcriber.py : takes that audio and passes it as input into faster-whisper to “translate” into text ! And finally, first time linking everything together in main.py : there is still a lot to be done if we are talking speed/efficiency, but the core pipeline is done. The user presses a button to talk, releases it when finished, the audio is captured and translated into text by faster-whisper , then that text is given as prompt to the AI chatbot (like Qwen3-0.6B . The response is then turned into a voice using Piper TTS and outputted through the speaker! Possible future implementation of the threading module to make it faster, even though I have no idea how it works.
README.md first commit Spent a LOT of time on the README.md, I want my project to be reusable so made a good How to install section, there are tons of different commands to run to ensure it works first try Didn’t write anything in the Hardware section, but will soon. (my first PCBs don’t work yet) In OLED.py : it now supports gifs, which is great because of Piskel which can turn simple animations into gifs. Made some visuals in Piskel for the screen ( thinking_animation.gif and button_pressed.gif ) Simplified drastically listener.py for future debugging. One of the biggest issues with this project so far: the difficulty to test it! I don’t have all the required materials yet. I might use the pytest module? we’ll see
Threading implementation for better speed Today I decided to learn about the python module threading , and realized it wasn’t that difficult to implement in my project. The issue was: when I ran oled("thinking_animation.gif") it ran sequentially, so the whole script had to wait for the animation to finish, which obviously can’t happen. So I created different threads for each animation/png, and made a “switch”, better known as a threading.Event() which enabled me to manage the “workers” way better (sorry, i’m getting used to the vocabulary) Also I added comments everywhere in main.py for better explainability. Finally I adjusted the code in OLED.py with the switch implemented and added some small user-friendly checks throughout my project. Hopefully everything works! Note: sadly it will be difficult to use threads in the rest of the code, since the process is, at its core, sequential. Faster-whisper needs audio to proceed, the ollama AI chatbot needs a prompt to continue, etc…
Faster response speed thanks to streaming audio Ok so ollama ’s ChatResponse class allows, when creating an instance of it, to write stream = True . So I could stream the outputted response directly into Piper TTS and into the speakers. Except it would sound very weird, very robotic-like since the chatbot outputs tokens, not words. I then created a function called sentence_buffer() that seperates them into a list of words, that are then given to Piper TTS in speaker.py Then I used a library called pyaudio to stream the Piper TTS output into the speakers! it’s actually just a Python wrapper for a C library called portaudio , so I ran into a LOT of dependency issues, but that’s a battle for another day. Moved a few functions that were in main.py into other files for better management Other small modifications
Finishing up the software part Took on the task of making my code more readable, and as such easier to debug Created a AssistantDisplay class to better manage the OLED threads - way cleaner now Put sentence_buffer() in ai.py and get_lastest_recordings() in listener.py , now the only function in main.py is main() . Clean! Squeezed a bit more performance out of the faster-whisper model by setting cpu_threads to 4 and beam_size to 1, even if we’ll lose a tiny bit in quality. Still a good tradeoff Detected an avoided a critical issue: if glob detected the file while it was being written to and passed it on to faster-whisper , then it would be corrupted and be mashed garbage. So I read some documentation about the queue module and used that, it’s way better and easier in the end.
JOURNAL.md started + Hardware time! Created a JOURNALmd file Documented everything I did on the 5th and 6th of July, with photos and some explanations as to what I was doing and trying to achieve To make it short: prototyping and creating some visuals for the OLED screen/UI, as well as assembling everything together. Connected README.md to JOURNAL.md You can read it here
JOURNAL.md new entries! Added some entries for the 7th and 8th of July, where I delved into PCB making from scratch! As well as an entry for the 17th of July, when I received my first PCBs - spoiler alert: they do not work as intended Made a lot of mistakes, but managed to make a rather good first try, which will hopefully lead to a better final PCB (i’m working on that) This time I’ll check the DFM before ordering Hope you appreciate my storytelling!
Major software update + PCB testing Found out yesterday that Ollama is just the whole UI and simplificator of use for the C library llama.cpp And turns out there’s a python wrapper for that library, llama-cpp-python , which has two advantages over Ollama: Faster Way more flexible, we can get every last bit of performance from the rpi5 So I updated ai.py with this new feature, there are more settings than Ollama for optimizing performance for CPU-only (4 cores) which is great, however I had to download a .gguf from Hugging Face and accidentally ended up being given access to a repository for the model?! so i can now propose changes to that repo, for some reason… Fixed a typo which would’ve raised a TypeError in main.py Made it so the second button shuts down the Pi safely Wrote another entry in JOURNAL.md , where I soldered and tested the prototype PCBs I ordered from JLCPCB
RPI5 OS Switch + Tiny_Jarvis easier to put in place Worst day in my life. Tried to flash a Raspberry Pi OS Lite (64-bit) on the raspberry pi 5 (which btw has an NVMe SSD), and it did NOT go well: First flash using the Imager: didn’t work, nothing happened, the Pi started speaking in freaking morse code Spent an hour trying to decode that morse code according to documentation, thought it was an EEPROM bootloader issue, made a diagnostic card, made a factory reset card, nope. Realized I could plug it through HDMI to my projector; did that: it was asking me for a username. Didn’t have a USB keyboard so couldn’t type it in. Almost threw the Pi out of the window cos I configured all that in the fricking Imager. Realized I was using the Imager from Flathub and not rpi-imager Retried the whole thing with that Imager: still didn’t work. Spent two hours doing the same thing over and over: flashing the card with the Imager, going into the files, editing user-data , cloud-init-ouput.log , etc… realized the Imager wasn’t writing the information in those files but others, booting it up into HDMI, checking the logs, managing to bypass username but not keyboard layout, etc… I EVEN TRIED LEGACY VERSIONS OF THE OS AND CREATING A wpa_supplicant.conf . Atp I was going to crash out but then I checked my rpi-imager version (even though I had updated it) and turns out my laptop just couldn’t get the latest version : it was 1.8.0 , not 2.1.0 (the latest one). Downloaded the newest version, ran it, and it worked. I have officially lost faith in humanity. Anyways I read my README.md and decided that it was getting way too complicated (the installation part) so I pasted that whole part into Kimi K3 and he made me a install.sh which is basically fire since you just run chmod +x install.sh ./install.sh and the whole system-wide-packages-and-dependencies are all installed in the right order, easily. This is tested and proved (i did it with the newly flashed OS).
Error handling time! + bug and dependency fixing Now that I have a clean slate to test my project on, I ran python main.py and somwhow got three errors in a row. Spent an hour adding try s and except Exception as e everywhere to prevent this. Now debugging is way easier and more user-friendly. Fixed some bugs such as ssd1106 not being a real OLED screen part name As well as gpiozero missing the rpi-lgpio library, which needs system-wide packages swig and liblgpio-dev so yh dependency hell. Almost everything should be error-proof now. I tested it, and no errors popped up, just friendly reminders that I2C wasn’t enabled, or that my buttons weren’t detected, or no screen. Update install.sh with these changes, now works perfectly.
Schematic and PCB tweaking Made an entry for today in JOURNAL.md I’ll keep this short, but basically: huge issues with my schematic, electrically incorrect for the most part, some useless components, which then translated into the actual PCB, having to rewire traces manually, making tons of mistakes along the way and spending waay too much time repairing them. Still waiting for the funding request to be approved before I can order these. Huge thanks to M-Mrk in the Slack electronics channel for all his help, he saved me
Added a cooking recipes feature for no reason Created a cooking_helper.py in a cooking/ folder OCR’d half of a cooking book with help from Gemini and put everything in a beautiful recipes.csv Used the csv.DictReader object to access the info and organize it into a list, very useful. Updated main.py so that when the user’s prompt starts with “Cooking”, it takes a random recipe from the csv file (using the random.randint(a, b) function) and returns a formatted sentence with all the info for cooking that recipe. Made this cos I’m really bad at cooking and it could also benefit others, you never know.
PCB + updates on the cooking feature Wrote an entry in JOURNAL.md for today’s work Worked a lot on the PCB in EasyEDA Pro, mostly clearance issues but also a lot of struggling with the GND pour. Updates on the cooking feature: Thought it would be cool to be able to show the ingredients on the OLED screen So updated the AssistantDisplay class and created a neat function to show text using the python library luma.oled Problem is it would go off screen, so I implemented the built-in textwrap module and it can now display 5 lines. Will get to translating everything to english later, promised Anyways if anyone has any recommendations for the PCB don’t hesitate to leave a comment!
Added a cool silkscreen logo Made an entry for the 23rd of July in JOURNAL.md Found and added this logo from The Noun Project . Really cool website btw. This icon clicked with me bc it really represents what Jarvis (or AI chatbots are in general) is, that being SIMULATED intelligence, and makes us remember that’s its all just complex math equations and not real intellect. Fixed some DFM issues, and rerouted a lot of traces, some were going over the mounting holes Tried to make more space for the logo but broke the whole thing and had to Ctrl+z my way out of there (help) Looks cool no?
Upgraded the cooking helper + critical bug fixes Translated the recipes to english - will add more later Fixed a critical issue with initializing and importing different python files, now main.py has the real control of initialization thanks to a listener.init_listener() function. Added a speak(['Ingredients']) in main.py so Tiny_Jarvis will speak the ingredients of the chosen recipe out loud Switched from hardcoding random.randint(0,33) to random.choice(list) way simpler and easier to read, and created a format_cooking_sentence(recipe_object) function so that main.py doesn’t have to manage that, way better Future changes I might implement: apparently Raspberry Pi OS manages audio through the Advanced Linux Sound Architecture (ALSA) which is responsible for the hardware drivers, the audio routing and control, and the low-level utilities such as the commands I often use, such as alsamixer , aplay and arecord So when two python libraries that need to either record audio or output audio call ALSA to do so, it can lead to conflicts. In this case, sounddevice and pyaudio which are both wrappers of the C library PortAudio . So a future change would be only using sounddevice for example, or vice versa. This has another hidden advantage: removing a possibly finnicky dependency and making the whole process smoother, since compiling C on a Raspberry Pi can be difficult at times.
Cleaned up main.py and cooking_helper.py It’s been a while since I last worked on this project, I’m still waiting for my hardware funding request to be approved, which made me lose motivation. But I’m back, so here’s what’s new: I separated the main function in cooking_helper.py Unix-style, so that everything is cleaner and easier to debug or scale (in case the CSV file gets bigger) Now it doesn’t need to open the csv everytime, instead it just opens it once upon startup. In main.py , created an initialize() function which separates the tasks into an easier format. The AssistantDisplay class and the list of recipes is then passed onto the while True loop. The main() function is now much simpler: it calls the initialization function, then in the loop it checks whether there are new recordings thanks to an imported function, if there are not it waits 0.2 seconds before checking again, and if there is then it runs the process_recording() function. Very clean!
New timer feature implemented, plus more Created a handle_prompt() function in main.py to handle any task-specific prompt given by the user. For example: if I say “Play …” or “Set a timer of …” then it will recognize this specific pattern and handle those actions perfectly, and if it’s something else than the AI will just answer it. It’s scalable, so I can add more features in the future, such as “Definition of” or idk (if you have any ideas lemme know in the comments) Created a timer.py file which handles the timer feature, which is sort of complicated but now works (it displays on-screen in real time, which is pretty cool) All in all, main.py is now very clean and readable.
Music handler + system metrics idle screen Time to make Tiny_Jarvis a little more like the real Jarvis…. SYSTEM METRICS SCREEN! Displays in real time: battery life, cpu temperature, current time on the OLED screen. Finished up the Mopidy part of the music player, can’t test it yet sadly (i don’t have access to my rpi5 right now) it was way more difficult than I thought AIM: “Play …” -> searches through free music online database like Youtube music for query and plays the music if it finds it. Added another quirky feature: flip a coin Tell me if you have ideas of other new useful features
“Hey Tiny Jarvis, play Smooth Criminal” mopidy-youtube integrated! and it works! All you have to do is press the button, say out loud “Play (song) …” and it will search for it in Youtube music (FREE MUSIC!!!) and play it. You can then adjust the volume with the rotary encoder, which is satisfying asf. This was one hell of a debugging session, holy I had to search for forked repos on Github that fixed a obscure yt-dlp issue, and somehow it works. Anyways apart from that, i restructured the project code repo entirely, everything is now separated into different sections like firmware and pcb to distinguish hardware from software. New: the install.sh was finally tested and it works perfectly after a few tweaks! woohoo! Oh and finally: rewrote my README.md as recommended by the Stardance guides, and yh I agree it looks better Tell me if you have any other ideas of features to implement
“Hey Tiny Jarvis, what’s going on in the world?” New feature: Tiny Jarvis automatically fetches the news from BBC World, chooses the most impactful headline, reads the articles and generates a summary! This happens in the background, every hour, to ensure that the news is recent. I discovered smth called RSS feeds, which is basically a tool that feeds website updates back to you in the form of XML files. Then I learnt about the feedparser python library, as well as trafilatura , for extracting text from HTML (for getting the text from the articles), which made the job ten times easier. However, this process does take some time: Step 1: script parses the BBC World feed Step 2: local AI chooses between the thirteen daily headlines Step 3: script fetches the associated articles text Step 4: local AI summarizes ALL THREE articles. On a Raspberry Pi 5, obviously, this can take at least 5 minutes. Now for the moment this is a bit biased, because I chose the “Technology” category for the RSS feed 😅 but i’ll add the option to change it later Is this a good feature? Please tell me
“Hey Tiny Jarvis. where’d I put my keys again?” Tiny_Jarvis now has memory ! I’ve implemented a simple sqlite local database in Python to store every question the user asks. (first time doing this ! very satisifying) This means it can help you remember timings, dates, locations… anything! However, this also means that all these cumulatively added memories make the prompt for the AI longer and longer Which is why for the moment it only remembers the last 5 prompts. This may seem like a small amount, but for the most it is sufficient for remembering recent prompts. Should I make it remember more stuff? tell me
Added a Spotify waveform animation This will play on the OLED screen while the AI is speaking out loud. The waveform is generated in real time, randomly, by an algorithm, and displayed through the python library luma.oled Sadly, I still haven’t received funding and can’t continue with the hardware part of this project. I don’t know or understand why the funding keeps getting refused, even though I do all the right things as indicated everytime, and this is very frustratung because I literally went to the lengths of designing my own PCB from scratch, all of this to not get funded. I’m short of ideas for the software part now… still waiting for the funding (2 months btw, 22 demands)...
|
1793386274.5778048
|
1793991074.5778048
|
|
57666
|
Bear Alarm Clock by @BeeY | Stardance
|
BeeY
|
0
|
3.8
|
0
|
[]
|
[{"post_id": 65045, "ts": "202 [{"post_id": 65045, "ts": "2026-09-09T21:32:40Z", "hours": 0.7667, "text": "I’ve finished my case for my alarm! The face is just for show and its a little janky, but it’ll work."}, {"post_id": 63159, "ts": "2026-09-06T20:06:59Z", "hours": 1.3667, "text": "I’m almost finished with my case for my alarm and I think it’s looking pretty cute! I drew on the face to see what it would look like. The face/screen needs to be moved a little but otherwise it’s basically done. :3"}, {"post_id": 62318, "ts": "2026-09-05T16:59:44Z", "hours": 1.6672, "text": "I’m making a bear alarm clock for blare, the ears being the buttons. :3 I’ve made the pcb and started the case. I think it’s going to be really cute!"}]...
|
Title: Bear Alarm Clock by @BeeY | Stardance
Devl Title: Bear Alarm Clock by @BeeY | Stardance
Devlogs:
I’m making a bear alarm clock for blare, the ears being the buttons. :3 I’ve made the pcb and started the case. I think it’s going to be really cute!
I’m almost finished with my case for my alarm and I think it’s looking pretty cute! I drew on the face to see what it would look like. The face/screen needs to be moved a little but otherwise it’s basically done. :3
I’ve finished my case for my alarm! The face is just for show and its a little janky, but it’ll work....
|
1793451019.785005
|
1794055819.785005
|
|
60268
|
Frictionless by @Romomankoo | Stardance
|
Romomankoo
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T17:12:19Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built a modern portfolio website about myself. It features four distinct sections: About, Skills, Projects, and Contact. The hardest thing for me was learning how to use GitHub, but otherwise it all went pretty smoothly. Sometimes I didn’t know how to make certain things (AI helped), BUT all code was written by hand by me. I’m really proud of how it turned out and that I successfully deployed my first project.", "repo": "https://github.com/Romomankoo147/my-website", "demo": "https://romomankoo147.github.io/my-website/#projects"}]...
|
[{"post_id": 65034, "ts": "202 [{"post_id": 65034, "ts": "2026-09-09T20:50:49Z", "hours": 0.2667, "text": "Just fixing stuff"}, {"post_id": 64955, "ts": "2026-09-09T18:07:42Z", "hours": 0.5125, "text": "First time uploading my work started this project before this but came back to tweak few things."}]...
|
Title: Frictionless by @Romomankoo | Stardance
De Title: Frictionless by @Romomankoo | Stardance
Devlogs:
First time uploading my work started this project before this but came back to tweak few things.
Just fixing stuff
Ships:
I built a modern portfolio website about myself. It features four distinct sections: About, Skills, Projects, and Contact. The hardest thing for me was learning how to use GitHub, but otherwise it all went pretty smoothly. Sometimes I didn’t know how to make certain things (AI helped), BUT all code was written by hand by me. I’m really proud of how it turned out and that I successfully deployed my first project....
|
1794045212.779092
|
1794131612.779092
|
|
56532
|
Moderation discord bot by @justnorbert | Stardance
|
justnorbert
|
0
|
2.82
|
0
|
[]
|
[{"post_id": 65019, "ts": "202 [{"post_id": 65019, "ts": "2026-09-09T20:14:40Z", "hours": 0.3894, "text": "a few new commands"}, {"post_id": 63860, "ts": "2026-09-07T20:53:00Z", "hours": 0.2542, "text": "Preparing /help command"}, {"post_id": 62478, "ts": "2026-09-05T20:47:12Z", "hours": 0.9131, "text": "I added some simple commands such as: /serverinfo, /userinfo, /slowmode"}, {"post_id": 59809, "ts": "2026-09-01T19:19:45Z", "hours": 0.4572, "text": "Hi! Today I added a simple /clear command to the bot"}, {"post_id": 59142, "ts": "2026-08-31T19:27:10Z", "hours": 0.8094, "text": "Hi! I’m working on a discord bot that I will seriously use. My goal is to write a moderation bot that will support basic moderation commands, an autoresponder as well as full server logs. Below is the beginning of the project, I hope I will be able to add something interesting soon"}]...
|
Title: Moderation discord bot by @justnorbert | St Title: Moderation discord bot by @justnorbert | Stardance
Devlogs:
Hi! I’m working on a discord bot that I will seriously use. My goal is to write a moderation bot that will support basic moderation commands, an autoresponder as well as full server logs. Below is the beginning of the project, I hope I will be able to add something interesting soon
Hi! Today I added a simple /clear command to the bot
I added some simple commands such as: /serverinfo, /userinfo, /slowmode
Preparing /help command
a few new commands...
|
1793386506.7029467
|
1793991306.7029467
|
|
46405
|
Poolside Cooler :D by @aayanalikhan09 | Stardance
|
aayanalikhan09
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T20:27:13Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a pool cooler that floats in the water and can act as in-pool storage for your drinks! This makes it easy to access, easy to keep drinks cool, and, after all the ice and drinks are gone, a fun floating object to make as fun as you wish! Unfortunately, I couldn’t test it myself due to certain restrictions, but all files are publicly available for those who wish to test it out! If you do end up printing this - let me know! I want to see what you guys make!", "repo": "https://github.com/aayanalikhan09-hash/Pool-Cooler", "demo": ""}]...
|
[{"post_id": 65017, "ts": "202 [{"post_id": 65017, "ts": "2026-09-09T20:13:05Z", "hours": 3.8981, "text": "i know its kind of abrupt - but thats it for this cooler i made this cooler in cad and printed it and didnt have the money nor time for a pool noodle so im leaving it here i have attached the makerworld link here if you want to support the model in some way or wish to print it yourself - https://makerworld.com/en/models/3281187-poolside-drinks-cooler-6-pack"}, {"post_id": 44838, "ts": "2026-08-10T21:18:25Z", "hours": 1.5169, "text": "I’m making a pool drinks cooler for a 6-pack of any canned drink! Thought this would be a cool project to make so I’m making it for Stardance"}]...
|
Title: Poolside Cooler :D by @aayanalikhan09 | Sta Title: Poolside Cooler :D by @aayanalikhan09 | Stardance
Devlogs:
I’m making a pool drinks cooler for a 6-pack of any canned drink! Thought this would be a cool project to make so I’m making it for Stardance
i know its kind of abrupt - but thats it for this cooler i made this cooler in cad and printed it and didnt have the money nor time for a pool noodle so im leaving it here i have attached the makerworld link here if you want to support the model in some way or wish to print it yourself - https://makerworld.com/en/models/3281187-poolside-drinks-cooler-6-pack
Ships:
I made a pool cooler that floats in the water and can act as in-pool storage for your drinks! This makes it easy to access, easy to keep drinks cool, and, after all the ice and drinks are gone, a fun floating object to make as fun as you wish! Unfortunately, I couldn’t test it myself due to certain restrictions, but all files are publicly available for those who wish to test it out! If you do end up printing this - let me know! I want to see what you guys make!...
|
1794020141.9433541
|
1794106541.9433541
|
|
60095
|
A Minimalist's Homepage by @thewildchip | Star A Minimalist's Homepage by @thewildchip | Stardance...
|
thewildchip
|
0
|
6.61
|
0
|
[]
|
[{"post_id": 65014, "ts": "202 [{"post_id": 65014, "ts": "2026-09-09T20:10:02Z", "hours": 0.3344, "text": "F*ck React – Part 1: A Minimalist’s finds Hugo + 渋い View the live site · Source Code (clickbait title haha) I found that interesting because I thought personal pages had to be flashy and have trending effects. For me, that was the barrier to publishing my own website, as I absolutely hate JS and these frontend libraries (nothing against people who love such things). This led me to find the best static site generator for my needs: Hugo , paired with this template – shoutout to ntk148v for this amazing 🪄 minimal theme. I found Karpathy’s point of view (read Part 0 ) interesting because I thought personal pages had to be flashy and have trending effects. For me, that was the barrier to publishing my own website, as I absolutely hate JS and these frontend libraries (nothing against people who love such things). This led me to find the best static site generator for my needs: Hugo , paired with this template – shoutout to ntk148v for this amazing 🪄 minimal theme. One of Hugo’s biggest benefits is that you can edit your content using Markdown files in /content/ . Theme customizations are also easy, as you only need to edit /assets/css/custom.css to override the default styles in /assets/css/main.css . Layouts can be customized in /layouts/ , while further configuration can be changed in hugo.toml . After that, I roughly designed (picture below) how I wanted the website to look and customized the theme and layout with the assistance of Hermes , and of course filled in the content myself. For the colors, I took inspiration from Nous Research . I also added separate pages for my CV (have not uploaded the public version yet), contact, and writings. Deploying with GitHub Pages is simple, as every push to main triggers the GitHub Actions workflow automatically and Hugo builds the site."}, {"post_id": 64999, "ts": "2026-09-09T19:32:03Z", "hours": 6.2747, "text": "F * ck React – Part 0: Beginning Of A Minimalist’s Homepage View the live site · Source Code (clickbait title haha) Anyone who is interested in AI (sorry for bringing up this word) knows Andrej Karpathy. While reading through his homepage (last visited: 09/09/26), I stumbled upon this paragraph: 0 frameworks were used to make this simple responsive website because I am becoming seriously allergic to 500-pound websites. This one is pure HTML and CSS in two static files and that’s it."}]...
|
Title: A Minimalist's Homepage by @thewildchip Title: A Minimalist's Homepage by @thewildchip | Stardance
Devlogs:
F * ck React – Part 0: Beginning Of A Minimalist’s Homepage View the live site · Source Code (clickbait title haha) Anyone who is interested in AI (sorry for bringing up this word) knows Andrej Karpathy. While reading through his homepage (last visited: 09/09/26), I stumbled upon this paragraph: 0 frameworks were used to make this simple responsive website because I am becoming seriously allergic to 500-pound websites. This one is pure HTML and CSS in two static files and that’s it.
F*ck React – Part 1: A Minimalist’s finds Hugo + 渋い View the live site · Source Code (clickbait title haha) I found that interesting because I thought personal pages had to be flashy and have trending effects. For me, that was the barrier to publishing my own website, as I absolutely hate JS and these frontend libraries (nothing against people who love such things). This led me to find the best static site generator for my needs: Hugo , paired with this template – shoutout to ntk148v for this amazing 🪄 minimal theme. I found Karpathy’s point of view (read Part 0 ) interesting because I thought personal pages had to be flashy and have trending effects. For me, that was the barrier to publishing my own website, as I absolutely hate JS and these frontend libraries (nothing against people who love such things). This led me to find the best static site generator for my needs: Hugo , paired with this template – shoutout to ntk148v for this amazing 🪄 minimal theme. One of Hugo’s biggest benefits is that you can edit your content using Markdown files in /content/ . Theme customizations are also easy, as you only need to edit /assets/css/custom.css to override the default styles in /assets/css/main.css . Layouts can be customized in /layouts/ , while further configuration can be changed in hugo.toml . After that, I roughly designed (picture below) how I wanted the website to look and customized the theme and layout with the assistance of Hermes , and of course filled in the content myself. For the colors, I took inspiration from Nous Research . I also added separate pages for my CV (have not uploaded the public version yet), contact, and writings. Deploying with GitHub Pages is simple, as every push to main triggers the GitHub Actions workflow automatically and Hugo builds the site....
|
1793641659.5118556
|
1794246459.5118556
|
|
29361
|
ddos tool by @ascpixi | Stardance
|
ascpixi
|
1
|
53.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T20:13:32Z", "hours": 53.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I ermmm submitted this to test if the ship flow in stardance works :-)", "repo": "https://github.com/ascpixi/claudec", "demo": "https://vercel.com"}]...
|
[{"post_id": 65012, "ts": "202 [{"post_id": 65012, "ts": "2026-09-09T20:08:33Z", "hours": 52.7667, "text": "This is a test devlog. It is a really good devlog. I am a big fan of logging my dev"}]...
|
Title: ddos tool by @ascpixi | Stardance
Devlogs: Title: ddos tool by @ascpixi | Stardance
Devlogs:
This is a test devlog. It is a really good devlog. I am a big fan of logging my dev
Ships:
I ermmm submitted this to test if the ship flow in stardance works :-)...
|
1794019960.2707179
|
1794106360.2707179
|
|
14584
|
pdf-tools by @ahmoin | Stardance
|
ahmoin
|
0
|
2.15
|
0
|
[]
|
[{"post_id": 6501, "ts": "2026 [{"post_id": 6501, "ts": "2026-06-10T22:31:37Z", "hours": 2.1475, "text": "a website that provides a PDF toolkit that runs entirely client-side using WebAssembly, only the AI merge feature sends extracted page text to a server for planning. picked mupdf as the PDF engine since it compiles to WASM and covers everything needed: merging, splitting, rotating, page manipulation, and rendering to images. getting mupdf to work with Next.js took some configuration. it uses top level await for WASM initialisation, so webpack needed asyncWebAssembly and topLevelAwait experiments enabled. also had to stub out Node.js built-ins (fs, path, module, etc.) for the browser bundle since mupdf conditionally imports them in Node environments. Next.js uses Turbopack by default but I couldn’t get it working so I moved to webpack via the –webpack flag. a key detail with mupdf was the buffer copy pattern. buf.asUint8Array() returns a view into the WASM heap, not a real JS buffer. passing it directly to a Blob gives a corrupted or empty file. had to copy the bytes out first with new Uint8Array(src.byteLength). features built: merge: combines multiple PDFs, with an optional AI instruction field that sends extracted page text to Gemini 2.5 Flash via Vercel AI Gateway and gets back a structured page plan split: extracts every page into its own PDF, downloaded as a ZIP rotate: rotates all or specific pages by 90/180/270 degrees remove pages: deletes specific pages by number or range (1, 3, 5-7, etc.) extract pages: saves specific pages as a new PDF pdf to images: renders each page as a PNG at 2x scale, downloaded as a ZIP UI is a resizable panel layout, tools on the left and PDF preview iframe on the right. on mobile it stacks vertically. tool picker is a list of items, clicking one shows that tool’s upload UI and action button. button label changes per tool (“merge 3 PDFs”, “split PDF”, etc.) https://pdf.ahmoin.com"}]...
|
Title: pdf-tools by @ahmoin | Stardance
Devlogs:
Title: pdf-tools by @ahmoin | Stardance
Devlogs:
a website that provides a PDF toolkit that runs entirely client-side using WebAssembly, only the AI merge feature sends extracted page text to a server for planning. picked mupdf as the PDF engine since it compiles to WASM and covers everything needed: merging, splitting, rotating, page manipulation, and rendering to images. getting mupdf to work with Next.js took some configuration. it uses top level await for WASM initialisation, so webpack needed asyncWebAssembly and topLevelAwait experiments enabled. also had to stub out Node.js built-ins (fs, path, module, etc.) for the browser bundle since mupdf conditionally imports them in Node environments. Next.js uses Turbopack by default but I couldn’t get it working so I moved to webpack via the –webpack flag. a key detail with mupdf was the buffer copy pattern. buf.asUint8Array() returns a view into the WASM heap, not a real JS buffer. passing it directly to a Blob gives a corrupted or empty file. had to copy the bytes out first with new Uint8Array(src.byteLength). features built: merge: combines multiple PDFs, with an optional AI instruction field that sends extracted page text to Gemini 2.5 Flash via Vercel AI Gateway and gets back a structured page plan split: extracts every page into its own PDF, downloaded as a ZIP rotate: rotates all or specific pages by 90/180/270 degrees remove pages: deletes specific pages by number or range (1, 3, 5-7, etc.) extract pages: saves specific pages as a new PDF pdf to images: renders each page as a PNG at 2x scale, downloaded as a ZIP UI is a resizable panel layout, tools on the left and PDF preview iframe on the right. on mobile it stacks vertically. tool picker is a list of items, clicking one shows that tool’s upload UI and action button. button label changes per tool (“merge 3 PDFs”, “split PDF”, etc.) https://pdf.ahmoin.com...
|
1794070161.558078
|
1794674961.558078
|
|
58879
|
Disco(elysium) alarm by @reaous | Stardance
|
reaous
|
0
|
6.21
|
0
|
[]
|
[{"post_id": 65008, "ts": "202 [{"post_id": 65008, "ts": "2026-09-09T19:55:37Z", "hours": 5.5317, "text": "Disco elysium alarm - Had to reqire the schematics since i messed it up last time , and then did some PCB silk Screen art !"}, {"post_id": 62864, "ts": "2026-09-06T12:15:11Z", "hours": 0.6833, "text": "Disco elysium-esque Alarm : So this is my first devlog , and i designed the alarm clock and what the theme was(retrofuturistic artsy ), where the screens should be and things , i posted the refernce frame here so go through it if you guys wanna ! nextly i will go through the pcb documentation and then build the pcb in kiCad"}]...
|
Title: Disco(elysium) alarm by @reaous | Stardance Title: Disco(elysium) alarm by @reaous | Stardance
Devlogs:
Disco elysium-esque Alarm : So this is my first devlog , and i designed the alarm clock and what the theme was(retrofuturistic artsy ), where the screens should be and things , i posted the refernce frame here so go through it if you guys wanna ! nextly i will go through the pcb documentation and then build the pcb in kiCad
Disco elysium alarm - Had to reqire the schematics since i messed it up last time , and then did some PCB silk Screen art !...
|
1793516148.0958602
|
1794120948.0958602
|
|
44160
|
Voxlord by @Praknoor | Stardance
|
Praknoor
|
1
|
36.04
|
20
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-06T14:37:51Z", "hours": 16.0, "multiplier": 1.96, "payout": 20, "blessing": "neutral", "text": "so this is a game i made for fun, custum engine, made it by myself😭, it was made only for fun, hope u like it…. rn now the character selection doesn’t work, but u can skip it by just pressing enter", "repo": "https://github.com/GurnoorLog/Voxelord", "demo": "https://github.com/GurnoorLog/Voxelord/releases/tag/voxlord"}]...
|
[{"post_id": 65005, "ts": "202 [{"post_id": 65005, "ts": "2026-09-09T19:45:42Z", "hours": 4.8894, "text": "yoo gng improved the world, and the sky, added also a launch screen"}, {"post_id": 60324, "ts": "2026-09-02T16:35:46Z", "hours": 3.3658, "text": "improved the world and also added an mcp so u can play with ure llm(why did i add that? idk just for fun 😭😭😭😭😭😭)"}, {"post_id": 49771, "ts": "2026-08-18T18:10:35Z", "hours": 3.0428, "text": "yoo gng i have just added the the clouds, improved the sky, and the water , i am now working on the multiplayer side"}, {"post_id": 48375, "ts": "2026-08-16T18:13:24Z", "hours": 8.7394, "text": "yop gng jsut made improvmnet…made it more optimized, also improved the world lighthingh"}, {"post_id": 41251, "ts": "2026-08-05T10:49:28Z", "hours": 15.6686, "text": "yoo gng….so i made this game just for fun, maybe i will add also some backgroud track"}]...
|
Title: Voxlord by @Praknoor | Stardance
Devlogs:
Title: Voxlord by @Praknoor | Stardance
Devlogs:
yoo gng….so i made this game just for fun, maybe i will add also some backgroud track
yop gng jsut made improvmnet…made it more optimized, also improved the world lighthingh
yoo gng i have just added the the clouds, improved the sky, and the water , i am now working on the multiplayer side
improved the world and also added an mcp so u can play with ure llm(why did i add that? idk just for fun 😭😭😭😭😭😭)
yoo gng improved the world, and the sky, added also a launch screen
Ships:
so this is a game i made for fun, custum engine, made it by myself😭, it was made only for fun, hope u like it…. rn now the character selection doesn’t work, but u can skip it by just pressing enter...
|
1794066719.3607688
|
1794153119.3607688
|
|
41517
|
Jar designer web by @wilmerBailon | Stardance
|
wilmerBailon
|
1
|
11.74
|
142
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-16T08:53:02Z", "hours": 8.0, "multiplier": 16.81, "payout": 142, "blessing": "neutral", "text": "Hello there! This is my first Hack Club proyect. I am proud of been part of the community. I usually do small proyects just for entretainment in my free time and I found this initiative incredible. I am open for any suggestion and new ideas. The proyect is a jar designer web application (ClayForge). My aim was to generate parametrized vase models (.stl) through an instant visual input in 2D that I could print in my 3D printer. The most difficult part was adding the spins only to the external surface, at first it changed all the design. Thanks for your time, I hope you like it.", "repo": "https://github.com/w7714218-sys/ClayForge-Jar-project", "demo": "https://clayforge.dino.icu/"}]...
|
[{"post_id": 64995, "ts": "202 [{"post_id": 64995, "ts": "2026-09-09T19:23:46Z", "hours": 2.7364, "text": "Today I worked on ClayForge based on the feedback I received.I made several changes to simplify the project and make the codebase cleaner and easier to understand. I also reorganized some of the JavaScript, cleaned up the CSS and removed some unnecessary files and configuration.I updated the README as well so it is more concise and focused on the project itself.Overall, today’s work was mainly about taking the feedback into account and cleaning up the project without changing its main functionality.Hope it gets accepted.=)"}, {"post_id": 64809, "ts": "2026-09-09T14:17:06Z", "hours": 1.0067, "text": "I took the feedback into account and spent some time reworking the styling and parts of the logic. I changed the layout, spacing and visual details. I’ll keep refining it as I continue working on it.Hope it gets accepted =)."}, {"post_id": 41587, "ts": "2026-08-05T21:41:17Z", "hours": 0.2703, "text": "It worked!!! :)"}, {"post_id": 41353, "ts": "2026-08-05T14:43:00Z", "hours": 0.56, "text": "I added a spiral effect to the vase generator and spent some time testing different shapes and parameters. The results are looking pretty interesting so far. Next step is to print one on my 3D printer and see how it turns out in real life. Hopefully everything works as expected! :)"}, {"post_id": 41307, "ts": "2026-08-05T13:34:34Z", "hours": 5.4686, "text": "Spent a good amount of time working on ClayForge these days. The project is starting to feel much more solid and usable. I improved the overall interface, cleaned up the design panel, added more controls and kept refining the vase editor.I had some problems with the initial structure of the project but I was able to solve them with a little help of copilot. There’s still plenty to do, but it’s coming together nicely and feels much closer to the tool I have in mind. Looking forward to building on this in the next sessions."}, {"post_id": 40166, "ts": "2026-08-03T15:54:30Z", "hours": 1.7781, "text": "Today I spent some time improving ClayForge and making the project feel more like a real application. I reorganized the code into different files to keep everything cleaner and easier to maintain. I also finished the profile editor on the left side of the screen. It now shows the grid, the vase profile and the control points. The best part is that the control points are now interactive. I can drag them with the mouse and the 3D vase updates instantly, which makes it much easier to experiment with different shapes. Most of today was spent cleaning up the code and fixing small issues after splitting everything into modules, but now the project has a much better foundation for adding more features. Next, I want to add wall thickness, smoother curves and STL export so the vases can be 3D printed."}, {"post_id": 39571, "ts": "2026-08-02T17:03:37Z", "hours": 0.345, "text": "Hello there!!, this is my first project on the community which seems to be a really engaging initiative. Today I started the project and set up the development environment. I created the initial project structure, installed Node.js, and configured npm together with Vite. After that, I added Three.js and built a simple interactive 3D scene with a cube to make sure everything was working as expected. For the next stage of the project, I want to replace the cube with a procedurally generated vase and start working on the main object of the application."}]...
|
Title: Jar designer web by @wilmerBailon | Stardan Title: Jar designer web by @wilmerBailon | Stardance
Devlogs:
Hello there!!, this is my first project on the community which seems to be a really engaging initiative. Today I started the project and set up the development environment. I created the initial project structure, installed Node.js, and configured npm together with Vite. After that, I added Three.js and built a simple interactive 3D scene with a cube to make sure everything was working as expected. For the next stage of the project, I want to replace the cube with a procedurally generated vase and start working on the main object of the application.
Today I spent some time improving ClayForge and making the project feel more like a real application. I reorganized the code into different files to keep everything cleaner and easier to maintain. I also finished the profile editor on the left side of the screen. It now shows the grid, the vase profile and the control points. The best part is that the control points are now interactive. I can drag them with the mouse and the 3D vase updates instantly, which makes it much easier to experiment with different shapes. Most of today was spent cleaning up the code and fixing small issues after splitting everything into modules, but now the project has a much better foundation for adding more features. Next, I want to add wall thickness, smoother curves and STL export so the vases can be 3D printed.
Spent a good amount of time working on ClayForge these days. The project is starting to feel much more solid and usable. I improved the overall interface, cleaned up the design panel, added more controls and kept refining the vase editor.I had some problems with the initial structure of the project but I was able to solve them with a little help of copilot. There’s still plenty to do, but it’s coming together nicely and feels much closer to the tool I have in mind. Looking forward to building on this in the next sessions.
I added a spiral effect to the vase generator and spent some time testing different shapes and parameters. The results are looking pretty interesting so far. Next step is to print one on my 3D printer and see how it turns out in real life. Hopefully everything works as expected! :)
It worked!!! :)
I took the feedback into account and spent some time reworking the styling and parts of the logic. I changed the layout, spacing and visual details. I’ll keep refining it as I continue working on it.Hope it gets accepted =).
Today I worked on ClayForge based on the feedback I received.I made several changes to simplify the project and make the codebase cleaner and easier to understand. I also reorganized some of the JavaScript, cleaned up the CSS and removed some unnecessary files and configuration.I updated the README as well so it is more concise and focused on the project itself.Overall, today’s work was mainly about taking the feedback into account and cleaning up the project without changing its main functionality.Hope it gets accepted.=)
Ships:
Hello there! This is my first Hack Club proyect. I am proud of been part of the community. I usually do small proyects just for entretainment in my free time and I found this initiative incredible. I am open for any suggestion and new ideas. The proyect is a jar designer web application (ClayForge). My aim was to generate parametrized vase models (.stl) through an instant visual input in 2D that I could print in my 3D printer. The most difficult part was adding the spins only to the external surface, at first it changed all the design. Thanks for your time, I hope you like it....
|
1793771566.8774629
|
1794635566.8774629
|
|
59530
|
Tanzil-Portfolio by @itsnotxelite | Stardance
|
itsnotxelite
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T19:14:04Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal website about myself. it include my works and skills. I learned the html, but building the design and animations was challneging for me. sometimes in error i used to ai to answer my questions and asked ai to write a paragraph about myself. You all can check my website.", "repo": "https://github.com/Xelite-00/My-Website", "demo": "https://xelite-00.github.io/My-Website/"}]...
|
[{"post_id": 64981, "ts": "202 [{"post_id": 64981, "ts": "2026-09-09T19:05:38Z", "hours": 4.3378, "text": "I Completed My Website, Check it in “ https://xelite-00.github.io/My-Website/ ”"}]...
|
Title: Tanzil-Portfolio by @itsnotxelite | Stardan Title: Tanzil-Portfolio by @itsnotxelite | Stardance
Devlogs:
I Completed My Website, Check it in “ https://xelite-00.github.io/My-Website/ ”
Ships:
I made a personal website about myself. it include my works and skills. I learned the html, but building the design and animations was challneging for me. sometimes in error i used to ai to answer my questions and asked ai to write a paragraph about myself. You all can check my website....
|
1793775023.852879
|
1794639023.852879
|
|
35012
|
Lotus 5-DOF robotic arm by @ATheChampion | Stardan Lotus 5-DOF robotic arm by @ATheChampion | Stardance...
|
ATheChampion
|
0
|
34.26
|
0
|
[]
|
[{"post_id": 64980, "ts": "202 [{"post_id": 64980, "ts": "2026-09-09T19:05:17Z", "hours": 8.4214, "text": "I designed the rotating base of the arm with screw holes to mount each servo and connected this to a planetary gearbox with a 4:1 transmission ratio so that the first axis is able to have 120kg.cm of torque. Doing this means that it will be more accurate and precise and that the servo will be under less stress and will run at lower temperatures. I also designed the base frame which the servo sits in which has a nice pattern that i named the arm after. I finished by creating the brackets for the planetary gearbox and servo to be connected to the base frame, then recorded all the different parts needed for the robotic arm and completed the design stage."}, {"post_id": 60422, "ts": "2026-09-02T18:45:48Z", "hours": 10.005, "text": "I finished the timing belt system and then designed the head in order to allow a wrist roll mechanism on the end effector. Because of the tiny amount of space available I had to make it as compact as possible using the smallest gears and bevel gears I could find. I then had to make sure I’d actually be able to put everything into place in real life so created all the required gaps in the head. (I also created the toolhead which can actually 3d print but I have no clue where the recording is and can’t remember if I even did record it). After doing this I unfortunately had to stay in hospital for 2 weeks so I lost alot of time and focus but now I’m out and I created a sort of roof for each joint with cantilever clips that will snap into each wall and connect them together. These have holes which will carry cables and give the arm a much sleeker look."}, {"post_id": 45083, "ts": "2026-08-11T11:01:57Z", "hours": 15.8317, "text": "Made parallel linkage mechanism and timing belt system. I started by making the system where a servo can control the end effector and then adding gaps in the linkage bars so that they don’t hit the end of screws. When i finished making that system I tried finding a way for the Feetech SCS0009 to be able to do the wrist roll and I spent quite a few hours on that until I realised it doesn’t even have enough torque so I would need to have a stronger servo for that. I decided on the Feetech STS3215 because that’s what all the other servos are so it would just be easier. I had to have it attached to the main frame and then I looked at some different ways I could control the wrist roll remotely, deciding on a timing belt drive system because parallel linkage mechanism wouldn’t fit. Making the timing belt system was super hard because I had really small amounts of space to work with so needed the smallest parts possible like the pulleys and the timing belts as well as the ball bearings and then have them all be screwed/connected to the main frame."}]...
|
Title: Lotus 5-DOF robotic arm by @ATheChampion | Title: Lotus 5-DOF robotic arm by @ATheChampion | Stardance
Devlogs:
Made parallel linkage mechanism and timing belt system. I started by making the system where a servo can control the end effector and then adding gaps in the linkage bars so that they don’t hit the end of screws. When i finished making that system I tried finding a way for the Feetech SCS0009 to be able to do the wrist roll and I spent quite a few hours on that until I realised it doesn’t even have enough torque so I would need to have a stronger servo for that. I decided on the Feetech STS3215 because that’s what all the other servos are so it would just be easier. I had to have it attached to the main frame and then I looked at some different ways I could control the wrist roll remotely, deciding on a timing belt drive system because parallel linkage mechanism wouldn’t fit. Making the timing belt system was super hard because I had really small amounts of space to work with so needed the smallest parts possible like the pulleys and the timing belts as well as the ball bearings and then have them all be screwed/connected to the main frame.
I finished the timing belt system and then designed the head in order to allow a wrist roll mechanism on the end effector. Because of the tiny amount of space available I had to make it as compact as possible using the smallest gears and bevel gears I could find. I then had to make sure I’d actually be able to put everything into place in real life so created all the required gaps in the head. (I also created the toolhead which can actually 3d print but I have no clue where the recording is and can’t remember if I even did record it). After doing this I unfortunately had to stay in hospital for 2 weeks so I lost alot of time and focus but now I’m out and I created a sort of roof for each joint with cantilever clips that will snap into each wall and connect them together. These have holes which will carry cables and give the arm a much sleeker look.
I designed the rotating base of the arm with screw holes to mount each servo and connected this to a planetary gearbox with a 4:1 transmission ratio so that the first axis is able to have 120kg.cm of torque. Doing this means that it will be more accurate and precise and that the servo will be under less stress and will run at lower temperatures. I also designed the base frame which the servo sits in which has a nice pattern that i named the arm after. I finished by creating the brackets for the planetary gearbox and servo to be connected to the base frame, then recorded all the different parts needed for the robotic arm and completed the design stage....
|
1793404396.934528
|
1794009196.934528
|
|
15743
|
Android Communication Suite by @angad | Stardance
|
angad
|
0
|
1.14
|
0
|
[]
|
[{"post_id": 6498, "ts": "2026 [{"post_id": 6498, "ts": "2026-06-10T22:21:03Z", "hours": 1.1411, "text": "Started the contacts app from scratch today. Two commits in. Data layer The bulk of today was designing how contact data reads and writes. Android’s ContactsContract API is cursor-based, untyped, and imperative (i.e. a pain), so I built an abstraction on top of it. Contacts are structured by being completely unstructured. In essence, the Android contact directory are a list of fields. Each field includes a unique identifier, a MIME type, the contact it aims to be assigned to, and a bunch of data fields (data0..data15). The shape of the data fields are determined by the MIME type. For example, a phone number field could assign data0 to the number itself, and a name field could assign data0 to the given (first) name. Android has the shape of commonly-used fields stored as a bunch of constants. I used that information to build wrappers for all of the common fields. Each field class knows how to parse a cursor and how to write itself to a WriteBuffer. UI Basics I’m using still-experimental Material 3 Expressive APIs. So far, I drew a nice search bar which will animate on open and on close, and currently does nothing else."}]...
|
Title: Android Communication Suite by @angad | Sta Title: Android Communication Suite by @angad | Stardance
Devlogs:
Started the contacts app from scratch today. Two commits in. Data layer The bulk of today was designing how contact data reads and writes. Android’s ContactsContract API is cursor-based, untyped, and imperative (i.e. a pain), so I built an abstraction on top of it. Contacts are structured by being completely unstructured. In essence, the Android contact directory are a list of fields. Each field includes a unique identifier, a MIME type, the contact it aims to be assigned to, and a bunch of data fields (data0..data15). The shape of the data fields are determined by the MIME type. For example, a phone number field could assign data0 to the number itself, and a name field could assign data0 to the given (first) name. Android has the shape of commonly-used fields stored as a bunch of constants. I used that information to build wrappers for all of the common fields. Each field class knows how to parse a cursor and how to write itself to a WriteBuffer. UI Basics I’m using still-experimental Material 3 Expressive APIs. So far, I drew a nice search bar which will animate on open and on close, and currently does nothing else....
|
1793544695.6723666
|
1794149495.6723666
|
|
57121
|
Rustify by @brny | Stardance
|
brny
|
0
|
3.67
|
0
|
[]
|
[{"post_id": 64977, "ts": "202 [{"post_id": 64977, "ts": "2026-09-09T18:53:48Z", "hours": 0.5731, "text": "cout, or idk how you print strings i lost my sticky streak new feature just dropped you can now use simple cout statements but with one catch. the cout statement has to not have any spaces and be structured like cout « “foo” « endl; future goals: vector support function calling support string support thanks for reading this short devlog 1x bonus meme included in the screenshots in the screenshot below, all the commented code is features that will be implemented soon in the future."}, {"post_id": 63798, "ts": "2026-09-07T19:17:49Z", "hours": 0.3519, "text": "data types are fun a devlog a day keeps my streak alive whats up rust programmers who are looking to rewrite everything in rust. some new features just dropped that will make your lives much easier. (not guaranteed) new rustify features: support for booleans support for doubles support for floats support for bool, double and float functions future goals: cout && cin support support for calling functions note: this project is still in development and is lacking a lot of features. thanks for reading this short little devlog screenshot 1: code that was converted from c++, screenshot 2: original c++ code"}, {"post_id": 63181, "ts": "2026-09-06T20:53:06Z", "hours": 0.3583, "text": "rust > c++ a devlog a day keeps the heidi away whats up crustaceans (or c++ devs), some slight changes dropped to rustify the new changes include: functions (half working) a very nice looking and updated readme this readme includes instructions on how to build it or download it and the lore behind it some interesting lore behind this project as this devlog is very short Q: what is the inspiration behind this A: i made this because of the meme that rust developers rewrite c++ in rust Q: can i use this in production A: this is not made to be used standalone in production but it could work really well if used with an ai agent, might even write a opencode or claude skill for it. Q: can this convert c code? A: no thanks for reading this devlog screenshot of the new readme"}, {"post_id": 62462, "ts": "2026-09-05T20:21:19Z", "hours": 0.3319, "text": "small devlog a devlog a day keeps the orpheus away really small devlog, i just wanted to publish today’s one new changes: begin work on handling vectors remove completed todo items add a new test c++ file future goals: vector handling handling cout handling cin thanks for reading this devlog screenshot of the new file being converted, the compile errors arent a bad thing they are just reminders that you need to manually fix the code."}, {"post_id": 61657, "ts": "2026-09-04T17:58:29Z", "hours": 0.5361, "text": "new rustify feature! new rustify feature just dropped now, instead of having comments for unkown keywords e.g // UNKNOWN KEYWORD std::foo() they are replaced with compile errors e.g compile_error!(\"UNKNOWN KEYWORD std::foo()); this makes it easier to catch unknown keywords in large codebases and cancels the auto-compilation at the end. this is useful as the code may be broken if its missing a function or an integer the code is now also compiled at the end and the executable is placed next to the rust source file to-do list: ability to call functions std::cout support thank you for reading this devlog screenshot of the converter compiling the code and the compile errors doing their thing"}, {"post_id": 61054, "ts": "2026-09-03T19:22:54Z", "hours": 0.3608, "text": "devlog time! ok, this is a short devlog as i just wanted to get one out for the day new features: support for code in the comments support for void functions current todo-list: change comments regarding errors in the code to compile errors when detecting specific keywords, set a boolean to true that signifies that it requires a library be able to call functions from the converted code even though its really short, thanks for reading it screenshot of the converted code below"}, {"post_id": 60188, "ts": "2026-09-02T12:45:59Z", "hours": 0.6044, "text": "another day, another quick devlog Lots of new additions have just dropped for rustify that is going to make converting c++ code into rust easier. New features include: Support for integers Support for functions Support for returning Other, smaller changes in the code: Instead of reading directly from a vector, an iterator is being read, this allows for more flexibility with the code. Goals for the future: Verify C++ code before converting Call rustc when finished Support for vectors, strings and booleans Support for calling functions Support for cout, cerr, cin and endl Support for some other basic libraries I know this is a short devlog, but thank you for reading it. Image of the process and the converted code output"}, {"post_id": 59800, "ts": "2026-09-01T18:54:18Z", "hours": 0.5508, "text": "🤖 must rewrite it in rust new project! rustify is a simple tool that allows the user to rewrite c++ code in rust, with just the click of a button. only works on simple code tho but is blazing fast because it is written in rust. currently, it can: open the c++ source file write to the rust source file parse simple code such as include iostream or int main() color text output! things to implement in the future: support for more c++ keywords call rustc to compile the program call a compiler to verify the c++ program is correct before rewriting adding comments to functions/keywords that are not detected thank you for reading this devlog screenshot of the current version of the program parsing a source file and writing it to a rust source file (visible in second screenshot)"}]...
|
Title: Rustify by @brny | Stardance
Devlogs:
🤖 mu Title: Rustify by @brny | Stardance
Devlogs:
🤖 must rewrite it in rust new project! rustify is a simple tool that allows the user to rewrite c++ code in rust, with just the click of a button. only works on simple code tho but is blazing fast because it is written in rust. currently, it can: open the c++ source file write to the rust source file parse simple code such as include iostream or int main() color text output! things to implement in the future: support for more c++ keywords call rustc to compile the program call a compiler to verify the c++ program is correct before rewriting adding comments to functions/keywords that are not detected thank you for reading this devlog screenshot of the current version of the program parsing a source file and writing it to a rust source file (visible in second screenshot)
another day, another quick devlog Lots of new additions have just dropped for rustify that is going to make converting c++ code into rust easier. New features include: Support for integers Support for functions Support for returning Other, smaller changes in the code: Instead of reading directly from a vector, an iterator is being read, this allows for more flexibility with the code. Goals for the future: Verify C++ code before converting Call rustc when finished Support for vectors, strings and booleans Support for calling functions Support for cout, cerr, cin and endl Support for some other basic libraries I know this is a short devlog, but thank you for reading it. Image of the process and the converted code output
devlog time! ok, this is a short devlog as i just wanted to get one out for the day new features: support for code in the comments support for void functions current todo-list: change comments regarding errors in the code to compile errors when detecting specific keywords, set a boolean to true that signifies that it requires a library be able to call functions from the converted code even though its really short, thanks for reading it screenshot of the converted code below
new rustify feature! new rustify feature just dropped now, instead of having comments for unkown keywords e.g // UNKNOWN KEYWORD std::foo() they are replaced with compile errors e.g compile_error!("UNKNOWN KEYWORD std::foo()); this makes it easier to catch unknown keywords in large codebases and cancels the auto-compilation at the end. this is useful as the code may be broken if its missing a function or an integer the code is now also compiled at the end and the executable is placed next to the rust source file to-do list: ability to call functions std::cout support thank you for reading this devlog screenshot of the converter compiling the code and the compile errors doing their thing
small devlog a devlog a day keeps the orpheus away really small devlog, i just wanted to publish today’s one new changes: begin work on handling vectors remove completed todo items add a new test c++ file future goals: vector handling handling cout handling cin thanks for reading this devlog screenshot of the new file being converted, the compile errors arent a bad thing they are just reminders that you need to manually fix the code.
rust > c++ a devlog a day keeps the heidi away whats up crustaceans (or c++ devs), some slight changes dropped to rustify the new changes include: functions (half working) a very nice looking and updated readme this readme includes instructions on how to build it or download it and the lore behind it some interesting lore behind this project as this devlog is very short Q: what is the inspiration behind this A: i made this because of the meme that rust developers rewrite c++ in rust Q: can i use this in production A: this is not made to be used standalone in production but it could work really well if used with an ai agent, might even write a opencode or claude skill for it. Q: can this convert c code? A: no thanks for reading this devlog screenshot of the new readme
data types are fun a devlog a day keeps my streak alive whats up rust programmers who are looking to rewrite everything in rust. some new features just dropped that will make your lives much easier. (not guaranteed) new rustify features: support for booleans support for doubles support for floats support for bool, double and float functions future goals: cout && cin support support for calling functions note: this project is still in development and is lacking a lot of features. thanks for reading this short little devlog screenshot 1: code that was converted from c++, screenshot 2: original c++ code
cout, or idk how you print strings i lost my sticky streak new feature just dropped you can now use simple cout statements but with one catch. the cout statement has to not have any spaces and be structured like cout « “foo” « endl; future goals: vector support function calling support string support thanks for reading this short devlog 1x bonus meme included in the screenshots in the screenshot below, all the commented code is features that will be implemented soon in the future....
|
1793418547.3146532
|
1794023347.3146532
|
|
58307
|
Neural Network by @NerdyItachi | Stardance
|
NerdyItachi
|
0
|
1.34
|
0
|
[]
|
[{"post_id": 64975, "ts": "202 [{"post_id": 64975, "ts": "2026-09-09T18:45:38Z", "hours": 0.3922, "text": "1.34k neruons currently active :D"}, {"post_id": 64949, "ts": "2026-09-09T18:00:52Z", "hours": 0.9436, "text": "Worked on the basic neurons as per for yesterday but lets see today"}]...
|
Title: Neural Network by @NerdyItachi | Stardance
Title: Neural Network by @NerdyItachi | Stardance
Devlogs:
Worked on the basic neurons as per for yesterday but lets see today
1.34k neruons currently active :D...
|
1793904558.2043426
|
1794768558.2043426
|
|
59844
|
Pokemon Battle simulator by @OpNikhil_25 | Stardan Pokemon Battle simulator by @OpNikhil_25 | Stardance...
|
OpNikhil_25
|
0
|
3.75
|
0
|
[]
|
[{"post_id": 64972, "ts": "202 [{"post_id": 64972, "ts": "2026-09-09T18:39:41Z", "hours": 2.655, "text": "#2 > I worked on my Pokemon Battle Simulator today.I added charizard as a second pokemon on my team and made a team list and made the switch option so I can choose a pokemon from my team .I tried switching between Greninja and Charizard in battle , and messing around with various Pokemon stats . I also figured that I need to improve the battle system so that when a Pokemon faints I can switch to another Pokemon"}, {"post_id": 64399, "ts": "2026-09-08T18:59:11Z", "hours": 1.0942, "text": "I’m making a Pokémon Battle Simulator in Python.At the moment I am working on the basic battle system, Pokémon stats, damage calculation, turn based on speed, battle loops, etc."}]...
|
Title: Pokemon Battle simulator by @OpNikhil_25 | Title: Pokemon Battle simulator by @OpNikhil_25 | Stardance
Devlogs:
I’m making a Pokémon Battle Simulator in Python.At the moment I am working on the basic battle system, Pokémon stats, damage calculation, turn based on speed, battle loops, etc.
#2 > I worked on my Pokemon Battle Simulator today.I added charizard as a second pokemon on my team and made a team list and made the switch option so I can choose a pokemon from my team .I tried switching between Greninja and Charizard in battle , and messing around with various Pokemon stats . I also figured that I need to improve the battle system so that when a Pokemon faints I can switch to another Pokemon...
|
1793638385.0373485
|
1794243185.0373485
|
|
29717
|
random twitch bot by @alexqwsa | Stardance
|
alexqwsa
|
0
|
4.38
|
0
|
[]
|
[{"post_id": 64970, "ts": "202 [{"post_id": 64970, "ts": "2026-09-09T18:33:04Z", "hours": 4.3772, "text": "hi look at this image its a demo of what it does it currently does these stuff: >teto –> pulls user data stuff from ch.tetr.io (it currently pulls my username in it but it’ll be changed to be usable later) >swag –> same deal with the >teto command but for swag.nomaakip.xyz main instance doesnt exist anymore but theres a source code for it (same stuff with the username but on swagsocial ) not in the image but why not mention it: buh –> buh and more… (i think) also i started from a example code from the twitch developer documentation just to let you know, but i wanna add more stuff for it and change some stuff also i forgot to make some commits on the repository lmao im sorry"}]...
|
Title: random twitch bot by @alexqwsa | Stardance
Title: random twitch bot by @alexqwsa | Stardance
Devlogs:
hi look at this image its a demo of what it does it currently does these stuff: >teto –> pulls user data stuff from ch.tetr.io (it currently pulls my username in it but it’ll be changed to be usable later) >swag –> same deal with the >teto command but for swag.nomaakip.xyz main instance doesnt exist anymore but theres a source code for it (same stuff with the username but on swagsocial ) not in the image but why not mention it: buh –> buh and more… (i think) also i started from a example code from the twitch developer documentation just to let you know, but i wanna add more stuff for it and change some stuff also i forgot to make some commits on the repository lmao im sorry...
|
1793933768.9914649
|
1794538568.9914649
|
|
37881
|
IntelliML – AI Powered Dataset Management & Au IntelliML – AI Powered Dataset Management & AutoML Platform by @ifwhotcheetoss | Stardance...
|
ifwhotcheetoss
|
0
|
39.01
|
0
|
[]
|
[{"post_id": 64967, "ts": "202 [{"post_id": 64967, "ts": "2026-09-09T18:24:26Z", "hours": 7.1086, "text": "heyy guysss whassupp!! so akot has happened and finally my cleaning of dataset is now very close to be perfect .. rn i just did corrected the cleaning part … just check this out and i need suggestions of how can i make it perfect"}, {"post_id": 58990, "ts": "2026-08-31T15:51:19Z", "hours": 11.7933, "text": "Hey guys whatsupp… hope yall are fine… so as my intelliml is coming to end …there were many errors i faced after the completion of backend during frontend dev and api integartion …. ther eare still some fixes that needs to be done but for now focusing more on better quality of eda and automl charts and reports :)"}, {"post_id": 48123, "ts": "2026-08-16T12:42:35Z", "hours": 4.7389, "text": "hey guyss…. so my IntelliML project is coming to its end there is still some integration left but this is what ive done so far…. the backend was already completed but frontend as well as integration of apis is on its way… for now ive integrated eda and the cleaning of dataset… check this out"}, {"post_id": 43471, "ts": "2026-08-08T19:13:20Z", "hours": 5.1603, "text": "hiiii…..hope yall are doin well…. so for my project… The IntelliML backend is now functionally complete. I implemented dataset upload and versioning, profiling and quality analysis, EDA visualizations, and a full AutoML pipeline with multiple models, cross validation, hyperparameter tuning, and detailed evaluation metrics…ive also added model saving and prediction, experiment tracking and comparison, automated PDF report generation, and APIs for downloading predictions, models, and reports. I also added a dashboard summary API to track datasets, models, experiments, reports, and the best-performing model. I’m now working on improving the PDF reports with richer metadata, visualizations, and a more polished presentation."}, {"post_id": 40630, "ts": "2026-08-04T09:37:06Z", "hours": 3.3611, "text": "Enhanced the AutoML Pipeline heyyy guyss…hope yall are doin great…so ive spent this week improving IntelliML’s AutoML pipeline by making model evaluation more detailed and reliable. Added support for precision, recall, and F1-score alongside accuracy, along with confusion matrices and classification reports for better performance analysis. Implemented 5 fold cross validation to provide more robust evaluation and added feature importance for tree-based models to improve model interpretability. I also integrated GridSearchCV for automatic hyperparameter tuning of Random Forest, measured model training time, and expanded the results to include detailed performance metrics for every trained algorithm. To make the pipeline more robust, I added exception handling so that if one model fails, the remaining models continue training without interrupting the workflow. With these improvements, IntelliML now provides a much more complete and reliable AutoML experience, and I’m now moving on to the visualization phase, started with correlation heatmaps."}, {"post_id": 36878, "ts": "2026-07-29T07:40:40Z", "hours": 1.3322, "text": "##Built the AutoML Training Pipeline hii guysss………hope yall are doin well. ive implemented the first version of IntelliML’s AutoML training pipeline, which automates the end-to-end model training process. The pipeline loads the selected dataset, handles missing values, validates the target column, performs train test splitting and one hot encoding, then trains and evaluates multiple machine learning models, including Decision Tree, Random Forest, Logistic Regression, KNN, and Gaussian Naive Bayes. It compares their performance using accuracy and automatically returns the best performing model, making model selection fast and effortless."}, {"post_id": 36236, "ts": "2026-07-28T05:51:04Z", "hours": 1.3792, "text": "##Data Preprocessing Pipeline hey guyss!! hope ya’ll are doin well, so today ive build the data preprocessing pipeline for IntelliML. It can now automatically clean datasets by handling missing values, removing duplicates, encoding categorical features (Label Encoding and One Hot Encoding), scaling numerical data, and detecting outliers using the IQR method. The processed dataset is generated automatically, so it’s ready for model training without any extra manual work."}, {"post_id": 35715, "ts": "2026-07-27T10:05:31Z", "hours": 1.9989, "text": "heyy guysss.. hope yall are doin well so today I focused on dataset versioning and version comparison in IntelliML. I implemented automatic version creation so every new upload is saved as a separate dataset version, along with APIs to view version history and manage stored versions. I also built the first version of the comparison module, which can compare different dataset versions by highlighting changes in rows, columns, schema, data types, missing values, and duplicate records. These features make it much easier to track how datasets evolve over time and provide a solid foundation for future experiment tracking and MLOps workflows."}, {"post_id": 32408, "ts": "2026-07-21T16:01:53Z", "hours": 0.4597, "text": "I’ve implemented dataset profiling and data quality modules for IntelliMl. I’ve added APIs to analyse uploaded datasets by generating metadata(rows, cols etc).With this I’ve implemented data quality checks for missing values, duplicate rows and class distribution analysis"}, {"post_id": 32264, "ts": "2026-07-21T10:15:34Z", "hours": 1.6828, "text": "I’ve build a backend foundation for IntelliML in which I’ve used fastapi with a clean modular architecture. I’ve implemented dataset uploading functionality with automatic metadata storage, SQLITE, SQLAlchemy. The backend is configured with swagger api docs and I’ve started dataset profiling module to generate statistics"}]...
|
Title: IntelliML – AI Powered Dataset Management & Title: IntelliML – AI Powered Dataset Management & AutoML Platform by @ifwhotcheetoss | Stardance
Devlogs:
I’ve build a backend foundation for IntelliML in which I’ve used fastapi with a clean modular architecture. I’ve implemented dataset uploading functionality with automatic metadata storage, SQLITE, SQLAlchemy. The backend is configured with swagger api docs and I’ve started dataset profiling module to generate statistics
I’ve implemented dataset profiling and data quality modules for IntelliMl. I’ve added APIs to analyse uploaded datasets by generating metadata(rows, cols etc).With this I’ve implemented data quality checks for missing values, duplicate rows and class distribution analysis
heyy guysss.. hope yall are doin well so today I focused on dataset versioning and version comparison in IntelliML. I implemented automatic version creation so every new upload is saved as a separate dataset version, along with APIs to view version history and manage stored versions. I also built the first version of the comparison module, which can compare different dataset versions by highlighting changes in rows, columns, schema, data types, missing values, and duplicate records. These features make it much easier to track how datasets evolve over time and provide a solid foundation for future experiment tracking and MLOps workflows.
##Data Preprocessing Pipeline hey guyss!! hope ya’ll are doin well, so today ive build the data preprocessing pipeline for IntelliML. It can now automatically clean datasets by handling missing values, removing duplicates, encoding categorical features (Label Encoding and One Hot Encoding), scaling numerical data, and detecting outliers using the IQR method. The processed dataset is generated automatically, so it’s ready for model training without any extra manual work.
##Built the AutoML Training Pipeline hii guysss………hope yall are doin well. ive implemented the first version of IntelliML’s AutoML training pipeline, which automates the end-to-end model training process. The pipeline loads the selected dataset, handles missing values, validates the target column, performs train test splitting and one hot encoding, then trains and evaluates multiple machine learning models, including Decision Tree, Random Forest, Logistic Regression, KNN, and Gaussian Naive Bayes. It compares their performance using accuracy and automatically returns the best performing model, making model selection fast and effortless.
Enhanced the AutoML Pipeline heyyy guyss…hope yall are doin great…so ive spent this week improving IntelliML’s AutoML pipeline by making model evaluation more detailed and reliable. Added support for precision, recall, and F1-score alongside accuracy, along with confusion matrices and classification reports for better performance analysis. Implemented 5 fold cross validation to provide more robust evaluation and added feature importance for tree-based models to improve model interpretability. I also integrated GridSearchCV for automatic hyperparameter tuning of Random Forest, measured model training time, and expanded the results to include detailed performance metrics for every trained algorithm. To make the pipeline more robust, I added exception handling so that if one model fails, the remaining models continue training without interrupting the workflow. With these improvements, IntelliML now provides a much more complete and reliable AutoML experience, and I’m now moving on to the visualization phase, started with correlation heatmaps.
hiiii…..hope yall are doin well…. so for my project… The IntelliML backend is now functionally complete. I implemented dataset upload and versioning, profiling and quality analysis, EDA visualizations, and a full AutoML pipeline with multiple models, cross validation, hyperparameter tuning, and detailed evaluation metrics…ive also added model saving and prediction, experiment tracking and comparison, automated PDF report generation, and APIs for downloading predictions, models, and reports. I also added a dashboard summary API to track datasets, models, experiments, reports, and the best-performing model. I’m now working on improving the PDF reports with richer metadata, visualizations, and a more polished presentation.
hey guyss…. so my IntelliML project is coming to its end there is still some integration left but this is what ive done so far…. the backend was already completed but frontend as well as integration of apis is on its way… for now ive integrated eda and the cleaning of dataset… check this out
Hey guys whatsupp… hope yall are fine… so as my intelliml is coming to end …there were many errors i faced after the completion of backend during frontend dev and api integartion …. ther eare still some fixes that needs to be done but for now focusing more on better quality of eda and automl charts and reports :)
heyy guysss whassupp!! so akot has happened and finally my cleaning of dataset is now very close to be perfect .. rn i just did corrected the cleaning part … just check this out and i need suggestions of how can i make it perfect...
|
1793562482.2416356
|
1794167282.2416356
|
|
362
|
My profile by @mr_aditya | Stardance
|
mr_aditya
|
1
|
9.19
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-05T19:17:20Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first real website which I am going to deploy/ship. I made this website so in future when I make new things or get something new I will link that to that, more likely this website is my profile. Nothing else any doubt or have new project contact me!", "repo": "https://github.com/adi-1001/Personal-Website", "demo": "https://adi-1001.vercel.app/"}]...
|
[{"post_id": 64966, "ts": "202 [{"post_id": 64966, "ts": "2026-09-09T18:23:09Z", "hours": 2.1872, "text": "Rewrite the code now. It should be good, the main problem was javascript but now I tweak it little bit it is good."}, {"post_id": 62400, "ts": "2026-09-05T18:57:11Z", "hours": 3.5333, "text": "Finally the comment box is ready and also I edit the website a little bit , structure it well and add animation into there was a bug where the custom mouse pointer was going far away upon hovering but now it is fixed. I use AI help in some part of animation but now it is pretty good. Check the website out!!"}, {"post_id": 61669, "ts": "2026-09-04T18:17:27Z", "hours": 3.3053, "text": "Website is setup now I am trying to a add feedback system so I can Improve it more and get more ideas also its like new to me this feature."}]...
|
Title: My profile by @mr_aditya | Stardance
Devlo Title: My profile by @mr_aditya | Stardance
Devlogs:
Website is setup now I am trying to a add feedback system so I can Improve it more and get more ideas also its like new to me this feature.
Finally the comment box is ready and also I edit the website a little bit , structure it well and add animation into there was a bug where the custom mouse pointer was going far away upon hovering but now it is fixed. I use AI help in some part of animation but now it is pretty good. Check the website out!!
Rewrite the code now. It should be good, the main problem was javascript but now I tweak it little bit it is good.
Ships:
This is my first real website which I am going to deploy/ship. I made this website so in future when I make new things or get something new I will link that to that, more likely this website is my profile. Nothing else any doubt or have new project contact me!...
|
1793958714.9081144
|
1794045114.9081144
|
|
56315
|
3D Physics Simulator by @RajanKC | Stardance
|
RajanKC
|
1
|
6.03
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T15:58:18Z", "hours": 5.0, "multiplier": 2.95, "payout": 16, "blessing": "neutral", "text": "Completed the Project. Please rate it good", "repo": "https://github.com/RajanKCKC/3D-Physics", "demo": "https://rajankckc.github.io/3D-Physics/"}]...
|
[{"post_id": 64953, "ts": "202 [{"post_id": 64953, "ts": "2026-09-09T18:06:46Z", "hours": 0.6258, "text": "Implement drag-and-drop functionality for dynamic objects in the physics simulation"}, {"post_id": 60233, "ts": "2026-09-02T13:53:12Z", "hours": 0.4, "text": "Update README.md for improved project description and gameplay instructions"}, {"post_id": 59654, "ts": "2026-09-01T15:56:34Z", "hours": 0.2697, "text": "Update README.md to provide detailed project description, quick start guide, and features overview"}, {"post_id": 59632, "ts": "2026-09-01T15:33:05Z", "hours": 1.1417, "text": "Refactor HTML structure and enhance CSS styles for improved UI and functionality"}, {"post_id": 59584, "ts": "2026-09-01T14:20:11Z", "hours": 0.8872, "text": "Add control panel for physics settings and object spawning"}, {"post_id": 59067, "ts": "2026-08-31T17:49:25Z", "hours": 1.1167, "text": "Enhance user interaction by adding spawn hint and improving scene setup"}, {"post_id": 58244, "ts": "2026-08-30T16:34:11Z", "hours": 0.5497, "text": "Add lighting setup and enhance ground plane creation in the 3D scene"}, {"post_id": 58197, "ts": "2026-08-30T15:33:37Z", "hours": 1.3747, "text": "Add initial HTML, CSS, and JavaScript files for 3D Physics Simulator"}]...
|
Title: 3D Physics Simulator by @RajanKC | Stardanc Title: 3D Physics Simulator by @RajanKC | Stardance
Devlogs:
Add initial HTML, CSS, and JavaScript files for 3D Physics Simulator
Add lighting setup and enhance ground plane creation in the 3D scene
Enhance user interaction by adding spawn hint and improving scene setup
Add control panel for physics settings and object spawning
Refactor HTML structure and enhance CSS styles for improved UI and functionality
Update README.md to provide detailed project description, quick start guide, and features overview
Update README.md for improved project description and gameplay instructions
Implement drag-and-drop functionality for dynamic objects in the physics simulation
Ships:
Completed the Project. Please rate it good...
|
1793724627.5452065
|
1794588627.5452065
|
|
56753
|
Cyber_OS by @mr_kn5196 | Stardance
|
mr_kn5196
|
0
|
3.18
|
0
|
[]
|
[{"post_id": 64951, "ts": "202 [{"post_id": 64951, "ts": "2026-09-09T18:02:59Z", "hours": 0.8047, "text": "no major changes since im busy with other commitments :( but heres a baby dino and his mom"}, {"post_id": 60656, "ts": "2026-09-03T04:52:15Z", "hours": 0.2939, "text": "just editing the README"}, {"post_id": 59669, "ts": "2026-09-01T16:21:33Z", "hours": 0.6083, "text": "tried to add a trash bin to trash the stickers you dont like but it didnt work :( sadd"}, {"post_id": 59013, "ts": "2026-08-31T16:24:00Z", "hours": 1.4683, "text": "Started WebOS 2( Cyber_OS) theme:cyberpunk added a welcome screen added a power button to turn on the monitor to view the OS added a place where you can paint and add stickers to decorate your OS"}]...
|
Title: Cyber_OS by @mr_kn5196 | Stardance
Devlogs Title: Cyber_OS by @mr_kn5196 | Stardance
Devlogs:
Started WebOS 2( Cyber_OS) theme:cyberpunk added a welcome screen added a power button to turn on the monitor to view the OS added a place where you can paint and add stickers to decorate your OS
tried to add a trash bin to trash the stickers you dont like but it didnt work :( sadd
just editing the README
no major changes since im busy with other commitments :( but heres a baby dino and his mom...
|
1793397424.9619548
|
1794002224.9619548
|
|
58837
|
Deskoo by @itsnotxelite | Stardance
|
itsnotxelite
|
0
|
8.55
|
0
|
[]
|
[{"post_id": 64950, "ts": "202 [{"post_id": 64950, "ts": "2026-09-09T18:01:25Z", "hours": 2.3264, "text": "I am working in the hardware still."}, {"post_id": 64359, "ts": "2026-09-08T17:43:23Z", "hours": 2.4861, "text": "I worked in the Hardware"}, {"post_id": 63729, "ts": "2026-09-07T17:45:39Z", "hours": 2.7206, "text": "i have worked on the Code and The Hardware"}, {"post_id": 63057, "ts": "2026-09-06T17:15:45Z", "hours": 1.0172, "text": "I DECIDED TO PRINT THIS FOR MY DESKOO PROJECT."}]...
|
Title: Deskoo by @itsnotxelite | Stardance
Devlog Title: Deskoo by @itsnotxelite | Stardance
Devlogs:
I DECIDED TO PRINT THIS FOR MY DESKOO PROJECT.
i have worked on the Code and The Hardware
I worked in the Hardware
I am working in the hardware still....
|
1793912110.4007359
|
1794776110.4007359
|
|
48410
|
AeroTrack by @tejaswa | Stardance
|
tejaswa
|
0
|
12.5
|
0
|
[]
|
[{"post_id": 64942, "ts": "202 [{"post_id": 64942, "ts": "2026-09-09T17:54:53Z", "hours": 1.1464, "text": "Breadboards are mid and they ruined my life, i got devorced lost my house, kids, properties, car and everything else cuz of them I wrote a header file for this encoder, Normally thesehigh precision 21 bit encoders use SPI to communicate to the MCU, BUT I SWEAR ON MY LIFE THOSE PADS ARE TOO FKIN SMALL. ISTG THESE ARE THE SMALLEST PADS IVE EVER SEEN HOW IS ONE SUPPOSED TO SOLDER ON THESE I was NOT gonna solder those lil shis w my fat and rusted ass soldering iron, so i instead used 14bit resolution PWM out of the encoder, its not AS precise as the 21 bit but il solder them when im home OH AND THIS IS MY HOSTEL ROOM BTW I HATE IT HERE The consistency of this encoder is perfect tho resolution is consistent (both the stepper and the encoder) I showed yall in the video how consistent it was. Sometimes it floats aound a bit but ik its cuz of the breadboard fkin up the pwm signals whcih are alr prone to interference. Ill fix that tho so need to worry, Ill design everything in a way so that in future its very easy to switch from PWM to SPI Anywyas thats all i did for today, for tmr i have better calibration for motors and when the motors calibrate ill calibrate the encoders too, I havent worked much w header files for C, This is my first time so ill have to learn abt that a lot too"}, {"post_id": 62932, "ts": "2026-09-06T14:00:54Z", "hours": 1.7839, "text": "I love writing clean code I genuinely think one thing im good at is writing clean and structured code, Anyways apart from that, i was able to utilize sensorless homing in my TMC2209 drivers which i very ingeniously picked cuz i totally knew what they were capable of. To be honest i was js surfing da net and found out that u can actually home using these drivers without any external switches, so i was able to save the hassle and wire for that, It was pretty hard getting it running im not gonna lie, With help of chatgpt i was able to figure out why it wasnt working, and in the end i was able to get it to home properly I wired up the GPS use a library for it too and then sent those functions in a different header file so my main file remains clean. I coded a lil GPS_3D return func that gives x y and alt of the GPS which we will be using to aim the yagi to the target. You see the no gps fix message cuz my house walls are pretty thick, these GPS cant get fix inside (my planes expensive GPS cant get it indoors either) Update on my rc plane: Its my last day at home before ill be going to clg and it has not stopped raining for a single day so its wraps for that, I might be able to find a window to test it maybe. Tmr ill be working on getting the motor encoder working, Im still waiting up on my bearings and the wodden staff istg its taking way too long"}, {"post_id": 62003, "ts": "2026-09-05T06:35:03Z", "hours": 1.3983, "text": "MY CUSTOM DIPOLE IS WORKING AND NOTHING BURNED FOR STARTERS MY COAX IS HERE I went back to my dipole because it was WAY easier to solder the wires on stainless steel than it was on aluminum, Kinda bummed out cuz stainless steel velocity factor is higher than Al, So im 80% sure my antenna isnt tuned rn (hasn’t unlocked its full potential) Also i havent tuned my antenna for endpoint factor either. I tested with mavlink in same room and another room the RSSI didnt drop, I will be conducting more experiments today driving around tryna compare both the antennas I will research on how to build a 1:1 or 4:1 balun and make that too if possible, follow this proj and lets figure this blackmagic out together"}, {"post_id": 61492, "ts": "2026-09-04T13:11:15Z", "hours": 1.4667, "text": "OH ITS CHRISTMAS EVERYDAY MY PARTS ARRIVED ITS SUCH A MASSIVE BOX I CANT CONTAIN MYSELF, Im so so so excited thankyou zach thankyou stardance and thanku hackclub for getting me all this As soon as my parcel arrived i hopped on da puter tryna make the stepper go brr When i was starting out surprisingly it was NOT working as intended The stepper was making a LOT of noise and it was just jerky and stalling and had 0 torque, for the life of me i couldn’t figure out what the issue was. TURNS OUT, Claude fkin lied to me and told me wrong way to wire the stepper phase wires, so i had changed the wiring of how the stepper connector initially came with, After my free tokens expired i was like shi i gotta take shi in my own hands, I tried that and it instantly worked The torque was perfect and microstepping was insanely clean Now that this wiring stuff is done, all that remains is i have to figre out a way to get the motor encoder with the motor, i have multiple ideas on how i will do it so follow this project to see more of this in the end i would like to thank hackclub once AGAIN for getting me all this i love yall"}, {"post_id": 59117, "ts": "2026-08-31T19:02:35Z", "hours": 0.55, "text": "Dipole is done I made a 1/2 wave dipole antenna using 14 AWG aluminum wires I recorded 30 mins of work but this job took me 2 total hours to complete For starters i ALMOST disintegrated my 3D printer because of a stupid soda can I forgot i kept it under the arm (the X axis arm that moves up and down) and i didnt realise i kept it there, My first layers were SO trash because of it it was a solid half an hour of troubleshooting till i figured out what the issue was. Thankfully i didnt overtighten my screws so my rails are fine, But i cant say the same about my nozzle My nozzle scraped the bed after i removed the can cuz i set the Z offset too low and i did stop the print but it was lowk a lil late, It still works so thats fine But this stupid 6min print took me 2 Hours of work Anyways, This half wave is made of aluminum 14AWG single cored wire, i used a drill machine to straighten it and then cut 16.75cm pieces ( 2 cm more than that and then i folded the 2 cm part to work as connectors) It looks pretty perfect to me, I hope it works that way too If this doesnt work as expected ill look into building my DIY balun"}, {"post_id": 55412, "ts": "2026-08-27T07:00:55Z", "hours": 0.3097, "text": "Added the MCU and other sensors that will be necessary in the CAD too"}, {"post_id": 50787, "ts": "2026-08-20T05:17:08Z", "hours": 0.6167, "text": "Might get the funding soon I updated the readme with build instructions, rn i didnt add the dipole construction and itll be a long process of trial and error and i wanna provide the final method for construction It makes me vv happy that they actually saw the part where i implemented it in game and appreciated so hats off to them for that Everything is updated now i can apply for funding i think"}, {"post_id": 50301, "ts": "2026-08-19T13:47:02Z", "hours": 0.9167, "text": "MY TRAIN TO HOME IS IN 2 DAYS I cant wait to go home finally away from this fuh ahh clg and work on my projects Anyways i worked on the wiring diagram for the project in figma, wrote the readme and setup the github and i think im ready to req funding now (oh btw 3D prints are not included in the funding) They HAVE to let me on their magazine after this no chance all 3 of my projects dont make it there"}, {"post_id": 50256, "ts": "2026-08-19T12:30:07Z", "hours": 1.1333, "text": "Worked on da project a bit more Refined the 3D model a bit more, thought about the wiring diagram and made a BOM Currently only thing left are the 1m coax cable that because im not home i dont have acess to my radio telemetry so i cant see which connector they use, i did ask my parents to send me a pic but theyre a bit busy so thats on hold The entire project is lokey coming to life and im insanely excited to work on my frist RF project I learned about RF patterns Smith charts and different types of antennas, and i think i wont just stick to 433 yagi, i will be making my own various antennas The good thing is i dont have to spend a fortune on a radio setup as SIK radios that i have currently do have a RSSI meter (i hope they dont get slimed tho so i gotta calculate twice before making)"}, {"post_id": 48192, "ts": "2026-08-16T14:19:27Z", "hours": 1.3589, "text": "Whipped out this lil guy (Bro is NOT little) added motors and removed the curved part and am gonna use a 1/2 dipole for this Researching for this project is insane theres barely any content for 433mhz yagis or directional antennas. This project might be a hard one gng im getting kinda demotivated ngl I decided that ill use bike spokes as reflectors and see if they work. The driven element would be a single cored copper wire made into a makeshift half wave dipole antenna"}, {"post_id": 47688, "ts": "2026-08-15T19:23:33Z", "hours": 1.8169, "text": "They say RF is an engineers worst nightmare How bad could it be This is a custom 433MHz Yagi antenna tracker for my UAV. It uses the Pixhawk’s MAVLink GPS data, a ground-station GPS, and an ESP32 to calculate where the aircraft is and automatically point the Yagi at it using two direct-drive NEMA17 motors with absolute encoders. The whole thing is being built from scratch, including the antenna and tracking system. Today i made a rough 3d model of how the actual antenna would be irl (no impedance matching done yet) along with the rough kinematics of the whole structure Itll be mounted on top of a table with bearings and stepper motors, I might be adding pulleys to it later but i wanna keep cost as low as i can and range as high as i can, No physical limit switches or wonky mechanical stuff needed cuz of the awesome digital encoders A GPS for the GSC so that it knows where its at then ill be implementing compelx math to figure out where to point the antenna Maybe even RF Sims This is a whole new blackmagic territory im stepping into purely for the love of the game."}]...
|
Title: AeroTrack by @tejaswa | Stardance
Devlogs: Title: AeroTrack by @tejaswa | Stardance
Devlogs:
They say RF is an engineers worst nightmare How bad could it be This is a custom 433MHz Yagi antenna tracker for my UAV. It uses the Pixhawk’s MAVLink GPS data, a ground-station GPS, and an ESP32 to calculate where the aircraft is and automatically point the Yagi at it using two direct-drive NEMA17 motors with absolute encoders. The whole thing is being built from scratch, including the antenna and tracking system. Today i made a rough 3d model of how the actual antenna would be irl (no impedance matching done yet) along with the rough kinematics of the whole structure Itll be mounted on top of a table with bearings and stepper motors, I might be adding pulleys to it later but i wanna keep cost as low as i can and range as high as i can, No physical limit switches or wonky mechanical stuff needed cuz of the awesome digital encoders A GPS for the GSC so that it knows where its at then ill be implementing compelx math to figure out where to point the antenna Maybe even RF Sims This is a whole new blackmagic territory im stepping into purely for the love of the game.
Whipped out this lil guy (Bro is NOT little) added motors and removed the curved part and am gonna use a 1/2 dipole for this Researching for this project is insane theres barely any content for 433mhz yagis or directional antennas. This project might be a hard one gng im getting kinda demotivated ngl I decided that ill use bike spokes as reflectors and see if they work. The driven element would be a single cored copper wire made into a makeshift half wave dipole antenna
Worked on da project a bit more Refined the 3D model a bit more, thought about the wiring diagram and made a BOM Currently only thing left are the 1m coax cable that because im not home i dont have acess to my radio telemetry so i cant see which connector they use, i did ask my parents to send me a pic but theyre a bit busy so thats on hold The entire project is lokey coming to life and im insanely excited to work on my frist RF project I learned about RF patterns Smith charts and different types of antennas, and i think i wont just stick to 433 yagi, i will be making my own various antennas The good thing is i dont have to spend a fortune on a radio setup as SIK radios that i have currently do have a RSSI meter (i hope they dont get slimed tho so i gotta calculate twice before making)
MY TRAIN TO HOME IS IN 2 DAYS I cant wait to go home finally away from this fuh ahh clg and work on my projects Anyways i worked on the wiring diagram for the project in figma, wrote the readme and setup the github and i think im ready to req funding now (oh btw 3D prints are not included in the funding) They HAVE to let me on their magazine after this no chance all 3 of my projects dont make it there
Might get the funding soon I updated the readme with build instructions, rn i didnt add the dipole construction and itll be a long process of trial and error and i wanna provide the final method for construction It makes me vv happy that they actually saw the part where i implemented it in game and appreciated so hats off to them for that Everything is updated now i can apply for funding i think
Added the MCU and other sensors that will be necessary in the CAD too
Dipole is done I made a 1/2 wave dipole antenna using 14 AWG aluminum wires I recorded 30 mins of work but this job took me 2 total hours to complete For starters i ALMOST disintegrated my 3D printer because of a stupid soda can I forgot i kept it under the arm (the X axis arm that moves up and down) and i didnt realise i kept it there, My first layers were SO trash because of it it was a solid half an hour of troubleshooting till i figured out what the issue was. Thankfully i didnt overtighten my screws so my rails are fine, But i cant say the same about my nozzle My nozzle scraped the bed after i removed the can cuz i set the Z offset too low and i did stop the print but it was lowk a lil late, It still works so thats fine But this stupid 6min print took me 2 Hours of work Anyways, This half wave is made of aluminum 14AWG single cored wire, i used a drill machine to straighten it and then cut 16.75cm pieces ( 2 cm more than that and then i folded the 2 cm part to work as connectors) It looks pretty perfect to me, I hope it works that way too If this doesnt work as expected ill look into building my DIY balun
OH ITS CHRISTMAS EVERYDAY MY PARTS ARRIVED ITS SUCH A MASSIVE BOX I CANT CONTAIN MYSELF, Im so so so excited thankyou zach thankyou stardance and thanku hackclub for getting me all this As soon as my parcel arrived i hopped on da puter tryna make the stepper go brr When i was starting out surprisingly it was NOT working as intended The stepper was making a LOT of noise and it was just jerky and stalling and had 0 torque, for the life of me i couldn’t figure out what the issue was. TURNS OUT, Claude fkin lied to me and told me wrong way to wire the stepper phase wires, so i had changed the wiring of how the stepper connector initially came with, After my free tokens expired i was like shi i gotta take shi in my own hands, I tried that and it instantly worked The torque was perfect and microstepping was insanely clean Now that this wiring stuff is done, all that remains is i have to figre out a way to get the motor encoder with the motor, i have multiple ideas on how i will do it so follow this project to see more of this in the end i would like to thank hackclub once AGAIN for getting me all this i love yall
MY CUSTOM DIPOLE IS WORKING AND NOTHING BURNED FOR STARTERS MY COAX IS HERE I went back to my dipole because it was WAY easier to solder the wires on stainless steel than it was on aluminum, Kinda bummed out cuz stainless steel velocity factor is higher than Al, So im 80% sure my antenna isnt tuned rn (hasn’t unlocked its full potential) Also i havent tuned my antenna for endpoint factor either. I tested with mavlink in same room and another room the RSSI didnt drop, I will be conducting more experiments today driving around tryna compare both the antennas I will research on how to build a 1:1 or 4:1 balun and make that too if possible, follow this proj and lets figure this blackmagic out together
I love writing clean code I genuinely think one thing im good at is writing clean and structured code, Anyways apart from that, i was able to utilize sensorless homing in my TMC2209 drivers which i very ingeniously picked cuz i totally knew what they were capable of. To be honest i was js surfing da net and found out that u can actually home using these drivers without any external switches, so i was able to save the hassle and wire for that, It was pretty hard getting it running im not gonna lie, With help of chatgpt i was able to figure out why it wasnt working, and in the end i was able to get it to home properly I wired up the GPS use a library for it too and then sent those functions in a different header file so my main file remains clean. I coded a lil GPS_3D return func that gives x y and alt of the GPS which we will be using to aim the yagi to the target. You see the no gps fix message cuz my house walls are pretty thick, these GPS cant get fix inside (my planes expensive GPS cant get it indoors either) Update on my rc plane: Its my last day at home before ill be going to clg and it has not stopped raining for a single day so its wraps for that, I might be able to find a window to test it maybe. Tmr ill be working on getting the motor encoder working, Im still waiting up on my bearings and the wodden staff istg its taking way too long
Breadboards are mid and they ruined my life, i got devorced lost my house, kids, properties, car and everything else cuz of them I wrote a header file for this encoder, Normally thesehigh precision 21 bit encoders use SPI to communicate to the MCU, BUT I SWEAR ON MY LIFE THOSE PADS ARE TOO FKIN SMALL. ISTG THESE ARE THE SMALLEST PADS IVE EVER SEEN HOW IS ONE SUPPOSED TO SOLDER ON THESE I was NOT gonna solder those lil shis w my fat and rusted ass soldering iron, so i instead used 14bit resolution PWM out of the encoder, its not AS precise as the 21 bit but il solder them when im home OH AND THIS IS MY HOSTEL ROOM BTW I HATE IT HERE The consistency of this encoder is perfect tho resolution is consistent (both the stepper and the encoder) I showed yall in the video how consistent it was. Sometimes it floats aound a bit but ik its cuz of the breadboard fkin up the pwm signals whcih are alr prone to interference. Ill fix that tho so need to worry, Ill design everything in a way so that in future its very easy to switch from PWM to SPI Anywyas thats all i did for today, for tmr i have better calibration for motors and when the motors calibrate ill calibrate the encoders too, I havent worked much w header files for C, This is my first time so ill have to learn abt that a lot too...
|
1793969634.6926777
|
1794574434.6926777
|
|
59870
|
BLARE!! by @gemzaidahmad | Stardance
|
gemzaidahmad
|
0
|
0.58
|
0
|
[]
|
[{"post_id": 64936, "ts": "202 [{"post_id": 64936, "ts": "2026-09-09T17:39:24Z", "hours": 0.2667, "text": "Still working on the schematics: I only did about half an hour of work since I’m currently occupied with the firmware for the Macro-pad :3"}, {"post_id": 64333, "ts": "2026-09-08T17:08:10Z", "hours": 0.3167, "text": "I started with the schematics for my alarm clock because I was bored of making the firmware for the Macropad (ik lol). There is not much I did so not much to talk about"}]...
|
Title: BLARE!! by @gemzaidahmad | Stardance
Devlo Title: BLARE!! by @gemzaidahmad | Stardance
Devlogs:
I started with the schematics for my alarm clock because I was bored of making the firmware for the Macropad (ik lol). There is not much I did so not much to talk about
Still working on the schematics: I only did about half an hour of work since I’m currently occupied with the firmware for the Macro-pad :3...
|
1793638401.3560336
|
1794243201.3560336
|
|
15698
|
Health/productivity desk assistant by @zmalkani | Health/productivity desk assistant by @zmalkani | Stardance...
|
zmalkani
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T16:18:21Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a hackpad that will be a desk assistant. To be a good student athlete, balancing schoolwork and practice/nutrition/etc is crucial. This device will have built-in distraction-free pomodoro study sessions, as well as food/water reminders to stay fuelled while focused in on schoolwork.", "repo": "https://github.com/zmalkani/health-productivity-desk-assistant", "demo": ""}]...
|
[{"post_id": 6493, "ts": "2026 [{"post_id": 6493, "ts": "2026-06-10T22:14:30Z", "hours": 2.2722, "text": "I finished my fusion model for the case, as well as my PCB design for my hackpad. Uses 3 switches, an encoder, and an OLED."}]...
|
Title: Health/productivity desk assistant by @zmal Title: Health/productivity desk assistant by @zmalkani | Stardance
Devlogs:
I finished my fusion model for the case, as well as my PCB design for my hackpad. Uses 3 switches, an encoder, and an OLED.
Ships:
I made a hackpad that will be a desk assistant. To be a good student athlete, balancing schoolwork and practice/nutrition/etc is crucial. This device will have built-in distraction-free pomodoro study sessions, as well as food/water reminders to stay fuelled while focused in on schoolwork....
|
1793926533.7221863
|
1794012933.7221863
|
|
59357
|
My first slack bot! by @om_dholariya_od | Stardanc My first slack bot! by @om_dholariya_od | Stardance...
|
om_dholariya_od
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T17:57:43Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my first project which was slack bot. Honestly it took 2 days to make and hours of debugging but the boredom was worth it", "repo": "https://github.com/omdholariyaod-cloud/my-hacky-assistant", "demo": "https://hackclub.enterprise.slack.com/archives/C0P5NE354"}]...
|
[{"post_id": 64925, "ts": "202 [{"post_id": 64925, "ts": "2026-09-09T17:22:15Z", "hours": 0.3175, "text": "I started my first project by creating a slackbot running 24/7"}]...
|
Title: My first slack bot! by @om_dholariya_od | S Title: My first slack bot! by @om_dholariya_od | Stardance
Devlogs:
I started my first project by creating a slackbot running 24/7
Ships:
I made my first project which was slack bot. Honestly it took 2 days to make and hours of debugging but the boredom was worth it...
|
1793962112.27395
|
1794048512.27395
|
|
59264
|
Nexus-OS by @mr_aditya | Stardance
|
mr_aditya
|
0
|
1.21
|
0
|
[]
|
[{"post_id": 64922, "ts": "202 [{"post_id": 64922, "ts": "2026-09-09T17:18:33Z", "hours": 1.21, "text": "Just completed the basic structure. It just lack the javasrcipt to make the window draggable and the cloak running but I added the style regarding this. In next work I will enhance it."}]...
|
Title: Nexus-OS by @mr_aditya | Stardance
Devlogs Title: Nexus-OS by @mr_aditya | Stardance
Devlogs:
Just completed the basic structure. It just lack the javasrcipt to make the window draggable and the cloak running but I added the style regarding this. In next work I will enhance it....
|
1793544453.9059026
|
1794149253.9059026
|
|
60313
|
Astronomy Apod by @SP-Coder | Stardance
|
SP-Coder
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T17:50:05Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A custom browser startup screen I made which features astronomy picture of the day along with a greeting, a search bar and shortcuts for frequently used sites. I built it with Vite, Vanilla JavaScript, and the public NASA APOD API.", "repo": "https://github.com/shreyanshpurohit/astronomy-apod/", "demo": "https://shreyanshpurohit.github.io/astronomy-apod/"}]...
|
[{"post_id": 64920, "ts": "202 [{"post_id": 64920, "ts": "2026-09-09T17:17:37Z", "hours": 5.3842, "text": "I made a custom startup screen for my browser. It fetches wallpaper from NASA API and shows the info about the wallpaper. Its also has shortcuts for most used websites and a url bar from which we can search anything. I hope you like it :)"}]...
|
Title: Astronomy Apod by @SP-Coder | Stardance
De Title: Astronomy Apod by @SP-Coder | Stardance
Devlogs:
I made a custom startup screen for my browser. It fetches wallpaper from NASA API and shows the info about the wallpaper. Its also has shortcuts for most used websites and a url bar from which we can search anything. I hope you like it :)
Ships:
A custom browser startup screen I made which features astronomy picture of the day along with a greeting, a search bar and shortcuts for frequently used sites. I built it with Vite, Vanilla JavaScript, and the public NASA APOD API....
|
1794045221.606441
|
1794131621.606441
|
|
39674
|
LOCK IN by @Emanuela | Stardance
|
Emanuela
|
2
|
32.0
|
451
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T12:22:46Z", "hours": 13.0, "multiplier": 16.8, "payout": 225, "blessing": "neutral", "text": "Since I finished ‘The basic’ of my app well now I got to do some feature. Here I going to list em all: -Random images in the intro screen -Adding tooltips -Adding buttons Add site and Add app -Cue sound for text ‘LOCK IN’ -Pomodoro timer -Guide for Pomodoro Timer and other features -Youtube break music (only pomodoro timer) It was fun making this more than making the app itself. It was really beutiful to see the review of other people on my last ship it gave motivation and new ideas. What I feel the most proud of is the Youtube music break, It was complicated. Really the biggest nightmare after The pomodoro Timer. At one point I ruined the code in the start fuction and I had to ask help to the Ai because there I started having nightmares about this thing. PS. In guide inside the pomodoro timer I left some sites you can use to change the cue sound! It would be cool if someone would check that out :)", "repo": "https://github.com/emanuelaportella09-hub/LOCK-IN", "demo": "https://github.com/emanuelaportella09-hub/LOCK-IN/releases/tag/v1.1.0"}, {"ship_num": 2, "ts": "2026-08-23T20:53:38Z", "hours": 19.0, "multiplier": 11.63, "payout": 226, "blessing": "neutral", "text": "This desktop app was made by me, and it actually helps me lock in, no cap. You enter into the blacklist section the sites or apps you know you shouldn’t be on while working. If you still decide to go on the blacklisted sites or apps, the “LOCK IN” text takes over, forcing you to switch back. Giving accountability, no more unemployed. For this project I had to use Electron, so I learned JavaScript from scratch. Ngl, that was the hardest part. I spent 19 hours on this project, not accounting all the learning. Worth it. Quality-of-life improvement: Now you’ll actually stay locked in while you work, because the app is basically calling you out in real time whenever you start slacking. Here are my 3+ major QoL improvements: Automatic website blocking feature Automatic application blocking feature Configurable timer Persistent data (sites, apps, time, mode) Overlay readable on every background WHAT AM I PROUD OF? Before shipping, I tried out some weird websites like the Epic Games Store website with my friend. I noticed that my logic was straight garbage. I needed to install a dependency called psl in Electron to resolve the issue — that thing gave me the biggest headache of the entire project, hands down.", "repo": "https://github.com/emanuelaportella09-hub/LOCK-IN", "demo": "https://github.com/emanuelaportella09-hub/LOCK-IN/releases/tag/v1.1.0"}]...
|
[{"post_id": 64919, "ts": "202 [{"post_id": 64919, "ts": "2026-09-09T17:15:41Z", "hours": 1.6589, "text": "FINAL DEVLOG I’m sorry that I couldn’t devlog like I should’ve. But since I need to keep my streak, I felt like making a rushed post. I wanted to make one huge last devlog with everything I’ve done in the last 7 hours. First add: I added random images to the ‘intro’ screen, you’ll see images other than the cat now. Second add: I made a choosable cue sound for the LOCK IN text. And the final add was the Pomodoro timer with break music. My stupid mistakes: I lost a lot of time on the preload because I always got something spelled wrong, and since I forgot to open devtools, it was a nightmare. Then, for fileName, I typed __filename instead. Node already uses that for something else. And while I was fixing the blacklist and adding some tooltips, I deleted an important div. Everything was sitting sideways for some reason. The Pomodoro timer made me crazy. The code was hard, but figuring out what to do was harder. I went round in circles debating whether to divide by 4, or use fixed 25-minute blocks, or wondering if the time you write down is the total duration or just the work itself. In the end, this is what I settled on: the number you write down is ONLY the work time, it doesn’t include breaks, so the actual session always takes longer. 25-minute blocks, a short break in between, and a long break at the end. There are some minor tweaks I did, but I think I’m going to write those in the shiplog instead. That’s it. Bye"}, {"post_id": 64301, "ts": "2026-09-08T16:19:37Z", "hours": 4.3261, "text": "I’ve done something and I am in hurry today"}, {"post_id": 62989, "ts": "2026-09-06T15:40:41Z", "hours": 1.975, "text": "I made progress -made some tooltip -and tried adding sound"}, {"post_id": 57360, "ts": "2026-08-29T14:20:31Z", "hours": 0.4761, "text": "MADE SPECIAL VERSION FOR REVIEWER."}, {"post_id": 56211, "ts": "2026-08-27T21:20:41Z", "hours": 4.9447, "text": "PUBLISHED VIDEO GUIDE ON YOUTUBE https://www.youtube.com/watch?v=KYm0ztkC648"}, {"post_id": 53099, "ts": "2026-08-23T15:12:25Z", "hours": 2.03, "text": "FIXING ISSUES I FOUND WITH FRIEND -fixed some websites recognition problem -added addition dialog message at the start of the session -added more paragraph descrition"}, {"post_id": 52581, "ts": "2026-08-22T19:19:33Z", "hours": 9.1644, "text": "I NEED HELP I ’ve done everything, I want some feedback on my work. Should I add more features, like a color palette for the remainder? I added many things and perfected them: -I added a save load sistem for the apps , sites and timer -I added the settings, -I added an Icon -I updated my github -I fixed my blacklist, the warning, and the finish warning If someone will look into my projects and give me some feedback I’ll perhaps decide to add that feature if possible."}, {"post_id": 47008, "ts": "2026-08-14T16:15:27Z", "hours": 6.9775, "text": "PROGRESS I built an intro screen with 3 button ( blacklist settings start ) I only worked on the blacklist in wich you can Add sites that keeps your brain rotting. The settings do not work. and the start session too. WHAT I NEED TO WORK ON almost everything but I am on my way right now my focus is to make it work so I’’ll work twoards the start button but since this is my first time using java script I feel proud of my work"}, {"post_id": 37301, "ts": "2026-07-29T22:18:19Z", "hours": 1.2411, "text": "STARTING OUT I’ve created the base of the project with Electron. I’ve used Ai, it has helped to understand which language to use and helped me understand CSS , JAVASCRIPTS/NODE and HTML concepts. I want to be clear: the code was written word for word by me personally,and the design choices were totally mine I needed to figure out how the reminder for “Lock In” would work, so I worked that on myself. So now I have the word “LOCK IN” covering the screen when I launch the App. WHAT I’VE LEARNED I learned somewhat the base of NODE/JAVASCRIPT and CSS concept like flexbox font family etc. WHAT I AM GOING TO DO NEXT Create an onboarding screen with a personalised blacklist of sites and applications"}]...
|
Title: LOCK IN by @Emanuela | Stardance
Devlogs:
Title: LOCK IN by @Emanuela | Stardance
Devlogs:
STARTING OUT I’ve created the base of the project with Electron. I’ve used Ai, it has helped to understand which language to use and helped me understand CSS , JAVASCRIPTS/NODE and HTML concepts. I want to be clear: the code was written word for word by me personally,and the design choices were totally mine I needed to figure out how the reminder for “Lock In” would work, so I worked that on myself. So now I have the word “LOCK IN” covering the screen when I launch the App. WHAT I’VE LEARNED I learned somewhat the base of NODE/JAVASCRIPT and CSS concept like flexbox font family etc. WHAT I AM GOING TO DO NEXT Create an onboarding screen with a personalised blacklist of sites and applications
PROGRESS I built an intro screen with 3 button ( blacklist settings start ) I only worked on the blacklist in wich you can Add sites that keeps your brain rotting. The settings do not work. and the start session too. WHAT I NEED TO WORK ON almost everything but I am on my way right now my focus is to make it work so I’’ll work twoards the start button but since this is my first time using java script I feel proud of my work
I NEED HELP I ’ve done everything, I want some feedback on my work. Should I add more features, like a color palette for the remainder? I added many things and perfected them: -I added a save load sistem for the apps , sites and timer -I added the settings, -I added an Icon -I updated my github -I fixed my blacklist, the warning, and the finish warning If someone will look into my projects and give me some feedback I’ll perhaps decide to add that feature if possible.
FIXING ISSUES I FOUND WITH FRIEND -fixed some websites recognition problem -added addition dialog message at the start of the session -added more paragraph descrition
PUBLISHED VIDEO GUIDE ON YOUTUBE https://www.youtube.com/watch?v=KYm0ztkC648
MADE SPECIAL VERSION FOR REVIEWER.
I made progress -made some tooltip -and tried adding sound
I’ve done something and I am in hurry today
FINAL DEVLOG I’m sorry that I couldn’t devlog like I should’ve. But since I need to keep my streak, I felt like making a rushed post. I wanted to make one huge last devlog with everything I’ve done in the last 7 hours. First add: I added random images to the ‘intro’ screen, you’ll see images other than the cat now. Second add: I made a choosable cue sound for the LOCK IN text. And the final add was the Pomodoro timer with break music. My stupid mistakes: I lost a lot of time on the preload because I always got something spelled wrong, and since I forgot to open devtools, it was a nightmare. Then, for fileName, I typed __filename instead. Node already uses that for something else. And while I was fixing the blacklist and adding some tooltips, I deleted an important div. Everything was sitting sideways for some reason. The Pomodoro timer made me crazy. The code was hard, but figuring out what to do was harder. I went round in circles debating whether to divide by 4, or use fixed 25-minute blocks, or wondering if the time you write down is the total duration or just the work itself. In the end, this is what I settled on: the number you write down is ONLY the work time, it doesn’t include breaks, so the actual session always takes longer. 25-minute blocks, a short break in between, and a long break at the end. There are some minor tweaks I did, but I think I’m going to write those in the shiplog instead. That’s it. Bye
Ships:
This desktop app was made by me, and it actually helps me lock in, no cap. You enter into the blacklist section the sites or apps you know you shouldn’t be on while working. If you still decide to go on the blacklisted sites or apps, the “LOCK IN” text takes over, forcing you to switch back. Giving accountability, no more unemployed. For this project I had to use Electron, so I learned JavaScript from scratch. Ngl, that was the hardest part. I spent 19 hours on this project, not accounting all the learning. Worth it. Quality-of-life improvement: Now you’ll actually stay locked in while you work, because the app is basically calling you out in real time whenever you start slacking. Here are my 3+ major QoL improvements: Automatic website blocking feature Automatic application blocking feature Configurable timer Persistent data (sites, apps, time, mode) Overlay readable on every background WHAT AM I PROUD OF? Before shipping, I tried out some weird websites like the Epic Games Store website with my friend. I noticed that my logic was straight garbage. I needed to install a dependency called psl in Electron to resolve the issue — that thing gave me the biggest headache of the entire project, hands down.
Since I finished ‘The basic’ of my app well now I got to do some feature. Here I going to list em all: -Random images in the intro screen -Adding tooltips -Adding buttons Add site and Add app -Cue sound for text ‘LOCK IN’ -Pomodoro timer -Guide for Pomodoro Timer and other features -Youtube break music (only pomodoro timer) It was fun making this more than making the app itself. It was really beutiful to see the review of other people on my last ship it gave motivation and new ideas. What I feel the most proud of is the Youtube music break, It was complicated. Really the biggest nightmare after The pomodoro Timer. At one point I ruined the code in the start fuction and I had to ask help to the Ai because there I started having nightmares about this thing. PS. In guide inside the pomodoro timer I left some sites you can use to change the cue sound! It would be cool if someone would check that out :)...
|
1793929836.4623463
|
1794016236.4623463
|
|
59847
|
HardwareProject by @EllaZ | Stardance
|
EllaZ
|
0
|
1.65
|
0
|
[]
|
[{"post_id": 64913, "ts": "202 [{"post_id": 64913, "ts": "2026-09-09T17:06:39Z", "hours": 0.9503, "text": "Still working on firmware for Hardware project. Struggling quite a bit, but will get there eventually."}, {"post_id": 64340, "ts": "2026-09-08T17:19:05Z", "hours": 0.6972, "text": "Working on the case and firmware. Trying to fix issues with PCB as well."}]...
|
Title: HardwareProject by @EllaZ | Stardance
Devl Title: HardwareProject by @EllaZ | Stardance
Devlogs:
Working on the case and firmware. Trying to fix issues with PCB as well.
Still working on firmware for Hardware project. Struggling quite a bit, but will get there eventually....
|
1793638387.7706678
|
1794243187.7706678
|
|
57505
|
BlockGen Unity3d by @Rohit_Biswas | Stardance
|
Rohit_Biswas
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T15:07:28Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made procedural block generation game. I made this with my self no help from AI but i used stackoverflow and internert.I learned block culling , block rendering , chunk generation and octave noise system.If you want to modify my project you can download unity 2022.3.", "repo": "https://github.com/BlooPlanet/BlockGen-Unity3d/tree/dev", "demo": "https://blooplanet.itch.io/blockgen-test"}]...
|
[{"post_id": 64912, "ts": "202 [{"post_id": 64912, "ts": "2026-09-09T17:06:37Z", "hours": 0.2753, "text": "I made terrain generation and nice transparent water"}, {"post_id": 64212, "ts": "2026-09-08T13:27:08Z", "hours": 3.0925, "text": "Today, I made block generation and chunk load/unload system."}, {"post_id": 62054, "ts": "2026-09-05T09:03:31Z", "hours": 4.7456, "text": "today, i work on player model and player skin system. i made skin graber system in unity with using minotar api that provide me official minecraft user skins."}]...
|
Title: BlockGen Unity3d by @Rohit_Biswas | Stardan Title: BlockGen Unity3d by @Rohit_Biswas | Stardance
Devlogs:
today, i work on player model and player skin system. i made skin graber system in unity with using minotar api that provide me official minecraft user skins.
Today, I made block generation and chunk load/unload system.
I made terrain generation and nice transparent water
Ships:
I made procedural block generation game. I made this with my self no help from AI but i used stackoverflow and internert.I learned block culling , block rendering , chunk generation and octave noise system.If you want to modify my project you can download unity 2022.3....
|
1794023509.0697737
|
1794109909.0697737
|
|
28822
|
Ada's Website! by @ada_bardiz | Stardance
|
ada_bardiz
|
2
|
6.0
|
14
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T17:08:13Z", "hours": 5.0, "multiplier": 2.83, "payout": 14, "blessing": "neutral", "text": "I made a personal website to serve as my portfolio. I made this project when I was really tired, so one thing I found challenging was 1) finding a cutesy font 2) figuring out why the image wouldn’t display. I’m proud of how polished it looks and how much information I was able to showcase. People can try it out via this link: https://adabardiz.github.io/personal-website-2/", "repo": "https://github.com/adabardiz/personal-website-2", "demo": "https://adabardiz.github.io/personal-website-2/"}, {"ship_num": 2, "ts": "2026-07-02T15:33:15Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal website that showcases a few examples of my projects, includes links to my github and linkedin accounts and has a minigame! This was my first experience with HTML, and I’m pretty proud of myself. My biggest issue was that I couldn’t get my dog’s photo to appear on the website page, and I fixed it by using Gemini’s help. Gemini helped me realize that my dogs photo was in jpg when I was trying to upload it in jpeg form, and also that I didn’t upload my dogs photo into the folder that the index.html file was in. I made sure to credit ProgrammingWithMosh and cite that I used AI in my readme.", "repo": "https://github.com/adabardiz/personal-website-2", "demo": "https://adabardiz.github.io/personal-website-2/"}]...
|
[{"post_id": 64911, "ts": "202 [{"post_id": 64911, "ts": "2026-09-09T17:06:30Z", "hours": 4.9453, "text": "I completely re-did the website! Added a few new sections & made it a bit more polished. Check it out: https://github.com/adabardiz/personal-website-2"}, {"post_id": 19976, "ts": "2026-07-01T13:25:28Z", "hours": 0.7336, "text": "Just added a silly small minigame to my website! Go check it out."}]...
|
Title: Ada's Website! by @ada_bardiz | Stardan Title: Ada's Website! by @ada_bardiz | Stardance
Devlogs:
Just added a silly small minigame to my website! Go check it out.
I completely re-did the website! Added a few new sections & made it a bit more polished. Check it out: https://github.com/adabardiz/personal-website-2
Ships:
I made a personal website that showcases a few examples of my projects, includes links to my github and linkedin accounts and has a minigame! This was my first experience with HTML, and I’m pretty proud of myself. My biggest issue was that I couldn’t get my dog’s photo to appear on the website page, and I fixed it by using Gemini’s help. Gemini helped me realize that my dogs photo was in jpg when I was trying to upload it in jpeg form, and also that I didn’t upload my dogs photo into the folder that the index.html file was in. I made sure to credit ProgrammingWithMosh and cite that I used AI in my readme.
I made a personal website to serve as my portfolio. I made this project when I was really tired, so one thing I found challenging was 1) finding a cutesy font 2) figuring out why the image wouldn’t display. I’m proud of how polished it looks and how much information I was able to showcase. People can try it out via this link: https://adabardiz.github.io/personal-website-2/...
|
1794041390.8364413
|
1794127790.8364413
|
|
60315
|
seamless portal engine by @dylanjtholen | Stardanc seamless portal engine by @dylanjtholen | Stardance...
|
dylanjtholen
|
0
|
19.96
|
0
|
[]
|
[{"post_id": 64910, "ts": "202 [{"post_id": 64910, "ts": "2026-09-09T17:06:11Z", "hours": 19.9642, "text": "triangles using sdl gpu vulkan renderer"}]...
|
Title: seamless portal engine by @dylanjtholen | S Title: seamless portal engine by @dylanjtholen | Stardance
Devlogs:
triangles using sdl gpu vulkan renderer...
|
1793641857.049854
|
1794246657.049854
|
|
51995
|
game_keeper by @krk | Stardance
|
krk
|
0
|
5.73
|
0
|
[]
|
[{"post_id": 64909, "ts": "202 [{"post_id": 64909, "ts": "2026-09-09T16:58:52Z", "hours": 0.6211, "text": "COMPLETE 40 % WORK"}, {"post_id": 63023, "ts": "2026-09-06T16:16:52Z", "hours": 0.87, "text": "me completed pcb finally"}, {"post_id": 62315, "ts": "2026-09-05T16:54:02Z", "hours": 3.4047, "text": "me working… on matrix"}, {"post_id": 61924, "ts": "2026-09-05T02:58:08Z", "hours": 0.8339, "text": "just figuring what is a matrix"}]...
|
Title: game_keeper by @krk | Stardance
Devlogs:
j Title: game_keeper by @krk | Stardance
Devlogs:
just figuring what is a matrix
me working… on matrix
me completed pcb finally
COMPLETE 40 % WORK...
|
1793415247.4528477
|
1794020047.4528477
|
|
55685
|
number guessing game + c basic learn by @4shhhh | number guessing game + c basic learn by @4shhhh | Stardance...
|
4shhhh
|
0
|
4.24
|
0
|
[]
|
[{"post_id": 64906, "ts": "202 [{"post_id": 64906, "ts": "2026-09-09T16:56:18Z", "hours": 0.9503, "text": "done with the game"}, {"post_id": 60867, "ts": "2026-09-03T14:36:02Z", "hours": 0.8658, "text": "quick prime no checker after this gonna work on the number guessing game"}, {"post_id": 58959, "ts": "2026-08-31T14:56:12Z", "hours": 0.6564, "text": "more c basics"}, {"post_id": 58225, "ts": "2026-08-30T16:09:17Z", "hours": 0.5386, "text": "learning operations(logical) soon will make the number guessing game and also will work on my perosnal website too ;D"}, {"post_id": 57262, "ts": "2026-08-29T11:29:18Z", "hours": 0.8072, "text": "just a basic program to convert c to f"}, {"post_id": 57161, "ts": "2026-08-29T08:25:37Z", "hours": 0.4189, "text": "learning c basics , input user values etc."}]...
|
Title: number guessing game + c basic learn by @4s Title: number guessing game + c basic learn by @4shhhh | Stardance
Devlogs:
learning c basics , input user values etc.
just a basic program to convert c to f
learning operations(logical) soon will make the number guessing game and also will work on my perosnal website too ;D
more c basics
quick prime no checker after this gonna work on the number guessing game
done with the game...
|
1794077746.271521
|
1794682546.271521
|
|
43531
|
School Management System by @hasanstarts | Stardan School Management System by @hasanstarts | Stardance...
|
hasanstarts
|
0
|
1.62
|
0
|
[]
|
[{"post_id": 64901, "ts": "202 [{"post_id": 64901, "ts": "2026-09-09T16:38:19Z", "hours": 0.6856, "text": "DevLog 2: Adding and Getting Students I have built 3 endpoints: GET /students : Get the full list of students with their details from database. POST /students : Allows to add a student to database . GET /students/{scholar_number} : Allows to get the details of that specific student. Scholar numbers are auto assigned : I coded it to get the latest scholar number from database and then add +1 to it and assign that for the details provided. I have not added any authorisation, as this is just a learning project and may add later, before shipping I guess."}, {"post_id": 41387, "ts": "2026-08-05T15:47:49Z", "hours": 0.9375, "text": "DevLog 1: Basics cleared and Learning started I have started working on a new project that is School Management System . The basic setup is completed using Python FastAPI and MongoDB. In this devlog, only testing and learning is done so no such update. Real development starts from today."}]...
|
Title: School Management System by @hasanstarts | Title: School Management System by @hasanstarts | Stardance
Devlogs:
DevLog 1: Basics cleared and Learning started I have started working on a new project that is School Management System . The basic setup is completed using Python FastAPI and MongoDB. In this devlog, only testing and learning is done so no such update. Real development starts from today.
DevLog 2: Adding and Getting Students I have built 3 endpoints: GET /students : Get the full list of students with their details from database. POST /students : Allows to add a student to database . GET /students/{scholar_number} : Allows to get the details of that specific student. Scholar numbers are auto assigned : I coded it to get the latest scholar number from database and then add +1 to it and assign that for the details provided. I have not added any authorisation, as this is just a learning project and may add later, before shipping I guess....
|
1793969240.3760889
|
1794574040.3760889
|
|
7671
|
Personal website by @killcalico | Stardance
|
killcalico
|
0
|
5.46
|
0
|
[]
|
[{"post_id": 6490, "ts": "2026 [{"post_id": 6490, "ts": "2026-06-10T22:09:52Z", "hours": 1.1858, "text": "Illustrated my header image and changed up the theme a little, making it a little more .. cutesy."}, {"post_id": 4531, "ts": "2026-06-07T21:29:39Z", "hours": 4.2728, "text": "11ty + Obsidian combo for markdown blogging on a static personal website :) I will be hosting it on Nekoweb because of the creative community there"}]...
|
Title: Personal website by @killcalico | Stardance Title: Personal website by @killcalico | Stardance
Devlogs:
11ty + Obsidian combo for markdown blogging on a static personal website :) I will be hosting it on Nekoweb because of the creative community there
Illustrated my header image and changed up the theme a little, making it a little more .. cutesy....
|
1794110120.2839081
|
1794714920.2839081
|
|
4139
|
Simple Website by @Adi | Stardance
|
Adi
|
0
|
0.95
|
0
|
[]
|
[{"post_id": 649, "ts": "2026- [{"post_id": 649, "ts": "2026-06-02T05:09:18Z", "hours": 0.4075, "text": "finished the about section"}, {"post_id": 632, "ts": "2026-06-02T04:38:12Z", "hours": 0.5464, "text": "finished with the navbar and the hero section"}]...
|
Title: Simple Website by @Adi | Stardance
Devlogs Title: Simple Website by @Adi | Stardance
Devlogs:
finished with the navbar and the hero section
finished the about section...
|
1793415081.8010027
|
1794019881.8010027
|
|
55418
|
proQ by @qwik | Stardance
|
qwik
|
0
|
11.13
|
0
|
[]
|
[{"post_id": 64892, "ts": "202 [{"post_id": 64892, "ts": "2026-09-09T16:30:21Z", "hours": 1.4569, "text": "okay ! i’ve got most of the instructions I think I should need for now, and that totals to 71 distinct ones. Far from the 256 the processor supports, so that’s good! most of them can read or write registers, memory, or an immediate number in the code. I can always add more later as need be but now i have to implement them!! eventually, I’ll write an assembler and linker to do this automatically. For now though I’ll have to write bytecode manually also going to assign these to specific opcodes first…"}, {"post_id": 58081, "ts": "2026-08-30T13:08:45Z", "hours": 2.4811, "text": "see i told you it would only be a few hours today, while fighting OOP , i got the cpu reading actual instructions for the first time! a big explanation, if you’re interested: the CU The CU, or Control Unit, is a… guess… Unit that Controls Things For every tick of the processor, it looks at the Program Counter (PC) register, and reads the byte, or the opcode, in that memory address. It then runs the instruction associated with that 8-bit opcode number, which does whatever it needs to the memory and registers of the processor, using the ALU (Arithmetic Logic Unit) to perform mathematical operations. Some processors use a large amount of opcodes, but my processor uses more memory space to save on making multiple opcodes for similar functions. For example, if you wanted to MOV one value to another place, there are several ways you might want to do it: register to register, register to memory, memory to memory, et cetera. In a modern processor, those would all be represented as distinct opcodes. In my processor (and other older or simpler ones), you use a second byte to specify which form of that operation you’re doing. That second byte is called an operand: an instruction can have multiple that all follow the initial instruction, modifying the behaviour. Following the previous example: 0x0000: 0x10 # MOV 0x0001: 0x02 # Value to Register 0x0002: 0x04 # Destination: Register R4 0x0003: 0x3A # Source: high byte 0x0004: 0x33 # Source: low byte this program puts the value 0x3A33 (ASCII for :3) in R4! it can keep performing instructions like this :) those are what I have to implement! OOP hell, again The opcodes are defined centrally in set.py , specifically an IntEnum named Op . It’s just a set of key-value pairs with classes inside, so- MOV = 0x10 ADD = 0x11 SUB = 0x12 and I can change and add this as I keep developing instructions. Each instruction is a class inherited from a base Instruction class, so ADD(Instruction): etc . The Instruction base class takes care of adding itself to an internal register of opcodes and their matching classes, and it holds references to one central MU, registers, and ALU. This way, instructions are simply a single function, execute() . That function is an Iterator function returning no values, allowing me to put it inside of a class: def tick ( self ): if not self . iterable : opcode = self . mu . read ( self . registers . PC ) instruction = Instruction . registry . get ( opcode ) instance = instruction ( self . mu , self . alu , self . registers ) self . registers . PC += 0x0001 self . iterable = instance . execute () try : next ( self . iterable ) except StopIteration : self . iterable = None which will perform only one part of the instruction every clock cycle, or tick, mimicing how real processors work!! Next I need to design the first few basic control flow instructions, then I’ll probably devlog there. Math instructions come after that, which requires me to learn BINARY OPERATORS AND BOOLEAN MATH OH GOD OH GOD ODGSJHNfhm , ,"}, {"post_id": 57087, "ts": "2026-08-29T05:39:03Z", "hours": 7.195, "text": "okay soo I started this project without picking a place to ship it and this happens to be the only program that really fits right now SO! time to devlog 7 hours of work n probs 12 hours of research!! :x devlogs are gonna have to be really technical there’s not much to screenshot so ill do my best to explain all the concepts im researching! processor this is a 16 bit computer emulator! the root of something this low level is the processor. It being 16 bit means that it works with 16 bit numbers, which are 2 bytes or 4 hex: something like 0x3A33 . All the addresses it can reference and values it can store use 16 bit numbers like this. Opcodes (numbers that represent instructions) are represented in 8 bit blocks, which gives 255 unique instructions, and addresses contain 8 bit numbers, or one byte each. memory In the 16 bit space, there are 65,536 memory addresses, ranging from 0x0000 to 0xFFFF . The MU() class (Memory Unit ) lets me assign and access devices on the memory modularly. First, ROM: program memory that can be loaded before execution, but not written to. then, RAM- read-writable, slower than a register (on real hardware), but can hold much more information. The last bit, from the range 0xF000 to 0xFFFF (4KiB) is reserved for: MMIO or Memory-Mapped Input/Output. The processor is useless if it can’t get information or display it to a user, and this is how we do that. The processor can read information from a special memory address, then write to another one to input and output data. This is also the space where some system things can be stored, like the reset bytes or the IVT (Interrupt Vector Table). I’ll explain more about those things in a later devlog. Thanks to Python being okay at OOP, the addresses on this emulated processor can be assigned really easily: self . keyboard_device = InterruptKeyboard ( intp = 0x11 ) # so it can be used in main.py self . mu . map_device ( 0x0000 , romsize - 1 , ROM ( size = romsize , binary = binary )) self . mu . map_device ( romsize , romsize + memsize - 1 , RAM ( size = memsize )) self . mu . map_device ( 0xF000 , 0xF000 , StdoutOutput ()) self . mu . map_device ( 0xF001 , 0xF001 , keyboard_device ) # maybe a screen? or buttons? or GPIO pins? or a nuclear bomb? :3 and you might do something like this (i haven’t built this part yet): # print the character in the keyboard's memory to stdout # instruction, memory to memory, destination, source self . cu . opcode ( MOV , 0x08 , 0xF000 , 0xF001 ) Registers Memory is great, but in real hardware it’s slow, and it’s weird to assign to and work with. Registers go inside of the processor itself for a place to really quickly keep and modify small amounts of information. the General Purpose Registers (GPRs) R1 through R12 are used for storing small amounts of information between instructions. There’s also the PC, or the Program Counter, which stores the memory address of the current instruction; the IR , instruction register, which stores the current opcode; and the SP, which points to a location in memory where the stack currently is, used for functions and interrupts. Finally, a flags register, encoding single bits important for math instructions that I’ll explain later. CU, ALU, and the rest of the stuff Okay so I haven’t mentioned a lot of stuff that I’ve worked on or that need to be considered- i’ll explain them in the future. Right now, I’m working on how the processor actually performs instructions, and I’ll write about that when the time comes :) Goog… hopefully this is uh, somewhat educational and doesn’t just read as a rant!! the devlogs that Don’t take 7 hours are to be a lot more digestible but until then time to go back to OOP hell also this is like full character limit lmao the screenshot: i got it to start the emulator and perform some operations using memory and registers, but this isn’t using actual CPU operations, just directly addressing the classes."}]...
|
Title: proQ by @qwik | Stardance
Devlogs:
okay so Title: proQ by @qwik | Stardance
Devlogs:
okay soo I started this project without picking a place to ship it and this happens to be the only program that really fits right now SO! time to devlog 7 hours of work n probs 12 hours of research!! :x devlogs are gonna have to be really technical there’s not much to screenshot so ill do my best to explain all the concepts im researching! processor this is a 16 bit computer emulator! the root of something this low level is the processor. It being 16 bit means that it works with 16 bit numbers, which are 2 bytes or 4 hex: something like 0x3A33 . All the addresses it can reference and values it can store use 16 bit numbers like this. Opcodes (numbers that represent instructions) are represented in 8 bit blocks, which gives 255 unique instructions, and addresses contain 8 bit numbers, or one byte each. memory In the 16 bit space, there are 65,536 memory addresses, ranging from 0x0000 to 0xFFFF . The MU() class (Memory Unit ) lets me assign and access devices on the memory modularly. First, ROM: program memory that can be loaded before execution, but not written to. then, RAM- read-writable, slower than a register (on real hardware), but can hold much more information. The last bit, from the range 0xF000 to 0xFFFF (4KiB) is reserved for: MMIO or Memory-Mapped Input/Output. The processor is useless if it can’t get information or display it to a user, and this is how we do that. The processor can read information from a special memory address, then write to another one to input and output data. This is also the space where some system things can be stored, like the reset bytes or the IVT (Interrupt Vector Table). I’ll explain more about those things in a later devlog. Thanks to Python being okay at OOP, the addresses on this emulated processor can be assigned really easily: self . keyboard_device = InterruptKeyboard ( intp = 0x11 ) # so it can be used in main.py self . mu . map_device ( 0x0000 , romsize - 1 , ROM ( size = romsize , binary = binary )) self . mu . map_device ( romsize , romsize + memsize - 1 , RAM ( size = memsize )) self . mu . map_device ( 0xF000 , 0xF000 , StdoutOutput ()) self . mu . map_device ( 0xF001 , 0xF001 , keyboard_device ) # maybe a screen? or buttons? or GPIO pins? or a nuclear bomb? :3 and you might do something like this (i haven’t built this part yet): # print the character in the keyboard's memory to stdout # instruction, memory to memory, destination, source self . cu . opcode ( MOV , 0x08 , 0xF000 , 0xF001 ) Registers Memory is great, but in real hardware it’s slow, and it’s weird to assign to and work with. Registers go inside of the processor itself for a place to really quickly keep and modify small amounts of information. the General Purpose Registers (GPRs) R1 through R12 are used for storing small amounts of information between instructions. There’s also the PC, or the Program Counter, which stores the memory address of the current instruction; the IR , instruction register, which stores the current opcode; and the SP, which points to a location in memory where the stack currently is, used for functions and interrupts. Finally, a flags register, encoding single bits important for math instructions that I’ll explain later. CU, ALU, and the rest of the stuff Okay so I haven’t mentioned a lot of stuff that I’ve worked on or that need to be considered- i’ll explain them in the future. Right now, I’m working on how the processor actually performs instructions, and I’ll write about that when the time comes :) Goog… hopefully this is uh, somewhat educational and doesn’t just read as a rant!! the devlogs that Don’t take 7 hours are to be a lot more digestible but until then time to go back to OOP hell also this is like full character limit lmao the screenshot: i got it to start the emulator and perform some operations using memory and registers, but this isn’t using actual CPU operations, just directly addressing the classes.
see i told you it would only be a few hours today, while fighting OOP , i got the cpu reading actual instructions for the first time! a big explanation, if you’re interested: the CU The CU, or Control Unit, is a… guess… Unit that Controls Things For every tick of the processor, it looks at the Program Counter (PC) register, and reads the byte, or the opcode, in that memory address. It then runs the instruction associated with that 8-bit opcode number, which does whatever it needs to the memory and registers of the processor, using the ALU (Arithmetic Logic Unit) to perform mathematical operations. Some processors use a large amount of opcodes, but my processor uses more memory space to save on making multiple opcodes for similar functions. For example, if you wanted to MOV one value to another place, there are several ways you might want to do it: register to register, register to memory, memory to memory, et cetera. In a modern processor, those would all be represented as distinct opcodes. In my processor (and other older or simpler ones), you use a second byte to specify which form of that operation you’re doing. That second byte is called an operand: an instruction can have multiple that all follow the initial instruction, modifying the behaviour. Following the previous example: 0x0000: 0x10 # MOV 0x0001: 0x02 # Value to Register 0x0002: 0x04 # Destination: Register R4 0x0003: 0x3A # Source: high byte 0x0004: 0x33 # Source: low byte this program puts the value 0x3A33 (ASCII for :3) in R4! it can keep performing instructions like this :) those are what I have to implement! OOP hell, again The opcodes are defined centrally in set.py , specifically an IntEnum named Op . It’s just a set of key-value pairs with classes inside, so- MOV = 0x10 ADD = 0x11 SUB = 0x12 and I can change and add this as I keep developing instructions. Each instruction is a class inherited from a base Instruction class, so ADD(Instruction): etc . The Instruction base class takes care of adding itself to an internal register of opcodes and their matching classes, and it holds references to one central MU, registers, and ALU. This way, instructions are simply a single function, execute() . That function is an Iterator function returning no values, allowing me to put it inside of a class: def tick ( self ): if not self . iterable : opcode = self . mu . read ( self . registers . PC ) instruction = Instruction . registry . get ( opcode ) instance = instruction ( self . mu , self . alu , self . registers ) self . registers . PC += 0x0001 self . iterable = instance . execute () try : next ( self . iterable ) except StopIteration : self . iterable = None which will perform only one part of the instruction every clock cycle, or tick, mimicing how real processors work!! Next I need to design the first few basic control flow instructions, then I’ll probably devlog there. Math instructions come after that, which requires me to learn BINARY OPERATORS AND BOOLEAN MATH OH GOD OH GOD ODGSJHNfhm , ,
okay ! i’ve got most of the instructions I think I should need for now, and that totals to 71 distinct ones. Far from the 256 the processor supports, so that’s good! most of them can read or write registers, memory, or an immediate number in the code. I can always add more later as need be but now i have to implement them!! eventually, I’ll write an assembler and linker to do this automatically. For now though I’ll have to write bytecode manually also going to assign these to specific opcodes first…...
|
1793818304.5046597
|
1794423104.5046597
|
|
58899
|
Untitled project by @pavelX | Stardance
|
pavelX
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T16:05:19Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a python game, but only text RPG game where you chose your hero. You can fight fantasy features, and hastle some golds for fun or you can also craft many thiks which will make you stronger. The game end after you kill the end Dragon. I am proud of my project because this was my first big python project.", "repo": "https://github.com/pavel1010-code/coding/blob/main/project.py", "demo": "https://github.com/pavel1010-code/coding/releases/tag/v1.0.0"}]...
|
[{"post_id": 64874, "ts": "202 [{"post_id": 64874, "ts": "2026-09-09T16:00:23Z", "hours": 4.5083, "text": "I enden up making python game where you can play, craft, and fight."}, {"post_id": 63704, "ts": "2026-09-07T17:12:08Z", "hours": 3.2347, "text": "i am working on a python game. Where you’re fighting scifi creatures and after i upgrade it you can craft something."}]...
|
Title: Untitled project by @pavelX | Stardance
De Title: Untitled project by @pavelX | Stardance
Devlogs:
i am working on a python game. Where you’re fighting scifi creatures and after i upgrade it you can craft something.
I enden up making python game where you can play, craft, and fight.
Ships:
I made a python game, but only text RPG game where you chose your hero. You can fight fantasy features, and hastle some golds for fun or you can also craft many thiks which will make you stronger. The game end after you kill the end Dragon. I am proud of my project because this was my first big python project....
|
1793912098.1998968
|
1793998498.1998968
|
|
26654
|
Gateway Navigator by @shayanyk | Stardance
|
shayanyk
|
0
|
12.74
|
0
|
[]
|
[{"post_id": 64871, "ts": "202 [{"post_id": 64871, "ts": "2026-09-09T15:52:26Z", "hours": 11.5442, "text": "After getting the basic propagator working, I moved on to the next thing I needed for Gateway Navigator: the State Transition Matrix (STM). At first I thought this would be fairly straightforward. The idea seemed simple enough — propagate the spacecraft state and also keep track of how small changes in the initial state affect the state later on. In practice, it was a lot more annoying than I expected. I started by going through the CR3BP equations again and deriving the Jacobian of the dynamics. The main problem was keeping track of all the partial derivatives without making a sign mistake. Since the rotating-frame equations already contain the Coriolis terms, it was surprisingly easy to convince myself that an incorrect expression was correct. I implemented the variational equations and augmented the spacecraft state with the 36 STM elements. The first propagation technically ran, but the STM results were clearly wrong. Some elements were growing far too quickly and the numerical behaviour didn’t make physical sense."}, {"post_id": 17856, "ts": "2026-06-28T19:58:34Z", "hours": 1.1919, "text": "DEVLOG — SESSION 1 Date: June 28, 2026 Session: M1 Propagation Engine — Setup & Validation Set up the full Gateway Navigator project structure from scratch — all 7 module files, core utilities, tests, data and figures directories. Wrote m1_propagator.py containing the CR3BP equations of motion, Jacobi constant function, and a propagate() wrapper around scipy.solve_ivp using the DOP853 integrator. Wrote tests/test_m1_validation.py to verify two gate conditions: position return error under 1 km after one orbital period, and Jacobi drift under 1e-10. WHAT I LEARNED: The CR3BP equations model Gateway’s motion in a rotating frame co-moving with the Earth-Moon system. In this frame both primaries are stationary and the spacecraft experiences Coriolis and centrifugal forces alongside gravity. The Jacobi constant is a conserved quantity along any uncontrolled trajectory — if it drifts, the integrator is losing energy, which means the physics is wrong. DOP853 is an 8th-order Runge-Kutta method that conserves energy far better than lower-order integrators. WHAT BROKE / SURPRISED ME: Initial conditions copied from blueprint literature failed the position return gate badly — 3415 km error on the first attempt, 362 km on the second. The Jacobi drift was perfect both times (below 1e-13), meaning the integrator itself was working correctly. The problem was that NRHO initial conditions are extraordinarily sensitive.FINAL VALIDATED ICs: x0 = 1.0170375034517611 z0 = -0.1784174365278452 yd0 = -0.0921378916511874 T = 1.4451252712711455"}]...
|
Title: Gateway Navigator by @shayanyk | Stardance
Title: Gateway Navigator by @shayanyk | Stardance
Devlogs:
DEVLOG — SESSION 1 Date: June 28, 2026 Session: M1 Propagation Engine — Setup & Validation Set up the full Gateway Navigator project structure from scratch — all 7 module files, core utilities, tests, data and figures directories. Wrote m1_propagator.py containing the CR3BP equations of motion, Jacobi constant function, and a propagate() wrapper around scipy.solve_ivp using the DOP853 integrator. Wrote tests/test_m1_validation.py to verify two gate conditions: position return error under 1 km after one orbital period, and Jacobi drift under 1e-10. WHAT I LEARNED: The CR3BP equations model Gateway’s motion in a rotating frame co-moving with the Earth-Moon system. In this frame both primaries are stationary and the spacecraft experiences Coriolis and centrifugal forces alongside gravity. The Jacobi constant is a conserved quantity along any uncontrolled trajectory — if it drifts, the integrator is losing energy, which means the physics is wrong. DOP853 is an 8th-order Runge-Kutta method that conserves energy far better than lower-order integrators. WHAT BROKE / SURPRISED ME: Initial conditions copied from blueprint literature failed the position return gate badly — 3415 km error on the first attempt, 362 km on the second. The Jacobi drift was perfect both times (below 1e-13), meaning the integrator itself was working correctly. The problem was that NRHO initial conditions are extraordinarily sensitive.FINAL VALIDATED ICs: x0 = 1.0170375034517611 z0 = -0.1784174365278452 yd0 = -0.0921378916511874 T = 1.4451252712711455
After getting the basic propagator working, I moved on to the next thing I needed for Gateway Navigator: the State Transition Matrix (STM). At first I thought this would be fairly straightforward. The idea seemed simple enough — propagate the spacecraft state and also keep track of how small changes in the initial state affect the state later on. In practice, it was a lot more annoying than I expected. I started by going through the CR3BP equations again and deriving the Jacobian of the dynamics. The main problem was keeping track of all the partial derivatives without making a sign mistake. Since the rotating-frame equations already contain the Coriolis terms, it was surprisingly easy to convince myself that an incorrect expression was correct. I implemented the variational equations and augmented the spacecraft state with the 36 STM elements. The first propagation technically ran, but the STM results were clearly wrong. Some elements were growing far too quickly and the numerical behaviour didn’t make physical sense....
|
1793785849.2340894
|
1794390649.2340894
|
|
48438
|
Kile-OS by @koumud | Stardance
|
koumud
|
1
|
3.85
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T15:04:20Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "KileOS is a web-based operating system with a modern desktop, apps, window management, settings, themes, and local data storage. It runs directly in the browser and is publicly available for anyone to try.", "repo": "https://github.com/koumud/kile-os", "demo": "https://kile-os.vercel.app/"}]...
|
[{"post_id": 64867, "ts": "202 [{"post_id": 64867, "ts": "2026-09-09T15:40:36Z", "hours": 1.8547, "text": "Stage 5 builds on Stage 4 by adding KileFlow, a workspace control system with saved desktop scenes, Activity Pulse, Desk Map, and the Ctrl + Space Command Rail. The code was newly written on top of KileOS Stage 4, while reference projects were used only for feature inspiration."}, {"post_id": 48133, "ts": "2026-08-16T12:53:57Z", "hours": 0.3081, "text": "the new stage add a polish version of stage 2"}, {"post_id": 48000, "ts": "2026-08-16T08:52:59Z", "hours": 0.3578, "text": "In the 2nd stage i worked on smoothness and added 2 more apps to the os but they need polishing"}, {"post_id": 47945, "ts": "2026-08-16T06:43:28Z", "hours": 1.0083, "text": "I am currently working on an simple os for the project and it is simple"}]...
|
Title: Kile-OS by @koumud | Stardance
Devlogs:
I Title: Kile-OS by @koumud | Stardance
Devlogs:
I am currently working on an simple os for the project and it is simple
In the 2nd stage i worked on smoothness and added 2 more apps to the os but they need polishing
the new stage add a polish version of stage 2
Stage 5 builds on Stage 4 by adding KileFlow, a workspace control system with saved desktop scenes, Activity Pulse, Desk Map, and the Ctrl + Space Command Rail. The code was newly written on top of KileOS Stage 4, while reference projects were used only for feature inspiration.
Ships:
KileOS is a web-based operating system with a modern desktop, apps, window management, settings, themes, and local data storage. It runs directly in the browser and is publicly available for anyone to try....
|
1794016542.2408092
|
1794102942.2408092
|
|
50849
|
floating-computer-portfolio-site by @Broken_Proof floating-computer-portfolio-site by @Broken_Proof | Stardance...
|
Broken_Proof
|
1
|
22.0
|
353
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T15:39:28Z", "hours": 22.0, "multiplier": 15.8, "payout": 353, "blessing": "neutral", "text": "I’ve made a personal portfolio site that involves a computer floating in space. Basically it’s a 3D model within a custom made starfied in a Three js scene. When clicked it zooms in and overlays my own custom OS terminal. The OS has cool things like puzzles I made, resume download features and more. I had challenges setting up the conditional orbit controls and some of the UI features, but I eventually got it to work. So proud of this project and in the future I want to make it an option to navigate via terminal or through a static html page. This is because some people may not want to go through the work of figuring out commands on my terminal.", "repo": "https://github.com/broken-proof/personal-portfolio", "demo": "https://broken-proof.github.io/personal-portfolio/"}]...
|
[{"post_id": 64855, "ts": "202 [{"post_id": 64855, "ts": "2026-09-09T15:30:43Z", "hours": 0.6978, "text": "Devlog #8: Alright, so I’m ready to ship. I just added some more comments, organized my assets, fixed some terminal bugs and then improved my ReadMe. Here’s a demo of the final product:"}, {"post_id": 64616, "ts": "2026-09-09T04:31:33Z", "hours": 4.9083, "text": "Devlog #7: Almost ready to ship! Did the following: Added a settings menu with a mute button, fullscreen button, and a help button which renders and auto types help into the computer component. Fixed resizing issues Added Puzzles to it Added a simple start screen. Hosted site on Github Pages using github actions. I had fun making my icons on piskelapp.com. What’s left is probably to refine the site, add proper comments and I should be good."}, {"post_id": 63343, "ts": "2026-09-07T03:27:53Z", "hours": 1.6022, "text": "Devlog #6: Added Some Audio! Used use useSound React hook to add powerOn, powerOff and a Space void default sound. Also added a mute button which I will definitely improve later in a settings kind of layout. In the future I need a starter screen that is like “click to play” or sm cause browser audio only starts after an interaction. There’s also some UI issues with resizing so I need to fix those aswell."}, {"post_id": 63234, "ts": "2026-09-06T22:37:33Z", "hours": 1.6942, "text": "Devlog #5: I got the OrbitControls working finally. Took me a while because the Camera Rig and Orbit Controls were fighting for control but I got the scene working. Now the transition is pretty seamless except for the fact that the text is different. That’ll be fixed when I make my own custom model. For now I’ll keep this public model because I’m not tryna learn modeling. The next step is probably adding sound and some icons to the top that help the user figure out what’s going on."}, {"post_id": 63026, "ts": "2026-09-06T16:20:26Z", "hours": 3.9125, "text": "Devlog #4: Lots of new progress. I made my own MOTD, added a history navigation (up/down arrow keys), and a new projects catalog. After that, I refactored the star field to be in React Three fiber and experimented with some views for my computer. As of now, I’m using a model I found online, but I plan to make my own later on. I am also using react three drei’s presentation controls but I don’t really like them so maybe Orbit Controls would fit better. Just going to continue experimenting until I get a transition I like."}, {"post_id": 61909, "ts": "2026-09-05T02:37:01Z", "hours": 4.4378, "text": "Devlog #3: Basically, I turned the screen into a proper terminal that runs my personal os. It has some nice commands that allow the user to get a brief bio, download my resume, contact me, customize themes and clear the screen. I was inspired by linux terminal for some of the commands/output formatting and I wish to add further features in the future. I also added features that are usual for a typical terminal including autofocusing and going to the input on clicking any part of the screen. For now, the next step is to add the transition between a computer floating in space to the actual screen."}, {"post_id": 56236, "ts": "2026-08-27T22:15:51Z", "hours": 3.3108, "text": "Devlog #2: Created CSS for the monitor screen. Also had a lot of fun creating the crt terminal like background using a double layered linear gradient with two moving divs on top of it for the scanning effect. The redirects to the different components are functional and the next step is to fill in About.jsx, Projects.jsx … Currently, the crt’s border image is just something I made using pixel art, but I plan to make it look better afterwards. The background effect does not fix with resizing so I have to fix that also. Then, I’ll work on the transition to the monitor screen and the whole experience in general. I’ve gotten good progress so far :)"}, {"post_id": 50086, "ts": "2026-08-19T04:32:58Z", "hours": 1.81, "text": "devlog#1: The idea for the portfolio is that the user will be controlling a retro computer that is floating in space. All my portfolio details will probably go into the monitor ui, but the design will have some more features to play around with. Took me a while to figure out how to use vanilla THREE.js with React useEffect hooks. I later saw there is something called react three fiber but I might implement using that later."}]...
|
Title: floating-computer-portfolio-site by @Broken Title: floating-computer-portfolio-site by @Broken_Proof | Stardance
Devlogs:
devlog#1: The idea for the portfolio is that the user will be controlling a retro computer that is floating in space. All my portfolio details will probably go into the monitor ui, but the design will have some more features to play around with. Took me a while to figure out how to use vanilla THREE.js with React useEffect hooks. I later saw there is something called react three fiber but I might implement using that later.
Devlog #2: Created CSS for the monitor screen. Also had a lot of fun creating the crt terminal like background using a double layered linear gradient with two moving divs on top of it for the scanning effect. The redirects to the different components are functional and the next step is to fill in About.jsx, Projects.jsx … Currently, the crt’s border image is just something I made using pixel art, but I plan to make it look better afterwards. The background effect does not fix with resizing so I have to fix that also. Then, I’ll work on the transition to the monitor screen and the whole experience in general. I’ve gotten good progress so far :)
Devlog #3: Basically, I turned the screen into a proper terminal that runs my personal os. It has some nice commands that allow the user to get a brief bio, download my resume, contact me, customize themes and clear the screen. I was inspired by linux terminal for some of the commands/output formatting and I wish to add further features in the future. I also added features that are usual for a typical terminal including autofocusing and going to the input on clicking any part of the screen. For now, the next step is to add the transition between a computer floating in space to the actual screen.
Devlog #4: Lots of new progress. I made my own MOTD, added a history navigation (up/down arrow keys), and a new projects catalog. After that, I refactored the star field to be in React Three fiber and experimented with some views for my computer. As of now, I’m using a model I found online, but I plan to make my own later on. I am also using react three drei’s presentation controls but I don’t really like them so maybe Orbit Controls would fit better. Just going to continue experimenting until I get a transition I like.
Devlog #5: I got the OrbitControls working finally. Took me a while because the Camera Rig and Orbit Controls were fighting for control but I got the scene working. Now the transition is pretty seamless except for the fact that the text is different. That’ll be fixed when I make my own custom model. For now I’ll keep this public model because I’m not tryna learn modeling. The next step is probably adding sound and some icons to the top that help the user figure out what’s going on.
Devlog #6: Added Some Audio! Used use useSound React hook to add powerOn, powerOff and a Space void default sound. Also added a mute button which I will definitely improve later in a settings kind of layout. In the future I need a starter screen that is like “click to play” or sm cause browser audio only starts after an interaction. There’s also some UI issues with resizing so I need to fix those aswell.
Devlog #7: Almost ready to ship! Did the following: Added a settings menu with a mute button, fullscreen button, and a help button which renders and auto types help into the computer component. Fixed resizing issues Added Puzzles to it Added a simple start screen. Hosted site on Github Pages using github actions. I had fun making my icons on piskelapp.com. What’s left is probably to refine the site, add proper comments and I should be good.
Devlog #8: Alright, so I’m ready to ship. I just added some more comments, organized my assets, fixed some terminal bugs and then improved my ReadMe. Here’s a demo of the final product:
Ships:
I’ve made a personal portfolio site that involves a computer floating in space. Basically it’s a 3D model within a custom made starfied in a Three js scene. When clicked it zooms in and overlays my own custom OS terminal. The OS has cool things like puzzles I made, resume download features and more. I had challenges setting up the conditional orbit controls and some of the UI features, but I eventually got it to work. So proud of this project and in the future I want to make it an option to navigate via terminal or through a static html page. This is because some people may not want to go through the work of figuring out commands on my terminal....
|
1794019996.179562
|
1794106396.179562
|