|
7421
|
My first slack bot! by @uthish | Stardance
|
uthish
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @uthish | Stardance
|
1793307291.2059488
|
1793912091.2059488
|
|
11287
|
My awesome macropad! by @utesa | Stardance
|
utesa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @utesa | Stardance
|
1793199370.3449311
|
1793804170.3449311
|
|
10013
|
apuestas deportivas by @usuario1crunchy | Stardanc apuestas deportivas by @usuario1crunchy | Stardance...
|
usuario1crunchy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: apuestas deportivas by @usuario1crunchy | S Title: apuestas deportivas by @usuario1crunchy | Stardance...
|
1793249327.5498633
|
1793854127.5498633
|
|
42344
|
WarioWare Game by @usmanbatman | Stardance
|
usmanbatman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WarioWare Game by @usmanbatman | Stardance
|
1792950816.215196
|
1793814816.215196
|
|
50945
|
My own site! by @usmanbatman | Stardance
|
usmanbatman
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T15:22:57Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i make batman’s theme web and the challenging part was adding img i really got stuck there but it wasn’t that challenging and I’M really proud of me bcz i deploy my first project", "repo": "https://github.com/batman990-bit/Personal-web", "demo": "https://batman990-bit.github.io/Personal-web/"}]...
|
[{"post_id": 56658, "ts": "202 [{"post_id": 56658, "ts": "2026-08-28T14:41:54Z", "hours": 2.6397, "text": "working on my web"}]...
|
Title: My own site! by @usmanbatman | Stardance
D Title: My own site! by @usmanbatman | Stardance
Devlogs:
working on my web
Ships:
i make batman’s theme web and the challenging part was adding img i really got stuck there but it wasn’t that challenging and I’M really proud of me bcz i deploy my first project...
|
1793461986.2177758
|
1793548386.2177758
|
|
55516
|
rock paper scissors by @usmanbatman | Stardance
|
usmanbatman
|
1
|
3.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T14:19:55Z", "hours": 3.0, "multiplier": 1.51, "payout": 4, "blessing": "neutral", "text": "makeee a terminal based rock paper scissors game so when u came back from a break its a nice way to lock in again", "repo": "https://github.com/batman990-bit/ROCK-PAPER-SCISSORS", "demo": "https://github.com/batman990-bit/ROCK-PAPER-SCISSORS/releases/tag/v1.0.0"}]...
|
[{"post_id": 75198, "ts": "202 [{"post_id": 75198, "ts": "2026-09-29T13:46:01Z", "hours": 2.8411, "text": "yayyy"}]...
|
Title: rock paper scissors by @usmanbatman | Stard Title: rock paper scissors by @usmanbatman | Stardance
Devlogs:
yayyy
Ships:
makeee a terminal based rock paper scissors game so when u came back from a break its a nice way to lock in again...
|
1793336108.086918
|
1793422508.086918
|
|
59409
|
hackpad by @usmanbatman | Stardance
|
usmanbatman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: hackpad by @usmanbatman | Stardance
|
1792799331.3292863
|
1793404131.3292863
|
|
52944
|
Project Free pc by @ushivpokhrel | Stardance
|
ushivpokhrel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Project Free pc by @ushivpokhrel | Stardanc Title: Project Free pc by @ushivpokhrel | Stardance...
|
1793462173.795226
|
1794066973.795226
|
|
72423
|
My awesome macropad! by @usernamezub41r | Stardanc My awesome macropad! by @usernamezub41r | Stardance...
|
usernamezub41r
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @usernamezub41r | S Title: My awesome macropad! by @usernamezub41r | Stardance...
|
1793465256.7740185
|
1794070056.7740185
|
|
37120
|
Niri scratch window script/writeup by @username123 Niri scratch window script/writeup by @username123115 | Stardance...
|
username123115
|
1
|
3.0
|
5
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-21T09:05:08Z", "hours": 3.0, "multiplier": 1.97, "payout": 5, "blessing": "neutral", "text": "I made a writeup on writing scripts in Niri that walks through making a scratch window script. This turned out to be very time consuming, as writing the article took much more time then doing research and writing the script itself.", "repo": "https://github.com/username123115/niri-scripts", "demo": "https://cdn.hackclub.com/019f83dd-a74d-782e-b0b7-01609e1fe907/niri-script.mp4"}]...
|
[{"post_id": 32242, "ts": "202 [{"post_id": 32242, "ts": "2026-07-21T09:00:02Z", "hours": 0.6947, "text": "Finished writing a section on jq and therefore writeup is done! Also recorded a demo video and uploaded to hackclub CDN"}, {"post_id": 32220, "ts": "2026-07-21T07:54:07Z", "hours": 0.8389, "text": "script now hides scratch windows by tiling them and having niri place them off screen. Readme has been updated to account for this"}, {"post_id": 31108, "ts": "2026-07-19T07:36:38Z", "hours": 0.5786, "text": "I’ve finished writing up working with niri msg , there’s a primer on jq that’s missing that is very important but otherwise most of the useful info is there"}, {"post_id": 31092, "ts": "2026-07-19T06:55:26Z", "hours": 0.6206, "text": "I want this to be a writeup/blog post kinda thing where I walk over writing my first niri script. the goal is to include enough info that anyone/me in the future(when I inevitably forget) can get a solid idea/start working with niri ipc. Intro section/overview is done. Script was finished before setting up hackatime but I have a feeling most of my time will be spent on the readme…"}]...
|
Title: Niri scratch window script/writeup by @user Title: Niri scratch window script/writeup by @username123115 | Stardance
Devlogs:
I want this to be a writeup/blog post kinda thing where I walk over writing my first niri script. the goal is to include enough info that anyone/me in the future(when I inevitably forget) can get a solid idea/start working with niri ipc. Intro section/overview is done. Script was finished before setting up hackatime but I have a feeling most of my time will be spent on the readme…
I’ve finished writing up working with niri msg , there’s a primer on jq that’s missing that is very important but otherwise most of the useful info is there
script now hides scratch windows by tiling them and having niri place them off screen. Readme has been updated to account for this
Finished writing a section on jq and therefore writeup is done! Also recorded a demo video and uploaded to hackclub CDN
Ships:
I made a writeup on writing scripts in Niri that walks through making a scratch window script. This turned out to be very time consuming, as writing the article took much more time then doing research and writing the script itself....
|
1793501522.7306242
|
1793587922.7306242
|
|
39823
|
PCB Keychain by @username123115 | Stardance
|
username123115
|
0
|
9.15
|
0
|
[]
|
[{"post_id": 41778, "ts": "202 [{"post_id": 41778, "ts": "2026-08-06T05:29:47Z", "hours": 5.0747, "text": "audio works !!! I can convert a clip into 8 bit pcm and play it via pwm on my pi pico. There’s a lot to improve in terms of sound quality but I’ve learned enough to know how to add it to my board. Moving on I want to play with adding a low pass filter to smooth out the PWM signal and using an amplifier. While writing the software this guide and the accompanying git repo has been very useful for figuring out to use embedded rust. With it I figured out how to use the pico-rs crate which provided some abstractions that made writing the PWM code very easy"}, {"post_id": 37253, "ts": "2026-07-29T20:23:55Z", "hours": 0.9231, "text": "previously I tried getting a LED blinking example working on my pico, but the LED wouldn’t turn off which led me to assume my program was crashing before the LED turned off and I spent a bit of time inspecting the executable and debugging my board with the probe. It turns out nothing crashed, but my delay function which busy waits by executing 12 million nop s waits too long, because I used an iterator for my loop. The iterator overhead is much higher then a single nop instruction, so I never got to see my LED toggle."}, {"post_id": 36244, "ts": "2026-07-28T06:26:29Z", "hours": 1.4811, "text": "I’ve got a debug probe connected to my pi pico and started writing some firmware to drive the speaker. Eventually I’ll port it over to the keychain board. I’ve been curious about writing firmware in rust so I chose to use it for this project. There’s a bit of a learning curve but after a bit of setup I’ve managed to turn on the pico’s on board LED With the probe I can just run cargo run to build and run on the board, would definitely recommend over using the pico’s BOOTSEL button."}, {"post_id": 36044, "ts": "2026-07-27T21:23:05Z", "hours": 1.0358, "text": "I did some research on the types of speakers I can use for my keychain and found this OWS-091630LA-8B SPEAKER 8OHM 1W TOP PORT 95DB) one on digikey. I haven’t worked with speakers before, so I also disassembled a pair of broken headphones I had lying around and I’m going to spend some time getting my pi pico to play something on it so I know how to wire it up correctly."}, {"post_id": 34938, "ts": "2026-07-26T01:48:23Z", "hours": 0.6333, "text": "I’ve been working on the schematic for a RP2040 based board that I plan on turning into a programmable keychain. I have some unlogged time spent sourcing a USBC connector and LDO for the system. For this devlog I’ve added a 16mbit flash on digikey that is compatible with the RP2040 Current component list is: Clock: ABM8-272-T3 (This is recommended by hardware design guide) LDO: NCP186BMX330TAG USBC Receptacle: Any 16pin receptacle Flash: AT25SF161B-SSHD-B Also fun fact apparently KiCAD saves history in a .history/ hidden git repo in your project"}]...
|
Title: PCB Keychain by @username123115 | Stardance Title: PCB Keychain by @username123115 | Stardance
Devlogs:
I’ve been working on the schematic for a RP2040 based board that I plan on turning into a programmable keychain. I have some unlogged time spent sourcing a USBC connector and LDO for the system. For this devlog I’ve added a 16mbit flash on digikey that is compatible with the RP2040 Current component list is: Clock: ABM8-272-T3 (This is recommended by hardware design guide) LDO: NCP186BMX330TAG USBC Receptacle: Any 16pin receptacle Flash: AT25SF161B-SSHD-B Also fun fact apparently KiCAD saves history in a .history/ hidden git repo in your project
I did some research on the types of speakers I can use for my keychain and found this OWS-091630LA-8B SPEAKER 8OHM 1W TOP PORT 95DB) one on digikey. I haven’t worked with speakers before, so I also disassembled a pair of broken headphones I had lying around and I’m going to spend some time getting my pi pico to play something on it so I know how to wire it up correctly.
I’ve got a debug probe connected to my pi pico and started writing some firmware to drive the speaker. Eventually I’ll port it over to the keychain board. I’ve been curious about writing firmware in rust so I chose to use it for this project. There’s a bit of a learning curve but after a bit of setup I’ve managed to turn on the pico’s on board LED With the probe I can just run cargo run to build and run on the board, would definitely recommend over using the pico’s BOOTSEL button.
previously I tried getting a LED blinking example working on my pico, but the LED wouldn’t turn off which led me to assume my program was crashing before the LED turned off and I spent a bit of time inspecting the executable and debugging my board with the probe. It turns out nothing crashed, but my delay function which busy waits by executing 12 million nop s waits too long, because I used an iterator for my loop. The iterator overhead is much higher then a single nop instruction, so I never got to see my LED toggle.
audio works !!! I can convert a clip into 8 bit pcm and play it via pwm on my pi pico. There’s a lot to improve in terms of sound quality but I’ve learned enough to know how to add it to my board. Moving on I want to play with adding a low pass filter to smooth out the PWM signal and using an amplifier. While writing the software this guide and the accompanying git repo has been very useful for figuring out to use embedded rust. With it I figured out how to use the pico-rs crate which provided some abstractions that made writing the PWM code very easy...
|
1793263883.054779
|
1793868683.054779
|
|
34169
|
PokemonWeb by @username1 | Stardance
|
username1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: PokemonWeb by @username1 | Stardance
|
1793400705.699718
|
1794005505.699718
|
|
60074
|
StudentConnect AI by @userlabs_pm | Stardance
|
userlabs_pm
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: StudentConnect AI by @userlabs_pm | Stardan Title: StudentConnect AI by @userlabs_pm | Stardance...
|
1793030089.0997002
|
1793634889.0997002
|
|
43745
|
My awesome macropad! by @userhisham57 | Stardance
|
userhisham57
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @userhisham57 | Sta Title: My awesome macropad! by @userhisham57 | Stardance...
|
1793235201.5019283
|
1793840001.5019283
|
|
47702
|
ESP32 OS by @userhisham57 | Stardance
|
userhisham57
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ESP32 OS by @userhisham57 | Stardance
|
1793192101.0451643
|
1793796901.0451643
|
|
24806
|
My awesome macropad! by @user_undefined | Stardanc My awesome macropad! by @user_undefined | Stardance...
|
user_undefined
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @user_undefined | S Title: My awesome macropad! by @user_undefined | Stardance...
|
1793443886.3212776
|
1794048686.3212776
|
|
18816
|
TinyWhoop Drone by @user1069591 | Stardance
|
user1069591
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: TinyWhoop Drone by @user1069591 | Stardance
|
1793332121.7705162
|
1793936921.7705162
|
|
64624
|
Bridge Dealer by @user-7510 | Stardance
|
user-7510
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Bridge Dealer by @user-7510 | Stardance
|
1793065826.6713107
|
1793670626.6713107
|
|
33057
|
My own site! by @use | Stardance
|
use
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @use | Stardance
|
1793231756.7231107
|
1793836556.7231107
|
|
53247
|
My awesome macropad! by @usat2k09 | Stardance
|
usat2k09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @usat2k09 | Stardan Title: My awesome macropad! by @usat2k09 | Stardance...
|
1793476353.8344524
|
1794081153.8344524
|
|
56103
|
i want to build a scifi game by @usama | Stardance
|
usama
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: i want to build a scifi game by @usama | St Title: i want to build a scifi game by @usama | Stardance...
|
1793364941.2667344
|
1793969741.2667344
|
|
43955
|
Ucraft by @urustam | Stardance
|
urustam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ucraft by @urustam | Stardance
|
1793246184.5332122
|
1793850984.5332122
|
|
59065
|
My awesome macropad! by @ursududu3 | Stardance
|
ursududu3
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ursududu3 | Starda Title: My awesome macropad! by @ursududu3 | Stardance...
|
1792781507.383621
|
1793386307.383621
|
|
3175
|
Titles are for losers by @urs_truly | Stardance
|
urs_truly
|
0
|
0.43
|
0
|
[]
|
[{"post_id": 2852, "ts": "2026 [{"post_id": 2852, "ts": "2026-06-05T18:11:51Z", "hours": 0.4278, "text": "Finally figured out how to make the player move @^@"}]...
|
Title: Titles are for losers by @urs_truly | Stard Title: Titles are for losers by @urs_truly | Stardance
Devlogs:
Finally figured out how to make the player move @^@...
|
1793346489.7380145
|
1793951289.7380145
|
|
5601
|
My awesome macropad! by @urs_truly | Stardance
|
urs_truly
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @urs_truly | Starda Title: My awesome macropad! by @urs_truly | Stardance...
|
1793288975.0801105
|
1793893775.0801105
|
|
33294
|
Bottom Rocks by @urs_truly | Stardance
|
urs_truly
|
0
|
11.52
|
0
|
[]
|
[{"post_id": 41024, "ts": "202 [{"post_id": 41024, "ts": "2026-08-04T22:48:57Z", "hours": 10.7661, "text": "gang it can’t take this long to try and get animations in bruh"}, {"post_id": 25974, "ts": "2026-07-10T14:48:36Z", "hours": 0.7528, "text": "New project. I realized I’d rather make a whole new game than go into the depths of blender again."}]...
|
Title: Bottom Rocks by @urs_truly | Stardance
Dev Title: Bottom Rocks by @urs_truly | Stardance
Devlogs:
New project. I realized I’d rather make a whole new game than go into the depths of blender again.
gang it can’t take this long to try and get animations in bruh...
|
1793310460.1979315
|
1793915260.1979315
|
|
2762
|
My first slack bot! by @urpeasantry | Stardance
|
urpeasantry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @urpeasantry | Stard Title: My first slack bot! by @urpeasantry | Stardance...
|
1793274882.342379
|
1793879682.342379
|
|
30608
|
My own site! by @urora | Stardance
|
urora
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T23:51:58Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a presonal portfolio website to showcase my skills and my coding journey", "repo": "https://github.com/lisedo123/Portfolio-26", "demo": "https://lisedo123.github.io/Portfolio-26/"}]...
|
[{"post_id": 22085, "ts": "202 [{"post_id": 22085, "ts": "2026-07-04T10:37:07Z", "hours": 1.64, "text": "Finished whole website ;)"}]...
|
Title: My own site! by @urora | Stardance
Devlogs Title: My own site! by @urora | Stardance
Devlogs:
Finished whole website ;)
Ships:
I made a presonal portfolio website to showcase my skills and my coding journey...
|
1793490773.2643194
|
1793577173.2643194
|
|
14325
|
student portfolio by @urmom | Stardance
|
urmom
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: student portfolio by @urmom | Stardance
|
1793145087.4569585
|
1793749887.4569585
|
|
12952
|
StepByStories by @urigandel | Stardance
|
urigandel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: StepByStories by @urigandel | Stardance
|
1793245645.0365317
|
1793850445.0365317
|
|
3489
|
My awesome macropad! by @urieloff | Stardance
|
urieloff
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @urieloff | Stardan Title: My awesome macropad! by @urieloff | Stardance...
|
1793342877.0276222
|
1793947677.0276222
|
|
3508
|
Untitled by @urieloff | Stardance
|
urieloff
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @urieloff | Stardance
|
1792774507.9150627
|
1793379307.9150627
|
|
20257
|
Untitled by @urieloff | Stardance
|
urieloff
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @urieloff | Stardance
|
1793443860.9756231
|
1794048660.9756231
|
|
26661
|
My very own WebOS by @urieloff | Stardance
|
urieloff
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @urieloff | Stardance
|
1793469331.7885334
|
1794074131.7885334
|
|
29525
|
Untitled by @urieloff | Stardance
|
urieloff
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @urieloff | Stardance
|
1793361340.7257345
|
1793966140.7257345
|
|
26111
|
My very own WebOS by @urielix987 | Stardance
|
urielix987
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @urielix987 | Stardanc Title: My very own WebOS by @urielix987 | Stardance...
|
1793458506.7334604
|
1794063306.7334604
|
|
61025
|
Untitled project by @urgoatahmad | Stardance
|
urgoatahmad
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @urgoatahmad | Stardanc Title: Untitled project by @urgoatahmad | Stardance...
|
1793037165.9731545
|
1793641965.9731545
|
|
2408
|
PulseRay by @urged-st | Stardance
|
urged-st
|
1
|
12.0
|
181
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T12:55:44Z", "hours": 12.0, "multiplier": 15.77, "payout": 181, "blessing": "neutral", "text": "I have developed a functioning pulsar simulator, where you can change the width and speed of the beams and explore the effect it has on the detected signal. It aims to simulate how we detect pulsars from Earth using radio telescopes, where they would be completely invisible otherwise. You can also drag Earth around as changing distance also affects the strength of the signal. It calculates the pulse rate, frequency and other signal-related values in real time. It was especially difficult to make the signal generation as accurate as possible, as I was not using any physics-specific libraries (as I would do if I made this in Python), however since I wanted to deploy this to the web I used HTML, CSS, and Javascript (p5.js). By far the part which was the most time consuming and difficult was the landing/help page which appears when you load the page. The animations, design and content took hours to write, and the cards themselves went through many iterations, from looking like a powerpoint presentation to a professional app! Since this is my first Javascript project, I’m extremely happy with the way it turned out, and will continue to develop the majority of my stardance projects with p5.js, most probably. One thing that I wish I could figure out was how to make it touch screen compatible, as you won’t be able to drag around the canvas with a touchscreen. Hopefully, I can implement this in the future, but at this time I cannot figure out how to add it. Therefore users of this app, for the ideal experience should access it on a laptop/pc. Later, this app will (hopefully) be collated with 3 other simulations onto one website, which I will also develop for Stardance.", "repo": "https://github.com/urged-st/PulseRay", "demo": "https://pulseray.vercel.app/"}]...
|
[{"post_id": 6850, "ts": "2026 [{"post_id": 6850, "ts": "2026-06-11T14:35:16Z", "hours": 1.345, "text": "Nothing much, added my github link as a button, attempted to add touchscreen controls for the guys on ipads but unfortunately failed miserably… it kept messing with the actual mouse moving code and I just couldn’t fix it. Might work on it sometime if I get bored of working on G-Lens lol (my other project)"}, {"post_id": 4772, "ts": "2026-06-08T08:13:27Z", "hours": 0.8692, "text": "It is done!! I have deployed this project at https://pulsarsimulator.vercel.app/ , check it out! Final Steps: polish information on the article and other cards gather feedback from users and work on that before I ship hit 10 hours lol I am still on 9 make the fade in animation for the cards occur on startup too, currently it only occurs when you click the button. MAYBE i might make custom sliders but i think this is fine This is one of 4 simulators, I will research for the second one today, and if possible complete a demo"}, {"post_id": 4136, "ts": "2026-06-07T10:32:36Z", "hours": 2.8914, "text": "Pulsar simulator MASSIVE UI update… So i got really tired of the default p5.js fonts so I decided to change things up, and in the process I ended up wanting to redesign the info box i had made initially (you can see the previous designs on my insta). Before it was static and looked like it had come out of a powerpoint presentation so I learnt how to add fonts and found space mono, which i really liked. I also had to redesign the previous cards i had made because they were again static and boring… I kept running into issues and limitations with the p5.js canvas as before i was just using that for the darkened overlay and cards, so i went ahead and redid the entire overlay as pure html and css because i had more experience in that and it was easier to bend to my will. So 3hrs logged brings Pulsar Sim this new revamped landing/info page! I also changed some of the fonts on the project itself, I dont know if i you can add multiple pics onto a devlog yet but i’ll send a screenshot in the next one. Next step for me is to make the middle card expandable, and include more detailed explanations on neutron stars and pulsars, as the information i provided initially is really basic and surface-level. I’d say this was a really successful UI overhaul - any feedback you guys have would be really valuable, i’ll try post more to showcase everything, and if you want to see videos of the project itself they are on my instagram."}, {"post_id": 2423, "ts": "2026-06-04T21:57:57Z", "hours": 0.6917, "text": "UI changes changed up that boring graph, I added gridlines and a scale, changed the waveform colour to green to make it easier to see. New features pulse detection now factors in distance (totally didn’t forget to add this before lol) so pulses from further away won’t be detected as they are too weak (as in real life!) Next Ideas I want to add more information, probably a toggleable menu in the corner with some basic information about pulsars maybe a catalogue of real pulsars? a pulse rate tooltip, I am definitely adding this one in the next session its too essential to leave out probably gonna switch some of the UI up, the logic is working fine at the moment I’ve spent a lot of time on it so might focus on aesthetics for an hour or so Note about the screenshot: You can see that the beam is covering the observer line of Earth, and there is some signal being produced, however it’s below the threshold of 0.2, hence why it displays “NO SIGNAL”!"}, {"post_id": 2233, "ts": "2026-06-04T16:52:07Z", "hours": 0.8417, "text": "UI Changes added distance counter added pulse counter New Features tried to implement a pulse counter (it works :D), counts pulse based on whether or not last pulse was valid I also added a “reset view” button, as even as a developer it was annoying having to re-run the program to test different distances and angles, so reset view brings Earth back to its initial position (so you can have it come back after dragging it miles away lol) Fixes I had to fix this one as it was just qol, but after selecting any preset, then changing the sliders, the selected preset didn’t show “custom” it showed whatever one was picked last, which could be misleading for new users. alsooo i have an instagram now, check it out for video logs (and drop a follow if you’d like to :) https://www.instagram.com/urged.st/"}, {"post_id": 1742, "ts": "2026-06-03T22:33:49Z", "hours": 1.095, "text": "Added a distance factor, and different presets for the pulsar! Signals are now weaker the further away you place Earth, and you can select preset pulsar types to investigate."}, {"post_id": 1401, "ts": "2026-06-03T12:34:49Z", "hours": 0.7019, "text": "Not much done, just fixed a bug where the using the slider would drag the background along with it 😭"}, {"post_id": 817, "ts": "2026-06-02T14:28:42Z", "hours": 1.6878, "text": "Learnt how to use function mousePressed and Relesased, so i’ve made the background pannable, and also added zoom. You can now drag Earth around too!"}, {"post_id": 453, "ts": "2026-06-01T21:38:55Z", "hours": 0.5669, "text": "Finished the base template I added the waveform viewer and signal status - this took most of the time, the sliders weren’t too hard to figure out. At least now it’s working fully. Next steps? I am going to try and have Earth be movable, so users can see the effect of observer position, might also make it have a scrollable and zoomable background maybe, make it feel more like a space engine."}, {"post_id": 429, "ts": "2026-06-01T20:41:06Z", "hours": 1.0692, "text": "Finished base model of the pulsar, it spins! First time using canvas so it took longer than expected."}]...
|
Title: PulseRay by @urged-st | Stardance
Devlogs: Title: PulseRay by @urged-st | Stardance
Devlogs:
Finished base model of the pulsar, it spins! First time using canvas so it took longer than expected.
Finished the base template I added the waveform viewer and signal status - this took most of the time, the sliders weren’t too hard to figure out. At least now it’s working fully. Next steps? I am going to try and have Earth be movable, so users can see the effect of observer position, might also make it have a scrollable and zoomable background maybe, make it feel more like a space engine.
Learnt how to use function mousePressed and Relesased, so i’ve made the background pannable, and also added zoom. You can now drag Earth around too!
Not much done, just fixed a bug where the using the slider would drag the background along with it 😭
Added a distance factor, and different presets for the pulsar! Signals are now weaker the further away you place Earth, and you can select preset pulsar types to investigate.
UI Changes added distance counter added pulse counter New Features tried to implement a pulse counter (it works :D), counts pulse based on whether or not last pulse was valid I also added a “reset view” button, as even as a developer it was annoying having to re-run the program to test different distances and angles, so reset view brings Earth back to its initial position (so you can have it come back after dragging it miles away lol) Fixes I had to fix this one as it was just qol, but after selecting any preset, then changing the sliders, the selected preset didn’t show “custom” it showed whatever one was picked last, which could be misleading for new users. alsooo i have an instagram now, check it out for video logs (and drop a follow if you’d like to :) https://www.instagram.com/urged.st/
UI changes changed up that boring graph, I added gridlines and a scale, changed the waveform colour to green to make it easier to see. New features pulse detection now factors in distance (totally didn’t forget to add this before lol) so pulses from further away won’t be detected as they are too weak (as in real life!) Next Ideas I want to add more information, probably a toggleable menu in the corner with some basic information about pulsars maybe a catalogue of real pulsars? a pulse rate tooltip, I am definitely adding this one in the next session its too essential to leave out probably gonna switch some of the UI up, the logic is working fine at the moment I’ve spent a lot of time on it so might focus on aesthetics for an hour or so Note about the screenshot: You can see that the beam is covering the observer line of Earth, and there is some signal being produced, however it’s below the threshold of 0.2, hence why it displays “NO SIGNAL”!
Pulsar simulator MASSIVE UI update… So i got really tired of the default p5.js fonts so I decided to change things up, and in the process I ended up wanting to redesign the info box i had made initially (you can see the previous designs on my insta). Before it was static and looked like it had come out of a powerpoint presentation so I learnt how to add fonts and found space mono, which i really liked. I also had to redesign the previous cards i had made because they were again static and boring… I kept running into issues and limitations with the p5.js canvas as before i was just using that for the darkened overlay and cards, so i went ahead and redid the entire overlay as pure html and css because i had more experience in that and it was easier to bend to my will. So 3hrs logged brings Pulsar Sim this new revamped landing/info page! I also changed some of the fonts on the project itself, I dont know if i you can add multiple pics onto a devlog yet but i’ll send a screenshot in the next one. Next step for me is to make the middle card expandable, and include more detailed explanations on neutron stars and pulsars, as the information i provided initially is really basic and surface-level. I’d say this was a really successful UI overhaul - any feedback you guys have would be really valuable, i’ll try post more to showcase everything, and if you want to see videos of the project itself they are on my instagram.
It is done!! I have deployed this project at https://pulsarsimulator.vercel.app/ , check it out! Final Steps: polish information on the article and other cards gather feedback from users and work on that before I ship hit 10 hours lol I am still on 9 make the fade in animation for the cards occur on startup too, currently it only occurs when you click the button. MAYBE i might make custom sliders but i think this is fine This is one of 4 simulators, I will research for the second one today, and if possible complete a demo
Nothing much, added my github link as a button, attempted to add touchscreen controls for the guys on ipads but unfortunately failed miserably… it kept messing with the actual mouse moving code and I just couldn’t fix it. Might work on it sometime if I get bored of working on G-Lens lol (my other project)
Ships:
I have developed a functioning pulsar simulator, where you can change the width and speed of the beams and explore the effect it has on the detected signal. It aims to simulate how we detect pulsars from Earth using radio telescopes, where they would be completely invisible otherwise. You can also drag Earth around as changing distance also affects the strength of the signal. It calculates the pulse rate, frequency and other signal-related values in real time. It was especially difficult to make the signal generation as accurate as possible, as I was not using any physics-specific libraries (as I would do if I made this in Python), however since I wanted to deploy this to the web I used HTML, CSS, and Javascript (p5.js). By far the part which was the most time consuming and difficult was the landing/help page which appears when you load the page. The animations, design and content took hours to write, and the cards themselves went through many iterations, from looking like a powerpoint presentation to a professional app! Since this is my first Javascript project, I’m extremely happy with the way it turned out, and will continue to develop the majority of my stardance projects with p5.js, most probably. One thing that I wish I could figure out was how to make it touch screen compatible, as you won’t be able to drag around the canvas with a touchscreen. Hopefully, I can implement this in the future, but at this time I cannot figure out how to add it. Therefore users of this app, for the ideal experience should access it on a laptop/pc. Later, this app will (hopefully) be collated with 3 other simulations onto one website, which I will also develop for Stardance....
|
1792878748.3963103
|
1793742748.3963103
|
|
12619
|
G-Lens by @urged-st | Stardance
|
urged-st
|
1
|
13.0
|
166
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T12:09:23Z", "hours": 13.0, "multiplier": 13.25, "payout": 166, "blessing": "neutral", "text": "I have developed a functioning gravitational lensing simulator, where you can drag a massive object across a real deep field image and watch it warp the light from background galaxies in real time. You can adjust the mass of the lens and switch between presets simulating different object types: a simple lens, black hole, neutron star, and galaxy cluster, each with a distinct visual appearance. The most technically challenging part was the rendering architecture. Rather than handling everything in p5.js, I wrote a custom GLSL fragment shader running in WebGL to perform the actual light deflection, with p5.js running as a separate overlay layer for the UI and lens visuals. This was my first time writing a shader, and getting the aspect ratio correction and UV space deflection maths to work correctly took a long time. I also had to carefully calibrate the p5 lens visual to match the shader’s distortion radius, since they compute size differently. The landing overlay and info cards took a significant amount of time across many iterations because I wanted the design to feel polished and intentional rather than throwaway, and I’m especially happy with how the article view and card animations turned out. If the colour scheme and UI style look familiar, that’s intentional cause I’ve developed a consistent design language across my simulators, using the same typefaces and colour palette to give them a coherent identity. One of the main limitations is having to model everything as a perfect circle as I have never made a shader before this, but too complex and users won’t really enjoy it. Thanks for reading, hope you find this interesting.", "repo": "https://github.com/urged-st/gravi-lens-sim", "demo": "https://g-lens-sim.vercel.app"}]...
|
[{"post_id": 16860, "ts": "202 [{"post_id": 16860, "ts": "2026-06-27T11:21:32Z", "hours": 3.6564, "text": "Massive G-Lens update: Shipping NOW! Ok so I have been polishing this up now, making it look complete and just using trial and error to adjust the values for distortion cause there were quite a few annoying issues with that. Now, I present the finished G-Lens simulator. So, what have I done since my last devlog? I’ll split it into sections for you. UI: Added a dedicated side panel for stats, where there is a low opacity rectangle to create separation from the background image as it was hard to read the stats before. Added labels to everything where needed Changed the style of the “simple” preset from a solid blue circle to a circle with a blue glow, it’s nothing necessary but just looks better than a solid circle. Functionality: Added bg switcher Added auto scaling to each bg - this was necessary as different images had galaxies of different sizes, so the same massive black hole would look disproportionate if you used the same default scaling. So, I changed the scaling based on which image it is (no auto detect or anything but you see the point lol) Added a show/hide button for the lensing - previously this would prevent lens movement but there wasn’t really a reason to restrict this so I reverted it. Of course, we needed a reset button lol. Had to change distortion scaling with trial and error (this was the majority of 2hrs) and also modelling and remodelling the distort to match the scaling of the size of the lens. ^ the above changes aren’t chronological btw, but if you need it like that, my video devlogs on instagram are there. also I added the two new backgrounds as the famous Hubble Ultra Deep Fields from 2004 and 2014"}, {"post_id": 10179, "ts": "2026-06-16T19:51:25Z", "hours": 1.4928, "text": "PRESETS PRESETS PRESETS If you have seen my other sim, you’ll know I wasted no time on adding presets. Well I now have presets for this sim too to replicate lensing from different celestial bodies Also, the distortion was kinda eliptical, so I had to fix this as it would change due to different aspect ratios (now its circular). Added a mass slider, this had some layering issues before but thats not a problem now. I had to fix a bug where the field size and lens size increased at different rates (my stupid ahh used two different equations) so I just rewrote the equations I used for both. Overall a pretty productive 1hr 30mins, will probably add MORE UI features to make it feel more polished, change the bg image etc. Also probably a toggle lensing button. See you in the next one! all video devlogs are at https://instagram.com/urged.st"}, {"post_id": 8175, "ts": "2026-06-13T16:56:27Z", "hours": 4.1161, "text": "I FORGOT TO MAKE A LOG Okay so for the last 4 hours i’ve been fighting with my shader code as it didnt work for a long time, but it finally works. What was the issue? when using shaders on pngs, sometimes the edges and transparent areas render weird I thought my code was wrong, but in reality I just had to switch the image type. issue #2 was that the blue circle, which is the lens (had to make it obvious for debugging) was firstly having inverted movement to the actual distortion field, and secondly sometimes just not showing up. to fix the inverted movement, I just mapped the actual circle’s position to the field’s coords. (btw, the inversion was caused by webgl canvas and p5.js canvas having different coordinate systems) to fix it not showing up, that was just a layering issue. Overall, that 4 hour period was a rollercoaster and i’m glad its over. If you want to see how it broke (I didnt devlog this cause I was too preoccupied) there’s a video devlog on my instagram: https://www.instagram.com/urged.st/"}, {"post_id": 6855, "ts": "2026-06-11T14:42:13Z", "hours": 1.8492, "text": "Been toying around with distortion lately, I’m still torn between making a full on shader or just having distortion to look like lensing. Most of my time spent has been trial and error with different ways of distorting, from basic inward radial distortion to a more complex particle tracing distortion. I am gonna try and perfect this before moving on I think, because if I can’t get this right then in my opinion I have a long way to go before making a shader. added mass slider, larger masses = more gravity, so more lensing/distortion! made the source draggable, but I don’t know how useful this really is lol (maybe easier to centre, to see einstein rings?)"}, {"post_id": 5916, "ts": "2026-06-09T21:52:58Z", "hours": 1.4789, "text": "G-Lens Begins! This is, to say the least, gonna be hard. I have a rough idea of what I’m gonna do, but really i have never made a shader before or used GLSL. Luckily I decided not to do this today as I was already tired and decided to make a prototype which rather than solving the lens equation, simply uses a radial distort to… well distort the space around it. I did initially try distort a point mass (yeah my bad) so obviously had to switch it to a bunch of particles densely packed. This actually shows a distort, even if its not accurate to astrophysics (this isn’t the goal for today) Next steps? think about how i will integrate actual physics into this, and read MORE research papers."}]...
|
Title: G-Lens by @urged-st | Stardance
Devlogs:
G Title: G-Lens by @urged-st | Stardance
Devlogs:
G-Lens Begins! This is, to say the least, gonna be hard. I have a rough idea of what I’m gonna do, but really i have never made a shader before or used GLSL. Luckily I decided not to do this today as I was already tired and decided to make a prototype which rather than solving the lens equation, simply uses a radial distort to… well distort the space around it. I did initially try distort a point mass (yeah my bad) so obviously had to switch it to a bunch of particles densely packed. This actually shows a distort, even if its not accurate to astrophysics (this isn’t the goal for today) Next steps? think about how i will integrate actual physics into this, and read MORE research papers.
Been toying around with distortion lately, I’m still torn between making a full on shader or just having distortion to look like lensing. Most of my time spent has been trial and error with different ways of distorting, from basic inward radial distortion to a more complex particle tracing distortion. I am gonna try and perfect this before moving on I think, because if I can’t get this right then in my opinion I have a long way to go before making a shader. added mass slider, larger masses = more gravity, so more lensing/distortion! made the source draggable, but I don’t know how useful this really is lol (maybe easier to centre, to see einstein rings?)
I FORGOT TO MAKE A LOG Okay so for the last 4 hours i’ve been fighting with my shader code as it didnt work for a long time, but it finally works. What was the issue? when using shaders on pngs, sometimes the edges and transparent areas render weird I thought my code was wrong, but in reality I just had to switch the image type. issue #2 was that the blue circle, which is the lens (had to make it obvious for debugging) was firstly having inverted movement to the actual distortion field, and secondly sometimes just not showing up. to fix the inverted movement, I just mapped the actual circle’s position to the field’s coords. (btw, the inversion was caused by webgl canvas and p5.js canvas having different coordinate systems) to fix it not showing up, that was just a layering issue. Overall, that 4 hour period was a rollercoaster and i’m glad its over. If you want to see how it broke (I didnt devlog this cause I was too preoccupied) there’s a video devlog on my instagram: https://www.instagram.com/urged.st/
PRESETS PRESETS PRESETS If you have seen my other sim, you’ll know I wasted no time on adding presets. Well I now have presets for this sim too to replicate lensing from different celestial bodies Also, the distortion was kinda eliptical, so I had to fix this as it would change due to different aspect ratios (now its circular). Added a mass slider, this had some layering issues before but thats not a problem now. I had to fix a bug where the field size and lens size increased at different rates (my stupid ahh used two different equations) so I just rewrote the equations I used for both. Overall a pretty productive 1hr 30mins, will probably add MORE UI features to make it feel more polished, change the bg image etc. Also probably a toggle lensing button. See you in the next one! all video devlogs are at https://instagram.com/urged.st
Massive G-Lens update: Shipping NOW! Ok so I have been polishing this up now, making it look complete and just using trial and error to adjust the values for distortion cause there were quite a few annoying issues with that. Now, I present the finished G-Lens simulator. So, what have I done since my last devlog? I’ll split it into sections for you. UI: Added a dedicated side panel for stats, where there is a low opacity rectangle to create separation from the background image as it was hard to read the stats before. Added labels to everything where needed Changed the style of the “simple” preset from a solid blue circle to a circle with a blue glow, it’s nothing necessary but just looks better than a solid circle. Functionality: Added bg switcher Added auto scaling to each bg - this was necessary as different images had galaxies of different sizes, so the same massive black hole would look disproportionate if you used the same default scaling. So, I changed the scaling based on which image it is (no auto detect or anything but you see the point lol) Added a show/hide button for the lensing - previously this would prevent lens movement but there wasn’t really a reason to restrict this so I reverted it. Of course, we needed a reset button lol. Had to change distortion scaling with trial and error (this was the majority of 2hrs) and also modelling and remodelling the distort to match the scaling of the size of the lens. ^ the above changes aren’t chronological btw, but if you need it like that, my video devlogs on instagram are there. also I added the two new backgrounds as the famous Hubble Ultra Deep Fields from 2004 and 2014
Ships:
I have developed a functioning gravitational lensing simulator, where you can drag a massive object across a real deep field image and watch it warp the light from background galaxies in real time. You can adjust the mass of the lens and switch between presets simulating different object types: a simple lens, black hole, neutron star, and galaxy cluster, each with a distinct visual appearance. The most technically challenging part was the rendering architecture. Rather than handling everything in p5.js, I wrote a custom GLSL fragment shader running in WebGL to perform the actual light deflection, with p5.js running as a separate overlay layer for the UI and lens visuals. This was my first time writing a shader, and getting the aspect ratio correction and UV space deflection maths to work correctly took a long time. I also had to carefully calibrate the p5 lens visual to match the shader’s distortion radius, since they compute size differently. The landing overlay and info cards took a significant amount of time across many iterations because I wanted the design to feel polished and intentional rather than throwaway, and I’m especially happy with how the article view and card animations turned out. If the colour scheme and UI style look familiar, that’s intentional cause I’ve developed a consistent design language across my simulators, using the same typefaces and colour palette to give them a coherent identity. One of the main limitations is having to model everything as a perfect circle as I have never made a shader before this, but too complex and users won’t really enjoy it. Thanks for reading, hope you find this interesting....
|
1792878741.7895591
|
1793742741.7895591
|
|
18454
|
astrOS by @urged-st | Stardance
|
urged-st
|
2
|
32.0
|
302
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T18:06:53Z", "hours": 27.0, "multiplier": 11.44, "payout": 302, "blessing": "neutral", "text": "astrOS is a fullscreen web OS with nine astronomy apps built in vanilla JS: Sky Map uses real star positions calculated from your location, ISS Tracker polls live satellite data with haversine distance, Stargazing Conditions combines weather and moon phase into a seeing score, Solar System renders Keplerian orbits with clickable planets, Meteor Shower Tracker handles year-boundary showers correctly with proper countdown logic, plus NGC Catalogue, APOD, Mission Log, and Wallpaper Changer. I’m most proud of the Sky Map actually calculating real positions rather than faking it, and the ISS Tracker being genuinely useful for knowing whether the station is overhead. To test: open on desktop in fullscreen (geolocation needs permission and fullscreen mode to work), try dragging windows to screen edges to see snapping, check the meteor tracker during an active shower, click planets in Solar System to see their stats, and the Mission Log text persists across refreshes via localStorage. yes, i know it said 3 new features from webos1, but I got a bit too excited. have fun!", "repo": "https://github.com/urged-st/astrOS", "demo": "https://astr-os.vercel.app/"}, {"ship_num": 2, "ts": "2026-06-18T09:59:21Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I have made a functional astronomy focused WebOS called astrOS. It currently features a custom programmed sky map which takes your location and shows you what is currently in the sky near you, and a simple in-session notepad. It also has a right-click context menu featuring my socials and projects (project links will be added when they are done lol) You can minimise windows as well. Please put any suggestions for new features you have in comments, I’d appreciate it a lot.", "repo": "https://github.com/urged-st/astrOS", "demo": "https://astr-os.vercel.app/"}]...
|
[{"post_id": 29628, "ts": "202 [{"post_id": 29628, "ts": "2026-07-16T18:02:48Z", "hours": 3.6972, "text": "Meteor Shower Tracker finished the last feature, a year-round meteor shower schedule with active/upcoming status so you actually know when to set an alarm. 11 major showers baked in (Quadrantids through Ursids), and everything’s calculated client-side, no API needed. stores absolute peak dates for each shower and works out the active window locally, correctly handles the year-boundary ones (Quadrantids starts Dec 28, Ursids ends Dec 26) without breaking on Jan 1st sorts active showers first, then whoever’s next peak is soonest countdown properly distinguishes “peak in Xd” from “peaked Xd ago” for showers you’re still inside the window for but already past peak on, caught that bug and fixed it before shipping by testing across multiple dates including exact-peak day (Aug 12 for Perseids) renders as a compact list with radiant constellation, ZHR (~Zenith Hourly Rate), and the peak countdown, all colour-coded so active showers pop no polling, just recomputes fresh every time you open it Bug Fixes & Polish went through all three files line-by-line before shipping. found and fixed two bugs plus some cleanup: window snapping corners were broken — getSnapZone() detected top-left/top-right when you dragged to a corner, but showSnapPreview() and applySnap() never had rect definitions for those zones, so the preview showed nothing and the drop silently failed. added proper quarter-tile rects for both corners so you can now snap to all four quadrants APOD toggle IDs — getElementById() calls for apod explanation/toggle buttons were working but the elements weren’t explicitly in the HTML, they were created at render-time by innerHTML, so the id references were technically fine but fragile. left them as-is since they work, but flagged it as something to refactor if we add more dynamic content later also ik its been shown in an earlier devlog, but the taskbar on the bottom isn’t exactly empty lol, you can minimise apps to it (third pic). maybe i’ll add a pin to taskbar feature? what’s left SHIPPPPPPPPPPPPPPPPPPPPPPPPP"}, {"post_id": 28122, "ts": "2026-07-14T06:30:28Z", "hours": 0.7539, "text": "Tiny fix lol I stopped good ol’ neptune being cut off on the solar system map, and also made it so that the contents of the notepad/mission log are saved in localStorage"}, {"post_id": 27936, "ts": "2026-07-13T21:28:34Z", "hours": 3.2881, "text": "Solar System Viewer Thought it’d be cool to have something you could just leave open on the desktop, so I added a little live Solar System app. Every planet sits where it actually should be today rather than looping around on some fake animation. Planet positions come from simplified J2000 Keplerian elements (semi-major axis, eccentricity, orbital period, etc.) and get advanced from the current date, so they’re calculated fresh instead of being hardcoded. Conveniently I’d already written a Newton-Raphson solver for Kepler’s equation while making Umbra, so I shamelessly reused it here to solve the eccentric anomaly before converting that into the planet’s true anomaly and distance from the Sun. Nice when old suffering becomes reusable code lol. Biggest headache honestly wasn’t the orbital maths, it was the scale. If you draw everything linearly then Neptune disappears off the edge of the canvas, but if you squash everything too much then the inner planets all merge together. Ended up scaling the orbital radius by √r instead, which keeps the angular positions correct while compressing the distances enough that the whole Solar System fits on one screen. Made every planet clickable as well because a static diagram felt a bit dead. Clicking one gives its current distance from the Sun and orbital period, with Earth getting a little highlight ring so it’s easy to spot where we are. It redraws once a minute since the planets barely move on human timescales anyway, and it’s definitely not accurate enough to navigate a spacecraft with, but it’s surprisingly close considering it’s just running a handful of orbital equations in the browser lol. deffo gonna play around with the window sizing cause its kinda weird right now… also neptune is STILL SQUASHED (genuine annoyance btw) so will do this TOMORROW."}, {"post_id": 27585, "ts": "2026-07-13T09:25:48Z", "hours": 3.4686, "text": "Stargazing Conditions New app, tells you whether tonight’s actually worth setting up a telescope for. pulls cloud cover, humidity and wind from Open-Meteo using the location I already grab on boot, no key needed which is nice the moon phase bit doesn’t touch an API at all, did it properly with the synodic month (29.53 days) against a known reference new moon, so it’s just maths running locally combined cloud cover and moon brightness into a rough seeing score out of 10, heavier cloud and a brighter moon both drag it down, then a one-line verdict underneath so you don’t have to interpret the number yourself was gonna render an actual crescent/gibbous moon on canvas for this but after the ISS ground track thing broke last time I didn’t wanna ship more clipping/arc geometry I couldn’t properly test, so it’s just the phase emoji + name + illumination % instead. honestly looks fine, might revisit the canvas version later if I’m bored"}, {"post_id": 26790, "ts": "2026-07-11T19:46:07Z", "hours": 3.5022, "text": "ISS Tracker New app, tracks the ISS live using wheretheiss.at (no key needed, CORS-open, genuinely such a nice API to work with). Polls every 5 seconds for lat/lon/altitude/velocity Keeping the last 20 fixes so there’s a fading trail behind the current position instead of just a dot that teleports every update Drew my own little world map for this since I didn’t want to deal with map tile assets, just lat/lon gridlines every 30°, equator and prime meridian slightly brighter. I reused the geolocation I already grab on boot for the sky map, so this app also shows your distance from the ISS via a haversineKm() calc, and flags when it’s within ~2000km with a little “nearby!” tag. Not a proper overhead check (that’d need elevation angle above your horizon) but good enough for now Added a stopIssTracker() call on window close so the polling interval actually dies instead of running forever in the background, learnt that lesson the hard way after leaving a tab open for way too long testing this At the time of writing this I had just the idea to implement a trail that shows the future path, will do this now lol."}, {"post_id": 26626, "ts": "2026-07-11T15:37:59Z", "hours": 2.4692, "text": "APOD Viewer Added the Astronomy Picture of the Day app, pulls straight from NASA’s API and shows today’s pic with the write-up tucked behind a toggle so the image gets to be the main object first. Cached in localStorage per calendar day, so reopening the window doesn’t burn another call for the same picture Nearly got got by this one: NASA sometimes serves a video instead of an image for the day, and my first pass just shoved the url into an <img> tag, broken image icon staring back at me lol Added a media_type check so videos link out instead of trying to embed Also handled the fetch failing outright, just shows a “try again later” message instead of leaving a blank window, DEMO_KEY ’s rate limit is gonna trip this eventually so it needed to fail gracefully lol what’s next? either stargazing conditions or the ISS tracker, we’ll see which one I go for"}, {"post_id": 22333, "ts": "2026-07-04T19:10:32Z", "hours": 9.3625, "text": "Okay, yes I forgot to devlog… or commit This was an absolute lock-in but I don’t wanna rank low on storytelling, so I’ll make this one detailed lol. Wallpaper Switcher Six presets, default plus five gradients: nebula, deep blue, solar flare, aurora, mono Clicking a swatch fades the desktop background over 0.6s instead of snapping Choice persists via localStorage so it survives a refresh markActiveWallpaperSwatch re-reads storage and re-marks the active swatch every time the window reopens NGC Catalogue Browser Started as a hardcoded Messier list, which I scrapped once I found Datastro’s public deep sky objects dataset (~220k NGC/IC/Messier entries, CORS-open, no key) Search input debounces 350ms before hitting the API, results sort by magnitude Clicking a result fills the detail panel: type, constellation, magnitude, coordinates Dataset uses the Historically Corrected NGC scheme ( GPair , OCl , SNR , Cl+N ), so I wrote a bucket function that checks substrings to map raw types into galaxy, nebula, cluster, or other for the filter dropdown Built an 8-object offline fallback (Andromeda, Orion Nebula, Ring Nebula, Pleiades, etc) that kicks in silently if the fetch fails, with a small offline warning shown in the list Did You Know Notifications Toast-style pings slide in from the right with a random space fact First one fires after 4 seconds, then every 60-120 seconds at random 18 facts in the pool right now, the neutron star teaspoon one still gets me Caught a bug where fast in/out window clicks could call scheduleNotifications twice and stack two loops, doubling the ping rate Fixed it with a notifStarted flag so the loop only ever starts once Window Resizing And Snapping Built right before the wallpaper stuff, resize first then snap Every window gets a drag handle in the bottom right corner, clamped to a minimum width and height Handle calls stopPropagation on mousedown so resizing doesn’t also trigger the window drag Snap shows a dashed preview box near screen edges, locks into that rect on release Found a bug writing this up: a top-right zone gets detected but has no rect defined for it, so it falls back to snapping full width across the top instead of a proper quadrant."}, {"post_id": 11193, "ts": "2026-06-18T09:52:09Z", "hours": 1.0806, "text": "WebOS 1 - Finished! Sure it took longer than it should’ve, but at least the sky map is quality Today I finished off the final parts for the first mission. I added a coords toggle so you don’t doxx yourself while taking screenshots of the map. I also fixed up the minimising animation and changed the taskbar to host the app icons instead of the usual app name (this had an ugly white bg lol so I had to change it no matter what) I also added a custom background (yes this is reused from my g-lens project sue me) I’m gonna ship this now for WebOS 1, the finished, polished product will be shipped for WebOS 2 (so if anything can be improved, dm me or comment and I’ll fix it then!)"}, {"post_id": 10856, "ts": "2026-06-17T20:07:29Z", "hours": 0.5308, "text": "Small update added a basic notepad app, it does not save between sessions though. added an animation to minimising windows [FIX] made star names not rotate with the star map (this was annoying me lol) what’s next? add icons to taskbar and not just names for minimised apps hide the coords on sky map lol dont doxx yourself a review of the guidelines so I can get webOS 2!"}, {"post_id": 9505, "ts": "2026-06-15T21:22:49Z", "hours": 2.37, "text": "MAJORRR Update First app, context menu, and a LOT of stars 😭 Today I wanted to add an app. Not a standard one like notepad, music, file explorer… something that is different. So, naturally, I spent two hours coding my own star map using a ton of stars from the yale bright star catalogue (okay maybe not a ton but you get the idea). It takes the users location, calculates the chunk of sky above them (yes, you can do this) and shows the major stars visible to the naked eye on a turntable style minimap. What the heck am I gonna do next for one, the text on the map rotates with everything so i gotta fix that THEN i’ll add a normal app like notepad lol a background needs to be added too, also I might add a bg switcher. ohhhh yeah and i added stuff from the guide like the topbar and time, that’s not the star of the show for this log though lol."}, {"post_id": 8666, "ts": "2026-06-14T12:13:02Z", "hours": 0.7083, "text": "astrOS day 1: I want to finish this project really efficiently, so I have mapped out what features I want (you will see as they come). Today, I finished the boot screen and styling for it, and made the file structure. Not much, only 40 mins, but since its a roughly 2hr 30m project, 30m a day means I finish in 5 days. Next devlog should hopefully be finishing the desktop design, probably ~1hr."}]...
|
Title: astrOS by @urged-st | Stardance
Devlogs:
a Title: astrOS by @urged-st | Stardance
Devlogs:
astrOS day 1: I want to finish this project really efficiently, so I have mapped out what features I want (you will see as they come). Today, I finished the boot screen and styling for it, and made the file structure. Not much, only 40 mins, but since its a roughly 2hr 30m project, 30m a day means I finish in 5 days. Next devlog should hopefully be finishing the desktop design, probably ~1hr.
MAJORRR Update First app, context menu, and a LOT of stars 😭 Today I wanted to add an app. Not a standard one like notepad, music, file explorer… something that is different. So, naturally, I spent two hours coding my own star map using a ton of stars from the yale bright star catalogue (okay maybe not a ton but you get the idea). It takes the users location, calculates the chunk of sky above them (yes, you can do this) and shows the major stars visible to the naked eye on a turntable style minimap. What the heck am I gonna do next for one, the text on the map rotates with everything so i gotta fix that THEN i’ll add a normal app like notepad lol a background needs to be added too, also I might add a bg switcher. ohhhh yeah and i added stuff from the guide like the topbar and time, that’s not the star of the show for this log though lol.
Small update added a basic notepad app, it does not save between sessions though. added an animation to minimising windows [FIX] made star names not rotate with the star map (this was annoying me lol) what’s next? add icons to taskbar and not just names for minimised apps hide the coords on sky map lol dont doxx yourself a review of the guidelines so I can get webOS 2!
WebOS 1 - Finished! Sure it took longer than it should’ve, but at least the sky map is quality Today I finished off the final parts for the first mission. I added a coords toggle so you don’t doxx yourself while taking screenshots of the map. I also fixed up the minimising animation and changed the taskbar to host the app icons instead of the usual app name (this had an ugly white bg lol so I had to change it no matter what) I also added a custom background (yes this is reused from my g-lens project sue me) I’m gonna ship this now for WebOS 1, the finished, polished product will be shipped for WebOS 2 (so if anything can be improved, dm me or comment and I’ll fix it then!)
Okay, yes I forgot to devlog… or commit This was an absolute lock-in but I don’t wanna rank low on storytelling, so I’ll make this one detailed lol. Wallpaper Switcher Six presets, default plus five gradients: nebula, deep blue, solar flare, aurora, mono Clicking a swatch fades the desktop background over 0.6s instead of snapping Choice persists via localStorage so it survives a refresh markActiveWallpaperSwatch re-reads storage and re-marks the active swatch every time the window reopens NGC Catalogue Browser Started as a hardcoded Messier list, which I scrapped once I found Datastro’s public deep sky objects dataset (~220k NGC/IC/Messier entries, CORS-open, no key) Search input debounces 350ms before hitting the API, results sort by magnitude Clicking a result fills the detail panel: type, constellation, magnitude, coordinates Dataset uses the Historically Corrected NGC scheme ( GPair , OCl , SNR , Cl+N ), so I wrote a bucket function that checks substrings to map raw types into galaxy, nebula, cluster, or other for the filter dropdown Built an 8-object offline fallback (Andromeda, Orion Nebula, Ring Nebula, Pleiades, etc) that kicks in silently if the fetch fails, with a small offline warning shown in the list Did You Know Notifications Toast-style pings slide in from the right with a random space fact First one fires after 4 seconds, then every 60-120 seconds at random 18 facts in the pool right now, the neutron star teaspoon one still gets me Caught a bug where fast in/out window clicks could call scheduleNotifications twice and stack two loops, doubling the ping rate Fixed it with a notifStarted flag so the loop only ever starts once Window Resizing And Snapping Built right before the wallpaper stuff, resize first then snap Every window gets a drag handle in the bottom right corner, clamped to a minimum width and height Handle calls stopPropagation on mousedown so resizing doesn’t also trigger the window drag Snap shows a dashed preview box near screen edges, locks into that rect on release Found a bug writing this up: a top-right zone gets detected but has no rect defined for it, so it falls back to snapping full width across the top instead of a proper quadrant.
APOD Viewer Added the Astronomy Picture of the Day app, pulls straight from NASA’s API and shows today’s pic with the write-up tucked behind a toggle so the image gets to be the main object first. Cached in localStorage per calendar day, so reopening the window doesn’t burn another call for the same picture Nearly got got by this one: NASA sometimes serves a video instead of an image for the day, and my first pass just shoved the url into an <img> tag, broken image icon staring back at me lol Added a media_type check so videos link out instead of trying to embed Also handled the fetch failing outright, just shows a “try again later” message instead of leaving a blank window, DEMO_KEY ’s rate limit is gonna trip this eventually so it needed to fail gracefully lol what’s next? either stargazing conditions or the ISS tracker, we’ll see which one I go for
ISS Tracker New app, tracks the ISS live using wheretheiss.at (no key needed, CORS-open, genuinely such a nice API to work with). Polls every 5 seconds for lat/lon/altitude/velocity Keeping the last 20 fixes so there’s a fading trail behind the current position instead of just a dot that teleports every update Drew my own little world map for this since I didn’t want to deal with map tile assets, just lat/lon gridlines every 30°, equator and prime meridian slightly brighter. I reused the geolocation I already grab on boot for the sky map, so this app also shows your distance from the ISS via a haversineKm() calc, and flags when it’s within ~2000km with a little “nearby!” tag. Not a proper overhead check (that’d need elevation angle above your horizon) but good enough for now Added a stopIssTracker() call on window close so the polling interval actually dies instead of running forever in the background, learnt that lesson the hard way after leaving a tab open for way too long testing this At the time of writing this I had just the idea to implement a trail that shows the future path, will do this now lol.
Stargazing Conditions New app, tells you whether tonight’s actually worth setting up a telescope for. pulls cloud cover, humidity and wind from Open-Meteo using the location I already grab on boot, no key needed which is nice the moon phase bit doesn’t touch an API at all, did it properly with the synodic month (29.53 days) against a known reference new moon, so it’s just maths running locally combined cloud cover and moon brightness into a rough seeing score out of 10, heavier cloud and a brighter moon both drag it down, then a one-line verdict underneath so you don’t have to interpret the number yourself was gonna render an actual crescent/gibbous moon on canvas for this but after the ISS ground track thing broke last time I didn’t wanna ship more clipping/arc geometry I couldn’t properly test, so it’s just the phase emoji + name + illumination % instead. honestly looks fine, might revisit the canvas version later if I’m bored
Solar System Viewer Thought it’d be cool to have something you could just leave open on the desktop, so I added a little live Solar System app. Every planet sits where it actually should be today rather than looping around on some fake animation. Planet positions come from simplified J2000 Keplerian elements (semi-major axis, eccentricity, orbital period, etc.) and get advanced from the current date, so they’re calculated fresh instead of being hardcoded. Conveniently I’d already written a Newton-Raphson solver for Kepler’s equation while making Umbra, so I shamelessly reused it here to solve the eccentric anomaly before converting that into the planet’s true anomaly and distance from the Sun. Nice when old suffering becomes reusable code lol. Biggest headache honestly wasn’t the orbital maths, it was the scale. If you draw everything linearly then Neptune disappears off the edge of the canvas, but if you squash everything too much then the inner planets all merge together. Ended up scaling the orbital radius by √r instead, which keeps the angular positions correct while compressing the distances enough that the whole Solar System fits on one screen. Made every planet clickable as well because a static diagram felt a bit dead. Clicking one gives its current distance from the Sun and orbital period, with Earth getting a little highlight ring so it’s easy to spot where we are. It redraws once a minute since the planets barely move on human timescales anyway, and it’s definitely not accurate enough to navigate a spacecraft with, but it’s surprisingly close considering it’s just running a handful of orbital equations in the browser lol. deffo gonna play around with the window sizing cause its kinda weird right now… also neptune is STILL SQUASHED (genuine annoyance btw) so will do this TOMORROW.
Tiny fix lol I stopped good ol’ neptune being cut off on the solar system map, and also made it so that the contents of the notepad/mission log are saved in localStorage
Meteor Shower Tracker finished the last feature, a year-round meteor shower schedule with active/upcoming status so you actually know when to set an alarm. 11 major showers baked in (Quadrantids through Ursids), and everything’s calculated client-side, no API needed. stores absolute peak dates for each shower and works out the active window locally, correctly handles the year-boundary ones (Quadrantids starts Dec 28, Ursids ends Dec 26) without breaking on Jan 1st sorts active showers first, then whoever’s next peak is soonest countdown properly distinguishes “peak in Xd” from “peaked Xd ago” for showers you’re still inside the window for but already past peak on, caught that bug and fixed it before shipping by testing across multiple dates including exact-peak day (Aug 12 for Perseids) renders as a compact list with radiant constellation, ZHR (~Zenith Hourly Rate), and the peak countdown, all colour-coded so active showers pop no polling, just recomputes fresh every time you open it Bug Fixes & Polish went through all three files line-by-line before shipping. found and fixed two bugs plus some cleanup: window snapping corners were broken — getSnapZone() detected top-left/top-right when you dragged to a corner, but showSnapPreview() and applySnap() never had rect definitions for those zones, so the preview showed nothing and the drop silently failed. added proper quarter-tile rects for both corners so you can now snap to all four quadrants APOD toggle IDs — getElementById() calls for apod explanation/toggle buttons were working but the elements weren’t explicitly in the HTML, they were created at render-time by innerHTML, so the id references were technically fine but fragile. left them as-is since they work, but flagged it as something to refactor if we add more dynamic content later also ik its been shown in an earlier devlog, but the taskbar on the bottom isn’t exactly empty lol, you can minimise apps to it (third pic). maybe i’ll add a pin to taskbar feature? what’s left SHIPPPPPPPPPPPPPPPPPPPPPPPPP
Ships:
I have made a functional astronomy focused WebOS called astrOS. It currently features a custom programmed sky map which takes your location and shows you what is currently in the sky near you, and a simple in-session notepad. It also has a right-click context menu featuring my socials and projects (project links will be added when they are done lol) You can minimise windows as well. Please put any suggestions for new features you have in comments, I’d appreciate it a lot.
astrOS is a fullscreen web OS with nine astronomy apps built in vanilla JS: Sky Map uses real star positions calculated from your location, ISS Tracker polls live satellite data with haversine distance, Stargazing Conditions combines weather and moon phase into a seeing score, Solar System renders Keplerian orbits with clickable planets, Meteor Shower Tracker handles year-boundary showers correctly with proper countdown logic, plus NGC Catalogue, APOD, Mission Log, and Wallpaper Changer. I’m most proud of the Sky Map actually calculating real positions rather than faking it, and the ISS Tracker being genuinely useful for knowing whether the station is overhead. To test: open on desktop in fullscreen (geolocation needs permission and fullscreen mode to work), try dragging windows to screen edges to see snapping, check the meteor tracker during an active shower, click planets in Solar System to see their stats, and the Mission Log text persists across refreshes via localStorage. yes, i know it said 3 new features from webos1, but I got a bit too excited. have fun!...
|
1792878752.5116427
|
1793742752.5116427
|
|
19413
|
Perry. by @urged-st | Stardance
|
urged-st
|
1
|
1.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-15T22:27:58Z", "hours": 1.0, "multiplier": 2.48, "payout": 3, "blessing": "neutral", "text": "I made a site that shows a short story of “perry the period blood” It is not intended as educational or informative mainly just a light spin on a topic rarely talked about.", "repo": "https://github.com/urged-st/perry", "demo": "https://perrytheperiodblood.vercel.app"}]...
|
[{"post_id": 9542, "ts": "2026 [{"post_id": 9542, "ts": "2026-06-15T22:24:54Z", "hours": 1.0739, "text": "1hr challenge to make perry the period blood This is a small site that has a short story of perry the period blood It is based off an inside joke with my friends I challenged myself to build it in an hour I guess it worked, now i can do something useful!"}]...
|
Title: Perry. by @urged-st | Stardance
Devlogs:
1 Title: Perry. by @urged-st | Stardance
Devlogs:
1hr challenge to make perry the period blood This is a small site that has a short story of perry the period blood It is based off an inside joke with my friends I challenged myself to build it in an hour I guess it worked, now i can do something useful!
Ships:
I made a site that shows a short story of “perry the period blood” It is not intended as educational or informative mainly just a light spin on a topic rarely talked about....
|
1792878753.3268752
|
1793742753.3268752
|
|
22654
|
Umbra by @urged-st | Stardance
|
urged-st
|
1
|
19.0
|
243
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T19:00:39Z", "hours": 19.0, "multiplier": 12.73, "payout": 243, "blessing": "neutral", "text": "umbra is a browser-based exoplanet transit simulator. you get a star, a planet on an adjustable orbit, and a live light curve that dips every time the planet crosses in front of the star. sliders control planet size, orbit radius, orbit speed and eccentricity, and there’s a set of presets so you can jump straight to different planet types (hot jupiter, super-earth, earth-like, etc) without tuning everything by hand. getting the orbit itself right was very hard. circular orbits are easy, but real planets have eccentric ones, which means solving kepler’s equation to work out where the planet actually is at any given moment. did that with newton-raphson, a handful of iterations converges fast enough to run every frame without lagging. have fun!", "repo": "https://github.com/urged-st/Umbra", "demo": "https://umbra-sim.vercel.app"}]...
|
[{"post_id": 27915, "ts": "202 [{"post_id": 27915, "ts": "2026-07-13T20:51:32Z", "hours": 3.1261, "text": "Umbra — Adding Some Chaos (On Purpose) Real telescopes don’t hand you a perfect light curve, they hand you a noisy mess with a signal buried in it, so I added a noise toggle to make Umbra actually look like real data instead of a simple ahh textbook diagram Used a Box-Muller transform to turn two uniform randoms into a proper gaussian sample, tuned roughly to TESS-scale scatter so it’s not comically noisy, just enough to make the dip look like something you’d actually have to squint at New “N” button sits next to the reset one, goes amber when it’s on, same button family as everything else up there The bit I actually spent time thinking about, which was that the noise only touches what gets drawn on the graph, not the underlying flux value. Transit detection, transit counting, period measurement, and the stats panel all still read the clean number I wanted it this way on purpose, in real analysis you don’t just throw the noise away, you fit the curve through it, so having Umbra’s detection stay accurate underneath a noisy-looking graph felt like the more honest way to represent that, rather than making the sim itself worse at its job just for realism points lol"}, {"post_id": 27093, "ts": "2026-07-12T10:56:00Z", "hours": 2.3894, "text": "Umbra - Making the Dip Actually Mean Something Kepler solved the “where the heck is the planet” issue, but I still had a “how much light does it actually block” issue, and the answer wasn’t as simple as I first thought My first instinct was just measuring the distance between planet and star centres and eyeballing a dim amount from that, which is wrong the second the planet is anything other than fully in or fully out What you actually need is the overlap area between two circles, so I built circleOverlapArea() using the proper lens equation, it takes the centre distance plus both radii and works out the exact overlapping region This is what gives you the sloped ingress and egress on the light curve instead of a dip that just snaps to a flat bottom, which is a lot closer to what a real transit looks like Also added depth ordering off the back of this, since I needed to know when the planet’s on the near side of the orbit vs the far side so it draws in front of or behind the star correctly (sin of the eccentric anomaly tells you which side you’re on, handy) Once the flux number was actually trustworthy, I edited the instrumentation to go with it: fixed the stats panel (radius ratio, current flux, transit depth, max depth, eccentricity, transit count, measured period) rising-edge detection so it counts transits and times the period itself, rather than me just reading it off the speed slider fixed the light curve graph itself, plotting flux over time with gridlines so you can actually see the dip shape as it happens Genuinely didn’t expect the geometry bit to be the harder half of this session, Kepler felt like the scary one going in but the overlap maths turned out to be the fiddlier of the two! I also distributed all my code into separate files as for some reason I put it all inline in one html file and I got some reviews about file structure on my other projects, so didn’t want to repeat that lol"}, {"post_id": 26213, "ts": "2026-07-10T21:36:46Z", "hours": 4.0325, "text": "Umbra — Kepler’s Equation Nearly Broke Me So remember in the first devlog when I said I spent 2+ hours just getting the orbit right? Turns out “right” was still wrong, the planet was moving at constant angular speed the whole time, which is basically not how orbits work Real orbits speed up near the star and slow down far away (thanks Kepler), so I had to actually solve Kepler’s equation properly instead of faking it Problem is M = E − e·sin(E) has no closed-form solution for E, you can’t just rearrange and solve for it like a normal equation, which I did not know going in and briefly panicked about Ended up using Newton-Raphson to solve it numerically, feels very full circle after doing the same kind of thing for my EPQ (orbital sim for near-Earth objects), except this time it’s converging in like 5 iterations instead of me validating against JPL Horizons for weeks lol The difference is honestly crazy to look at now, the planet visibly rips through periapsis and crawls through apoapsis instead of just gliding round at one speed the whole way, which is exactly what real eccentric orbits do Pretty happy with this 4 hours cause it means I now have actual physics rather than some fake thing only added for the visuals. below are some snippets from the solvers but not the full code of course"}, {"post_id": 15548, "ts": "2026-06-25T08:42:15Z", "hours": 5.0658, "text": "Umbra - Major Update! Ok, I’ll admit I wasn’t too consistent with devlogging as I was with my other projects, so I’ll keep this detailed for that storytelling rating So I started by adding the four sliders - the planet radius, orbit radius, speed, and eccentricity. The eccentricity one was probably the most interesting to build because I didn’t want it to just go from 0 to max in one direction, I made it signed so zero sits in the middle of the slider and you can push the elongation either way. Felt much more intuitive to use. I also had to add a clamp so the orbit can’t intersect the star — without it you could drag the eccentricity up until the planet was literally passing through the star which looked awful. It recalculates the safe maximum every frame based on whatever the other sliders are at, and goes amber with a little “(max)” label if you’re hitting the ceiling. Then I added presets (as always lol): Hot Jupiter, Super-Earth, Earth-like, Eccentric Giant, Grazing Transit, as a dropdown that snaps all the sliders at once. Wanted a way to show off what different orbit types actually look like on the light curve without the user having to dial everything in manually. Each preset fires a little toast notification from the top of the screen with a one-liner about what makes that orbit interesting, which I’m pretty happy with. Last thing was the reset button — just a ↺ in the top right that puts everything back to defaults and clears the graph. Small thing but its actually really useful when you’ve been toying around with this all day 😭, saves me a bit of sanity. If you want more on what I did and why I did it feel free to check out https://instagram.com/urged.st where I post video devlogs!"}, {"post_id": 12699, "ts": "2026-06-20T18:55:31Z", "hours": 4.6267, "text": "Umbra Begins Alright, we’re really hitting the ground running with this one. Started yesterday and I’m already 4 hours deep (my goal is 10hrs minimum for each simulator) Added the heavy UI now so I don’t have to write paragraphs later (wasn’t too bad lol, same styling as the other two sims) Added an orbiting planet (yes I spent two hours + on the planet and getting its orbit right…)"}]...
|
Title: Umbra by @urged-st | Stardance
Devlogs:
Um Title: Umbra by @urged-st | Stardance
Devlogs:
Umbra Begins Alright, we’re really hitting the ground running with this one. Started yesterday and I’m already 4 hours deep (my goal is 10hrs minimum for each simulator) Added the heavy UI now so I don’t have to write paragraphs later (wasn’t too bad lol, same styling as the other two sims) Added an orbiting planet (yes I spent two hours + on the planet and getting its orbit right…)
Umbra - Major Update! Ok, I’ll admit I wasn’t too consistent with devlogging as I was with my other projects, so I’ll keep this detailed for that storytelling rating So I started by adding the four sliders - the planet radius, orbit radius, speed, and eccentricity. The eccentricity one was probably the most interesting to build because I didn’t want it to just go from 0 to max in one direction, I made it signed so zero sits in the middle of the slider and you can push the elongation either way. Felt much more intuitive to use. I also had to add a clamp so the orbit can’t intersect the star — without it you could drag the eccentricity up until the planet was literally passing through the star which looked awful. It recalculates the safe maximum every frame based on whatever the other sliders are at, and goes amber with a little “(max)” label if you’re hitting the ceiling. Then I added presets (as always lol): Hot Jupiter, Super-Earth, Earth-like, Eccentric Giant, Grazing Transit, as a dropdown that snaps all the sliders at once. Wanted a way to show off what different orbit types actually look like on the light curve without the user having to dial everything in manually. Each preset fires a little toast notification from the top of the screen with a one-liner about what makes that orbit interesting, which I’m pretty happy with. Last thing was the reset button — just a ↺ in the top right that puts everything back to defaults and clears the graph. Small thing but its actually really useful when you’ve been toying around with this all day 😭, saves me a bit of sanity. If you want more on what I did and why I did it feel free to check out https://instagram.com/urged.st where I post video devlogs!
Umbra — Kepler’s Equation Nearly Broke Me So remember in the first devlog when I said I spent 2+ hours just getting the orbit right? Turns out “right” was still wrong, the planet was moving at constant angular speed the whole time, which is basically not how orbits work Real orbits speed up near the star and slow down far away (thanks Kepler), so I had to actually solve Kepler’s equation properly instead of faking it Problem is M = E − e·sin(E) has no closed-form solution for E, you can’t just rearrange and solve for it like a normal equation, which I did not know going in and briefly panicked about Ended up using Newton-Raphson to solve it numerically, feels very full circle after doing the same kind of thing for my EPQ (orbital sim for near-Earth objects), except this time it’s converging in like 5 iterations instead of me validating against JPL Horizons for weeks lol The difference is honestly crazy to look at now, the planet visibly rips through periapsis and crawls through apoapsis instead of just gliding round at one speed the whole way, which is exactly what real eccentric orbits do Pretty happy with this 4 hours cause it means I now have actual physics rather than some fake thing only added for the visuals. below are some snippets from the solvers but not the full code of course
Umbra - Making the Dip Actually Mean Something Kepler solved the “where the heck is the planet” issue, but I still had a “how much light does it actually block” issue, and the answer wasn’t as simple as I first thought My first instinct was just measuring the distance between planet and star centres and eyeballing a dim amount from that, which is wrong the second the planet is anything other than fully in or fully out What you actually need is the overlap area between two circles, so I built circleOverlapArea() using the proper lens equation, it takes the centre distance plus both radii and works out the exact overlapping region This is what gives you the sloped ingress and egress on the light curve instead of a dip that just snaps to a flat bottom, which is a lot closer to what a real transit looks like Also added depth ordering off the back of this, since I needed to know when the planet’s on the near side of the orbit vs the far side so it draws in front of or behind the star correctly (sin of the eccentric anomaly tells you which side you’re on, handy) Once the flux number was actually trustworthy, I edited the instrumentation to go with it: fixed the stats panel (radius ratio, current flux, transit depth, max depth, eccentricity, transit count, measured period) rising-edge detection so it counts transits and times the period itself, rather than me just reading it off the speed slider fixed the light curve graph itself, plotting flux over time with gridlines so you can actually see the dip shape as it happens Genuinely didn’t expect the geometry bit to be the harder half of this session, Kepler felt like the scary one going in but the overlap maths turned out to be the fiddlier of the two! I also distributed all my code into separate files as for some reason I put it all inline in one html file and I got some reviews about file structure on my other projects, so didn’t want to repeat that lol
Umbra — Adding Some Chaos (On Purpose) Real telescopes don’t hand you a perfect light curve, they hand you a noisy mess with a signal buried in it, so I added a noise toggle to make Umbra actually look like real data instead of a simple ahh textbook diagram Used a Box-Muller transform to turn two uniform randoms into a proper gaussian sample, tuned roughly to TESS-scale scatter so it’s not comically noisy, just enough to make the dip look like something you’d actually have to squint at New “N” button sits next to the reset one, goes amber when it’s on, same button family as everything else up there The bit I actually spent time thinking about, which was that the noise only touches what gets drawn on the graph, not the underlying flux value. Transit detection, transit counting, period measurement, and the stats panel all still read the clean number I wanted it this way on purpose, in real analysis you don’t just throw the noise away, you fit the curve through it, so having Umbra’s detection stay accurate underneath a noisy-looking graph felt like the more honest way to represent that, rather than making the sim itself worse at its job just for realism points lol
Ships:
umbra is a browser-based exoplanet transit simulator. you get a star, a planet on an adjustable orbit, and a live light curve that dips every time the planet crosses in front of the star. sliders control planet size, orbit radius, orbit speed and eccentricity, and there’s a set of presets so you can jump straight to different planet types (hot jupiter, super-earth, earth-like, etc) without tuning everything by hand. getting the orbit itself right was very hard. circular orbits are easy, but real planets have eccentric ones, which means solving kepler’s equation to work out where the planet actually is at any given moment. did that with newton-raphson, a handful of iterations converges fast enough to run every frame without lagging. have fun!...
|
1792878740.9890122
|
1793742740.9890122
|
|
25909
|
AstroLab by @urged-st | Stardance
|
urged-st
|
0
|
1.37
|
0
|
[]
|
[{"post_id": 18237, "ts": "202 [{"post_id": 18237, "ts": "2026-06-29T09:51:14Z", "hours": 1.3733, "text": "I have made the initial design for the site. Currently, its pretty simple as I have been spending all my time on the actual simulators, however I am gonna think about maybe having the sims embedded in the site rather than just a link. Only thing is that it may cause resizing issues where text may overlap. I used a similar starfield generation script to my other projects (its all gotta look similar sorry shipwrights if all you see on my projects is this style) and a similar light blue to accent and add some contrast to it. I might redo it a bit to look like a more normal website cause it really just looks like one of my simulations lol but it needs to have some sort of flair to it, I just need to think about what that flair will actually BE (any ideas will be appreciated ) That’s all for this devlog, nothing much just getting started really that’s all."}]...
|
Title: AstroLab by @urged-st | Stardance
Devlogs: Title: AstroLab by @urged-st | Stardance
Devlogs:
I have made the initial design for the site. Currently, its pretty simple as I have been spending all my time on the actual simulators, however I am gonna think about maybe having the sims embedded in the site rather than just a link. Only thing is that it may cause resizing issues where text may overlap. I used a similar starfield generation script to my other projects (its all gotta look similar sorry shipwrights if all you see on my projects is this style) and a similar light blue to accent and add some contrast to it. I might redo it a bit to look like a more normal website cause it really just looks like one of my simulations lol but it needs to have some sort of flair to it, I just need to think about what that flair will actually BE (any ideas will be appreciated ) That’s all for this devlog, nothing much just getting started really that’s all....
|
1792918474.1317346
|
1793782474.1317346
|
|
29586
|
G.R.I.D by @urged-st | Stardance
|
urged-st
|
0
|
6.91
|
0
|
[]
|
[{"post_id": 30814, "ts": "202 [{"post_id": 30814, "ts": "2026-07-18T18:57:25Z", "hours": 5.4217, "text": "GRID - Double Well HELL Most of this session went into one bug, and it’s a genuinely annoying one to reason about, which is why it ate the time. Added the second mass early on, that part was quick, just refactored mass into a masses array and summed each one’s pull vector. Linear superposition, same as before. Problem showed up the second I dragged the two masses toward each other. The mesh was folding, points crossing lines they shouldn’t. My first assumption was the per-mass clamp had a bug, so I spent a while re-checking schwarzschildPull in isolation, it was fine, each mass on its own respects its horizon exactly like build 2. Took embarrassingly long to actually accept that the bug wasn’t in either clamp, it was in the fact there wasn’t a clamp on the SUM. Each mass says “don’t let this point cross my horizon” independently, but if both are pulling the same point in roughly the same direction, the two allowed pulls can add up to more than either alone would permit. Obvious in hindsight. Tried a couple of wrong fixes before the right one. First attempt was averaging the two pulls instead of summing, which just made single-mass behaviour weaker for no reason and didn’t even fix the overlap case properly. Also considered some kind of smooth blend between the two wells (metaball-style), which would’ve looked nicer but is a much bigger rabbit hole than 5 hours allows, parked that idea for later. What actually worked was tracking the tightest safe margin (distance to nearest horizon) across all masses while summing, then if the combined pull vector exceeds that margin, scale the whole vector down before applying it. So the constraint moved from “per mass” to “per point, against whichever horizon is closest.” One extra variable, safeMargin , and a scale-down at the end. The fix itself is maybe four lines, finding the actual shape of the problem was the other 4+ hours. Worth saying clearly, this doesn’t make two overlapping wells physically correct. Real GR still doesn’t superpose like this. What it does is stop the visualisation showing impossible geometry, the mesh degrades gracefully at the boundary instead of folding through itself. Hopefully the next session is calmer than ts bro it took way too long"}, {"post_id": 26233, "ts": "2026-07-10T22:00:09Z", "hours": 1.49, "text": "GRID Begins Third simulator in the lineup, and this one’s a spacetime mesh, so instead of watching an object move through space you’re watching space bend around it. Started with a plain grid of points, then had to figure out how to actually pull them toward a mass without it looking like noise. Went with an inverse square-ish falloff (not GR accurate, more of a stylised well for now) and it clicked visually with barely any tuning. The annoying part was stopping the mesh folding back through the mass itself when you drag it in close. Lines were crossing over each other and it looked completely broken. Fixed it by clamping the pull so it eases off the closer you get instead of spiking, simple fix once I saw what was actually happening. Kept tonight deliberately small, one grid, one draggable mass, nothing else. Wanted to prove the warp looks proper before building anything on top of it (that went well for g-lens lmao) Next up: strength slider and a reset button, then a second mass to see how two wells interact with each other."}]...
|
Title: G.R.I.D by @urged-st | Stardance
Devlogs:
Title: G.R.I.D by @urged-st | Stardance
Devlogs:
GRID Begins Third simulator in the lineup, and this one’s a spacetime mesh, so instead of watching an object move through space you’re watching space bend around it. Started with a plain grid of points, then had to figure out how to actually pull them toward a mass without it looking like noise. Went with an inverse square-ish falloff (not GR accurate, more of a stylised well for now) and it clicked visually with barely any tuning. The annoying part was stopping the mesh folding back through the mass itself when you drag it in close. Lines were crossing over each other and it looked completely broken. Fixed it by clamping the pull so it eases off the closer you get instead of spiking, simple fix once I saw what was actually happening. Kept tonight deliberately small, one grid, one draggable mass, nothing else. Wanted to prove the warp looks proper before building anything on top of it (that went well for g-lens lmao) Next up: strength slider and a reset button, then a second mass to see how two wells interact with each other.
GRID - Double Well HELL Most of this session went into one bug, and it’s a genuinely annoying one to reason about, which is why it ate the time. Added the second mass early on, that part was quick, just refactored mass into a masses array and summed each one’s pull vector. Linear superposition, same as before. Problem showed up the second I dragged the two masses toward each other. The mesh was folding, points crossing lines they shouldn’t. My first assumption was the per-mass clamp had a bug, so I spent a while re-checking schwarzschildPull in isolation, it was fine, each mass on its own respects its horizon exactly like build 2. Took embarrassingly long to actually accept that the bug wasn’t in either clamp, it was in the fact there wasn’t a clamp on the SUM. Each mass says “don’t let this point cross my horizon” independently, but if both are pulling the same point in roughly the same direction, the two allowed pulls can add up to more than either alone would permit. Obvious in hindsight. Tried a couple of wrong fixes before the right one. First attempt was averaging the two pulls instead of summing, which just made single-mass behaviour weaker for no reason and didn’t even fix the overlap case properly. Also considered some kind of smooth blend between the two wells (metaball-style), which would’ve looked nicer but is a much bigger rabbit hole than 5 hours allows, parked that idea for later. What actually worked was tracking the tightest safe margin (distance to nearest horizon) across all masses while summing, then if the combined pull vector exceeds that margin, scale the whole vector down before applying it. So the constraint moved from “per mass” to “per point, against whichever horizon is closest.” One extra variable, safeMargin , and a scale-down at the end. The fix itself is maybe four lines, finding the actual shape of the problem was the other 4+ hours. Worth saying clearly, this doesn’t make two overlapping wells physically correct. Real GR still doesn’t superpose like this. What it does is stop the visualisation showing impossible geometry, the mesh degrades gracefully at the boundary instead of folding through itself. Hopefully the next session is calmer than ts bro it took way too long...
|
1792943396.826962
|
1793807396.826962
|
|
30221
|
CTRL-T by @urged-st | Stardance
|
urged-st
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-05T09:47:42Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I built CTRL-T, a brutalist custom new tab page with a NASA-powered background switcher. You can flip between a flat block colour, today’s Astronomy Picture of the Day, or a random shot pulled from NASA’s Image and Video Library, alongside a big central clock, a search bar, and a quick-link dock. The trickiest part was realising that Chrome disables alert, prompt, and confirm on any page that overrides the new tab, which meant my link-adding button silently did nothing until I swapped it for an inline form instead. I’m proud of how the NASA photos still fit the raw, high-contrast look of the page despite being real photography, since every image gets forced through greyscale and heavy contrast so it never clashes with the rest of the design. If you’re testing it, know that the quick links save to your own browser’s local storage rather than anywhere shared, so nobody else visiting the page will see the links you add, and the demo NASA key it ships with has a low hourly rate limit, so the background switcher might briefly fail if you hammer it too many times in a row. To bypass this, fork/clone the repo and add your own key, which you can get for free almost instantly online.", "repo": "https://github.com/urged-st/CTRL-T", "demo": "https://ctrl-t.vercel.app"}]...
|
[{"post_id": 22718, "ts": "202 [{"post_id": 22718, "ts": "2026-07-05T09:22:02Z", "hours": 3.3189, "text": "CTRL-T - Clock and Final Polish The Clock The clock takes over the center of the page as the biggest element on screen. It uses clamp() for its font size, so it scales from 220px on desktop down to a readable size on narrow screens without spilling off the edge. Below it sits a smaller seconds readout in the accent color, ticking every second off setInterval . Quick Links Bug The + ADD button called window.prompt() to grab a label and URL, and it worked fine in a normal browser tab. Problem is, Chrome strips out alert , prompt , and confirm entirely on pages that override the new tab, which is the whole point of this project. Clicking the button just did nothing. Fixed it by swapping the prompt for an inline form that toggles open under the dock. Two fields, a save button, done. It fits the brutalist look better too. Native browser dialogs are rounded and soft, which was never going to match this page. Mobile Sizing Added a breakpoint under 400px to shrink the clock further. Without it the numbers clipped on smaller phone screens. Andddd we’re done! Well, almost. Still gotta deploy this one."}, {"post_id": 22154, "ts": "2026-07-04T13:55:14Z", "hours": 1.6072, "text": "CTRL-T update: search bar + quick links Knocked out two stages in one sitting since neither took as long as I expected. Added the search bar first. Nothing fancy really, it just grabs whatever you type and redirects to a Google search on submit. The part I actually spent time on was making the input box not look like a default browser input, with a thick border, no rounding etc. Then added the quick links dock. Links get stored in localStorage so they persist between sessions, no backend needed. Clicking “+ ADD” pops a prompt for a label and a URL, and I added a little × next to each link chip so you can remove one without having to clear the whole list. Small thing I had to handle: people are pretty lazy about typing full URLs, so if someone just types “github.com” instead of “ https://github.com ” the script will prepend the https for them. Kept both of these hidden on narrow screens (under 640px) so the clock still gets to be the main character on mobile instead of fighting for space lol. Nothing here needed the NASA APIs, so this stage was mostly just about layout discipline, keeping the same border-heavy brutalist language consistent as I add new blocks. What’s next? Clock’s already working in the background from my webOS testing, so next devlog is probably the full assembly plus whatever polish the layout needs once everything’s on screen at once."}, {"post_id": 22096, "ts": "2026-07-04T11:23:11Z", "hours": 0.8733, "text": "CTRL-T has started! This seemed like a cool mission so I decided to try knock this out in a few hours. I’ve started by adding some styling from the beginning of the project so I don’t have to do it later. I ALSO added APOD and NASA.lib connectivity through their respective NASA APIs, so you can switch backgrounds to either the picture of the day, or a random image from NASA.lib, where it chooses a random query out of nebula, galaxy, supernova, mars, black hole, aurora, and picks a random image out of that category. Setting this up wasn’t too hard as I have worked with NASA’s APIs before multiple times, specifically the Neows and SBDB. One thing i did have to consider, is that APOD sometimes returns videos, so I added a bail script: infoText.textContent = `MODE: APOD — TODAY IS A VIDEO (${data.title.toUpperCase()}), NO IMAGE`; so rather than failing it tells the user that no image is available… maybe I will change this to integrate vids or gifs though who knows. The real hard part which I spent a while on was the CSS, as while it looks simple it took a log of adjustment to get the true brutalist look I wanted. Most astro-related sites are eloquent and fancy, I plan for this one to be quite a harsh and concrete style page. What next? I’ll probably make the search bar and maybe add a quick links section."}]...
|
Title: CTRL-T by @urged-st | Stardance
Devlogs:
C Title: CTRL-T by @urged-st | Stardance
Devlogs:
CTRL-T has started! This seemed like a cool mission so I decided to try knock this out in a few hours. I’ve started by adding some styling from the beginning of the project so I don’t have to do it later. I ALSO added APOD and NASA.lib connectivity through their respective NASA APIs, so you can switch backgrounds to either the picture of the day, or a random image from NASA.lib, where it chooses a random query out of nebula, galaxy, supernova, mars, black hole, aurora, and picks a random image out of that category. Setting this up wasn’t too hard as I have worked with NASA’s APIs before multiple times, specifically the Neows and SBDB. One thing i did have to consider, is that APOD sometimes returns videos, so I added a bail script: infoText.textContent = `MODE: APOD — TODAY IS A VIDEO (${data.title.toUpperCase()}), NO IMAGE`; so rather than failing it tells the user that no image is available… maybe I will change this to integrate vids or gifs though who knows. The real hard part which I spent a while on was the CSS, as while it looks simple it took a log of adjustment to get the true brutalist look I wanted. Most astro-related sites are eloquent and fancy, I plan for this one to be quite a harsh and concrete style page. What next? I’ll probably make the search bar and maybe add a quick links section.
CTRL-T update: search bar + quick links Knocked out two stages in one sitting since neither took as long as I expected. Added the search bar first. Nothing fancy really, it just grabs whatever you type and redirects to a Google search on submit. The part I actually spent time on was making the input box not look like a default browser input, with a thick border, no rounding etc. Then added the quick links dock. Links get stored in localStorage so they persist between sessions, no backend needed. Clicking “+ ADD” pops a prompt for a label and a URL, and I added a little × next to each link chip so you can remove one without having to clear the whole list. Small thing I had to handle: people are pretty lazy about typing full URLs, so if someone just types “github.com” instead of “ https://github.com ” the script will prepend the https for them. Kept both of these hidden on narrow screens (under 640px) so the clock still gets to be the main character on mobile instead of fighting for space lol. Nothing here needed the NASA APIs, so this stage was mostly just about layout discipline, keeping the same border-heavy brutalist language consistent as I add new blocks. What’s next? Clock’s already working in the background from my webOS testing, so next devlog is probably the full assembly plus whatever polish the layout needs once everything’s on screen at once.
CTRL-T - Clock and Final Polish The Clock The clock takes over the center of the page as the biggest element on screen. It uses clamp() for its font size, so it scales from 220px on desktop down to a readable size on narrow screens without spilling off the edge. Below it sits a smaller seconds readout in the accent color, ticking every second off setInterval . Quick Links Bug The + ADD button called window.prompt() to grab a label and URL, and it worked fine in a normal browser tab. Problem is, Chrome strips out alert , prompt , and confirm entirely on pages that override the new tab, which is the whole point of this project. Clicking the button just did nothing. Fixed it by swapping the prompt for an inline form that toggles open under the dock. Two fields, a save button, done. It fits the brutalist look better too. Native browser dialogs are rounded and soft, which was never going to match this page. Mobile Sizing Added a breakpoint under 400px to shrink the clock further. Without it the numbers clipped on smaller phone screens. Andddd we’re done! Well, almost. Still gotta deploy this one.
Ships:
I built CTRL-T, a brutalist custom new tab page with a NASA-powered background switcher. You can flip between a flat block colour, today’s Astronomy Picture of the Day, or a random shot pulled from NASA’s Image and Video Library, alongside a big central clock, a search bar, and a quick-link dock. The trickiest part was realising that Chrome disables alert, prompt, and confirm on any page that overrides the new tab, which meant my link-adding button silently did nothing until I swapped it for an inline form instead. I’m proud of how the NASA photos still fit the raw, high-contrast look of the page despite being real photography, since every image gets forced through greyscale and heavy contrast so it never clashes with the rest of the design. If you’re testing it, know that the quick links save to your own browser’s local storage rather than anywhere shared, so nobody else visiting the page will see the links you add, and the demo NASA key it ships with has a low hourly rate limit, so the background switcher might briefly fail if you hammer it too many times in a row. To bypass this, fork/clone the repo and add your own key, which you can get for free almost instantly online....
|
1792878744.2452154
|
1793742744.2452154
|
|
31011
|
StarDeck by @urged-st | Stardance
|
urged-st
|
0
|
4.01
|
0
|
[]
|
[{"post_id": 26185, "ts": "202 [{"post_id": 26185, "ts": "2026-07-10T20:45:19Z", "hours": 1.0206, "text": "StarDeck - I ADDED LEDSSS YESSS this took way longer than it should’ve lol well, i’ve finally wired up the LEDs to the xiao, hopefully with the way i’ve placed them, it’ll make for some nice backlighting! what could I possibly have been doing for 1 hour? no clue, honestly. probably just moving stuff around lol cause I was switching between designs a lot, finally settled on this design (2nd image i think) but I have no clue where the xiao should go, cause ideally it would be at the top but that’s where the screen is and on kicad it keeps flashing red everytime I try putting it there (trying to place it like the 4th image). I’ll try figure out if that’s an issue or just kicad being annoying. but all in all, a pretty annoying week on this project lol."}, {"post_id": 23547, "ts": "2026-07-06T16:02:01Z", "hours": 1.9817, "text": "StarDeck - pin HELL on my schema right now Like many others, I want to make the most of the hackpad funding. However, considering I have no hardware experience (and hence have no idea what other parts to buy, if any), I am limited to the kit’s contents at the moment. So, I have spent the last two hours, while sorting out some wiring, how to optimise my pin usage so that I can have a good amount of components while keeping a good design. Now, my current design uses 7 keys and 1 rotary encoder. This, as you can probably see from my PCB screenshot, is not too symmetrical. This has been bugging me since I started this. So with some help from the slack, I added the rotary encoder to the key matrix (hopefully correctly), and have saved a total of…. 1 pin! Now this isn’t enough to add a second rotary encoder, based on my current design, so I am desperately looking for a way to save one more pin so my design doesn’t look lopsided, but if worst comes to worst, I’ll just change up the layout honestly, maybe have 5 keys on the bottom, then 2 keys and the rotary encoder on the top, then the screen above that (as I’m writing this, I have realised that this isn’t a bad idea). Anyways, as always, if you have any suggestions PLEASE PLEASE LET ME KNOW I NEED YOUR HELP and I will be spending the rest of my time researching and asking people, trying to find any way to get a second rotary encoder. Well, at least its not the end of the world if I don’t have two."}, {"post_id": 23061, "ts": "2026-07-05T20:02:21Z", "hours": 1.0042, "text": "StarDeck - building a cool macropad with ZERO prior hardware experience So, not sure if you can tell by my projects, but I work mainly in software. This project has already been driving me nuts, and claude has been… a bit less than useful so I’ve decided to just firm it and figure it out myself. To be fair, a lot of the timelapse for today was just me referring to the guide half the time, but I got it (I think??) in the end and have finished the schema, only thing left is to add the footprints which I cannot figure out for the life of me, #hackpad here I come! I thought this would be a fun challenge cause I’ve always wanted a streamdeck or utility keyboard of sorts, and being able to make my own personal one just makes the end product fit my needs better. So far, I have 7 keys, an LCD screen, and a rotary encoder which I hope are wired up correctly. I am thinking of replacing one key with another rotary encoder and adding 3 more keys to keep the shape, but I’m kinda limited on pins and am not planning on buying a GPIO expander (I think that’s what they are, someone mentioned it to me). More wiring is jus t gonna be harder for me to understand, so I might just keep it at one rotary encoder, or have two and just replace a key. That would give me 6 keys and two rotary encoders which is more symmetrical. Anyways, that paragraph was just a dump of my thoughts, but yeah here’s the current schema!"}]...
|
Title: StarDeck by @urged-st | Stardance
Devlogs: Title: StarDeck by @urged-st | Stardance
Devlogs:
StarDeck - building a cool macropad with ZERO prior hardware experience So, not sure if you can tell by my projects, but I work mainly in software. This project has already been driving me nuts, and claude has been… a bit less than useful so I’ve decided to just firm it and figure it out myself. To be fair, a lot of the timelapse for today was just me referring to the guide half the time, but I got it (I think??) in the end and have finished the schema, only thing left is to add the footprints which I cannot figure out for the life of me, #hackpad here I come! I thought this would be a fun challenge cause I’ve always wanted a streamdeck or utility keyboard of sorts, and being able to make my own personal one just makes the end product fit my needs better. So far, I have 7 keys, an LCD screen, and a rotary encoder which I hope are wired up correctly. I am thinking of replacing one key with another rotary encoder and adding 3 more keys to keep the shape, but I’m kinda limited on pins and am not planning on buying a GPIO expander (I think that’s what they are, someone mentioned it to me). More wiring is jus t gonna be harder for me to understand, so I might just keep it at one rotary encoder, or have two and just replace a key. That would give me 6 keys and two rotary encoders which is more symmetrical. Anyways, that paragraph was just a dump of my thoughts, but yeah here’s the current schema!
StarDeck - pin HELL on my schema right now Like many others, I want to make the most of the hackpad funding. However, considering I have no hardware experience (and hence have no idea what other parts to buy, if any), I am limited to the kit’s contents at the moment. So, I have spent the last two hours, while sorting out some wiring, how to optimise my pin usage so that I can have a good amount of components while keeping a good design. Now, my current design uses 7 keys and 1 rotary encoder. This, as you can probably see from my PCB screenshot, is not too symmetrical. This has been bugging me since I started this. So with some help from the slack, I added the rotary encoder to the key matrix (hopefully correctly), and have saved a total of…. 1 pin! Now this isn’t enough to add a second rotary encoder, based on my current design, so I am desperately looking for a way to save one more pin so my design doesn’t look lopsided, but if worst comes to worst, I’ll just change up the layout honestly, maybe have 5 keys on the bottom, then 2 keys and the rotary encoder on the top, then the screen above that (as I’m writing this, I have realised that this isn’t a bad idea). Anyways, as always, if you have any suggestions PLEASE PLEASE LET ME KNOW I NEED YOUR HELP and I will be spending the rest of my time researching and asking people, trying to find any way to get a second rotary encoder. Well, at least its not the end of the world if I don’t have two.
StarDeck - I ADDED LEDSSS YESSS this took way longer than it should’ve lol well, i’ve finally wired up the LEDs to the xiao, hopefully with the way i’ve placed them, it’ll make for some nice backlighting! what could I possibly have been doing for 1 hour? no clue, honestly. probably just moving stuff around lol cause I was switching between designs a lot, finally settled on this design (2nd image i think) but I have no clue where the xiao should go, cause ideally it would be at the top but that’s where the screen is and on kicad it keeps flashing red everytime I try putting it there (trying to place it like the 4th image). I’ll try figure out if that’s an issue or just kicad being annoying. but all in all, a pretty annoying week on this project lol....
|
1792911150.3748386
|
1793775150.3748386
|
|
37527
|
FinderScope by @urged-st | Stardance
|
urged-st
|
0
|
55.66
|
0
|
[]
|
[{"post_id": 45640, "ts": "202 [{"post_id": 45640, "ts": "2026-08-12T08:27:43Z", "hours": 9.1017, "text": "finderscope - shipping soon? so I’ve decided I actually want to deploy this at some point instead of just letting it sit as a pile of features forever, which meant going back through and fixing a bunch of stuff that’s been bugging me for ages. tag first thing, tiny one, but “gotta name ’em all!” is under the title now and it’s been annoying me that there wasn’t a more exciting tag this whole time honestly. also added a proper give up button next to guess (spaced it out on purpose so I don’t misclick, learned that the hard way testing it lol). zoom then I added zoom. scroll wheel on desktop, pinch on mobile, and I had to make basically everything that used to assume a fixed field of view actually react to whatever zoom level you’re at instead. more fiddly than I expected but it works now?? test mode the big one this time was test mode though. Its a timed quiz, 10 seconds a round, last 5 seconds the countdown flashes red which is somehow way more stressful than I meant it to be. also gave it difficulty options same as quiz (10 questions on easy, 15 on medium/hard). it currently stores in a log but this log isn’t able to be displayed yet stretching issue and then. THEN. the whole page kept randomly stretching every time I switched modes and I could NOT figure out why for like a solid chunk of time. turned out I was setting display: block on stuff that’s supposed to be display: flex in the css, so the second js touched it, it’d lose its centring and just stretch full width. one word. one single word was breaking the whole layout. very funny in hindsight, not funny at the time. also finally deleted the old debug buttons (show answer / new round) since give up does that job properly now and they were never meant to stick around this long anyway. what’s left showing the score log instead of just quietly saving it to localStorage like a coward"}, {"post_id": 40384, "ts": "2026-08-03T21:05:41Z", "hours": 7.7075, "text": "Serpens, you’re northern, and why are you cut in half?!? Serpens Ok so this has been bugging me since v1, the dataset had 89 constellations instead of 88, and it was always serpens’s fault. Turns out serpens is split into two disjoint bits in the sky (caput and cauda, “head” and “tail,” there’s ophiuchus sitting in between them which is just extremely funny to me), and the source data gives both halves the exact same id. so my original import script was treating them as two separate constellations, AND mislabelling both of them “serpens cauda” in the process cause the name lookup only kept whichever one loaded last. so naturally I went back into the raw data and rebuilt the whole import properly this time so now serpens is only ONE entry (I’m not sure why I didn’t fix this earlier ngl) Layout also the whole page just didn’t fit on screen, you had to scroll up and down to reach everything which is such an annoying way to play a quiz. I tightened up basically every gap/margin in the css and added some dynamic sizing. what’s next might revisit the fov/zoom level at some point now the canvas is smaller probably gonna keep editing layout till I see it fit extra hard mode!???!???!???!??11/1?! *oh yeah and deploy probably"}, {"post_id": 36304, "ts": "2026-07-28T10:08:57Z", "hours": 14.8397, "text": "what am i even doing anymore bro ok this session got out of hand not sure if it’ll show but it was 10hrs of stuff then 4 HOURS OF BUGFIXING AND TRIAL AND ERROR GAHHHH ok heres what i did streaks and auto advance added streak tracking to quiz mode. current streak, best streak, accuracy %, all saved to localStorage . if you get one wrong, the streak’s gone, no mercy at ALL. also made it so a correct guess auto-advances to a new round after 2 seconds instead of just sitting there waiting for you to click new round like some kind of caveman. THE BIG ONE so quiz mode and learn mode were both using this rough relative distance method to figure out neighbours , which is fine until you realise it’s not actually how constellations work. constellations aren’t just the shape with lines and dots lol, they’re officially bounded regions of sky (yes, actually, the IAU drew borders around all 88 of them in 1930). so I went and found the real boundary data and pulled it from d3-celestial, same open source star chart project I got the line/star data from originally. every constellation now has its actual official border drawn around them so when you’re learning you know what parts are actually part of it (trust me, this helps when you’re learning) but other than that, wth did this even do? hemisphere classification is now based on where the constellation’s real territory sits, not just an average of its star pattern (this fixed monoceros and serpens specifically, both of which sit right on the celestial equator and were getting sorted into the wrong hemisphere before) learn mode now draws the ACTUAL official boundary outline around whatever you’re looking at, dashed amber line, very satisfying neighbouring constellations now fade based on real distance instead of just being flat dim, so busy parts of the sky (looking at you, octans) don’t turn into an illegible wall of navy lines BTW I genuinely thought the octans clutter thing from ages ago was a bug, but the south pole is just actually that crowded with tiny constellations. I think you can tell I prefer the north. also had a scary moment where NOTHING was rendering and learn mode wouldn’t even switch, I thought I’d broken something major, but turned out to just be a memory issue from having so much boundary data loaded so I restarted vscode and it sorted itself out 💀 what’s next changing some of the names and shapes, I need to find out which ones are actually used widely cause some in the dataset I use are super weird (peep the video!) the duplicate constellation entry (serpens has two parts sharing one id, still not dealt with) I really really really want to add a speedrun mode!!"}, {"post_id": 34331, "ts": "2026-07-24T22:54:25Z", "hours": 8.5794, "text": "RAHHHH 8 HOURS CAN’T STOP ME NOW my bad. ok so essentially what has happened in the last day is: got bored of the current styling (which is none btw) decided to work on the actual quiz aspect of it, testing is over a lot, LOT of trial and error and some standard bugfixing styling wise, rather than defaulting to a generic dark mode, the canvas is framed like a viewfinder. I just thought it would look nice tbh, there’s not much else going on there other than the stars. I kept the blues that I already used in the canvas itself ( #5a8dee for target, #2e3d5c for neighbours) and just extended them into the actual UI instead of picking a new palette. the fonts are basically the same as the rest of my projects but icl i might change that when I was first making the learn mode today, I gave it the northern/southern/all split, quiz mode didn’t, so pickRandomConstellation now pulls from whatever hemisphere’s selected instead of the full 89. changing it mid-quiz rerolls immediately rather than waiting for the next round too. I also added a show ans button for testing cause even I don’t know them all lmao (only the northern ones so far, and like 3 southern!) so will probably remove this later additionally, I also kept testing and editing parameters for the projection to make it as smooth as possible. what. a. day. and yes im tired as hell its nearly midnight i’m off to bed"}, {"post_id": 33945, "ts": "2026-07-24T08:47:19Z", "hours": 5.7539, "text": "finderscope v3-4 accidentally sank 6 hours into this one but it’s the session that where you feel like looking through something instead of staring at a flat projection naked eye orientation turns out this was already sorted from v1, the x-axis flip that was in there from the start so I didn’t have to touch the projection maths, just double checked that north stays up on canvas and left it alone. the real work was making that hold up once the camera can move anywhere, not just the handful of fixed constellation centres it used to snap to. drag to pan the camera is now a proper mutable cameraRA / cameraDec instead of being locked to target.center . dragging works out a small angular delta per mousemove event using a small-angle approximation (fine since consecutive drag events are tiny steps, not one big jump), and shifts the camera opposite in ra and dec so the sky moves with your cursor like a map, not like a first-person look-around. findInView had to change too since “who’s a neighbour” used to be based on the target’s fixed centre, now it’s based on wherever the camera’s actually pointing. clamped cameraDec to ±89.5° so dragging into a pole doesn’t divide by zero and send the camera into deep space 💀 added touch support alongside mouse since drag is the kind of interaction that should just work on mobile too. what’s next learn mode, hemisphere split octans pole clutter still unresolved from v2 some kind of scoring/streak system"}, {"post_id": 32026, "ts": "2026-07-20T21:56:54Z", "hours": 3.2267, "text": "finderscope v2: camera + neighbours I wanted the zoom to actually feel like looking through a scope rather than a bounding-box crop, so this session was about two things: a fixed camera FOV, and pulling in neighbouring constellations so there’s context around whatever you’re meant to be naming. the auto-fit issues v1 fit the canvas to the target constellation’s own bounding box, which meant every constellation filled the frame regardless of its real size on the sky. Crux and hydra looked the same scale, which defeats the point of a “how much can you see” difficulty system. So, I fixed it by switching to a constant angular field of view instead. stereographic projection has a neat closed-form relationship between angular separation from centre and projected radius: rho = 2 * tan(theta / 2) . so i just pick a FOV in degrees, work out what radius that maps to, and scale the canvas to that instead of to the data. neighbours for each constellation, check every vertex’s angular separation from the target’s centre (reused the same cosc term from the projection maths, just wrapped in acos instead). anything with at least one vertex inside a 55° radius gets pulled in and drawn dim, target stays bright and thicker so there’s no ambiguity about what to actually guess. I tested both of these in node before touching canvas, specifically against Oct and UMi since anything near the celestial poles is where stereographic maths tends to fall apart. OCTANS WHYY octans pulls in 37 neighbours at the current radius because it’s so close to the pole. Everything nearby just looks angularly closer than it would elsewhere on the sky. That’s fine for now, but medium/hard difficulty will look like a mess down there unless i either shrink the include radius near the poles specifically or cap how many neighbours actually get drawn. what’s next sort out the pole clutter issue properly difficulty tiers (all lines / neighbours only / none) guess input + checking learn mode, hemisphere split"}, {"post_id": 31659, "ts": "2026-07-20T07:38:11Z", "hours": 6.4511, "text": "Firstly - yes, I have 6 hours on this, because I switched ideas midway (so essentially 2 hours of work gone lol) FinderScope i was mid-attempt at memorising all 88 constellations using some app, got through easy mode fine, then hit a paywall the second i wanted the other two difficulties. so, obviously, I’m building my own cause nobody should have to pay for something as simple as this. the idea is a constellation naming quiz. it zooms into a random constellation somewhere in the sky, you guess what it’s called, and there’s three difficulties depending on how many of the surrounding constellation lines you get to see (all of them, just the neighbours, or none). eventually there’ll be a learn mode too that splits northern/southern sky and gives you the actual mythology name alongside the IAU one. started with v1 today: just getting one constellation to render and project correctly, no game logic yet. the data problem turns out there’s no NASA-style API for “here’s every constellation’s star positions and line segments,” so i pulled from d3-celestial , an open source star chart project on github. grabbed: constellations.lines.json — RA/dec coordinates for every line segment in all 88 constellations constellations.json — names, including an en field with the actual mythology name (canis major → “great dog”, that kind of thing) wrote a python script to slim both down into one dataset per constellation: id, name, en, a precomputed centre point, and the line coordinates. centre point was its own small problem — you can’t just average RA values because of the 0°/360° wraparound, so i averaged everything as unit vectors on the sphere instead and converted back. way cleaner. projection the actual hard part. “zoom into a random constellation” means taking a patch of sky centred wherever that constellation sits and flattening it onto a canvas. went with a stereographic projection, standard formula, centred on each constellation’s precomputed centre. tested the maths in node before touching canvas at all — ran orion through it and checked the projected bounds didn’t blow up or do anything weird near the pole. glad i did that first, would’ve been a nightmare to debug visually. canvas side just auto-fits whatever bounding box comes out of the projection, so it works whether the constellation is tiny (like crux ) or sprawling. what’s off right now some of the constellation names/lines from the dataset are a little wrong — going to go through and fix those manually rather than trying to patch it in code. what’s next neighbouring constellations (so medium/easy difficulty actually has something to show) difficulty tiers actual guess-checking learn mode with the hemisphere split"}]...
|
Title: FinderScope by @urged-st | Stardance
Devlo Title: FinderScope by @urged-st | Stardance
Devlogs:
Firstly - yes, I have 6 hours on this, because I switched ideas midway (so essentially 2 hours of work gone lol) FinderScope i was mid-attempt at memorising all 88 constellations using some app, got through easy mode fine, then hit a paywall the second i wanted the other two difficulties. so, obviously, I’m building my own cause nobody should have to pay for something as simple as this. the idea is a constellation naming quiz. it zooms into a random constellation somewhere in the sky, you guess what it’s called, and there’s three difficulties depending on how many of the surrounding constellation lines you get to see (all of them, just the neighbours, or none). eventually there’ll be a learn mode too that splits northern/southern sky and gives you the actual mythology name alongside the IAU one. started with v1 today: just getting one constellation to render and project correctly, no game logic yet. the data problem turns out there’s no NASA-style API for “here’s every constellation’s star positions and line segments,” so i pulled from d3-celestial , an open source star chart project on github. grabbed: constellations.lines.json — RA/dec coordinates for every line segment in all 88 constellations constellations.json — names, including an en field with the actual mythology name (canis major → “great dog”, that kind of thing) wrote a python script to slim both down into one dataset per constellation: id, name, en, a precomputed centre point, and the line coordinates. centre point was its own small problem — you can’t just average RA values because of the 0°/360° wraparound, so i averaged everything as unit vectors on the sphere instead and converted back. way cleaner. projection the actual hard part. “zoom into a random constellation” means taking a patch of sky centred wherever that constellation sits and flattening it onto a canvas. went with a stereographic projection, standard formula, centred on each constellation’s precomputed centre. tested the maths in node before touching canvas at all — ran orion through it and checked the projected bounds didn’t blow up or do anything weird near the pole. glad i did that first, would’ve been a nightmare to debug visually. canvas side just auto-fits whatever bounding box comes out of the projection, so it works whether the constellation is tiny (like crux ) or sprawling. what’s off right now some of the constellation names/lines from the dataset are a little wrong — going to go through and fix those manually rather than trying to patch it in code. what’s next neighbouring constellations (so medium/easy difficulty actually has something to show) difficulty tiers actual guess-checking learn mode with the hemisphere split
finderscope v2: camera + neighbours I wanted the zoom to actually feel like looking through a scope rather than a bounding-box crop, so this session was about two things: a fixed camera FOV, and pulling in neighbouring constellations so there’s context around whatever you’re meant to be naming. the auto-fit issues v1 fit the canvas to the target constellation’s own bounding box, which meant every constellation filled the frame regardless of its real size on the sky. Crux and hydra looked the same scale, which defeats the point of a “how much can you see” difficulty system. So, I fixed it by switching to a constant angular field of view instead. stereographic projection has a neat closed-form relationship between angular separation from centre and projected radius: rho = 2 * tan(theta / 2) . so i just pick a FOV in degrees, work out what radius that maps to, and scale the canvas to that instead of to the data. neighbours for each constellation, check every vertex’s angular separation from the target’s centre (reused the same cosc term from the projection maths, just wrapped in acos instead). anything with at least one vertex inside a 55° radius gets pulled in and drawn dim, target stays bright and thicker so there’s no ambiguity about what to actually guess. I tested both of these in node before touching canvas, specifically against Oct and UMi since anything near the celestial poles is where stereographic maths tends to fall apart. OCTANS WHYY octans pulls in 37 neighbours at the current radius because it’s so close to the pole. Everything nearby just looks angularly closer than it would elsewhere on the sky. That’s fine for now, but medium/hard difficulty will look like a mess down there unless i either shrink the include radius near the poles specifically or cap how many neighbours actually get drawn. what’s next sort out the pole clutter issue properly difficulty tiers (all lines / neighbours only / none) guess input + checking learn mode, hemisphere split
finderscope v3-4 accidentally sank 6 hours into this one but it’s the session that where you feel like looking through something instead of staring at a flat projection naked eye orientation turns out this was already sorted from v1, the x-axis flip that was in there from the start so I didn’t have to touch the projection maths, just double checked that north stays up on canvas and left it alone. the real work was making that hold up once the camera can move anywhere, not just the handful of fixed constellation centres it used to snap to. drag to pan the camera is now a proper mutable cameraRA / cameraDec instead of being locked to target.center . dragging works out a small angular delta per mousemove event using a small-angle approximation (fine since consecutive drag events are tiny steps, not one big jump), and shifts the camera opposite in ra and dec so the sky moves with your cursor like a map, not like a first-person look-around. findInView had to change too since “who’s a neighbour” used to be based on the target’s fixed centre, now it’s based on wherever the camera’s actually pointing. clamped cameraDec to ±89.5° so dragging into a pole doesn’t divide by zero and send the camera into deep space 💀 added touch support alongside mouse since drag is the kind of interaction that should just work on mobile too. what’s next learn mode, hemisphere split octans pole clutter still unresolved from v2 some kind of scoring/streak system
RAHHHH 8 HOURS CAN’T STOP ME NOW my bad. ok so essentially what has happened in the last day is: got bored of the current styling (which is none btw) decided to work on the actual quiz aspect of it, testing is over a lot, LOT of trial and error and some standard bugfixing styling wise, rather than defaulting to a generic dark mode, the canvas is framed like a viewfinder. I just thought it would look nice tbh, there’s not much else going on there other than the stars. I kept the blues that I already used in the canvas itself ( #5a8dee for target, #2e3d5c for neighbours) and just extended them into the actual UI instead of picking a new palette. the fonts are basically the same as the rest of my projects but icl i might change that when I was first making the learn mode today, I gave it the northern/southern/all split, quiz mode didn’t, so pickRandomConstellation now pulls from whatever hemisphere’s selected instead of the full 89. changing it mid-quiz rerolls immediately rather than waiting for the next round too. I also added a show ans button for testing cause even I don’t know them all lmao (only the northern ones so far, and like 3 southern!) so will probably remove this later additionally, I also kept testing and editing parameters for the projection to make it as smooth as possible. what. a. day. and yes im tired as hell its nearly midnight i’m off to bed
what am i even doing anymore bro ok this session got out of hand not sure if it’ll show but it was 10hrs of stuff then 4 HOURS OF BUGFIXING AND TRIAL AND ERROR GAHHHH ok heres what i did streaks and auto advance added streak tracking to quiz mode. current streak, best streak, accuracy %, all saved to localStorage . if you get one wrong, the streak’s gone, no mercy at ALL. also made it so a correct guess auto-advances to a new round after 2 seconds instead of just sitting there waiting for you to click new round like some kind of caveman. THE BIG ONE so quiz mode and learn mode were both using this rough relative distance method to figure out neighbours , which is fine until you realise it’s not actually how constellations work. constellations aren’t just the shape with lines and dots lol, they’re officially bounded regions of sky (yes, actually, the IAU drew borders around all 88 of them in 1930). so I went and found the real boundary data and pulled it from d3-celestial, same open source star chart project I got the line/star data from originally. every constellation now has its actual official border drawn around them so when you’re learning you know what parts are actually part of it (trust me, this helps when you’re learning) but other than that, wth did this even do? hemisphere classification is now based on where the constellation’s real territory sits, not just an average of its star pattern (this fixed monoceros and serpens specifically, both of which sit right on the celestial equator and were getting sorted into the wrong hemisphere before) learn mode now draws the ACTUAL official boundary outline around whatever you’re looking at, dashed amber line, very satisfying neighbouring constellations now fade based on real distance instead of just being flat dim, so busy parts of the sky (looking at you, octans) don’t turn into an illegible wall of navy lines BTW I genuinely thought the octans clutter thing from ages ago was a bug, but the south pole is just actually that crowded with tiny constellations. I think you can tell I prefer the north. also had a scary moment where NOTHING was rendering and learn mode wouldn’t even switch, I thought I’d broken something major, but turned out to just be a memory issue from having so much boundary data loaded so I restarted vscode and it sorted itself out 💀 what’s next changing some of the names and shapes, I need to find out which ones are actually used widely cause some in the dataset I use are super weird (peep the video!) the duplicate constellation entry (serpens has two parts sharing one id, still not dealt with) I really really really want to add a speedrun mode!!
Serpens, you’re northern, and why are you cut in half?!? Serpens Ok so this has been bugging me since v1, the dataset had 89 constellations instead of 88, and it was always serpens’s fault. Turns out serpens is split into two disjoint bits in the sky (caput and cauda, “head” and “tail,” there’s ophiuchus sitting in between them which is just extremely funny to me), and the source data gives both halves the exact same id. so my original import script was treating them as two separate constellations, AND mislabelling both of them “serpens cauda” in the process cause the name lookup only kept whichever one loaded last. so naturally I went back into the raw data and rebuilt the whole import properly this time so now serpens is only ONE entry (I’m not sure why I didn’t fix this earlier ngl) Layout also the whole page just didn’t fit on screen, you had to scroll up and down to reach everything which is such an annoying way to play a quiz. I tightened up basically every gap/margin in the css and added some dynamic sizing. what’s next might revisit the fov/zoom level at some point now the canvas is smaller probably gonna keep editing layout till I see it fit extra hard mode!???!???!???!??11/1?! *oh yeah and deploy probably
finderscope - shipping soon? so I’ve decided I actually want to deploy this at some point instead of just letting it sit as a pile of features forever, which meant going back through and fixing a bunch of stuff that’s been bugging me for ages. tag first thing, tiny one, but “gotta name ’em all!” is under the title now and it’s been annoying me that there wasn’t a more exciting tag this whole time honestly. also added a proper give up button next to guess (spaced it out on purpose so I don’t misclick, learned that the hard way testing it lol). zoom then I added zoom. scroll wheel on desktop, pinch on mobile, and I had to make basically everything that used to assume a fixed field of view actually react to whatever zoom level you’re at instead. more fiddly than I expected but it works now?? test mode the big one this time was test mode though. Its a timed quiz, 10 seconds a round, last 5 seconds the countdown flashes red which is somehow way more stressful than I meant it to be. also gave it difficulty options same as quiz (10 questions on easy, 15 on medium/hard). it currently stores in a log but this log isn’t able to be displayed yet stretching issue and then. THEN. the whole page kept randomly stretching every time I switched modes and I could NOT figure out why for like a solid chunk of time. turned out I was setting display: block on stuff that’s supposed to be display: flex in the css, so the second js touched it, it’d lose its centring and just stretch full width. one word. one single word was breaking the whole layout. very funny in hindsight, not funny at the time. also finally deleted the old debug buttons (show answer / new round) since give up does that job properly now and they were never meant to stick around this long anyway. what’s left showing the score log instead of just quietly saving it to localStorage like a coward...
|
1792925389.6369662
|
1793789389.6369662
|
|
50582
|
My own site! by @urgallili | Stardance
|
urgallili
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @urgallili | Stardance
|
1793350490.4784465
|
1793955290.4784465
|
|
18718
|
Frictionless by @urfavzoro | Stardance
|
urfavzoro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @urfavzoro | Stardance
|
1793404320.9301474
|
1794009120.9301474
|
|
18000
|
My very own WebOS by @urcielg | Stardance
|
urcielg
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @urcielg | Stardance
|
1793353876.2841077
|
1793958676.2841077
|