|
42125
|
Soop WebOS by @sooperss | Stardance
|
sooperss
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Soop WebOS by @sooperss | Stardance
|
1793948001.9341505
|
1794812001.9341505
|
|
47942
|
Airsoft Impact Grenade by @sooperss | Stardance
|
sooperss
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Airsoft Impact Grenade by @sooperss | Stard Title: Airsoft Impact Grenade by @sooperss | Stardance...
|
1793929932.3632147
|
1794534732.3632147
|
|
18576
|
My awesome macropad! by @soonii | Stardance
|
soonii
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @soonii | Stardance
|
1793281769.42926
|
1793886569.42926
|
|
34762
|
Dira by @soomit | Stardance
|
soomit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Dira by @soomit | Stardance
|
1793987711.345314
|
1794592511.345314
|
|
34792
|
My own site! by @soomit | Stardance
|
soomit
|
0
|
0.53
|
0
|
[]
|
[{"post_id": 28698, "ts": "202 [{"post_id": 28698, "ts": "2026-07-15T03:17:09Z", "hours": 0.5333, "text": "Hello, currently making my personal website. I will create as an achieve of my engineering projects."}]...
|
Title: My own site! by @soomit | Stardance
Devlog Title: My own site! by @soomit | Stardance
Devlogs:
Hello, currently making my personal website. I will create as an achieve of my engineering projects....
|
1793476505.1416698
|
1794081305.1416698
|
|
59200
|
Updraft: Combat Robot by @soomit | Stardance
|
soomit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Updraft: Combat Robot by @soomit | Stardanc Title: Updraft: Combat Robot by @soomit | Stardance...
|
1793537765.0223615
|
1794142565.0223615
|
|
31727
|
My awesome macropad! by @sonyabaksht | Stardance
|
sonyabaksht
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sonyabaksht | Star Title: My awesome macropad! by @sonyabaksht | Stardance...
|
1793825697.5807874
|
1794430497.5807874
|
|
20763
|
My first slack bot! by @sonya | Stardance
|
sonya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sonya | Stardance
|
1793411523.451106
|
1794016323.451106
|
|
69614
|
My awesome macropad! by @sonukumarpaw | Stardance
|
sonukumarpaw
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sonukumarpaw | Sta Title: My awesome macropad! by @sonukumarpaw | Stardance...
|
1793584342.4931548
|
1794189142.4931548
|
|
49286
|
My awesome macropad! by @sonukumarmonu992 | Starda My awesome macropad! by @sonukumarmonu992 | Stardance...
|
sonukumarmonu992
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sonukumarmonu992 | Title: My awesome macropad! by @sonukumarmonu992 | Stardance...
|
1793274622.962758
|
1793879422.962758
|
|
15396
|
My first slack bot! by @sonucarpenter | Stardance
|
sonucarpenter
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sonucarpenter | Sta Title: My first slack bot! by @sonucarpenter | Stardance...
|
1793983811.7707856
|
1794588611.7707856
|
|
68342
|
My awesome macropad! by @sonu | Stardance
|
sonu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sonu | Stardance
|
1793739281.982441
|
1794344081.982441
|
|
71194
|
My awesome macropad! by @sonja | Stardance
|
sonja
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sonja | Stardance
|
1793584228.884722
|
1794189028.884722
|
|
19964
|
My first slack bot! by @soniya | Stardance
|
soniya
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @soniya | Stardance
|
1793955064.210413
|
1794559864.210413
|
|
61239
|
cosmos finder by @sonivinayak831 | Stardance
|
sonivinayak831
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cosmos finder by @sonivinayak831 | Stardanc Title: cosmos finder by @sonivinayak831 | Stardance...
|
1793648896.2126658
|
1794253696.2126658
|
|
17912
|
My first slack bot! by @sonit_n | Stardance
|
sonit_n
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sonit_n | Stardance
|
1793789242.401258
|
1794394042.401258
|
|
2613
|
My first slack bot! by @sonicx180 | Stardance
|
sonicx180
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sonicx180 | Stardan Title: My first slack bot! by @sonicx180 | Stardance...
|
1793364726.9587216
|
1793969526.9587216
|
|
34253
|
3D model by @songhuongg30 | Stardance
|
songhuongg30
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 3D model by @songhuongg30 | Stardance
|
1793494424.5658617
|
1794099224.5658617
|
|
3158
|
My first slack bot! by @sonam | Stardance
|
sonam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sonam | Stardance
|
1793451192.481211
|
1794055992.481211
|
|
26703
|
ROVER by @sonam | Stardance
|
sonam
|
0
|
7.1
|
0
|
[]
|
[{"post_id": 46352, "ts": "202 [{"post_id": 46352, "ts": "2026-08-13T14:47:08Z", "hours": 0.3417, "text": "I fixed the tolerance of every attaching component and mount. Also, the motor driver pins interfered with the chassis mount so I changed the design from a hole that the motor drivers sat on to slightly elevated screw holes. I will be printing the CAD today!!!"}, {"post_id": 46131, "ts": "2026-08-13T04:25:45Z", "hours": 1.9064, "text": "Today I picked up my project after a hiatus. I had already worked on programming the motor drivers a week back and today I tested the hardware to see if the code would work. Unfortunately nothing happened today and I couldn’t figure out why so I will have to test again. I used an arduino to receive analog signals from two rheostats (which acts as the joysticks for the controller for now) and send signals to the motor drivers to control the speed and direction of the motors. Because the rheostats did not connect to jumper wires or breadboards, I had to connect it to wires with tape. At one point I saw a small spark in the rheostat, I think due to the breaking of connection of the wires (please inform me if this is a safety hazard), and I also forgot to record the first 25 minutes of setting up or so LOL. I am working on printing out the parts which will come soon after I figure out these tolerance issues."}, {"post_id": 26391, "ts": "2026-07-11T04:52:03Z", "hours": 1.7003, "text": "Devlog#3: Today I worked on the importing the physical components into CAD and seeing if everything could be attached to the board without error. I spent time fixing screw holes to make sure there won’t be tolerance mistakes for when it’s printed. One of my concerns is that the ROVER is too bulky and too unstable. I tried cutting out the frame and reducing excess weight and this was the result. This CAD is pretty much complete and I will be putting more work into electronics and programming now. Once the cad is printed I will look for practical issues and work on another version for the CAD if I have too."}, {"post_id": 19557, "ts": "2026-06-30T21:43:01Z", "hours": 1.2336, "text": "Devlog #2: Today I worked on fixing some of the designs for my CAD. I fixed the mistake where there wasn’t enough space for the wheel when the motor was connected to the chassis by cutting out the edge of the chassis to make it fit. I also adjusted the height of my standoffs to be about 3.4cm when it was originally around 8cm which would cause my rover to be a lot more unstable with a lot of unnecessary space between the chassis layers. I still need to somehow find out how to mate the two ultrasonic sensor mounts diagonally and I will import the electronic parts into my CAD so it looks more like a final product. I am going to work on the electronics and programming the esp32 for my next devlog. For whoever is interested, my full plan is to create a remote controlled rover that has a camera to observe it’s surroundings, and I want to be able to view it’s perspective from my computer."}, {"post_id": 18020, "ts": "2026-06-29T00:09:05Z", "hours": 1.9169, "text": "I am currently working on creating a remote controlled rover and for this session, I worked on the CAD for the body. I already had some progress, like the layers of the chassis, before I participated in this challenge, but I am continuing to work on it for the challenge. Today I created all the mounts and standoffs that will hold some of the electrical components I want to add such as ultrasonic sensors, TT motors, an esp32, and battery holders. I made a lot of mistakes and had to make modifications to the chasis because I miscalulated some heights of different holders, I couldn’t figure out how to mate a component on a diagonally oriented structure, and also as you can see in the image, the wheel is going through the chassis right now, which is something I will have to fix. I also want to consider if there is anything not optimal about my design that I should modify, or anything I can do to make the whole vehicle look more aesthetic in general."}]...
|
Title: ROVER by @sonam | Stardance
Devlogs:
I am Title: ROVER by @sonam | Stardance
Devlogs:
I am currently working on creating a remote controlled rover and for this session, I worked on the CAD for the body. I already had some progress, like the layers of the chassis, before I participated in this challenge, but I am continuing to work on it for the challenge. Today I created all the mounts and standoffs that will hold some of the electrical components I want to add such as ultrasonic sensors, TT motors, an esp32, and battery holders. I made a lot of mistakes and had to make modifications to the chasis because I miscalulated some heights of different holders, I couldn’t figure out how to mate a component on a diagonally oriented structure, and also as you can see in the image, the wheel is going through the chassis right now, which is something I will have to fix. I also want to consider if there is anything not optimal about my design that I should modify, or anything I can do to make the whole vehicle look more aesthetic in general.
Devlog #2: Today I worked on fixing some of the designs for my CAD. I fixed the mistake where there wasn’t enough space for the wheel when the motor was connected to the chassis by cutting out the edge of the chassis to make it fit. I also adjusted the height of my standoffs to be about 3.4cm when it was originally around 8cm which would cause my rover to be a lot more unstable with a lot of unnecessary space between the chassis layers. I still need to somehow find out how to mate the two ultrasonic sensor mounts diagonally and I will import the electronic parts into my CAD so it looks more like a final product. I am going to work on the electronics and programming the esp32 for my next devlog. For whoever is interested, my full plan is to create a remote controlled rover that has a camera to observe it’s surroundings, and I want to be able to view it’s perspective from my computer.
Devlog#3: Today I worked on the importing the physical components into CAD and seeing if everything could be attached to the board without error. I spent time fixing screw holes to make sure there won’t be tolerance mistakes for when it’s printed. One of my concerns is that the ROVER is too bulky and too unstable. I tried cutting out the frame and reducing excess weight and this was the result. This CAD is pretty much complete and I will be putting more work into electronics and programming now. Once the cad is printed I will look for practical issues and work on another version for the CAD if I have too.
Today I picked up my project after a hiatus. I had already worked on programming the motor drivers a week back and today I tested the hardware to see if the code would work. Unfortunately nothing happened today and I couldn’t figure out why so I will have to test again. I used an arduino to receive analog signals from two rheostats (which acts as the joysticks for the controller for now) and send signals to the motor drivers to control the speed and direction of the motors. Because the rheostats did not connect to jumper wires or breadboards, I had to connect it to wires with tape. At one point I saw a small spark in the rheostat, I think due to the breaking of connection of the wires (please inform me if this is a safety hazard), and I also forgot to record the first 25 minutes of setting up or so LOL. I am working on printing out the parts which will come soon after I figure out these tolerance issues.
I fixed the tolerance of every attaching component and mount. Also, the motor driver pins interfered with the chassis mount so I changed the design from a hole that the motor drivers sat on to slightly elevated screw holes. I will be printing the CAD today!!!...
|
1793314269.9542336
|
1793919069.9542336
|
|
26704
|
My awesome macropad! by @sonam | Stardance
|
sonam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sonam | Stardance
|
1793368091.343389
|
1793972891.343389
|
|
30533
|
Untitled by @sonam | Stardance
|
sonam
|
0
|
0.4
|
0
|
[]
|
[{"post_id": 22612, "ts": "202 [{"post_id": 22612, "ts": "2026-07-05T05:08:46Z", "hours": 0.4003, "text": "Working on creating a pcb for a blinky board that blinks LEDs in a variable speed sequence. I want to make the blinkey board heart shaped and valentines themed. For my first steps, I followed instructions from a model project from STASIS hack club to design the schematic for the pcb. I was a bit confused on what some of the wiring meant, and I watched a video, prior to starting the schematic, on how a 555 timer is structured and functions but the schematic was a little different so I want to spend some time reviewing the wiring and gaining a better understanding of what it means."}]...
|
Title: Untitled by @sonam | Stardance
Devlogs:
Wo Title: Untitled by @sonam | Stardance
Devlogs:
Working on creating a pcb for a blinky board that blinks LEDs in a variable speed sequence. I want to make the blinkey board heart shaped and valentines themed. For my first steps, I followed instructions from a model project from STASIS hack club to design the schematic for the pcb. I was a bit confused on what some of the wiring meant, and I watched a video, prior to starting the schematic, on how a 555 timer is structured and functions but the schematic was a little different so I want to spend some time reviewing the wiring and gaining a better understanding of what it means....
|
1793382499.6069736
|
1793987299.6069736
|
|
39715
|
Untitled project by @sonalhhegde | Stardance
|
sonalhhegde
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @sonalhhegde | Stardanc Title: Untitled project by @sonalhhegde | Stardance...
|
1793508752.814168
|
1794113552.814168
|
|
25904
|
WarioWare Game by @sonal_ravva | Stardance
|
sonal_ravva
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @sonal_ravva | Stardance
|
1793285335.8133564
|
1793890135.8133564
|
|
54532
|
My own site! by @sonal_134340 | Stardance
|
sonal_134340
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @sonal_134340 | Stardance
|
1793544891.2776155
|
1794149691.2776155
|
|
51829
|
astra by @somiko | Stardance
|
somiko
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: astra by @somiko | Stardance
|
1793407921.379897
|
1794012721.379897
|
|
10257
|
Self hosted minecraft hosting service by @sometime Self hosted minecraft hosting service by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
1
|
58.72
|
605
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T18:57:02Z", "hours": 57.0, "multiplier": 12.09, "payout": 605, "blessing": "neutral", "text": "I made a minecraft server hosting service, which shuts down servers automatically that are not in use (and starts them up upon attempted connection) to save resources. It is slow due to the hardware, but I promise that the loading screen usually is not infinite (1min long usually).", "repo": "https://github.com/imakebloatedcode/minecraft-as-a-service", "demo": "https://mc.bloated.dev"}]...
|
[{"post_id": 18404, "ts": "202 [{"post_id": 18404, "ts": "2026-06-29T15:20:46Z", "hours": 0.4886, "text": "Docker now allows more than 10 seconds for the servers to be saved, the MOTD now saves even if no formatting is applied, and it reloads the configuration when switching from and to the server configuration tile"}, {"post_id": 17741, "ts": "2026-06-28T17:39:11Z", "hours": 0.4492, "text": "Devlog - REVIEWERS READ THIS: before rejecting, read this thread: https://hackclub.slack.com/archives/C099P9FQQ91/p1782581500326529"}, {"post_id": 14655, "ts": "2026-06-23T20:48:28Z", "hours": 0.7839, "text": "Added license, updated readme, allowed viewing server configuration without authorization, fixed the UI for users who do (removed save button and irrelevant config groups), renamed the routes for some pages (/dashboard/servers => /dashboard/my-servers. /dashboard/all-servers => /dashboard/servers), and hid the account menu for non-logged-in users."}, {"post_id": 14471, "ts": "2026-06-23T16:33:59Z", "hours": 0.8519, "text": "Final touch ups: added a favicon, fixed a double-mount bug in the server join callback, and also prevented double-registration of accounts (which result in duplicate DB entries)"}, {"post_id": 14064, "ts": "2026-06-23T01:24:09Z", "hours": 3.2131, "text": "The server now automatically shuts down servers with no players after 5 minutes (via checking if any players are connected to the proxy, not by querying the backend server) and starts them on players trying to join. Viaversion has been uninstalled from velocity (the proxy), as it was giving protocol errors intermittently for newly started servers. I now only have viaversion in front of the limbo server, which was not having issues, with the addition of viabackwards to allow old versions. Installing that to the limbo server was required as all minecraft versions connect to it, and limbo only implements support for one nativly."}, {"post_id": 13785, "ts": "2026-06-22T16:25:13Z", "hours": 1.9106, "text": "Fixed the api endpoints (they did not delete the S3 data) for deleting servers and accounts and added the button to delete servers"}, {"post_id": 12823, "ts": "2026-06-21T00:06:11Z", "hours": 5.3086, "text": "It now keeps track of the players that are connected (this required rewriting the java code to use a raw tcp stream instead of http for events to allow bidirectional communication)"}, {"post_id": 12275, "ts": "2026-06-20T01:25:17Z", "hours": 12.3925, "text": "Added a terminal feature to allow using the console of the minecraft server and cleaned up the codebase to the point of being somewhat presentable (removed the unused old code from the pre-stardance version as it is been largely rewritten)"}, {"post_id": 10265, "ts": "2026-06-16T22:09:20Z", "hours": 10.5117, "text": "The server now actually runs fully, it saves worlds to any S3-like server and allows downloading and uploading custom ones. It autosaves the worlds once every 5 minutes and when the server is shut down, and restarts the servers when the configuration is changed. It does not yet allow you to add operators to the server."}, {"post_id": 9246, "ts": "2026-06-15T15:05:13Z", "hours": 6.0061, "text": "Implemented Backend api created The web UI can save to it"}, {"post_id": 8372, "ts": "2026-06-13T22:29:29Z", "hours": 2.8611, "text": "Added server configuration UI autogeneration. It automatically shows only the configuration options supported by the server, requiring me to only implement the backend handler and add the option to the list of field names."}, {"post_id": 7541, "ts": "2026-06-12T16:18:51Z", "hours": 14.1831, "text": "Got basic functionality, with primitive web ui and nearly complete backend. The code is too messy to use, and I will soon rewrite most of it."}]...
|
Title: Self hosted minecraft hosting service by @s Title: Self hosted minecraft hosting service by @sometimesmycodeworks | Stardance
Devlogs:
Got basic functionality, with primitive web ui and nearly complete backend. The code is too messy to use, and I will soon rewrite most of it.
Added server configuration UI autogeneration. It automatically shows only the configuration options supported by the server, requiring me to only implement the backend handler and add the option to the list of field names.
Implemented Backend api created The web UI can save to it
The server now actually runs fully, it saves worlds to any S3-like server and allows downloading and uploading custom ones. It autosaves the worlds once every 5 minutes and when the server is shut down, and restarts the servers when the configuration is changed. It does not yet allow you to add operators to the server.
Added a terminal feature to allow using the console of the minecraft server and cleaned up the codebase to the point of being somewhat presentable (removed the unused old code from the pre-stardance version as it is been largely rewritten)
It now keeps track of the players that are connected (this required rewriting the java code to use a raw tcp stream instead of http for events to allow bidirectional communication)
Fixed the api endpoints (they did not delete the S3 data) for deleting servers and accounts and added the button to delete servers
The server now automatically shuts down servers with no players after 5 minutes (via checking if any players are connected to the proxy, not by querying the backend server) and starts them on players trying to join. Viaversion has been uninstalled from velocity (the proxy), as it was giving protocol errors intermittently for newly started servers. I now only have viaversion in front of the limbo server, which was not having issues, with the addition of viabackwards to allow old versions. Installing that to the limbo server was required as all minecraft versions connect to it, and limbo only implements support for one nativly.
Final touch ups: added a favicon, fixed a double-mount bug in the server join callback, and also prevented double-registration of accounts (which result in duplicate DB entries)
Added license, updated readme, allowed viewing server configuration without authorization, fixed the UI for users who do (removed save button and irrelevant config groups), renamed the routes for some pages (/dashboard/servers => /dashboard/my-servers. /dashboard/all-servers => /dashboard/servers), and hid the account menu for non-logged-in users.
Devlog - REVIEWERS READ THIS: before rejecting, read this thread: https://hackclub.slack.com/archives/C099P9FQQ91/p1782581500326529
Docker now allows more than 10 seconds for the servers to be saved, the MOTD now saves even if no formatting is applied, and it reloads the configuration when switching from and to the server configuration tile
Ships:
I made a minecraft server hosting service, which shuts down servers automatically that are not in use (and starts them up upon attempted connection) to save resources. It is slow due to the hardware, but I promise that the loading screen usually is not infinite (1min long usually)....
|
1793890043.1390169
|
1793976443.1390169
|
|
28532
|
Alpine linux nvidia drivers (abandoned) by @someti Alpine linux nvidia drivers (abandoned) by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
0
|
16.81
|
0
|
[]
|
[{"post_id": 21028, "ts": "202 [{"post_id": 21028, "ts": "2026-07-02T19:58:31Z", "hours": 0.9647, "text": "This has been a huge waste of time, the nvidia drivers can not run on MUSL libc due to the crazy glibc dependencies. I am giving up."}, {"post_id": 20422, "ts": "2026-07-02T00:46:26Z", "hours": 2.4486, "text": "Created the build scripts for the packages! It now can run a TTY with the official nvidia drivers."}, {"post_id": 20165, "ts": "2026-07-01T18:25:30Z", "hours": 1.7997, "text": "Updated the CLI to allow for exporting documentation only or excluding documentation in an export (along with fixing wine and systemd handling)"}, {"post_id": 19603, "ts": "2026-06-30T23:26:30Z", "hours": 2.8406, "text": "Put the nvidia driver unpacker I wrote into a seperate github repository and gave it a CLI ( https://github.com/imakebloatedcode/nvidia-unpacker )"}, {"post_id": 18798, "ts": "2026-06-30T00:36:29Z", "hours": 8.7589, "text": "I have rewritten the nvidia driver installer in node.js with an option to unpack into an an arbitrary directory instead of the filesystem root."}]...
|
Title: Alpine linux nvidia drivers (abandoned) by Title: Alpine linux nvidia drivers (abandoned) by @sometimesmycodeworks | Stardance
Devlogs:
I have rewritten the nvidia driver installer in node.js with an option to unpack into an an arbitrary directory instead of the filesystem root.
Put the nvidia driver unpacker I wrote into a seperate github repository and gave it a CLI ( https://github.com/imakebloatedcode/nvidia-unpacker )
Updated the CLI to allow for exporting documentation only or excluding documentation in an export (along with fixing wine and systemd handling)
Created the build scripts for the packages! It now can run a TTY with the official nvidia drivers.
This has been a huge waste of time, the nvidia drivers can not run on MUSL libc due to the crazy glibc dependencies. I am giving up....
|
1793458473.4513702
|
1794063273.4513702
|
|
31093
|
A programming language I hope by @sometimesmycodew A programming language I hope by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A programming language I hope by @sometimes Title: A programming language I hope by @sometimesmycodeworks | Stardance...
|
1793426184.5319786
|
1794030984.5319786
|
|
43518
|
Also working on craw's package manager by @som Also working on craw's package manager by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
0
|
5.94
|
0
|
[]
|
[{"post_id": 40213, "ts": "202 [{"post_id": 40213, "ts": "2026-08-03T16:53:22Z", "hours": 5.9367, "text": "Added OpenAPI schema autogeneration to make custom API client faster to write, and started rewriting the UI in preact"}]...
|
Title: Also working on craw's package manager Title: Also working on craw's package manager by @sometimesmycodeworks | Stardance
Devlogs:
Added OpenAPI schema autogeneration to make custom API client faster to write, and started rewriting the UI in preact...
|
1793966117.2850342
|
1794570917.2850342
|
|
45645
|
abcdefghijklmnopqrstuvwxyz by @sometimesmycodework abcdefghijklmnopqrstuvwxyz by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
0
|
0.27
|
0
|
[]
|
[{"post_id": 48446, "ts": "202 [{"post_id": 48446, "ts": "2026-08-16T19:54:20Z", "hours": 0.2706, "text": "This is a test!"}]...
|
Title: abcdefghijklmnopqrstuvwxyz by @sometimesmyc Title: abcdefghijklmnopqrstuvwxyz by @sometimesmycodeworks | Stardance
Devlogs:
This is a test!...
|
1793587977.6185186
|
1794451977.6185186
|
|
64660
|
Some dumb thing by @sometimesmycodeworks | Stardan Some dumb thing by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T01:49:58Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made absolutely nothing. I needed a ship (pending is okay) in unified for auditing an app Hack CLub is running, so I put this here. I might DM a SW to kindly ask them to reject this project sometime, but until then DON’T review this.", "repo": "", "demo": ""}]...
|
[{"post_id": 72040, "ts": "202 [{"post_id": 72040, "ts": "2026-09-22T01:47:08Z", "hours": 0.9147, "text": "Did absolutely nothing"}]...
|
Title: Some dumb thing by @sometimesmycodeworks | Title: Some dumb thing by @sometimesmycodeworks | Stardance
Devlogs:
Did absolutely nothing
Ships:
I made absolutely nothing. I needed a ship (pending is okay) in unified for auditing an app Hack CLub is running, so I put this here. I might DM a SW to kindly ask them to reject this project sometime, but until then DON’T review this....
|
1793836148.344846
|
1793922548.344846
|
|
64663
|
Minecraft virtual host proxy by @sometimesmycodewo Minecraft virtual host proxy by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Minecraft virtual host proxy by @sometimesm Title: Minecraft virtual host proxy by @sometimesmycodeworks | Stardance...
|
1793677987.8480113
|
1794282787.8480113
|
|
44062
|
openTunes by @sometgirldotonline | Stardance
|
sometgirldotonline
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: openTunes by @sometgirldotonline | Stardanc Title: openTunes by @sometgirldotonline | Stardance...
|
1793991232.3640332
|
1794596032.3640332
|
|
44064
|
an hackpad by @sometgirldotonline | Stardance
|
sometgirldotonline
|
0
|
0.97
|
0
|
[]
|
[{"post_id": 41168, "ts": "202 [{"post_id": 41168, "ts": "2026-08-05T06:21:45Z", "hours": 0.9667, "text": "i will hack this pad this was PAIN never trying something else other than tinkercad for 3d again kicad was easy tho not pictured: screw holes i fogor to add earlier"}]...
|
Title: an hackpad by @sometgirldotonline | Stardan Title: an hackpad by @sometgirldotonline | Stardance
Devlogs:
i will hack this pad this was PAIN never trying something else other than tinkercad for 3d again kicad was easy tho not pictured: screw holes i fogor to add earlier...
|
1793991234.1638603
|
1794596034.1638603
|
|
44471
|
Days Since HC Mass Add by @sometgirldotonline | St Days Since HC Mass Add by @sometgirldotonline | Stardance...
|
sometgirldotonline
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Days Since HC Mass Add by @sometgirldotonli Title: Days Since HC Mass Add by @sometgirldotonline | Stardance...
|
1793274986.6979585
|
1793879786.6979585
|
|
57039
|
Southbag Mobile Banking by @sometgirldotonline | S Southbag Mobile Banking by @sometgirldotonline | Stardance...
|
sometgirldotonline
|
1
|
4.55
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-01T10:50:06Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Ship #1 of Southbag Mobile (V1 V2) The naming is horrible on purpose. We intend to have a second version of the mobile app that is entirely different to the current one because we can This app is intentionally bad (it took effort to make it bad loll)", "repo": "https://github.com/southbaghq/mobile-v1", "demo": "https://github.com/SouthbagHQ/mobile-v1/releases/latest"}]...
|
[{"post_id": 66303, "ts": "202 [{"post_id": 66303, "ts": "2026-09-12T02:02:00Z", "hours": 1.5544, "text": "i’m going to be real i dont remember what happened in this time but: If you are the person who reviewed the project previously and rejected because of the banner, please re-test the project! The project was previously pointed at an old domain for its API and that is what was resulting in the “your internet is broken” thing (random unrelated picture because it needed one)"}, {"post_id": 59434, "ts": "2026-09-01T09:01:03Z", "hours": 2.9283, "text": "Southbag Mobile banking app is now avaliable for use. Nobody asked for this, but we deliver what you didn’t know you wanted. Androids only, Kevin hates iPhones. More serious talk: Built basic app yesterday, added all functions except for support Added support today tbh i cant really detail this too much because i was never thinking of submitting to Stardance"}]...
|
Title: Southbag Mobile Banking by @sometgirldotonl Title: Southbag Mobile Banking by @sometgirldotonline | Stardance
Devlogs:
Southbag Mobile banking app is now avaliable for use. Nobody asked for this, but we deliver what you didn’t know you wanted. Androids only, Kevin hates iPhones. More serious talk: Built basic app yesterday, added all functions except for support Added support today tbh i cant really detail this too much because i was never thinking of submitting to Stardance
i’m going to be real i dont remember what happened in this time but: If you are the person who reviewed the project previously and rejected because of the banner, please re-test the project! The project was previously pointed at an old domain for its API and that is what was resulting in the “your internet is broken” thing (random unrelated picture because it needed one)
Ships:
Ship #1 of Southbag Mobile (V1 V2) The naming is horrible on purpose. We intend to have a second version of the mobile app that is entirely different to the current one because we can This app is intentionally bad (it took effort to make it bad loll)...
|
1793865094.3769608
|
1793951494.3769608
|
|
4790
|
My awesome macropad! by @someshvarsharan_v | Stard My awesome macropad! by @someshvarsharan_v | Stardance...
|
someshvarsharan_v
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @someshvarsharan_v Title: My awesome macropad! by @someshvarsharan_v | Stardance...
|
1793285316.4335148
|
1793890116.4335148
|
|
42951
|
LangBuddy by @someshbxs1_py | Stardance
|
someshbxs1_py
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: LangBuddy by @someshbxs1_py | Stardance
|
1793915738.4353142
|
1794520538.4353142
|
|
29242
|
My awesome macropad! by @someonet | Stardance
|
someonet
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @someonet | Stardan Title: My awesome macropad! by @someonet | Stardance...
|
1793317968.6246169
|
1793922768.6246169
|
|
41649
|
My very own WebOS by @someonesmart11 | Stardance
|
someonesmart11
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @someonesmart11 | Star Title: My very own WebOS by @someonesmart11 | Stardance...
|
1793764351.8809166
|
1794369151.8809166
|
|
1761
|
Kinetic AHRS by @someonelse | Stardance
|
someonelse
|
1
|
71.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T16:08:31Z", "hours": 71.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is an algorithm to get orientation (roll, pitch and yaw) from raw sensor data. The underlying math was pretty difficult but I’m proud that I got it at least mostly working. Since this is very low level and hardware heavy it was hard to make a demo website for it. But if you have a spare mpu6050 or something give it a try!", "repo": "https://github.com/someonelse20/kinetic", "demo": "https://kinetic.someonelse.net"}]...
|
[{"post_id": 75197, "ts": "202 [{"post_id": 75197, "ts": "2026-09-29T13:44:03Z", "hours": 2.9275, "text": "Finishing up project info To complete the project I started with filling out a readme. I then got my website up and running at kinetic.someonelse.net. I still plan to work on this after I submit it but for now I just want to submit my work."}, {"post_id": 74132, "ts": "2026-09-26T18:47:23Z", "hours": 1.8086, "text": "Added docs I looked into ways of adding documentation for this project and found that doxygen was exactly what I wanted. I went through the quick start and got it running a bit. Then I used my ai to write inline comments for all the functions. I went through all of them and fixed any errors that it made. Then when generating the config with doxygen I ran into the problem where it only made docs for structs and not for functions. After tweaking everything it now works. I changed so much I don’t really know what individual tweak actually fixed it."}, {"post_id": 73110, "ts": "2026-09-24T12:38:09Z", "hours": 8.0983, "text": "Started demo website Since the due date for stardance it coming up quick I shifted to finishing the project and making a demo website for Kinetic. I tried having my ai just try to do it all from scratch but it fell flat on its face. It made a website where the buttons didn’t work and after looking at the source code it merely tried to rewrite the EKF code rather that run the actual library. So I then went to create a python wrapper with pybind11 myself. After reading the docs and fixing countless compiler errors I got it to compile correctly. I then asked my ai to create it from the c++ python wrapper file which it also failed at. I took the bad code it wrote and modified it myself to use the actual python wrapper so it could have a pure python reference. It was finally able to successfully make a website from that. There was a few errors which I then fixed to create a working website. I haven’t started hosting it yet though."}, {"post_id": 68320, "ts": "2026-09-14T22:44:36Z", "hours": 4.2158, "text": "Wrote calibration suite I went to make a calibration python script. I tried using ai pretty heavily for this. At first I directed it to fill out stub files first to get structure and go step by step. Since I’m using dumb self-hosted models it got confused when I asked it to do all of it at once. I got it to write the helper scripts pretty well but it fell flat on its face with the main executable. I copied it over and rewrote pretty much everything except the parsing logic. Even then some of the flags are unused. After writing the core logic myself the script works with a static reference I recorded a bit back. To use it point it at a directory with recording files and it will calibrate as much as it can with the data it gets. I’m using jsonl for the recording format and a ai generated script that reads serial data or just a file and converts it over to the jsonl format. I noticed that comparing with old sensor recordings some of the raw sensor values have changed so I will go through getting all the calibration data next."}, {"post_id": 63579, "ts": "2026-09-07T14:30:04Z", "hours": 0.6919, "text": "Tested against actual implementation I tested the real data I recorded with an actual working implementation of an extended kalman filter , the one I’m roughly following as a guide for my own. I used ai a lot which worked pretty well, the code is very ugly but its just for testing so it doesn’t really matter. After my ai had got it working I went in and tuned the parameters for my dataset and it actually performed kinda worse than my own code! This really encouraged me because it means that my core code works and the errors are with the data processing. Next I think I’ll go through the gauntlet of calibrating my IMU which shouldn’t be too hard because I already did for a very similar project a while ago."}, {"post_id": 62391, "ts": "2026-09-05T18:43:14Z", "hours": 7.2383, "text": "Improved performance with real data Overall most of what I did here was bang my head against a wall trying to make it work. I made a lot of small changes but as you can see with the video still a lot to go. The biggest change I made was originally I used a NED or north east down corresponding to x y z and I switched over for ENU or east north up. I though originally I could just choose at a whim which one to use but different sensors use different reference frames and converting it over is more trouble than its worth. Now the output is a good bit better and I think I can improve it a lot by calibrating the sensor, currently the gyro outputs 3 deg/s when stationary. Next I will also be comparing against a much better kalman filter implementation in python to see how much of it is processing the raw data or the core algorithm."}, {"post_id": 53438, "ts": "2026-08-23T23:55:30Z", "hours": 2.4714, "text": "Finally fixed all memory leaks After running on the rp2040 again after I thought I fixed the memory leaks it still panicked with an out of memory error. So I went to take another look. The main problem is that all the basic matrix math functions allocated a new matrix for their returns. I had an idea of restructuring them to instead input another matrix to store the result and only return an error code. In practice this didn’t do much since I needed to allocate memory most of the time anyway. This did help a little bit but was probably more trouble than it was worth. Along the way of doing this I noticed a few more memory leaks and fixed them as I went. When I was done I got compile error after compile error but I eventually worked through all of them. But once the compiler errors went away it gave an output that was just slightly off. I narrowed it down to being in the math file and I sent my ai of to find the bug. After a long wait the error was simply that I forgot to uncomment some code when I was debugging the compiler errors. After poking around at a few more memory leaks it now gives the same output without losing any memory at all!"}, {"post_id": 51367, "ts": "2026-08-21T00:19:35Z", "hours": 1.3608, "text": "Tested with recorded data Since the hardware I setup spat out gibberish when I first tried running kinetic on it I thought to record the raw imu output and test that on my computer instead. To do this I modified my rp2040 script to print the data to a serial output with a 10ms delay. I then asked my ai to make a script to record the data and save it to a csv file which it was able to do pretty well. On the kinetic side I made a new file that opens a csv file and pipes the data into kinetic which a little more help from ai. I ran it and to my surprise it actually outputted what I would expect. The picture below is the kinetic output from when the imu was sitting on my desk. I did run it again with a few different datasets I recorded and for some reason the angle never went above 1 deg which is a little weird and still wrong but definitely not the erratic output I first saw."}, {"post_id": 49303, "ts": "2026-08-18T01:22:37Z", "hours": 2.9925, "text": "Fixed memory leaks (mostly) This is a bit of a tangent from running on my rp2040 but it’s important. When I did run it on my board it threw an out of memory panic so I began to look for ways to fix that. I found valgrind which is a tool to check for memory leaks in c/c++ programs which was exactly what I need. Running it revealed that my test suite alone ate up ~600 kilobytes of extra memory which is very not good. I began to go through all the errors valgrind gave me and finding ways to free memory. I created a few functions to help with this, mainly for the core functions such as add/sub_matrix and mul_matrix, that run the base function but then free the first argument to make the code a little cleaner. In the end I was able to solve all but two memory leaks in the kinetic code. One I think is a false positive where the error is when the kalman filter state is updated. There were a few more in the simulation code. I tried to fix some but gave up since it doesn’t really mater if that leaks memory."}, {"post_id": 48551, "ts": "2026-08-17T00:09:31Z", "hours": 2.0058, "text": "Got running on real hardware After getting the IMU up and running I went and grabbed an oled display I had kicking around and plugged the whole thing into a breadboard. There is example oled driver code in the pico sdk so I took that and modified it to work for this. I then copied in my kinetic project and had to mess around a lot with cmake to get it to import right. I ended up making a new cmake file to help with this. But when it actually started running the output was nowhere near to correct and had an out of memory panic. I’ll probably figure out how to run it though a linter or something next."}, {"post_id": 48497, "ts": "2026-08-16T21:21:48Z", "hours": 2.6944, "text": "Setting up to test on real hardware So far the project looks good in my simulations, but now I want to move on to testing in real applications on real hardware. To this I grabbed some parts I had laying around including a custom devboard I made for a previous hackclub project. I am using the LSM9DS1 because it has a gyroscope, accelerometer, and a magnetometer in one chip and I happen to have one. I created a new git repo called imu-prototype to store all the files in. In there I set up a raspberry pi pico project and coded a very simple driver for the IMU."}, {"post_id": 46624, "ts": "2026-08-14T00:30:19Z", "hours": 1.1403, "text": "Fixed Initial State Bug As soon as I plugged the kalman filter to the new sin wave tests I noticed that the output was way off. I put off fixing it until first fixing the error function first. To find the bug I first tried asking my ai and it halucinated something that had nothing to do with the problem. I started to look for the bug myself and noticed that for the initial state the y axis had the wrong sign. When it should have had about 57 degrees it had -57 ish. So I went to the code that calculates that and couldn’t find an obvious bug. Since I couldn’t fix the existing code I replaced it with a different method to do the same thing. The old code calculated a rotation matrix with the accelerometer and magnetometer and the new code calculates the euler angles. I’m hoping that because it starts with a static state I won’t run into gimble lock but that’s a future me problem."}, {"post_id": 46567, "ts": "2026-08-13T21:46:57Z", "hours": 1.4194, "text": "Improved error calculation I noticed the error calculation didn’t seem to behave as expected so I did a little research and found an equation to find the angle between two quaternions and I’m using that angle as an error. I had to write two new functions, one to get the conjugate of a quaternion which was pretty simple and one to get the inverse of a quaternion which wasn’t to hard either."}, {"post_id": 45446, "ts": "2026-08-11T22:05:12Z", "hours": 1.2792, "text": "Added new tests Previously I only had one test that linearly integrates between two orientations. Now there are two more, one that’s x axis is a sin wave, and another where all axes are sin waves with an offset."}, {"post_id": 44960, "ts": "2026-08-11T02:09:38Z", "hours": 4.8144, "text": "Put a lot of work into improving tests and simulations I probably put too much effort into the simulations and tests and should work more on the actual code but having good tests is pretty nice. I added some simple alternate orientation algorithms, one that simply inegrates the gyro measurement and another that it a complementary filter. I revamped the simulation code to work with any number of algorithms as long as they have the same format. I then spent a while making a nice error sort of tui that changes based on how many algorithms are being used."}, {"post_id": 44746, "ts": "2026-08-10T18:27:34Z", "hours": 1.3661, "text": "Found bug in simulation, now results are a lot better After a little debugging I noticed a bug in the function in the simulation that calculates the rate of change between orientations used to simulate gyro measurements. After fixing that the kalman filter works almost perfectly from the graph!"}, {"post_id": 44690, "ts": "2026-08-10T16:55:09Z", "hours": 4.4683, "text": "ITS ALMOST WORKING! So much better that before. After I wrote the code to abstract the kalman filter logic, there was still the rest of the algorithm to reimplement. I copied over what I could and for some of the functions I changed the way they worked. The guide I am following went through most of the calculations with the general matrix math and then at the end gave the full calculations to get the final matrix with single numbers. Following the spirit of my rewrite I decided to instead use the matrix math where I could. After this I hoked it up to my graphing program and it almost sorta kinda works! I have no idea what changed that makes it work but I’m not complaining."}, {"post_id": 43294, "ts": "2026-08-08T14:01:56Z", "hours": 3.2003, "text": "Abstracted Kalman filter logic I decided that since the code I already wrote wasn’t working, why not just try again? In all seriousness there was a few reasons for the rewrite, that other parts of the program might need their own kalman filter and it would be easier to understand and maintain but mostly I was sick of the code not working and not knowing why. So I found the basic equations for the extended kalman filter and went to implement that. At first I was using a struct of function pointers to get the input for the ekf (extended kalman filter) but was able to rewrite it to input static matrices instead which was way less clunky."}, {"post_id": 39655, "ts": "2026-08-02T19:38:25Z", "hours": 3.1517, "text": "Still debugging but at least there’s a pretty graph I hooked the kinetic output up to the graph program which only showed that the kinetic part doesn’t work."}, {"post_id": 36767, "ts": "2026-07-29T01:08:26Z", "hours": 2.3639, "text": "Ditched ai code and wrote a better plotting script and a few bug fixes After my ai couldn’t create the graph program I wanted and with calling python from c being so hard I went looking for alternatives. I found gnuplot which isn’t a c library but can be called fairly easily from c using pipes which I still don’t understand completely. I did find some code though that already works so I was able to modify it to what I wanted."}, {"post_id": 35408, "ts": "2026-07-26T19:49:48Z", "hours": 3.9044, "text": "Used Hermes agent to write gnuplot program which still doesn’t work. I’m going back an editing all my devlogs to more than just one line from this devlog to the one titled “Improved error calculation”. I wanted to create a way to visualize what was going on. I initially tried to go with using matplotlib and calling the python from c. I thought this was something my ai could handle. It couldn’t. I don’t think it could make anything that could even compile. To the ai’s credit I was running it myself on my computer so it’s a lot dumber than most but it turned out to be harder than I thought."}, {"post_id": 29227, "ts": "2026-07-16T00:25:01Z", "hours": 0.5828, "text": "Found out my inverse function works, the matrix I’m putting in is invalid"}, {"post_id": 27306, "ts": "2026-07-12T19:25:48Z", "hours": 7.2469, "text": "Getting Kalman Implementation Working Project Overview I’ve done a lot of work here on spare time and I got really behind on making journals so sorry for that. Since this is my first devlog I’ll start with an overview of this project. This is a sensor fusion algorithm (and a full flight controller if I have time) to obtain orientation, speed, direction, and position from raw sensor data. What I Worked On The bulk of the work here was getting the extended kalman filter for the imu working (which it still doesn’t) . I had a lot of trouble getting the initialization function working and after banging my head against a wall most of the problems were in the underlying matrix math functions and the weirdness of the matrix library I’m using. I also had a little side tangent of getting the initial orientation through an easier method but I eventually got it to work. To test all of this I wrote some code to generate fake gyrometer, accelerometer, and magnetometer data with some random rotations. Somewhere here I also decided to convert all doubles to floats and all size_t to uint_8 because this will be running on very minimal hardware. Once I got the init function working I then went on to the main loop function where I realized I did not know matrix math. A lot of my math functions were completely wrong or not the right ones. After fixing this I also did some restructuring to make the code flow better and I got the first half of the kalman filter mostly working. I then stumbled onto my atrocious matrix inversion function where I was just dividing all the elements under 1 which is definitely not how that works and after some research I added a few helper functions and that’s about the point I stopped, with the full inversion function still not working of course."}]...
|
Title: Kinetic AHRS by @someonelse | Stardance
De Title: Kinetic AHRS by @someonelse | Stardance
Devlogs:
Getting Kalman Implementation Working Project Overview I’ve done a lot of work here on spare time and I got really behind on making journals so sorry for that. Since this is my first devlog I’ll start with an overview of this project. This is a sensor fusion algorithm (and a full flight controller if I have time) to obtain orientation, speed, direction, and position from raw sensor data. What I Worked On The bulk of the work here was getting the extended kalman filter for the imu working (which it still doesn’t) . I had a lot of trouble getting the initialization function working and after banging my head against a wall most of the problems were in the underlying matrix math functions and the weirdness of the matrix library I’m using. I also had a little side tangent of getting the initial orientation through an easier method but I eventually got it to work. To test all of this I wrote some code to generate fake gyrometer, accelerometer, and magnetometer data with some random rotations. Somewhere here I also decided to convert all doubles to floats and all size_t to uint_8 because this will be running on very minimal hardware. Once I got the init function working I then went on to the main loop function where I realized I did not know matrix math. A lot of my math functions were completely wrong or not the right ones. After fixing this I also did some restructuring to make the code flow better and I got the first half of the kalman filter mostly working. I then stumbled onto my atrocious matrix inversion function where I was just dividing all the elements under 1 which is definitely not how that works and after some research I added a few helper functions and that’s about the point I stopped, with the full inversion function still not working of course.
Found out my inverse function works, the matrix I’m putting in is invalid
Used Hermes agent to write gnuplot program which still doesn’t work. I’m going back an editing all my devlogs to more than just one line from this devlog to the one titled “Improved error calculation”. I wanted to create a way to visualize what was going on. I initially tried to go with using matplotlib and calling the python from c. I thought this was something my ai could handle. It couldn’t. I don’t think it could make anything that could even compile. To the ai’s credit I was running it myself on my computer so it’s a lot dumber than most but it turned out to be harder than I thought.
Ditched ai code and wrote a better plotting script and a few bug fixes After my ai couldn’t create the graph program I wanted and with calling python from c being so hard I went looking for alternatives. I found gnuplot which isn’t a c library but can be called fairly easily from c using pipes which I still don’t understand completely. I did find some code though that already works so I was able to modify it to what I wanted.
Still debugging but at least there’s a pretty graph I hooked the kinetic output up to the graph program which only showed that the kinetic part doesn’t work.
Abstracted Kalman filter logic I decided that since the code I already wrote wasn’t working, why not just try again? In all seriousness there was a few reasons for the rewrite, that other parts of the program might need their own kalman filter and it would be easier to understand and maintain but mostly I was sick of the code not working and not knowing why. So I found the basic equations for the extended kalman filter and went to implement that. At first I was using a struct of function pointers to get the input for the ekf (extended kalman filter) but was able to rewrite it to input static matrices instead which was way less clunky.
ITS ALMOST WORKING! So much better that before. After I wrote the code to abstract the kalman filter logic, there was still the rest of the algorithm to reimplement. I copied over what I could and for some of the functions I changed the way they worked. The guide I am following went through most of the calculations with the general matrix math and then at the end gave the full calculations to get the final matrix with single numbers. Following the spirit of my rewrite I decided to instead use the matrix math where I could. After this I hoked it up to my graphing program and it almost sorta kinda works! I have no idea what changed that makes it work but I’m not complaining.
Found bug in simulation, now results are a lot better After a little debugging I noticed a bug in the function in the simulation that calculates the rate of change between orientations used to simulate gyro measurements. After fixing that the kalman filter works almost perfectly from the graph!
Put a lot of work into improving tests and simulations I probably put too much effort into the simulations and tests and should work more on the actual code but having good tests is pretty nice. I added some simple alternate orientation algorithms, one that simply inegrates the gyro measurement and another that it a complementary filter. I revamped the simulation code to work with any number of algorithms as long as they have the same format. I then spent a while making a nice error sort of tui that changes based on how many algorithms are being used.
Added new tests Previously I only had one test that linearly integrates between two orientations. Now there are two more, one that’s x axis is a sin wave, and another where all axes are sin waves with an offset.
Improved error calculation I noticed the error calculation didn’t seem to behave as expected so I did a little research and found an equation to find the angle between two quaternions and I’m using that angle as an error. I had to write two new functions, one to get the conjugate of a quaternion which was pretty simple and one to get the inverse of a quaternion which wasn’t to hard either.
Fixed Initial State Bug As soon as I plugged the kalman filter to the new sin wave tests I noticed that the output was way off. I put off fixing it until first fixing the error function first. To find the bug I first tried asking my ai and it halucinated something that had nothing to do with the problem. I started to look for the bug myself and noticed that for the initial state the y axis had the wrong sign. When it should have had about 57 degrees it had -57 ish. So I went to the code that calculates that and couldn’t find an obvious bug. Since I couldn’t fix the existing code I replaced it with a different method to do the same thing. The old code calculated a rotation matrix with the accelerometer and magnetometer and the new code calculates the euler angles. I’m hoping that because it starts with a static state I won’t run into gimble lock but that’s a future me problem.
Setting up to test on real hardware So far the project looks good in my simulations, but now I want to move on to testing in real applications on real hardware. To this I grabbed some parts I had laying around including a custom devboard I made for a previous hackclub project. I am using the LSM9DS1 because it has a gyroscope, accelerometer, and a magnetometer in one chip and I happen to have one. I created a new git repo called imu-prototype to store all the files in. In there I set up a raspberry pi pico project and coded a very simple driver for the IMU.
Got running on real hardware After getting the IMU up and running I went and grabbed an oled display I had kicking around and plugged the whole thing into a breadboard. There is example oled driver code in the pico sdk so I took that and modified it to work for this. I then copied in my kinetic project and had to mess around a lot with cmake to get it to import right. I ended up making a new cmake file to help with this. But when it actually started running the output was nowhere near to correct and had an out of memory panic. I’ll probably figure out how to run it though a linter or something next.
Fixed memory leaks (mostly) This is a bit of a tangent from running on my rp2040 but it’s important. When I did run it on my board it threw an out of memory panic so I began to look for ways to fix that. I found valgrind which is a tool to check for memory leaks in c/c++ programs which was exactly what I need. Running it revealed that my test suite alone ate up ~600 kilobytes of extra memory which is very not good. I began to go through all the errors valgrind gave me and finding ways to free memory. I created a few functions to help with this, mainly for the core functions such as add/sub_matrix and mul_matrix, that run the base function but then free the first argument to make the code a little cleaner. In the end I was able to solve all but two memory leaks in the kinetic code. One I think is a false positive where the error is when the kalman filter state is updated. There were a few more in the simulation code. I tried to fix some but gave up since it doesn’t really mater if that leaks memory.
Tested with recorded data Since the hardware I setup spat out gibberish when I first tried running kinetic on it I thought to record the raw imu output and test that on my computer instead. To do this I modified my rp2040 script to print the data to a serial output with a 10ms delay. I then asked my ai to make a script to record the data and save it to a csv file which it was able to do pretty well. On the kinetic side I made a new file that opens a csv file and pipes the data into kinetic which a little more help from ai. I ran it and to my surprise it actually outputted what I would expect. The picture below is the kinetic output from when the imu was sitting on my desk. I did run it again with a few different datasets I recorded and for some reason the angle never went above 1 deg which is a little weird and still wrong but definitely not the erratic output I first saw.
Finally fixed all memory leaks After running on the rp2040 again after I thought I fixed the memory leaks it still panicked with an out of memory error. So I went to take another look. The main problem is that all the basic matrix math functions allocated a new matrix for their returns. I had an idea of restructuring them to instead input another matrix to store the result and only return an error code. In practice this didn’t do much since I needed to allocate memory most of the time anyway. This did help a little bit but was probably more trouble than it was worth. Along the way of doing this I noticed a few more memory leaks and fixed them as I went. When I was done I got compile error after compile error but I eventually worked through all of them. But once the compiler errors went away it gave an output that was just slightly off. I narrowed it down to being in the math file and I sent my ai of to find the bug. After a long wait the error was simply that I forgot to uncomment some code when I was debugging the compiler errors. After poking around at a few more memory leaks it now gives the same output without losing any memory at all!
Improved performance with real data Overall most of what I did here was bang my head against a wall trying to make it work. I made a lot of small changes but as you can see with the video still a lot to go. The biggest change I made was originally I used a NED or north east down corresponding to x y z and I switched over for ENU or east north up. I though originally I could just choose at a whim which one to use but different sensors use different reference frames and converting it over is more trouble than its worth. Now the output is a good bit better and I think I can improve it a lot by calibrating the sensor, currently the gyro outputs 3 deg/s when stationary. Next I will also be comparing against a much better kalman filter implementation in python to see how much of it is processing the raw data or the core algorithm.
Tested against actual implementation I tested the real data I recorded with an actual working implementation of an extended kalman filter , the one I’m roughly following as a guide for my own. I used ai a lot which worked pretty well, the code is very ugly but its just for testing so it doesn’t really matter. After my ai had got it working I went in and tuned the parameters for my dataset and it actually performed kinda worse than my own code! This really encouraged me because it means that my core code works and the errors are with the data processing. Next I think I’ll go through the gauntlet of calibrating my IMU which shouldn’t be too hard because I already did for a very similar project a while ago.
Wrote calibration suite I went to make a calibration python script. I tried using ai pretty heavily for this. At first I directed it to fill out stub files first to get structure and go step by step. Since I’m using dumb self-hosted models it got confused when I asked it to do all of it at once. I got it to write the helper scripts pretty well but it fell flat on its face with the main executable. I copied it over and rewrote pretty much everything except the parsing logic. Even then some of the flags are unused. After writing the core logic myself the script works with a static reference I recorded a bit back. To use it point it at a directory with recording files and it will calibrate as much as it can with the data it gets. I’m using jsonl for the recording format and a ai generated script that reads serial data or just a file and converts it over to the jsonl format. I noticed that comparing with old sensor recordings some of the raw sensor values have changed so I will go through getting all the calibration data next.
Started demo website Since the due date for stardance it coming up quick I shifted to finishing the project and making a demo website for Kinetic. I tried having my ai just try to do it all from scratch but it fell flat on its face. It made a website where the buttons didn’t work and after looking at the source code it merely tried to rewrite the EKF code rather that run the actual library. So I then went to create a python wrapper with pybind11 myself. After reading the docs and fixing countless compiler errors I got it to compile correctly. I then asked my ai to create it from the c++ python wrapper file which it also failed at. I took the bad code it wrote and modified it myself to use the actual python wrapper so it could have a pure python reference. It was finally able to successfully make a website from that. There was a few errors which I then fixed to create a working website. I haven’t started hosting it yet though.
Added docs I looked into ways of adding documentation for this project and found that doxygen was exactly what I wanted. I went through the quick start and got it running a bit. Then I used my ai to write inline comments for all the functions. I went through all of them and fixed any errors that it made. Then when generating the config with doxygen I ran into the problem where it only made docs for structs and not for functions. After tweaking everything it now works. I changed so much I don’t really know what individual tweak actually fixed it.
Finishing up project info To complete the project I started with filling out a readme. I then got my website up and running at kinetic.someonelse.net. I still plan to work on this after I submit it but for now I just want to submit my work.
Ships:
This is an algorithm to get orientation (roll, pitch and yaw) from raw sensor data. The underlying math was pretty difficult but I’m proud that I got it at least mostly working. Since this is very low level and hardware heavy it was hard to make a demo website for it. But if you have a spare mpu6050 or something give it a try!...
|
1793793146.7985418
|
1793879546.7985418
|
|
26365
|
Untitled by @someonelse | Stardance
|
someonelse
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @someonelse | Stardance
|
1793868545.6238456
|
1794732545.6238456
|
|
10514
|
My awesome macropad! by @someone_you_know | Starda My awesome macropad! by @someone_you_know | Stardance...
|
someone_you_know
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @someone_you_know | Title: My awesome macropad! by @someone_you_know | Stardance...
|
1793270907.2394557
|
1793875707.2394557
|
|
47631
|
my website by @someone_you_know | Stardance
|
someone_you_know
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: my website by @someone_you_know | Stardance
|
1793897398.272538
|
1794502198.272538
|
|
18677
|
something importent by @someone_mee | Stardance
|
someone_mee
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: something importent by @someone_mee | Stard Title: something importent by @someone_mee | Stardance...
|
1793271311.1954525
|
1793876111.1954525
|
|
48196
|
Image Retro-izer by @someone21 | Stardance
|
someone21
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Image Retro-izer by @someone21 | Stardance
|
1793926028.4624028
|
1794790028.4624028
|
|
869
|
My first slack bot! by @someone | Stardance
|
someone
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @someone | Stardance
|
1793451139.4964437
|
1794055939.4964437
|
|
8400
|
My awesome macropad! by @somenassim | Stardance
|
somenassim
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @somenassim | Stard Title: My awesome macropad! by @somenassim | Stardance...
|
1793400983.0215974
|
1794005783.0215974
|
|
29236
|
FlightML by @someguy | Stardance
|
someguy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: FlightML by @someguy | Stardance
|
1793944494.793233
|
1794808494.793233
|