|
6879
|
Untitled project by @Turtin | Stardance
|
Turtin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Turtin | Stardance
|
1793227895.4544976
|
1793832695.4544976
|
|
6880
|
IL2LLVM by @Azureian | Stardance
|
Azureian
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: IL2LLVM by @Azureian | Stardance
|
1793159573.5571198
|
1793764373.5571198
|
|
6881
|
WristBand by @EEDAC | Stardance
|
EEDAC
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WristBand by @EEDAC | Stardance
|
1793134463.7985358
|
1793739263.7985358
|
|
6882
|
My awesome macropad! by @alexmcnally740 | Stardanc My awesome macropad! by @alexmcnally740 | Stardance...
|
alexmcnally740
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @alexmcnally740 | S Title: My awesome macropad! by @alexmcnally740 | Stardance...
|
1793227776.1526892
|
1793832576.1526892
|
|
6883
|
My awesome macropad! by @elidahlquist427 | Stardan My awesome macropad! by @elidahlquist427 | Stardance...
|
elidahlquist427
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @elidahlquist427 | Title: My awesome macropad! by @elidahlquist427 | Stardance...
|
1793386388.3404174
|
1793991188.3404174
|
|
6884
|
My first slack bot! by @Xynal | Stardance
|
Xynal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Xynal | Stardance
|
1793145203.9717371
|
1793750003.9717371
|
|
6885
|
Spiderman Lamp by @ABYLOVESCATS | Stardance
|
ABYLOVESCATS
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Spiderman Lamp by @ABYLOVESCATS | Stardance
|
1793231609.2883236
|
1793836409.2883236
|
|
6886
|
Idk yet by @Lavender | Stardance
|
Lavender
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Idk yet by @Lavender | Stardance
|
1793512038.7871504
|
1794116838.7871504
|
|
6887
|
yswsagain by @cloudglides | Stardance
|
cloudglides
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yswsagain by @cloudglides | Stardance
|
1793501361.1725445
|
1794106161.1725445
|
|
6888
|
My Slack Bot!!! by @Quickmando | Stardance
|
Quickmando
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My Slack Bot!!! by @Quickmando | Stardance
|
1793371999.1479027
|
1793976799.1479027
|
|
6889
|
Stranger by @melon | Stardance
|
melon
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Stranger by @melon | Stardance
|
1793173810.0379932
|
1793778610.0379932
|
|
6890
|
Personal Website by @saanvi4800 | Stardance
|
saanvi4800
|
0
|
14.45
|
0
|
[]
|
[{"post_id": 30011, "ts": "202 [{"post_id": 30011, "ts": "2026-07-17T08:00:48Z", "hours": 2.0206, "text": "I started and finished the photography page!"}, {"post_id": 23862, "ts": "2026-07-07T01:34:39Z", "hours": 1.4492, "text": "figured out how to deploy FINALYY AND PICTURES STILL ARE THERE"}, {"post_id": 16592, "ts": "2026-06-27T00:00:32Z", "hours": 1.9364, "text": "Added another project with links, changed image size grid stuff to look good on smaller screens and adjusted font"}, {"post_id": 16521, "ts": "2026-06-26T21:39:10Z", "hours": 1.6814, "text": "I created the dropbox component and added it to my projects page! I also added a couple projects to the list"}, {"post_id": 7246, "ts": "2026-06-12T02:48:06Z", "hours": 5.1794, "text": "added icon (contact links), the page ring thing from a couple yswss ago, and reformatting because I forgot phones exist."}, {"post_id": 6962, "ts": "2026-06-11T17:52:25Z", "hours": 1.7233, "text": "added picture that changes when clicked and other little frills like link hover squiggles. also fixed up formatting errors."}, {"post_id": 6477, "ts": "2026-06-10T21:52:00Z", "hours": 0.4594, "text": "Creating the navbar!"}]...
|
Title: Personal Website by @saanvi4800 | Stardance Title: Personal Website by @saanvi4800 | Stardance
Devlogs:
Creating the navbar!
added picture that changes when clicked and other little frills like link hover squiggles. also fixed up formatting errors.
added icon (contact links), the page ring thing from a couple yswss ago, and reformatting because I forgot phones exist.
I created the dropbox component and added it to my projects page! I also added a couple projects to the list
Added another project with links, changed image size grid stuff to look good on smaller screens and adjusted font
figured out how to deploy FINALYY AND PICTURES STILL ARE THERE
I started and finished the photography page!...
|
1793509020.8593082
|
1794113820.8593082
|
|
6891
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792889338.4487507
|
1793753338.4487507
|
|
6892
|
Stock Options Decay Simulator by @pg_pixel | Stard Stock Options Decay Simulator by @pg_pixel | Stardance...
|
pg_pixel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Stock Options Decay Simulator by @pg_pixel Title: Stock Options Decay Simulator by @pg_pixel | Stardance...
|
1793325300.81188
|
1793930100.81188
|
|
6893
|
Untitled by @Brianna | Stardance
|
Brianna
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Brianna | Stardance
|
1793328584.7607753
|
1793933384.7607753
|
|
6894
|
Robot Arm by @ja_heath | Stardance
|
ja_heath
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Robot Arm by @ja_heath | Stardance
|
1793515976.1766505
|
1794120776.1766505
|
|
6895
|
Doohickeyboard by @Omelette | Stardance
|
Omelette
|
0
|
44.65
|
0
|
[]
|
[{"post_id": 27280, "ts": "202 [{"post_id": 27280, "ts": "2026-07-12T18:35:43Z", "hours": 4.7303, "text": "waka waka ehh ehh. i learned how to use open scad, and designed the building blocks to make the cases, this consisted of making different base and top files, and for different grid lens i can just change up the cad a bit! really cool beans. these screenshots are stl files i made which demonstrate this working for the core, i did have to make a usbee port."}, {"post_id": 23156, "ts": "2026-07-05T23:00:00Z", "hours": 6.2389, "text": "so i finished my cad and also made a stardew valley hut in magica voxel, i am never gonna touch magica voxel again with a 10 foot pole. mainly making the hut, not much to say."}, {"post_id": 19646, "ts": "2026-07-01T00:54:40Z", "hours": 5.7558, "text": "so well i went to my friends office one day and kinda locked in there, and well i did a ton of stuff, including half a cad, this was mainly me iterating through my pcb, spending far too long on trying to get the 3d model working, but to no avail. i then tried to do the cad without that, and it looks alright. i need to add in magnets and top tho. hour of lapse inflation"}, {"post_id": 16598, "ts": "2026-06-27T00:24:06Z", "hours": 2.7344, "text": "wahoo another hour of lookout inflation, well i mean i already have 13 hours and i dmed fruad squad like 20 thousand times. ok but i made the rotary encoder thingy. the schematic was really simple, but well uh the pcb was tiny with two ffs and it gave me ptsd, this hurts my eyes to look at, schematic was free tho. it was really just me wiring up gpio stuff and then doing other stuff but this was NOT FUN AT ALL and well im almost done with pcb stuff."}, {"post_id": 15405, "ts": "2026-06-25T01:19:50Z", "hours": 3.3489, "text": "I finished some of the schematic, and had to work on footprint palcement. I think i have gotten more effecient at them, hopefully i can do the nxt two soon. i finished the footpring and it required a lot more stuff cause of how many heyboard switches there were. either way i locked in. I think theres a bit of inflation tho. meow"}, {"post_id": 11350, "ts": "2026-06-18T15:45:45Z", "hours": 1.6814, "text": "Ok so after fixing a lookout bug, i get why its better then lapse. anyway i learnt how keyboard grids worked and almost finished the schematic of my numpad."}, {"post_id": 10778, "ts": "2026-06-17T18:08:14Z", "hours": 2.2708, "text": "Wsg girly pops i finished the macropad. twas really just alligning the connectors, making a bus that they all connect on and wiring it up. literally free ngl. wait i forgor screw holes one sec chat."}, {"post_id": 10062, "ts": "2026-06-16T17:14:00Z", "hours": 2.6839, "text": "Argh probably lapse inslaytion but i did work for 2 hours on first of all adding in screw holes to the board and had to redo some of the wiring. After finishing that, I started working on the macropad. I used a chip that converts GPIO to I2C, and did all the wiring. I also figured out all the footprints and imported them. I also started on the design, lots of stuff so lots of screenshots."}, {"post_id": 6895, "ts": "2026-06-11T15:42:45Z", "hours": 3.7711, "text": "Ok so the first 2 and a half hours r lapse inflation(go figure), but i basically finished the pcb by wiring everything and adding in pcb padding. twas very annoying"}, {"post_id": 5672, "ts": "2026-06-09T15:29:41Z", "hours": 9.8439, "text": "i think there may be a bit of lapse time inflation, but I worked on positioning the footprints. my inner perfectionist came out and i am trying to make these things precise as two ffs"}, {"post_id": 4985, "ts": "2026-06-08T17:09:52Z", "hours": 1.0381, "text": "Hi Cat My kicad crashed and I had to redo the schematic and update it with correct battery wiring. I started working on the footprint and just getting general meaasurements for how it will work. I also had to import in the pogo pins and figure out which ones to use. Pogo pins are so good and really cool and r perfect for this project. Bye Dog"}, {"post_id": 4564, "ts": "2026-06-07T22:09:27Z", "hours": 0.5533, "text": "So I started making the core module, i didnt have any pins, but i set up the project directory and added in le xiao after doing a bit of looking into which one to use. I also did an hour of asking people what connectors i should use and i decided on using 4 pin pogos. cant log research tho :("}]...
|
Title: Doohickeyboard by @Omelette | Stardance
De Title: Doohickeyboard by @Omelette | Stardance
Devlogs:
So I started making the core module, i didnt have any pins, but i set up the project directory and added in le xiao after doing a bit of looking into which one to use. I also did an hour of asking people what connectors i should use and i decided on using 4 pin pogos. cant log research tho :(
Hi Cat My kicad crashed and I had to redo the schematic and update it with correct battery wiring. I started working on the footprint and just getting general meaasurements for how it will work. I also had to import in the pogo pins and figure out which ones to use. Pogo pins are so good and really cool and r perfect for this project. Bye Dog
i think there may be a bit of lapse time inflation, but I worked on positioning the footprints. my inner perfectionist came out and i am trying to make these things precise as two ffs
Ok so the first 2 and a half hours r lapse inflation(go figure), but i basically finished the pcb by wiring everything and adding in pcb padding. twas very annoying
Argh probably lapse inslaytion but i did work for 2 hours on first of all adding in screw holes to the board and had to redo some of the wiring. After finishing that, I started working on the macropad. I used a chip that converts GPIO to I2C, and did all the wiring. I also figured out all the footprints and imported them. I also started on the design, lots of stuff so lots of screenshots.
Wsg girly pops i finished the macropad. twas really just alligning the connectors, making a bus that they all connect on and wiring it up. literally free ngl. wait i forgor screw holes one sec chat.
Ok so after fixing a lookout bug, i get why its better then lapse. anyway i learnt how keyboard grids worked and almost finished the schematic of my numpad.
I finished some of the schematic, and had to work on footprint palcement. I think i have gotten more effecient at them, hopefully i can do the nxt two soon. i finished the footpring and it required a lot more stuff cause of how many heyboard switches there were. either way i locked in. I think theres a bit of inflation tho. meow
wahoo another hour of lookout inflation, well i mean i already have 13 hours and i dmed fruad squad like 20 thousand times. ok but i made the rotary encoder thingy. the schematic was really simple, but well uh the pcb was tiny with two ffs and it gave me ptsd, this hurts my eyes to look at, schematic was free tho. it was really just me wiring up gpio stuff and then doing other stuff but this was NOT FUN AT ALL and well im almost done with pcb stuff.
so well i went to my friends office one day and kinda locked in there, and well i did a ton of stuff, including half a cad, this was mainly me iterating through my pcb, spending far too long on trying to get the 3d model working, but to no avail. i then tried to do the cad without that, and it looks alright. i need to add in magnets and top tho. hour of lapse inflation
so i finished my cad and also made a stardew valley hut in magica voxel, i am never gonna touch magica voxel again with a 10 foot pole. mainly making the hut, not much to say.
waka waka ehh ehh. i learned how to use open scad, and designed the building blocks to make the cases, this consisted of making different base and top files, and for different grid lens i can just change up the cad a bit! really cool beans. these screenshots are stl files i made which demonstrate this working for the core, i did have to make a usbee port....
|
1793199285.448625
|
1793804085.448625
|
|
6896
|
Plant life support by @sidthetrue | Stardance
|
sidthetrue
|
0
|
0.34
|
0
|
[]
|
[{"post_id": 16068, "ts": "202 [{"post_id": 16068, "ts": "2026-06-26T03:41:04Z", "hours": 0.335, "text": "Hey everyone This is the start of my project. Right now, I’m working on a virtual environment on Wokwi using an ESP32 microcontroller to simulate a very rough outline of the automated plant life support before I touch any real hardware.The Setup: I’ve got an ESP32 wired up to a DHT22 Sensor along with three LED indicators: a purple Grow Light, a blue Water Pump, and a yellow Mister.The Climate : The code automatically starts going off in daytime mode, which keeps the Grow Light glowing. By clicking the weather sensor, I can manually drag the humidity sliders up and down. If the humidity drops below 65%, the ESP32 instantly triggers the Mister to bring the moisture back up. Once it hits 75%, it shuts it off safely.Water system: To test the Water Pump without an actual soil sensor plugged in yet, I wrote code that simulates the code as really dry. The second the simulation boots, the ESP32 detects the dry soil it gives a quick 3 second micro burst from the Water Pump to water the plant, and then turns off automatically to prevent flooding.This helps me understand all the core fundamental logic. Next up is taking these ideas out of wowki and sketching out the physical layout and component design for the actual enclosure"}]...
|
Title: Plant life support by @sidthetrue | Stardan Title: Plant life support by @sidthetrue | Stardance
Devlogs:
Hey everyone This is the start of my project. Right now, I’m working on a virtual environment on Wokwi using an ESP32 microcontroller to simulate a very rough outline of the automated plant life support before I touch any real hardware.The Setup: I’ve got an ESP32 wired up to a DHT22 Sensor along with three LED indicators: a purple Grow Light, a blue Water Pump, and a yellow Mister.The Climate : The code automatically starts going off in daytime mode, which keeps the Grow Light glowing. By clicking the weather sensor, I can manually drag the humidity sliders up and down. If the humidity drops below 65%, the ESP32 instantly triggers the Mister to bring the moisture back up. Once it hits 75%, it shuts it off safely.Water system: To test the Water Pump without an actual soil sensor plugged in yet, I wrote code that simulates the code as really dry. The second the simulation boots, the ESP32 detects the dry soil it gives a quick 3 second micro burst from the Water Pump to water the plant, and then turns off automatically to prevent flooding.This helps me understand all the core fundamental logic. Next up is taking these ideas out of wowki and sketching out the physical layout and component design for the actual enclosure...
|
1793368480.6854093
|
1793973280.6854093
|
|
6897
|
Cardboard meachine gun by @sujay | Stardance
|
sujay
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cardboard meachine gun by @sujay | Stardanc Title: Cardboard meachine gun by @sujay | Stardance...
|
1793411462.233732
|
1794016262.233732
|
|
6898
|
My awesome macropad! by @yeatical | Stardance
|
yeatical
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @yeatical | Stardan Title: My awesome macropad! by @yeatical | Stardance...
|
1793501458.415119
|
1794106258.415119
|
|
6899
|
My awesome macropad! by @Neo_Calix | Stardance
|
Neo_Calix
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Neo_Calix | Starda Title: My awesome macropad! by @Neo_Calix | Stardance...
|
1793350420.6997602
|
1793955220.6997602
|
|
6900
|
Untitled by @Zebrak | Stardance
|
Zebrak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Zebrak | Stardance
|
1793509041.0073297
|
1794113841.0073297
|
|
6901
|
Untitled by @Zebrak | Stardance
|
Zebrak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Zebrak | Stardance
|
1793562904.5462244
|
1794167704.5462244
|
|
6902
|
My awesome macropad! by @Bond | Stardance
|
Bond
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Bond | Stardance
|
1793170384.1326358
|
1793775184.1326358
|
|
6903
|
My awesome macropad! by @rushjain198 | Stardance
|
rushjain198
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rushjain198 | Star Title: My awesome macropad! by @rushjain198 | Stardance...
|
1793242044.2237003
|
1793846844.2237003
|
|
6904
|
My awesome macropad! by @richard_dutchman28dematha My awesome macropad! by @richard_dutchman28dematha | Stardance...
|
richard_dutchman28dematha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @richard_dutchman28 Title: My awesome macropad! by @richard_dutchman28dematha | Stardance...
|
1793350333.0805783
|
1793955133.0805783
|
|
6905
|
procedural planet sim by @kanishkv99 | Stardance
|
kanishkv99
|
0
|
0.32
|
0
|
[]
|
[{"post_id": 1820, "ts": "2026 [{"post_id": 1820, "ts": "2026-06-04T01:22:03Z", "hours": 0.3189, "text": "Scafolded the project with some ai help, now to actually code"}]...
|
Title: procedural planet sim by @kanishkv99 | Star Title: procedural planet sim by @kanishkv99 | Stardance
Devlogs:
Scafolded the project with some ai help, now to actually code...
|
1793368331.4573586
|
1793973131.4573586
|
|
6906
|
Ball Machine by @rushjain198 | Stardance
|
rushjain198
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ball Machine by @rushjain198 | Stardance
|
1793213766.700402
|
1793818566.700402
|
|
6907
|
Roblox Game Progress by @Rehankhatri | Stardance
|
Rehankhatri
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Roblox Game Progress by @Rehankhatri | Star Title: Roblox Game Progress by @Rehankhatri | Stardance...
|
1793328940.3097703
|
1793933740.3097703
|
|
6908
|
Flight computer by @Nolan | Stardance
|
Nolan
|
0
|
8.69
|
0
|
[]
|
[{"post_id": 3478, "ts": "2026 [{"post_id": 3478, "ts": "2026-06-06T13:04:33Z", "hours": 5.0833, "text": "Devlog #2 Added sensor and radio components to the schematic which came with some difficulties. Some of these were deciding if I should have multiple power converters, which out of safety I ended up having multiple, and understanding if I should be connecting these power converters to the main power line (3.3V). I then started work on designing the PCB and finished placing all the component footprints. Next, I plan on routing the traces of the PCB and, after checking for errors and double-checking things, ordering the PCB and components."}, {"post_id": 2377, "ts": "2026-06-04T20:38:55Z", "hours": 3.6106, "text": "Completed the schematic for the main “Brain” of the flight computer and finished assigning footprints to all the components. This was a bit tedious because of the large range of resistor and capacitor values that I had to search through to make sure I selected the correct values and package sizes. Another issue that I ran into was that I could not find the Micro USB that is used in the documentation, so I had to find an alternative that would work for my project. After this, I plan on adding the data collecting devices to the schematic so I can be ready for PCB design."}]...
|
Title: Flight computer by @Nolan | Stardance
Devl Title: Flight computer by @Nolan | Stardance
Devlogs:
Completed the schematic for the main “Brain” of the flight computer and finished assigning footprints to all the components. This was a bit tedious because of the large range of resistor and capacitor values that I had to search through to make sure I selected the correct values and package sizes. Another issue that I ran into was that I could not find the Micro USB that is used in the documentation, so I had to find an alternative that would work for my project. After this, I plan on adding the data collecting devices to the schematic so I can be ready for PCB design.
Devlog #2 Added sensor and radio components to the schematic which came with some difficulties. Some of these were deciding if I should have multiple power converters, which out of safety I ended up having multiple, and understanding if I should be connecting these power converters to the main power line (3.3V). I then started work on designing the PCB and finished placing all the component footprints. Next, I plan on routing the traces of the PCB and, after checking for errors and double-checking things, ordering the PCB and components....
|
1793173970.4461384
|
1793778770.4461384
|
|
6909
|
Untitled by @youssef_chater | Stardance
|
youssef_chater
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @youssef_chater | Stardance
|
1793141274.3543153
|
1793746074.3543153
|
|
6910
|
AstatineOS (x86 custom OS + kernel) by @atomtables AstatineOS (x86 custom OS + kernel) by @atomtables | Stardance...
|
atomtables
|
0
|
53.53
|
0
|
[]
|
[{"post_id": 28077, "ts": "202 [{"post_id": 28077, "ts": "2026-07-14T03:22:50Z", "hours": 6.1403, "text": "so it’s been a while, just barely 6h7m (676767676767676767). again… coding just gets me in the feels you know? you feel the breeze in the wind, the sun in the sky, the butterflies that release and change eddy currents to cause bit flips in a disc platter… just me? alright. i added children traversal to the vfs. this was because I wanted my vfs to print out the output of all the items that got pushed through it. this also adds another feature that i took from Linux, which is that a given directory is connected to its children via a doubly linked list. I actually took a feature from the Linux kernel: struct list_item . It’s a structure that has prev and next , which point to the addresses of struct list_item inside existing structures. So, for example struct my_item { struct list_item children; struct list_item siblings; } would hold a prev and next pointer for each item. children would point to the first sibling, while the beginning of siblings would point to the original parent directory. obviously though, my_item->children.next would hold a pointer to struct list_item, not struct my_item. this is where Linux’s container_of macro comes in (which i shamelessly copied word for word). it calculates the offset to subtract from different structures, given the structure and the name of the struct list_item. this provides efficiency, since siblings and children are connected in a linked list that allows O(1) insertion and removal in a list where there’s likely to be a lot of removals. my hashmap is also working pretty well!!! HASHMAP I WOULD USE A HASHMAP (if you get the reference LMFAO)."}, {"post_id": 25717, "ts": "2026-07-10T04:37:06Z", "hours": 6.7314, "text": "how much fun we shall have so you may be wondering… where the hell was I for the past 6 hours. I was putting together the foundation for my VFS, with a ton of struggles. what so in my last devlog, I came up with all the storage structures and measurements for how the filesystem works on Astatine. But I was yet to implement a single function. So i started basic, and that still somehow screwed up too bad 1. Splitting paths by forward slashes this seems really simple, but I messed it up somewhat bad. Since I don’t have a C library or strtok, I implemented my own string splitting thing using dynamic arrays (that I implemented) and a buffer. The unfortunate thing is that my dynamic arrays return a pointer to the value you save to it. Since I’m saving a pointer to a string, which in turn is a pointer of characters, I have to cast everything to a char** , while the default return types are all void* , so when I freed the strings, I forgot to dereference them (and the compiler didn’t complain), resulting in a kernel panic screen. 2. macro hell (in expansion of hashmap) next, I need to implement a VFS global cache. when you access a path, it’s better to save the data in ram so that the next time you visit that path we aren’t traversing the directory again. unfortunately, i’m dumb and don’t know how to implement a hashmap, so I found this interesting tutorial from a decade ago and used that. I also thought, at this point in time, that it would make sense to add thread safety to the vfs code so that it doesn’t completely crash due to race conditions, and I introduced macros for these. However, I realised that non-atomic writes are still not thread safe, and had to dig in with compiler builtins (since I’m using freestanding code, I can’t use <stdatomic.h>). While putting together these macros with atomic, I had some weird behaviour where I kept hanging and hanging and hanging, and turns out it was because my macros were made improperly, and the formatting of the code meant that the while statements I was using to loop over code didn’t actually cover the entire loop body, resulting in a permanent hang. 3. malloc vs calloc this is my fault, I forgot to use calloc to get zeroed memory, since my code seems to have failed to initialise all the required sections, it resulted in a page fault. 4. well this is embarassing about at least 25 times, i kept a debug statement that dereferenced a null pointer, causing a crash. this was so sad because it taught me to remember: i’m stupid. so does it work? yea. thank my 2012 macbook air’s horribly patched version of qemu for the slowdown in the next clip. (i also included the crash so you can see the cool ntos-like crash screen)"}, {"post_id": 23907, "ts": "2026-07-07T03:34:11Z", "hours": 1.2019, "text": "after some deliberation i have some specifics as to the implementation of the virtual file system. ive decided that i’m not smarter than engineers in the 50s, and am adopting a very similar idea to what the Unix kernel has: the i-node system (although i’m not calling them inodes that’s such an ugly name). the kernel keeps track of 3 structures: fs_entry (the central identifier of the file, source of truth), fs_entid (what keeps track of the file name, parent directory, and what filesystem it belongs to), and fs_file (which is what processes interact with to read, write, mmap, etc. to disk). we’ll then have a huge list of filesystem operations that use these 3 structures (as well as f_props to get properties of a file, dir_props to get directory information, sec_props, etc. etc.) to completely interact with the disk. This will allow us to make our own filesystem drivers and have interaction with physical media beyond fat32, something my operating system DESPERATELY needs. ps. Maybe I’ll create my own read/write file system later."}, {"post_id": 23677, "ts": "2026-07-06T19:48:59Z", "hours": 0.9425, "text": "well this was embarassing. turns out I forgot to clean the project, and stale files with the wrong idea of data had corrupt structures that made the kernel randomly crash. This was confusing for a couple reasons. from the below screenshot, you can see that the kernel panic occurred inconsistently. the PCI device would register and memory would be allocated, but in other cases size was set to zero and stuff wasn’t very well allocated. It turns out that my kmalloc function is bugged, and panics if you call it with zero (since it doesn’t do a precondition check and the loop always compares length with a min valid of 1) Page faults were happening as well, which made me think a deeper memory corruption issue was happening. On top of changing the device structure to use an attributes pointer struct rather than an extension of the device itself, i allocated memory to copy that structure over, so I thought that early allocations were frying existing code. all in all there’s a lot to learn from forgetting to clean stale files. now we can get back to the disk structure on hand!!!"}, {"post_id": 23253, "ts": "2026-07-06T03:06:23Z", "hours": 7.5797, "text": "I am utterly lost in space right now. So I wrote the syscall structure and now realised that I don’t really have a robust way of getting files. I’m using a stub and some random fat32 embedded driver online, which is certainly no “operating system”-like way to load files. I started working on my disk abstraction. So now, I’m horribly lost. Well first, I made a couple of changes, all of which broke something random. I disabled optimisation for debugging purposes, and that changed the location of the entrypoint for some reason. I changed the way the bootloader is loaded up, and that broke the main partition for some reason. Something or the other keeps breaking. After adding the abstraction code, I cycle between 3 errors. Either the code pagefaults while registering device, the malloc runs out of memory, or (a more random one) the disk driver fails to run. i’m taking a break."}, {"post_id": 19744, "ts": "2026-07-01T04:09:49Z", "hours": 5.8486, "text": "it may not seem like much, but i’ve gotten to completely rewriting my syscall structure. how you may ask? when it comes to system design, I want to separate Astatine from Unix’s own malpractices. Rather than going with the “everything is a file” paradigm, a concept that just squishes everything rather than make a decent api, I separated device and file nodes. You open with file_open and device_open . On top of this, I added some better handling of flags, switches, and made some decisions that I thought would be better. Of course, I’m not going to throw out the 75-year-old works of Unix engineers, but I do want some creativity involved and Astatine-Is-Not-Unix (ainu?). System design is probably the worst part out of any OS design: it feels so much better to start implementing, but sometimes, you need both DIRECTION and MAGNITUDE vector reference to work on code you’ll actually use. The almost 20 hours of research isn’t lost on me though. I hope I don’t have to take a Unix class in college."}, {"post_id": 17319, "ts": "2026-06-28T01:26:24Z", "hours": 4.9325, "text": "oh my god the last 2 days have been like living in another hell. i wouldn’t wish this debugging session on my worst enemy. so i wanted to implement an option on boot to choose how you want to display graphics on the screen (upcoming feature to give applications direct access to the framebuffer?). i made the smallest mistake of putting my strings in between the code, rather than all at the end. Because of this, nasm started doing random shenanigans that I still don’t know what happened and asked for help on the OSDev forums . After like 5 hours on GDB and Hex Fiend and nasm and trying to get Gemini to do anything but hallucinate (hilariously so may I add), I figured out the issue was not putting all the program strings at the bottom of the code. Now, I also have a configuration struct that allows stuff like boot-args, graphics config, and etc. to be configured as below. It looks decent as well"}, {"post_id": 16514, "ts": "2026-06-26T21:22:33Z", "hours": 2.6797, "text": "so i finally achieved the entire point of adding this second teletype driver. an important consideration to make in ANY computer is that you’re going to be working with different screens, different sizes, and different types of interfaces. My old teletype code was only really optimised for VGA bios (even now, it can only render 16-color bios colors). But now, to change displays, all I need is to: change the loaded driver from textmode.adv to bitmaptext.adv change the loaded display device to VGA_BITMAP… rather than VGA_TEXT change the boot program to initialise the display as 320x200 I plan on making only the 3rd option required through the boot program, the 1st and 2nd steps (should) hopefully happen automatically. And since we’re only dealing with ISA(80s)-compatible VGA cards, keeping the display device as an ISA device shouldn’t be that big of a problem (at least until we implement PCI discovery)"}, {"post_id": 15442, "ts": "2026-06-25T03:05:06Z", "hours": 1.2914, "text": "so i did try to hook up the bitmap into the new code but 1. i did hardcode 80x25 into the code so I have to fix that and 2. i did not implement a couple of functions and a couple of areas where it relies on quirks only available on text mode. you can see the result of relying on those quirks below in the poorly rendered and hardcoded error dialogue… more work will happen tomorrow."}, {"post_id": 15380, "ts": "2026-06-25T00:32:53Z", "hours": 2.0828, "text": "i got all of the characters + a little bit of color handling code to complete the drawing. this will be part of the second teletype driver I write, although I still am not the biggest fan of this. my next step will be to write a bitmap driver arrangement that the teletype will then be bolted onto, since the current teletype ordeal with this will be just ad-hoc writes to memory without mounting to a specific display, it could possibly corrupt memory if loaded incorrectly (like the vga text mode driver). anyway ill git commit here so you can see"}, {"post_id": 14836, "ts": "2026-06-24T03:02:13Z", "hours": 1.6375, "text": "previously i was using a 7x7 font that worked, but it looks really ugly, looks bolded, and doesn’t really have a good lower-case variant. of course I could try to make one but I’m a god awful designer. instead i stole this 5x7 character set from online specifically meant for bitmapped fonts on low resolution displays. 5x7 means that it won’t quite align perfectly, we do have a 53.6x25 display now (since its 6x8 with padding) but i just ignored the excess pixels and went along anyway. this looks much better, and I really do plan to use 640x480 since 320x200 is only usable for dos games and such. i spent most of this 1h38m just putting in the character set into the character array, which I must say is quite relaxing."}, {"post_id": 14630, "ts": "2026-06-23T20:12:55Z", "hours": 1.3428, "text": "continuing to work on the bitmapped character list, so far I have an A and a B imported from some random thing online. Unfortunately I can’t find an image online for lowercase 7x7 test, so I might have to design that myself, along with the rest of the special characters. At the very least, this foray is just to experiment with how my OS would interact with a bitmapped screen, I plan to use 640x480 basically as soon as possible (only reason I didn’t now is because its planar when set up via VGA, so I have to learn VESA)"}, {"post_id": 14108, "ts": "2026-06-23T02:46:47Z", "hours": 0.7917, "text": "Right now, I’m working on a bitmap display. I decided to go with a really basic starting point, just a 320x200 256-colors, and I’m programming the 256 colors as a 3-3-2 colormap. It took like an hour just to understand how this stuff works, I don’t like VGA a ton now."}, {"post_id": 14008, "ts": "2026-06-22T23:54:15Z", "hours": 5.7836, "text": "holy crap there was so much debugging that had to happen. so the memory allocator pretty much fell apart. I realised that (with the help of gemini) that having a buddy allocator for physical frames was irrelevant, considering that physical memory could be remapped however necessary. as far as I know, there is no need for continuous physical memory except for legacy hardware, which i guess can be its own function later then. so I just made a bitmap allocator. physical memory is extremely irrelevant, we don’t care about anything other than the virtual memory it’s paired to. now I can finally start work on a bitmap display somehow."}, {"post_id": 2136, "ts": "2026-06-04T13:50:08Z", "hours": 0.8058, "text": "I managed to fix the bug, the issue was that I uninitialised a variable that needed to be initialised (which was the address of the code that told the OS where memory was valid). I fixed that and now I’m working on adding a buddy allocator to the frames."}, {"post_id": 1826, "ts": "2026-06-04T01:27:30Z", "hours": 3.7422, "text": "I’m being ragebait by the compiler. There is 100% enough memory to allocate more memory but it says there isn’t. It’s been way too long for this issue to still be happening, all I did was write one unused subroutine in the memory allocation function. I’ll be back when I finish writing it."}]...
|
Title: AstatineOS (x86 custom OS + kernel) by @ato Title: AstatineOS (x86 custom OS + kernel) by @atomtables | Stardance
Devlogs:
I’m being ragebait by the compiler. There is 100% enough memory to allocate more memory but it says there isn’t. It’s been way too long for this issue to still be happening, all I did was write one unused subroutine in the memory allocation function. I’ll be back when I finish writing it.
I managed to fix the bug, the issue was that I uninitialised a variable that needed to be initialised (which was the address of the code that told the OS where memory was valid). I fixed that and now I’m working on adding a buddy allocator to the frames.
holy crap there was so much debugging that had to happen. so the memory allocator pretty much fell apart. I realised that (with the help of gemini) that having a buddy allocator for physical frames was irrelevant, considering that physical memory could be remapped however necessary. as far as I know, there is no need for continuous physical memory except for legacy hardware, which i guess can be its own function later then. so I just made a bitmap allocator. physical memory is extremely irrelevant, we don’t care about anything other than the virtual memory it’s paired to. now I can finally start work on a bitmap display somehow.
Right now, I’m working on a bitmap display. I decided to go with a really basic starting point, just a 320x200 256-colors, and I’m programming the 256 colors as a 3-3-2 colormap. It took like an hour just to understand how this stuff works, I don’t like VGA a ton now.
continuing to work on the bitmapped character list, so far I have an A and a B imported from some random thing online. Unfortunately I can’t find an image online for lowercase 7x7 test, so I might have to design that myself, along with the rest of the special characters. At the very least, this foray is just to experiment with how my OS would interact with a bitmapped screen, I plan to use 640x480 basically as soon as possible (only reason I didn’t now is because its planar when set up via VGA, so I have to learn VESA)
previously i was using a 7x7 font that worked, but it looks really ugly, looks bolded, and doesn’t really have a good lower-case variant. of course I could try to make one but I’m a god awful designer. instead i stole this 5x7 character set from online specifically meant for bitmapped fonts on low resolution displays. 5x7 means that it won’t quite align perfectly, we do have a 53.6x25 display now (since its 6x8 with padding) but i just ignored the excess pixels and went along anyway. this looks much better, and I really do plan to use 640x480 since 320x200 is only usable for dos games and such. i spent most of this 1h38m just putting in the character set into the character array, which I must say is quite relaxing.
i got all of the characters + a little bit of color handling code to complete the drawing. this will be part of the second teletype driver I write, although I still am not the biggest fan of this. my next step will be to write a bitmap driver arrangement that the teletype will then be bolted onto, since the current teletype ordeal with this will be just ad-hoc writes to memory without mounting to a specific display, it could possibly corrupt memory if loaded incorrectly (like the vga text mode driver). anyway ill git commit here so you can see
so i did try to hook up the bitmap into the new code but 1. i did hardcode 80x25 into the code so I have to fix that and 2. i did not implement a couple of functions and a couple of areas where it relies on quirks only available on text mode. you can see the result of relying on those quirks below in the poorly rendered and hardcoded error dialogue… more work will happen tomorrow.
so i finally achieved the entire point of adding this second teletype driver. an important consideration to make in ANY computer is that you’re going to be working with different screens, different sizes, and different types of interfaces. My old teletype code was only really optimised for VGA bios (even now, it can only render 16-color bios colors). But now, to change displays, all I need is to: change the loaded driver from textmode.adv to bitmaptext.adv change the loaded display device to VGA_BITMAP… rather than VGA_TEXT change the boot program to initialise the display as 320x200 I plan on making only the 3rd option required through the boot program, the 1st and 2nd steps (should) hopefully happen automatically. And since we’re only dealing with ISA(80s)-compatible VGA cards, keeping the display device as an ISA device shouldn’t be that big of a problem (at least until we implement PCI discovery)
oh my god the last 2 days have been like living in another hell. i wouldn’t wish this debugging session on my worst enemy. so i wanted to implement an option on boot to choose how you want to display graphics on the screen (upcoming feature to give applications direct access to the framebuffer?). i made the smallest mistake of putting my strings in between the code, rather than all at the end. Because of this, nasm started doing random shenanigans that I still don’t know what happened and asked for help on the OSDev forums . After like 5 hours on GDB and Hex Fiend and nasm and trying to get Gemini to do anything but hallucinate (hilariously so may I add), I figured out the issue was not putting all the program strings at the bottom of the code. Now, I also have a configuration struct that allows stuff like boot-args, graphics config, and etc. to be configured as below. It looks decent as well
it may not seem like much, but i’ve gotten to completely rewriting my syscall structure. how you may ask? when it comes to system design, I want to separate Astatine from Unix’s own malpractices. Rather than going with the “everything is a file” paradigm, a concept that just squishes everything rather than make a decent api, I separated device and file nodes. You open with file_open and device_open . On top of this, I added some better handling of flags, switches, and made some decisions that I thought would be better. Of course, I’m not going to throw out the 75-year-old works of Unix engineers, but I do want some creativity involved and Astatine-Is-Not-Unix (ainu?). System design is probably the worst part out of any OS design: it feels so much better to start implementing, but sometimes, you need both DIRECTION and MAGNITUDE vector reference to work on code you’ll actually use. The almost 20 hours of research isn’t lost on me though. I hope I don’t have to take a Unix class in college.
I am utterly lost in space right now. So I wrote the syscall structure and now realised that I don’t really have a robust way of getting files. I’m using a stub and some random fat32 embedded driver online, which is certainly no “operating system”-like way to load files. I started working on my disk abstraction. So now, I’m horribly lost. Well first, I made a couple of changes, all of which broke something random. I disabled optimisation for debugging purposes, and that changed the location of the entrypoint for some reason. I changed the way the bootloader is loaded up, and that broke the main partition for some reason. Something or the other keeps breaking. After adding the abstraction code, I cycle between 3 errors. Either the code pagefaults while registering device, the malloc runs out of memory, or (a more random one) the disk driver fails to run. i’m taking a break.
well this was embarassing. turns out I forgot to clean the project, and stale files with the wrong idea of data had corrupt structures that made the kernel randomly crash. This was confusing for a couple reasons. from the below screenshot, you can see that the kernel panic occurred inconsistently. the PCI device would register and memory would be allocated, but in other cases size was set to zero and stuff wasn’t very well allocated. It turns out that my kmalloc function is bugged, and panics if you call it with zero (since it doesn’t do a precondition check and the loop always compares length with a min valid of 1) Page faults were happening as well, which made me think a deeper memory corruption issue was happening. On top of changing the device structure to use an attributes pointer struct rather than an extension of the device itself, i allocated memory to copy that structure over, so I thought that early allocations were frying existing code. all in all there’s a lot to learn from forgetting to clean stale files. now we can get back to the disk structure on hand!!!
after some deliberation i have some specifics as to the implementation of the virtual file system. ive decided that i’m not smarter than engineers in the 50s, and am adopting a very similar idea to what the Unix kernel has: the i-node system (although i’m not calling them inodes that’s such an ugly name). the kernel keeps track of 3 structures: fs_entry (the central identifier of the file, source of truth), fs_entid (what keeps track of the file name, parent directory, and what filesystem it belongs to), and fs_file (which is what processes interact with to read, write, mmap, etc. to disk). we’ll then have a huge list of filesystem operations that use these 3 structures (as well as f_props to get properties of a file, dir_props to get directory information, sec_props, etc. etc.) to completely interact with the disk. This will allow us to make our own filesystem drivers and have interaction with physical media beyond fat32, something my operating system DESPERATELY needs. ps. Maybe I’ll create my own read/write file system later.
how much fun we shall have so you may be wondering… where the hell was I for the past 6 hours. I was putting together the foundation for my VFS, with a ton of struggles. what so in my last devlog, I came up with all the storage structures and measurements for how the filesystem works on Astatine. But I was yet to implement a single function. So i started basic, and that still somehow screwed up too bad 1. Splitting paths by forward slashes this seems really simple, but I messed it up somewhat bad. Since I don’t have a C library or strtok, I implemented my own string splitting thing using dynamic arrays (that I implemented) and a buffer. The unfortunate thing is that my dynamic arrays return a pointer to the value you save to it. Since I’m saving a pointer to a string, which in turn is a pointer of characters, I have to cast everything to a char** , while the default return types are all void* , so when I freed the strings, I forgot to dereference them (and the compiler didn’t complain), resulting in a kernel panic screen. 2. macro hell (in expansion of hashmap) next, I need to implement a VFS global cache. when you access a path, it’s better to save the data in ram so that the next time you visit that path we aren’t traversing the directory again. unfortunately, i’m dumb and don’t know how to implement a hashmap, so I found this interesting tutorial from a decade ago and used that. I also thought, at this point in time, that it would make sense to add thread safety to the vfs code so that it doesn’t completely crash due to race conditions, and I introduced macros for these. However, I realised that non-atomic writes are still not thread safe, and had to dig in with compiler builtins (since I’m using freestanding code, I can’t use <stdatomic.h>). While putting together these macros with atomic, I had some weird behaviour where I kept hanging and hanging and hanging, and turns out it was because my macros were made improperly, and the formatting of the code meant that the while statements I was using to loop over code didn’t actually cover the entire loop body, resulting in a permanent hang. 3. malloc vs calloc this is my fault, I forgot to use calloc to get zeroed memory, since my code seems to have failed to initialise all the required sections, it resulted in a page fault. 4. well this is embarassing about at least 25 times, i kept a debug statement that dereferenced a null pointer, causing a crash. this was so sad because it taught me to remember: i’m stupid. so does it work? yea. thank my 2012 macbook air’s horribly patched version of qemu for the slowdown in the next clip. (i also included the crash so you can see the cool ntos-like crash screen)
so it’s been a while, just barely 6h7m (676767676767676767). again… coding just gets me in the feels you know? you feel the breeze in the wind, the sun in the sky, the butterflies that release and change eddy currents to cause bit flips in a disc platter… just me? alright. i added children traversal to the vfs. this was because I wanted my vfs to print out the output of all the items that got pushed through it. this also adds another feature that i took from Linux, which is that a given directory is connected to its children via a doubly linked list. I actually took a feature from the Linux kernel: struct list_item . It’s a structure that has prev and next , which point to the addresses of struct list_item inside existing structures. So, for example struct my_item { struct list_item children; struct list_item siblings; } would hold a prev and next pointer for each item. children would point to the first sibling, while the beginning of siblings would point to the original parent directory. obviously though, my_item->children.next would hold a pointer to struct list_item, not struct my_item. this is where Linux’s container_of macro comes in (which i shamelessly copied word for word). it calculates the offset to subtract from different structures, given the structure and the name of the struct list_item. this provides efficiency, since siblings and children are connected in a linked list that allows O(1) insertion and removal in a list where there’s likely to be a lot of removals. my hashmap is also working pretty well!!! HASHMAP I WOULD USE A HASHMAP (if you get the reference LMFAO)....
|
1793188516.80366
|
1793793316.80366
|
|
6911
|
Owlly by @baxthus | Stardance
|
baxthus
|
0
|
2.74
|
0
|
[]
|
[{"post_id": 2272, "ts": "2026 [{"post_id": 2272, "ts": "2026-06-04T17:46:22Z", "hours": 1.9719, "text": "Changelog New commands: help (dynamically generated!) cat cep-search Others: Use pino for logging Slack Block Kit is so cool! A lot better than Discord’s Components V2"}, {"post_id": 1856, "ts": "2026-06-04T02:09:51Z", "hours": 0.7664, "text": "Bot created! Load commands dynamically"}]...
|
Title: Owlly by @baxthus | Stardance
Devlogs:
Bot Title: Owlly by @baxthus | Stardance
Devlogs:
Bot created! Load commands dynamically
Changelog New commands: help (dynamically generated!) cat cep-search Others: Use pino for logging Slack Block Kit is so cool! A lot better than Discord’s Components V2...
|
1793195658.5428362
|
1793800458.5428362
|
|
6912
|
My first slack bot! by @sans114114 | Stardance
|
sans114114
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @sans114114 | Starda Title: My first slack bot! by @sans114114 | Stardance...
|
1793141563.567603
|
1793746363.567603
|
|
6913
|
Calculator Project by @MH | Stardance
|
MH
|
0
|
0.35
|
0
|
[]
|
[{"post_id": 1831, "ts": "2026 [{"post_id": 1831, "ts": "2026-06-04T01:32:17Z", "hours": 0.3503, "text": "Still getting used to the javascript but trying"}]...
|
Title: Calculator Project by @MH | Stardance
Devl Title: Calculator Project by @MH | Stardance
Devlogs:
Still getting used to the javascript but trying...
|
1793328603.822387
|
1793933403.822387
|
|
6914
|
My awesome macropad! by @Aylin30 | Stardance
|
Aylin30
|
0
|
2.04
|
0
|
[]
|
[{"post_id": 23294, "ts": "202 [{"post_id": 23294, "ts": "2026-07-06T05:06:57Z", "hours": 2.0353, "text": "Just started my journey into hardware design :D Today I began designing my first mechanical using the Hackpad. I’m working the keyboard case in Fusion 360 and worked on the PCB schematic in KiCad. Still a complete beginner, but super excited to keep learning:D."}]...
|
Title: My awesome macropad! by @Aylin30 | Stardanc Title: My awesome macropad! by @Aylin30 | Stardance
Devlogs:
Just started my journey into hardware design :D Today I began designing my first mechanical using the Hackpad. I’m working the keyboard case in Fusion 360 and worked on the PCB schematic in KiCad. Still a complete beginner, but super excited to keep learning:D....
|
1793152608.5861611
|
1793757408.5861611
|
|
6916
|
Potatpheus by @SunnyBoiX | Stardance
|
SunnyBoiX
|
0
|
2.76
|
0
|
[]
|
[{"post_id": 8345, "ts": "2026 [{"post_id": 8345, "ts": "2026-06-13T21:26:23Z", "hours": 0.7156, "text": "I spent this session going through lots of trouble. I did get my bot working on nest 24/7 but, since I was not complete the bot, I had to continue working on it. I don’t know how but, I completely had forgotten how Nest had worked and spent my time testing the bot locally. When I first tested the bot, running the /pass command gave a frustrating error saying the app did not respond. Looking at the code, I found out the biggest mistake was on the very first line of the /pass block. I wrote await ack; instead of calling it as a function with parentheses like await ack(); . Because of this, the bot never sent that quick acknowledgement back to slack, Slack waited for three seconds and gave up. Right after that, I fixed a bug where the code tried to clean up the command text without checking if a user actually tagged anyone. When someone typed just /pass by itself, the text was blank, causing a fatal crash that broke the whole game loop. I added a safety check to use an empty string if no text is found. I also noticed my success message used regular quotes instead of backticks, which broke the user tag formatting, and fixed a simple typo in my error handling that was causing secondary crashes. I finally remembered to log in to my SSH, pull the code from Github, and update .env file with MY SECRET TOKENS >:) and setup a systemd file to keep the script running in the background. Soon, I will go back to in to completely finish and polish the /pass command in order to get rid of the timeout errors once and for all. After doing that, I will make it 24/7 and test if the game works. In the end, I will make a leaderboard system to track everyone’s stats on slack!!!"}, {"post_id": 2443, "ts": "2026-06-04T22:50:04Z", "hours": 1.2639, "text": "Bot Purpose & Code I finally got an idea on what to make my custom Slack bot based on. I decided to make a hot potato slack bot called Potatpheus. Hot potato + Orpheus = Potatopheus. I set up global variables like gameState and friedLeaderboard to track the game data. I built a function called getRandomSeconds to handle the fuse timing, which works directly into my main explodePotato function to reset the game and log the loss when someone blows up. I added the slash command on the Slack APi called /drop-potato to begin the game. During testing, I encountered a problem which was if someone decided to start a new game while one is already going on. In order to resolve this issue, I used a conditional if statement to check a boolean flag inside my global gameState dictionary and then exited early using a return statement. Specifically, inside the /drop-potato command handler, I set up a restriction that checks if (gameState.isActive). If that boolean evaluates to true, the code uses Slack’s respond function to send a message back to the user (“A game is already active!”), and then directs itself to the return statement to stop itself. This stops the rest of the execution from reaching the setTimeout, ensuring no duplicate timers get created. I will work on the leaderboards and the pass function now."}, {"post_id": 1843, "ts": "2026-06-04T01:49:04Z", "hours": 0.7772, "text": "Setup & Code - Slack Bot I followed the tutorial where it teaches you how to make a Slack Bot. I completed the setup and prerequisites before completing the code which were to create the application on Slack. Following all the instructions that were given such as generating tokens. Then, moved onto the code. I copied the code that was provided and replaced the parts I was supposed to. Made a github repository as well and track this with hackatime. This bot currently has no theme and has the same exact commands given in the tutorial. I will give it a specific theme and more commands to make it more fun!"}]...
|
Title: Potatpheus by @SunnyBoiX | Stardance
Devlo Title: Potatpheus by @SunnyBoiX | Stardance
Devlogs:
Setup & Code - Slack Bot I followed the tutorial where it teaches you how to make a Slack Bot. I completed the setup and prerequisites before completing the code which were to create the application on Slack. Following all the instructions that were given such as generating tokens. Then, moved onto the code. I copied the code that was provided and replaced the parts I was supposed to. Made a github repository as well and track this with hackatime. This bot currently has no theme and has the same exact commands given in the tutorial. I will give it a specific theme and more commands to make it more fun!
Bot Purpose & Code I finally got an idea on what to make my custom Slack bot based on. I decided to make a hot potato slack bot called Potatpheus. Hot potato + Orpheus = Potatopheus. I set up global variables like gameState and friedLeaderboard to track the game data. I built a function called getRandomSeconds to handle the fuse timing, which works directly into my main explodePotato function to reset the game and log the loss when someone blows up. I added the slash command on the Slack APi called /drop-potato to begin the game. During testing, I encountered a problem which was if someone decided to start a new game while one is already going on. In order to resolve this issue, I used a conditional if statement to check a boolean flag inside my global gameState dictionary and then exited early using a return statement. Specifically, inside the /drop-potato command handler, I set up a restriction that checks if (gameState.isActive). If that boolean evaluates to true, the code uses Slack’s respond function to send a message back to the user (“A game is already active!”), and then directs itself to the return statement to stop itself. This stops the rest of the execution from reaching the setTimeout, ensuring no duplicate timers get created. I will work on the leaderboards and the pass function now.
I spent this session going through lots of trouble. I did get my bot working on nest 24/7 but, since I was not complete the bot, I had to continue working on it. I don’t know how but, I completely had forgotten how Nest had worked and spent my time testing the bot locally. When I first tested the bot, running the /pass command gave a frustrating error saying the app did not respond. Looking at the code, I found out the biggest mistake was on the very first line of the /pass block. I wrote await ack; instead of calling it as a function with parentheses like await ack(); . Because of this, the bot never sent that quick acknowledgement back to slack, Slack waited for three seconds and gave up. Right after that, I fixed a bug where the code tried to clean up the command text without checking if a user actually tagged anyone. When someone typed just /pass by itself, the text was blank, causing a fatal crash that broke the whole game loop. I added a safety check to use an empty string if no text is found. I also noticed my success message used regular quotes instead of backticks, which broke the user tag formatting, and fixed a simple typo in my error handling that was causing secondary crashes. I finally remembered to log in to my SSH, pull the code from Github, and update .env file with MY SECRET TOKENS >:) and setup a systemd file to keep the script running in the background. Soon, I will go back to in to completely finish and polish the /pass command in order to get rid of the timeout errors once and for all. After doing that, I will make it 24/7 and test if the game works. In the end, I will make a leaderboard system to track everyone’s stats on slack!!!...
|
1793483590.9588544
|
1794088390.9588544
|
|
6917
|
Untitled project by @teeG | Stardance
|
teeG
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @teeG | Stardance
|
1793170189.4481623
|
1793774989.4481623
|
|
6918
|
My awesome macropad! by @bvwhite29 | Stardance
|
bvwhite29
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @bvwhite29 | Starda Title: My awesome macropad! by @bvwhite29 | Stardance...
|
1793569750.5628135
|
1794174550.5628135
|
|
6919
|
Number Guessing Game by @Jadon | Stardance
|
Jadon
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Number Guessing Game by @Jadon | Stardance
|
1793321418.0696964
|
1793926218.0696964
|
|
6920
|
Kastral by @aahish_abbani | Stardance
|
aahish_abbani
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Kastral by @aahish_abbani | Stardance
|
1792950727.1432438
|
1793814727.1432438
|
|
6921
|
still thinking by @eliza | Stardance
|
eliza
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: still thinking by @eliza | Stardance
|
1793231477.665428
|
1793836277.665428
|
|
6922
|
My awesome macropad! by @Ashlyn | Stardance
|
Ashlyn
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Ashlyn | Stardance
|
1793296251.4264977
|
1793901051.4264977
|
|
6923
|
My awesome macropad! by @rgjava | Stardance
|
rgjava
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rgjava | Stardance
|
1793267392.1561718
|
1793872192.1561718
|
|
6924
|
Untitled project by @Biologicmaster | Stardance
|
Biologicmaster
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Biologicmaster | Stard Title: Untitled project by @Biologicmaster | Stardance...
|
1793303340.324388
|
1793908140.324388
|
|
6925
|
Student Dashboard by @Abdul | Stardance
|
Abdul
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Student Dashboard by @Abdul | Stardance
|
1793170313.332909
|
1793775113.332909
|
|
6926
|
My first slack bot! by @Dishsoap | Stardance
|
Dishsoap
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Dishsoap | Stardanc Title: My first slack bot! by @Dishsoap | Stardance...
|
1793332448.1811244
|
1793937248.1811244
|
|
6927
|
My first slack bot! by @adamgti | Stardance
|
adamgti
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @adamgti | Stardance
|
1793408056.3867354
|
1794012856.3867354
|
|
6928
|
Untitled by @Dishsoap | Stardance
|
Dishsoap
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Dishsoap | Stardance
|
1793490626.9235685
|
1794095426.9235685
|
|
6929
|
SOCCER WEBSITE by @ABYLOVESCATS | Stardance
|
ABYLOVESCATS
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SOCCER WEBSITE by @ABYLOVESCATS | Stardance
|
1793526635.9322221
|
1794131435.9322221
|