|
186
|
zach latta latte cafe by @h | Stardance
|
h
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zach latta latte cafe by @h | Stardance
|
1792900341.6673632
|
1793764341.6673632
|
|
46798
|
za 3d printer by @Nishy | Stardance
|
Nishy
|
0
|
3.39
|
0
|
[]
|
[{"post_id": 45317, "ts": "202 [{"post_id": 45317, "ts": "2026-08-11T18:09:22Z", "hours": 3.3864, "text": "so ive succesfully created a 3d printer cad using simple parts and materials on Onshape. These materials are all based off real world productsthe 3d printer is a bed slinger, so it may look a bit like the bambu a1. It uses a bed that goes forward and back, and the actual printing part goes side to side, with its support going up and down… the color scheme on it makes it look pretty good."}]...
|
Title: za 3d printer by @Nishy | Stardance
Devlog Title: za 3d printer by @Nishy | Stardance
Devlogs:
so ive succesfully created a 3d printer cad using simple parts and materials on Onshape. These materials are all based off real world productsthe 3d printer is a bed slinger, so it may look a bit like the bambu a1. It uses a bed that goes forward and back, and the actual printing part goes side to side, with its support going up and down… the color scheme on it makes it look pretty good....
|
1792885671.924261
|
1793749671.924261
|
|
5836
|
zWork Browser Control by @zemu | Stardance
|
zemu
|
1
|
42.25
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-23T14:43:46Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made zWork Everything was challenging, mainly harness engineering. The browser feature was relatively straightforward. I’m proud of the extensiveness or comprehensiveness of this project, and the scale at which it worked. To fully test my app, you should probably install the app, as well as the extension. There is a limited web demo at app.tryzwork.app which doesnt really have any features. More info is available in the readmes.", "repo": "https://github.com/Ryz3nPlayZ/zbctl", "demo": "https://github.com/Ryz3nPlayZ/zWork/releases"}]...
|
[{"post_id": 77432, "ts": "202 [{"post_id": 77432, "ts": "2026-10-06T23:48:07Z", "hours": 15.72, "text": "any click that changed DOM used to take about 3s now it takes about 200ms. I also added back the extension GUI because sometimes its confusing without it. also to save tokens from agent context windows, content.js no longer creates a brand new fat snapshot of the entire page."}, {"post_id": 52033, "ts": "2026-08-22T02:13:23Z", "hours": 2.5278, "text": "updated readme because i needed to"}, {"post_id": 33339, "ts": "2026-07-23T05:02:08Z", "hours": 5.2228, "text": "I benchmarked zWork (desktop ai agent made by me) using zbctl (extension) to test its new browser use abilities. ive used the prompt in the picture below. the model answered all but one correct. the google form used to “benchmark” the model was: https://docs.google.com/forms/d/e/1FAIpQLSfHyJDMoOuDENsrrTmFsGtoDfe-9RRhlB2SDkKgYQlAAXOvhg/viewform the form included a variety of answer types, including radio and dropdowns. this is by no means a final polished product, but is certainly a good proof of concept. I will continue working on zWork and improve the harness to also improve the models tool calling and accuracy. Thanks guys"}, {"post_id": 17862, "ts": "2026-06-28T20:02:34Z", "hours": 12.9517, "text": "i tested zbctl using zWork (the agent im working on) as well as using claude code. initially there wasnt an endpoint for claude code, but claude code made one by itself. to make things fair, both harnesses were wired up to use deepseek-v4-pro as the model, and after testing the same prompt and same task, claude code basically won. my harness zWork needs a lot of work, but thats a bit besides the point. The zbctl bridge extension works."}, {"post_id": 5930, "ts": "2026-06-09T22:11:43Z", "hours": 2.2767, "text": "i made a desktop agent (still in development) now im making a browser extension to let it attach onto browser sessions that users are already signed in on. Cool stuff: Push-based DOM snapshots (MutationObserver auto-detects page changes) Stable element IDs via WeakMap (same element always has same ID) Works with Gmail, Google Forms, real sessions Tab management: switch, open, close specific tabs File upload/download support Technical stuff: Python FastAPI daemon (port 8788) Manifest V3 Chrome extension Content script walks DOM → structured JSON 200ms debounce for settle detection, 3s hard cap Biggest limitation: Cross-origin iframes blocked by browser security. Can’t interact with YouTube embeds, payment forms, etc. But handles ~80% of normal browsing fine. right now it does work"}, {"post_id": 2549, "ts": "2026-06-05T02:52:17Z", "hours": 3.9786, "text": "magic"}]...
|
Title: zWork Browser Control by @zemu | Stardance
Title: zWork Browser Control by @zemu | Stardance
Devlogs:
magic
i made a desktop agent (still in development) now im making a browser extension to let it attach onto browser sessions that users are already signed in on. Cool stuff: Push-based DOM snapshots (MutationObserver auto-detects page changes) Stable element IDs via WeakMap (same element always has same ID) Works with Gmail, Google Forms, real sessions Tab management: switch, open, close specific tabs File upload/download support Technical stuff: Python FastAPI daemon (port 8788) Manifest V3 Chrome extension Content script walks DOM → structured JSON 200ms debounce for settle detection, 3s hard cap Biggest limitation: Cross-origin iframes blocked by browser security. Can’t interact with YouTube embeds, payment forms, etc. But handles ~80% of normal browsing fine. right now it does work
i tested zbctl using zWork (the agent im working on) as well as using claude code. initially there wasnt an endpoint for claude code, but claude code made one by itself. to make things fair, both harnesses were wired up to use deepseek-v4-pro as the model, and after testing the same prompt and same task, claude code basically won. my harness zWork needs a lot of work, but thats a bit besides the point. The zbctl bridge extension works.
I benchmarked zWork (desktop ai agent made by me) using zbctl (extension) to test its new browser use abilities. ive used the prompt in the picture below. the model answered all but one correct. the google form used to “benchmark” the model was: https://docs.google.com/forms/d/e/1FAIpQLSfHyJDMoOuDENsrrTmFsGtoDfe-9RRhlB2SDkKgYQlAAXOvhg/viewform the form included a variety of answer types, including radio and dropdowns. this is by no means a final polished product, but is certainly a good proof of concept. I will continue working on zWork and improve the harness to also improve the models tool calling and accuracy. Thanks guys
updated readme because i needed to
any click that changed DOM used to take about 3s now it takes about 200ms. I also added back the extension GUI because sometimes its confusing without it. also to save tokens from agent context windows, content.js no longer creates a brand new fat snapshot of the entire page.
Ships:
I made zWork Everything was challenging, mainly harness engineering. The browser feature was relatively straightforward. I’m proud of the extensiveness or comprehensiveness of this project, and the scale at which it worked. To fully test my app, you should probably install the app, as well as the extension. There is a limited web demo at app.tryzwork.app which doesnt really have any features. More info is available in the readmes....
|
1792972347.397626
|
1793058747.397626
|
|
52088
|
yugoslavian pocket lamb by @Denizhan | Stardance
|
Denizhan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yugoslavian pocket lamb by @Denizhan | Star Title: yugoslavian pocket lamb by @Denizhan | Stardance...
|
1792695072.5636296
|
1793299872.5636296
|
|
63302
|
yugen by @jahzeel | Stardance
|
jahzeel
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yugen by @jahzeel | Stardance
|
1792439701.0294552
|
1793044501.0294552
|
|
37011
|
yth-auth by @gideon | Stardance
|
gideon
|
0
|
59.11
|
0
|
[]
|
[{"post_id": 57007, "ts": "202 [{"post_id": 57007, "ts": "2026-08-29T02:30:34Z", "hours": 1.3494, "text": "added custom logo and background for apps!"}, {"post_id": 56976, "ts": "2026-08-29T00:53:20Z", "hours": 11.6725, "text": "added some profile changes - now you can set your last name to show first, and upload a profile picture. these changes also show in other apps too! (0:22) uploads were a little annoying to implement - you can’t send files over json so you have to use formdata, but you can’t encode booleans/integers in formdata so you have to use json I worked around this by set up a separate upload endpoint which stores images and sends back an id for use elsewhere. this makes uploading images elsewhere in the app much easier though! plus, I can set up a schedule to find and remove orphaned images (like if a user changes their profile picture, the old picture can be removed later) I also spent some time cleaning up the backend, which took some time, but is less exciting than changing your profile picture to a cat :3"}, {"post_id": 54858, "ts": "2026-08-26T01:18:32Z", "hours": 5.6311, "text": "added the ability to view and revoke sessions! each session shows the browser and OS you’re using, with icons, as well as your current session. on top of this, I’ve made a number of small ui changes. it doesn’t look super different, but if you compare 0:29 onwards to a previous devlog, the app feels less busy borders are slightly lighter corners are slightly more round forms have a horizontal layout and more spacing form inputs have a white background user/session/app tables have a new layout the save button is at the bottom of the screen, and only shows when you’ve made changes (with a little animation so you can find it) there’s a reset button too!"}, {"post_id": 54170, "ts": "2026-08-25T01:05:10Z", "hours": 9.3639, "text": "added consent! consent is always a good thing for each app a user logs in to, it stores which scopes were granted. the user can then open the app from their homepage, or revoke the app’s access (which deletes all access tokens). - as shown, once I revoke tokens, the test app can no longer read my profile :D"}, {"post_id": 49288, "ts": "2026-08-18T00:29:03Z", "hours": 1.2003, "text": "logging in to other apps now works! made a quick demo using better-auth (on a separate website) to test it. implemented OAuth2 code exchange and user info endpoints. I wrote them using orpc, so they have proper input validation, and as a bonus I can generate OpenAPI docs too ^-^ also added a ‘return_to’ query parameter so if you’re not logged in, it asks you to log in first, then redirects you back where you were."}, {"post_id": 48917, "ts": "2026-08-17T14:11:35Z", "hours": 8.9456, "text": "added creating external apps! this will allow other apps to log in through my system (similar to ‘sign in with google’), access users’ info like their name and email, and also add updates, like adding events they’ve attended to their logbook! turns out implementing OAuth2/OIDC from scratch is actually not super fun, who would have thought I’m partway though! in brief, when users want to log in to an app, they’re sent to your auth system first. if they’ve not already used the app before, they can give permission first. then they’re sent back, with a unique code that the app uses to talk to the auth system and find out who the user is. - at the moment, I’ve added a consent page, and am working on adding APIs to allow the app to exchange a code for user info. there’s a lot of hidden backend work still to do though, like making sure everything is standards-compliant (enough), proper input validation, only allowing specific scopes, detecting token reuse, etc."}, {"post_id": 39734, "ts": "2026-08-02T21:54:38Z", "hours": 2.2947, "text": "added the ‘console’ page! mostly just design for now, but you can update your name and date of birth ^-^"}, {"post_id": 39092, "ts": "2026-08-01T19:50:17Z", "hours": 1.1319, "text": "implemented the login flow! the app asks you to login if you already have an account, or to signup if you don’t. the one-time code field also now auto-focuses, so you can type in a code straight away."}, {"post_id": 31464, "ts": "2026-07-19T20:48:55Z", "hours": 3.3472, "text": "implemented the signup flow! now when you sign up, your account actually gets created and you’re logged in as well nice extra feature - when you enter your email and click ‘next’, the email input stays in the same place. plus, between each page, the title stays in the same place too!"}, {"post_id": 30876, "ts": "2026-07-18T20:36:59Z", "hours": 14.1728, "text": "a lot of this time was spent playing around with different frameworks and seeing what I preferred. I ended up picking TanStack Start just because I liked it, and it doesn’t feel like feature overload anyway, so I have something to show for 14h, I wrote the signup flow with proper validation, and it’s multi-step so it ‘guides’ a user through signing up. no accounts are created yet (that comes later), but it looks nice"}]...
|
Title: yth-auth by @gideon | Stardance
Devlogs:
a Title: yth-auth by @gideon | Stardance
Devlogs:
a lot of this time was spent playing around with different frameworks and seeing what I preferred. I ended up picking TanStack Start just because I liked it, and it doesn’t feel like feature overload anyway, so I have something to show for 14h, I wrote the signup flow with proper validation, and it’s multi-step so it ‘guides’ a user through signing up. no accounts are created yet (that comes later), but it looks nice
implemented the signup flow! now when you sign up, your account actually gets created and you’re logged in as well nice extra feature - when you enter your email and click ‘next’, the email input stays in the same place. plus, between each page, the title stays in the same place too!
implemented the login flow! the app asks you to login if you already have an account, or to signup if you don’t. the one-time code field also now auto-focuses, so you can type in a code straight away.
added the ‘console’ page! mostly just design for now, but you can update your name and date of birth ^-^
added creating external apps! this will allow other apps to log in through my system (similar to ‘sign in with google’), access users’ info like their name and email, and also add updates, like adding events they’ve attended to their logbook! turns out implementing OAuth2/OIDC from scratch is actually not super fun, who would have thought I’m partway though! in brief, when users want to log in to an app, they’re sent to your auth system first. if they’ve not already used the app before, they can give permission first. then they’re sent back, with a unique code that the app uses to talk to the auth system and find out who the user is. - at the moment, I’ve added a consent page, and am working on adding APIs to allow the app to exchange a code for user info. there’s a lot of hidden backend work still to do though, like making sure everything is standards-compliant (enough), proper input validation, only allowing specific scopes, detecting token reuse, etc.
logging in to other apps now works! made a quick demo using better-auth (on a separate website) to test it. implemented OAuth2 code exchange and user info endpoints. I wrote them using orpc, so they have proper input validation, and as a bonus I can generate OpenAPI docs too ^-^ also added a ‘return_to’ query parameter so if you’re not logged in, it asks you to log in first, then redirects you back where you were.
added consent! consent is always a good thing for each app a user logs in to, it stores which scopes were granted. the user can then open the app from their homepage, or revoke the app’s access (which deletes all access tokens). - as shown, once I revoke tokens, the test app can no longer read my profile :D
added the ability to view and revoke sessions! each session shows the browser and OS you’re using, with icons, as well as your current session. on top of this, I’ve made a number of small ui changes. it doesn’t look super different, but if you compare 0:29 onwards to a previous devlog, the app feels less busy borders are slightly lighter corners are slightly more round forms have a horizontal layout and more spacing form inputs have a white background user/session/app tables have a new layout the save button is at the bottom of the screen, and only shows when you’ve made changes (with a little animation so you can find it) there’s a reset button too!
added some profile changes - now you can set your last name to show first, and upload a profile picture. these changes also show in other apps too! (0:22) uploads were a little annoying to implement - you can’t send files over json so you have to use formdata, but you can’t encode booleans/integers in formdata so you have to use json I worked around this by set up a separate upload endpoint which stores images and sends back an id for use elsewhere. this makes uploading images elsewhere in the app much easier though! plus, I can set up a schedule to find and remove orphaned images (like if a user changes their profile picture, the old picture can be removed later) I also spent some time cleaning up the backend, which took some time, but is less exciting than changing your profile picture to a cat :3
added custom logo and background for apps!...
|
1792676923.5601451
|
1793281723.5601451
|
|
3895
|
yt-down by @DunkelBit | Stardance
|
DunkelBit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yt-down by @DunkelBit | Stardance
|
1792781292.9589195
|
1793386092.9589195
|
|
6887
|
yswsagain by @cloudglides | Stardance
|
cloudglides
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yswsagain by @cloudglides | Stardance
|
1792756569.047382
|
1793361369.047382
|
|
34051
|
ysws Simulator by @rangodamango | Stardance
|
rangodamango
|
1
|
8.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T11:59:16Z", "hours": 8.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finally completed the game. Never using python again, the conversion to exe was a nightmare. Also, let me know if there’s any feedback. Thx!", "repo": "https://github.com/RangoDaMango/ysws-sim", "demo": "https://rangodamango.itch.io/ysws-simulator"}]...
|
[{"post_id": 29416, "ts": "202 [{"post_id": 29416, "ts": "2026-07-16T11:02:00Z", "hours": 0.7458, "text": "Finally finished enough for it to be a ship! Please try it out and lemme know how it goes. also, try not to break the game (pls)."}, {"post_id": 28876, "ts": "2026-07-15T13:28:40Z", "hours": 1.0683, "text": "Finally finished enough for it to be at the very least a C, and now, I’m going to be polishing everything up. for some reason, i’ve resorted to naming my variables woho, or choho, or mochoho, or prowo, or vopro, or some other variation of two or three syllables with a consonant phoneme followed by an o sound afterwards, which corresponds to the first 2 phonemes of each word (for example, woho being worked hours). Someone tell me how to make variables look normal, if i keep this up until i get into the workforce im not getting hired for anything involving teams."}, {"post_id": 28286, "ts": "2026-07-14T13:23:02Z", "hours": 1.2958, "text": "I finally added the ability to work on projects! also scoring. i unfortunately ditched the programs since all programs were essentially the same."}, {"post_id": 27677, "ts": "2026-07-13T13:38:07Z", "hours": 2.0839, "text": "Finally got to the skill system. Rng to determine result of study session. i also started on projects."}, {"post_id": 27535, "ts": "2026-07-13T05:31:06Z", "hours": 1.3033, "text": "added in 4 ysws programs you can be in: sunjig, tastecity, summer of production, and red publish. i also added in a skill system and started time progression. skill system also has training, where rng decides the effectiveness of your study. 213 lines in 2 hours isnt that bad. next devlog will probably finally be projects."}, {"post_id": 27201, "ts": "2026-07-12T15:24:41Z", "hours": 1.1983, "text": "I started on the initial screen, created the basics of the simulation system, and set up the project and program mechanism."}]...
|
Title: ysws Simulator by @rangodamango | Stardance Title: ysws Simulator by @rangodamango | Stardance
Devlogs:
I started on the initial screen, created the basics of the simulation system, and set up the project and program mechanism.
added in 4 ysws programs you can be in: sunjig, tastecity, summer of production, and red publish. i also added in a skill system and started time progression. skill system also has training, where rng decides the effectiveness of your study. 213 lines in 2 hours isnt that bad. next devlog will probably finally be projects.
Finally got to the skill system. Rng to determine result of study session. i also started on projects.
I finally added the ability to work on projects! also scoring. i unfortunately ditched the programs since all programs were essentially the same.
Finally finished enough for it to be at the very least a C, and now, I’m going to be polishing everything up. for some reason, i’ve resorted to naming my variables woho, or choho, or mochoho, or prowo, or vopro, or some other variation of two or three syllables with a consonant phoneme followed by an o sound afterwards, which corresponds to the first 2 phonemes of each word (for example, woho being worked hours). Someone tell me how to make variables look normal, if i keep this up until i get into the workforce im not getting hired for anything involving teams.
Finally finished enough for it to be a ship! Please try it out and lemme know how it goes. also, try not to break the game (pls).
Ships:
I finally completed the game. Never using python again, the conversion to exe was a nightmare. Also, let me know if there’s any feedback. Thx!...
|
1792850077.0875375
|
1792936477.0875375
|
|
51967
|
yoyoyoyo by @krishnaaa | Stardance
|
krishnaaa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yoyoyoyo by @krishnaaa | Stardance
|
1792691468.8748922
|
1793296268.8748922
|
|
25157
|
youtubechromeextension by @wingnovel | Stardance
|
wingnovel
|
1
|
8.27
|
41
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T16:06:50Z", "hours": 8.0, "multiplier": 5.21, "payout": 41, "blessing": "neutral", "text": "My project is a chrome extension that permits its users to have a better YouTube notification system everything their favorite creators post something. My hardest challenge was to make the API key work and the notification system was not working since there was a problem with how my computer manages notifications from my browser. I am proud of the fact that the system works more consistently than what YouTube currently offers as the notifications from my extension every time a youtuber uploaded something would be faster than YouTube’s native notification system.", "repo": "https://github.com/raghav03102008/Youtubenotificationsystem", "demo": "https://github.com/raghav03102008/Youtubenotificationsystem/releases/tag/v1"}]...
|
[{"post_id": 26110, "ts": "202 [{"post_id": 26110, "ts": "2026-07-10T18:14:24Z", "hours": 0.2711, "text": "i have now updated the project to contain a default API that is made on a temp account for users who do not know how to generate their own API key or are not able to due to any constrains."}, {"post_id": 21625, "ts": "2026-07-03T17:44:02Z", "hours": 7.7775, "text": "This is a chrome extension that uses the google API for youtube to pull the information of youtube channels and sends a notification to my notification center everytime the selected youtubers post a video. Currently this extension checks every 15 min and I have tested it over two days and it successfully and reliably notifies the user when a new video is dropped. Youtube’s inbuilt notification sender is unreliable"}]...
|
Title: youtubechromeextension by @wingnovel | Star Title: youtubechromeextension by @wingnovel | Stardance
Devlogs:
This is a chrome extension that uses the google API for youtube to pull the information of youtube channels and sends a notification to my notification center everytime the selected youtubers post a video. Currently this extension checks every 15 min and I have tested it over two days and it successfully and reliably notifies the user when a new video is dropped. Youtube’s inbuilt notification sender is unreliable
i have now updated the project to contain a default API that is made on a temp account for users who do not know how to generate their own API key or are not able to due to any constrains.
Ships:
My project is a chrome extension that permits its users to have a better YouTube notification system everything their favorite creators post something. My hardest challenge was to make the API key work and the notification system was not working since there was a problem with how my computer manages notifications from my browser. I am proud of the fact that the system works more consistently than what YouTube currently offers as the notifications from my extension every time a youtuber uploaded something would be faster than YouTube’s native notification system....
|
1792972332.6138186
|
1793058732.6138186
|
|
26967
|
youtube clone by @ephemeral5109 | Stardance
|
ephemeral5109
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: youtube clone by @ephemeral5109 | Stardance
|
1792522506.4221404
|
1793127306.4221404
|
|
58481
|
yousnoozeyousolve by @nzx37 | Stardance
|
nzx37
|
0
|
8.38
|
0
|
[]
|
[{"post_id": 78226, "ts": "202 [{"post_id": 78226, "ts": "2026-10-10T01:11:35Z", "hours": 2.4003, "text": "#Soldering for YSYS! Today, my parts for YSYS finally arrived. So I soldered most of the parts together(except the diodes) so I hope to be able to upload firmware and ship soon!"}, {"post_id": 73117, "ts": "2026-09-24T12:57:45Z", "hours": 0.3167, "text": "PCBs Arrived! Finished: PCBs for YouSnoozeYouSolve have been delivered through JLCPCB! What I did I got my pcbs today! Stardance got extended by a month(thank goodness i was NOT going to ship in time BAHAHA). But anyway today I finally got the PCBs for ysys. Hopefully the BLARE kit and 3D prints come soon(The Stickers that you get for starting are still in US ;D). TODOStuff I Still have to Recieve BLARE kit Assembly Ship!"}, {"post_id": 70532, "ts": "2026-09-19T10:16:46Z", "hours": 0.4694, "text": "Ordering PCBs! Finished:PCBs for YouSnoozeYouSolve have been ordered through JLCPCB! *thank you hack club for money :D What I did I got my project funding! Since stardance ends soon i want to get this finished up and shipped! Today I ordered the PCBs for ysys. Hopefully the BLARE kit comes fast. TODOStuff I Still have to: Recieve BLARE kit Recieve PCBs Order prints Assembly Ship! ill send 3d print order tn kbye"}, {"post_id": 68548, "ts": "2026-09-15T09:28:41Z", "hours": 0.2911, "text": "#Fixing github files I recently tried funding but apparently some folders were structured wrong so i spent some time fixing it! Hopefully the request is accepted and we can move on to building :D"}, {"post_id": 65867, "ts": "2026-09-11T09:27:48Z", "hours": 0.3672, "text": "Final Preparation for Shipping! I updated the github and made the readme readable."}, {"post_id": 65805, "ts": "2026-09-11T05:56:30Z", "hours": 2.3472, "text": "Firmware plans + CAD Finished: Planning for UI of YSYS Added hooks for glasses and watch I first worked on firmware planning(ie. navigation etc.) this should allow me to code it out better! the diagram is messy but its how i think it out =P Afterwards I was going to move onto coding but i suddenly really wanted to add a glasses hook. This is a rare chance to make my own alarm clock i wanted it to be useful too! i ended up with a watch holder and glasses holder as they are normally on my table and end up on the floor or in the bin. going to work on coding now"}, {"post_id": 62235, "ts": "2026-09-05T14:37:50Z", "hours": 1.6917, "text": "Case CADing Part 1 The PCB has a cash register looking case now! The case has holes for keypad, port, screen and buzzer. Before the end of the day I CADed the case for yousnoozeyousolve. It comes in a top bottom screw case and features holes for the switches, screen, usb port and buzzer. Overall its ready to ship, will work on firmware soon! ;D"}, {"post_id": 62053, "ts": "2026-09-05T08:54:06Z", "hours": 0.4972, "text": "BLARE alarm clock DEVLOG 1 i started this with my old account but ive been locked out of that :(. so i have basically finished the pcb and gerber files! hopefully i can ship soon after the CAD is done!"}]...
|
Title: yousnoozeyousolve by @nzx37 | Stardance
De Title: yousnoozeyousolve by @nzx37 | Stardance
Devlogs:
BLARE alarm clock DEVLOG 1 i started this with my old account but ive been locked out of that :(. so i have basically finished the pcb and gerber files! hopefully i can ship soon after the CAD is done!
Case CADing Part 1 The PCB has a cash register looking case now! The case has holes for keypad, port, screen and buzzer. Before the end of the day I CADed the case for yousnoozeyousolve. It comes in a top bottom screw case and features holes for the switches, screen, usb port and buzzer. Overall its ready to ship, will work on firmware soon! ;D
Firmware plans + CAD Finished: Planning for UI of YSYS Added hooks for glasses and watch I first worked on firmware planning(ie. navigation etc.) this should allow me to code it out better! the diagram is messy but its how i think it out =P Afterwards I was going to move onto coding but i suddenly really wanted to add a glasses hook. This is a rare chance to make my own alarm clock i wanted it to be useful too! i ended up with a watch holder and glasses holder as they are normally on my table and end up on the floor or in the bin. going to work on coding now
Final Preparation for Shipping! I updated the github and made the readme readable.
#Fixing github files I recently tried funding but apparently some folders were structured wrong so i spent some time fixing it! Hopefully the request is accepted and we can move on to building :D
Ordering PCBs! Finished:PCBs for YouSnoozeYouSolve have been ordered through JLCPCB! *thank you hack club for money :D What I did I got my project funding! Since stardance ends soon i want to get this finished up and shipped! Today I ordered the PCBs for ysys. Hopefully the BLARE kit comes fast. TODOStuff I Still have to: Recieve BLARE kit Recieve PCBs Order prints Assembly Ship! ill send 3d print order tn kbye
PCBs Arrived! Finished: PCBs for YouSnoozeYouSolve have been delivered through JLCPCB! What I did I got my pcbs today! Stardance got extended by a month(thank goodness i was NOT going to ship in time BAHAHA). But anyway today I finally got the PCBs for ysys. Hopefully the BLARE kit and 3D prints come soon(The Stickers that you get for starting are still in US ;D). TODOStuff I Still have to Recieve BLARE kit Assembly Ship!
#Soldering for YSYS! Today, my parts for YSYS finally arrived. So I soldered most of the parts together(except the diodes) so I hope to be able to upload firmware and ship soon!...
|
1792752696.857952
|
1793357496.857952
|
|
52253
|
your path by @lunardaisy | Stardance
|
lunardaisy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: your path by @lunardaisy | Stardance
|
1792702347.3714688
|
1793307147.3714688
|
|
68471
|
yoru by @yoru_ayan | Stardance
|
yoru_ayan
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-07T19:05:34Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I finally complete my personal website build and now it is live on vercel. This was a little bit of challenge to design and build a complete website in under 3 hr but still I build it so I Shipping the website. After this I will work on this by shifting this code to React so I will be able to add more feature an more interactive sections.", "repo": "https://github.com/aniway89/Yoru", "demo": "https://yoru-ayan.vercel.app/"}]...
|
[{"post_id": 77650, "ts": "202 [{"post_id": 77650, "ts": "2026-10-07T19:00:17Z", "hours": 1.38, "text": "Finally Complete my Personal Website, It is supper clean and minimal which I want I hope you guys also like this ."}, {"post_id": 77613, "ts": "2026-10-07T17:16:34Z", "hours": 1.2078, "text": "building my Portfolio website from scratch. Current Shema is to create the basis design Using the HTML, CSS later convert it into A react Website for performance and definitely some new features"}]...
|
Title: yoru by @yoru_ayan | Stardance
Devlogs:
bu Title: yoru by @yoru_ayan | Stardance
Devlogs:
building my Portfolio website from scratch. Current Shema is to create the basis design Using the HTML, CSS later convert it into A react Website for performance and definitely some new features
Finally Complete my Personal Website, It is supper clean and minimal which I want I hope you guys also like this .
Ships:
I finally complete my personal website build and now it is live on vercel. This was a little bit of challenge to design and build a complete website in under 3 hr but still I build it so I Shipping the website. After this I will work on this by shifting this code to React so I will be able to add more feature an more interactive sections....
|
1792968435.0302937
|
1793054835.0302937
|
|
64676
|
yokai watch is goated by @Jynxed_Louis | Stardance
|
Jynxed_Louis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yokai watch is goated by @Jynxed_Louis | St Title: yokai watch is goated by @Jynxed_Louis | Stardance...
|
1792450287.0708487
|
1793055087.0708487
|
|
14146
|
yoggies by @10020882 | Stardance
|
10020882
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yoggies by @10020882 | Stardance
|
1792741651.3682988
|
1793346451.3682988
|
|
67972
|
yippi by @sebimala | Stardance
|
sebimala
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yippi by @sebimala | Stardance
|
1792468415.6346385
|
1793073215.6346385
|
|
47753
|
yildizzzzz by @phambinh10062011 | Stardance
|
phambinh10062011
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yildizzzzz by @phambinh10062011 | Stardance
|
1792529286.0429838
|
1793134086.0429838
|
|
47754
|
yildizzzzz by @phambinh10062011 | Stardance
|
phambinh10062011
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yildizzzzz by @phambinh10062011 | Stardance
|
1792529286.9124029
|
1793134086.9124029
|
|
46537
|
ygdwuefh by @nurospicydaisy | Stardance
|
nurospicydaisy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ygdwuefh by @nurospicydaisy | Stardance
|
1792669706.2785046
|
1793274506.2785046
|
|
66102
|
yet another website by @fortuna | Stardance
|
fortuna
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yet another website by @fortuna | Stardance
|
1792457598.9350686
|
1793062398.9350686
|
|
22246
|
yet another static site generator by @l8n8hype | S yet another static site generator by @l8n8hype | Stardance...
|
l8n8hype
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yet another static site generator by @l8n8h Title: yet another static site generator by @l8n8hype | Stardance...
|
1792723799.877266
|
1793328599.877266
|
|
55360
|
yesos by @itsaperson | Stardance
|
itsaperson
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-30T11:00:59Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Made my own webOS, named YesOS! Followed through the tutorial for getting to know the basics and setting up. Decided to add a feature where I could click a button to change the background image, which worked very well and was pretty effective, so I’m proud of that. Please don’t judge my css just yet, I’m kinda like experimenting and starting to try make my projects also look nice. Hopefully you like it!", "repo": "https://github.com/insertnewusername/yesOS", "demo": "https://insertnewusername.github.io/yesOS/"}]...
|
[{"post_id": 58011, "ts": "202 [{"post_id": 58011, "ts": "2026-08-30T10:59:53Z", "hours": 0.3217, "text": "Needed to add a new feature to my OS, so decided to have a background-swapper button. Put it in the bottom taskbar, as I thought that was the most appropriate place to put it, and gave it an icon. When you click on it, background loops between 4 images, thanks to javascript of course. Now it’s more customisable!"}, {"post_id": 57998, "ts": "2026-08-30T10:28:15Z", "hours": 1.5253, "text": "Kept following through the tutorials for the os, got through 4 and 5, creating my own icons on canva, which ended up looking pretty nice. Wanted my OS to look both simple, minimalistic, yet functional, which I think I achieved relatively, may work on the css and make everything look better during WebOS2. Javascript functions seemed pretty logical, like working through a list full of commands. This project was pretty fun, and I’m glad I got everything working"}, {"post_id": 56560, "ts": "2026-08-28T11:16:22Z", "hours": 0.9728, "text": "Saw my friend working on the webos mission, so I decided to join to! Names are always the hardest part, and I named this one YesOS. Really? Yes. Found the guide, followed it as best as I could, found it very easy to follow, and got up to finishing part 3. Had the timer, welcome with on/off button, just everything isn’t styled that great. But most of the raw code is there, and that’s good. I’ll call this progress a day for now."}]...
|
Title: yesos by @itsaperson | Stardance
Devlogs:
Title: yesos by @itsaperson | Stardance
Devlogs:
Saw my friend working on the webos mission, so I decided to join to! Names are always the hardest part, and I named this one YesOS. Really? Yes. Found the guide, followed it as best as I could, found it very easy to follow, and got up to finishing part 3. Had the timer, welcome with on/off button, just everything isn’t styled that great. But most of the raw code is there, and that’s good. I’ll call this progress a day for now.
Kept following through the tutorials for the os, got through 4 and 5, creating my own icons on canva, which ended up looking pretty nice. Wanted my OS to look both simple, minimalistic, yet functional, which I think I achieved relatively, may work on the css and make everything look better during WebOS2. Javascript functions seemed pretty logical, like working through a list full of commands. This project was pretty fun, and I’m glad I got everything working
Needed to add a new feature to my OS, so decided to have a background-swapper button. Put it in the bottom taskbar, as I thought that was the most appropriate place to put it, and gave it an icon. When you click on it, background loops between 4 images, thanks to javascript of course. Now it’s more customisable!
Ships:
Made my own webOS, named YesOS! Followed through the tutorial for getting to know the basics and setting up. Decided to add a feature where I could click a button to change the background image, which worked very well and was pretty effective, so I’m proud of that. Please don’t judge my css just yet, I’m kinda like experimenting and starting to try make my projects also look nice. Hopefully you like it!...
|
1792990396.8528395
|
1793076796.8528395
|
|
63327
|
yes by @rosie123 | Stardance
|
rosie123
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-28T02:24:11Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "im a beginner so i dont know a lot but i tried my best(:", "repo": "https://github.com/1raselle/boba/commit/4ca04855baa39c12c16a645339e917af25965142#diff-0eb547304658805aad788d320f10bf1f292797b5e6d745a3bf617584da017051", "demo": "https://ideal-disco-p7w6gvr695573rqvg-5501.app.github.dev/"}]...
|
[{"post_id": 74724, "ts": "202 [{"post_id": 74724, "ts": "2026-09-28T02:19:40Z", "hours": 0.3281, "text": "a site abt how boba is made!!!"}, {"post_id": 74716, "ts": "2026-09-28T01:44:32Z", "hours": 1.1403, "text": "a site abt how boba is made!!!"}]...
|
Title: yes by @rosie123 | Stardance
Devlogs:
a si Title: yes by @rosie123 | Stardance
Devlogs:
a site abt how boba is made!!!
a site abt how boba is made!!!
Ships:
im a beginner so i dont know a lot but i tried my best(:...
|
1792964984.4778554
|
1793051384.4778554
|
|
63326
|
yes by @rosie123 | Stardance
|
rosie123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yes by @rosie123 | Stardance
|
1792442833.7859497
|
1793047633.7859497
|
|
38582
|
yeehaww by @rmnrew | Stardance
|
rmnrew
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yeehaww by @rmnrew | Stardance
|
1792597998.9805412
|
1793202798.9805412
|
|
59675
|
yeah lowkey dontknow by @ocynno | Stardance
|
ocynno
|
0
|
1.04
|
0
|
[]
|
[{"post_id": 68406, "ts": "202 [{"post_id": 68406, "ts": "2026-09-15T02:08:59Z", "hours": 1.0433, "text": "#1 Hackpad Pcb design had some problems with kicad being read only, fixed it, now moving on to designing the casing. wish me luck on my thinkpad t460 with a intergrated gpu. any reccomendations on software to design it? that my intel 6th gen i7 can handle…^_^"}]...
|
Title: yeah lowkey dontknow by @ocynno | Stardance Title: yeah lowkey dontknow by @ocynno | Stardance
Devlogs:
#1 Hackpad Pcb design had some problems with kicad being read only, fixed it, now moving on to designing the casing. wish me luck on my thinkpad t460 with a intergrated gpu. any reccomendations on software to design it? that my intel 6th gen i7 can handle…^_^...
|
1792810291.7482796
|
1793415091.7482796
|
|
65781
|
yeaaa by @nihilpulipaka | Stardance
|
nihilpulipaka
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yeaaa by @nihilpulipaka | Stardance
|
1792457381.1138587
|
1793062181.1138587
|
|
37724
|
yber Smart Clock Air Quality, Pomodoro Alarm by @T yber Smart Clock Air Quality, Pomodoro Alarm by @TRIX | Stardance...
|
TRIX
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yber Smart Clock Air Quality, Pomodoro Alar Title: yber Smart Clock Air Quality, Pomodoro Alarm by @TRIX | Stardance...
|
1792731038.9547327
|
1793335838.9547327
|
|
38219
|
yayy game by @marygoat | Stardance
|
marygoat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yayy game by @marygoat | Stardance
|
1792889410.0611386
|
1793753410.0611386
|
|
71250
|
yaw by @watson | Stardance
|
watson
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: yaw by @watson | Stardance
|
1792903630.3798769
|
1793508430.3798769
|
|
12142
|
yan music by @Nibbles | Stardance
|
Nibbles
|
0
|
5.78
|
0
|
[]
|
[{"post_id": 9041, "ts": "2026 [{"post_id": 9041, "ts": "2026-06-15T02:51:30Z", "hours": 0.8814, "text": "multiple playlists now work as intended! this means that… if a song is present in multiple playlists, it will only download the song once if a song is removed from one playlist, it will not remove it if it is present in another one if a song is removed from ALL playlists, it will be removed this meant i had to do a little bit of refactoring, before i was storing a map of the playlist id with a vector of strings, now its just a vector of video ids, which made this a lot easier to implement!"}, {"post_id": 8525, "ts": "2026-06-14T05:32:36Z", "hours": 2.6939, "text": "probably should’ve split this into 2 devlogs, but uhh.. first: playlists + yt-dlp flags are now loaded from the config file! obviously this will be editable with a ui at some point in the future i also added a config key for the directory that music will be downloaded! which is important… and second: the playlist now syncs when new things are added or deleted! this is done by storing a file with all the video ids of the playlist last time it was downloaded, and comparing it with whatever it is now, downloading individually what was added (to prevent potential ratelimits from youtube that would occur if i was just to run the command to download the entire playlist again), and deleting any songs that were removed from the playlist! (in the future, i want this to be a togglable setting as sometimes you might want to keep songs if they are removed from youtube or something) next i want to make sure multiple playlists work properly, as i don’t want it to delete song files if a song was only removed from one playlist, or download a song that is already present from another playlist"}, {"post_id": 5358, "ts": "2026-06-09T03:02:54Z", "hours": 1.3361, "text": "im… sorta getting into the groove of c++! i’ve added a new class to handle a config file, which: creates config file in whatever directory it should go in (i think it’s kinda hardcoded to only function properly on linux right now… once i have things more finished i’ll definitely get windows support and maaaybe macos support!) serializes and deserializes the config file via the nlohmann json library, converting it into a struct so it can be easily read from other parts of the code next i’ll make it so downloads are fetched from the playlists in the config with the yt-dlp flags in the config!!"}, {"post_id": 4681, "ts": "2026-06-08T02:42:00Z", "hours": 0.8681, "text": "i have never made anything in c++ before. this project might be a bit.. ambitious.. but i believe… i believe!! anywayy… i’ve set up the very very basics of this project, including: wxWidgets window setup a downloader class, which creates the directory that your music will be stored in, as well as running the yt-dlp command with an array of flags (which i’ll prob make configurable at some point) yes, it’s all hardcoded right now, it wont be like that forever obviously, its been 47 minutes… the first thing i plan to get done with this anyway is the syncing and downloading with youtube playlists, so my next thing will probably be creating a config file that contains links to playlists to sync with as well as any yt-dlp flags if needed!"}]...
|
Title: yan music by @Nibbles | Stardance
Devlogs: Title: yan music by @Nibbles | Stardance
Devlogs:
i have never made anything in c++ before. this project might be a bit.. ambitious.. but i believe… i believe!! anywayy… i’ve set up the very very basics of this project, including: wxWidgets window setup a downloader class, which creates the directory that your music will be stored in, as well as running the yt-dlp command with an array of flags (which i’ll prob make configurable at some point) yes, it’s all hardcoded right now, it wont be like that forever obviously, its been 47 minutes… the first thing i plan to get done with this anyway is the syncing and downloading with youtube playlists, so my next thing will probably be creating a config file that contains links to playlists to sync with as well as any yt-dlp flags if needed!
im… sorta getting into the groove of c++! i’ve added a new class to handle a config file, which: creates config file in whatever directory it should go in (i think it’s kinda hardcoded to only function properly on linux right now… once i have things more finished i’ll definitely get windows support and maaaybe macos support!) serializes and deserializes the config file via the nlohmann json library, converting it into a struct so it can be easily read from other parts of the code next i’ll make it so downloads are fetched from the playlists in the config with the yt-dlp flags in the config!!
probably should’ve split this into 2 devlogs, but uhh.. first: playlists + yt-dlp flags are now loaded from the config file! obviously this will be editable with a ui at some point in the future i also added a config key for the directory that music will be downloaded! which is important… and second: the playlist now syncs when new things are added or deleted! this is done by storing a file with all the video ids of the playlist last time it was downloaded, and comparing it with whatever it is now, downloading individually what was added (to prevent potential ratelimits from youtube that would occur if i was just to run the command to download the entire playlist again), and deleting any songs that were removed from the playlist! (in the future, i want this to be a togglable setting as sometimes you might want to keep songs if they are removed from youtube or something) next i want to make sure multiple playlists work properly, as i don’t want it to delete song files if a song was only removed from one playlist, or download a song that is already present from another playlist
multiple playlists now work as intended! this means that… if a song is present in multiple playlists, it will only download the song once if a song is removed from one playlist, it will not remove it if it is present in another one if a song is removed from ALL playlists, it will be removed this meant i had to do a little bit of refactoring, before i was storing a map of the playlist id with a vector of strings, now its just a vector of video ids, which made this a lot easier to implement!...
|
1792741671.7200475
|
1793346471.7200475
|
|
14177
|
yahtzee web game by @Camc | Stardance
|
Camc
|
1
|
3.0
|
4
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-25T15:54:52Z", "hours": 3.0, "multiplier": 1.27, "payout": 4, "blessing": "neutral", "text": "I was trying to make a yahtzee game as i have been playing yahtzee. I was really struggling with the scoring system.", "repo": "https://github.com/clownoftheweekcode/yahtzee-game", "demo": "https://clownoftheweekcode.github.io/yahtzee-game/"}]...
|
[{"post_id": 15712, "ts": "202 [{"post_id": 15712, "ts": "2026-06-25T15:50:24Z", "hours": 1.5161, "text": "tried to finish this… Hopefully i can work on it without ai in the future."}, {"post_id": 12698, "ts": "2026-06-20T18:53:44Z", "hours": 0.6386, "text": "added the ability to hold rolled dice and gave a limit to how many rolls you can roll"}, {"post_id": 9449, "ts": "2026-06-15T20:18:21Z", "hours": 0.6294, "text": "created the elements and styled them a bit"}]...
|
Title: yahtzee web game by @Camc | Stardance
Devl Title: yahtzee web game by @Camc | Stardance
Devlogs:
created the elements and styled them a bit
added the ability to hold rolled dice and gave a limit to how many rolls you can roll
tried to finish this… Hopefully i can work on it without ai in the future.
Ships:
I was trying to make a yahtzee game as i have been playing yahtzee. I was really struggling with the scoring system....
|
1792849967.9976547
|
1792936367.9976547
|
|
44732
|
y2kSearch by @paulo | Stardance
|
paulo
|
1
|
4.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T17:34:22Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a new tab concept using the NASA api to fetch daily articles. The style is based on old webpages from the 2000’s, this one had a little bit of AOL Netscape sprinkled on top. The biggest challenge for me is to actually write the code, I’ve switched to neovim a week ago, and I feel POWERFUL but slow…", "repo": "https://github.com/n7z/y2kSearch", "demo": "https://n7z.github.io/y2kSearch"}]...
|
[{"post_id": 43405, "ts": "202 [{"post_id": 43405, "ts": "2026-08-08T17:01:50Z", "hours": 1.6419, "text": "Got the NASA article correctly positioned at my webpage, looks almost ready to ship! Also got the search mechanism working (it uses google below the hood)."}, {"post_id": 42379, "ts": "2026-08-07T02:12:47Z", "hours": 2.1456, "text": "Working on the main new tab search container scaffold. Got the basic NASA api fetching working as well, still no structure for it to be correctly displayed."}]...
|
Title: y2kSearch by @paulo | Stardance
Devlogs:
W Title: y2kSearch by @paulo | Stardance
Devlogs:
Working on the main new tab search container scaffold. Got the basic NASA api fetching working as well, still no structure for it to be correctly displayed.
Got the NASA article correctly positioned at my webpage, looks almost ready to ship! Also got the search mechanism working (it uses google below the hood).
Ships:
I made a new tab concept using the NASA api to fetch daily articles. The style is based on old webpages from the 2000’s, this one had a little bit of AOL Netscape sprinkled on top. The biggest challenge for me is to actually write the code, I’ve switched to neovim a week ago, and I feel POWERFUL but slow…...
|
1792983381.2035267
|
1793069781.2035267
|
|
27559
|
y-lead-website by @Venkatesh | Stardance
|
Venkatesh
|
3
|
14.0
|
120
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T11:30:26Z", "hours": 4.0, "multiplier": 12.85, "payout": 52, "blessing": "neutral", "text": "LIVE AT: https://y-lead-2026.vercel.app/ I made a website for one of my school’s events called Y.LEAD which is a 4 day leadership camp for my juniors. As part of the organising committee, I took the opportunity to create a nice website for both participants and facilitators to access information like the days schedule, certain activity materials, photos taken during the event, event teasers/storyline videos etc… When designing the website, I aimed it to be user centric by follow conventional navigation and UX. Additionally, I came up with a palette and then started creating the different pages of the website trying to make everything feel fresh and aesthetically pleasing. Some elements following this philosophy: animated timeline graphic instead of a google sheet, todo list or calendar component depth effect with animations in the landing page ability to search cheers for participants during the event animated hero for theme page embeds instead of plain links to the external resources glowing effect behind images some challenges I faced was ensuring the website was responsive on practically any screen size. I specially made a vertical poster for the landing page just for mobile and different layouts for mobile and larger screens. Additionally, another challenge was slow loading speeds for images, that would ruin the landing page especially when I first started out, luckily the fix was quite straightforward. I converted all the images to avif format and set it to a lower quality on low res screen as there wont be a big visible difference, reserving a max res of 2k for larger screens like 1440p. All in all, I would say this is one of the projects in which i had the most fun building, I got to learn even more about responsive web design, UX, performance optimisation and even got to experience how it’s like to program a website with tight deadlines and an actual production target. Even though theres only 14 hours logged on stardance, I have spent around 40-50 hours painstakingly coding most of this website by myself, AI was mostly sparingly only for debugging and refactoring some parts of the code or generating boilerplate. With that I have finally finished this project start to end!", "repo": "https://github.com/vensah-dev/y-lead-2026", "demo": "https://y-lead-2026.vercel.app/"}, {"ship_num": 2, "ts": "2026-07-06T04:51:10Z", "hours": 8.0, "multiplier": 5.61, "payout": 44, "blessing": "neutral", "text": "Bug fixes, extra features and even more content and redirects for participants to use.", "repo": "https://github.com/vensah-dev/y-lead-2026", "demo": "https://y-lead-2026.vercel.app/"}, {"ship_num": 3, "ts": "2026-06-29T10:50:12Z", "hours": 2.0, "multiplier": 11.9, "payout": 24, "blessing": "neutral", "text": "I made a website for one of my school’s events called Y.LEAD. The website serves as a common platform for participants and facilitators to access information like timeline, the different events, participant documents (soon to be added), overview, credit for people involved", "repo": "https://github.com/vensah-dev/y-lead-2026", "demo": "https://y-lead-2026.vercel.app/"}]...
|
[{"post_id": 26458, "ts": "202 [{"post_id": 26458, "ts": "2026-07-11T08:27:33Z", "hours": 4.0617, "text": "final devlog: added a resources page where all the videos, worksheets and documents can be accessed from. items are all embeds instead of plain lists of links to boost interaction. The resources use a bit of a bento grid with the most important one taking a full width size and the rest half width with padding. All content has been added finally, all animations intact, the embeds have a custom bg glow based on the initial embed content. the embed may be slow to load on mobile, which i will fix in a future update if ever needed as i will be moving to focus on other projects."}, {"post_id": 21388, "ts": "2026-07-03T09:30:04Z", "hours": 7.8192, "text": "Bug fixes extra features and even more content and redirects for participants to use: fixed padding inconsistencies on mobile changed content and info about panelists to be more accurate changed formatting of bios added in more info on locations of learning journeys added in a better text hiearchy for the blocks of text added glowing images for most uses"}, {"post_id": 18256, "ts": "2026-06-29T10:36:25Z", "hours": 1.5339, "text": "https://y-lead-2026.vercel.app/ page for organising committee credits and acknowledgements. Can now be accessed via a button that redirected to /about/organising-committee. /about may be used for other stuff like this as well like certain event details and etc… Current at /about/organising-committee there ar pictures of each comm and they’re heads and members, the images are all have been converted into avif for faster loading times"}, {"post_id": 17681, "ts": "2026-06-28T16:08:19Z", "hours": 0.4858, "text": "https://y-lead-2026.vercel.app/ I’ve been working on a website for a local school event. Written in TSX using the Next JS framework. This devlog includes only the bug and UI inconsistency fixes for the theme and about pages."}]...
|
Title: y-lead-website by @Venkatesh | Stardance
D Title: y-lead-website by @Venkatesh | Stardance
Devlogs:
https://y-lead-2026.vercel.app/ I’ve been working on a website for a local school event. Written in TSX using the Next JS framework. This devlog includes only the bug and UI inconsistency fixes for the theme and about pages.
https://y-lead-2026.vercel.app/ page for organising committee credits and acknowledgements. Can now be accessed via a button that redirected to /about/organising-committee. /about may be used for other stuff like this as well like certain event details and etc… Current at /about/organising-committee there ar pictures of each comm and they’re heads and members, the images are all have been converted into avif for faster loading times
Bug fixes extra features and even more content and redirects for participants to use: fixed padding inconsistencies on mobile changed content and info about panelists to be more accurate changed formatting of bios added in more info on locations of learning journeys added in a better text hiearchy for the blocks of text added glowing images for most uses
final devlog: added a resources page where all the videos, worksheets and documents can be accessed from. items are all embeds instead of plain lists of links to boost interaction. The resources use a bit of a bento grid with the most important one taking a full width size and the rest half width with padding. All content has been added finally, all animations intact, the embeds have a custom bg glow based on the initial embed content. the embed may be slow to load on mobile, which i will fix in a future update if ever needed as i will be moving to focus on other projects.
Ships:
I made a website for one of my school’s events called Y.LEAD. The website serves as a common platform for participants and facilitators to access information like timeline, the different events, participant documents (soon to be added), overview, credit for people involved
Bug fixes, extra features and even more content and redirects for participants to use.
LIVE AT: https://y-lead-2026.vercel.app/ I made a website for one of my school’s events called Y.LEAD which is a 4 day leadership camp for my juniors. As part of the organising committee, I took the opportunity to create a nice website for both participants and facilitators to access information like the days schedule, certain activity materials, photos taken during the event, event teasers/storyline videos etc… When designing the website, I aimed it to be user centric by follow conventional navigation and UX. Additionally, I came up with a palette and then started creating the different pages of the website trying to make everything feel fresh and aesthetically pleasing. Some elements following this philosophy: animated timeline graphic instead of a google sheet, todo list or calendar component depth effect with animations in the landing page ability to search cheers for participants during the event animated hero for theme page embeds instead of plain links to the external resources glowing effect behind images some challenges I faced was ensuring the website was responsive on practically any screen size. I specially made a vertical poster for the landing page just for mobile and different layouts for mobile and larger screens. Additionally, another challenge was slow loading speeds for images, that would ruin the landing page especially when I first started out, luckily the fix was quite straightforward. I converted all the images to avif format and set it to a lower quality on low res screen as there wont be a big visible difference, reserving a max res of 2k for larger screens like 1440p. All in all, I would say this is one of the projects in which i had the most fun building, I got to learn even more about responsive web design, UX, performance optimisation and even got to experience how it’s like to program a website with tight deadlines and an actual production target. Even though theres only 14 hours logged on stardance, I have spent around 40-50 hours painstakingly coding most of this website by myself, AI was mostly sparingly only for debugging and refactoring some parts of the code or generating boilerplate. With that I have finally finished this project start to end!...
|
1792997712.7793732
|
1793084112.7793732
|
|
68416
|
xyz project by @Harshkp | Stardance
|
Harshkp
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xyz project by @Harshkp | Stardance
|
1792471870.7214549
|
1793076670.7214549
|
|
46741
|
xyz os by @Jacopo | Stardance
|
Jacopo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xyz os by @Jacopo | Stardance
|
1792486205.5214996
|
1793091005.5214996
|
|
59100
|
xxx by @petr_kazi2012 | Stardance
|
petr_kazi2012
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xxx by @petr_kazi2012 | Stardance
|
1792784930.3664315
|
1793389730.3664315
|
|
56220
|
xvcf.dev - my personal site! by @xvcf | Stardance
|
xvcf
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-08T14:10:50Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a new version of my personal website! It includes a section about the music I make, a section about my coding projects, as well as a footer with contact information. It also features two SoundCloud widgets, as well as a typewriter animation for the text. My CSS uses a custom font!", "repo": "https://github.com/RafaeloxMC/xvcf.dev-v5", "demo": "https://xvcf.dev"}]...
|
[{"post_id": 64223, "ts": "202 [{"post_id": 64223, "ts": "2026-09-08T14:04:15Z", "hours": 0.26, "text": "README and more URLs! Heya! Really short devlog, but it’s worth mentioning! I have made my README.md file for my GitHub repo, and I have added two more URLs to the projects section of the site! One is currently commented out in the code, due to the project still being in review on Modrinth. That’s it already!"}, {"post_id": 63195, "ts": "2026-09-06T21:17:05Z", "hours": 2.3881, "text": "Made the base site! This is the base site I made! I personally really like the design. It features a music section, as well as a code projects section. I also added a footer with a spam trap email (because bots kept spamming my old email )"}]...
|
Title: xvcf.dev - my personal site! by @xvcf | Sta Title: xvcf.dev - my personal site! by @xvcf | Stardance
Devlogs:
Made the base site! This is the base site I made! I personally really like the design. It features a music section, as well as a code projects section. I also added a footer with a spam trap email (because bots kept spamming my old email )
README and more URLs! Heya! Really short devlog, but it’s worth mentioning! I have made my README.md file for my GitHub repo, and I have added two more URLs to the projects section of the site! One is currently commented out in the code, due to the project still being in review on Modrinth. That’s it already!
Ships:
I made a new version of my personal website! It includes a section about the music I make, a section about my coding projects, as well as a footer with contact information. It also features two SoundCloud widgets, as well as a typewriter animation for the text. My CSS uses a custom font!...
|
1792986685.6943114
|
1793073085.6943114
|
|
38046
|
xsxdfcgvh by @mccoy24601 | Stardance
|
mccoy24601
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xsxdfcgvh by @mccoy24601 | Stardance
|
1792767178.300507
|
1793371978.300507
|
|
986
|
xp95 Atari by @xp95codes | Stardance
|
xp95codes
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xp95 Atari by @xp95codes | Stardance
|
1792526137.9359877
|
1793130937.9359877
|
|
47724
|
xixi by @wangcihua | Stardance
|
wangcihua
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xixi by @wangcihua | Stardance
|
1792525998.9291954
|
1793130798.9291954
|
|
4128
|
xfffs by @toponerld | Stardance
|
toponerld
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xfffs by @toponerld | Stardance
|
1792929133.307572
|
1793793133.307572
|
|
1251
|
xezel by @transdryad | Stardance
|
transdryad
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xezel by @transdryad | Stardance
|
1792518605.27325
|
1793123405.27325
|
|
45447
|
xdna.cpp by @satvikhardat | Stardance
|
|
1
|
87.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-31T15:45:47Z", "hours": 87.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Run GGUF quantized models directly on AMD XDNA1 NPUs (Ryzen AI 7040 / 8040 series) with llama.cpp its a fork or bettter said plugin of llama.cpp specially made to run models using amd NPUs Using AMD’s hawkpoint NPUs to run LLMs!! its a llama.cpp plugin not a standalone runtime to ensure supporting most models, but it has a few cool kernels targeted at the the xdna1 arch bcs as it turns out, the support for xdna1 NPUs is like really dead everyones like xdna2 yay, but i hv a xdna1 CPU so ima use every bit of it ig lol", "repo": "https://github.com/random-unknown-username/xdna.cpp", "demo": "https://github.com/random-unknown-username/xdna.cpp/releases/tag/v1.0.0"}]...
|
[{"post_id": 58984, "ts": "202 [{"post_id": 58984, "ts": "2026-08-31T15:43:02Z", "hours": 7.7858, "text": "Devlog 08 — Aug 31: The Crossover Spectrum & v1.0 Ship Finished multi-model crossover validation across three scales (0.5B, 3B, 27B): // Adaptive Heterogeneous Scheduling if ( N <= 256 ) { // Tiny matrices (<60 KB) run on CPU SIMD to avoid driver dispatch overhead cpu_engine -> run ( weights , weight_bytes , N , K , act , out ); } else { // Medium/Large matrices stream to 16 AIE2 compute tiles xdna_engine -> run ( weights , weight_bytes , N , K , act , out ); } Measured Crossover Scoreboard Qwen2.5-0.5B (403 MB) : CPU favored (106.5 t/s vs 72.6 t/s XDNA hybrid) due to small 60 KB payloads. Qwen2.5-3B (1.86 GB) : XDNA wins decisively: 16.5 tok/s vs 9.8 tok/s CPU (+68.8% / 1.69× speedup) . Qwen3.8-27B (15.2 GB) : XDNA sustains 1.72 tok/s streaming 12.6 GiB smoothly on a 32 GB laptop. Numerical Quality : Verified 100% Top-1 token match across all 3 scales. Shipped v1.0.0 with standalone binaries and clean architecture docs!"}, {"post_id": 57796, "ts": "2026-08-30T02:55:21Z", "hours": 12.8164, "text": "Devlog 07: Bounded 128MB Staging Ring & The 11.5x Recovery Architected the fix for the 27B memory collapse: a bounded double-buffered staging ring in src/xdna-gemv-engine.cpp . // Allocate exactly two 64 MB host-only staging buffers (128 MB total pinned memory) static constexpr size_t STAGING_BO_SIZE = 64 * 1024 * 1024 ; bo_staging [ 0 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); bo_staging [ 1 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); // Double-buffered stream from mmap page cache size_t stage_idx = current_op % 2 ; std :: memcpy ( bo_staging_map [ stage_idx ], mmap_weight_ptr , weight_bytes ); kernel_dpu -> operator ()(..., * bo_staging [ stage_idx ], ...); flags::host_only : Limits pinned kernel memory strictly to $2 \\times 64\\text{ MB} = \\mathbf{128\\text{ MB}}$. mmap_weight_ptr : Weights stay in standard page cache ( MAP_SHARED ), freely managed by Linux VM. Result: pgmajfault and swap dropped to 0 . 27B decode speed jumped from 0.15 tok/s to 1.72 tok/s —an 11.5× end-to-end recovery ."}, {"post_id": 54488, "ts": "2026-08-25T14:40:48Z", "hours": 12.2272, "text": "Devlog 06 The 27B Disaster & 12.6 GB Unevictable BO Crisis Tried loading Qwen3.8-27B-Q4_0 (15.2 GB). Everything collapsed: token speed plummeted to 0.15 tok/s (6.67 seconds/token) . Ran /proc/meminfo and /proc/vmstat diffs during decode to find the bottleneck: /proc/meminfo during 27B crash: MemTotal: 31,842 MB Unevictable: 12,640 MB <-- 369 persistent XRT BOs locked in RAM! pgmajfault: 520,118 <-- 520k disk page reads PER TOKEN pswpout: 18,400 <-- active swap storm The bug: Allocating persistent xrt::bo objects for all 369 model tensors pinned 12.6 GB into Unevictable kernel memory . The result: On a 32 GB laptop with OS and KV cache, Linux was starved of clean page cache. Every layer forced synchronous swap-outs and major page faults to disk. Persistent BO allocation for large models is fundamentally broken on consumer RAM."}, {"post_id": 50947, "ts": "2026-08-20T12:42:25Z", "hours": 9.7175, "text": "Devlog 05: Standalone GEMV Ceiling: Sustaining 38.5 GB/s Built tools/bench-aie-gemv-standalone.cpp to measure pure hardware DMA bandwidth without graph scheduler overhead. auto t0 = std :: chrono :: high_resolution_clock :: now (); bo_weights -> sync ( XCL_BO_SYNC_BO_TO_DEVICE ); kernel_run . wait (); auto t1 = std :: chrono :: high_resolution_clock :: now (); double gb_s = ( bytes / ( dt_ns * 1e-9 )) / 1e9 ; sync(TO_DEVICE) : Flushes dirty CPU lines and triggers DMA transport. kernel_run.wait() : Waits for AIE vector compute completion. Tested synthetic matrix sizes out to 1 GB ($K=5120$): 16 MB: 31.87 GB/s (0.53 ms) 128 MB: 34.27 GB/s (3.92 ms) 1024 MB: 38.57 GB/s (27.84 ms) Linear fit: $T(\\text{bytes}) \\approx 0.15\\text{ ms} + \\frac{\\text{bytes}}{38.5\\text{ GB/s}}$. The ~150 µs startup overhead gets amortized as matrix size grows."}, {"post_id": 47977, "ts": "2026-08-16T07:59:35Z", "hours": 11.2086, "text": "Devlog 04: 4-Column Planar Prepacking & First Real AIE Run Standard GGUF interleaves nibbles row-by-row. But AIE2 vector tiles need weights split into 4 independent planar column channels aligned to 64-byte boundaries. Wrote xdna-q4-prepack.cpp to deinterleave GGUF Q4 weights: // 4-Column Planar Deinterleaving for ( size_t col = 0 ; col < 4 ; ++ col ) { uint8_t * dst_col = packed_out + col * col_bytes ; for ( size_t row = 0 ; row < N ; ++ row ) { const uint8_t * src_nibbles = src_weights + row * row_stride + col * ( K / 4 ) / 2 ; deinterleave_and_align64 ( src_nibbles , dst_col + row * 64 , K / 4 ); } } col * (K / 4) : Strips matrix columns across the 4 independent NPU memory tiles. 64-byte alignment : Direct DMA streaming into tile L1 SRAM without unaligned stalls. Inside AIE: aie::unpack converts uint4 to BF16, scales, and computes fused vector MACs. First interactive generation on physical NPU! Cosine similarity against CPU FP32 oracle: 0.9999 ."}, {"post_id": 46963, "ts": "2026-08-14T15:29:37Z", "hours": 13.0922, "text": "Devlog 03: The CPU Baseline (AVX2 / FMA Golden Oracle) Before writing custom AIE kernels, we needed an unyielding golden oracle to check numerical correctness and see how fast the host CPU is. Wrote an unrolled AVX2/FMA Q4_0 vector engine in src/cpu-q4-gemv-engine.cpp : const __m256i raw = _mm256_loadu_si256 ( reinterpret_cast < const __m256i *> ( w_ptr )); const __m256i lo_nibbles = _mm256_and_si256 ( raw , _mm256_set1_epi8 ( 0x0F )); const __m256 w_f32 = _mm256_cvtepi32_ps ( _mm256_sub_epi32 ( lo_nibbles , _mm256_set1_epi32 ( 8 ))); acc = _mm256_fmadd_ps ( _mm256_mul_ps ( w_f32 , scale_vec ), act_vec , acc ); _mm256_and_si256(..., 0x0F) : Masks out the low 4-bit nibbles from 32 packed weights. _mm256_sub_epi32(..., 8) : Subtracts the Q4_0 symmetric offset (8). _mm256_fmadd_ps : Fused multiply-accumulate with FP32 activations in single-cycle throughput. Benchmarked Qwen2.5-0.5B on CPU: 106.5 tok/s (9.38 ms/tok) on 8 threads. Modern Zen 4 AVX2 is blazing fast on small models, so the NPU has a high bar to clear."}, {"post_id": 44511, "ts": "2026-08-10T09:54:07Z", "hours": 8.0289, "text": "Devlog 02: Hardware Smoke Tests & The 14ms Trap why have random shi like gate-1? bcs xdna1 is the worst supported from amd, idk their docs are incomplete im like testing and figuring stuff out Gate 1 milestone: getting real AIE execution contexts spinning via AMD XRT. Initial prototype had a huge bug: we were creating an xrt::hw_context and reloading the .xclbin bitstream inside the operator compute loop. Profiling showed this added ~14 ms of pure driver overhead per tensor dispatch —which murdered performance before we even started doing math. Fixed it by making the context a persistent backend singleton: // Initialize context & load bitstream ONCE at startup device = std :: make_unique < xrt :: device > ( device_index ); xrt :: uuid uuid = device -> register_xclbin ( xclbin_img ); hw_ctx = std :: make_unique < xrt :: hw_context > ( * device , uuid ); xrt :: module mod ( elf_img ); kernel_dpu = std :: make_unique < xrt :: kernel > ( xrt :: ext :: kernel ( * hw_ctx , mod , \"DPU\" )); device->register_xclbin : Flashes the DPU bitstream once into the NPU fabric. hw_ctx : Persistent hardware context reused across all tensor iterations. Dispatch overhead instantly dropped from 14 ms down to ~38 µs."}, {"post_id": 43766, "ts": "2026-08-09T05:55:28Z", "hours": 12.0031, "text": "Devlog 01: Talking to the Silicon (DRM & Phoenix Discovery) So the plan is simple: get GGUF models running straight on the Ryzen AI NPU without touching bloated ONNX or Vitis runtimes. First step was checking if we could even talk to /dev/accel/accel0 directly without root. Wrote a quick probe calling the kernel’s amdxdna DRM driver ioctls: struct amdxdna_drm_get_info info {}; info . param = DRM_AMDXDNA_GET_INFO_TOPOLOGY ; ioctl ( fd , DRM_IOCTL_AMDXDNA_GET_INFO , & info ); DRM_IOCTL_AMDXDNA_GET_INFO : Queries the hardware directly from the kernel. info.param = TOPOLOGY : Confirmed our Phoenix chip has 4 columns × 4 compute rows = 16 AIE2 tiles. Instead of dragging in a 10 GB SDK, we wrote our own include/xdna/amdxdna_uapi.h directly matching the kernel driver structs. Zero bloat, instant builds."}]...
|
Title: xdna.cpp by @satvikhardat | Stardance
Devl Title: xdna.cpp by @satvikhardat | Stardance
Devlogs:
Devlog 01: Talking to the Silicon (DRM & Phoenix Discovery) So the plan is simple: get GGUF models running straight on the Ryzen AI NPU without touching bloated ONNX or Vitis runtimes. First step was checking if we could even talk to /dev/accel/accel0 directly without root. Wrote a quick probe calling the kernel’s amdxdna DRM driver ioctls: struct amdxdna_drm_get_info info {}; info . param = DRM_AMDXDNA_GET_INFO_TOPOLOGY ; ioctl ( fd , DRM_IOCTL_AMDXDNA_GET_INFO , & info ); DRM_IOCTL_AMDXDNA_GET_INFO : Queries the hardware directly from the kernel. info.param = TOPOLOGY : Confirmed our Phoenix chip has 4 columns × 4 compute rows = 16 AIE2 tiles. Instead of dragging in a 10 GB SDK, we wrote our own include/xdna/amdxdna_uapi.h directly matching the kernel driver structs. Zero bloat, instant builds.
Devlog 02: Hardware Smoke Tests & The 14ms Trap why have random shi like gate-1? bcs xdna1 is the worst supported from amd, idk their docs are incomplete im like testing and figuring stuff out Gate 1 milestone: getting real AIE execution contexts spinning via AMD XRT. Initial prototype had a huge bug: we were creating an xrt::hw_context and reloading the .xclbin bitstream inside the operator compute loop. Profiling showed this added ~14 ms of pure driver overhead per tensor dispatch —which murdered performance before we even started doing math. Fixed it by making the context a persistent backend singleton: // Initialize context & load bitstream ONCE at startup device = std :: make_unique < xrt :: device > ( device_index ); xrt :: uuid uuid = device -> register_xclbin ( xclbin_img ); hw_ctx = std :: make_unique < xrt :: hw_context > ( * device , uuid ); xrt :: module mod ( elf_img ); kernel_dpu = std :: make_unique < xrt :: kernel > ( xrt :: ext :: kernel ( * hw_ctx , mod , "DPU" )); device->register_xclbin : Flashes the DPU bitstream once into the NPU fabric. hw_ctx : Persistent hardware context reused across all tensor iterations. Dispatch overhead instantly dropped from 14 ms down to ~38 µs.
Devlog 03: The CPU Baseline (AVX2 / FMA Golden Oracle) Before writing custom AIE kernels, we needed an unyielding golden oracle to check numerical correctness and see how fast the host CPU is. Wrote an unrolled AVX2/FMA Q4_0 vector engine in src/cpu-q4-gemv-engine.cpp : const __m256i raw = _mm256_loadu_si256 ( reinterpret_cast < const __m256i *> ( w_ptr )); const __m256i lo_nibbles = _mm256_and_si256 ( raw , _mm256_set1_epi8 ( 0x0F )); const __m256 w_f32 = _mm256_cvtepi32_ps ( _mm256_sub_epi32 ( lo_nibbles , _mm256_set1_epi32 ( 8 ))); acc = _mm256_fmadd_ps ( _mm256_mul_ps ( w_f32 , scale_vec ), act_vec , acc ); _mm256_and_si256(..., 0x0F) : Masks out the low 4-bit nibbles from 32 packed weights. _mm256_sub_epi32(..., 8) : Subtracts the Q4_0 symmetric offset (8). _mm256_fmadd_ps : Fused multiply-accumulate with FP32 activations in single-cycle throughput. Benchmarked Qwen2.5-0.5B on CPU: 106.5 tok/s (9.38 ms/tok) on 8 threads. Modern Zen 4 AVX2 is blazing fast on small models, so the NPU has a high bar to clear.
Devlog 04: 4-Column Planar Prepacking & First Real AIE Run Standard GGUF interleaves nibbles row-by-row. But AIE2 vector tiles need weights split into 4 independent planar column channels aligned to 64-byte boundaries. Wrote xdna-q4-prepack.cpp to deinterleave GGUF Q4 weights: // 4-Column Planar Deinterleaving for ( size_t col = 0 ; col < 4 ; ++ col ) { uint8_t * dst_col = packed_out + col * col_bytes ; for ( size_t row = 0 ; row < N ; ++ row ) { const uint8_t * src_nibbles = src_weights + row * row_stride + col * ( K / 4 ) / 2 ; deinterleave_and_align64 ( src_nibbles , dst_col + row * 64 , K / 4 ); } } col * (K / 4) : Strips matrix columns across the 4 independent NPU memory tiles. 64-byte alignment : Direct DMA streaming into tile L1 SRAM without unaligned stalls. Inside AIE: aie::unpack converts uint4 to BF16, scales, and computes fused vector MACs. First interactive generation on physical NPU! Cosine similarity against CPU FP32 oracle: 0.9999 .
Devlog 05: Standalone GEMV Ceiling: Sustaining 38.5 GB/s Built tools/bench-aie-gemv-standalone.cpp to measure pure hardware DMA bandwidth without graph scheduler overhead. auto t0 = std :: chrono :: high_resolution_clock :: now (); bo_weights -> sync ( XCL_BO_SYNC_BO_TO_DEVICE ); kernel_run . wait (); auto t1 = std :: chrono :: high_resolution_clock :: now (); double gb_s = ( bytes / ( dt_ns * 1e-9 )) / 1e9 ; sync(TO_DEVICE) : Flushes dirty CPU lines and triggers DMA transport. kernel_run.wait() : Waits for AIE vector compute completion. Tested synthetic matrix sizes out to 1 GB ($K=5120$): 16 MB: 31.87 GB/s (0.53 ms) 128 MB: 34.27 GB/s (3.92 ms) 1024 MB: 38.57 GB/s (27.84 ms) Linear fit: $T(\text{bytes}) \approx 0.15\text{ ms} + \frac{\text{bytes}}{38.5\text{ GB/s}}$. The ~150 µs startup overhead gets amortized as matrix size grows.
Devlog 06 The 27B Disaster & 12.6 GB Unevictable BO Crisis Tried loading Qwen3.8-27B-Q4_0 (15.2 GB). Everything collapsed: token speed plummeted to 0.15 tok/s (6.67 seconds/token) . Ran /proc/meminfo and /proc/vmstat diffs during decode to find the bottleneck: /proc/meminfo during 27B crash: MemTotal: 31,842 MB Unevictable: 12,640 MB <-- 369 persistent XRT BOs locked in RAM! pgmajfault: 520,118 <-- 520k disk page reads PER TOKEN pswpout: 18,400 <-- active swap storm The bug: Allocating persistent xrt::bo objects for all 369 model tensors pinned 12.6 GB into Unevictable kernel memory . The result: On a 32 GB laptop with OS and KV cache, Linux was starved of clean page cache. Every layer forced synchronous swap-outs and major page faults to disk. Persistent BO allocation for large models is fundamentally broken on consumer RAM.
Devlog 07: Bounded 128MB Staging Ring & The 11.5x Recovery Architected the fix for the 27B memory collapse: a bounded double-buffered staging ring in src/xdna-gemv-engine.cpp . // Allocate exactly two 64 MB host-only staging buffers (128 MB total pinned memory) static constexpr size_t STAGING_BO_SIZE = 64 * 1024 * 1024 ; bo_staging [ 0 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); bo_staging [ 1 ] = std :: make_unique < xrt :: bo > ( * device , STAGING_BO_SIZE , xrt :: bo :: flags :: host_only , 0 ); // Double-buffered stream from mmap page cache size_t stage_idx = current_op % 2 ; std :: memcpy ( bo_staging_map [ stage_idx ], mmap_weight_ptr , weight_bytes ); kernel_dpu -> operator ()(..., * bo_staging [ stage_idx ], ...); flags::host_only : Limits pinned kernel memory strictly to $2 \times 64\text{ MB} = \mathbf{128\text{ MB}}$. mmap_weight_ptr : Weights stay in standard page cache ( MAP_SHARED ), freely managed by Linux VM. Result: pgmajfault and swap dropped to 0 . 27B decode speed jumped from 0.15 tok/s to 1.72 tok/s —an 11.5× end-to-end recovery .
Devlog 08 — Aug 31: The Crossover Spectrum & v1.0 Ship Finished multi-model crossover validation across three scales (0.5B, 3B, 27B): // Adaptive Heterogeneous Scheduling if ( N <= 256 ) { // Tiny matrices (<60 KB) run on CPU SIMD to avoid driver dispatch overhead cpu_engine -> run ( weights , weight_bytes , N , K , act , out ); } else { // Medium/Large matrices stream to 16 AIE2 compute tiles xdna_engine -> run ( weights , weight_bytes , N , K , act , out ); } Measured Crossover Scoreboard Qwen2.5-0.5B (403 MB) : CPU favored (106.5 t/s vs 72.6 t/s XDNA hybrid) due to small 60 KB payloads. Qwen2.5-3B (1.86 GB) : XDNA wins decisively: 16.5 tok/s vs 9.8 tok/s CPU (+68.8% / 1.69× speedup) . Qwen3.8-27B (15.2 GB) : XDNA sustains 1.72 tok/s streaming 12.6 GiB smoothly on a 32 GB laptop. Numerical Quality : Verified 100% Top-1 token match across all 3 scales. Shipped v1.0.0 with standalone binaries and clean architecture docs!
Ships:
Run GGUF quantized models directly on AMD XDNA1 NPUs (Ryzen AI 7040 / 8040 series) with llama.cpp its a fork or bettter said plugin of llama.cpp specially made to run models using amd NPUs Using AMD’s hawkpoint NPUs to run LLMs!! its a llama.cpp plugin not a standalone runtime to ensure supporting most models, but it has a few cool kernels targeted at the the xdna1 arch bcs as it turns out, the support for xdna1 NPUs is like really dead everyones like xdna2 yay, but i hv a xdna1 CPU so ima use every bit of it ig lol...
|
1792994012.2205985
|
1793080412.2205985
|
|
70862
|
xbox store mockup by @xm7md | Stardance
|
xm7md
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xbox store mockup by @xm7md | Stardance
|
1792615638.2631288
|
1793220438.2631288
|
|
34120
|
xbox for blinds by @alazarferhan | Stardance
|
alazarferhan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xbox for blinds by @alazarferhan | Stardanc Title: xbox for blinds by @alazarferhan | Stardance...
|
1792536634.622242
|
1793141434.622242
|
|
51744
|
xbox 360 rechargeable battery by @rickmick | Stard xbox 360 rechargeable battery by @rickmick | Stardance...
|
rickmick
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: xbox 360 rechargeable battery by @rickmick Title: xbox 360 rechargeable battery by @rickmick | Stardance...
|
1792680916.6236923
|
1793285716.6236923
|
|
24208
|
xbServerHub by @xb | Stardance
|
xb
|
0
|
7.57
|
0
|
[]
|
[{"post_id": 16473, "ts": "202 [{"post_id": 16473, "ts": "2026-06-26T20:23:23Z", "hours": 3.2156, "text": "Devlog: Real-Time Server Metrics with Glances and SignalR In this update, I added live server monitoring to xbServerHub . The goal was to collect system metrics (CPU, memory, network) from a Glances instance running in Docker, and stream them to the frontend in real time using SignalR — all while keeping the backend organized around Clean Architecture (Domain, Application, Persistence, API). What Was Done 1. Metrics Collection via Glances Glances exposes a REST API with system stats. I added a GlancesClient in the Persistence layer that polls the /cpu , /mem , and /network endpoints in parallel and maps the raw JSON responses into clean domain models ( ServerMetrics , CpuStats , MemoryStats , NetworkInterfaceStats ). A BackgroundService using PeriodicTimer polls Glances every 2 seconds and passes the result to a handler ( CollectSystemMetricsHandler ) in the Application layer, which doesn’t know or care that the data originally came from an HTTP call to Glances — it just receives a ServerMetrics object. 2. Broadcasting Metrics with SignalR To get this data to the frontend without constant polling from the client, I introduced an IMetricsBroadcaster interface in Application. This follows the same pattern as IGlancesClient : Application defines what it needs (a way to send metrics somewhere), without knowing how that’s actually done. The implementation, SignalRMetricsBroadcaster , lives in the API layer and uses a MetricsHub to push data to all connected clients via Clients.All.SendAsync . The handler now calls both the Glances client and the broadcaster on every tick, so every 2 seconds connected clients get a fresh snapshot pushed to them automatically. 3. Securing the Hub and Fixing Auth Routes Since metrics shouldn’t be visible to anyone who isn’t logged in, I added [Authorize] to MetricsHub . Because the app uses cookie-based authentication ( SignInManager ), this works without needing any token handling on the SignalR connection — the existing session cookie is enough, as long as the connection is treated as same-origin. This is also where I cleaned up and reorganized the authentication API routes to make sure they’re consistent with how the frontend (and now SignalR) expects to reach them, and wired up the Hub endpoint ( MapHub ) alongside the rest of the API configuration. Current State The backend now collects CPU, memory, and network stats every 2 seconds and pushes them live to any authenticated, connected client. The frontend isn’t consuming this yet — that’s the next step, along with finalizing the dev proxy setup so cookies and WebSocket connections behave the same in development as they will once frontend and backend are deployed together in a single container."}, {"post_id": 14534, "ts": "2026-06-23T17:56:51Z", "hours": 3.0894, "text": "Devlog: Frontend Login Flow and Session Handling with Cookies In this update, I built the entire frontend authentication flow for xbServerHub in React. The main goals were to handle regular login, two-factor authentication (2FA), and secure session persistence using cookies from the ASP.NET Core Identity backend. What Was Done 1. Project Structure and Clean Components Instead of keeping all the code in one giant file, I split the authentication page into smaller, reusable components: AuthPage.tsx – Manages which form to show. LoginForm.tsx – Handles the initial email and password submission. TwoFactorForm.tsx – Handles the 2FA code verification if required by the backend. 2. React Router and Route Protection I installed react-router-dom and configured the routing for the app: Public route: /auth for logging in. Protected route: /dashboard which can only be accessed by authenticated users. If an unauthenticated user tries to visit it, they are automatically redirected to login. 3. Axios Client and Cookie Sessions Since the ASP.NET backend uses cookie-based authentication, I set up an Axios instance with withCredentials: true . This ensures that the browser automatically stores and sends the session cookie with every single request. 4. Session Persistence (No Logout on Refresh) To fix the issue where refreshing the page logs the user out, I added an initialization check in App.tsx . When the app loads, it sends a quick request to GET user/me . If the server responds with success, the user stays logged in and lands straight on the dashboard. Code Reference: authService.ts Here is the complete service managing the API calls using Axios: import api from \" ./api \" ; import { AxiosError } from \" axios \" ; export interface LoginDto { email : string ; password : string ; } export interface AuthResult { isSuccess : boolean ; message : string ; requiresTwoFactor : boolean ; } export interface LoginWith2FADto { code : string ; rememberDevice : boolean ; } export const loginUser = async ( credentials : LoginDto ): Promise < AuthResult > => { try { const response = await api . post ( \" auth/login \" , credentials ); return response . data as AuthResult ; } catch ( error : unknown ) { let errorMessage = \" An error occurred during login. \" ; if (( error as AxiosError )?. response ?. data ) { errorMessage = ( error as AxiosError ). response ! . data as string ; } return { isSuccess : false , message : errorMessage , requiresTwoFactor : false , }; } } export const loginWith2FA = async ( data : LoginWith2FADto ): Promise < AuthResult > => { try { const response = await api . post ( \" auth/login-with-authenticator \" , data ); return response . data as AuthResult ; } catch ( error : unknown ) { let errorMessage = \" An error occurred during 2FA login. \" ; if (( error as AxiosError )?. response ?. data ) { errorMessage = ( error as AxiosError ). response ! . data as string ; } return { isSuccess : false , message : errorMessage , requiresTwoFactor : false , }; } } export const checkAuthStatus = async (): Promise < boolean > => { try { await api . get ( \" user/me \" ); return true ; } catch { return false ; } } export const logoutUser = async (): Promise < void > => { await api . post ( \" auth/logout \" ); }"}, {"post_id": 14246, "ts": "2026-06-23T08:23:51Z", "hours": 1.2658, "text": "Devlog: Implementing 2FA (TOTP) Authentication in ASP.NET This update focuses on authentication security. The core login flow has been refactored, and full support for Two-Factor Authentication (2FA) using authenticator apps (TOTP) has been implemented. The entire feature has been split into a business logic layer ( AuthService ) and an API layer ( AuthController ) using ASP.NET Core Identity. Architecture and Implementation Details 1. Updated Login Flow The standard login mechanism now detects whether a user has enabled two-factor authentication. If 2FA is active, the API blocks immediate access and returns a response containing RequiresTwoFactor = true , signaling that further verification is required. 2. QR Code Secret Generation To allow users to enable 2FA, the system securely generates a shared secret key and formats it into an industry-standard otpauth:// URI. This URI includes the issuer name ( xbServerHub ) and the user’s email, making it ready to be converted into a QR code on the frontend. 3. Input Sanitization Users often format verification codes with spaces or hyphens. To prevent validation failures due to formatting, the service automatically sanitizes the input string using .Replace(\" \", string.Empty).Replace(\"-\", string.Empty) before passing it to the token provider. 4. Account Management Enforced by Authorization New endpoints have been exposed to allow users to manually enable, verify, and disable their authenticator settings. All management endpoints are protected by the [Authorize] attribute, ensuring that only authenticated users can modify their security preferences. Code Reference: Verification and Activation The following method handles the final verification step. It cleans the user input, validates the token against the ASP.NET Identity token provider, and toggles the TwoFactorEnabled flag on the user record. public async Task < VerifyAuthenticatorResponseDto > VerifyAuthenticatorAsync ( string userId , string code ) { var user = await userManager . FindByIdAsync ( userId ); if ( user is null ) { return new () { IsSuccess = false , Message = \"User not found\" }; } var sanitizedCode = code . Replace ( \" \" , string . Empty ). Replace ( \"-\" , string . Empty ); var isValid = await userManager . VerifyTwoFactorTokenAsync ( user , userManager . Options . Tokens . AuthenticatorTokenProvider , sanitizedCode ); if (! isValid ) { _logger . LogWarning ( \"Invalid authenticator code for user: {UserId}\" , userId ); return new () { IsSuccess = false , Message = \"Invalid authenticator code\" }; } var enableResult = await userManager . SetTwoFactorEnabledAsync ( user , true ); if (! enableResult . Succeeded ) { _logger . LogWarning ( \"Failed to enable 2FA for user {UserId}: {Errors}\" , userId , string . Join ( \", \" , enableResult . Errors . Select ( e => e . Description ))); return new () { IsSuccess = false , Message = \"Failed to enable 2FA\" }; } _logger . LogInformation ( \"2FA enabled successfully for user: {UserId}\" , userId ); return new () { IsSuccess = true , Message = \"2FA enabled successfully\" }; }"}]...
|
Title: xbServerHub by @xb | Stardance
Devlogs:
De Title: xbServerHub by @xb | Stardance
Devlogs:
Devlog: Implementing 2FA (TOTP) Authentication in ASP.NET This update focuses on authentication security. The core login flow has been refactored, and full support for Two-Factor Authentication (2FA) using authenticator apps (TOTP) has been implemented. The entire feature has been split into a business logic layer ( AuthService ) and an API layer ( AuthController ) using ASP.NET Core Identity. Architecture and Implementation Details 1. Updated Login Flow The standard login mechanism now detects whether a user has enabled two-factor authentication. If 2FA is active, the API blocks immediate access and returns a response containing RequiresTwoFactor = true , signaling that further verification is required. 2. QR Code Secret Generation To allow users to enable 2FA, the system securely generates a shared secret key and formats it into an industry-standard otpauth:// URI. This URI includes the issuer name ( xbServerHub ) and the user’s email, making it ready to be converted into a QR code on the frontend. 3. Input Sanitization Users often format verification codes with spaces or hyphens. To prevent validation failures due to formatting, the service automatically sanitizes the input string using .Replace(" ", string.Empty).Replace("-", string.Empty) before passing it to the token provider. 4. Account Management Enforced by Authorization New endpoints have been exposed to allow users to manually enable, verify, and disable their authenticator settings. All management endpoints are protected by the [Authorize] attribute, ensuring that only authenticated users can modify their security preferences. Code Reference: Verification and Activation The following method handles the final verification step. It cleans the user input, validates the token against the ASP.NET Identity token provider, and toggles the TwoFactorEnabled flag on the user record. public async Task < VerifyAuthenticatorResponseDto > VerifyAuthenticatorAsync ( string userId , string code ) { var user = await userManager . FindByIdAsync ( userId ); if ( user is null ) { return new () { IsSuccess = false , Message = "User not found" }; } var sanitizedCode = code . Replace ( " " , string . Empty ). Replace ( "-" , string . Empty ); var isValid = await userManager . VerifyTwoFactorTokenAsync ( user , userManager . Options . Tokens . AuthenticatorTokenProvider , sanitizedCode ); if (! isValid ) { _logger . LogWarning ( "Invalid authenticator code for user: {UserId}" , userId ); return new () { IsSuccess = false , Message = "Invalid authenticator code" }; } var enableResult = await userManager . SetTwoFactorEnabledAsync ( user , true ); if (! enableResult . Succeeded ) { _logger . LogWarning ( "Failed to enable 2FA for user {UserId}: {Errors}" , userId , string . Join ( ", " , enableResult . Errors . Select ( e => e . Description ))); return new () { IsSuccess = false , Message = "Failed to enable 2FA" }; } _logger . LogInformation ( "2FA enabled successfully for user: {UserId}" , userId ); return new () { IsSuccess = true , Message = "2FA enabled successfully" }; }
Devlog: Frontend Login Flow and Session Handling with Cookies In this update, I built the entire frontend authentication flow for xbServerHub in React. The main goals were to handle regular login, two-factor authentication (2FA), and secure session persistence using cookies from the ASP.NET Core Identity backend. What Was Done 1. Project Structure and Clean Components Instead of keeping all the code in one giant file, I split the authentication page into smaller, reusable components: AuthPage.tsx – Manages which form to show. LoginForm.tsx – Handles the initial email and password submission. TwoFactorForm.tsx – Handles the 2FA code verification if required by the backend. 2. React Router and Route Protection I installed react-router-dom and configured the routing for the app: Public route: /auth for logging in. Protected route: /dashboard which can only be accessed by authenticated users. If an unauthenticated user tries to visit it, they are automatically redirected to login. 3. Axios Client and Cookie Sessions Since the ASP.NET backend uses cookie-based authentication, I set up an Axios instance with withCredentials: true . This ensures that the browser automatically stores and sends the session cookie with every single request. 4. Session Persistence (No Logout on Refresh) To fix the issue where refreshing the page logs the user out, I added an initialization check in App.tsx . When the app loads, it sends a quick request to GET user/me . If the server responds with success, the user stays logged in and lands straight on the dashboard. Code Reference: authService.ts Here is the complete service managing the API calls using Axios: import api from " ./api " ; import { AxiosError } from " axios " ; export interface LoginDto { email : string ; password : string ; } export interface AuthResult { isSuccess : boolean ; message : string ; requiresTwoFactor : boolean ; } export interface LoginWith2FADto { code : string ; rememberDevice : boolean ; } export const loginUser = async ( credentials : LoginDto ): Promise < AuthResult > => { try { const response = await api . post ( " auth/login " , credentials ); return response . data as AuthResult ; } catch ( error : unknown ) { let errorMessage = " An error occurred during login. " ; if (( error as AxiosError )?. response ?. data ) { errorMessage = ( error as AxiosError ). response ! . data as string ; } return { isSuccess : false , message : errorMessage , requiresTwoFactor : false , }; } } export const loginWith2FA = async ( data : LoginWith2FADto ): Promise < AuthResult > => { try { const response = await api . post ( " auth/login-with-authenticator " , data ); return response . data as AuthResult ; } catch ( error : unknown ) { let errorMessage = " An error occurred during 2FA login. " ; if (( error as AxiosError )?. response ?. data ) { errorMessage = ( error as AxiosError ). response ! . data as string ; } return { isSuccess : false , message : errorMessage , requiresTwoFactor : false , }; } } export const checkAuthStatus = async (): Promise < boolean > => { try { await api . get ( " user/me " ); return true ; } catch { return false ; } } export const logoutUser = async (): Promise < void > => { await api . post ( " auth/logout " ); }
Devlog: Real-Time Server Metrics with Glances and SignalR In this update, I added live server monitoring to xbServerHub . The goal was to collect system metrics (CPU, memory, network) from a Glances instance running in Docker, and stream them to the frontend in real time using SignalR — all while keeping the backend organized around Clean Architecture (Domain, Application, Persistence, API). What Was Done 1. Metrics Collection via Glances Glances exposes a REST API with system stats. I added a GlancesClient in the Persistence layer that polls the /cpu , /mem , and /network endpoints in parallel and maps the raw JSON responses into clean domain models ( ServerMetrics , CpuStats , MemoryStats , NetworkInterfaceStats ). A BackgroundService using PeriodicTimer polls Glances every 2 seconds and passes the result to a handler ( CollectSystemMetricsHandler ) in the Application layer, which doesn’t know or care that the data originally came from an HTTP call to Glances — it just receives a ServerMetrics object. 2. Broadcasting Metrics with SignalR To get this data to the frontend without constant polling from the client, I introduced an IMetricsBroadcaster interface in Application. This follows the same pattern as IGlancesClient : Application defines what it needs (a way to send metrics somewhere), without knowing how that’s actually done. The implementation, SignalRMetricsBroadcaster , lives in the API layer and uses a MetricsHub to push data to all connected clients via Clients.All.SendAsync . The handler now calls both the Glances client and the broadcaster on every tick, so every 2 seconds connected clients get a fresh snapshot pushed to them automatically. 3. Securing the Hub and Fixing Auth Routes Since metrics shouldn’t be visible to anyone who isn’t logged in, I added [Authorize] to MetricsHub . Because the app uses cookie-based authentication ( SignInManager ), this works without needing any token handling on the SignalR connection — the existing session cookie is enough, as long as the connection is treated as same-origin. This is also where I cleaned up and reorganized the authentication API routes to make sure they’re consistent with how the frontend (and now SignalR) expects to reach them, and wired up the Hub endpoint ( MapHub ) alongside the rest of the API configuration. Current State The backend now collects CPU, memory, and network stats every 2 seconds and pushes them live to any authenticated, connected client. The frontend isn’t consuming this yet — that’s the next step, along with finalizing the dev proxy setup so cookies and WebSocket connections behave the same in development as they will once frontend and backend are deployed together in a single container....
|
1792806824.6704295
|
1793411624.6704295
|