|
6585
|
My awesome macropad! by @kevinisslashed | Stardanc My awesome macropad! by @kevinisslashed | Stardance...
|
kevinisslashed
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @kevinisslashed | S Title: My awesome macropad! by @kevinisslashed | Stardance...
|
1793411817.5407944
|
1794016617.5407944
|
|
6586
|
Untitled by @Noki | Stardance
|
Noki
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Noki | Stardance
|
1793288910.7701516
|
1793893710.7701516
|
|
6587
|
A Book tracker web app by @sofiya_ | Stardance
|
sofiya_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A Book tracker web app by @sofiya_ | Starda Title: A Book tracker web app by @sofiya_ | Stardance...
|
1792759847.5645072
|
1793364647.5645072
|
|
6589
|
Untitled project by @Tharul_DHA_GOAT | Stardance
|
Tharul_DHA_GOAT
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Tharul_DHA_GOAT | Star Title: Untitled project by @Tharul_DHA_GOAT | Stardance...
|
1793324892.7869089
|
1793929692.7869089
|
|
6591
|
My first slack bot! by @Tharul_DHA_GOAT | Stardanc My first slack bot! by @Tharul_DHA_GOAT | Stardance...
|
Tharul_DHA_GOAT
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Tharul_DHA_GOAT | S Title: My first slack bot! by @Tharul_DHA_GOAT | Stardance...
|
1793181261.346672
|
1793786061.346672
|
|
6592
|
AlgoPath by @CircularBlox | Stardance
|
CircularBlox
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: AlgoPath by @CircularBlox | Stardance
|
1793271224.910605
|
1793876024.910605
|
|
6593
|
Duck-terminal by @Astro-Duck | Stardance
|
Astro-Duck
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Duck-terminal by @Astro-Duck | Stardance
|
1792950503.3752065
|
1793814503.3752065
|
|
6594
|
My first slack bot! by @miki_ | Stardance
|
miki_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @miki_ | Stardance
|
1793447670.905585
|
1794052470.905585
|
|
6595
|
Jurassic world simulation game by @Pranav_A | Star Jurassic world simulation game by @Pranav_A | Stardance...
|
Pranav_A
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Jurassic world simulation game by @Pranav_A Title: Jurassic world simulation game by @Pranav_A | Stardance...
|
1793227714.4182985
|
1793832514.4182985
|
|
6596
|
Rewind Rewind by @Macho | Stardance
|
Macho
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Rewind Rewind by @Macho | Stardance
|
1793253122.3443317
|
1793857922.3443317
|
|
6597
|
Project ASCEND by @haidenwery | Stardance
|
haidenwery
|
0
|
9.82
|
0
|
[]
|
[{"post_id": 8895, "ts": "2026 [{"post_id": 8895, "ts": "2026-06-14T20:11:26Z", "hours": 6.2256, "text": "After working a lot on the old Hackpad, I was unsatisfied with how it was turning out and realized it was too simple of a macro pad. I have pivoted my original Hackpad into something different. I started to design the Hackpad into my new idea using Figma and now I have to restart my PCB schematic to better fit the layout. It will have one rotary control, one OLED screen, and 12 keys."}, {"post_id": 5342, "ts": "2026-06-09T02:28:36Z", "hours": 2.2644, "text": "I have completed the schematic of the Hackpad. I am now making sure there are no errors before I continue onto the next steps."}, {"post_id": 5148, "ts": "2026-06-08T20:44:03Z", "hours": 1.3281, "text": "I have started on one of the missions available: Hackpad. I spent the first hour learning the basics of KiCad."}]...
|
Title: Project ASCEND by @haidenwery | Stardance
Title: Project ASCEND by @haidenwery | Stardance
Devlogs:
I have started on one of the missions available: Hackpad. I spent the first hour learning the basics of KiCad.
I have completed the schematic of the Hackpad. I am now making sure there are no errors before I continue onto the next steps.
After working a lot on the old Hackpad, I was unsatisfied with how it was turning out and realized it was too simple of a macro pad. I have pivoted my original Hackpad into something different. I started to design the Hackpad into my new idea using Figma and now I have to restart my PCB schematic to better fit the layout. It will have one rotary control, one OLED screen, and 12 keys....
|
1792792111.9917445
|
1793396911.9917445
|
|
6599
|
Vocal Willow by @RishuKamboj | Stardance
|
RishuKamboj
|
0
|
8.75
|
0
|
[]
|
[{"post_id": 14571, "ts": "202 [{"post_id": 14571, "ts": "2026-06-23T18:56:52Z", "hours": 0.2539, "text": "been busy for the past two days, gonna get active again from today. anyways i printed the new case and it fitted fine.Now i need to figure out a way to cancel out the ground data so that it only detects ball impact."}, {"post_id": 13235, "ts": "2026-06-21T17:50:20Z", "hours": 2.1286, "text": "Made Changes in the case to fit 18650 li ion batteries and tuned the code so that it accurately detects hit/miss (doesnot show in between like weak shot or edge etc)"}, {"post_id": 11376, "ts": "2026-06-18T16:49:58Z", "hours": 0.5703, "text": "so today will supposedly stress testing the v2 i kept it on idle for 20 mins and it blacked out after that so i immediately unplugged everything and i tried charging the battery using tp4-56 module but it also got very hot so i removed all the battery wires and turns out the tp4056 module was fried because of overdischarge (i was using 3.7 v lipo battery with v2 instead of 3.7 li ion 18650 in the v1). After some diagnostics i found out that it occurred because of thermal problems so for now i have to redesign the case to fit a 18650 because it is more reliable. Also added some zipties"}, {"post_id": 10501, "ts": "2026-06-17T07:49:12Z", "hours": 4.3306, "text": "What have i been upto? I finished with the V1 3 days ago although i didnt record it, it was very bulky because of the expansion board and 18650 batteries so i set onto making the v2 much smaller and less bulky which meant removing the expansion board and using a much smaller battery. also in V1 i used the buck converter for 7v to 5v but this time in v2 i used a single 3.7v lipo battery and boosted it to 5v to save space. the code data is still very inaccurate ill be working on it soon. I also posted a lapse of me redesigning the v2 case because i forgot to add a hole to easily update the code without taking the whole thing apart everytime."}, {"post_id": 6931, "ts": "2026-06-11T16:49:49Z", "hours": 1.4689, "text": "Today i started working on the V1 of my sports for blind people project, with some help from claude for figuring out how to turn the data from the sensors to useful information which will be shown at a local website for now (will write an android app and ios app for it later). V1 is supposed to be the testing phase in which ill focus on perfecting the data and accuracy ignoring the bulkiness of the project for now."}]...
|
Title: Vocal Willow by @RishuKamboj | Stardance
D Title: Vocal Willow by @RishuKamboj | Stardance
Devlogs:
Today i started working on the V1 of my sports for blind people project, with some help from claude for figuring out how to turn the data from the sensors to useful information which will be shown at a local website for now (will write an android app and ios app for it later). V1 is supposed to be the testing phase in which ill focus on perfecting the data and accuracy ignoring the bulkiness of the project for now.
What have i been upto? I finished with the V1 3 days ago although i didnt record it, it was very bulky because of the expansion board and 18650 batteries so i set onto making the v2 much smaller and less bulky which meant removing the expansion board and using a much smaller battery. also in V1 i used the buck converter for 7v to 5v but this time in v2 i used a single 3.7v lipo battery and boosted it to 5v to save space. the code data is still very inaccurate ill be working on it soon. I also posted a lapse of me redesigning the v2 case because i forgot to add a hole to easily update the code without taking the whole thing apart everytime.
so today will supposedly stress testing the v2 i kept it on idle for 20 mins and it blacked out after that so i immediately unplugged everything and i tried charging the battery using tp4-56 module but it also got very hot so i removed all the battery wires and turns out the tp4056 module was fried because of overdischarge (i was using 3.7 v lipo battery with v2 instead of 3.7 li ion 18650 in the v1). After some diagnostics i found out that it occurred because of thermal problems so for now i have to redesign the case to fit a 18650 because it is more reliable. Also added some zipties
Made Changes in the case to fit 18650 li ion batteries and tuned the code so that it accurately detects hit/miss (doesnot show in between like weak shot or edge etc)
been busy for the past two days, gonna get active again from today. anyways i printed the new case and it fitted fine.Now i need to figure out a way to cancel out the ground data so that it only detects ball impact....
|
1793159717.8549826
|
1793764517.8549826
|
|
6602
|
Untitled by @Knox | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @Knox | Stardance
|
1792749052.2607346
|
1793353852.2607346
|
|
6603
|
Personal website by @axyprism | Stardance
|
axyprism
|
0
|
2.61
|
0
|
[]
|
[{"post_id": 2502, "ts": "2026 [{"post_id": 2502, "ts": "2026-06-05T01:03:18Z", "hours": 2.6075, "text": "Basic UI + interaction set up"}]...
|
Title: Personal website by @axyprism | Stardance
Title: Personal website by @axyprism | Stardance
Devlogs:
Basic UI + interaction set up...
|
1793235222.054537
|
1793840022.054537
|
|
6605
|
My first slack bot! by @Beef | Stardance
|
Beef
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Beef | Stardance
|
1793188412.9678001
|
1793793212.9678001
|
|
6606
|
My awesome macropad! by @sadotterz | Stardance
|
sadotterz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @sadotterz | Starda Title: My awesome macropad! by @sadotterz | Stardance...
|
1792745522.374006
|
1793350322.374006
|
|
6607
|
Cool rendering by @kuba_ch101 | Stardance
|
kuba_ch101
|
0
|
13.68
|
0
|
[]
|
[{"post_id": 5613, "ts": "2026 [{"post_id": 5613, "ts": "2026-06-09T14:05:51Z", "hours": 5.0364, "text": "I havent posted any devlogs lately since my account had an issue with time sync. Now I am back, here are the features that i added: -Improved rendering pipeline -Made a foundation for the final project -Added basic shading -Tested the transformation It finaly starts to look like something:"}, {"post_id": 2696, "ts": "2026-06-05T12:06:36Z", "hours": 1.9781, "text": "I made a function that draws sphere in OpenGL, It took me a lot of calculations. I added a shader from the internet, it looks terrible, but i leats i know that the sphere is ok:"}, {"post_id": 2327, "ts": "2026-06-04T19:18:48Z", "hours": 3.0333, "text": "I made a function that draws circles in OpenGL, now i will work on making spheres."}, {"post_id": 2015, "ts": "2026-06-04T09:17:21Z", "hours": 0.8719, "text": "I learned how to use index buffer"}, {"post_id": 1597, "ts": "2026-06-03T18:35:24Z", "hours": 2.7642, "text": "Learned the basics of openGL"}]...
|
Title: Cool rendering by @kuba_ch101 | Stardance
Title: Cool rendering by @kuba_ch101 | Stardance
Devlogs:
Learned the basics of openGL
I learned how to use index buffer
I made a function that draws circles in OpenGL, now i will work on making spheres.
I made a function that draws sphere in OpenGL, It took me a lot of calculations. I added a shader from the internet, it looks terrible, but i leats i know that the sphere is ok:
I havent posted any devlogs lately since my account had an issue with time sync. Now I am back, here are the features that i added: -Improved rendering pipeline -Made a foundation for the final project -Added basic shading -Tested the transformation It finaly starts to look like something:...
|
1793433183.3411546
|
1794037983.3411546
|
|
6608
|
My first slack bot! by @Macho | Stardance
|
Macho
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Macho | Stardance
|
1793353751.1336393
|
1793958551.1336393
|
|
6609
|
My first slack bot! by @Zsombi25 | Stardance
|
Zsombi25
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Zsombi25 | Stardanc Title: My first slack bot! by @Zsombi25 | Stardance...
|
1792806804.9023185
|
1793411604.9023185
|
|
6610
|
My awesome macropad! by @lakshyasarnaik | Stardanc My awesome macropad! by @lakshyasarnaik | Stardance...
|
lakshyasarnaik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @lakshyasarnaik | S Title: My awesome macropad! by @lakshyasarnaik | Stardance...
|
1793458102.9479873
|
1794062902.9479873
|
|
6611
|
Woodshop Warfare by @Sentient_Cranberry | Stardanc Woodshop Warfare by @Sentient_Cranberry | Stardance...
|
Sentient_Cranberry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Woodshop Warfare by @Sentient_Cranberry | S Title: Woodshop Warfare by @Sentient_Cranberry | Stardance...
|
1793289378.1902964
|
1793894178.1902964
|
|
6612
|
My awesome macropad! by @Cucumbrs | Stardance
|
Cucumbrs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Cucumbrs | Stardan Title: My awesome macropad! by @Cucumbrs | Stardance...
|
1792774255.7575324
|
1793379055.7575324
|
|
6613
|
My first slack bot! by @Arnav123 | Stardance
|
Arnav123
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Arnav123 | Stardanc Title: My first slack bot! by @Arnav123 | Stardance...
|
1793263837.696341
|
1793868637.696341
|
|
6614
|
Untitled by @lakshyasarnaik | Stardance
|
lakshyasarnaik
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @lakshyasarnaik | Stardance
|
1793462047.2689075
|
1794066847.2689075
|
|
6615
|
My awesome macropad! by @Casper | Stardance
|
Casper
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Casper | Stardance
|
1793285753.31243
|
1793890553.31243
|
|
6616
|
Untitled by @bob_the_builder | Stardance
|
bob_the_builder
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @bob_the_builder | Stardance
|
1793303793.1133523
|
1793908593.1133523
|
|
6617
|
Untitled project by @auracle | Stardance
|
auracle
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @auracle | Stardance
|
1793436800.5911179
|
1794041600.5911179
|
|
6618
|
(Definitely) Just some ducks by @Astro-Duck | Star (Definitely) Just some ducks by @Astro-Duck | Stardance...
|
Astro-Duck
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: (Definitely) Just some ducks by @Astro-Duck Title: (Definitely) Just some ducks by @Astro-Duck | Stardance...
|
1793371948.8806825
|
1793976748.8806825
|
|
6619
|
OpenApollo GUI by @ReTTr0c | Stardance
|
ReTTr0c
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: OpenApollo GUI by @ReTTr0c | Stardance
|
1793220695.4194012
|
1793825495.4194012
|
|
6620
|
My awesome macropad! by @matthew_MOSI | Stardance
|
matthew_MOSI
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @matthew_MOSI | Sta Title: My awesome macropad! by @matthew_MOSI | Stardance...
|
1793379346.050721
|
1793984146.050721
|
|
6621
|
SineWave Engine by @ReTTr0c | Stardance
|
ReTTr0c
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SineWave Engine by @ReTTr0c | Stardance
|
1792911014.086677
|
1793775014.086677
|
|
6622
|
My awesome macropad! by @liltimamle | Stardance
|
liltimamle
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @liltimamle | Stard Title: My awesome macropad! by @liltimamle | Stardance...
|
1793426034.144856
|
1794030834.144856
|
|
6623
|
Untitled by @WestonPetersen | Stardance
|
WestonPetersen
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @WestonPetersen | Stardance
|
1793235061.8445435
|
1793839861.8445435
|
|
6624
|
RootDash by @Henry | Stardance
|
Henry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: RootDash by @Henry | Stardance
|
1793181363.7307076
|
1793786163.7307076
|
|
6625
|
CognSpark by @Allen | Stardance
|
Allen
|
0
|
1.0
|
0
|
[]
|
[{"post_id": 3696, "ts": "2026 [{"post_id": 3696, "ts": "2026-06-06T19:02:25Z", "hours": 1.0, "text": "I am working on making the UI better and making the home page and hero section stand out more."}]...
|
Title: CognSpark by @Allen | Stardance
Devlogs:
I Title: CognSpark by @Allen | Stardance
Devlogs:
I am working on making the UI better and making the home page and hero section stand out more....
|
1792907691.7636664
|
1793771691.7636664
|
|
6626
|
My awesome macropad! by @fongeazem | Stardance
|
fongeazem
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @fongeazem | Starda Title: My awesome macropad! by @fongeazem | Stardance...
|
1793224579.7081153
|
1793829379.7081153
|
|
6627
|
Devault by @jasq1234 | Stardance
|
jasq1234
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Devault by @jasq1234 | Stardance
|
1793173813.6267805
|
1793778613.6267805
|
|
6628
|
My awesome macropad! by @extend | Stardance
|
extend
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @extend | Stardance
|
1793317716.8022647
|
1793922516.8022647
|
|
6629
|
Devault by @jan_zdan1234 | Stardance
|
jan_zdan1234
|
0
|
39.0
|
0
|
[]
|
[{"post_id": 62358, "ts": "202 [{"post_id": 62358, "ts": "2026-09-05T18:01:38Z", "hours": 5.6394, "text": "Spent most of the time on the GitHub side of ingestion-service. Went with GraphQL instead of REST, mainly to actually learn something new — turned out to have its own quirks (no file diffs available, rate limiting works completely differently, cursor-based pagination instead of the usual page numbers). Built the GitHub client with three methods for commits, PRs, and issues, all going through one GraphQL endpoint. Tested it live against a few real repos, including our own Devault repo, and it’s working correctly along with pagination and rate limit tracking. Sorted out secure token storage too - separate table for credentials, encrypted with AES-GCM, and nothing else in the codebase touches the raw token except one dedicated service. Also added a check so nobody can use someone else’s token, which wasn’t there at first and was a real gap I almost shipped. Backfill is working now - runs async on virtual threads, loops through pagination for each resource type, saves to the DB with idempotency so restarts don’t duplicate anything. Source status goes PENDING -> SYNCING -> ACTIVE/ERROR depending on how it goes. Last thing I got done was the service and controller for creating sources. Still need to test the whole flow end to end through the API, add the workspace role check I skipped for now."}, {"post_id": 34206, "ts": "2026-07-24T18:40:39Z", "hours": 1.1872, "text": "Spent today setting up the ingestion-service module. Decided to go with personal access tokens for GitHub auth instead of building a full GitHub App, way less setup for now and honestly the app registration stuff isn’t worth it yet. Got the module skeleton wired up too. Hit a dumb Gradle error where IntelliJ kept saying it couldn’t find a Kotlin task in the module, turned out I accidentally put an include() call inside the module’s build.gradle.kts instead of settings.gradle.kts. Classic copy paste mistake. Fixed it and the sync worked fine after that. Also poked at the JWKS endpoint path stuff on auth-service, decided to keep it out of the api/v1 prefix by using RequestMapping per controller instead of a global context path, since jwks is supposed to live at the root per spec anyway. Next up is actually building the GitHub client and the data model for ingestion sources."}, {"post_id": 33486, "ts": "2026-07-23T13:58:37Z", "hours": 1.8556, "text": "Fixed most of the bugs from the code review today. Sorted out exception handling in common-lib, fixed a race condition when adding a member to a workspace, got the JWKS key cache working properly, plus a few smaller things along the way. Had some pain with kids in the tokens, but ended up leaving it in a simpler version since it doesn’t really matter without key rotation anyway. Next up is ingestion-service. Starting with GitHub, using a personal access token for now instead of jumping straight into GitHub App territory. Backfill first, then webhooks, we’ll see how it goes."}, {"post_id": 27688, "ts": "2026-07-13T14:01:42Z", "hours": 2.6669, "text": "Wrapped up MockK unit tests for auth-service-lib - JwtClaimsService, JwtAuthenticationProvider, and JwtAuthenticationFilter are now fully covered. Burned a good chunk of time on one annoying issue with relaxed = true on the HttpServletRequest mock - OncePerRequestFilter internally checks getAttribute/getDispatcherType before even reaching the actual filter logic, and the relaxed mock was returning non-null instead of null, so tests were passing for entirely the wrong reason. Lesson learned: when mocking Servlet API, better to explicitly stub those two calls in @BeforeEach instead of relying on relaxed. Code review also turned up a real security gap in validate() - a token with no exp claim was passing validation as effectively non-expiring, since JJWT only throws ExpiredJwtException when exp is present and past, not when it’s missing entirely. Fix incoming. Holding off on MVC/@WebMvcTest for the controllers for now - fixing a handful of code review items first (the missing exp check, plus making exception handling consistent in extractExpiration), then back to controller tests and GlobalExceptionHandler."}, {"post_id": 20031, "ts": "2026-07-01T15:11:59Z", "hours": 2.2333, "text": "I finished auth-service tests now I’m working on auth-lib. One test that failed is spring conected because I didn’t provide on local good configuration that is why it failed but in docker it works perfectly."}, {"post_id": 17900, "ts": "2026-06-28T20:44:43Z", "hours": 5.8931, "text": "I’ve written some tests, but haven’t finished yet. So far I’ve covered services with business logic in workspace-service, and I’m currently working on auth-service. After that, I’m planning to add some MVC tests for controllers and exception handlers, and finally write tests for my shared libraries: auth-service-lib and common-lib."}, {"post_id": 13758, "ts": "2026-06-22T15:31:14Z", "hours": 5.3156, "text": "Just wrapped up workspace-service. As always, had some trouble on the auth side — needed to fix a handful of bugs that came up during code review (a couple of nasty ones: deleteWorkspace was silently broken due to an FK constraint, and transferOwnership wasn’t updating Workspace.ownerId, which could’ve permanently locked workspaces). Also caught a regression in the JWT filter that was blocking even permitAll routes like login/refresh — fixed now. Along the way I also pulled the ApiResponse wrapper and exception handling into a shared common-lib module, so both auth-service and workspace-service now return a consistent response format. I might revisit a few design choices here later for my own convenience, but for now the service is functionally complete — workspace CRUD, member management, role changes, and ownership transfer all working with proper error handling. Starting on tests next, then moving on to ingestion-service."}, {"post_id": 10887, "ts": "2026-06-17T20:54:30Z", "hours": 4.8578, "text": "I have finished basics in workspace-service like some CRUD controllers basic services and repositories with dtos now I’m testing everything in insomnia. I also had some troubles with auth, it was a nightmare to find a bug (i was hardcoding jwt issuer). I added in my screenshot content from testing in insomnia"}, {"post_id": 8667, "ts": "2026-06-14T12:18:27Z", "hours": 0.8042, "text": "I fixed up auth-service-lib before jumping into workspace-service. I added AuthenticatedUser so other services can just use @AuthenticationPrincipal instead of digging through SecurityContext manually. also fixed some stuff in JwtTokenCandidate that was technically wrong but worked anyway lol"}, {"post_id": 8299, "ts": "2026-06-13T19:55:45Z", "hours": 4.5347, "text": "I made auth-service-lib today, basically a shared lib so i dont have to copy paste the same jwt verification code into every new microservice. workspace-service, query-service etc. I will just import it and get the filter + claims extraction for free. Had a weird issue where JwksClient was trying to fetch the public key from auth-service before it even started, took me a bit to figure out but I fixed it."}, {"post_id": 4381, "ts": "2026-06-07T18:15:39Z", "hours": 1.5217, "text": "I added JWT auth with Ed25519 signing. Now login returns access + refresh token pair, refresh rotates tokens, logout blacklists the refresh token in Redis. JWKS endpoint exposed at /.well-known/jwks.json for other services to verify tokens."}, {"post_id": 2368, "ts": "2026-06-04T20:29:25Z", "hours": 2.4933, "text": "i was working on my auth-service. I changed from basic auth with bearer tokens to access and refresh tokens. Also I added endpoint to refresh tokens when they expire and logout endpoint."}]...
|
Title: Devault by @jan_zdan1234 | Stardance
Devlo Title: Devault by @jan_zdan1234 | Stardance
Devlogs:
i was working on my auth-service. I changed from basic auth with bearer tokens to access and refresh tokens. Also I added endpoint to refresh tokens when they expire and logout endpoint.
I added JWT auth with Ed25519 signing. Now login returns access + refresh token pair, refresh rotates tokens, logout blacklists the refresh token in Redis. JWKS endpoint exposed at /.well-known/jwks.json for other services to verify tokens.
I made auth-service-lib today, basically a shared lib so i dont have to copy paste the same jwt verification code into every new microservice. workspace-service, query-service etc. I will just import it and get the filter + claims extraction for free. Had a weird issue where JwksClient was trying to fetch the public key from auth-service before it even started, took me a bit to figure out but I fixed it.
I fixed up auth-service-lib before jumping into workspace-service. I added AuthenticatedUser so other services can just use @AuthenticationPrincipal instead of digging through SecurityContext manually. also fixed some stuff in JwtTokenCandidate that was technically wrong but worked anyway lol
I have finished basics in workspace-service like some CRUD controllers basic services and repositories with dtos now I’m testing everything in insomnia. I also had some troubles with auth, it was a nightmare to find a bug (i was hardcoding jwt issuer). I added in my screenshot content from testing in insomnia
Just wrapped up workspace-service. As always, had some trouble on the auth side — needed to fix a handful of bugs that came up during code review (a couple of nasty ones: deleteWorkspace was silently broken due to an FK constraint, and transferOwnership wasn’t updating Workspace.ownerId, which could’ve permanently locked workspaces). Also caught a regression in the JWT filter that was blocking even permitAll routes like login/refresh — fixed now. Along the way I also pulled the ApiResponse wrapper and exception handling into a shared common-lib module, so both auth-service and workspace-service now return a consistent response format. I might revisit a few design choices here later for my own convenience, but for now the service is functionally complete — workspace CRUD, member management, role changes, and ownership transfer all working with proper error handling. Starting on tests next, then moving on to ingestion-service.
I’ve written some tests, but haven’t finished yet. So far I’ve covered services with business logic in workspace-service, and I’m currently working on auth-service. After that, I’m planning to add some MVC tests for controllers and exception handlers, and finally write tests for my shared libraries: auth-service-lib and common-lib.
I finished auth-service tests now I’m working on auth-lib. One test that failed is spring conected because I didn’t provide on local good configuration that is why it failed but in docker it works perfectly.
Wrapped up MockK unit tests for auth-service-lib - JwtClaimsService, JwtAuthenticationProvider, and JwtAuthenticationFilter are now fully covered. Burned a good chunk of time on one annoying issue with relaxed = true on the HttpServletRequest mock - OncePerRequestFilter internally checks getAttribute/getDispatcherType before even reaching the actual filter logic, and the relaxed mock was returning non-null instead of null, so tests were passing for entirely the wrong reason. Lesson learned: when mocking Servlet API, better to explicitly stub those two calls in @BeforeEach instead of relying on relaxed. Code review also turned up a real security gap in validate() - a token with no exp claim was passing validation as effectively non-expiring, since JJWT only throws ExpiredJwtException when exp is present and past, not when it’s missing entirely. Fix incoming. Holding off on MVC/@WebMvcTest for the controllers for now - fixing a handful of code review items first (the missing exp check, plus making exception handling consistent in extractExpiration), then back to controller tests and GlobalExceptionHandler.
Fixed most of the bugs from the code review today. Sorted out exception handling in common-lib, fixed a race condition when adding a member to a workspace, got the JWKS key cache working properly, plus a few smaller things along the way. Had some pain with kids in the tokens, but ended up leaving it in a simpler version since it doesn’t really matter without key rotation anyway. Next up is ingestion-service. Starting with GitHub, using a personal access token for now instead of jumping straight into GitHub App territory. Backfill first, then webhooks, we’ll see how it goes.
Spent today setting up the ingestion-service module. Decided to go with personal access tokens for GitHub auth instead of building a full GitHub App, way less setup for now and honestly the app registration stuff isn’t worth it yet. Got the module skeleton wired up too. Hit a dumb Gradle error where IntelliJ kept saying it couldn’t find a Kotlin task in the module, turned out I accidentally put an include() call inside the module’s build.gradle.kts instead of settings.gradle.kts. Classic copy paste mistake. Fixed it and the sync worked fine after that. Also poked at the JWKS endpoint path stuff on auth-service, decided to keep it out of the api/v1 prefix by using RequestMapping per controller instead of a global context path, since jwks is supposed to live at the root per spec anyway. Next up is actually building the GitHub client and the data model for ingestion sources.
Spent most of the time on the GitHub side of ingestion-service. Went with GraphQL instead of REST, mainly to actually learn something new — turned out to have its own quirks (no file diffs available, rate limiting works completely differently, cursor-based pagination instead of the usual page numbers). Built the GitHub client with three methods for commits, PRs, and issues, all going through one GraphQL endpoint. Tested it live against a few real repos, including our own Devault repo, and it’s working correctly along with pagination and rate limit tracking. Sorted out secure token storage too - separate table for credentials, encrypted with AES-GCM, and nothing else in the codebase touches the raw token except one dedicated service. Also added a check so nobody can use someone else’s token, which wasn’t there at first and was a real gap I almost shipped. Backfill is working now - runs async on virtual threads, loops through pagination for each resource type, saves to the DB with idempotency so restarts don’t duplicate anything. Source status goes PENDING -> SYNCING -> ACTIVE/ERROR depending on how it goes. Last thing I got done was the service and controller for creating sources. Still need to test the whole flow end to end through the API, add the workspace role check I skipped for now....
|
1793404059.786825
|
1794008859.786825
|
|
6630
|
My first slack bot! by @3DPrinterPro | Stardance
|
3DPrinterPro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @3DPrinterPro | Star Title: My first slack bot! by @3DPrinterPro | Stardance...
|
1793444192.414125
|
1794048992.414125
|
|
6631
|
My first slack bot! by @3DPrinterPro | Stardance
|
3DPrinterPro
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @3DPrinterPro | Star Title: My first slack bot! by @3DPrinterPro | Stardance...
|
1793174019.4216924
|
1793778819.4216924
|
|
6632
|
My awesome macropad! by @ADELGADO | Stardance
|
ADELGADO
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ADELGADO | Stardan Title: My awesome macropad! by @ADELGADO | Stardance...
|
1793393451.8398554
|
1793998251.8398554
|
|
6633
|
Untitled project by @TheBreadMuncher | Stardance
|
TheBreadMuncher
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @TheBreadMuncher | Star Title: Untitled project by @TheBreadMuncher | Stardance...
|
1793382597.4485936
|
1793987397.4485936
|
|
6634
|
EcoShield Command by @ialex | Stardance
|
ialex
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: EcoShield Command by @ialex | Stardance
|
1793346938.353686
|
1793951738.353686
|
|
6635
|
EmoJ by @YasogaN | Stardance
|
YasogaN
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: EmoJ by @YasogaN | Stardance
|
1793188511.4766445
|
1793793311.4766445
|
|
6636
|
CHIPC-8 by @wilrakov | Stardance
|
wilrakov
|
0
|
1.1
|
0
|
[]
|
[{"post_id": 3371, "ts": "2026 [{"post_id": 3371, "ts": "2026-06-06T08:10:32Z", "hours": 1.0969, "text": "“Let’s strip away the layers of bloated complexity. Welcome to the CHIPC adventure.” You probably have an 8-core beast of a processor in your pocket and another one on your desk. But do you really know what happens inside the silicon at every single clock cycle? Driven by a pure love for bare-metal hardware and the KISS (Keep It Simple, Stupid) philosophy, I decided to build my own minimalist computer from scratch. Its beating heart? The legendary MOS 6502 (specifically, the Rockwell R65C02). No heavy OS, no high-level abstractions. Just pure logic, assembly, and raw silicon. The Backstory: A One-Year Hiatus To be completely honest, this project didn’t start yesterday. I actually designed and fully assembled the board a year ago. Back then, I was on fire: I spent hours mapping out the architecture, routing the PCB traces, and soldering the components. But right after assembling the board, the momentum dropped. The hardware went straight into a drawer, and the project stalled. I realized I had completed the visible part of the iceberg, but I completely missed the most important phase. A custom computer without firmware is just a beautiful, expensive paperweight. The real challenge starts now. The End Game: Running a Raycaster I’m digging the project out of its drawer to finally give it life. No more simulations. We are talking custom EEPROM flashing, memory mapping, and low-level bare-metal programming. But I’m not just aiming for a simple “Hello World” or a blinking LED. The ultimate, crazy goal of this project? Writing and running a 3D raycaster engine directly on this 8-bit machine. If you want to see how far we can push a 6502 processor with clever optimization and minimal resources, you’re in the right place. Here is what’s coming up in the next devlogs: EEPROM Programer: create a simple EEPROM programer based on a microcontroller. The First Boot: Writing the initial bootloader and basic I/O initialization. Memory Mapping: Figuring out how RAM, ROM, and peripherals will coexist cleanly on the bus. The Software Stack: Building the foundations to eventually support the raycaster graphics logic. If you love DIY electronics, retro-engineering, and optimization, stick around. **CHIPC 2.0 is officially alive. Stay tuned for the next post where we jump straight into the assembly code! **"}]...
|
Title: CHIPC-8 by @wilrakov | Stardance
Devlogs:
Title: CHIPC-8 by @wilrakov | Stardance
Devlogs:
“Let’s strip away the layers of bloated complexity. Welcome to the CHIPC adventure.” You probably have an 8-core beast of a processor in your pocket and another one on your desk. But do you really know what happens inside the silicon at every single clock cycle? Driven by a pure love for bare-metal hardware and the KISS (Keep It Simple, Stupid) philosophy, I decided to build my own minimalist computer from scratch. Its beating heart? The legendary MOS 6502 (specifically, the Rockwell R65C02). No heavy OS, no high-level abstractions. Just pure logic, assembly, and raw silicon. The Backstory: A One-Year Hiatus To be completely honest, this project didn’t start yesterday. I actually designed and fully assembled the board a year ago. Back then, I was on fire: I spent hours mapping out the architecture, routing the PCB traces, and soldering the components. But right after assembling the board, the momentum dropped. The hardware went straight into a drawer, and the project stalled. I realized I had completed the visible part of the iceberg, but I completely missed the most important phase. A custom computer without firmware is just a beautiful, expensive paperweight. The real challenge starts now. The End Game: Running a Raycaster I’m digging the project out of its drawer to finally give it life. No more simulations. We are talking custom EEPROM flashing, memory mapping, and low-level bare-metal programming. But I’m not just aiming for a simple “Hello World” or a blinking LED. The ultimate, crazy goal of this project? Writing and running a 3D raycaster engine directly on this 8-bit machine. If you want to see how far we can push a 6502 processor with clever optimization and minimal resources, you’re in the right place. Here is what’s coming up in the next devlogs: EEPROM Programer: create a simple EEPROM programer based on a microcontroller. The First Boot: Writing the initial bootloader and basic I/O initialization. Memory Mapping: Figuring out how RAM, ROM, and peripherals will coexist cleanly on the bus. The Software Stack: Building the foundations to eventually support the raycaster graphics logic. If you love DIY electronics, retro-engineering, and optimization, stick around. **CHIPC 2.0 is officially alive. Stay tuned for the next post where we jump straight into the assembly code! **...
|
1792950662.5785325
|
1793814662.5785325
|
|
6637
|
Order of Operation Maker by @kelvindabest | Starda Order of Operation Maker by @kelvindabest | Stardance...
|
kelvindabest
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Order of Operation Maker by @kelvindabest | Title: Order of Operation Maker by @kelvindabest | Stardance...
|
1793210225.4051733
|
1793815025.4051733
|
|
6638
|
My first slack bot! by @R-Fausto | Stardance
|
R-Fausto
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @R-Fausto | Stardanc Title: My first slack bot! by @R-Fausto | Stardance...
|
1793397274.5747945
|
1794002074.5747945
|
|
6639
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792936415.8679576
|
1793800415.8679576
|
|
6640
|
meow by @cyril | Stardance
|
cyril
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: meow by @cyril | Stardance
|
1793267375.9556055
|
1793872175.9556055
|