|
52941
|
zexx by @abhishek11223344ak | Stardance
|
abhishek11223344ak
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zexx by @abhishek11223344ak | Stardance
|
1792730929.7562234
|
1793335729.7562234
|
|
49471
|
zeypad by @zeyywq | Stardance
|
zeyywq
|
0
|
1.72
|
0
|
[]
|
[{"post_id": 48367, "ts": "202 [{"post_id": 48367, "ts": "2026-08-16T18:00:44Z", "hours": 1.7167, "text": "I made awesome progress on my hackpad project today! First, I finished the schematic and PCB design. Then, while working on the case, after wrestling a bit with 3D models in the KiCad libraries, I decided to skip them and switch to the cloud-based Onshape instead. We measured the PCB dimensions in KiCad as 25.654 x 54.991 mm, added a 0.4 mm tolerance for a sandwich mount design, and started our first sketch in Onshape. The project is slowly coming together!"}]...
|
Title: zeypad by @zeyywq | Stardance
Devlogs:
I m Title: zeypad by @zeyywq | Stardance
Devlogs:
I made awesome progress on my hackpad project today! First, I finished the schematic and PCB design. Then, while working on the case, after wrestling a bit with 3D models in the KiCad libraries, I decided to skip them and switch to the cloud-based Onshape instead. We measured the PCB dimensions in KiCad as 25.654 x 54.991 mm, added a 0.4 mm tolerance for a sandwich mount design, and started our first sketch in Onshape. The project is slowly coming together!...
|
1792594173.197818
|
1793198973.197818
|
|
7199
|
zig-compiler-crash by @LouisNotLuna | Stardance
|
LouisNotLuna
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zig-compiler-crash by @LouisNotLuna | Stard Title: zig-compiler-crash by @LouisNotLuna | Stardance...
|
1792759818.2696588
|
1793364618.2696588
|
|
70739
|
zig-terminal-honeypot by @ezxd1148 | Stardance
|
ezxd1148
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zig-terminal-honeypot by @ezxd1148 | Starda Title: zig-terminal-honeypot by @ezxd1148 | Stardance...
|
1792565233.658705
|
1793170033.658705
|
|
54332
|
ziglm by @simonproyt | Stardance
|
simonproyt
|
1
|
52.95
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-20T17:57:15Z", "hours": 51.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "So after achieving the performance goals that i wanted i think i decided that im ready to ship this project but i feel kinda scared because i wrote a lot less devlogs then my previous projects but like this project was a lot more boring debugging heavy so idk if i could have wrote about more stuff but im hoping that ppl are going to like this one as much as my previous project and it was a great learning experience and i learned a lot about the zig programing language and performance optimization and about the inner workings of llms and about writing low level performance critical cuda code Thank you for checking out my project and best of luck finishing your project and getting what you want", "repo": "https://github.com/simonproyt/ziglm", "demo": "https://cdn.hackclub.com/01a0bfeb-6c82-7528-93f3-aae99d703da5/ziglm_demo.mp4"}]...
|
[{"post_id": 75555, "ts": "202 [{"post_id": 75555, "ts": "2026-09-30T12:45:05Z", "hours": 1.9483, "text": "Note to the reviewers/shipwright/fraud squad so i accidentally added my home folder to the hackatime project and and when i contacted the fraud squad they told me to write a note so can you please deduct around 10 hours please also i attached a demo video of the benchmark script running for the ppl that dont want to download models and set my project up"}, {"post_id": 71338, "ts": "2026-09-20T17:33:25Z", "hours": 9.8469, "text": "removed multimodal and fixed the performance issue so im writing this devlog the second time because stardance logged me out when i tried to post it and it didnt save it sadly so i have to write it again i guess but as the title said i removed the multimodal code basically because it was a pain to maintain and it broke with every update so i just wanted to focus on just closely matching llama.cpp on text speed as a solo developer project and i think i kinda achieved that because in the generation speed its only a few tokens of difference so i think the project is basically finished now and i maybe add a few small changes to it or ship it now but i dont know yet but i hope that someone will like my project even if it was a bit more boring then my other projects"}, {"post_id": 69690, "ts": "2026-09-17T16:20:51Z", "hours": 10.3528, "text": "Fixed some bugs and improved the performance in my free time so i had some time on the weekend and the days i didnt go to school to fix added a benchmark shell script to compare the performance against ollama and llama.cpp for testing and for generating performance graphs now the vision tensors are run on the gpu too so the model wont get bottle necked by my laptops pci express bus speeds and uses the gpus memory instead so this or maybe another one will be probably the last devlog for this project because it has been super hard to develop this and kinda a pain to maintain and try to get it to the performance levels of modern interference libraries and i dont have much free time anymore because of school maybe i will continue development but idk"}, {"post_id": 64849, "ts": "2026-09-09T15:22:55Z", "hours": 11.8742, "text": "Working cuda and ci pipeline but sadly i cant work on this project anymore because school started So working on this project required quite a beefy and heavy computer and i dont want to carry one so sadly i dont have time to continue on this project in this time so after adding a working cuda gpu backend and a ci pipeline so ppl dont have to compile it from the source code and have nvcc to even try i think this is the end of this project for the current time being and i hope that someone will find this So this is what i added: added a cuda backend with a fatbin kernel so it will work on multiple compute levels a github actions ci pipeline to generate verified releases for the ppl who dont want to compile everything for themselves"}, {"post_id": 57155, "ts": "2026-08-29T08:16:47Z", "hours": 7.4842, "text": "Devlog 2: Finally working multimodal audio and video support So after a lot of trial and error i finally added multimodal audio and video support because they were the only two things missing from a complete cpu engine because i wanted a fully working cpu reference before doing anything with cuda and stuff but i want to get cuda working asap because the smaller models that i have been testing that would run on my cpu with a good speed they kinda have bad multimodal performance Thank you for reading my devlog"}, {"post_id": 54967, "ts": "2026-08-26T12:21:34Z", "hours": 11.2867, "text": "First devlog for this new project So i decided to start this new project while waiting for my other project getting reviewed Why did i do this: I was kinda bored waiting for my other project to be reviewed by ppl and i wanted to try out zig so i thought this is a great toy project idea to play with in zig What models are tested (others might work but i havent tested them): smollm2-360m gemma 4 and its variants with curently only image multimodal working but sound and video might be added in the future Thank you for reading my devlog"}]...
|
Title: ziglm by @simonproyt | Stardance
Devlogs:
Title: ziglm by @simonproyt | Stardance
Devlogs:
First devlog for this new project So i decided to start this new project while waiting for my other project getting reviewed Why did i do this: I was kinda bored waiting for my other project to be reviewed by ppl and i wanted to try out zig so i thought this is a great toy project idea to play with in zig What models are tested (others might work but i havent tested them): smollm2-360m gemma 4 and its variants with curently only image multimodal working but sound and video might be added in the future Thank you for reading my devlog
Devlog 2: Finally working multimodal audio and video support So after a lot of trial and error i finally added multimodal audio and video support because they were the only two things missing from a complete cpu engine because i wanted a fully working cpu reference before doing anything with cuda and stuff but i want to get cuda working asap because the smaller models that i have been testing that would run on my cpu with a good speed they kinda have bad multimodal performance Thank you for reading my devlog
Working cuda and ci pipeline but sadly i cant work on this project anymore because school started So working on this project required quite a beefy and heavy computer and i dont want to carry one so sadly i dont have time to continue on this project in this time so after adding a working cuda gpu backend and a ci pipeline so ppl dont have to compile it from the source code and have nvcc to even try i think this is the end of this project for the current time being and i hope that someone will find this So this is what i added: added a cuda backend with a fatbin kernel so it will work on multiple compute levels a github actions ci pipeline to generate verified releases for the ppl who dont want to compile everything for themselves
Fixed some bugs and improved the performance in my free time so i had some time on the weekend and the days i didnt go to school to fix added a benchmark shell script to compare the performance against ollama and llama.cpp for testing and for generating performance graphs now the vision tensors are run on the gpu too so the model wont get bottle necked by my laptops pci express bus speeds and uses the gpus memory instead so this or maybe another one will be probably the last devlog for this project because it has been super hard to develop this and kinda a pain to maintain and try to get it to the performance levels of modern interference libraries and i dont have much free time anymore because of school maybe i will continue development but idk
removed multimodal and fixed the performance issue so im writing this devlog the second time because stardance logged me out when i tried to post it and it didnt save it sadly so i have to write it again i guess but as the title said i removed the multimodal code basically because it was a pain to maintain and it broke with every update so i just wanted to focus on just closely matching llama.cpp on text speed as a solo developer project and i think i kinda achieved that because in the generation speed its only a few tokens of difference so i think the project is basically finished now and i maybe add a few small changes to it or ship it now but i dont know yet but i hope that someone will like my project even if it was a bit more boring then my other projects
Note to the reviewers/shipwright/fraud squad so i accidentally added my home folder to the hackatime project and and when i contacted the fraud squad they told me to write a note so can you please deduct around 10 hours please also i attached a demo video of the benchmark script running for the ppl that dont want to download models and set my project up
Ships:
So after achieving the performance goals that i wanted i think i decided that im ready to ship this project but i feel kinda scared because i wrote a lot less devlogs then my previous projects but like this project was a lot more boring debugging heavy so idk if i could have wrote about more stuff but im hoping that ppl are going to like this one as much as my previous project and it was a great learning experience and i learned a lot about the zig programing language and performance optimization and about the inner workings of llms and about writing low level performance critical cuda code Thank you for checking out my project and best of luck finishing your project and getting what you want...
|
1792856974.2318213
|
1792943374.2318213
|
|
43971
|
zindous98 by @WowZiesel | Stardance
|
WowZiesel
|
0
|
1.51
|
0
|
[]
|
[{"post_id": 44813, "ts": "202 [{"post_id": 44813, "ts": "2026-08-10T20:46:57Z", "hours": 0.3372, "text": "I added background change new things to terminal, etc"}, {"post_id": 44034, "ts": "2026-08-09T15:20:20Z", "hours": 1.1731, "text": "This my zindous, im planning to implement features like background change, 12/24 and other time settings"}]...
|
Title: zindous98 by @WowZiesel | Stardance
Devlog Title: zindous98 by @WowZiesel | Stardance
Devlogs:
This my zindous, im planning to implement features like background change, 12/24 and other time settings
I added background change new things to terminal, etc...
|
1792568967.3482745
|
1793173767.3482745
|
|
27427
|
zip2a by @fraa2a | Stardance
|
fraa2a
|
0
|
3.32
|
0
|
[]
|
[{"post_id": 17486, "ts": "202 [{"post_id": 17486, "ts": "2026-06-28T09:09:57Z", "hours": 3.3192, "text": "Building My Own Archive Manager Today I worked on what is basically a worse alternative to 7-Zip and other archive managers. Why? Mostly because there are a few things I don’t really like about existing tools, so I decided to build my own version of one. I was also a little bit rusty with Rust. Yes, I said it. Sorry for the dad joke. For now, the project uses the zip crate to handle .zip files. The current version can already create and extract archives, but this is still just the beginning. Next steps Add a proper UI Improve ZIP options Support more archive formats like .7z , .rar , and others Make the whole thing actually useful instead of just being a funny experiment I attached a short recording showing how it currently works."}]...
|
Title: zip2a by @fraa2a | Stardance
Devlogs:
Buil Title: zip2a by @fraa2a | Stardance
Devlogs:
Building My Own Archive Manager Today I worked on what is basically a worse alternative to 7-Zip and other archive managers. Why? Mostly because there are a few things I don’t really like about existing tools, so I decided to build my own version of one. I was also a little bit rusty with Rust. Yes, I said it. Sorry for the dad joke. For now, the project uses the zip crate to handle .zip files. The current version can already create and extract archives, but this is still just the beginning. Next steps Add a proper UI Improve ZIP options Support more archive formats like .7z , .rar , and others Make the whole thing actually useful instead of just being a funny experiment I attached a short recording showing how it currently works....
|
1792691308.5129297
|
1793296108.5129297
|
|
33689
|
zircd by @DragonDev22 | Stardance
|
DragonDev22
|
0
|
2.05
|
0
|
[]
|
[{"post_id": 28020, "ts": "202 [{"post_id": 28020, "ts": "2026-07-14T00:42:43Z", "hours": 2.0525, "text": "zircd - Devlog 0 Hello everyone! this is a brief introduction to the project. I’ve had this idea for a little while now, but I’m only beginning to work on it now. I’ve currently got a basic HTTP server working that accepts one request, which isn’t very impressive, but it’s a step in the right direction. I haven’t been using zig for more than a few months, so i’m learning about the language and the standard library as I go."}]...
|
Title: zircd by @DragonDev22 | Stardance
Devlogs: Title: zircd by @DragonDev22 | Stardance
Devlogs:
zircd - Devlog 0 Hello everyone! this is a brief introduction to the project. I’ve had this idea for a little while now, but I’m only beginning to work on it now. I’ve currently got a basic HTTP server working that accepts one request, which isn’t very impressive, but it’s a step in the right direction. I haven’t been using zig for more than a few months, so i’m learning about the language and the standard library as I go....
|
1792734832.236711
|
1793339632.236711
|
|
4162
|
zkFog: Referee-Less Fog of War Chess by @kev | Sta zkFog: Referee-Less Fog of War Chess by @kev | Stardance...
|
kev
|
0
|
1.77
|
0
|
[]
|
[{"post_id": 44259, "ts": "202 [{"post_id": 44259, "ts": "2026-08-09T21:49:26Z", "hours": 1.7703, "text": "Hey Hack Clubbers! I’m building zkFog , a website that lets you play fog-of-war chess without a trusted server. In fog chess you only see the squares your pieces can move to, and normally a server hides the rest of the board and everyone trusts it. I’m replacing that server with zero-knowledge proofs so that each player’s view is secret to only them, not even the server, and cryptography proves that the moves are legal. ~2 hours in: built a 6x6 Los Alamos chess UI to keep implementation simple for now. Using Bun + Vite + Biome , and chessgroundx for the UI. I also added a bit of CSS to emulate the snappiness of chess.com’s UI. I’ve also coded from scratch the engine that determines move legality (the dots that show up when you drag a piece)."}]...
|
Title: zkFog: Referee-Less Fog of War Chess by @ke Title: zkFog: Referee-Less Fog of War Chess by @kev | Stardance
Devlogs:
Hey Hack Clubbers! I’m building zkFog , a website that lets you play fog-of-war chess without a trusted server. In fog chess you only see the squares your pieces can move to, and normally a server hides the rest of the board and everyone trusts it. I’m replacing that server with zero-knowledge proofs so that each player’s view is secret to only them, not even the server, and cryptography proves that the moves are legal. ~2 hours in: built a 6x6 Los Alamos chess UI to keep implementation simple for now. Using Bun + Vite + Biome , and chessgroundx for the UI. I also added a bit of CSS to emulate the snappiness of chess.com’s UI. I’ve also coded from scratch the engine that determines move legality (the dots that show up when you drag a piece)....
|
1792806461.5754397
|
1793411261.5754397
|
|
58771
|
zminecraft clone???? by @kmdw | Stardance
|
kmdw
|
0
|
0.92
|
0
|
[]
|
[{"post_id": 62594, "ts": "202 [{"post_id": 62594, "ts": "2026-09-06T01:57:46Z", "hours": 0.9206, "text": "its so beautiful"}]...
|
Title: zminecraft clone???? by @kmdw | Stardance
Title: zminecraft clone???? by @kmdw | Stardance
Devlogs:
its so beautiful...
|
1792767327.6870852
|
1793372127.6870852
|
|
20935
|
zod by @AhmedKhaledAhmed | Stardance
|
AhmedKhaledAhmed
|
2
|
88.28
|
1014
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-05T17:40:20Z", "hours": 44.0, "multiplier": 13.43, "payout": 593, "blessing": "neutral", "text": "ZodLang is a small, interpreted, dynamically-typed language implemented in Go and inspired by Thorsten Ball’s Writing an Interpreter in Go and Writing a Compiler in Go. It is designed to be small, simple, and easy to use. It is not a general-purpose replacement for Python or Ruby. Instead, it is built for people who want to enjoy programming and learn at the same time. The initial version was a tree-walk interpreter, but now it is a VM. I created the new version Tetris, a 3D cube simulation, and a minimal version of vim. And you can do more.", "repo": "https://github.com/theawakener0/Zod", "demo": "https://github.com/theawakener0/Zod/releases/latest"}, {"ship_num": 2, "ts": "2026-08-27T20:22:35Z", "hours": 36.0, "multiplier": 11.59, "payout": 421, "blessing": "neutral", "text": "Zod is a small, interpreted, dynamic typed language for joyful programming you can build many things from 2D terminal games to tiny ml experiments and more.", "repo": "https://github.com/theawakener0/Zod", "demo": "https://github.com/theawakener0/Zod/releases/latest"}]...
|
[{"post_id": 80179, "ts": "202 [{"post_id": 80179, "ts": "2026-10-16T15:48:10Z", "hours": 8.2819, "text": "DevLog#19 — Currently, I am testing and seeing what I can built using ZodLang. And I built with ZodLang a minimal Codex-like AI harness. It is cool, but needs more work. Stay tuned…."}, {"post_id": 77108, "ts": "2026-10-05T17:28:26Z", "hours": 3.4997, "text": "DevLog#18 — I created a minimal version of vim using ZodLang. Before submitting, I got the idea to recreate a minimal version of vim using ZodLang to show how the language works. I am ready to ship…"}, {"post_id": 76077, "ts": "2026-10-02T08:26:29Z", "hours": 4.8414, "text": "DevLog#17 — I fixed the term library in the stdlib and added raw mode to it (Made it cross-platform). I am currently on version 0.7.0 , and I think I am ready to ship the new version of ZodLang…"}, {"post_id": 75219, "ts": "2026-09-29T14:40:10Z", "hours": 7.1428, "text": "DevLog#16 — I built a 3D cube simulation, and Tetris using ZodLang. Yeah, the language is currently able to build things, Cool things. And this is just the beginning. ZodLang started as a simple toy language and now it is on the road of becoming a full programming language. Thank you all for helping……."}, {"post_id": 73498, "ts": "2026-09-25T07:42:48Z", "hours": 3.7936, "text": "DevLog#15 — I finished the bytecode compiler and vm!!!!!!!!!!!!!!!!!!!!! Also, I have added a full module system to the language, and made the language a bit clean. I will improve the built-ins function and add a full stdlib . Also, the Demo for the current in developing version will be cool….. Wish me luck…"}, {"post_id": 69739, "ts": "2026-09-17T18:04:39Z", "hours": 3.5044, "text": "DevLog#14 — I have added Closures and I can finally said I finished ZodLang bytecode compiler and vm ( I mean that I just finished the core of the language ). The coming DevLogs will be fire……. Stay tuned………"}, {"post_id": 68021, "ts": "2026-09-14T12:08:53Z", "hours": 8.0092, "text": "DevLog#13 — I have added functions and builtins-functions to the bytecode compiler and the vm. Yeah, I spent like a week on this phase, it was hard, but the results of this phase is unlimited. I have completed 70% of the language. I hope ZodLang really turn to be something great. Wish me luck. And stay tuned for the cool things coming."}, {"post_id": 61366, "ts": "2026-09-04T07:35:36Z", "hours": 2.5022, "text": "DevLog#12 — I have added Strings , Arrays , and Hashes to the bytecode compiler and the vm. I thought at first that it would be hard, but turns out it was smooth and easy. Well, not that easy because the Hashes had an issue that I discovered later when I tested the repl, turns out the Hashes doesn’t appear in the repl, but it worked in the tests, so that was weird, but I solved it by keeping track of the order of Hashes . I must continue the bytecode compiler and the vm by adding functions, and built-in functions. Wish me luck……."}, {"post_id": 60792, "ts": "2026-09-03T11:57:16Z", "hours": 1.7017, "text": "DevLog#11 — I have added variables to the bytecode compiler and the vm. Mostly, it was easy, but the assigning char := was a bit tricky to implement in the bytecode compiler and the vm. I made a global environment for setting and getting the values in the variables. I must now focus on implementing / adding strings, arrays, and hashes. Wish me luck……"}, {"post_id": 60112, "ts": "2026-09-02T08:36:53Z", "hours": 1.7417, "text": "DevLog#11 — Finished adding the other comparison expression. I implemented if conditions to the bytecode compiler and the vm. It worked just fine, but It was tense ordering the instructions to make the compiler compile the if condition in a good way. I must now start by adding else-if, and variables. Wish me luck."}, {"post_id": 59450, "ts": "2026-09-01T09:44:41Z", "hours": 2.9603, "text": "DevLog#10 — Finished adding FLOAT_OBJ to the bytecode compiler and vm. Also, supported the operations +, -, *, / . I Implemented BOOLEAN_OBJ and comparison expression in the bytecode compiler and vm too. I will work now on adding more ways in the comparison expression. Also, adding if conditions."}, {"post_id": 58849, "ts": "2026-08-31T13:02:11Z", "hours": 4.44, "text": "DevLog#9 — Currently, Implementing the bytecode compiler and VM. I managed to to finish the initial part of the compiler and the vm. I was able to add integers, it can’t add float and it can’t do any operation other than addition. What I will do now is to add float to compiler so I can add them, and then I will I will add the other operation. I hope this bytecode compiler phase works good, so I can implement the full compiler so Zod could be like Go, Zig, and Rust in the future."}, {"post_id": 55675, "ts": "2026-08-27T17:14:20Z", "hours": 8.3244, "text": "DevLog#8 — Zod is finally here. I finished building the interpreter phase (Yeah, Zod will be a compiled language soon). I added MATRIX_OBJ and that opens ways to build cool things with the language like this demo of Conway’s game of life built in Zod. Cooool!!!!!!! right."}, {"post_id": 41354, "ts": "2026-08-05T14:45:04Z", "hours": 5.5675, "text": "DevLog #7 — I have added hash map in Zod. Also added hash built-in functions like insert() , remove() , contains() , keys() , vals() . NOTE: The hash map is randomized due to Go maps logic."}, {"post_id": 38285, "ts": "2026-07-31T16:25:59Z", "hours": 3.4467, "text": "DevLog #6 — Zod finally has built-in functions, not many, but still good. Zod has len() , println() , printf() , input() , int() , string() , and type() . Also I have added string datatype, for-loop , and a loop {} statement like in Rust. Zod is becoming better day after day and I hope it become a great small language."}, {"post_id": 36622, "ts": "2026-07-28T21:00:05Z", "hours": 4.0358, "text": "DevLog #5 — Zod is finally functional. After I have built the evaluator and added it to the REPL, Zod became a fully function language, Its not a full language, but its still functional. I still have to add more datatypes and built-in functions since it only has integers and boolean , and no built-in function . Zod is becoming a programming language day after day and I think the of its becoming a programming language is near."}, {"post_id": 35237, "ts": "2026-07-26T15:14:47Z", "hours": 3.3225, "text": "DevLog #4 — I have added FunctionLiteral , CallExpressions , and IfExpressions . Also, updated the REPL with the parser. Now, I will start working on the Evaluation."}, {"post_id": 32218, "ts": "2026-07-21T07:51:01Z", "hours": 7.6453, "text": "DevLog #3 –– Today I made significant progress on Zod’s parser. The parser can now handle: Let statements , Assignment statements , Return statements , Infix expressions , Prefix expressions , and Boolean literals . There’s still plenty of work to do, but the parser is taking shape and the language is starting to feel real. My goal with Zod remains the same: to create a programming language that puts learning first while still being capable of building interesting and practical projects."}, {"post_id": 11573, "ts": "2026-06-18T21:13:14Z", "hours": 1.5856, "text": "Finally, I built the repl foundation, but the AST, parser, and eval are still left. Wish me luck…."}, {"post_id": 10682, "ts": "2026-06-17T15:24:19Z", "hours": 2.4353, "text": "Currently, expanding the lexer of zod. I am planning to make zod have mixed syntax between C, Go, and Rust."}]...
|
Title: zod by @AhmedKhaledAhmed | Stardance
Devlo Title: zod by @AhmedKhaledAhmed | Stardance
Devlogs:
Currently, expanding the lexer of zod. I am planning to make zod have mixed syntax between C, Go, and Rust.
Finally, I built the repl foundation, but the AST, parser, and eval are still left. Wish me luck….
DevLog #3 –– Today I made significant progress on Zod’s parser. The parser can now handle: Let statements , Assignment statements , Return statements , Infix expressions , Prefix expressions , and Boolean literals . There’s still plenty of work to do, but the parser is taking shape and the language is starting to feel real. My goal with Zod remains the same: to create a programming language that puts learning first while still being capable of building interesting and practical projects.
DevLog #4 — I have added FunctionLiteral , CallExpressions , and IfExpressions . Also, updated the REPL with the parser. Now, I will start working on the Evaluation.
DevLog #5 — Zod is finally functional. After I have built the evaluator and added it to the REPL, Zod became a fully function language, Its not a full language, but its still functional. I still have to add more datatypes and built-in functions since it only has integers and boolean , and no built-in function . Zod is becoming a programming language day after day and I think the of its becoming a programming language is near.
DevLog #6 — Zod finally has built-in functions, not many, but still good. Zod has len() , println() , printf() , input() , int() , string() , and type() . Also I have added string datatype, for-loop , and a loop {} statement like in Rust. Zod is becoming better day after day and I hope it become a great small language.
DevLog #7 — I have added hash map in Zod. Also added hash built-in functions like insert() , remove() , contains() , keys() , vals() . NOTE: The hash map is randomized due to Go maps logic.
DevLog#8 — Zod is finally here. I finished building the interpreter phase (Yeah, Zod will be a compiled language soon). I added MATRIX_OBJ and that opens ways to build cool things with the language like this demo of Conway’s game of life built in Zod. Cooool!!!!!!! right.
DevLog#9 — Currently, Implementing the bytecode compiler and VM. I managed to to finish the initial part of the compiler and the vm. I was able to add integers, it can’t add float and it can’t do any operation other than addition. What I will do now is to add float to compiler so I can add them, and then I will I will add the other operation. I hope this bytecode compiler phase works good, so I can implement the full compiler so Zod could be like Go, Zig, and Rust in the future.
DevLog#10 — Finished adding FLOAT_OBJ to the bytecode compiler and vm. Also, supported the operations +, -, *, / . I Implemented BOOLEAN_OBJ and comparison expression in the bytecode compiler and vm too. I will work now on adding more ways in the comparison expression. Also, adding if conditions.
DevLog#11 — Finished adding the other comparison expression. I implemented if conditions to the bytecode compiler and the vm. It worked just fine, but It was tense ordering the instructions to make the compiler compile the if condition in a good way. I must now start by adding else-if, and variables. Wish me luck.
DevLog#11 — I have added variables to the bytecode compiler and the vm. Mostly, it was easy, but the assigning char := was a bit tricky to implement in the bytecode compiler and the vm. I made a global environment for setting and getting the values in the variables. I must now focus on implementing / adding strings, arrays, and hashes. Wish me luck……
DevLog#12 — I have added Strings , Arrays , and Hashes to the bytecode compiler and the vm. I thought at first that it would be hard, but turns out it was smooth and easy. Well, not that easy because the Hashes had an issue that I discovered later when I tested the repl, turns out the Hashes doesn’t appear in the repl, but it worked in the tests, so that was weird, but I solved it by keeping track of the order of Hashes . I must continue the bytecode compiler and the vm by adding functions, and built-in functions. Wish me luck…….
DevLog#13 — I have added functions and builtins-functions to the bytecode compiler and the vm. Yeah, I spent like a week on this phase, it was hard, but the results of this phase is unlimited. I have completed 70% of the language. I hope ZodLang really turn to be something great. Wish me luck. And stay tuned for the cool things coming.
DevLog#14 — I have added Closures and I can finally said I finished ZodLang bytecode compiler and vm ( I mean that I just finished the core of the language ). The coming DevLogs will be fire……. Stay tuned………
DevLog#15 — I finished the bytecode compiler and vm!!!!!!!!!!!!!!!!!!!!! Also, I have added a full module system to the language, and made the language a bit clean. I will improve the built-ins function and add a full stdlib . Also, the Demo for the current in developing version will be cool….. Wish me luck…
DevLog#16 — I built a 3D cube simulation, and Tetris using ZodLang. Yeah, the language is currently able to build things, Cool things. And this is just the beginning. ZodLang started as a simple toy language and now it is on the road of becoming a full programming language. Thank you all for helping…….
DevLog#17 — I fixed the term library in the stdlib and added raw mode to it (Made it cross-platform). I am currently on version 0.7.0 , and I think I am ready to ship the new version of ZodLang…
DevLog#18 — I created a minimal version of vim using ZodLang. Before submitting, I got the idea to recreate a minimal version of vim using ZodLang to show how the language works. I am ready to ship…
DevLog#19 — Currently, I am testing and seeing what I can built using ZodLang. And I built with ZodLang a minimal Codex-like AI harness. It is cool, but needs more work. Stay tuned….
Ships:
Zod is a small, interpreted, dynamic typed language for joyful programming you can build many things from 2D terminal games to tiny ml experiments and more.
ZodLang is a small, interpreted, dynamically-typed language implemented in Go and inspired by Thorsten Ball’s Writing an Interpreter in Go and Writing a Compiler in Go. It is designed to be small, simple, and easy to use. It is not a general-purpose replacement for Python or Ruby. Instead, it is built for people who want to enjoy programming and learn at the same time. The initial version was a tree-walk interpreter, but now it is a VM. I created the new version Tetris, a 3D cube simulation, and a minimal version of vim. And you can do more....
|
1792979744.5228577
|
1793066144.5228577
|
|
14163
|
zombOS by @numycode | Stardance
|
numycode
|
0
|
0.68
|
0
|
[]
|
[{"post_id": 5984, "ts": "2026 [{"post_id": 5984, "ts": "2026-06-10T01:17:53Z", "hours": 0.6842, "text": "#1: I worked on the launch area, and made a dark-mode version similar to the zombocom gradient. I tried to make it look similar to GRUB, and I think it turned out really well."}]...
|
Title: zombOS by @numycode | Stardance
Devlogs:
# Title: zombOS by @numycode | Stardance
Devlogs:
#1: I worked on the launch area, and made a dark-mode version similar to the zombocom gradient. I tried to make it look similar to GRUB, and I think it turned out really well....
|
1792511349.9814193
|
1793116149.9814193
|
|
33834
|
zombie shooter game by @the_bored | Stardance
|
the_bored
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zombie shooter game by @the_bored | Stardan Title: zombie shooter game by @the_bored | Stardance...
|
1792641094.7285984
|
1793245894.7285984
|
|
42874
|
zombies must die by @Josh1928 | Stardance
|
Josh1928
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zombies must die by @Josh1928 | Stardance
|
1792525972.5406625
|
1793130772.5406625
|
|
67457
|
zoro by @myreester | Stardance
|
myreester
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zoro by @myreester | Stardance
|
1792464894.9352918
|
1793069694.9352918
|
|
35791
|
zsobix's personal website! by @zsobix | Starda zsobix's personal website! by @zsobix | Stardance...
|
zsobix
|
0
|
3.37
|
0
|
[]
|
[{"post_id": 29441, "ts": "202 [{"post_id": 29441, "ts": "2026-07-16T11:59:17Z", "hours": 2.4289, "text": "First normal and last devlog before the (first) ship! Since my project isn’t going to be rated, and I will only get 10 stardust (for the first ship), I’m not wasting time that could be stardust. Today, I added the basics like: Projects I’m currently working on Basic styling Contact details So yeah, after this ship, I’ll add more stuff. Changelog fix: font pointing to wrong website ( b09e544 ) feat: remade website in a swiss style ( bd61b70 ) thanks for coming to my ted talk -zsobix"}, {"post_id": 29184, "ts": "2026-07-15T22:19:34Z", "hours": 0.9422, "text": "Hey, this is my new website! I’m currently thinking about making it with a Swiss Style. Today I did some research and made just the basics, like adding the font and some spacing!"}]...
|
Title: zsobix's personal website! by @zsobix | Title: zsobix's personal website! by @zsobix | Stardance
Devlogs:
Hey, this is my new website! I’m currently thinking about making it with a Swiss Style. Today I did some research and made just the basics, like adding the font and some spacing!
First normal and last devlog before the (first) ship! Since my project isn’t going to be rated, and I will only get 10 stardust (for the first ship), I’m not wasting time that could be stardust. Today, I added the basics like: Projects I’m currently working on Basic styling Contact details So yeah, after this ship, I’ll add more stuff. Changelog fix: font pointing to wrong website ( b09e544 ) feat: remade website in a swiss style ( bd61b70 ) thanks for coming to my ted talk -zsobix...
|
1792709266.2492418
|
1793314066.2492418
|
|
53563
|
zyr by @shailesh | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zyr by @shailesh | Stardance
|
1792932873.0003903
|
1793796873.0003903
|
|
55624
|
zzz by @rosikur | Stardance
|
rosikur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: zzz by @rosikur | Stardance
|
1792504229.6664333
|
1793109029.6664333
|
|
23309
|
zzzclip by @nosrep | Stardance
|
nosrep
|
1
|
51.0
|
840
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-04T21:15:59Z", "hours": 51.0, "multiplier": 19.28, "payout": 840, "blessing": "neutral", "text": "ever since I was a wee lad I’ve never found a clipboard manager that’s fully worked how I wanted it. A lot can’t handle images correctly, and even fewer can handle multiple MIME types (multiple types of content) simultaneously. Not a lot can persist clipboard content properly either; some don’t wait until the program has exited to replace. So, in 2023, I decided to make my own clipboard manager! I wasn’t very good, though, so it never got to a usable state. This year, I picked the project back up, figured out the blockers (lazy persistence is a lot more annoying than it sounds), and finally added all the features needed for a proper clipboard manager. zzzclip can: store your history. hopefully this was obvious. persist clipboard content. another fun fact: the data in your clipboard doesn’t actually exist to your compositor/WM/DE. if a program exits while something is copied from it, that data is GONE unless it was backed up. that’s what zzzclip does! it backs up the clipboard data and “copies” it again once the program providing it exits. represent your clipboard as files. ever find a website that reaallly wants you to upload a file and won’t take your ctrl-v? zzzclip can fix that! zzzclip also has a configurable system to set which MIME types you really care about, so it won’t store the same image 10 times in different formats every time you copy something. THIS IS FOR WAYLAND USERS ON LINUX ONLY. IF YOU ARE NOT A WAYLAND USER ON LINUX (OR, LIKE, BSD, IF YOU CAN FIGURE IT OUT), THIS IS NOT FOR YOU.", "repo": "https://github.com/Osrepnay/zzzclip", "demo": "https://github.com/Osrepnay/zzzclip/releases/tag/v0.1.0"}]...
|
[{"post_id": 22353, "ts": "202 [{"post_id": 22353, "ts": "2026-07-04T19:44:20Z", "hours": 4.4239, "text": "I have no idea how this devlog ended up so long Anyway, I cleaned up some potential crashes/undefined behavior, fixed up the README, and finally tagged a release + published to AUR! Spent a lot of time wrestling with static linking. I remember using old versions of linux before and getting glibc problems so I wanted to link it statically. I first tried using musl-gcc, but I ended up needing too many static versions of libraries so I just made a Dockerfile with alpine (which has static versions of basically everything) and made the binary there. Did you know PKGBUILDs are just bash scripts? I didn’t."}, {"post_id": 21105, "ts": "2026-07-02T21:58:27Z", "hours": 3.8542, "text": "the clipboard-as-files thing is added! I originally wanted to use FUSE/libfuse, but i realized i could just change the storage format to have the data be in a single file. now i’m just using symlinks instead, no dependencies this was relatively easy, ran into a couple of bugs but nothing too crazy. Biggest thing I got hung up on was which directory to put it in ($XDG_STATE_HOME? $XDG_DATA_HOME? ~/clipboard?). I eventually decided on $XDG_RUNTIME_DIR which seems mostly appropriate - the only thing is that it’s kinda annoying to access, but you could just make your own symlink, change the path with $ZZZCLIP_SYMLINK_PATH, or add a bookmark like in the screenshot. Another thing was to add extensions (e.g. .png) to the file, because apps like discord won’t recognize them if they don’t have extensions. I was initially gonna take and process one of the giant lists online, but then i found out most systems have a /etc/mime.types so i parsed that instead."}, {"post_id": 20183, "ts": "2026-07-01T18:49:37Z", "hours": 2.9758, "text": "I added some more options to the CLI, which ended up being a lot more annoying than i expected. Here are the ones I added: added to zzzclip list : -v: verbose mode. Verbose mode also lists the mimetype for a clipboard item. added to zzzclip get : -f: runs in foreground. Here’s something you might not have known: wl-copy starts a background process when you run it. The clipboard contents aren’t owned by the compositor, so a process has to be running to supply the data. I made zzzclip get do the same thing, but like wl-copy I added an option to make it run in the foreground. -s: output summary. It’s basically zzzclip list -v but only for one item. -l: list stored mime types. It lists the mime types for an item. -m : directly prints the data for an item."}, {"post_id": 18165, "ts": "2026-06-29T05:56:47Z", "hours": 3.1797, "text": "big ticket is overhauling the config format. Previously, the index looked like this: 4a93d8d7 6b5d69df 2143c202 Each random string of 8 characters was a label for data under a particular mime type, and each line was a selection (a selection can have multiple mimetypes). Each label had its own file to store the actual clipboard data, with the mimetype included in that file. this worked fine, but I’ve been wanting to implement the feature where the current clipboard contents are accessible via file. If I moved the mimetype out of the data files, I could just use symlinks because each file has exactly the data I need; using the old format, i’d need to use libfuse to make “fake” files without the mimetypes instead. this was a lot more annoying than i expected (thank god for address sanitizer, caught many mistakes), but I eventually got it working. I think i’m nearing the finish line"}, {"post_id": 17963, "ts": "2026-06-28T22:31:36Z", "hours": 4.0781, "text": "lots of minor-ish stuff for this batch of changes. Biggest change is actually adding proper cli parsing and help messages! previously, the cli was extremely bare-bones and just good enough to actually work but didn’t have any decent error handling or help messages. I’ve also ditched the option that runs the selector program (e.g. rofi, fuzzel). I didn’t know about he -nth those programs have, which let you hide data from the selector, so that functionality was kinda redundant. (also the sizes are human-readable now, i.e. in kb/mb/gb instead of just raw bytes)"}, {"post_id": 16987, "ts": "2026-06-27T15:51:35Z", "hours": 6.7522, "text": "the tests were bad. I fixed them and now everything passes. hooray! Anyway, welcome to macro hell! i’ve been working through the todo list and one of the items I wanted to hit was to support the ext-data-control protocol on top of the wlr-data-control protocol. Wayland compositors work on “protocols,” and not every compositor supports every protocol; the *-data-control protocols are what allow clipboard managers to mess with the clipboard. wlr-data-control was first (i think) and is only supported by wlroots-based compositors, but ext-data-control is the standard now. (except the compositor I use, river, doesn’t support it yet…) The problem with supporting both is that C is not a very expressive language. I had to generate wrapper functions for every function supplied by the protocol, which was bad enough, but I also had to write wrapper functions for my own functions that were used in listeners. This part could have been so much worse, but I was able to hide some function pointers in the user data and cut down even more boilerplate. Not fun. 3/10."}, {"post_id": 14809, "ts": "2026-06-24T01:36:55Z", "hours": 3.3247, "text": "there’s always the boring janitorial stuff (e.g. i renamed a few files, moved some stuff around, fixed a mem leak and a potential crash, etc.) the cooler change is that I finally added testing! testing an app like this is infinitely more annoying than something like a chess engine (shameless plug) because it’s built around IO. I followed in fuzzel ’s footsteps and did integration testing in a shell script, which isn’t something i realized is practical until seeing it used there. the very sparse tests actually already did find a bug, but i’ll fix it later…… the testing is to set up more disruptive features i’ll add later, like implementing the ext-data-control protocol on top of wlr-data-control, and I want to make sure they won’t break anything without having to manually test"}, {"post_id": 14166, "ts": "2026-06-23T04:52:15Z", "hours": 1.7025, "text": "two things: finally got rid of libpcre2. For the people that didn’t read the previous devlog, I needed a regex implementation as part of the user-provided mimetype selection, but I didn’t realize POSIX had one in regex.h and pcre seemed like the standard. POSIX regexes should be more than enough, though, so that’s a dependency killed added locking and index refreshing. nothing was locked previously which is Not Good™️, but more importantly, the daemon never refreshed the index of clipboard data, so if i deleted one, the index would get rewritten anyway with the deleted file and corrupt it. Solution was to stop persisting the index and only read it when it’s used."}, {"post_id": 13561, "ts": "2026-06-22T06:20:10Z", "hours": 3.2839, "text": "minor changes for this devlog. spent way more time than is reasonable thinking of the best way to deal with allocation failures… it seems like everyone online has a different opinion on it. I tried doing it “properly” before seeing how many lines of checks that would require for a codepath that would realistically never get hit, so I gave up and just did xmalloc (basically, a wrapper around malloc that exits with an error message when it fails). Also in the theme of error handling, I did a sweep of the code and wrapped (most) of the io functions I missed to check for failure. it seems like overkill… there has to be a better way but maybe this is how it is. Finally, I switched from libpcre2 to posix regex.h. I didn’t realize POSIX had a regex.h and it’s way more than is required for this use-case (matching mimetypes)."}, {"post_id": 12902, "ts": "2026-06-21T04:06:31Z", "hours": 17.6878, "text": "I started this project much earlier than stardance (it’s years old by now), but it’s only recently become usable. think of this devlog as motivation/background the main goal was to make a clipboard manager that could persist clipboard selections after applications closed have configurable mimetype selection Here’s something interesting you might not have known about linux clipboards (both wayland and x11): the data doesn’t actually exist until a client requests it. This is how applications like firefox offer 20 morbillion image types; it’s converting the image on-the-fly. Given this, it’s impractical to request every offered type, so most clipboard managers I’ve found solve this by giving up and only doing text or text+hardcoded image mimetypes. zzzclip has a probably-overcomplicated system that lets you configure which mimetypes it’ll remember and priority between mimetypes (plus regexes). Another feature I want to add eventually is a FUSE clipboard system where it can make a “fake” (meaning it’s backed by the program, not something on disk) file holding the current clipboard contents. (as for what these 17 hours are actually for: it’s just adding config parsing and a load of cleanups.)"}]...
|
Title: zzzclip by @nosrep | Stardance
Devlogs:
I Title: zzzclip by @nosrep | Stardance
Devlogs:
I started this project much earlier than stardance (it’s years old by now), but it’s only recently become usable. think of this devlog as motivation/background the main goal was to make a clipboard manager that could persist clipboard selections after applications closed have configurable mimetype selection Here’s something interesting you might not have known about linux clipboards (both wayland and x11): the data doesn’t actually exist until a client requests it. This is how applications like firefox offer 20 morbillion image types; it’s converting the image on-the-fly. Given this, it’s impractical to request every offered type, so most clipboard managers I’ve found solve this by giving up and only doing text or text+hardcoded image mimetypes. zzzclip has a probably-overcomplicated system that lets you configure which mimetypes it’ll remember and priority between mimetypes (plus regexes). Another feature I want to add eventually is a FUSE clipboard system where it can make a “fake” (meaning it’s backed by the program, not something on disk) file holding the current clipboard contents. (as for what these 17 hours are actually for: it’s just adding config parsing and a load of cleanups.)
minor changes for this devlog. spent way more time than is reasonable thinking of the best way to deal with allocation failures… it seems like everyone online has a different opinion on it. I tried doing it “properly” before seeing how many lines of checks that would require for a codepath that would realistically never get hit, so I gave up and just did xmalloc (basically, a wrapper around malloc that exits with an error message when it fails). Also in the theme of error handling, I did a sweep of the code and wrapped (most) of the io functions I missed to check for failure. it seems like overkill… there has to be a better way but maybe this is how it is. Finally, I switched from libpcre2 to posix regex.h. I didn’t realize POSIX had a regex.h and it’s way more than is required for this use-case (matching mimetypes).
two things: finally got rid of libpcre2. For the people that didn’t read the previous devlog, I needed a regex implementation as part of the user-provided mimetype selection, but I didn’t realize POSIX had one in regex.h and pcre seemed like the standard. POSIX regexes should be more than enough, though, so that’s a dependency killed added locking and index refreshing. nothing was locked previously which is Not Good™️, but more importantly, the daemon never refreshed the index of clipboard data, so if i deleted one, the index would get rewritten anyway with the deleted file and corrupt it. Solution was to stop persisting the index and only read it when it’s used.
there’s always the boring janitorial stuff (e.g. i renamed a few files, moved some stuff around, fixed a mem leak and a potential crash, etc.) the cooler change is that I finally added testing! testing an app like this is infinitely more annoying than something like a chess engine (shameless plug) because it’s built around IO. I followed in fuzzel ’s footsteps and did integration testing in a shell script, which isn’t something i realized is practical until seeing it used there. the very sparse tests actually already did find a bug, but i’ll fix it later…… the testing is to set up more disruptive features i’ll add later, like implementing the ext-data-control protocol on top of wlr-data-control, and I want to make sure they won’t break anything without having to manually test
the tests were bad. I fixed them and now everything passes. hooray! Anyway, welcome to macro hell! i’ve been working through the todo list and one of the items I wanted to hit was to support the ext-data-control protocol on top of the wlr-data-control protocol. Wayland compositors work on “protocols,” and not every compositor supports every protocol; the *-data-control protocols are what allow clipboard managers to mess with the clipboard. wlr-data-control was first (i think) and is only supported by wlroots-based compositors, but ext-data-control is the standard now. (except the compositor I use, river, doesn’t support it yet…) The problem with supporting both is that C is not a very expressive language. I had to generate wrapper functions for every function supplied by the protocol, which was bad enough, but I also had to write wrapper functions for my own functions that were used in listeners. This part could have been so much worse, but I was able to hide some function pointers in the user data and cut down even more boilerplate. Not fun. 3/10.
lots of minor-ish stuff for this batch of changes. Biggest change is actually adding proper cli parsing and help messages! previously, the cli was extremely bare-bones and just good enough to actually work but didn’t have any decent error handling or help messages. I’ve also ditched the option that runs the selector program (e.g. rofi, fuzzel). I didn’t know about he -nth those programs have, which let you hide data from the selector, so that functionality was kinda redundant. (also the sizes are human-readable now, i.e. in kb/mb/gb instead of just raw bytes)
big ticket is overhauling the config format. Previously, the index looked like this: 4a93d8d7 6b5d69df 2143c202 Each random string of 8 characters was a label for data under a particular mime type, and each line was a selection (a selection can have multiple mimetypes). Each label had its own file to store the actual clipboard data, with the mimetype included in that file. this worked fine, but I’ve been wanting to implement the feature where the current clipboard contents are accessible via file. If I moved the mimetype out of the data files, I could just use symlinks because each file has exactly the data I need; using the old format, i’d need to use libfuse to make “fake” files without the mimetypes instead. this was a lot more annoying than i expected (thank god for address sanitizer, caught many mistakes), but I eventually got it working. I think i’m nearing the finish line
I added some more options to the CLI, which ended up being a lot more annoying than i expected. Here are the ones I added: added to zzzclip list : -v: verbose mode. Verbose mode also lists the mimetype for a clipboard item. added to zzzclip get : -f: runs in foreground. Here’s something you might not have known: wl-copy starts a background process when you run it. The clipboard contents aren’t owned by the compositor, so a process has to be running to supply the data. I made zzzclip get do the same thing, but like wl-copy I added an option to make it run in the foreground. -s: output summary. It’s basically zzzclip list -v but only for one item. -l: list stored mime types. It lists the mime types for an item. -m : directly prints the data for an item.
the clipboard-as-files thing is added! I originally wanted to use FUSE/libfuse, but i realized i could just change the storage format to have the data be in a single file. now i’m just using symlinks instead, no dependencies this was relatively easy, ran into a couple of bugs but nothing too crazy. Biggest thing I got hung up on was which directory to put it in ($XDG_STATE_HOME? $XDG_DATA_HOME? ~/clipboard?). I eventually decided on $XDG_RUNTIME_DIR which seems mostly appropriate - the only thing is that it’s kinda annoying to access, but you could just make your own symlink, change the path with $ZZZCLIP_SYMLINK_PATH, or add a bookmark like in the screenshot. Another thing was to add extensions (e.g. .png) to the file, because apps like discord won’t recognize them if they don’t have extensions. I was initially gonna take and process one of the giant lists online, but then i found out most systems have a /etc/mime.types so i parsed that instead.
I have no idea how this devlog ended up so long Anyway, I cleaned up some potential crashes/undefined behavior, fixed up the README, and finally tagged a release + published to AUR! Spent a lot of time wrestling with static linking. I remember using old versions of linux before and getting glibc problems so I wanted to link it statically. I first tried using musl-gcc, but I ended up needing too many static versions of libraries so I just made a Dockerfile with alpine (which has static versions of basically everything) and made the binary there. Did you know PKGBUILDs are just bash scripts? I didn’t.
Ships:
ever since I was a wee lad I’ve never found a clipboard manager that’s fully worked how I wanted it. A lot can’t handle images correctly, and even fewer can handle multiple MIME types (multiple types of content) simultaneously. Not a lot can persist clipboard content properly either; some don’t wait until the program has exited to replace. So, in 2023, I decided to make my own clipboard manager! I wasn’t very good, though, so it never got to a usable state. This year, I picked the project back up, figured out the blockers (lazy persistence is a lot more annoying than it sounds), and finally added all the features needed for a proper clipboard manager. zzzclip can: store your history. hopefully this was obvious. persist clipboard content. another fun fact: the data in your clipboard doesn’t actually exist to your compositor/WM/DE. if a program exits while something is copied from it, that data is GONE unless it was backed up. that’s what zzzclip does! it backs up the clipboard data and “copies” it again once the program providing it exits. represent your clipboard as files. ever find a website that reaallly wants you to upload a file and won’t take your ctrl-v? zzzclip can fix that! zzzclip also has a configurable system to set which MIME types you really care about, so it won’t store the same image 10 times in different formats every time you copy something. THIS IS FOR WAYLAND USERS ON LINUX ONLY. IF YOU ARE NOT A WAYLAND USER ON LINUX (OR, LIKE, BSD, IF YOU CAN FIGURE IT OUT), THIS IS NOT FOR YOU....
|
1792968809.0337737
|
1793055209.0337737
|
|
36664
|
{Delete} by @zeusyboy | Stardance
|
zeusyboy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: {Delete} by @zeusyboy | Stardance
|
1792655730.999005
|
1793260530.999005
|
|
25457
|
{Scratch so it doesnt count}Flappy Dragon Game by {Scratch so it doesnt count}Flappy Dragon Game by @ClairePoehner | Stardance...
|
ClairePoehner
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T16:59:49Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a game where you have to navigate a dragon up and down to avoid hitting spires to collect score points. I am proud that you can use both space bar and clicking the screen as now it works on mobile as well as computer. I am also glad that I could program a “flapping” animation to the dragon when you click the screen or press space bar.", "repo": "https://github.com/clairepoehner-dot/Flappy---Dragon", "demo": "https://scratch.mit.edu/projects/1335387292"}]...
|
[{"post_id": 15940, "ts": "202 [{"post_id": 15940, "ts": "2026-06-25T21:59:48Z", "hours": 0.3731, "text": "Game Over now plays a sound (Faint Courage by Toby Fox) when it shows up and Game Over is also now displayed when you hit the bottom of the screen and not just when you hit the spires :)"}, {"post_id": 15930, "ts": "2026-06-25T21:32:53Z", "hours": 0.6211, "text": "I made the basic mechanics for the game and it all works, now it is time for the fine tuning."}]...
|
Title: {Scratch so it doesnt count}Flappy Dragon G Title: {Scratch so it doesnt count}Flappy Dragon Game by @ClairePoehner | Stardance
Devlogs:
I made the basic mechanics for the game and it all works, now it is time for the fine tuning.
Game Over now plays a sound (Faint Courage by Toby Fox) when it shows up and Game Over is also now displayed when you hit the bottom of the screen and not just when you hit the spires :)
Ships:
I made a game where you have to navigate a dragon up and down to avoid hitting spires to collect score points. I am proud that you can use both space bar and clicking the screen as now it works on mobile as well as computer. I am also glad that I could program a “flapping” animation to the dragon when you click the screen or press space bar....
|
1792849998.9127493
|
1792936398.9127493
|
|
64583
|
} ;cw by @Ichbins | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: } ;cw by @Ichbins | Stardance
|
1792450222.9747546
|
1793055022.9747546
|
|
15664
|
~ PURPLD'S WORLD ~ by @purpld | Stardance
|
purpld
|
0
|
10.68
|
0
|
[]
|
[{"post_id": 36751, "ts": "202 [{"post_id": 36751, "ts": "2026-07-29T00:42:29Z", "hours": 9.1239, "text": "NINTENDO 3DS! WAIT I STILL HAVEN’T MADE A DEVLOG FOR THIS??? okay so, i began working on this page MONTHS AGO but i stopped for a while, and eventually moved on to my other two projects that I’ve made here so far (FUNNY MIC and LARPARDY). I THOUGHT I MADE A DEVLOG ALREADY BUT APPARENTLY NOT SORRY LOL YIPPEE NEW STUFF! This is my next shrine page, for the Nintendo 3DS, which has been weirdly important to me, lol. The thing is, I decided that I wanted to make this like an actual 3DS, because I thought that would be fun! And you can visit different pages through the HOME Menu. There is a LOT of time logged here because just to get to this point, I have had to: Rip packaged HOME Menu assets from my personal 3DS Figure out how to actually get the textures and such out of those assets Turns out those textures don’t have colors. Rip the colors from the material files Couldn’t figure out how to get the models, so recreate the spinny animation in Blender I DON’T KNOW HOW TO USE BLENDER VERY WELL LOL Recreate the top screen background in DaVinci Resolve I already had ripped the HOME Menu audio a long time ago for other stuff, but now I had to make it loopable Fit those assets in a 3DS image with HTML and CSS (RAAAAHR) JavaScript pain ALL for this so far… but I think it’s worth it. It’s only the beginning! And I think having all of these sells it a lot better than it would otherwise."}, {"post_id": 6635, "ts": "2026-06-11T03:52:34Z", "hours": 1.5606, "text": "NEOCITIES LOG 1 hihi! i’ve been on Neocities for a while, but, y’know, i haven’t had a good place to log my development process before! so this seems fitting. i finally finished and published my Bluey page! it is LITERALLY a children’s show but despite that i became obsessed with it last year, and i think it’s actually really neat and really is worth the recognition. i started working on this shrine page mannyyy months ago and i’ve finally recently had the time to finish it to my liking! one of my favorite parts of my shrine pages is matching the styling ! i “borrowed” some CSS (mainly colors) from the actual bluey.tv website to help, but learning CSS while making this website has definitely been interesting lol the voice clip buttons also use a convenient nunjucks macro to save me some time (and it keeps consistency)! {% macro audio(url) %} <a href= \"#\" onclick= \"new Audio('{{ url | escape }}').play(); return false;\" aria-label= \"Play voice clip\" ><i class= \"nf nf-fa-play\" ></i ></a> {% endmacro %} this would probably be better with a dedicated script, but that seemed like a bit much for this task IMO so i did NOT do that lol in general i learned actually quite a lot about CSS from this, i cannot lie lol i’m quite happy with how this turned out in the end. whether or not you care about the show, i hope it’s worth a read! (psst, also, the time logged for this devlog is quite small because most of this page had been done before Stardance! i just finished some touchups today and merged it.)"}]...
|
Title: ~ PURPLD'S WORLD ~ by @purpld | Stardan Title: ~ PURPLD'S WORLD ~ by @purpld | Stardance
Devlogs:
NEOCITIES LOG 1 hihi! i’ve been on Neocities for a while, but, y’know, i haven’t had a good place to log my development process before! so this seems fitting. i finally finished and published my Bluey page! it is LITERALLY a children’s show but despite that i became obsessed with it last year, and i think it’s actually really neat and really is worth the recognition. i started working on this shrine page mannyyy months ago and i’ve finally recently had the time to finish it to my liking! one of my favorite parts of my shrine pages is matching the styling ! i “borrowed” some CSS (mainly colors) from the actual bluey.tv website to help, but learning CSS while making this website has definitely been interesting lol the voice clip buttons also use a convenient nunjucks macro to save me some time (and it keeps consistency)! {% macro audio(url) %} <a href= "#" onclick= "new Audio('{{ url | escape }}').play(); return false;" aria-label= "Play voice clip" ><i class= "nf nf-fa-play" ></i ></a> {% endmacro %} this would probably be better with a dedicated script, but that seemed like a bit much for this task IMO so i did NOT do that lol in general i learned actually quite a lot about CSS from this, i cannot lie lol i’m quite happy with how this turned out in the end. whether or not you care about the show, i hope it’s worth a read! (psst, also, the time logged for this devlog is quite small because most of this page had been done before Stardance! i just finished some touchups today and merged it.)
NINTENDO 3DS! WAIT I STILL HAVEN’T MADE A DEVLOG FOR THIS??? okay so, i began working on this page MONTHS AGO but i stopped for a while, and eventually moved on to my other two projects that I’ve made here so far (FUNNY MIC and LARPARDY). I THOUGHT I MADE A DEVLOG ALREADY BUT APPARENTLY NOT SORRY LOL YIPPEE NEW STUFF! This is my next shrine page, for the Nintendo 3DS, which has been weirdly important to me, lol. The thing is, I decided that I wanted to make this like an actual 3DS, because I thought that would be fun! And you can visit different pages through the HOME Menu. There is a LOT of time logged here because just to get to this point, I have had to: Rip packaged HOME Menu assets from my personal 3DS Figure out how to actually get the textures and such out of those assets Turns out those textures don’t have colors. Rip the colors from the material files Couldn’t figure out how to get the models, so recreate the spinny animation in Blender I DON’T KNOW HOW TO USE BLENDER VERY WELL LOL Recreate the top screen background in DaVinci Resolve I already had ripped the HOME Menu audio a long time ago for other stuff, but now I had to make it loopable Fit those assets in a 3DS image with HTML and CSS (RAAAAHR) JavaScript pain ALL for this so far… but I think it’s worth it. It’s only the beginning! And I think having all of these sells it a lot better than it would otherwise....
|
1792792389.291558
|
1793397189.291558
|
|
17073
|
~ by @ayush1 | Stardance
|
ayush1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ~ by @ayush1 | Stardance
|
1792493695.8248127
|
1793098495.8248127
|
|
42327
|
~/KLAIR by @domos000 | Stardance
|
domos000
|
1
|
17.99
|
202
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T11:37:08Z", "hours": 17.0, "multiplier": 12.14, "payout": 202, "blessing": "neutral", "text": "~/KLAIR is a free-to-use Discord bot packed with AI features, mini-games, and a few things you probably didn’t know you needed! It comes with 15 features: 5 minigames 5 AI features 5 other miscellaneous commands The best feature, by far, has to be the Live AI feature that I’ve implemented in the bot. Instead of texting the bot, now, you can actually talk to it INSIDE Discord! This is thanks to Gemini Live, the AI model behind generating the responses and speaking them. There are a bunch of other features too like /cat - which fetches a cat image, /dog - which well, fetches a dog image, and more! You can see the showcase YouTube video by clicking on the “Try project” button. If you don’t want to host the bot by yourself, you can also just add it to your server as it’s currently being hosted online. Use the link below to add the bot to your server! https://discord.com/oauth2/authorize?client_id=1532745014600536146&permissions=35186573274480&integration_type=0&scope=bot", "repo": "https://github.com/adeebur-x64/KLAIR", "demo": "https://discord.gg/sscjgj2d7C"}]...
|
[{"post_id": 49775, "ts": "202 [{"post_id": 49775, "ts": "2026-08-18T18:17:50Z", "hours": 0.9942, "text": "(smol and late) Devlog I’m not sure exactly when and what changes I did but, this is the final GitHub Repo README.md. I’ve added some alerts and more information in the README.md as you can see. The reason this Devlog is so long is that I spent some time fixing bugs and stuff (like typos) in the code and those changes were so small that I just didn’t care enough to post a Devlog on them. Will add some more features to the bot very soon :D"}, {"post_id": 43253, "ts": "2026-08-08T12:31:44Z", "hours": 0.9247, "text": "✅Change: Updated the README.md file! Spent an hour writing a README.md file and committed the README to GitHub. Only need to create a showcase video for the bot now!"}, {"post_id": 43229, "ts": "2026-08-08T11:33:04Z", "hours": 0.68, "text": "✅Change: Added comments to the code! Spent a few minutes just adding comments to the code so it becomes more understandable. Some of the examples of comments I’ve added are in the screenshot I’ve attached. The bot is practically completed at this point. I’ll spend a few more minutes writing the README.md file and creating a showcase video for the bot."}, {"post_id": 43173, "ts": "2026-08-08T09:13:05Z", "hours": 0.7303, "text": "✅ Fixed: Some bugs in the /liveai feature! So, if you were trying to ask the bot a question in the VC and there was some background noise, the bot would glitch out and sometimes fill its buffer of holding the audio chunks of the users. Now, I have fixed this issue and added a “End Session” button so that the user can get the summary of their conversation without waiting for 3 mins inactivity in the VC. **Most of the voice handling and AI stuff was implemented using Gemini 3.1 Pro as I don’t have an idea on how to manage audio chunks and stuff. **"}, {"post_id": 42795, "ts": "2026-08-07T18:09:51Z", "hours": 3.7328, "text": "✨Implemented an AI Feature: /liveai Oof! This took wayyyy too long to implement. Now, instead of typing your queries / prompts, you can actually talk to the bot! It creates a private voice channel (only you and the bot) and you can ask it questions. It’s instantaneous too! I honestly love this feature! I can’t show the full working of this command in a screenshot so, the full demo of this command, (including all the other commands) will be in the showcasing video that I’ll create. Stay tuned for that! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 42057, "ts": "2026-08-06T16:42:48Z", "hours": 0.2928, "text": "Implemented an AI Feature: /eli5 Sometimes, even the simplest of explanations of concepts might start feeling hard to understand. This is where ELI5, or Explain Like I’m 5 comes to play! Simply, tell the bot what concept you want to get explained and it will do exactly that for you in a simple, fun way! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 42035, "ts": "2026-08-06T16:18:50Z", "hours": 0.3111, "text": "✨Implemented an AI Feature: /factcheck This is also pretty self-explanatory. You pass it on a claim that you want to get fact checked and get a response. However, since the model doesn’t have access to the internet (as Google Search tool with Gemini isn’t included in the free tier of Google Cloud Projects ), the user is always informed at the end of a message that the bot can make mistakes. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 42024, "ts": "2026-08-06T15:56:26Z", "hours": 0.5128, "text": "✨Implemented an AI Feature: /grammarcheck It’s pretty self-explanatory. You pass it on a sentence (or multiple sentences) and tell it your desired sentence type (default being normal) and it converts your sentence into the desired sentence type while ensuring no there are no grammar, spelling or any other mistakes in the output!. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 41990, "ts": "2026-08-06T15:09:47Z", "hours": 0.9803, "text": "✨QOL Changes! Now, if an error occurs, the bot will tell the user something has happened rather than just ghosting the user. I forgot to implement this error handling in the last update so, here it is! Now, you aren’t required to type /ask all the type to ask the bot a question! Simply do KLAIR, <question> and the bot will respond with a generated response! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 41342, "ts": "2026-08-05T14:33:01Z", "hours": 0.6753, "text": "✨Implemented an AI Feature: /ask Ask the AI (Gemini’s Latest Flash Lite model - Gemini 3.5 Flash Lite ) any question and it will answer it! This is the first AI feature and there are many more AI features to come! Why Gemini Flash Lite Model? Earlier, I was testing out the normal Gemini Flash Model (Gemini 3.6 Flash) but I quickly reached a problem- Rate Limits! Previously, Google had a really high rate limit for their AI Models in the free tier however, they have since significantly reduced that. And this sucks! 1500 RPD down to 20 RPD for the Flash model is INSANITY! In order to not get rate limited after only 20 requests, I took the decision to use a much dumber AI model. It’s on Discord though, I’m pretty sure if users need a more in-depth or accurate answer, they’ll probably go to the actual AI website rather than ask the bot. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 41306, "ts": "2026-08-05T13:33:57Z", "hours": 0.3344, "text": "Implemented a 8Ball (Prediction) Command! You just pass it on a question and it generates a random prediction of whether something will happen or not! PS. even though the description says the question must end with a “?”, it isn’t required for it to end with it! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 41287, "ts": "2026-08-05T12:40:26Z", "hours": 0.7522, "text": "Implemented multiple commands! Dog Image Displaying Command Basically the Cat Image Displaying Command but instead of cat it displays an image of a dog! Useless Fact Command Fetches an API and displays a useless fact! Some of these are actually kinda interesting though! Cryptocurrency Price Fetch Command Fetches an API and displays the price of the cryptocurrency the user has asked for. I don’t know why someone would need to know the price of a crypto on Discord, but hey! At least, the option is there! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 41262, "ts": "2026-08-05T11:30:20Z", "hours": 0.6439, "text": "Implemented a Cat Image Displaying Command! It’s pretty self-explanatory. You type /cat and it fetches a cat image from a free API and sends it on discord! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 40811, "ts": "2026-08-04T15:58:53Z", "hours": 1.1972, "text": "Implemented a Nim Mini Game! Nim is a strategic mini game. There are 15 rocks in total. In each turn, the player can take away 1, 2 or 3 rocks. The bot will also randomly take away some number of rocks. In order to win you need to make the opponent take the last rock. If you take the last rock, you lose! This mini game is actually really fun to play! Had to use Gemini 3.1 Pro to fix some bugs because somehow I can never make a fully working mini game by myself. (I guess it’s just skill issue lol.) NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 40717, "ts": "2026-08-04T13:04:31Z", "hours": 1.8767, "text": "Implemented a Unscramble The Word Mini Game! Okay this mini game took WAYYY TOO LONG! It took like almost an hour just to fetch the word and display it and another hour to actually make the mini game working. It fetches the word automatically from a free API, scrambles it and then displays the scrambled word to the user. Clicking on Unscramble button opens up a Modal for the user to input their guess. The bot checks the guess and tells if it was correct or not and the user can guess again if it was incorrect. If you guess the word correctly, it shows the number of attempts it took for you to guess the word correctly. Clicking on give up shows the unscrambled word and how many attempts they tried. idk how this took 2 hours to make but at least it works! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 40653, "ts": "2026-08-04T10:31:50Z", "hours": 0.7458, "text": "Implemented a Coin Flip Mini Game! aghhh being sick isn’t fun. i wasn’t able to code for 3 days cuz i was sick :( anyways The mini game is self-explanatory. You just guess whether the coin flip came out to be heads or tails! This shouldn’t have taken 40 mins but somehow it did. (maybe cuz i’m still sick and recovering but who knows?) NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 38318, "ts": "2026-07-31T17:13:35Z", "hours": 1.0161, "text": "Implemented Guess The Number Mini game! So, just spent like an hour working on this. The main challenge I faced was to retrieve the guess submission from the user. I wasn’t able to do that so I required the help of my friend Gemini 3.1 Pro (High) in Antigravity IDE to do that for me. Clicking guess shows a modal where the user can input their guess. Clicking give up shows what the number the bot had selected and the number of tries the user did. When the user guesses the number correctly, it shows the number of tries the user required. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 38259, "ts": "2026-07-31T15:50:22Z", "hours": 0.6547, "text": "Implemented Rock Paper Scissors Mini game! So, Just spend a couple of minutes implementing a working rock paper scissors mini game. [] It uses the button feature to ask for the user’s choice. [] It uses Math.Random() function to select its own choice. [] It uses multiple If statements for every case. Will spend some more time refining its style later but the actual mini game is complete for now. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}, {"post_id": 38210, "ts": "2026-07-31T14:40:00Z", "hours": 0.5672, "text": "Initial Bot Setup is complete! Bot is being developed using Discord.js . What has been added till now: A ready output whenever the Discord Bot has successfully logged in. A way to register slash commands for the Bot. A way to handle those slash command requests. A ping command that replies with “Pong!” (just for testing). NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS."}]...
|
Title: ~/KLAIR by @domos000 | Stardance
Devlogs:
Title: ~/KLAIR by @domos000 | Stardance
Devlogs:
Initial Bot Setup is complete! Bot is being developed using Discord.js . What has been added till now: A ready output whenever the Discord Bot has successfully logged in. A way to register slash commands for the Bot. A way to handle those slash command requests. A ping command that replies with “Pong!” (just for testing). NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented Rock Paper Scissors Mini game! So, Just spend a couple of minutes implementing a working rock paper scissors mini game. [] It uses the button feature to ask for the user’s choice. [] It uses Math.Random() function to select its own choice. [] It uses multiple If statements for every case. Will spend some more time refining its style later but the actual mini game is complete for now. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented Guess The Number Mini game! So, just spent like an hour working on this. The main challenge I faced was to retrieve the guess submission from the user. I wasn’t able to do that so I required the help of my friend Gemini 3.1 Pro (High) in Antigravity IDE to do that for me. Clicking guess shows a modal where the user can input their guess. Clicking give up shows what the number the bot had selected and the number of tries the user did. When the user guesses the number correctly, it shows the number of tries the user required. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented a Coin Flip Mini Game! aghhh being sick isn’t fun. i wasn’t able to code for 3 days cuz i was sick :( anyways The mini game is self-explanatory. You just guess whether the coin flip came out to be heads or tails! This shouldn’t have taken 40 mins but somehow it did. (maybe cuz i’m still sick and recovering but who knows?) NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented a Unscramble The Word Mini Game! Okay this mini game took WAYYY TOO LONG! It took like almost an hour just to fetch the word and display it and another hour to actually make the mini game working. It fetches the word automatically from a free API, scrambles it and then displays the scrambled word to the user. Clicking on Unscramble button opens up a Modal for the user to input their guess. The bot checks the guess and tells if it was correct or not and the user can guess again if it was incorrect. If you guess the word correctly, it shows the number of attempts it took for you to guess the word correctly. Clicking on give up shows the unscrambled word and how many attempts they tried. idk how this took 2 hours to make but at least it works! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented a Nim Mini Game! Nim is a strategic mini game. There are 15 rocks in total. In each turn, the player can take away 1, 2 or 3 rocks. The bot will also randomly take away some number of rocks. In order to win you need to make the opponent take the last rock. If you take the last rock, you lose! This mini game is actually really fun to play! Had to use Gemini 3.1 Pro to fix some bugs because somehow I can never make a fully working mini game by myself. (I guess it’s just skill issue lol.) NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented a Cat Image Displaying Command! It’s pretty self-explanatory. You type /cat and it fetches a cat image from a free API and sends it on discord! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented multiple commands! Dog Image Displaying Command Basically the Cat Image Displaying Command but instead of cat it displays an image of a dog! Useless Fact Command Fetches an API and displays a useless fact! Some of these are actually kinda interesting though! Cryptocurrency Price Fetch Command Fetches an API and displays the price of the cryptocurrency the user has asked for. I don’t know why someone would need to know the price of a crypto on Discord, but hey! At least, the option is there! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented a 8Ball (Prediction) Command! You just pass it on a question and it generates a random prediction of whether something will happen or not! PS. even though the description says the question must end with a “?”, it isn’t required for it to end with it! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
✨Implemented an AI Feature: /ask Ask the AI (Gemini’s Latest Flash Lite model - Gemini 3.5 Flash Lite ) any question and it will answer it! This is the first AI feature and there are many more AI features to come! Why Gemini Flash Lite Model? Earlier, I was testing out the normal Gemini Flash Model (Gemini 3.6 Flash) but I quickly reached a problem- Rate Limits! Previously, Google had a really high rate limit for their AI Models in the free tier however, they have since significantly reduced that. And this sucks! 1500 RPD down to 20 RPD for the Flash model is INSANITY! In order to not get rate limited after only 20 requests, I took the decision to use a much dumber AI model. It’s on Discord though, I’m pretty sure if users need a more in-depth or accurate answer, they’ll probably go to the actual AI website rather than ask the bot. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
✨QOL Changes! Now, if an error occurs, the bot will tell the user something has happened rather than just ghosting the user. I forgot to implement this error handling in the last update so, here it is! Now, you aren’t required to type /ask all the type to ask the bot a question! Simply do KLAIR, <question> and the bot will respond with a generated response! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
✨Implemented an AI Feature: /grammarcheck It’s pretty self-explanatory. You pass it on a sentence (or multiple sentences) and tell it your desired sentence type (default being normal) and it converts your sentence into the desired sentence type while ensuring no there are no grammar, spelling or any other mistakes in the output!. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
✨Implemented an AI Feature: /factcheck This is also pretty self-explanatory. You pass it on a claim that you want to get fact checked and get a response. However, since the model doesn’t have access to the internet (as Google Search tool with Gemini isn’t included in the free tier of Google Cloud Projects ), the user is always informed at the end of a message that the bot can make mistakes. NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
Implemented an AI Feature: /eli5 Sometimes, even the simplest of explanations of concepts might start feeling hard to understand. This is where ELI5, or Explain Like I’m 5 comes to play! Simply, tell the bot what concept you want to get explained and it will do exactly that for you in a simple, fun way! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
✨Implemented an AI Feature: /liveai Oof! This took wayyyy too long to implement. Now, instead of typing your queries / prompts, you can actually talk to the bot! It creates a private voice channel (only you and the bot) and you can ask it questions. It’s instantaneous too! I honestly love this feature! I can’t show the full working of this command in a screenshot so, the full demo of this command, (including all the other commands) will be in the showcasing video that I’ll create. Stay tuned for that! NOTE: I’m using a modified version of discord ONLY to show some useful information (like which device I’m using [see members list], what the previous messages were of the bot [see chat, message logger is enabled]. I DO NOT CONDONE THE USAGE OF MODIFIED VERSIONS OF DISCORD AS IT GOES AGAINST THEIR TOS.
✅ Fixed: Some bugs in the /liveai feature! So, if you were trying to ask the bot a question in the VC and there was some background noise, the bot would glitch out and sometimes fill its buffer of holding the audio chunks of the users. Now, I have fixed this issue and added a “End Session” button so that the user can get the summary of their conversation without waiting for 3 mins inactivity in the VC. **Most of the voice handling and AI stuff was implemented using Gemini 3.1 Pro as I don’t have an idea on how to manage audio chunks and stuff. **
✅Change: Added comments to the code! Spent a few minutes just adding comments to the code so it becomes more understandable. Some of the examples of comments I’ve added are in the screenshot I’ve attached. The bot is practically completed at this point. I’ll spend a few more minutes writing the README.md file and creating a showcase video for the bot.
✅Change: Updated the README.md file! Spent an hour writing a README.md file and committed the README to GitHub. Only need to create a showcase video for the bot now!
(smol and late) Devlog I’m not sure exactly when and what changes I did but, this is the final GitHub Repo README.md. I’ve added some alerts and more information in the README.md as you can see. The reason this Devlog is so long is that I spent some time fixing bugs and stuff (like typos) in the code and those changes were so small that I just didn’t care enough to post a Devlog on them. Will add some more features to the bot very soon :D
Ships:
~/KLAIR is a free-to-use Discord bot packed with AI features, mini-games, and a few things you probably didn’t know you needed! It comes with 15 features: 5 minigames 5 AI features 5 other miscellaneous commands The best feature, by far, has to be the Live AI feature that I’ve implemented in the bot. Instead of texting the bot, now, you can actually talk to it INSIDE Discord! This is thanks to Gemini Live, the AI model behind generating the responses and speaking them. There are a bunch of other features too like /cat - which fetches a cat image, /dog - which well, fetches a dog image, and more! You can see the showcase YouTube video by clicking on the “Try project” button. If you don’t want to host the bot by yourself, you can also just add it to your server as it’s currently being hosted online. Use the link below to add the bot to your server! https://discord.com/oauth2/authorize?client_id=1532745014600536146&permissions=35186573274480&integration_type=0&scope=bot...
|
1792979377.8440964
|
1793065777.8440964
|
|
48185
|
~/SLAIR by @domos000 | Stardance
|
domos000
|
1
|
4.55
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T17:39:33Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "~/SLAIR is now LIVE! What is ~/SLAIR ? ~/SLAIR is a free-to-use Slack Bot packed with mini-games and a few things you probably didn’t know you needed! Where does the name ~/SLAIR come from? The name ~/SLAIR comes from my other project ~/KLAIR which was a Discord Bot. As this bot is similar to ~/KLAIR in features but for Slack instead of Discord, I’ve decided to name it ~/SLAIR . Features: ~/SLAIR is designed to be a small, fun, free-to-use bot that aims to add a bunch of entertaining features. Mini Games: /slair-coinflip Flip a coin /slair-guessthenumber Try to guess the number /slair-rps Challenge the bot /slair-unscramble Unscramble the word Other Commands: /slair-8ball Ask the magic 8-ball /slair-cat Get a random cat /slair-dog Get a random dog /slair-cryptoprice Check cryptocurrency prices /slair-uselessfact Receive a completely useless fact AI Usage: Used Gemini 3.1 Pro (High) in Antigravity to fix errors and bugs in the code which I couldn't figure out how to solve. AI was primarily used to debug /slair-unscramble and /slair-guessthenumber commands as I couldn't figure out how to open modals upon clicking a button.", "repo": "https://github.com/adeebur-x64/SLAIR", "demo": "https://hackclub.enterprise.slack.com/archives/C0BR0071C14"}]...
|
[{"post_id": 59693, "ts": "202 [{"post_id": 59693, "ts": "2026-09-01T16:48:52Z", "hours": 0.5453, "text": "Devlog - 5 I don’t remember what exactly I did but these 32 mins weren’t logged. What I do remember: I had worked on troubleshooting the bot and fixing errors / bugs in the code as well as writing the README.md file where most of this 32 minutes went."}, {"post_id": 48848, "ts": "2026-08-17T12:17:30Z", "hours": 1.3106, "text": "Devlog - 4 Aw man, I forgot to post a devlog againnnnnn! Anyways, I’ve now ported the /unscramble and /guessthenumber commands to ~/SLAIR now! Creating both of these commands was a challenge and I had to utilize Gemini 3.1 Pro (High) in Antigravity to get it working. The main challenge I faced was to make the modals open upon a button click and work exactly how modals do in Discord. Also, ignore the stuff I covered with red, those responses were just for testing what works and what bugs there are which I need to fix. => This is the last Devlog! I’ll NOT be adding the nim Mini Game to ~/SLAIR for now."}, {"post_id": 47961, "ts": "2026-08-16T07:31:16Z", "hours": 0.7831, "text": "Devlog - 3 Didn’t even realize it took me 46 minutes to make this lol. Anyways, I’ve now ported the /coinflip and /rockpaperscissors command to ~/SLAIR now! Creating this was somehow a challenge and I almost lost my mind trying to figure out how to get these buttons working! I’ll take a break for now and will be back with another Devlog very soon! This will most probably be one of the last few Devlogs before the first Ship!"}, {"post_id": 47942, "ts": "2026-08-16T06:35:54Z", "hours": 0.6028, "text": "Devlog - 2 Made some more progress in porting the features of ~/KLAIR to the Slack Bot ~/SLAIR . I’ve added the /cryptoprice and /8ball commands now which utilize the Slack Modal to ask the person for their input. I’ll try to port the mini games to ~/SLAIR too and that will be the V1 of the Slack Bot!"}, {"post_id": 47487, "ts": "2026-08-15T12:51:49Z", "hours": 0.8081, "text": "Devlog - 1 I started working on my Slack Bot and completely forgot I also need to post my progress here. Well, till now, I’ve been able to port the /cat , /dog and /uselessfact commands from my Discord Bot ~/KLAIR to this Slack Bot ~/SLAIR . => I will NOT be adding the AI features in this Slack Bot. (At least for now, I won’t). Where does the name ~/SLAIR come from? The name ~/SLAIR comes from the Discord Bot I made earlier /KLAIR but, instead of it being a Discord Bot, it’s a Slack Bot."}]...
|
Title: ~/SLAIR by @domos000 | Stardance
Devlogs:
Title: ~/SLAIR by @domos000 | Stardance
Devlogs:
Devlog - 1 I started working on my Slack Bot and completely forgot I also need to post my progress here. Well, till now, I’ve been able to port the /cat , /dog and /uselessfact commands from my Discord Bot ~/KLAIR to this Slack Bot ~/SLAIR . => I will NOT be adding the AI features in this Slack Bot. (At least for now, I won’t). Where does the name ~/SLAIR come from? The name ~/SLAIR comes from the Discord Bot I made earlier /KLAIR but, instead of it being a Discord Bot, it’s a Slack Bot.
Devlog - 2 Made some more progress in porting the features of ~/KLAIR to the Slack Bot ~/SLAIR . I’ve added the /cryptoprice and /8ball commands now which utilize the Slack Modal to ask the person for their input. I’ll try to port the mini games to ~/SLAIR too and that will be the V1 of the Slack Bot!
Devlog - 3 Didn’t even realize it took me 46 minutes to make this lol. Anyways, I’ve now ported the /coinflip and /rockpaperscissors command to ~/SLAIR now! Creating this was somehow a challenge and I almost lost my mind trying to figure out how to get these buttons working! I’ll take a break for now and will be back with another Devlog very soon! This will most probably be one of the last few Devlogs before the first Ship!
Devlog - 4 Aw man, I forgot to post a devlog againnnnnn! Anyways, I’ve now ported the /unscramble and /guessthenumber commands to ~/SLAIR now! Creating both of these commands was a challenge and I had to utilize Gemini 3.1 Pro (High) in Antigravity to get it working. The main challenge I faced was to make the modals open upon a button click and work exactly how modals do in Discord. Also, ignore the stuff I covered with red, those responses were just for testing what works and what bugs there are which I need to fix. => This is the last Devlog! I’ll NOT be adding the nim Mini Game to ~/SLAIR for now.
Devlog - 5 I don’t remember what exactly I did but these 32 mins weren’t logged. What I do remember: I had worked on troubleshooting the bot and fixing errors / bugs in the code as well as writing the README.md file where most of this 32 minutes went.
Ships:
~/SLAIR is now LIVE! What is ~/SLAIR ? ~/SLAIR is a free-to-use Slack Bot packed with mini-games and a few things you probably didn’t know you needed! Where does the name ~/SLAIR come from? The name ~/SLAIR comes from my other project ~/KLAIR which was a Discord Bot. As this bot is similar to ~/KLAIR in features but for Slack instead of Discord, I’ve decided to name it ~/SLAIR . Features: ~/SLAIR is designed to be a small, fun, free-to-use bot that aims to add a bunch of entertaining features. Mini Games: /slair-coinflip Flip a coin /slair-guessthenumber Try to guess the number /slair-rps Challenge the bot /slair-unscramble Unscramble the word Other Commands: /slair-8ball Ask the magic 8-ball /slair-cat Get a random cat /slair-dog Get a random dog /slair-cryptoprice Check cryptocurrency prices /slair-uselessfact Receive a completely useless fact AI Usage: Used Gemini 3.1 Pro (High) in Antigravity to fix errors and bugs in the code which I couldn't figure out how to solve. AI was primarily used to debug /slair-unscramble and /slair-guessthenumber commands as I couldn't figure out how to open modals upon clicking a button....
|
1792997580.7195
|
1793083980.7195
|
|
25954
|
ÆTHER OS by @SubhamtheBuilder | Stardance
|
SubhamtheBuilder
|
1
|
5.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-26T10:25:25Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Devlog 4 — “Ship It” Devlog 1 drew the canvas. Devlog 2 built the OS. Devlog 3 cut everything that wasn’t ready. This is the one where ÆTHER OS finally ships. Why I made this I wanted to answer a simple question: How much of a desktop operating system can exist inside a single browser tab using only HTML, CSS, and JavaScript? No React. No Electron. No backend. No build step. Just the browser. The result is ÆTHER OS ver 7 —a complete WebOS with a window manager, virtual filesystem, dock, menu bar, boot sequence, lock screen, and nine built-in applications. What ships 9 fully working applications Custom window manager with drag, resize, snapping, maximize, minimize, and Alt+Tab Virtual filesystem backed by localStorage Animated cosmic desktop with starfield and nebula Boot sequence, notifications, dock, menu bar, shortcuts, and synthesized UI sounds Everything is written in vanilla HTML, CSS, and JavaScript. No runtime dependencies. No build step. Around 5,700 lines of code . The hardest part The window manager. Getting windows to drag, resize, snap, animate, maintain focus, and interact correctly without leaking event listeners took more time than every individual app combined. The biggest lesson was that most bugs weren’t isolated. One bad shared system could create five different symptoms. Fixing the root cause almost always solved multiple problems at once. Am I proud of it? Absolutely. Not because it’s perfect, but because I kept cutting until everything left felt solid. Earlier versions had more apps. I removed anything that wasn’t ready to stand beside the rest. Shipping nine polished applications felt far better than shipping unfinished ideas. If you’re testing ÆTHER OS… Here’s what I’d recommend trying: Wait through the boot sequence and unlock the system. Open several apps and drag, resize, snap, minimize, and restore the windows. Open Void Navigator , then edit a file in Prism Editor and save it. Open Stellar Terminal and run neofetch , ls , or warp . Open Pulse Monitor and terminate a process (PID 1 has a surprise). Change wallpapers and dock settings in System Core . Triple-click any window titlebar to zoom-cycle. Try using the OS like a desktop for a few minutes. If something breaks, I want to know. What I learned Shipping is its own feature. One source of truth beats syncing multiple copies of data. Event listeners accumulate unless managed carefully. Cutting unfinished features improves the final product. Vanilla JavaScript is more capable than people often give it credit for. Live https://aether-os-ver7.vercel.app ✦ breathe the void — shipped", "repo": "https://github.com/hyper10203/aether-os", "demo": "https://aether-os-ver7.vercel.app/"}]...
|
[{"post_id": 16196, "ts": "202 [{"post_id": 16196, "ts": "2026-06-26T09:57:59Z", "hours": 0.2897, "text": "Devlog 3 — “ver 7” Devlog 1 drew the canvas. Devlog 2 built the OS. This one was about cutting features, fixing bugs, and shipping something I’m proud to show. What’s in ver 7 ÆTHER OS ver 7 is a cosmic WebOS built with HTML, CSS, and JavaScript . No framework, no build step, no runtime dependencies—just one HTML file, one CSS file, four JS files, and ~5,500 lines of code. The apps Ships with 9 built-in apps : Void Navigator — file explorer with folders, breadcrumbs, drag-and-drop, and wallpaper controls. Stellar Terminal — 18 commands including ls , cd , mkdir , mv , rm , neofetch , warp , and js . Prism Editor — line numbers, minimap, find/replace, themes, tabs, and Ctrl+S saving. Starlog — Markdown notes with search, live preview, and auto-save. Nebula Calc — scientific mode, DEG/RAD toggle, history, and expression rewriting. Pulse Monitor — live CPU, Memory, Network, Disk, and GPU charts with a process list. System Core — wallpapers, uploads, accent colors, dock settings, sounds, and reset. Cosmos Info — animated system specs and uptime. Shortcuts — keyboard shortcut reference. Window system Supports draggable titlebars, eight resize handles, edge and corner snapping, double-click maximize, triple-click zoom, minimize-to-dock animations, z-order updates, Alt+Tab switching, and a shared drag state that eliminates listener leaks. Virtual filesystem Everything is backed by one JSON tree stored in localStorage ( aether:fs ). The Terminal, desktop, File Explorer, and editor all use the same data. Move or delete a file anywhere and every app immediately reflects the change. Polish Added custom scrollbars, purple text selection, Google Fonts with preconnect , focused window glow, boot typing effects, dock magnification, spring animations, notification toasts, and six synthesized Web Audio sounds. What I cut Earlier builds contained more apps. I removed everything that wasn’t solid enough to ship. Nine polished apps are better than shipping unfinished features. Bugs fixed Twelve major release blockers, including: Window manager listener leaks Frozen menu bar clock Broken triple-click zoom Volume slider not affecting sound Pulse Monitor interval leak Missing desktop.js Music player syntax error Maximized windows behind the menu bar Ctrl+W closing the browser Scientific calculator layout Calculator expression parsing Starlog auto-save race condition The biggest fix was replacing per-window event listeners with one shared drag system, eliminating multiple unrelated bugs at once. What I learned Cutting is a feature. Shipping fewer polished apps beats shipping more unfinished ones. One source of truth. The virtual filesystem is a single JSON tree shared by every app. Event listeners accumulate. Install shared listeners once instead of per object. Fix root causes. One fix in shared code is better than many patches. Cleanup matters. Every timer or interval created must be cleaned up when a window closes. UI should never lie. If a control exists, it should actually control something. ✦ breathe the void P.S. Devlog was delayed. I forgot to post devlog 2 and just kept building, so Hackatime only shows 16 minutes on this one. The code didn’t write itself—I simply forgot to log the voyage. ;)"}, {"post_id": 16188, "ts": "2026-06-26T09:32:11Z", "hours": 2.4064, "text": "Devlog 2 — “Building the Void” Devlog 1 laid the foundation. This week was about turning ÆTHER OS into something that actually feels like an operating system: a real window manager, virtual filesystem, built-in apps, polish, shipping, and a bug-fixing marathon. What I built 1. Window manager The window manager now supports draggable titlebars, eight resize handles, edge and corner snapping, double-click maximize, triple-click zoom, minimize animations to the dock, close animations, and automatic z-order updates. One of the biggest bugs came from installing a new mousemove listener every drag. After enough windows were opened and closed, stale listeners accumulated, dragging became unreliable, and buttons stopped responding. The fix was a single shared drag state with listeners installed once. 2. Virtual filesystem + desktop The filesystem is stored as a JSON tree in localStorage ( aether:fs ). The Terminal supports ls , cd , cat , mkdir , touch , mv , cp , rm , rename , and more. The desktop renders /home/explorer as an icon grid with drag-and-drop, context menus, and File Explorer integration with folders, breadcrumbs, and direct file editing. 3. Apps Built eight core apps: Stellar Terminal — history, tab completion, neofetch , cowsay , warp , js , and more. Prism Editor — minimap, tabs, find/replace, themes, and Ctrl+S filesystem saving. Nebula Calc — scientific mode, DEG/RAD toggle, history, and expression rewriting. Starlog — Markdown notes with live preview and auto-save. Pulse Monitor — live CPU, Memory, Network, Disk, and GPU graphs. System Core — wallpapers, accent colors, dock settings, sounds, and reset. Cosmos Info — animated specs, uptime, and a hidden matrix-rain easter egg. Shortcuts — keyboard shortcut reference. 4. Polish Added custom scrollbars, purple selection, Inter + JetBrains Mono fonts, focused window glow, randomized boot typing, dock magnification, spring animations, notification toasts, and six synthesized Web Audio UI sounds. 5. First shipping attempt After deploying to Vercel, I spent thirty minutes using the OS like a real user and found another wave of bugs. The clock froze after unlock, the volume slider wasn’t wired, Ctrl+W closed the browser, the GPU chart was missing, the scientific calculator layout broke, maximized windows hid behind the menu bar, file opening crashed because of a template literal typo, and the window manager listener leak caused multiple unrelated issues. The biggest lesson: fix the root cause, not every symptom. 6. Analytics Integrated @vercel/analytics and @vercel/speed-insights to monitor production traffic and performance. Bugs fixed Thirty-five bugs spotted, including window snapping, Alt+Tab, filesystem edge cases, calculator fixes, audio leaks, notification cleanup, dock magnification, font loading, window manager listener leaks, frozen clock, GPU monitoring, wallpaper caching, Finder title sync, maximized window layout, and The biggest fix was removing duplicated event listeners from the window manager, solving several seemingly unrelated bugs at once. ✦ breathe the void"}, {"post_id": 16114, "ts": "2026-06-26T06:24:27Z", "hours": 1.8642, "text": "Devlog 1 — “Boot” Day 1 of Hack Club Stardance. The cosmic medium takes its first breath. I’ve been sketching this idea for weeks: a full-fledged WebOS that feels like diving into deep space. Today I finally wrote the first line of code. The commit log will be my captain’s log. Stardance only ships if you document the voyage, so here goes. What even is ÆTHER OS? ÆTHER (pronounced “ay-ther” ) is the Greek personification of the upper sky—the pure, glowing air above the mortal atmosphere. Later, physics borrowed the name for the theoretical medium that fills space and carries light. ÆTHER OS is a desktop environment running entirely in a browser tab: a window manager, menu bar, dock, virtual filesystem, and 12 built-in apps. No backend, no framework, no build step—just HTML, CSS, and JavaScript . Its design blends glassmorphism with cosmic depth: frosted panels over a parallax starfield with slowly morphing nebulae, using Void Black, Nebula Purple, and Cosmic Cyan. What I built today 1. The stellar scaffold The project consists of one index.html , one styles.css , and four JavaScript modules: core.js — boot, lock screen, menu bar, dock, notifications, sounds, shortcuts wm.js — window manager fs.js — virtual filesystem and desktop apps.js — all 12 apps No npm, bundler, or framework. Just globals and the DOM. 2. The cosmic background The desktop uses two animated layers: a <canvas> starfield rendered with requestAnimationFrame and a morphing nebula made from blurred radial gradients. Stars belong to near and far layers (parallax factors 18 and 6). Mouse movement is smoothed with: tmx += ( mx - tmx ) * 0.06 ; Near stars receive a cyan halo and subtle twinkle, while the nebula morphs over ~24-second cycles using filter: blur(80px) . 3. Boot sequence The boot log is typed line-by-line using await sleep(...) , alongside a progress bar and ASCII logo. The system announces NEBULA KERNEL v1.0.0 before printing fake kernel logs like: Spawning process init (PID 1) Calibrating cosmic background radiation… 2.725 K. 4. Lock screen A live clock, date, user avatar, decorative password field (any password works) , and click-anywhere-to-unlock. 5. Menu bar A macOS-style menu bar with the ÆTHER menu, active app name, Wi-Fi, battery, notifications, volume, and live clock. Context menus include working actions like New Window ( Ctrl+N ) , Close ( Ctrl+W ) , and Fullscreen ( F11 ) . 6. Sound engine All UI sounds are synthesized with the Web Audio API through a single helper: beep ( freq , duration , type , vol , slide ) Current sounds include boot, open, close, click, notification, and error. Bugs fixed # Problem Fix 1 Boot text blurred because it lived inside the nebula with filter: blur(80px) . Moved the boot overlay above the nebula layer using z-index . 2 Window z-order never updated. el.style.zIndex = ++zTop on focus. 3 Starfield broke after resize. Added a resize listener that updates and reseeds the canvas. Up next Next comes the window manager: dragging, resizing, minimizing, maximizing, snapping, z-order, spring animations, double-click maximize, triple-click zoom, and finally the dock with magnification. That’s when ÆTHER starts feeling like an operating system instead of a website. ✦ breathe the void"}]...
|
Title: ÆTHER OS by @SubhamtheBuilder | Stardance
Title: ÆTHER OS by @SubhamtheBuilder | Stardance
Devlogs:
Devlog 1 — “Boot” Day 1 of Hack Club Stardance. The cosmic medium takes its first breath. I’ve been sketching this idea for weeks: a full-fledged WebOS that feels like diving into deep space. Today I finally wrote the first line of code. The commit log will be my captain’s log. Stardance only ships if you document the voyage, so here goes. What even is ÆTHER OS? ÆTHER (pronounced “ay-ther” ) is the Greek personification of the upper sky—the pure, glowing air above the mortal atmosphere. Later, physics borrowed the name for the theoretical medium that fills space and carries light. ÆTHER OS is a desktop environment running entirely in a browser tab: a window manager, menu bar, dock, virtual filesystem, and 12 built-in apps. No backend, no framework, no build step—just HTML, CSS, and JavaScript . Its design blends glassmorphism with cosmic depth: frosted panels over a parallax starfield with slowly morphing nebulae, using Void Black, Nebula Purple, and Cosmic Cyan. What I built today 1. The stellar scaffold The project consists of one index.html , one styles.css , and four JavaScript modules: core.js — boot, lock screen, menu bar, dock, notifications, sounds, shortcuts wm.js — window manager fs.js — virtual filesystem and desktop apps.js — all 12 apps No npm, bundler, or framework. Just globals and the DOM. 2. The cosmic background The desktop uses two animated layers: a <canvas> starfield rendered with requestAnimationFrame and a morphing nebula made from blurred radial gradients. Stars belong to near and far layers (parallax factors 18 and 6). Mouse movement is smoothed with: tmx += ( mx - tmx ) * 0.06 ; Near stars receive a cyan halo and subtle twinkle, while the nebula morphs over ~24-second cycles using filter: blur(80px) . 3. Boot sequence The boot log is typed line-by-line using await sleep(...) , alongside a progress bar and ASCII logo. The system announces NEBULA KERNEL v1.0.0 before printing fake kernel logs like: Spawning process init (PID 1) Calibrating cosmic background radiation… 2.725 K. 4. Lock screen A live clock, date, user avatar, decorative password field (any password works) , and click-anywhere-to-unlock. 5. Menu bar A macOS-style menu bar with the ÆTHER menu, active app name, Wi-Fi, battery, notifications, volume, and live clock. Context menus include working actions like New Window ( Ctrl+N ) , Close ( Ctrl+W ) , and Fullscreen ( F11 ) . 6. Sound engine All UI sounds are synthesized with the Web Audio API through a single helper: beep ( freq , duration , type , vol , slide ) Current sounds include boot, open, close, click, notification, and error. Bugs fixed # Problem Fix 1 Boot text blurred because it lived inside the nebula with filter: blur(80px) . Moved the boot overlay above the nebula layer using z-index . 2 Window z-order never updated. el.style.zIndex = ++zTop on focus. 3 Starfield broke after resize. Added a resize listener that updates and reseeds the canvas. Up next Next comes the window manager: dragging, resizing, minimizing, maximizing, snapping, z-order, spring animations, double-click maximize, triple-click zoom, and finally the dock with magnification. That’s when ÆTHER starts feeling like an operating system instead of a website. ✦ breathe the void
Devlog 2 — “Building the Void” Devlog 1 laid the foundation. This week was about turning ÆTHER OS into something that actually feels like an operating system: a real window manager, virtual filesystem, built-in apps, polish, shipping, and a bug-fixing marathon. What I built 1. Window manager The window manager now supports draggable titlebars, eight resize handles, edge and corner snapping, double-click maximize, triple-click zoom, minimize animations to the dock, close animations, and automatic z-order updates. One of the biggest bugs came from installing a new mousemove listener every drag. After enough windows were opened and closed, stale listeners accumulated, dragging became unreliable, and buttons stopped responding. The fix was a single shared drag state with listeners installed once. 2. Virtual filesystem + desktop The filesystem is stored as a JSON tree in localStorage ( aether:fs ). The Terminal supports ls , cd , cat , mkdir , touch , mv , cp , rm , rename , and more. The desktop renders /home/explorer as an icon grid with drag-and-drop, context menus, and File Explorer integration with folders, breadcrumbs, and direct file editing. 3. Apps Built eight core apps: Stellar Terminal — history, tab completion, neofetch , cowsay , warp , js , and more. Prism Editor — minimap, tabs, find/replace, themes, and Ctrl+S filesystem saving. Nebula Calc — scientific mode, DEG/RAD toggle, history, and expression rewriting. Starlog — Markdown notes with live preview and auto-save. Pulse Monitor — live CPU, Memory, Network, Disk, and GPU graphs. System Core — wallpapers, accent colors, dock settings, sounds, and reset. Cosmos Info — animated specs, uptime, and a hidden matrix-rain easter egg. Shortcuts — keyboard shortcut reference. 4. Polish Added custom scrollbars, purple selection, Inter + JetBrains Mono fonts, focused window glow, randomized boot typing, dock magnification, spring animations, notification toasts, and six synthesized Web Audio UI sounds. 5. First shipping attempt After deploying to Vercel, I spent thirty minutes using the OS like a real user and found another wave of bugs. The clock froze after unlock, the volume slider wasn’t wired, Ctrl+W closed the browser, the GPU chart was missing, the scientific calculator layout broke, maximized windows hid behind the menu bar, file opening crashed because of a template literal typo, and the window manager listener leak caused multiple unrelated issues. The biggest lesson: fix the root cause, not every symptom. 6. Analytics Integrated @vercel/analytics and @vercel/speed-insights to monitor production traffic and performance. Bugs fixed Thirty-five bugs spotted, including window snapping, Alt+Tab, filesystem edge cases, calculator fixes, audio leaks, notification cleanup, dock magnification, font loading, window manager listener leaks, frozen clock, GPU monitoring, wallpaper caching, Finder title sync, maximized window layout, and The biggest fix was removing duplicated event listeners from the window manager, solving several seemingly unrelated bugs at once. ✦ breathe the void
Devlog 3 — “ver 7” Devlog 1 drew the canvas. Devlog 2 built the OS. This one was about cutting features, fixing bugs, and shipping something I’m proud to show. What’s in ver 7 ÆTHER OS ver 7 is a cosmic WebOS built with HTML, CSS, and JavaScript . No framework, no build step, no runtime dependencies—just one HTML file, one CSS file, four JS files, and ~5,500 lines of code. The apps Ships with 9 built-in apps : Void Navigator — file explorer with folders, breadcrumbs, drag-and-drop, and wallpaper controls. Stellar Terminal — 18 commands including ls , cd , mkdir , mv , rm , neofetch , warp , and js . Prism Editor — line numbers, minimap, find/replace, themes, tabs, and Ctrl+S saving. Starlog — Markdown notes with search, live preview, and auto-save. Nebula Calc — scientific mode, DEG/RAD toggle, history, and expression rewriting. Pulse Monitor — live CPU, Memory, Network, Disk, and GPU charts with a process list. System Core — wallpapers, uploads, accent colors, dock settings, sounds, and reset. Cosmos Info — animated system specs and uptime. Shortcuts — keyboard shortcut reference. Window system Supports draggable titlebars, eight resize handles, edge and corner snapping, double-click maximize, triple-click zoom, minimize-to-dock animations, z-order updates, Alt+Tab switching, and a shared drag state that eliminates listener leaks. Virtual filesystem Everything is backed by one JSON tree stored in localStorage ( aether:fs ). The Terminal, desktop, File Explorer, and editor all use the same data. Move or delete a file anywhere and every app immediately reflects the change. Polish Added custom scrollbars, purple text selection, Google Fonts with preconnect , focused window glow, boot typing effects, dock magnification, spring animations, notification toasts, and six synthesized Web Audio sounds. What I cut Earlier builds contained more apps. I removed everything that wasn’t solid enough to ship. Nine polished apps are better than shipping unfinished features. Bugs fixed Twelve major release blockers, including: Window manager listener leaks Frozen menu bar clock Broken triple-click zoom Volume slider not affecting sound Pulse Monitor interval leak Missing desktop.js Music player syntax error Maximized windows behind the menu bar Ctrl+W closing the browser Scientific calculator layout Calculator expression parsing Starlog auto-save race condition The biggest fix was replacing per-window event listeners with one shared drag system, eliminating multiple unrelated bugs at once. What I learned Cutting is a feature. Shipping fewer polished apps beats shipping more unfinished ones. One source of truth. The virtual filesystem is a single JSON tree shared by every app. Event listeners accumulate. Install shared listeners once instead of per object. Fix root causes. One fix in shared code is better than many patches. Cleanup matters. Every timer or interval created must be cleaned up when a window closes. UI should never lie. If a control exists, it should actually control something. ✦ breathe the void P.S. Devlog was delayed. I forgot to post devlog 2 and just kept building, so Hackatime only shows 16 minutes on this one. The code didn’t write itself—I simply forgot to log the voyage. ;)
Ships:
Devlog 4 — “Ship It” Devlog 1 drew the canvas. Devlog 2 built the OS. Devlog 3 cut everything that wasn’t ready. This is the one where ÆTHER OS finally ships. Why I made this I wanted to answer a simple question: How much of a desktop operating system can exist inside a single browser tab using only HTML, CSS, and JavaScript? No React. No Electron. No backend. No build step. Just the browser. The result is ÆTHER OS ver 7 —a complete WebOS with a window manager, virtual filesystem, dock, menu bar, boot sequence, lock screen, and nine built-in applications. What ships 9 fully working applications Custom window manager with drag, resize, snapping, maximize, minimize, and Alt+Tab Virtual filesystem backed by localStorage Animated cosmic desktop with starfield and nebula Boot sequence, notifications, dock, menu bar, shortcuts, and synthesized UI sounds Everything is written in vanilla HTML, CSS, and JavaScript. No runtime dependencies. No build step. Around 5,700 lines of code . The hardest part The window manager. Getting windows to drag, resize, snap, animate, maintain focus, and interact correctly without leaking event listeners took more time than every individual app combined. The biggest lesson was that most bugs weren’t isolated. One bad shared system could create five different symptoms. Fixing the root cause almost always solved multiple problems at once. Am I proud of it? Absolutely. Not because it’s perfect, but because I kept cutting until everything left felt solid. Earlier versions had more apps. I removed anything that wasn’t ready to stand beside the rest. Shipping nine polished applications felt far better than shipping unfinished ideas. If you’re testing ÆTHER OS… Here’s what I’d recommend trying: Wait through the boot sequence and unlock the system. Open several apps and drag, resize, snap, minimize, and restore the windows. Open Void Navigator , then edit a file in Prism Editor and save it. Open Stellar Terminal and run neofetch , ls , or warp . Open Pulse Monitor and terminate a process (PID 1 has a surprise). Change wallpapers and dock settings in System Core . Triple-click any window titlebar to zoom-cycle. Try using the OS like a desktop for a few minutes. If something breaks, I want to know. What I learned Shipping is its own feature. One source of truth beats syncing multiple copies of data. Event listeners accumulate unless managed carefully. Cutting unfinished features improves the final product. Vanilla JavaScript is more capable than people often give it credit for. Live https://aether-os-ver7.vercel.app ✦ breathe the void — shipped...
|
1792990117.1211374
|
1793076517.1211374
|
|
13946
|
École Salish FRIMM Help by @harnidh_lohaniwal | St École Salish FRIMM Help by @harnidh_lohaniwal | Stardance...
|
harnidh_lohaniwal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: École Salish FRIMM Help by @harnidh_lohaniw Title: École Salish FRIMM Help by @harnidh_lohaniwal | Stardance...
|
1792554565.6804287
|
1793159365.6804287
|
|
61141
|
Élan by @boberto | Stardance
|
boberto
|
0
|
15.09
|
0
|
[]
|
[{"post_id": 66408, "ts": "202 [{"post_id": 66408, "ts": "2026-09-12T07:00:37Z", "hours": 15.0875, "text": "REGAINING YOUR FOCUS ONE STEP AT A TIME!!! I keep opening my laptop to work and somehow ending up on YouTube 10 minutes later. So I started building Élan, a cross-platform momentum app designed to notice when you drift and gently pull you back. The first working MVP is Élan v0: a passive Mac focus companion + Chrome extension. You can find the landing page at elan-web-neon.vercel.app/ Right now, it can: Let you pick a task and distracting websites. Detect when you spend 5+ seconds on one of those sites. Send a gentle reminder instead of blocking anything. Give you 30 minutes of task-free browsing, plus 15 minutes after dismissing a reminder. Track aggregate focus time, reminders, and completed tasks."}]...
|
Title: Élan by @boberto | Stardance
Devlogs:
REGA Title: Élan by @boberto | Stardance
Devlogs:
REGAINING YOUR FOCUS ONE STEP AT A TIME!!! I keep opening my laptop to work and somehow ending up on YouTube 10 minutes later. So I started building Élan, a cross-platform momentum app designed to notice when you drift and gently pull you back. The first working MVP is Élan v0: a passive Mac focus companion + Chrome extension. You can find the landing page at elan-web-neon.vercel.app/ Right now, it can: Let you pick a task and distracting websites. Detect when you spend 5+ seconds on one of those sites. Send a gentle reminder instead of blocking anything. Give you 30 minutes of task-free browsing, plus 15 minutes after dismissing a reminder. Track aggregate focus time, reminders, and completed tasks....
|
1792428890.6207232
|
1793033690.6207232
|
|
28445
|
Ítalo's Workshop! by @ItaloJDev | Stardance
|
ItaloJDev
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-30T13:51:01Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I just shipped my personal workspace portfolio! This project was a deep dive into building a clean, functional digital home for my work. It features my recent projects and acts as a hub for my development journey. I used an AI-assisted workflow to speed up the coding and UI refinement process, ensuring that the final structure is solid and well-documented. AI Transparency: This project was developed with the assistance of AI tools to accelerate the workflow and refine technical implementation. While AI supported the brainstorming and coding processes, all logic was reviewed, tested, and integrated manually to ensure quality and maintain full project ownership", "repo": "https://github.com/neymardashopepaulwalker-blip/Italo-s-Workspace", "demo": "https://neymardashopepaulwalker-blip.github.io/Italo-s-Workspace/"}]...
|
[{"post_id": 19203, "ts": "202 [{"post_id": 19203, "ts": "2026-06-30T13:50:01Z", "hours": 0.6292, "text": "Finally wrapped up the core development of my portfolio site. Spent the last session refining the layout and ensuring everything is responsive. It is officially live, and I am really happy with how it turned out. Onto the next challenge!"}, {"post_id": 19169, "ts": "2026-06-30T12:54:07Z", "hours": 0.7767, "text": "Second area complete!"}, {"post_id": 18707, "ts": "2026-06-29T21:51:09Z", "hours": 0.3686, "text": "Looking good!"}, {"post_id": 18688, "ts": "2026-06-29T21:30:04Z", "hours": 0.5256, "text": "Doing the first visual now!"}]...
|
Title: Ítalo's Workshop! by @ItaloJDev | Stard Title: Ítalo's Workshop! by @ItaloJDev | Stardance
Devlogs:
Doing the first visual now!
Looking good!
Second area complete!
Finally wrapped up the core development of my portfolio site. Spent the last session refining the layout and ensuring everything is responsive. It is officially live, and I am really happy with how it turned out. Onto the next challenge!
Ships:
I just shipped my personal workspace portfolio! This project was a deep dive into building a clean, functional digital home for my work. It features my recent projects and acts as a hub for my development journey. I used an AI-assisted workflow to speed up the coding and UI refinement process, ensuring that the final structure is solid and well-documented. AI Transparency: This project was developed with the assistance of AI tools to accelerate the workflow and refine technical implementation. While AI supported the brainstorming and coding processes, all logic was reviewed, tested, and integrated manually to ensure quality and maintain full project ownership...
|
1792968652.5289888
|
1793055052.5289888
|
|
37330
|
Ö-3D-Drucker by @Bouser23425 | Stardance
|
Bouser23425
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ö-3D-Drucker by @Bouser23425 | Stardance
|
1792781315.0699759
|
1793386115.0699759
|
|
66844
|
ØnyxZ a tool for ethical hackers by @0nyxZ | Stard ØnyxZ a tool for ethical hackers by @0nyxZ | Stardance...
|
0nyxZ
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ØnyxZ a tool for ethical hackers by @0nyxZ Title: ØnyxZ a tool for ethical hackers by @0nyxZ | Stardance...
|
1792461283.179932
|
1793066083.179932
|
|
64026
|
öö by @rrm | Stardance
|
rrm
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: öö by @rrm | Stardance
|
1792446474.618026
|
1793051274.618026
|
|
64038
|
öö by @rrm | Stardance
|
rrm
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: öö by @rrm | Stardance
|
1792446483.0633206
|
1793051283.0633206
|
|
29808
|
İ built my first webos running the super mario bro İ built my first webos running the super mario bros3 by @cqwea | Stardance...
|
cqwea
|
2
|
2.52
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-03T21:00:02Z", "hours": 0.0, "multiplier": 3.19, "payout": 1, "blessing": "neutral", "text": "i faxed a major bug fixes that led to a crash and created a readme for the ship to get public on my first webos that can run a game", "repo": "https://github.com/cqwea/firstwebos", "demo": "https://cqweaos.netlify.app/main/"}, {"ship_num": 2, "ts": "2026-07-03T20:17:07Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "it was my first try of building a webos and i made it run a mario game", "repo": "https://github.com/cqwea/firstwebos", "demo": "https://cqweaos.netlify.app/main/"}]...
|
[{"post_id": 24001, "ts": "202 [{"post_id": 24001, "ts": "2026-07-07T08:46:09Z", "hours": 0.5228, "text": "after some work i coded my own snake game and ill ship it after i add a tutorial for the games and localstorage to keep your notes from not dissapearing ( thanks for the people rewieved my ideas and told me to do these )"}, {"post_id": 21752, "ts": "2026-07-03T20:56:07Z", "hours": 0.2667, "text": "so i fixed some major bugs and fixed the readme so my ship will get accepted"}, {"post_id": 21717, "ts": "2026-07-03T20:12:26Z", "hours": 1.6697, "text": "İ managed to get super mario bros. 3 on my webos !"}]...
|
Title: İ built my first webos running the super ma Title: İ built my first webos running the super mario bros3 by @cqwea | Stardance
Devlogs:
İ managed to get super mario bros. 3 on my webos !
so i fixed some major bugs and fixed the readme so my ship will get accepted
after some work i coded my own snake game and ill ship it after i add a tutorial for the games and localstorage to keep your notes from not dissapearing ( thanks for the people rewieved my ideas and told me to do these )
Ships:
it was my first try of building a webos and i made it run a mario game
i faxed a major bug fixes that led to a crash and created a readme for the ship to get public on my first webos that can run a game...
|
1792990584.4350824
|
1793076984.4350824
|
|
1038
|
πKey by @ZiDi | Stardance
|
ZiDi
|
0
|
15.82
|
0
|
[]
|
[{"post_id": 6328, "ts": "2026 [{"post_id": 6328, "ts": "2026-06-10T17:25:48Z", "hours": 3.8253, "text": "Today I added USB Mode to the Pi_Key project, which allows the device to act as a portable AI configuration and data storage system. With this mode, AI settings and chat histories are stored directly on a USB flash drive, making the system fully portable across Linux, Windows, and macOS. The goal is to keep it simple and plug-and-play, so users can move their setup between machines without any extra setup. At the moment, the implementation is still in an early stage. There is no encryption or access protection, which means anyone with physical access to the USB drive can read all stored data, including API keys and chat histories. Security improvements are planned for future versions, including encryption and better protection for sensitive configuration data. Love u :3"}, {"post_id": 4992, "ts": "2026-06-08T17:14:17Z", "hours": 0.4158, "text": "I made a new design for Pi Key, I’ve already ordered it, and now I just hope it actually works. So what do I want to do next? Since I don’t need to work on the PCB for now, I’m going to focus on the software side. I want to make the app faster and smoother, clean up the code, and give it a more professional look. I also want to improve the GitHub repository so it looks well-structured and serious, not messy. On top of that, I want to build a proper website for the project. And if I finish the software in Python now, my next move is to rewrite the whole thing in Rust to make it faster, cleaner, and more solid. Basically: hardware is done for now — time to level up the software, the codebase, and the whole presentation. Love u :3"}, {"post_id": 4399, "ts": "2026-06-07T18:32:34Z", "hours": 0.7658, "text": "Fixing some bugs, repairing history saving love u :3"}, {"post_id": 3700, "ts": "2026-06-06T19:10:18Z", "hours": 3.2453, "text": "Currently working on an AI-powered chat system for Pi Key. Pi Key is evolving into much more than just an API key manager. The device is designed to securely store API keys, passwords, and chat histories while providing direct access to AI conversations. Current features: • AI Chat • API Key Storage • Password Manager • Chat History Storage Planned features: • Encrypted Data Storage • Local AI Processing • File Management • Secure Notes • Plugin System • Multi-Provider AI Support • Device-to-Device Sync • Custom Automations • Developer Tools • Terminal Access Thanks for support Love u :3"}, {"post_id": 2919, "ts": "2026-06-05T20:29:36Z", "hours": 2.2464, "text": "Working on AI API’s keys saving, connecting to openRouter, and some other things"}, {"post_id": 2312, "ts": "2026-06-04T18:50:02Z", "hours": 2.12, "text": "Some sneak pick from the app I’m working on for communication between PC and pi-key. It will also have support for adding API keys and communicating with AI bots and saving history locally. I’m also working on encrypted password storage and I’m thinking about rewriting all the code from this app and also from the software that runs on pi-key from python to rust."}, {"post_id": 1553, "ts": "2026-06-03T17:20:30Z", "hours": 1.2569, "text": "Testing programs on prototype :)"}, {"post_id": 937, "ts": "2026-06-02T18:15:14Z", "hours": 0.8025, "text": "Working on Simple Web-Site For now its just easy animation and repo button but in future I want to use it for something bigger… Maybe I am gonna buy domain for it"}, {"post_id": 894, "ts": "2026-06-02T16:52:16Z", "hours": 0.3511, "text": "Working on README in my repo"}, {"post_id": 283, "ts": "2026-06-01T14:56:08Z", "hours": 0.4242, "text": "Some 3D rendering :)"}, {"post_id": 236, "ts": "2026-06-01T11:12:17Z", "hours": 0.3639, "text": "Working on PCB :3"}]...
|
Title: πKey by @ZiDi | Stardance
Devlogs:
Working Title: πKey by @ZiDi | Stardance
Devlogs:
Working on PCB :3
Some 3D rendering :)
Working on README in my repo
Working on Simple Web-Site For now its just easy animation and repo button but in future I want to use it for something bigger… Maybe I am gonna buy domain for it
Testing programs on prototype :)
Some sneak pick from the app I’m working on for communication between PC and pi-key. It will also have support for adding API keys and communicating with AI bots and saving history locally. I’m also working on encrypted password storage and I’m thinking about rewriting all the code from this app and also from the software that runs on pi-key from python to rust.
Working on AI API’s keys saving, connecting to openRouter, and some other things
Currently working on an AI-powered chat system for Pi Key. Pi Key is evolving into much more than just an API key manager. The device is designed to securely store API keys, passwords, and chat histories while providing direct access to AI conversations. Current features: • AI Chat • API Key Storage • Password Manager • Chat History Storage Planned features: • Encrypted Data Storage • Local AI Processing • File Management • Secure Notes • Plugin System • Multi-Provider AI Support • Device-to-Device Sync • Custom Automations • Developer Tools • Terminal Access Thanks for support Love u :3
Fixing some bugs, repairing history saving love u :3
I made a new design for Pi Key, I’ve already ordered it, and now I just hope it actually works. So what do I want to do next? Since I don’t need to work on the PCB for now, I’m going to focus on the software side. I want to make the app faster and smoother, clean up the code, and give it a more professional look. I also want to improve the GitHub repository so it looks well-structured and serious, not messy. On top of that, I want to build a proper website for the project. And if I finish the software in Python now, my next move is to rewrite the whole thing in Rust to make it faster, cleaner, and more solid. Basically: hardware is done for now — time to level up the software, the codebase, and the whole presentation. Love u :3
Today I added USB Mode to the Pi_Key project, which allows the device to act as a portable AI configuration and data storage system. With this mode, AI settings and chat histories are stored directly on a USB flash drive, making the system fully portable across Linux, Windows, and macOS. The goal is to keep it simple and plug-and-play, so users can move their setup between machines without any extra setup. At the moment, the implementation is still in an early stage. There is no encryption or access protection, which means anyone with physical access to the USB drive can read all stored data, including API keys and chat histories. Security improvements are planned for future versions, including encryption and better protection for sensitive configuration data. Love u :3...
|
1792478905.7825334
|
1793083705.7825334
|
|
32071
|
Дурак (Durak) AI Bot by @Madeincanada11 | Stardanc Дурак (Durak) AI Bot by @Madeincanada11 | Stardance...
|
Madeincanada11
|
0
|
0.28
|
0
|
[]
|
[{"post_id": 24116, "ts": "202 [{"post_id": 24116, "ts": "2026-07-07T14:08:00Z", "hours": 0.2792, "text": "Created main file, currently the program asks for a trump suit and then loops until the player enters the 6 cards that they have been dealt. If the user enters an invalid combo, the program rejects the answer and re-prompts them."}]...
|
Title: Дурак (Durak) AI Bot by @Madeincanada11 | S Title: Дурак (Durak) AI Bot by @Madeincanada11 | Stardance
Devlogs:
Created main file, currently the program asks for a trump suit and then loops until the player enters the 6 cards that they have been dealt. If the user enters an invalid combo, the program rejects the answer and re-prompts them....
|
1792777763.0874252
|
1793382563.0874252
|
|
27564
|
Опечатка by @FedShved | Stardance
|
FedShved
|
0
|
5.94
|
0
|
[]
|
[{"post_id": 18722, "ts": "202 [{"post_id": 18722, "ts": "2026-06-29T22:08:34Z", "hours": 0.7911, "text": "I set out to make the keyboard actually look like the design I’d settled on.Everything worked by then but it still wore a generic light theme, and the wholepitch is a keyboard that looks and types like Samsung’s, so the look had to land. Ipulled every color and a few sizing numbers into one theme object and repaintedthrough it: a black keyboard, near-black keys, white letters, and red used for onething only, the key you’re pressing. On top of that I added the pieces the mockupshowed — a floating preview of the letter above your finger, a permanent numberrow, a dim symbol in the corner of every key that you get by long-pressing, atwo-page ?123 layer, a blue enter key that turns into a magnifier in search boxes, arow of toolbar icons up top, and holding the spacebar to slide the cursor throughtext. The part I was wary of was the number row, because it doesn’t just sit on top, itgoes into the same grid the autocorrect uses to read where your taps land. Adding a fifth row shifts every letter’s position, and the worry was that it would quietlythrow off the typo-fixing and start mangling words. It turned out not to matter: thedecoder measures distances in key-widths rather than pixels, so adding oneevenly-sized row leaves the spacing between letters exactly what it was, and thedigits aren’t letters so they never enter the word search at all. The offline testthat runs thousands of fake typos came back with the same numbers as before thechange, false corrections still at zero, which is what let me put the row in the reallayout instead of bolting it on as a separate strip. The screenshot shows the new black keyboard with the number row on top and a pressedkey lit red with its letter popped up above it. Note, found while testing the redesign and not caused by it: two things in the decoder are worth fixing later. The bar offers “дом ас” when you type “домас”,because the run-together splitter will break a word in two as long as both halves are real, and “ас” happens to be a real word, so it peels it off even though that’s almost never what you want. And “домасний” won’t correct to “домашний”: that’s aс-for-ш mistake, but с and ш sit on opposite rows of the keyboard, and the auto correct only ever considers the key you hit and its close neighbors, so it never even weighsш as a possibility. The first is a small tuning fix; the second would mean teaching it to consider letter swaps beyond fat-finger range, which is a real feature and has to be done without breaking the zero-false-correction rule. ( the toolbar icons along the top aren’t wired up yet. The language one switches keyboards, but emoji, clipboard, settings, and the overflow menu are drawn for now and don’t do anything — they’re waiting for future wiring)"}, {"post_id": 18653, "ts": "2026-06-29T20:52:38Z", "hours": 4.0881, "text": "I wanted to close a gap that felt wrong in real use: autocorrect only ever looked at the word being typed right now. If a typo had already landed in the text and you tapped back into it, the keyboard just sat there and wouldn’t re-check the word or offer the right spelling. An earlier pass had made tapping into a word safe so it no longer mangled it, but the part you actually expect, tap the broken word and get the fix, wasn’t there yet. So now when the cursor lands inside a finished word the keyboard adopts it: it works out where the word starts and ends and, since the original taps are long gone, recreates them by dropping one tap dead-center on each letter’s key, then runs the same autocorrect search it uses while typing. The correct spelling shows up in the bar and one tap swaps it in where the word sits, without disturbing the spaces or words around it, and you can also just backspace and retype and it re-checks live. It never changes the word on its own - tapping in only offers a fix -which keeps the rule the whole project lives by, never correct a word that was already fine, intact at zero false corrections. The tricky part was telling apart the two times the cursor moves - when I move it, since right after committing a word the system reports the cursor now sitting after it, versus when you tap somewhere new. Treating my own cursor updates as a fresh tap made the keyboard re-grab and re-offer the word it had just finished, in a loop. I fixed it by remembering exactly where I last put the cursor and only reacting when it turns up somewhere I didn’t put it. The other half was being conservative about which words to touch: only plain Russian words, never names, numbers, or anything with characters that don’t exist on the keyboard, and never a half-typed fragment. Finally I was also able to fix a bug word-tearing. At first I had marked it done, but the exact thing that happens when you edit a word still broke. Type a word, press space, backspace into it, keep typing, and the keyboard treats the new letters as a separate new word and splits the old one in half. So I reproduced it on the emulator in the Settings search box, the field from the screenshots, and changed how typing into existing text works. Now when you start typing with the cursor inside a word the keyboard adopts that whole word and edits it as one unit instead of starting a loose fragment beside it, and I gave it a cursor index within the word so an inserted or deleted letter lands where the cursor actually is instead of always at the end. What slowed me down was that clean scripted taps would not tear the word no matter what I tried, which is the same trap I have fell into earlier. The bug was never in the path I kept testing. It only shows up once space has committed the word, and my reproductions weren’t pressing space first. Only after many many tries I was able to finally understand the logic of the bug. Space, then backspace, then type. With space, the word is committed text, so backspacing into it does plain deletes and the old code then composed only the new letter as its own fragment. Replacing that “cursor sits inside text” path with whole-word adoption fixed it, and false corrections stayed at zero the whole time since an adopted word is only ever offered, never swapped on its own."}, {"post_id": 17546, "ts": "2026-06-28T11:36:04Z", "hours": 1.0558, "text": "What I set out to do. Build the core of the keyboard: a full Russian ЙЦУКЕН layout that doesn’t just type letters, but fixes fat-finger typos as you go. The whole reason for this project is that Samsung’s Russian autocorrect is rough, so this part had to genuinely work, not just look the part. Drew the keyboard as a custom Canvas view instead of a UI framework, so it stays small and opens fast on old phones. Then wrote the autocorrect engine - it treats every tap as a point on the screen, not a fixed key, and runs a search over a word dictionary that scores how well your taps match each word against how common that word is. On space it decides whether to swap your typo for the best match. Never touch a word that’s already spelled right. At first the system said the keyboard was visible, the process was running, no crash in the logs, just a thin blank strip at the bottom. I lost a good while on this. Turned out Android measures the keyboard once with a width of zero before the real layout pass, and I was computing the keyboard’s height from its width, so zero width meant zero height and it never recovered. Fixed it by falling back to the actual screen width when the measured width comes back as zero. Keyboard popped straight up after that. (to be honest there are still problems with this system which i aim to soon fix, like for example starting mid word, or not spaced word. But at least I was able to get it to work in the most ideal conditions)"}]...
|
Title: Опечатка by @FedShved | Stardance
Devlogs: Title: Опечатка by @FedShved | Stardance
Devlogs:
What I set out to do. Build the core of the keyboard: a full Russian ЙЦУКЕН layout that doesn’t just type letters, but fixes fat-finger typos as you go. The whole reason for this project is that Samsung’s Russian autocorrect is rough, so this part had to genuinely work, not just look the part. Drew the keyboard as a custom Canvas view instead of a UI framework, so it stays small and opens fast on old phones. Then wrote the autocorrect engine - it treats every tap as a point on the screen, not a fixed key, and runs a search over a word dictionary that scores how well your taps match each word against how common that word is. On space it decides whether to swap your typo for the best match. Never touch a word that’s already spelled right. At first the system said the keyboard was visible, the process was running, no crash in the logs, just a thin blank strip at the bottom. I lost a good while on this. Turned out Android measures the keyboard once with a width of zero before the real layout pass, and I was computing the keyboard’s height from its width, so zero width meant zero height and it never recovered. Fixed it by falling back to the actual screen width when the measured width comes back as zero. Keyboard popped straight up after that. (to be honest there are still problems with this system which i aim to soon fix, like for example starting mid word, or not spaced word. But at least I was able to get it to work in the most ideal conditions)
I wanted to close a gap that felt wrong in real use: autocorrect only ever looked at the word being typed right now. If a typo had already landed in the text and you tapped back into it, the keyboard just sat there and wouldn’t re-check the word or offer the right spelling. An earlier pass had made tapping into a word safe so it no longer mangled it, but the part you actually expect, tap the broken word and get the fix, wasn’t there yet. So now when the cursor lands inside a finished word the keyboard adopts it: it works out where the word starts and ends and, since the original taps are long gone, recreates them by dropping one tap dead-center on each letter’s key, then runs the same autocorrect search it uses while typing. The correct spelling shows up in the bar and one tap swaps it in where the word sits, without disturbing the spaces or words around it, and you can also just backspace and retype and it re-checks live. It never changes the word on its own - tapping in only offers a fix -which keeps the rule the whole project lives by, never correct a word that was already fine, intact at zero false corrections. The tricky part was telling apart the two times the cursor moves - when I move it, since right after committing a word the system reports the cursor now sitting after it, versus when you tap somewhere new. Treating my own cursor updates as a fresh tap made the keyboard re-grab and re-offer the word it had just finished, in a loop. I fixed it by remembering exactly where I last put the cursor and only reacting when it turns up somewhere I didn’t put it. The other half was being conservative about which words to touch: only plain Russian words, never names, numbers, or anything with characters that don’t exist on the keyboard, and never a half-typed fragment. Finally I was also able to fix a bug word-tearing. At first I had marked it done, but the exact thing that happens when you edit a word still broke. Type a word, press space, backspace into it, keep typing, and the keyboard treats the new letters as a separate new word and splits the old one in half. So I reproduced it on the emulator in the Settings search box, the field from the screenshots, and changed how typing into existing text works. Now when you start typing with the cursor inside a word the keyboard adopts that whole word and edits it as one unit instead of starting a loose fragment beside it, and I gave it a cursor index within the word so an inserted or deleted letter lands where the cursor actually is instead of always at the end. What slowed me down was that clean scripted taps would not tear the word no matter what I tried, which is the same trap I have fell into earlier. The bug was never in the path I kept testing. It only shows up once space has committed the word, and my reproductions weren’t pressing space first. Only after many many tries I was able to finally understand the logic of the bug. Space, then backspace, then type. With space, the word is committed text, so backspacing into it does plain deletes and the old code then composed only the new letter as its own fragment. Replacing that “cursor sits inside text” path with whole-word adoption fixed it, and false corrections stayed at zero the whole time since an adopted word is only ever offered, never swapped on its own.
I set out to make the keyboard actually look like the design I’d settled on.Everything worked by then but it still wore a generic light theme, and the wholepitch is a keyboard that looks and types like Samsung’s, so the look had to land. Ipulled every color and a few sizing numbers into one theme object and repaintedthrough it: a black keyboard, near-black keys, white letters, and red used for onething only, the key you’re pressing. On top of that I added the pieces the mockupshowed — a floating preview of the letter above your finger, a permanent numberrow, a dim symbol in the corner of every key that you get by long-pressing, atwo-page ?123 layer, a blue enter key that turns into a magnifier in search boxes, arow of toolbar icons up top, and holding the spacebar to slide the cursor throughtext. The part I was wary of was the number row, because it doesn’t just sit on top, itgoes into the same grid the autocorrect uses to read where your taps land. Adding a fifth row shifts every letter’s position, and the worry was that it would quietlythrow off the typo-fixing and start mangling words. It turned out not to matter: thedecoder measures distances in key-widths rather than pixels, so adding oneevenly-sized row leaves the spacing between letters exactly what it was, and thedigits aren’t letters so they never enter the word search at all. The offline testthat runs thousands of fake typos came back with the same numbers as before thechange, false corrections still at zero, which is what let me put the row in the reallayout instead of bolting it on as a separate strip. The screenshot shows the new black keyboard with the number row on top and a pressedkey lit red with its letter popped up above it. Note, found while testing the redesign and not caused by it: two things in the decoder are worth fixing later. The bar offers “дом ас” when you type “домас”,because the run-together splitter will break a word in two as long as both halves are real, and “ас” happens to be a real word, so it peels it off even though that’s almost never what you want. And “домасний” won’t correct to “домашний”: that’s aс-for-ш mistake, but с and ш sit on opposite rows of the keyboard, and the auto correct only ever considers the key you hit and its close neighbors, so it never even weighsш as a possibility. The first is a small tuning fix; the second would mean teaching it to consider letter swaps beyond fat-finger range, which is a real feature and has to be done without breaking the zero-false-correction rule. ( the toolbar icons along the top aren’t wired up yet. The language one switches keyboards, but emoji, clipboard, settings, and the overflow menu are drawn for now and don’t do anything — they’re waiting for future wiring)...
|
1792680863.767333
|
1793285663.767333
|
|
66355
|
Протез by @Hmilkxx | Stardance
|
Hmilkxx
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Протез by @Hmilkxx | Stardance
|
1792460911.800177
|
1793065711.800177
|
|
67884
|
ЯƎ⋊ƆAH by @sooraj | Stardance
|
sooraj
|
1
|
3.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-04T19:28:28Z", "hours": 3.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a cool looking hacker terminal based theme portfolio where visitors type commands instead of clicking links. Writing the JavaScript for the command inputs, auto-scrolling and setting up the text animation perfectly a liitle challenging . The text animation and the feeling like running a Linux terminal, complete with a dark theme and command not found errors. live link is given here and in github and if you don’t know what to type just type help in terminal.", "repo": "https://github.com/Sooraj44882/portfolio", "demo": "https://sooraj44882.github.io/portfolio/"}]...
|
[{"post_id": 76827, "ts": "202 [{"post_id": 76827, "ts": "2026-10-04T18:56:14Z", "hours": 1.3656, "text": "Devlog 3: added animation in terminal ,complete about,skill,project,contact section"}, {"post_id": 76729, "ts": "2026-10-04T13:04:05Z", "hours": 0.6414, "text": "Devlog 2: added the style to navbar and terminal screen and added the about section"}, {"post_id": 76712, "ts": "2026-10-04T12:11:03Z", "hours": 0.7022, "text": "Devlog 1:building portfolio added navbar and terminal use google fonts and style like hacker theme ,next i have to update the navbar and make a box like screen for terminal ,about,skill section"}]...
|
Title: ЯƎ⋊ƆAH by @sooraj | Stardance
Devlogs:
Dev Title: ЯƎ⋊ƆAH by @sooraj | Stardance
Devlogs:
Devlog 1:building portfolio added navbar and terminal use google fonts and style like hacker theme ,next i have to update the navbar and make a box like screen for terminal ,about,skill section
Devlog 2: added the style to navbar and terminal screen and added the about section
Devlog 3: added animation in terminal ,complete about,skill,project,contact section
Ships:
I made a cool looking hacker terminal based theme portfolio where visitors type commands instead of clicking links. Writing the JavaScript for the command inputs, auto-scrolling and setting up the text animation perfectly a liitle challenging . The text animation and the feeling like running a Linux terminal, complete with a dark theme and command not found errors. live link is given here and in github and if you don’t know what to type just type help in terminal....
|
1792965354.7271402
|
1793051754.7271402
|
|
64132
|
тг бот by @egorgaramzin31 | Stardance
|
egorgaramzin31
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: тг бот by @egorgaramzin31 | Stardance
|
1792446547.8905518
|
1793051347.8905518
|
|
57209
|
مملكة الميزنية by @eyadkhalid383 | Stardance
|
eyadkhalid383
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: مملكة الميزنية by @eyadkhalid383 | Stardanc Title: مملكة الميزنية by @eyadkhalid383 | Stardance...
|
1792698477.7850292
|
1793303277.7850292
|
|
54110
|
موقع "بنك الأسئلة للمذاكرة السريعة" (Quiz موقع "بنك الأسئلة للمذاكرة السريعة" (Quiz App) by @mntallhmhmd426 | Stardance...
|
mntallhmhmd426
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: موقع "بنك الأسئلة للمذاكرة السريعة" Title: موقع "بنك الأسئلة للمذاكرة السريعة" (Quiz App) by @mntallhmhmd426 | Stardance...
|
1792777712.6515005
|
1793382512.6515005
|
|
33775
|
नभस्पंद by @orignalbatman | Stardance
|
orignalbatman
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: नभस्पंद by @orignalbatman | Stardance
|
1792928937.0968664
|
1793792937.0968664
|
|
56644
|
स्याउOS by @Kantarajluitel | Stardance
|
Kantarajluitel
|
1
|
22.79
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-03T02:23:16Z", "hours": 10.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Project Name: स्याउ OS (Syau OS) Creator: Kantaraj Luitel (Susant) Mission Guidelines Confirmation: Working Webpage with Draggable Windows: Full client-side desktop environment with multi-window support. Windows support 8 direction resizing, dragging, minimize, maximize, and z-index depth stacking. Original & Distinct Design: Custom visual identity combining bilingual typography (Noto Sans Devanagari + Space Grotesk + Inter) with a glassmorphism aesthetic. Features dual Dark and White Light themes, dynamic particle boot sequence with a Web Audio API chime, and canvas-based cursor trail. Devlogs (3+ Included): Embedded native “Devlogs” application inside the OS covering: Devlog 1: Architecture, Windowing Mathematics, and Non-blocking State. Devlog 2: Dual Light/Dark Theme Engine & Bilingual Typography Integration. Devlog 3: Canvas Performance, Responsive Layouts, and Mobile Adaptations. Unique Features Beyond the Guide: Pixel Cat Desktop Pet: Interactive canvas sprite with animation states (walk, idle, sleep, happy, blink) following the cursor. Custom Terminal Shell (syau-sh): Over 20 interactive commands including neofetch, matrix, cowsay, weather, and easter eggs. Embedded Spotify Music Player Hub with curated genres and custom link loader. Spotlight Search (Cmd+K / Ctrl+K), canvas-rendered analog clock widget, and Bikram Sambat date converter. Accessibility: No passwords or authentication walls; all applications and features are immediately accessible to test.", "repo": "https://github.com/susantedit/shayu-OS", "demo": "https://shyau.vercel.app/"}]...
|
[{"post_id": 76018, "ts": "202 [{"post_id": 76018, "ts": "2026-10-02T02:26:52Z", "hours": 1.8689, "text": "I broke down the stylesheet from one big file into clean, modular CSS files per component and app (src/styles/ and component-level CSS files like BaghChal.css, SyauType.css, FocusAudio.css). Removed redundant rules and cleaned up the class structure. Ready for re-review!"}, {"post_id": 72569, "ts": "2026-09-23T07:54:47Z", "hours": 3.9692, "text": "updates 3 feature for web os 2 1Handcrafted Vanilla CSS Window Manager 2Nepali Cultural Tools and Games 3coode editor"}, {"post_id": 67482, "ts": "2026-09-13T16:28:24Z", "hours": 6.3981, "text": "Wasted too much time on this i added nepali things convertor also go check it out cursor i added is just a image that i love and use on my pc always if you feel bad with it you can change it on the site :( sorry for late submission i was quiet busy and done this week now"}, {"post_id": 62576, "ts": "2026-09-06T01:19:07Z", "hours": 0.5533, "text": "UPdated the site in own taste"}, {"post_id": 60139, "ts": "2026-09-02T10:01:27Z", "hours": 8.3356, "text": "Shipped स्याउ OS (Syau OS) v1.3 for the WebOS Jam! 🚀 I wanted to make a web OS that feels alive, developer-friendly, and authentic to Nepal 🇳🇵. Here is what is new in v1.3: What I Built: • Syau Studio — Live in-browser Web IDE (HTML/CSS/JS sandbox with hot-reloading & retro templates) • Meo (स्याउ साथी) — AI OS Copilot (Groq Llama 3.3 / Gemini) + an interactive desktop pixel cat you can pet! • स्याउ Capture Studio — Screen recorder, canvas snip & markup tool, photo booth filters, and Web Audio waveform memo • Hardware Telemetry — Real battery status, power modes, and live Cloudflare DNS ping testing • Dual Theme Engine — Dark Glass & White Light mode + Nepali Bikram Sambat (BS) date converter • 100% Mobile Responsive — Works smoothly on phones, tablets, and desktops! Built with React 19, TypeScript, Vite, Tailwind CSS, Zustand & Framer Motion. Check it out on GitHub: https://github.com/susantedit/shayu-OS"}, {"post_id": 58805, "ts": "2026-08-31T12:01:56Z", "hours": 0.3556, "text": "🚀 Devlog #2: Making स्याउ OS Fully Responsive Across Web, Tablets & Mobile! 💡 The Big Update Simulating a full desktop operating system inside a browser comes with a major challenge: desktop windowing systems are typically built for large monitors and mouse pointers. But we know hackathon judges, contributors, and friends often open projects directly on smartphones, iPads, and split screens . Today, we officially rolled out v1.1.0-responsive , making स्याउ OS (Syau OS) adapt seamlessly across any device while keeping its signature frosted glass aesthetic and fluid Devanagari typography intact! 📱 What We Built & Optimized 1. 🪟 Adaptive Viewport Clamping & Auto-Maximized Windows On small screens (<768px), windows automatically adapt their width ( calc(100vw - 16px) ) and auto-maximize to fit the viewport. Bounding boxes are clamped so window titlebars and close controls never get pushed off-screen. 2. 🌊 Touch-Optimized Floating Dock Dock icons dynamically scale down and adjust spacing on smaller screens. Added smooth horizontal scroll with hidden scrollbars for mobile screens with high app density. Enlarged hitboxes so icons are easy to tap with a finger. 3. ⏱️ Responsive TopBar & Nepali BS Calendar Re-architected TopBar flex priorities: keeps the स्याउ OS brand logo, live Bikram Sambat (२०८३ BS) date widget, and Dark/Light mode switcher cleanly visible without overflowing on narrow screens. 4. 🍱 Fluid Bento Grids Across All Native Apps Creator Profile App (Kantaraj Luitel / Susant) : Bio, certifications, and Buy Me a Coffee button seamlessly collapse into single-column cards on phones. Drive Photo Gallery : 33 photos now arrange into an adaptive responsive masonry grid with touch-friendly lightbox previews. Devlog Viewer & Settings : Left sidebar and detail panes switch to a mobile-friendly view. 🛠️ Tech Stack & Implementation Highlights Framework : React 18 + TypeScript + Vite Styling : Tailored CSS Glassmorphism + Dynamic CSS Variables (Dark & Light White mode) State & Motion : Zustand + Framer Motion (touch drag bounds clamping) Typography : Noto Sans Devanagari 600 ( स्याउ ) + Space Grotesk 700 ( OS ) + Inter 👉 Check it out live and try resizing your browser or opening it on your phone! 🎉"}, {"post_id": 58716, "ts": "2026-08-31T08:04:32Z", "hours": 1.7383, "text": "स्याउ OS is a fast, web-based desktop OS built with React, TypeScript & Framer Motion for Hack Club Stardance. Features a window manager with 4 workspaces, Spotify Hub (Nepali, Bhajan, Phonk playlists), interactive terminal, store apps, devlogs viewer, and dual themes. Created by Kantaraj Luitel (Susant) 🇳🇵."}]...
|
Title: स्याउOS by @Kantarajluitel | Stardance
Dev Title: स्याउOS by @Kantarajluitel | Stardance
Devlogs:
स्याउ OS is a fast, web-based desktop OS built with React, TypeScript & Framer Motion for Hack Club Stardance. Features a window manager with 4 workspaces, Spotify Hub (Nepali, Bhajan, Phonk playlists), interactive terminal, store apps, devlogs viewer, and dual themes. Created by Kantaraj Luitel (Susant) 🇳🇵.
🚀 Devlog #2: Making स्याउ OS Fully Responsive Across Web, Tablets & Mobile! 💡 The Big Update Simulating a full desktop operating system inside a browser comes with a major challenge: desktop windowing systems are typically built for large monitors and mouse pointers. But we know hackathon judges, contributors, and friends often open projects directly on smartphones, iPads, and split screens . Today, we officially rolled out v1.1.0-responsive , making स्याउ OS (Syau OS) adapt seamlessly across any device while keeping its signature frosted glass aesthetic and fluid Devanagari typography intact! 📱 What We Built & Optimized 1. 🪟 Adaptive Viewport Clamping & Auto-Maximized Windows On small screens (<768px), windows automatically adapt their width ( calc(100vw - 16px) ) and auto-maximize to fit the viewport. Bounding boxes are clamped so window titlebars and close controls never get pushed off-screen. 2. 🌊 Touch-Optimized Floating Dock Dock icons dynamically scale down and adjust spacing on smaller screens. Added smooth horizontal scroll with hidden scrollbars for mobile screens with high app density. Enlarged hitboxes so icons are easy to tap with a finger. 3. ⏱️ Responsive TopBar & Nepali BS Calendar Re-architected TopBar flex priorities: keeps the स्याउ OS brand logo, live Bikram Sambat (२०८३ BS) date widget, and Dark/Light mode switcher cleanly visible without overflowing on narrow screens. 4. 🍱 Fluid Bento Grids Across All Native Apps Creator Profile App (Kantaraj Luitel / Susant) : Bio, certifications, and Buy Me a Coffee button seamlessly collapse into single-column cards on phones. Drive Photo Gallery : 33 photos now arrange into an adaptive responsive masonry grid with touch-friendly lightbox previews. Devlog Viewer & Settings : Left sidebar and detail panes switch to a mobile-friendly view. 🛠️ Tech Stack & Implementation Highlights Framework : React 18 + TypeScript + Vite Styling : Tailored CSS Glassmorphism + Dynamic CSS Variables (Dark & Light White mode) State & Motion : Zustand + Framer Motion (touch drag bounds clamping) Typography : Noto Sans Devanagari 600 ( स्याउ ) + Space Grotesk 700 ( OS ) + Inter 👉 Check it out live and try resizing your browser or opening it on your phone! 🎉
Shipped स्याउ OS (Syau OS) v1.3 for the WebOS Jam! 🚀 I wanted to make a web OS that feels alive, developer-friendly, and authentic to Nepal 🇳🇵. Here is what is new in v1.3: What I Built: • Syau Studio — Live in-browser Web IDE (HTML/CSS/JS sandbox with hot-reloading & retro templates) • Meo (स्याउ साथी) — AI OS Copilot (Groq Llama 3.3 / Gemini) + an interactive desktop pixel cat you can pet! • स्याउ Capture Studio — Screen recorder, canvas snip & markup tool, photo booth filters, and Web Audio waveform memo • Hardware Telemetry — Real battery status, power modes, and live Cloudflare DNS ping testing • Dual Theme Engine — Dark Glass & White Light mode + Nepali Bikram Sambat (BS) date converter • 100% Mobile Responsive — Works smoothly on phones, tablets, and desktops! Built with React 19, TypeScript, Vite, Tailwind CSS, Zustand & Framer Motion. Check it out on GitHub: https://github.com/susantedit/shayu-OS
UPdated the site in own taste
Wasted too much time on this i added nepali things convertor also go check it out cursor i added is just a image that i love and use on my pc always if you feel bad with it you can change it on the site :( sorry for late submission i was quiet busy and done this week now
updates 3 feature for web os 2 1Handcrafted Vanilla CSS Window Manager 2Nepali Cultural Tools and Games 3coode editor
I broke down the stylesheet from one big file into clean, modular CSS files per component and app (src/styles/ and component-level CSS files like BaghChal.css, SyauType.css, FocusAudio.css). Removed redundant rules and cleaned up the class structure. Ready for re-review!
Ships:
Project Name: स्याउ OS (Syau OS) Creator: Kantaraj Luitel (Susant) Mission Guidelines Confirmation: Working Webpage with Draggable Windows: Full client-side desktop environment with multi-window support. Windows support 8 direction resizing, dragging, minimize, maximize, and z-index depth stacking. Original & Distinct Design: Custom visual identity combining bilingual typography (Noto Sans Devanagari + Space Grotesk + Inter) with a glassmorphism aesthetic. Features dual Dark and White Light themes, dynamic particle boot sequence with a Web Audio API chime, and canvas-based cursor trail. Devlogs (3+ Included): Embedded native “Devlogs” application inside the OS covering: Devlog 1: Architecture, Windowing Mathematics, and Non-blocking State. Devlog 2: Dual Light/Dark Theme Engine & Bilingual Typography Integration. Devlog 3: Canvas Performance, Responsive Layouts, and Mobile Adaptations. Unique Features Beyond the Guide: Pixel Cat Desktop Pet: Interactive canvas sprite with animation states (walk, idle, sleep, happy, blink) following the cursor. Custom Terminal Shell (syau-sh): Over 20 interactive commands including neofetch, matrix, cowsay, weather, and easter eggs. Embedded Spotify Music Player Hub with curated genres and custom link loader. Spotlight Search (Cmd+K / Ctrl+K), canvas-rendered analog clock widget, and Bikram Sambat date converter. Accessibility: No passwords or authentication walls; all applications and features are immediately accessible to test....
|
1792846552.2506664
|
1793710552.2506664
|
|
2235
|
“Am I Cooked?” life simulator by @elizabeth | Star “Am I Cooked?” life simulator by @elizabeth | Stardance...
|
elizabeth
|
1
|
3.0
|
44
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T15:19:26Z", "hours": 3.0, "multiplier": 14.08, "payout": 44, "blessing": "neutral", "text": "I made “Am I Cooked?”, a life simulator where your choices decide your future. The idea actually came from my friends we were brainstorming project ideas for me to make for stardance when one of them looked at something happening and said, “Bro, they’re so cooked.” We all laughed, and that’s how the idea clicked. The hardest part was getting all the choices and endings to work properly. I’m proud of turning a random joke into a fun, playable game with multiple paths. Try making different choices each time you play, and let me know if you find any bugs or have ideas to make it even better!", "repo": "https://github.com/Elizadev41/-Am-I-Cooked-life-simulator", "demo": "https://elizadev41.github.io/-Am-I-Cooked-life-simulator/"}]...
|
[{"post_id": 14398, "ts": "202 [{"post_id": 14398, "ts": "2026-06-23T14:52:09Z", "hours": 0.4872, "text": "hellooo remembered this project Worked on Am I Cooked? today and added a bunch of new stuff. The game now has more categories and way more scenarios, so it should feel less repetitive. Each category has 10 scenarios now, and I added new ones like Work, Party, and Gaming. Chaos Mode actually works now too. Before it was mostly just a theme change, but now it randomly changes how much each choice affects your cooked score, so bad choices can get worse and sometimes weird stuff happens. I also added better endings based on your final score, so the results feel more personalized instead of just one basic ending. Current categories: School Sports Social Life Work Party Gaming Still planning to add more polish later, like stats, achievements, animations, and maybe better sharing."}, {"post_id": 7743, "ts": "2026-06-12T22:38:58Z", "hours": 0.4406, "text": "Fixed settings button Added settings menu Added music on/off Added game mode Added How to Play screen Added name welcome screen Added category picking Added score prediction Added results screen Added different colors for each game mode Made buttons and screens look better thats all for now guys byee this took me more time but i didnt post a devlog so i lost the timee"}, {"post_id": 7200, "ts": "2026-06-12T00:50:15Z", "hours": 0.4167, "text": "added a settings button"}, {"post_id": 3797, "ts": "2026-06-06T21:02:28Z", "hours": 0.6306, "text": "made a readme"}, {"post_id": 1247, "ts": "2026-06-03T03:11:23Z", "hours": 0.9383, "text": "made it pink and added mor scenarios+ turned it into a cyoa game"}, {"post_id": 500, "ts": "2026-06-01T23:40:50Z", "hours": 0.3653, "text": "base code done"}]...
|
Title: “Am I Cooked?” life simulator by @elizabeth Title: “Am I Cooked?” life simulator by @elizabeth | Stardance
Devlogs:
base code done
made it pink and added mor scenarios+ turned it into a cyoa game
made a readme
added a settings button
Fixed settings button Added settings menu Added music on/off Added game mode Added How to Play screen Added name welcome screen Added category picking Added score prediction Added results screen Added different colors for each game mode Made buttons and screens look better thats all for now guys byee this took me more time but i didnt post a devlog so i lost the timee
hellooo remembered this project Worked on Am I Cooked? today and added a bunch of new stuff. The game now has more categories and way more scenarios, so it should feel less repetitive. Each category has 10 scenarios now, and I added new ones like Work, Party, and Gaming. Chaos Mode actually works now too. Before it was mostly just a theme change, but now it randomly changes how much each choice affects your cooked score, so bad choices can get worse and sometimes weird stuff happens. I also added better endings based on your final score, so the results feel more personalized instead of just one basic ending. Current categories: School Sports Social Life Work Party Gaming Still planning to add more polish later, like stats, achievements, animations, and maybe better sharing.
Ships:
I made “Am I Cooked?”, a life simulator where your choices decide your future. The idea actually came from my friends we were brainstorming project ideas for me to make for stardance when one of them looked at something happening and said, “Bro, they’re so cooked.” We all laughed, and that’s how the idea clicked. The hardest part was getting all the choices and endings to work properly. I’m proud of turning a random joke into a fun, playable game with multiple paths. Try making different choices each time you play, and let me know if you find any bugs or have ideas to make it even better!...
|
1792969003.8499217
|
1793055403.8499217
|
|
21337
|
“Make your Robot better!” Magical Wand by @M00nAng “Make your Robot better!” Magical Wand by @M00nAng3l | Stardance...
|
M00nAng3l
|
0
|
2.3
|
0
|
[]
|
[{"post_id": 33556, "ts": "202 [{"post_id": 33556, "ts": "2026-07-23T16:18:11Z", "hours": 0.75, "text": "onshape is lagging and is being quite difficult atm"}, {"post_id": 33491, "ts": "2026-07-23T14:11:07Z", "hours": 0.3167, "text": "Revised Design sketch after test print was completed. The things i changed were that im making the wand into keychain so it prints faster and its easier to wand out at events. I also revised the placing of the top parts shapes from the FIRST Robotics logo."}, {"post_id": 32498, "ts": "2026-07-21T18:34:46Z", "hours": 0.8669, "text": "Finished the CAD design for the wand. It’s ready to go to the printer now. I may make another version down the line but as a coming back to using CAD it was good to start with."}, {"post_id": 32452, "ts": "2026-07-21T17:30:31Z", "hours": 0.3667, "text": "Design sketch finished! The wand is Ready for Prototyping in onshape!"}]...
|
Title: “Make your Robot better!” Magical Wand by @ Title: “Make your Robot better!” Magical Wand by @M00nAng3l | Stardance
Devlogs:
Design sketch finished! The wand is Ready for Prototyping in onshape!
Finished the CAD design for the wand. It’s ready to go to the printer now. I may make another version down the line but as a coming back to using CAD it was good to start with.
Revised Design sketch after test print was completed. The things i changed were that im making the wand into keychain so it prints faster and its easier to wand out at events. I also revised the placing of the top parts shapes from the FIRST Robotics logo.
onshape is lagging and is being quite difficult atm...
|
1792781272.8282323
|
1793386072.8282323
|
|
8966
|
by @X | Stardance
|
X
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: by @X | Stardance
|
1792590576.19677
|
1793195376.19677
|
|
30331
|
∇Calc by @EngThi | Stardance
|
EngThi
|
0
|
64.45
|
0
|
[]
|
[{"post_id": 79791, "ts": "202 [{"post_id": 79791, "ts": "2026-10-15T12:42:36Z", "hours": 0.5311, "text": "I just finished redoing the parts of the case the parts there and everything else in the project after this second round. This last one that was missing was from Part Studio 4 , which was the little slider drawer for camera privacy and protection on the back 🔒 , along with Part Studio 5 where I made the sliding lid/cover. Very, very simple. I also added some small slots there just to give it a nice tactile texture/grip — pretty small, with a 0.350 mm cut extrusion (removing material). That was kind of the piece I was still missing. It was simple and quick since I already had the basic idea from earlier attempts. Oh, and one thing I think I forgot to mention before: I imported .DXF files into the sketch to help guide the drawings, basically defining the extrusions for the parts. It turned out pretty good! To wrap up, I added what I had forgotten before: the mounting holes on the back cover bosses. Put 1.6mm holes there to hold the screws properly ⚙️ ."}, {"post_id": 79509, "ts": "2026-10-14T11:14:33Z", "hours": 1.2011, "text": "For now I’m working on the CAD ; I had finished the PCB. I put up a quick video of how it turned out I recorded it with Canva, which I’d used before for a school project, and it works. I even have the Spectacle app for Linux , but it records in 720p, which looks kind of bad, so recording it online through Canva ends up looking way better. Basically, it has the dimensions of part two , which I was rethinking and everything. And well, this was more or less the idea I had: there’s the front part for the buttons, and in this other version, it was supposed to have a passage for a circuit board to fit a small solar cell ☀️ . Depending on what I can find around the house and if there’s any leftover space in the casing (it’s pretty much ready), I might implement it even if it ends up mounted on the outside rather than inside the case, just for reuse and photovoltaic charging. Then I also put the back part together: the little hole for the camera 📷 , the slider for its protection, and on the side, the microSD card slot. The keymat for the buttons which I changed the layout of, so it’s not square anymore now has roughly the positions for all 49 keys and the holes where the support bosses will go. There’s also that little strip/rectangle, which is meant to be the protective cover fitting right into the other slot. Basically, that’s it! I’ll continue and tweak it later. It’s not too difficult, and I think it’ll be finished soon."}, {"post_id": 77958, "ts": "2026-10-08T23:51:34Z", "hours": 0.9608, "text": "It’s kind of funny that I messed with this again, but basically this is a version where I repositioned the buttons and pins because, well, I decided the keys aren’t going to stay as a plain square matrix. So I kind of organized and divided things there to get a better idea of how the pins will be placed roughly around the center. On the top part, there’s sort of that D-pad area (not an actual single pad, but the individual buttons for that navigation). That circular button style you see on game controllers, handhelds , and on some other calculators too. I also moved the FPC connector over to the corner so it’s way easier and cleaner to connect everything up . On top of that, I rounded the board edges in this version. Overall, that was pretty much it! Lapse: Lapse"}, {"post_id": 77073, "ts": "2026-10-05T15:33:01Z", "hours": 0.7336, "text": "Keypad PCB done! Top & Bottom preview Now that I’ve finished, I’ve completed the PCB both images, the top and the bottom . I left the spaces for the M2 screws and already rotated everything, it was pretty easy! Basically, I kind of left an array, a 7x7 matrix . The keys would be more or less standardized and the only difference would be in the pad — like, in the rubber, the material that you press to trigger that key. That kind of thing. It turned out pretty nice. It’s simple, it’s actually simple to do this part, this kind of thing… That’s how it turned out. I’m not sure if I’ll tweak it much to add things like a D-pad or other types of keys for navigation, functions, the numeric keypad itself , that kind of stuff."}, {"post_id": 77024, "ts": "2026-10-05T12:20:38Z", "hours": 1.9592, "text": "I’m back! Finalized the second PCB for the keys Well, yeah, I’m here again. I’m back, it’s been a while since I was away, right? I waited for things to settle down here so I could continue with the project. Yeah, and I finalized the idea of making a board on the second PCB there, where the buttons will be, you know, the clicks to use the calculator keys . And this here was kind of leftover code organization I was doing in the repository . I ended up not remembering everything from the project, but now I’m here again. So I’ll finish this up. It was pretty simple, I didn’t record it. But basically, I made a 7x7 matrix of switches , the buttons. Along with that, there’s the FPC connector to actually connect the board to the ribbon, to the rest of the MCP expander. I’m going to tidy it up a bit. The board also ended up being quite small 84x78 basically just to fit there, it would provide support and, you know, fit the switches at the distances that had already been predetermined in the case , right in the middle of the product’s housing. And then, along with that, the schematic is also simple, I just put an FPC connector , that’s all that’s really needed, and the buttons, the switches. Really simple. I think it’s interesting to mention (diodes & debounce): I was also going to use, you know, I was looking, people were saying, it’s good to use diodes , but just to kind of reduce debounce , fix certain issues, but it wouldn’t be that necessary, since the contacts closing would almost never happen like, I don’t know, three clicks at once, one next to the other. So that doesn’t really cause a problem where the ESP wouldn’t know exactly which key is being pressed and what it should do with the signal it’s receiving. And depending on how you study it and see how to handle it in the firmware , it actually wouldn’t even be that necessary to put these diodes on each of these buttons for that."}, {"post_id": 58915, "ts": "2026-08-31T14:11:46Z", "hours": 1.8789, "text": "almost ready to submit!!! Finished and I’m getting ready to submit the project for review! I took some new renders and also did the prices part for the project items. I have everything here now and it is looking nice. Like I said before, I left some points to see and change better on the case when I have everything in my hands, so I can prototype 🤖 it better. I don’t have much skill with soldering, so I really hope I can get the Top PCBA . This is all really cool and interesting that I was able to do, and I’m really happy about it. At the end I also organized things a little more and changed stuff to track what is needed in the repo , help anyone that wants to look at it or reproduce the project somehow. The System architecture section got really cool in the translation and organization, AI did that . I don’t really know how to make this type of diagram myself yet :/ I hope I didn’t forget anything and that the organization I made, and later asked to improve, documents the state well. Basically I: I finished organizing the repo, checking the prices, calculations , etc., taking screenshots , I kept iterating in the repo, editing, moving things , that kind of organization 🗂️"}, {"post_id": 58142, "ts": "2026-08-30T14:30:08Z", "hours": 0.6419, "text": "more docs things right these Well, I tidied up the README and organized the folders and file names better. The repo in general . The other image is because I think I didn’t show it properly here and I was reposting , checking items and analyzing anything left there on EasyEDA"}, {"post_id": 57737, "ts": "2026-08-30T00:16:59Z", "hours": 1.2197, "text": "its possible only four images… I fiddled a bit more with these items, files 📁 , repo organization , stuff like that . Also, I took screenshots of some views from the project’s mechanical render … I’m not really focusing on any one part, but I tinker a bit here and if I remember something I should have done or think could be better, I take care of it. Like parts of the firmware, code, repo organization, images, and the internal side of the apps: CAD and EDA . Basically, that’s it, to sum up . I forgot to put the others Lapse"}, {"post_id": 57543, "ts": "2026-08-29T18:35:03Z", "hours": 1.2081, "text": "I’m done here! The two files we worked on are finished. Now we have the initializer and use of the MCP23017 (I’ll just write MCP from now on in this log) . The addresses have been mapped and the registers too. You can see what happens along with the logic of keeping the line in the LOW state and the rest HIGH . In this part, it’s necessary to use masks and bitwise operations to see how it works. It stays in a loop analyzing what was pressed and, of course, if something strange happens outside the configuration, it throws an error saying UNKNOWN ."}, {"post_id": 56813, "ts": "2026-08-28T18:53:29Z", "hours": 1.4183, "text": "I made a lot more progress on the firmware !! As I said, the functions , declarations , and general use of the ESP-IDF are standardized , so it’s simple to build by consulting materials: docs, example codes, usage with some peripherals and components, AI , etc. In this case, the use of I2C and SPI communication is also well organized. The drivers for the components I use don’t give you headaches for this. Previously, we had already been working on the ‘macros’ part, or rather the project HAL , even without knowing what it was. In the second image, there’s the keymap, made as a 7x7 matrix for the calculator - what the keys do. That’s already connected to the names of each key . The scanning was done, a loop that identifies which keys were used, and the rendering of the items on the display . Taking the data buffers and transitioning the communication with the ESP about what was pressed and how it will relay that to the screen. I think it’s interesting to mention: Explaining how key reading works with the MCP: each key is assigned by the matrix indices - row x column. The columns are set up with internal pull-up resistors, so when inactive they measure 3.3V (level 1). The ESP pulls the row to 0V (level 0), and when a key is pressed, it knows it because it reads !=0 from the column and matches it with the row it’s accessing to get the unique identifier for that key. That way you know 100% for sure what was pressed. And this cycle keeps running every few milliseconds."}, {"post_id": 56250, "ts": "2026-08-27T22:35:57Z", "hours": 0.6989, "text": "I got started at the base and analyzed the HAL (Hardware Abstraction Layer) of the project. I was studying some things, basically the functions and how to use the framework . I noticed that the functions are pretty standardized, like how to use registers, handle addressing, and use macros , directives/variables . Basically, the headers I was going to use and docs and things like that I was checking out, now speaking exclusively about the Aliexpress display that was in Mandarin (some of the ones I saw while researching) and offline I was tinkering and looking at some things, asking AI to explain and check things to move forward . I got the variant I was going to use, and later on it got analyzed and the board_pins.h ended up fine. I also started messing with the keypad, just defining it and later on how to monitor and use the identifiers of each key ."}, {"post_id": 55265, "ts": "2026-08-26T23:21:10Z", "hours": 0.9006, "text": "I started looking more closely at the firmware part ! Actually, I’ve never worked with ESP-IDF, so I’m going to take another good look at it and refresh myself on things I might not be prepared enough for. I grabbed it to check out and study with the example code \"Blynk Led\" —the one in the picture is a different one. It’s to control the internal LED with the BOOT button. I’ve seen a bit, and RTOS seems really cool, here it’s FreeRTOS . But you need to pay attention and be aware, understand how things work. I feel like it’s going to be a long and tough road… but let’s go! The good thing is that we have AI to help us out and clarify points, test stuff , and so on."}, {"post_id": 54514, "ts": "2026-08-25T15:21:59Z", "hours": 0.6925, "text": "I finished working on a few more things in the Assembly . I was aligning the cut positions in the view (remove extrude) and it took a while because the Mates , Fastened Mates created kind of restrictions that didn’t allow certain parts to move. Also put the 3D for the display. Then at the end I made the first commit to the repo! Lapse"}, {"post_id": 54126, "ts": "2026-08-24T23:04:44Z", "hours": 1.725, "text": "I just tweaked the parts a little more and then went to the Assembly . The PCB step was 50MB and took a while to load, and then when I tried to insert it, it didn’t load everything right after choosing a square option with a symbol similar to the Part Studio one, but eventually it worked. I used some fastened mates to join the items, and since this isn’t constant and there are hollow parts where you want to center/place in a specific spot, the Mate Connector doesn’t apply, so I used something like the transform to select the piece. That’s how I kept going until I got here! In the middle of the work, I had to edit the Part Studio because some points differed from the positioning and mounted parts of the PCB , like the USB and microSD . That’s it—work, found mistakes, fix them, and move forward! Lapse"}, {"post_id": 53863, "ts": "2026-08-24T15:49:47Z", "hours": 0.6503, "text": "What happened with the keypad being wrong was that in the sketch I dimensioned it incorrectly (swapped height for width) , and that’s why some of the blocks went beyond the edges and weren’t symmetrical. I imagined that might be it and fixed it . I made a rectangle there thinking about maybe adding a simple lens protection for the camera. After that, a rough idea of the cover that is usually used to protect the front part. Besides that, just a simple fillet on the sides. I did that, but I admit I might change this idea and its overall shape . Once I have everything in hand, I’ll update it to have a proper enclosure . Lapse"}, {"post_id": 53704, "ts": "2026-08-24T11:43:25Z", "hours": 1.1836, "text": "I finished the rear shell for the case. I made some bosses for the PCB fitting. It’s noticeable that the top right one is misaligned. I mentioned before that it’s because the traces and components were occupying that space, and when I remodeled it to 84x85 , the hole slots didn’t go along—they got lost on the canvas . Later I remembered, organized, and figured out a way to put them like this. Only one ended up 'strange,' which is NOT a problem at all. I made the shell 1.8mm thick and also cut the slot for the camera. I left the keypad at 74x80 , making a 7x7 feature pattern . This still bugs me because it doesn’t look right and the logic seems to change… I just need more experience and general practice to be ready for different scenarios. Some parts went out of place, but it’s just a matter of testing measurements until it works and maybe checking some guide videos on how to use this feature correctly . Lapse"}, {"post_id": 53406, "ts": "2026-08-23T22:58:39Z", "hours": 1.8672, "text": "I had made a Variable Studio but I end up not using it and don’t remember much. I asked the AI for help since I’ve never really worked with this item and it seemed better for standardizing and putting something defined that is used constantly. But in the end, I remember the quota values and some calculations are simple. Here I did the rear and front parts of the case, I didn’t do the extrusion there but it’s more or less correct. I had been thinking, and as I said, I worked on an idea and previous version, so it was actually pretty easy for that."}, {"post_id": 53124, "ts": "2026-08-23T15:34:18Z", "hours": 1.4269, "text": "I finished placing the holes on the PCB. Actually, I had forgotten… I was focused on finishing and trying to deliver something more professional in the routing part that when I finished I was like \"finally did it? Can I export the production files now?\" and the happiness and rush of the moment made it happen . It wasn’t possible to perfectly align the holes and the thought I had because of the traces I needed to place on the PCB, so it stayed like this. Only the top-right one ended up ‘different’. Now it’s just finishing the PCB and fixing the firmware . I was already checking and testing a bit offline."}, {"post_id": 51854, "ts": "2026-08-21T18:37:09Z", "hours": 3.1492, "text": "I routed a lot more! I tried, tried to optimize so I wouldn’t have to run traces on Inner1 , but it really wasn’t going to work. Partly because of the layout and distances of some ICs to the decoupling capacitors , practices for better signal quality . I forgot ( ) and it was already almost done , so I came here to post up to this point Lapse: Lapse"}, {"post_id": 50471, "ts": "2026-08-19T17:13:34Z", "hours": 3.94, "text": "Well, what happened. I went to check the price of the PCB – in this case, when exporting the GERBER it showed a price and it was pretty expensive, $33! The other 3 boards I made were within the 100x100 size and, if I’m not mistaken, the most expensive one was listed at $7. Here I’m kind of making different versions and testing, experimenting with what happens with certain configurations (size, traces, layers, type of components, price,…). I was putting it off and taking my time because I wanted to use what I had from the other one, but then I decided to start routing from scratch."}, {"post_id": 48112, "ts": "2026-08-16T12:20:20Z", "hours": 1.2892, "text": "I’ve practically finished the new schematic for the raw camera version. I managed to tidy up and properly organize the layout for this new part. First, I looked over it to see what I could add and prepare in positioning the new components for routing. The camera I left is one that uses an FPC connector . I’ve already put this item in place, arranged it with LDOs , translators , and controllers . Basically, it’s about handling the signals, how they occur, to make them compatible with the module I took and the rest of what I had already prepared. It got a bit messy because I really need to see how to place each item, and I wanted to make use of a large part of the general layout from the other PCB version … lapse"}, {"post_id": 47488, "ts": "2026-08-15T12:52:48Z", "hours": 1.2344, "text": "I made some changes and was researching a raw version with the OV5640 . To make it a more controlled and integrated work, and thinking about reducing it and making the aesthetics of the project look more like what it really is, reducing the thickness, I changed and added a lot of other components and I’m starting to organize them to be on the Bottom Layer. I need more LDOs , capacitors , and resistors . Simple, right? The passives and ‘controllers’ for electricity, current, voltage, etc. I’m not really knowing much about the impedance part, so I use ChatGPT to guide me, teach things, and think about the structure of the project, the PCB… Lapse: Lapse"}, {"post_id": 46376, "ts": "2026-08-13T15:31:34Z", "hours": 0.7503, "text": "Well, things were already going pretty well. Basically, I messed around a bit with the routes since the camera pins would be placed behind the PCB, like on the bottom. Then I changed the header layer and rerouted it. Now I managed to remove the header from the 3D preview (since the header was used to make the holes and get an idea of the position of the Arducam pin rows). When I have it in hand, I’ll solder everything directly onto the board. I was messing around a bit with other things too, in the firmware, doing research, checking data, etc. I used ChatGPT for that and even Antigravity. Then I moved forward with some things, checked, asked about the case. The thing is, I’m busy (or I should be) and couldn’t really do sessions and things of the project that I was working on to save. And then I really ended up forgetting to make the Lapses… a lot of times it was gradual work, bit by bit, and sometimes I’d go a while without touching it because I depended on my parents to call me or something like that, a pause. As far as I remember, I used to be able to edit the Lapses before, but I think it’s better to do it directly. All of this wasn’t just 17 minutes! I realized that there was a WakaTime extension for EasyEDA and Onshape. At the time (~ about 5 months ago) I didn’t know about Lapse or anything like that and ended up using this. I ended up creating more than one project to test things out, run tests, and see other people’s implementations. And it turned out they came out with very similar names and all. I didn’t remember the name anymore and I think I synced a few incorrectly. I fragmented the time. BUT REALLY MOST OF IT WAS BECAUSE I DIDN’T RECORD, ETC. I think you can add like 3 more hours"}, {"post_id": 43610, "ts": "2026-08-08T23:42:13Z", "hours": 1.5008, "text": "Well, I tweaked the PCB design just a little more. Actually, very little—I was just seeing if there was a way to handle the USB traces since these two NETs were 170mm and had a lot of vias . The center already had the other components and trace routing, so I guess there wasn’t much to do. And honestly, I’m not experienced, so I don’t know how to make these things better . Along with that, there’s roughly an idea of how the project case will look and the items I had already been working on."}, {"post_id": 41474, "ts": "2026-08-05T18:14:06Z", "hours": 0.9006, "text": "Finally the errors disappeared… it turns out you had the custom DRC rules that I set. Then, like 2 or 3 NETs had thickness rules that couldn’t be followed because QFN components and the VSON package type have pads really close to each other (pitch) , so there was no way to route 0.8mm traces on components with, like, 0.4mm pitch . Obviously, you had to reduce it to make it work, but I didn’t know by how much and whether it might be wrong at some point, cause problems, or lower the PCB’s lifespan. 😶 I figured out how to change the rules and get things fixed and done. Man, I think I should review it again and really check some automatic NETs from the editor. After all these days without touching this, I noticed there were these NETs without descriptive names . I don’t remember if it’s because I didn’t assign a NET, or if it’s just that connection between those pins or something like that. But overall it’s going to be easy. I really hope SO MUCH! Lapse Lapse"}, {"post_id": 41406, "ts": "2026-08-05T16:27:53Z", "hours": 4.0842, "text": "I’m back… I won’t be able to be very active here due to classes and coursework. I spent a good few hours working on this, but when I checked, it only showed 23 minutes… Maybe I linked the hours to the project incorrectly. Actually, there’s a file with the same name plus “_copy” at the end, and I thought I was already working on the right one. Well, I actually finished the routing. It turned out there were some copper islands that weren’t connecting to the rest of the pour, so I had to route them too. But to me, some of the ones flagging routing errors (showing ratsnests) didn’t look isolated and should have been able to join the copper plane. Oh well. The center ended up looking messy; that’s where the components—and consequently the traces—are concentrated. I’ll probably have to find a way to optimize and work on that. Plus, there are 39 DRC errors now… I hope I can submit this project; I’ve already done two others, but the deadline unfortunately ran out while I was optimizing things, addressing review comments, and dealing with components and budget issues. Oh, the way development work and hardware projects are recorded has also changed; now there are timelapses available here on Lapse : Lapse Lapse Lapse Lapse"}, {"post_id": 34370, "ts": "2026-07-25T00:59:26Z", "hours": 0.8669, "text": "I kept routing. I made the port expander matrix (the one on the FPC in the center left), the header for the camera, and practically all the ESP pins I’m still thinking about tidying it up a bit to reduce the number of traces going into the antenna area. There have to be traces coming there, it’s already acceptable as it is, but I will optimize… That’s kind of it."}, {"post_id": 34268, "ts": "2026-07-24T20:33:45Z", "hours": 2.6953, "text": "I was researching, looking at some more DOCS and just tidying up the last bits to start routing. I used Perplexity for some research and to cross-check data and see the trace widths for the NETs. I put DRC rules, so it’s much easier to work, because when you activate routing on a NET it automatically sets that thickness and rules in the project. I routed these more critical parts, power, data, a bit of the display part and stuff like that. Even with plenty of space, it already got a bit messy. This is my third board, so I’m still not that experienced with it. But this is the way to go. Most likely I won’t have to go back and change components. I just need to finish routing , think about the case and its mechanics What annoys me the most is having to return/exchange a component or it not being what I expect. In the case of marketplace sales, stores like Aliexpress"}, {"post_id": 33125, "ts": "2026-07-22T19:01:55Z", "hours": 0.7283, "text": "What I changed At the top, there’s the 2x11 header for the ArduCAM module—you just need to plug it in. I also added a few more devices (actually kind of switched around their positions and values). I hadn’t shown it before, but I imported this 3D model and linked it to the display device . I did a general cleanup and a lot more research , tests , t hings like that . I’m doing kinda okay. I kept waiting for the sellers to respond to me. But I didn’t get much, I could only get one reply per day. I would send messages there, but it was like 11hrs over there, outside their working hours. A lot of time for nothing… Also, that display manual/datasheet didn’t come with the dimensions of the display assembly, like the total height and the screen size I needed. I found it on a website, and it said 6mm, so I left that to do the 3D design to import the STEP as a 3D model. Another seller said they didn’t have the manufacturer’s data I needed for the camera to check the dimensions and the bus. I wanted one that was 3.3V , and usually it’s the common 22 or 24 pins. But random ones from Aliexpress can easily change something in the pinout or order, which breaks everything. Here I’m kind of developing the project blindly . It has to be a really precise version, and that’s difficult… I think I’m going to go with the ArduCam module. It’s not small or as modular as others, but for my case it’s probably okay. (until now YES)"}, {"post_id": 31507, "ts": "2026-07-19T23:30:21Z", "hours": 1.6856, "text": "As I said, I was going to send a message to the sellers, but I procrastinated, and by the time I sent it, it was already the weekend there. The sellers are Chinese, so their time zone is 11 hours ahead. Actually, it’s already Monday there now, so I think there’s no need to resend the message since mine is already in the queue (I hope…). Anyway, I messed around a bit more, organized the schematics a little better, added a few things, and thought about, more or less, how the items could/should be distributed on the PCB, so I did that with the images. So, this whole size isn’t totally necessary. It will help when routing, but there really aren’t any problems with that. What I might do is remove the part where the display goes since it will be securely framed in the future case. They sent the link to the display manual"}, {"post_id": 30148, "ts": "2026-07-17T14:17:14Z", "hours": 0.7, "text": "organizing schematics Here are the schematic pages I’m organizing: 01_SYSTEM_MCU , 02_POWER_USB , 03_KEYPAD_IO , 04_DISPLAY_STORAGE , Actually, I’m still missing one more schematic image: 05_CAMERA_TBD . It seems only four images are allowed per devlog. That’s it—trying to follow a logical organization, with a left-to-right flow and the power sections included :|"}, {"post_id": 29867, "ts": "2026-07-17T00:59:00Z", "hours": 1.255, "text": "I added a few more components. The thing is, I’m preparing how I’m going to connect the keyboard/MCP of the keys to the circuit, and for that, I’m going to use an FPC for it and other LDO parts. Parts that deal with inductance/decoupling and protection of the circuit components. I had to research and really look into things, and I’m already checking to find a module/version of the OV5640 with DVP FPC . I had to keep changing and reviewing the practical use of the components and kind of the electrical **‘needs’ **of the setup."}, {"post_id": 29153, "ts": "2026-07-15T21:01:04Z", "hours": 1.1164, "text": "I switched the MCP MCP23017 to a QFN type. I realized that in the end, everything was most likely going to be pretty big. The final product thickness is around 15mm or more. So now I’m studying and researching to change the components, organization, and then properly design the mechanics in CAD/case so everything stays stable. I didn’t really know the display dimensions. Some are kind of generic, with chip data/technical specifications giving a certain thickness, but most don’t have thickness. Looks like I’ll have to message the Aliexpress seller to get the exact data… I feel way more lost than I should. It’s annoying because I had already thought a bit at the start and there wasn’t supposed to be so many reconstructions/pivots in the project."}, {"post_id": 28238, "ts": "2026-07-14T11:46:50Z", "hours": 1.6344, "text": "Well, what I kept working on was the case. I was thinking that the right way is to make three separate parts: the back part where a phone case fits (thinking in this case), the front part where there are holes for the display, keys/buttons, etc., and the sliding cover with the tracks. This one, when using a normal calculator, usually fits on the back of the body and when not, it fits on the front, storing and protecting the screen. In my ideas, I asked Gemini to generate these images to help me clarify my thoughts and development. It turned out good! Another thing is that I noticed the display PCB module isn’t centered relative to the screen at all. Because of this, due to the width of the PCB and the case ending up close to the display module, it can’t be centered since there’s little free area for horizontal movement and the board would already touch the case walls. I made this 3D model to see roughly how it would look, and it looked weird. Not too much, but… The thing is, I usually do some stylizations, drawings, stuff like that. It would be possible to put a solar panel there, yeah, but I’m not going to go back much to that part of the EDA and rethink the system, mechanics, and circuit logic."}, {"post_id": 27633, "ts": "2026-07-13T12:05:34Z", "hours": 2.5256, "text": "I was supposed to post yesterday but my uncles came over and I didn’t get back to it at night here I’ve pretty much done the part that holds the PCB . The shell , I recessed inside it, and in the other picture you can see I made an Assembly to see how it was coming along and to have an idea of where the screw holes for the PCB are, and later what I should do on the case. I haven’t done this yet, but you can see some Mate Connectors in the picture of the case alone (the light blue, slightly grayish part) . I tried to make the holes, but the sketch planes and flat planes were on the top face and I couldn't make the holes . I spent some time trying that. I don’t know, but probably if I make a sketch on the bottom of the case I can make the holes. That’s it, 3D for EasyEDA , I’ve already fixed it in Onshape and I’m doing well with the case part. 🫡🙂"}, {"post_id": 27287, "ts": "2026-07-12T18:46:51Z", "hours": 1.1164, "text": "I finished tweaking a few more things in the PCB schematic and getting it ready to export a STEP to use as a base in Onshape. Actually, I made the display way too big, standardized at 10 or 15mm, but it should be something like ~2.8mm . The thing is, when I was moving some items around, it ended up moving the Board Outline too, even though I didn’t select it… so I locked it to prevent that from happening, and I’ve already done the same in Onshape . Now I’ll start on the case and then come back to routing"}, {"post_id": 26282, "ts": "2026-07-11T00:03:35Z", "hours": 1.0503, "text": "As I said, I didn’t see the dimensions of the full PCB for the 2.8 inch version , and because of that, I was going to need to change the board (since I don’t want to increase the size of the final product). So I went after the dimensions of the 2.4 inch version and made the rectangle just to represent the space it would take up in the PCB schematic. A strange thing is that when I went to change the 3D model of the device , instead of changing it, it added another part to it. I had to overlap them so it wouldn’t look so weird there in EasyEDA. Here is the image of parameters"}, {"post_id": 26039, "ts": "2026-07-10T16:52:05Z", "hours": 1.2689, "text": "I was getting ready to start routing, but then I decided to take a quick look at the schematic again and check if the power supply and protection/best practices part of the circuit was all good. I consulted Perplexity and it suggested adding resistors and changing a capacitor on the EN pin of the ESP. I changed it from 100nF to 1uF and added a 10kΩ resistor along with it. I had already added resistors to the SDA and SCL pins and I don’t remember if I changed that.. I also looked up the data for the external components. The display and the battery. I wanted to make a 3D model to make it look better and to get an idea in the EasyEDA rendering. I searched for the display data on the site, on its manufacturer’s website but found nothing. So I googled it and the data came up on a site already known here and there it was fine, that must be it, I needed the thickness in this case ~15mm. Ah, and I hadn’t noticed that the footprint I made for the display was only for the screen, not the complete module. Then I realized it’s going to be bigger than one of the PCB dimensions I had in mind… It’s supposed to be like that, I hadn’t noticed but in the image I attached with the green arrow it shows that it’s 50x86mm"}, {"post_id": 24935, "ts": "2026-07-08T20:19:46Z", "hours": 1.1667, "text": "more for PCB"}, {"post_id": 24848, "ts": "2026-07-08T17:59:50Z", "hours": 1.25, "text": "Here I made some mistakes… I thought I had done the footprints, but after entering the 3D view/rendering of the PCB, I saw that there are only holes in the devices I made (these two in the attached images). I made some area that is seen as non-outline or something like that of the PCB. So I’ll have to fix that 😑 I also made an area on the board that will not have PCB material (FR-4) under the chip/module ESP antenna. This and the 15 mm keepout area around the antenna are to avoid interfering with Wi-Fi and Bluetooth connectivity ."}, {"post_id": 24636, "ts": "2026-07-08T11:08:13Z", "hours": 1.0189, "text": "I kept working on the PCB schematic . After tidying it up a bit, I decided to make a device and footprint for the battery I’m going to use. It’s kind of standardized with dimensions of 10x34x50 , A type with 2000mAh. That’s it, I made a rectangle of 84 by 165mm and put some holes 5mm away from the edges. I still need to figure out what type I’ll use, whether it’s countersunk or not. But either way, between 2.2 and 3mm ."}, {"post_id": 24419, "ts": "2026-07-07T23:26:18Z", "hours": 1.8364, "text": "I’m still working on the schematic… I was finishing organizing things and then messing around with the PCB design at the end . I’m going to call it PCB SCHEMATIC . Earlier I changed the display to a 2.8 inch one because I realized it was going to be too big, and the style I’m going for is kind of like this Casio ClassWiz Here in the attached images are the drawings of the device and footprint ."}, {"post_id": 23722, "ts": "2026-07-06T20:42:28Z", "hours": 1.9294, "text": "Here I tried to fix the NETs of the components and connections. I looked for the datasheets of the devices I’m using (it was easy since I just had to go back to LCSC with the Part Numbers , and on its page, the datasheet is already there ). I downloaded them, some in English, others in Asian languages (I think if I remember correctly there was only Mandarin and Korean). I uploaded them to NotebookLM, and it gave me an overview of how things worked and pin data, that kind of stuff . I saw that I had done some things wrong yesterday, so I had to fix the labels and that kind of stuff."}, {"post_id": 22336, "ts": "2026-07-04T19:13:23Z", "hours": 2.0931, "text": "I created another device—just to simulate the 3.5 LCD display I found on AliExpress. After doing some research and looking at other options, I decided against using Seeed’s S3 Sense. It comes with an OV2640 camera, but I’m going to use an external OV5640 module instead—a 5MP one I bought along with the other two . I did some research, checked out components and versions in the LCSC library , verified a few things with Perplexity, and added the items to the schematic. It’s still pretty messy, but I’ll clean it up, organize it, and get the NET’s sorted out later."}, {"post_id": 21583, "ts": "2026-07-03T16:47:05Z", "hours": 0.7672, "text": "Well, I started this project here… the idea I had was to make a node that is a ‘calculator’ from scratch. I’m not exactly sure if I’ll include multiple buttons or common functions in it, because the difference with this one is having access to the AI API, and I’m also thinking about adding Wolfram Alpha. It’s going to have a camera to take a picture of the equation, send it to the API, and it returns an image of the solution. It connects to Wi-Fi and sends the data to a server where it’s processed, formatted in LaTeX, and then returns the image. So I started by putting the components in the EasyEDA schematic and created a simple device that was supposed to be the Seeed Xiao ESP32 S3"}]...
|
Title: ∇Calc by @EngThi | Stardance
Devlogs:
Well Title: ∇Calc by @EngThi | Stardance
Devlogs:
Well, I started this project here… the idea I had was to make a node that is a ‘calculator’ from scratch. I’m not exactly sure if I’ll include multiple buttons or common functions in it, because the difference with this one is having access to the AI API, and I’m also thinking about adding Wolfram Alpha. It’s going to have a camera to take a picture of the equation, send it to the API, and it returns an image of the solution. It connects to Wi-Fi and sends the data to a server where it’s processed, formatted in LaTeX, and then returns the image. So I started by putting the components in the EasyEDA schematic and created a simple device that was supposed to be the Seeed Xiao ESP32 S3
I created another device—just to simulate the 3.5 LCD display I found on AliExpress. After doing some research and looking at other options, I decided against using Seeed’s S3 Sense. It comes with an OV2640 camera, but I’m going to use an external OV5640 module instead—a 5MP one I bought along with the other two . I did some research, checked out components and versions in the LCSC library , verified a few things with Perplexity, and added the items to the schematic. It’s still pretty messy, but I’ll clean it up, organize it, and get the NET’s sorted out later.
Here I tried to fix the NETs of the components and connections. I looked for the datasheets of the devices I’m using (it was easy since I just had to go back to LCSC with the Part Numbers , and on its page, the datasheet is already there ). I downloaded them, some in English, others in Asian languages (I think if I remember correctly there was only Mandarin and Korean). I uploaded them to NotebookLM, and it gave me an overview of how things worked and pin data, that kind of stuff . I saw that I had done some things wrong yesterday, so I had to fix the labels and that kind of stuff.
I’m still working on the schematic… I was finishing organizing things and then messing around with the PCB design at the end . I’m going to call it PCB SCHEMATIC . Earlier I changed the display to a 2.8 inch one because I realized it was going to be too big, and the style I’m going for is kind of like this Casio ClassWiz Here in the attached images are the drawings of the device and footprint .
I kept working on the PCB schematic . After tidying it up a bit, I decided to make a device and footprint for the battery I’m going to use. It’s kind of standardized with dimensions of 10x34x50 , A type with 2000mAh. That’s it, I made a rectangle of 84 by 165mm and put some holes 5mm away from the edges. I still need to figure out what type I’ll use, whether it’s countersunk or not. But either way, between 2.2 and 3mm .
Here I made some mistakes… I thought I had done the footprints, but after entering the 3D view/rendering of the PCB, I saw that there are only holes in the devices I made (these two in the attached images). I made some area that is seen as non-outline or something like that of the PCB. So I’ll have to fix that 😑 I also made an area on the board that will not have PCB material (FR-4) under the chip/module ESP antenna. This and the 15 mm keepout area around the antenna are to avoid interfering with Wi-Fi and Bluetooth connectivity .
more for PCB
I was getting ready to start routing, but then I decided to take a quick look at the schematic again and check if the power supply and protection/best practices part of the circuit was all good. I consulted Perplexity and it suggested adding resistors and changing a capacitor on the EN pin of the ESP. I changed it from 100nF to 1uF and added a 10kΩ resistor along with it. I had already added resistors to the SDA and SCL pins and I don’t remember if I changed that.. I also looked up the data for the external components. The display and the battery. I wanted to make a 3D model to make it look better and to get an idea in the EasyEDA rendering. I searched for the display data on the site, on its manufacturer’s website but found nothing. So I googled it and the data came up on a site already known here and there it was fine, that must be it, I needed the thickness in this case ~15mm. Ah, and I hadn’t noticed that the footprint I made for the display was only for the screen, not the complete module. Then I realized it’s going to be bigger than one of the PCB dimensions I had in mind… It’s supposed to be like that, I hadn’t noticed but in the image I attached with the green arrow it shows that it’s 50x86mm
As I said, I didn’t see the dimensions of the full PCB for the 2.8 inch version , and because of that, I was going to need to change the board (since I don’t want to increase the size of the final product). So I went after the dimensions of the 2.4 inch version and made the rectangle just to represent the space it would take up in the PCB schematic. A strange thing is that when I went to change the 3D model of the device , instead of changing it, it added another part to it. I had to overlap them so it wouldn’t look so weird there in EasyEDA. Here is the image of parameters
I finished tweaking a few more things in the PCB schematic and getting it ready to export a STEP to use as a base in Onshape. Actually, I made the display way too big, standardized at 10 or 15mm, but it should be something like ~2.8mm . The thing is, when I was moving some items around, it ended up moving the Board Outline too, even though I didn’t select it… so I locked it to prevent that from happening, and I’ve already done the same in Onshape . Now I’ll start on the case and then come back to routing
I was supposed to post yesterday but my uncles came over and I didn’t get back to it at night here I’ve pretty much done the part that holds the PCB . The shell , I recessed inside it, and in the other picture you can see I made an Assembly to see how it was coming along and to have an idea of where the screw holes for the PCB are, and later what I should do on the case. I haven’t done this yet, but you can see some Mate Connectors in the picture of the case alone (the light blue, slightly grayish part) . I tried to make the holes, but the sketch planes and flat planes were on the top face and I couldn't make the holes . I spent some time trying that. I don’t know, but probably if I make a sketch on the bottom of the case I can make the holes. That’s it, 3D for EasyEDA , I’ve already fixed it in Onshape and I’m doing well with the case part. 🫡🙂
Well, what I kept working on was the case. I was thinking that the right way is to make three separate parts: the back part where a phone case fits (thinking in this case), the front part where there are holes for the display, keys/buttons, etc., and the sliding cover with the tracks. This one, when using a normal calculator, usually fits on the back of the body and when not, it fits on the front, storing and protecting the screen. In my ideas, I asked Gemini to generate these images to help me clarify my thoughts and development. It turned out good! Another thing is that I noticed the display PCB module isn’t centered relative to the screen at all. Because of this, due to the width of the PCB and the case ending up close to the display module, it can’t be centered since there’s little free area for horizontal movement and the board would already touch the case walls. I made this 3D model to see roughly how it would look, and it looked weird. Not too much, but… The thing is, I usually do some stylizations, drawings, stuff like that. It would be possible to put a solar panel there, yeah, but I’m not going to go back much to that part of the EDA and rethink the system, mechanics, and circuit logic.
I switched the MCP MCP23017 to a QFN type. I realized that in the end, everything was most likely going to be pretty big. The final product thickness is around 15mm or more. So now I’m studying and researching to change the components, organization, and then properly design the mechanics in CAD/case so everything stays stable. I didn’t really know the display dimensions. Some are kind of generic, with chip data/technical specifications giving a certain thickness, but most don’t have thickness. Looks like I’ll have to message the Aliexpress seller to get the exact data… I feel way more lost than I should. It’s annoying because I had already thought a bit at the start and there wasn’t supposed to be so many reconstructions/pivots in the project.
I added a few more components. The thing is, I’m preparing how I’m going to connect the keyboard/MCP of the keys to the circuit, and for that, I’m going to use an FPC for it and other LDO parts. Parts that deal with inductance/decoupling and protection of the circuit components. I had to research and really look into things, and I’m already checking to find a module/version of the OV5640 with DVP FPC . I had to keep changing and reviewing the practical use of the components and kind of the electrical **‘needs’ **of the setup.
organizing schematics Here are the schematic pages I’m organizing: 01_SYSTEM_MCU , 02_POWER_USB , 03_KEYPAD_IO , 04_DISPLAY_STORAGE , Actually, I’m still missing one more schematic image: 05_CAMERA_TBD . It seems only four images are allowed per devlog. That’s it—trying to follow a logical organization, with a left-to-right flow and the power sections included :|
As I said, I was going to send a message to the sellers, but I procrastinated, and by the time I sent it, it was already the weekend there. The sellers are Chinese, so their time zone is 11 hours ahead. Actually, it’s already Monday there now, so I think there’s no need to resend the message since mine is already in the queue (I hope…). Anyway, I messed around a bit more, organized the schematics a little better, added a few things, and thought about, more or less, how the items could/should be distributed on the PCB, so I did that with the images. So, this whole size isn’t totally necessary. It will help when routing, but there really aren’t any problems with that. What I might do is remove the part where the display goes since it will be securely framed in the future case. They sent the link to the display manual
What I changed At the top, there’s the 2x11 header for the ArduCAM module—you just need to plug it in. I also added a few more devices (actually kind of switched around their positions and values). I hadn’t shown it before, but I imported this 3D model and linked it to the display device . I did a general cleanup and a lot more research , tests , t hings like that . I’m doing kinda okay. I kept waiting for the sellers to respond to me. But I didn’t get much, I could only get one reply per day. I would send messages there, but it was like 11hrs over there, outside their working hours. A lot of time for nothing… Also, that display manual/datasheet didn’t come with the dimensions of the display assembly, like the total height and the screen size I needed. I found it on a website, and it said 6mm, so I left that to do the 3D design to import the STEP as a 3D model. Another seller said they didn’t have the manufacturer’s data I needed for the camera to check the dimensions and the bus. I wanted one that was 3.3V , and usually it’s the common 22 or 24 pins. But random ones from Aliexpress can easily change something in the pinout or order, which breaks everything. Here I’m kind of developing the project blindly . It has to be a really precise version, and that’s difficult… I think I’m going to go with the ArduCam module. It’s not small or as modular as others, but for my case it’s probably okay. (until now YES)
I was researching, looking at some more DOCS and just tidying up the last bits to start routing. I used Perplexity for some research and to cross-check data and see the trace widths for the NETs. I put DRC rules, so it’s much easier to work, because when you activate routing on a NET it automatically sets that thickness and rules in the project. I routed these more critical parts, power, data, a bit of the display part and stuff like that. Even with plenty of space, it already got a bit messy. This is my third board, so I’m still not that experienced with it. But this is the way to go. Most likely I won’t have to go back and change components. I just need to finish routing , think about the case and its mechanics What annoys me the most is having to return/exchange a component or it not being what I expect. In the case of marketplace sales, stores like Aliexpress
I kept routing. I made the port expander matrix (the one on the FPC in the center left), the header for the camera, and practically all the ESP pins I’m still thinking about tidying it up a bit to reduce the number of traces going into the antenna area. There have to be traces coming there, it’s already acceptable as it is, but I will optimize… That’s kind of it.
I’m back… I won’t be able to be very active here due to classes and coursework. I spent a good few hours working on this, but when I checked, it only showed 23 minutes… Maybe I linked the hours to the project incorrectly. Actually, there’s a file with the same name plus “_copy” at the end, and I thought I was already working on the right one. Well, I actually finished the routing. It turned out there were some copper islands that weren’t connecting to the rest of the pour, so I had to route them too. But to me, some of the ones flagging routing errors (showing ratsnests) didn’t look isolated and should have been able to join the copper plane. Oh well. The center ended up looking messy; that’s where the components—and consequently the traces—are concentrated. I’ll probably have to find a way to optimize and work on that. Plus, there are 39 DRC errors now… I hope I can submit this project; I’ve already done two others, but the deadline unfortunately ran out while I was optimizing things, addressing review comments, and dealing with components and budget issues. Oh, the way development work and hardware projects are recorded has also changed; now there are timelapses available here on Lapse : Lapse Lapse Lapse Lapse
Finally the errors disappeared… it turns out you had the custom DRC rules that I set. Then, like 2 or 3 NETs had thickness rules that couldn’t be followed because QFN components and the VSON package type have pads really close to each other (pitch) , so there was no way to route 0.8mm traces on components with, like, 0.4mm pitch . Obviously, you had to reduce it to make it work, but I didn’t know by how much and whether it might be wrong at some point, cause problems, or lower the PCB’s lifespan. 😶 I figured out how to change the rules and get things fixed and done. Man, I think I should review it again and really check some automatic NETs from the editor. After all these days without touching this, I noticed there were these NETs without descriptive names . I don’t remember if it’s because I didn’t assign a NET, or if it’s just that connection between those pins or something like that. But overall it’s going to be easy. I really hope SO MUCH! Lapse Lapse
Well, I tweaked the PCB design just a little more. Actually, very little—I was just seeing if there was a way to handle the USB traces since these two NETs were 170mm and had a lot of vias . The center already had the other components and trace routing, so I guess there wasn’t much to do. And honestly, I’m not experienced, so I don’t know how to make these things better . Along with that, there’s roughly an idea of how the project case will look and the items I had already been working on.
Well, things were already going pretty well. Basically, I messed around a bit with the routes since the camera pins would be placed behind the PCB, like on the bottom. Then I changed the header layer and rerouted it. Now I managed to remove the header from the 3D preview (since the header was used to make the holes and get an idea of the position of the Arducam pin rows). When I have it in hand, I’ll solder everything directly onto the board. I was messing around a bit with other things too, in the firmware, doing research, checking data, etc. I used ChatGPT for that and even Antigravity. Then I moved forward with some things, checked, asked about the case. The thing is, I’m busy (or I should be) and couldn’t really do sessions and things of the project that I was working on to save. And then I really ended up forgetting to make the Lapses… a lot of times it was gradual work, bit by bit, and sometimes I’d go a while without touching it because I depended on my parents to call me or something like that, a pause. As far as I remember, I used to be able to edit the Lapses before, but I think it’s better to do it directly. All of this wasn’t just 17 minutes! I realized that there was a WakaTime extension for EasyEDA and Onshape. At the time (~ about 5 months ago) I didn’t know about Lapse or anything like that and ended up using this. I ended up creating more than one project to test things out, run tests, and see other people’s implementations. And it turned out they came out with very similar names and all. I didn’t remember the name anymore and I think I synced a few incorrectly. I fragmented the time. BUT REALLY MOST OF IT WAS BECAUSE I DIDN’T RECORD, ETC. I think you can add like 3 more hours
I made some changes and was researching a raw version with the OV5640 . To make it a more controlled and integrated work, and thinking about reducing it and making the aesthetics of the project look more like what it really is, reducing the thickness, I changed and added a lot of other components and I’m starting to organize them to be on the Bottom Layer. I need more LDOs , capacitors , and resistors . Simple, right? The passives and ‘controllers’ for electricity, current, voltage, etc. I’m not really knowing much about the impedance part, so I use ChatGPT to guide me, teach things, and think about the structure of the project, the PCB… Lapse: Lapse
I’ve practically finished the new schematic for the raw camera version. I managed to tidy up and properly organize the layout for this new part. First, I looked over it to see what I could add and prepare in positioning the new components for routing. The camera I left is one that uses an FPC connector . I’ve already put this item in place, arranged it with LDOs , translators , and controllers . Basically, it’s about handling the signals, how they occur, to make them compatible with the module I took and the rest of what I had already prepared. It got a bit messy because I really need to see how to place each item, and I wanted to make use of a large part of the general layout from the other PCB version … lapse
Well, what happened. I went to check the price of the PCB – in this case, when exporting the GERBER it showed a price and it was pretty expensive, $33! The other 3 boards I made were within the 100x100 size and, if I’m not mistaken, the most expensive one was listed at $7. Here I’m kind of making different versions and testing, experimenting with what happens with certain configurations (size, traces, layers, type of components, price,…). I was putting it off and taking my time because I wanted to use what I had from the other one, but then I decided to start routing from scratch.
I routed a lot more! I tried, tried to optimize so I wouldn’t have to run traces on Inner1 , but it really wasn’t going to work. Partly because of the layout and distances of some ICs to the decoupling capacitors , practices for better signal quality . I forgot ( ) and it was already almost done , so I came here to post up to this point Lapse: Lapse
I finished placing the holes on the PCB. Actually, I had forgotten… I was focused on finishing and trying to deliver something more professional in the routing part that when I finished I was like "finally did it? Can I export the production files now?" and the happiness and rush of the moment made it happen . It wasn’t possible to perfectly align the holes and the thought I had because of the traces I needed to place on the PCB, so it stayed like this. Only the top-right one ended up ‘different’. Now it’s just finishing the PCB and fixing the firmware . I was already checking and testing a bit offline.
I had made a Variable Studio but I end up not using it and don’t remember much. I asked the AI for help since I’ve never really worked with this item and it seemed better for standardizing and putting something defined that is used constantly. But in the end, I remember the quota values and some calculations are simple. Here I did the rear and front parts of the case, I didn’t do the extrusion there but it’s more or less correct. I had been thinking, and as I said, I worked on an idea and previous version, so it was actually pretty easy for that.
I finished the rear shell for the case. I made some bosses for the PCB fitting. It’s noticeable that the top right one is misaligned. I mentioned before that it’s because the traces and components were occupying that space, and when I remodeled it to 84x85 , the hole slots didn’t go along—they got lost on the canvas . Later I remembered, organized, and figured out a way to put them like this. Only one ended up 'strange,' which is NOT a problem at all. I made the shell 1.8mm thick and also cut the slot for the camera. I left the keypad at 74x80 , making a 7x7 feature pattern . This still bugs me because it doesn’t look right and the logic seems to change… I just need more experience and general practice to be ready for different scenarios. Some parts went out of place, but it’s just a matter of testing measurements until it works and maybe checking some guide videos on how to use this feature correctly . Lapse
What happened with the keypad being wrong was that in the sketch I dimensioned it incorrectly (swapped height for width) , and that’s why some of the blocks went beyond the edges and weren’t symmetrical. I imagined that might be it and fixed it . I made a rectangle there thinking about maybe adding a simple lens protection for the camera. After that, a rough idea of the cover that is usually used to protect the front part. Besides that, just a simple fillet on the sides. I did that, but I admit I might change this idea and its overall shape . Once I have everything in hand, I’ll update it to have a proper enclosure . Lapse
I just tweaked the parts a little more and then went to the Assembly . The PCB step was 50MB and took a while to load, and then when I tried to insert it, it didn’t load everything right after choosing a square option with a symbol similar to the Part Studio one, but eventually it worked. I used some fastened mates to join the items, and since this isn’t constant and there are hollow parts where you want to center/place in a specific spot, the Mate Connector doesn’t apply, so I used something like the transform to select the piece. That’s how I kept going until I got here! In the middle of the work, I had to edit the Part Studio because some points differed from the positioning and mounted parts of the PCB , like the USB and microSD . That’s it—work, found mistakes, fix them, and move forward! Lapse
I finished working on a few more things in the Assembly . I was aligning the cut positions in the view (remove extrude) and it took a while because the Mates , Fastened Mates created kind of restrictions that didn’t allow certain parts to move. Also put the 3D for the display. Then at the end I made the first commit to the repo! Lapse
I started looking more closely at the firmware part ! Actually, I’ve never worked with ESP-IDF, so I’m going to take another good look at it and refresh myself on things I might not be prepared enough for. I grabbed it to check out and study with the example code "Blynk Led" —the one in the picture is a different one. It’s to control the internal LED with the BOOT button. I’ve seen a bit, and RTOS seems really cool, here it’s FreeRTOS . But you need to pay attention and be aware, understand how things work. I feel like it’s going to be a long and tough road… but let’s go! The good thing is that we have AI to help us out and clarify points, test stuff , and so on.
I got started at the base and analyzed the HAL (Hardware Abstraction Layer) of the project. I was studying some things, basically the functions and how to use the framework . I noticed that the functions are pretty standardized, like how to use registers, handle addressing, and use macros , directives/variables . Basically, the headers I was going to use and docs and things like that I was checking out, now speaking exclusively about the Aliexpress display that was in Mandarin (some of the ones I saw while researching) and offline I was tinkering and looking at some things, asking AI to explain and check things to move forward . I got the variant I was going to use, and later on it got analyzed and the board_pins.h ended up fine. I also started messing with the keypad, just defining it and later on how to monitor and use the identifiers of each key .
I made a lot more progress on the firmware !! As I said, the functions , declarations , and general use of the ESP-IDF are standardized , so it’s simple to build by consulting materials: docs, example codes, usage with some peripherals and components, AI , etc. In this case, the use of I2C and SPI communication is also well organized. The drivers for the components I use don’t give you headaches for this. Previously, we had already been working on the ‘macros’ part, or rather the project HAL , even without knowing what it was. In the second image, there’s the keymap, made as a 7x7 matrix for the calculator - what the keys do. That’s already connected to the names of each key . The scanning was done, a loop that identifies which keys were used, and the rendering of the items on the display . Taking the data buffers and transitioning the communication with the ESP about what was pressed and how it will relay that to the screen. I think it’s interesting to mention: Explaining how key reading works with the MCP: each key is assigned by the matrix indices - row x column. The columns are set up with internal pull-up resistors, so when inactive they measure 3.3V (level 1). The ESP pulls the row to 0V (level 0), and when a key is pressed, it knows it because it reads !=0 from the column and matches it with the row it’s accessing to get the unique identifier for that key. That way you know 100% for sure what was pressed. And this cycle keeps running every few milliseconds.
I’m done here! The two files we worked on are finished. Now we have the initializer and use of the MCP23017 (I’ll just write MCP from now on in this log) . The addresses have been mapped and the registers too. You can see what happens along with the logic of keeping the line in the LOW state and the rest HIGH . In this part, it’s necessary to use masks and bitwise operations to see how it works. It stays in a loop analyzing what was pressed and, of course, if something strange happens outside the configuration, it throws an error saying UNKNOWN .
its possible only four images… I fiddled a bit more with these items, files 📁 , repo organization , stuff like that . Also, I took screenshots of some views from the project’s mechanical render … I’m not really focusing on any one part, but I tinker a bit here and if I remember something I should have done or think could be better, I take care of it. Like parts of the firmware, code, repo organization, images, and the internal side of the apps: CAD and EDA . Basically, that’s it, to sum up . I forgot to put the others Lapse
more docs things right these Well, I tidied up the README and organized the folders and file names better. The repo in general . The other image is because I think I didn’t show it properly here and I was reposting , checking items and analyzing anything left there on EasyEDA
almost ready to submit!!! Finished and I’m getting ready to submit the project for review! I took some new renders and also did the prices part for the project items. I have everything here now and it is looking nice. Like I said before, I left some points to see and change better on the case when I have everything in my hands, so I can prototype 🤖 it better. I don’t have much skill with soldering, so I really hope I can get the Top PCBA . This is all really cool and interesting that I was able to do, and I’m really happy about it. At the end I also organized things a little more and changed stuff to track what is needed in the repo , help anyone that wants to look at it or reproduce the project somehow. The System architecture section got really cool in the translation and organization, AI did that . I don’t really know how to make this type of diagram myself yet :/ I hope I didn’t forget anything and that the organization I made, and later asked to improve, documents the state well. Basically I: I finished organizing the repo, checking the prices, calculations , etc., taking screenshots , I kept iterating in the repo, editing, moving things , that kind of organization 🗂️
I’m back! Finalized the second PCB for the keys Well, yeah, I’m here again. I’m back, it’s been a while since I was away, right? I waited for things to settle down here so I could continue with the project. Yeah, and I finalized the idea of making a board on the second PCB there, where the buttons will be, you know, the clicks to use the calculator keys . And this here was kind of leftover code organization I was doing in the repository . I ended up not remembering everything from the project, but now I’m here again. So I’ll finish this up. It was pretty simple, I didn’t record it. But basically, I made a 7x7 matrix of switches , the buttons. Along with that, there’s the FPC connector to actually connect the board to the ribbon, to the rest of the MCP expander. I’m going to tidy it up a bit. The board also ended up being quite small 84x78 basically just to fit there, it would provide support and, you know, fit the switches at the distances that had already been predetermined in the case , right in the middle of the product’s housing. And then, along with that, the schematic is also simple, I just put an FPC connector , that’s all that’s really needed, and the buttons, the switches. Really simple. I think it’s interesting to mention (diodes & debounce): I was also going to use, you know, I was looking, people were saying, it’s good to use diodes , but just to kind of reduce debounce , fix certain issues, but it wouldn’t be that necessary, since the contacts closing would almost never happen like, I don’t know, three clicks at once, one next to the other. So that doesn’t really cause a problem where the ESP wouldn’t know exactly which key is being pressed and what it should do with the signal it’s receiving. And depending on how you study it and see how to handle it in the firmware , it actually wouldn’t even be that necessary to put these diodes on each of these buttons for that.
Keypad PCB done! Top & Bottom preview Now that I’ve finished, I’ve completed the PCB both images, the top and the bottom . I left the spaces for the M2 screws and already rotated everything, it was pretty easy! Basically, I kind of left an array, a 7x7 matrix . The keys would be more or less standardized and the only difference would be in the pad — like, in the rubber, the material that you press to trigger that key. That kind of thing. It turned out pretty nice. It’s simple, it’s actually simple to do this part, this kind of thing… That’s how it turned out. I’m not sure if I’ll tweak it much to add things like a D-pad or other types of keys for navigation, functions, the numeric keypad itself , that kind of stuff.
It’s kind of funny that I messed with this again, but basically this is a version where I repositioned the buttons and pins because, well, I decided the keys aren’t going to stay as a plain square matrix. So I kind of organized and divided things there to get a better idea of how the pins will be placed roughly around the center. On the top part, there’s sort of that D-pad area (not an actual single pad, but the individual buttons for that navigation). That circular button style you see on game controllers, handhelds , and on some other calculators too. I also moved the FPC connector over to the corner so it’s way easier and cleaner to connect everything up . On top of that, I rounded the board edges in this version. Overall, that was pretty much it! Lapse: Lapse
For now I’m working on the CAD ; I had finished the PCB. I put up a quick video of how it turned out I recorded it with Canva, which I’d used before for a school project, and it works. I even have the Spectacle app for Linux , but it records in 720p, which looks kind of bad, so recording it online through Canva ends up looking way better. Basically, it has the dimensions of part two , which I was rethinking and everything. And well, this was more or less the idea I had: there’s the front part for the buttons, and in this other version, it was supposed to have a passage for a circuit board to fit a small solar cell ☀️ . Depending on what I can find around the house and if there’s any leftover space in the casing (it’s pretty much ready), I might implement it even if it ends up mounted on the outside rather than inside the case, just for reuse and photovoltaic charging. Then I also put the back part together: the little hole for the camera 📷 , the slider for its protection, and on the side, the microSD card slot. The keymat for the buttons which I changed the layout of, so it’s not square anymore now has roughly the positions for all 49 keys and the holes where the support bosses will go. There’s also that little strip/rectangle, which is meant to be the protective cover fitting right into the other slot. Basically, that’s it! I’ll continue and tweak it later. It’s not too difficult, and I think it’ll be finished soon.
I just finished redoing the parts of the case the parts there and everything else in the project after this second round. This last one that was missing was from Part Studio 4 , which was the little slider drawer for camera privacy and protection on the back 🔒 , along with Part Studio 5 where I made the sliding lid/cover. Very, very simple. I also added some small slots there just to give it a nice tactile texture/grip — pretty small, with a 0.350 mm cut extrusion (removing material). That was kind of the piece I was still missing. It was simple and quick since I already had the basic idea from earlier attempts. Oh, and one thing I think I forgot to mention before: I imported .DXF files into the sketch to help guide the drawings, basically defining the extrusions for the parts. It turned out pretty good! To wrap up, I added what I had forgotten before: the mounting holes on the back cover bosses. Put 1.6mm holes there to hold the screws properly ⚙️ ....
|
1792806741.0958614
|
1793411541.0958614
|
|
69331
|
★-My portfolie-but make it better and underwater - ★-My portfolie-but make it better and underwater -★ by @253_Mathilde_IYKYK | Stardance...
|
253_Mathilde_IYKYK
|
0
|
11.54
|
0
|
[]
|
[{"post_id": 79989, "ts": "202 [{"post_id": 79989, "ts": "2026-10-15T19:24:52Z", "hours": 2.5886, "text": "So what did I do today: For you I did norhing but for me I worked my life through responsive tutorials and started making the site responsive. Because this is my portfolio and it has to work on phones or laptops/tablets too. My plan is to only build the deskop site for now ship then the phone ship and then the tablet/laptop. For the phone version there will be somehting to move around the submarine I believe. Thanks for reading and thanks @matthewwong12 for your help <3"}, {"post_id": 79639, "ts": "2026-10-14T19:59:03Z", "hours": 2.0053, "text": "And another update for today: Fullscreen should work now. It would really help if you tried it out (go to the site and then F11 on windows ,idk apple) and tell me if everything looks right. This was pretty complicated for me but at least I figured a way out. Thanks for reading and your help <3 and here is the link: https://253-mathilde.github.io/My-portfolio/"}, {"post_id": 79546, "ts": "2026-10-14T15:25:26Z", "hours": 4.0094, "text": "That escalated quickly. Really really quickly. The music player is soooooooo good. I cannot be calm about this I am sorry. Look at all the fishes and uhh the light feature works with a flashlight or the key l or L now. The font has changed,it also got an hover effect the background music get’s you so in the zone and just imagine how I’ll build so much stuff into this. I am sooo happy and yes yes Ik I normally log every 2 hours but I coded in school and couldn’t write one and I was so in the work thingy that I couded 2 more hours at home. What do you think about the cursor? I made it myself and added that bubble effect that follows the submarine. Thanks for reading <3"}, {"post_id": 79386, "ts": "2026-10-13T19:23:20Z", "hours": 0.8442, "text": "As you can see, I added this super cool new feature: the dark mode. As I love dark modes, they are kind of boring on sites because they always look the same and often aren’t really designed (they just make EVERYTHING black -no, I don’t want to look at a black wall), so I added a cooler way for my site. It is currently working with an and not an but I’ll change that tomorrow as well as the cursor because the current cursor does look good but is super bad to use. Thanks for reading <3 SR FOR THE VD I REALLY NEED AN UPGRADE FOR THAT"}, {"post_id": 79067, "ts": "2026-10-12T15:43:05Z", "hours": 2.0939, "text": "I decided to start working on my next project while waiting for the other one to get accepted (from Google). This project will be an upgraded version of my personal site. I want to build something like an underwater city with houses, and each house holds information, so for example, you click on the telephone cell to get to an under site which shows my contact information, etc. I just worked on the graphics and stuff a little, and I kind of missed that. Do not get me wrong, I love my other project, but this is just so relaxing and calming at the moment. This site will also have a dark mode where your cursor turns into a flashlight, btw. What do we think about this idea? Thanks for reading <3"}]...
|
Title: ★-My portfolie-but make it better and under Title: ★-My portfolie-but make it better and underwater -★ by @253_Mathilde_IYKYK | Stardance
Devlogs:
I decided to start working on my next project while waiting for the other one to get accepted (from Google). This project will be an upgraded version of my personal site. I want to build something like an underwater city with houses, and each house holds information, so for example, you click on the telephone cell to get to an under site which shows my contact information, etc. I just worked on the graphics and stuff a little, and I kind of missed that. Do not get me wrong, I love my other project, but this is just so relaxing and calming at the moment. This site will also have a dark mode where your cursor turns into a flashlight, btw. What do we think about this idea? Thanks for reading <3
As you can see, I added this super cool new feature: the dark mode. As I love dark modes, they are kind of boring on sites because they always look the same and often aren’t really designed (they just make EVERYTHING black -no, I don’t want to look at a black wall), so I added a cooler way for my site. It is currently working with an and not an but I’ll change that tomorrow as well as the cursor because the current cursor does look good but is super bad to use. Thanks for reading <3 SR FOR THE VD I REALLY NEED AN UPGRADE FOR THAT
That escalated quickly. Really really quickly. The music player is soooooooo good. I cannot be calm about this I am sorry. Look at all the fishes and uhh the light feature works with a flashlight or the key l or L now. The font has changed,it also got an hover effect the background music get’s you so in the zone and just imagine how I’ll build so much stuff into this. I am sooo happy and yes yes Ik I normally log every 2 hours but I coded in school and couldn’t write one and I was so in the work thingy that I couded 2 more hours at home. What do you think about the cursor? I made it myself and added that bubble effect that follows the submarine. Thanks for reading <3
And another update for today: Fullscreen should work now. It would really help if you tried it out (go to the site and then F11 on windows ,idk apple) and tell me if everything looks right. This was pretty complicated for me but at least I figured a way out. Thanks for reading and your help <3 and here is the link: https://253-mathilde.github.io/My-portfolio/
So what did I do today: For you I did norhing but for me I worked my life through responsive tutorials and started making the site responsive. Because this is my portfolio and it has to work on phones or laptops/tablets too. My plan is to only build the deskop site for now ship then the phone ship and then the tablet/laptop. For the phone version there will be somehting to move around the submarine I believe. Thanks for reading and thanks @matthewwong12 for your help <3...
|
1792475884.056333
|
1793080684.056333
|