|
13351
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792925322.1237714
|
1793789322.1237714
|
|
13352
|
Keybind Game by @devmatei | Stardance
|
devmatei
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Keybind Game by @devmatei | Stardance
|
1793256965.5205526
|
1793861765.5205526
|
|
13353
|
CLI Calculator by @AidenHammy | Stardance
|
AidenHammy
|
1
|
14.0
|
190
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T06:22:43Z", "hours": 14.0, "multiplier": 13.37, "payout": 190, "blessing": "neutral", "text": "What did you make? A CLI calculator built from scratch in Node.js. Not just a basic one, it runs as a full REPL in your terminal, supports both command-driven operations ( add 2 3 , sin 90 ) and free-form math expressions ( 2 + 3 * 4 , sin(90) + 10 ), remembers your last result with ans , logs every calculation to a history file with timestamps and validates inputs with actual helpful error messages. Over the last week I also ported the whole thing to run in the browser using xterm.js so you can try it live without installing anything. What was challenging? Honestly, most of it at some point. The expression evaluator was probably the hardest part. Using Function() to evaluate raw user input feels powerful but also kind of risky and making it fail gracefully without breaking anything took a while to get right. The ans memory system was tricky too because replacing it correctly across both commands and expressions without accidentally mangling other words required careful regex work. The browser port was a whole different kind of hard. I didn’t realize how much Node.js was doing for me silently. readline alone handles an entire input loop that I had to rebuild character by character in xterm.js. What are you proud of? A few things: The validation architecture — argument counts, type checks, domain-specific errors (division by zero, negative square roots, log of non-positives) all cleanly separated from the actual math logic The ans memory system — being able to chain pow 2 8 → add ans 100 → ans / 2 makes it feel like a real calculator The expression evaluator — typing sin(90) + 10 directly and getting 11 feels satisfying every time The history system — timestamped, persistent, filterable with history [n] The fact that the browser demo runs the exact same logic as the CLI — calc.js was never touched, the port lives in a separate file This was built step by step over 6 devlogs in about a week. I’m still a beginner and it’s not perfect but it genuinely feels like something I made rather than something I just followed a tutorial for. What should people know so they can test your project? The easiest way is the live browser demo — no install, just open the link: 🔗 https://cli-calculator-five.vercel.app/ Try these to get a feel for it: help add 2 3 pow 2 8 add ans 100 sin(90) + 10 2 + 3 * 4 history If you want to run it locally instead: git clone https://github.com/AidenHammy/cli-calculator.git cd cli-calculator npm install node src/calc.js", "repo": "https://github.com/AidenHammy/cli-calculator", "demo": "https://cli-calculator-five.vercel.app/"}]...
|
[{"post_id": 10452, "ts": "202 [{"post_id": 10452, "ts": "2026-06-17T05:44:08Z", "hours": 1.7378, "text": "Devlog 6 — Taking the CLI to the Browser Biggest struggle The hardest part wasn’t writing new features. It was translating existing ones into a completely different environment. The original CLI felt natural because Node.js gives you everything: file system, stdin/stdout, process control. The browser gives you none of that. Every tool I had been relying on: readline , fs , chalk , console.log even process either doesn’t exist or behaves differently in a browser context. The trickiest translation was the input loop. readline handles line buffering automatically, you just wait for the user to press Enter and get the full line back. With xterm.js, you get one raw character at a time via onData . The other catch was the expression evaluator. After porting everything over, sin(90) + 10 was returning \"Invalid command or expression\" because the Function() scope didn’t know what sin was. The fix was straightforward once I understood the cause, exposing the math functions as local constants inside the Function() string but it was a good reminder that a working feature in one environment isn’t automatically working in another. What changed in this version New files src/calc-demo.js :- full browser port of calc.js using xterm.js main.js :- entry point: boots xterm, loads the fit addon, calls initCalc(term) index.html :- static shell with topbar, terminal mount and statusbar style.css :- dark terminal theme built around a monospace font stack and a single green accent Key substitutions made Node.js ( calc.js ) Browser ( calc-demo.js ) readline xterm.js onData + manual buffer chalk ANSI escape codes fs / history.txt localStorage console.log term.write() via print() process.exit location.reload() calc.js is untouched. The original CLI still runs exactly as before with node src/calc.js . The browser build is a separate port not a replacement. Current features Everything from Devlog 5, now running in the browser Live deployment on Vercel. No install, no terminal, just a URL Terminal emulator UI with topbar, statusbar and live clock Full xterm.js input handling: backspace, local echo, line buffering History persisted in localStorage across page reloads Expression evaluator now supports sin(90) + 10 , sqrt(144) , abs(-5) etc. directly cls clears the xterm screen properly using escape sequences exit reloads the page Reflection Devlog 5 ended with “maybe create a simple web version for easier demo access” as a future idea. This devlog is that idea, actually shipped. What surprised me most was how much invisible work Node.js was doing. You write readline and it just works but behind it is a whole input loop, line buffering, echo management and terminal control that you never think about. Doing it manually in xterm.js made all of that visible which was frustrating at first but genuinely useful to understand. The project now has two lives: a proper Node.js CLI tool and a browser demo that looks and feels identical. That separation, keeping calc.js untouched and building the browser port as a parallel file felt like the right architectural call. One doesn’t compromise the other. It’s also the first time something I built has a real public URL."}, {"post_id": 10162, "ts": "2026-06-16T19:33:09Z", "hours": 4.6844, "text": "Devlog 5 — Expressions, Memory and a Real “Calculator Feel” What I learned: How to evaluate user input dynamically using Function() (and why it needs to be handled carefully) How to replace parts of user input using regex. How to structure commands when the number of arguments isn’t always fixed (min/max validation) How small UX details (like colors using chalk ) make a big difference in usability How to maintain state across a REPL session How to design a fallback system where unknown commands are treated as expressions Biggest struggle: This one was definitely more complex than the previous days. The hardest part was adding expression evaluation. Using something like Function() to evaluate user input felt powerful but also risky and confusing at first. Making sure it doesn’t break on invalid input and handling errors properly took some time. Another tricky part was implementing a feature ( ans ) that lets you reuse the previous result in new calculations. Ensuring it worked consistently across both commands and expressions required careful handling of user input. Replacing it correctly in user input without breaking other words or expressions required using regex carefully. Also, as the number of commands grew, validation started getting messy. Switching to a min/max argument system helped but it took a bit of thinking to get right. This stage felt less like “just coding” and more like designing how the calculator should behave. Current features: Full REPL-based interactive CLI Support for both commands and direct expressions: add 2 3 2 + 3 * 4 ans keyword to reuse the previous result Expanded math operations: Trigonometry ( sin , cos , tan ) Logarithms ( ln , log ) Factorial ( fact ) Rounding ( round , ceil , floor ) Absolute value ( abs ) Improved validation with flexible argument handling (min/max support) Persistent history with timestamps Optional history limit ( history n ) Colored and structured output using chalk Better error handling for invalid commands and expressions Next steps: Improve expression parsing (support more complex cases safely) Possibly replace Function() with a safer custom parser Add command chaining or multi-step calculations Improve UI further (custom prompt, better formatting) Maybe create a simple web version for easier demo access Reflection: This version feels like a big step forward. Before, the calculator was command-based and structured. Now it feels much more natural and flexible, especially with expressions and the ans feature. It’s starting to behave like an actual calculator instead of just a program that runs specific commands. At the same time, the complexity is definitely increasing. It’s getting harder to manage everything cleanly which makes me realize how important structure and planning are as projects grow. It’s not perfect but it finally feels like something I could actually use. Not just something I built to learn."}, {"post_id": 8232, "ts": "2026-06-13T18:11:24Z", "hours": 1.8294, "text": "Devlog 4 — Making it Interactive (REPL + UX Improvements) What I learned: How to use readline to keep the program running and take input again and again The difference between a script that runs once vs something interactive How small UX things (like input formatting and cleaner output) actually matter a lot How to handle messy user input using trim() and split(/\\s+/) How to structure code so it doesn’t become a mess when it keeps running in a loop Biggest struggle: This part wasn’t “hard” in the usual sense but it was confusing at first. Before this, my program would just run once and end. Now it stays alive and that changes how everything works. I had to think differently about how commands are handled because now the same logic runs over and over again. Input handling was also kind of annoying. Even small things like extra spaces could break stuff which forced me to actually deal with it properly instead of ignoring it. Another thing was output. At some points it felt too cluttered and at others it felt like not enough information was being shown. Finding a balance there took a bit of trial and error. Current features: REPL system using readline (no need to restart the program every time) Continuous input like a real CLI Support for both commands and symbols ( add + + , etc.) Better input handling (spaces don’t break things anymore) Validation for: wrong number of arguments invalid numbers division by zero square root of negative numbers Cleaner output (less unnecessary logs) History system: saved to history.txt can view with history can reset with clear cls to clear the screen exit to quit the program Next steps: Support actual expressions like 2 + 3 * 4 instead of strict commands Make history a bit smarter (maybe timestamps or search) Reduce repeated logic even more Add vector/matrix operations Add autocomplete for commands Add colored terminal output Reflection: This is probably the first version that actually feels like a real program. The REPL made a huge difference. Before, it felt like I was just testing functions. Now it actually feels like something you can use. Most of the improvements in this version aren’t big features, but small things that make the experience smoother. Stuff like handling spaces properly or adding aliases doesn’t sound like much but it changes how the program feels. I’m starting to notice that building something usable is very different from just making something work. It’s still simple and there’s a lot more I could improve but this is the first time the calculator feels complete in its own way."}, {"post_id": 6958, "ts": "2026-06-11T17:48:39Z", "hours": 2.0842, "text": "Devlog 3 — Persistence and Control (File-based History + Clear Command) What I learned: Why CLI programs reset completely every time they are executed How to use the fs module to write and read files in Node.js How appendFileSync can be used to store data incrementally How to read stored data using readFileSync The difference between in-memory state and persistent state How small bugs (like variable naming or extra trims) can break logic in subtle ways Why validation, execution and side effects (like saving history) should stay separated Biggest struggle: This part was less chaotic than Day 2 but still frustrating in a different way. The logic itself wasn’t the problem this time. It was understanding how programs behave over time . I had already built a history system before so seeing it disappear every run was confusing at first. Then came the file system part. Writing to a file felt simple but reading it back properly and formatting it without breaking things took more effort than expected. Small mistakes like misnaming variables or structuring loops incorrectly kept causing issues. It wasn’t overwhelming chaos but more like constant small friction that slowed everything down. Current features: Persistent history system using fs Calculations are stored in history.txt across runs history command displays formatted past calculations clear command wipes stored history clean Improved validation and error messages Clean separation between parsing, validation and execution Next steps: Convert the calculator into an interactive CLI (REPL-style) Reduce repeated validation logic into reusable helpers Improve overall UX (cleaner outputs and command feedback) Reflection: The biggest realization was understanding that programs don’t remember anything unless you explicitly store it. That changed how I think about state completely. Compared to earlier struggles, this one felt quieter but still tiring. Less confusion, more persistence. Fixing small issues, understanding behavior and slowly making things more stable. It still isn’t perfect but it finally feels like the calculator has some sense of continuity instead of resetting every time. Note: The screenshot does not show all features (full validation system)."}, {"post_id": 5824, "ts": "2026-06-09T19:21:54Z", "hours": 3.0411, "text": "Devlog 2 — CLI Calculator Upgrade (Validation + History System) What I learned: How to structure validation into layers (arity type domain) How CLI arguments actually behave — missing inputs simply don’t exist in the array How to use slice() + map(Number) to normalize input in one step Why separating parsing validation and execution simplifies reasoning How function hoisting allows referencing functions before declaration How to maintain in-memory state using arrays How for loops and forEach help format structured output How small design choices like a numbers array simplify architecture Biggest struggle: This part was genuinely exhausting. I kept getting stuck on when validation should happen and what exactly needed to be validated. I was duplicating checks mixing raw CLI arguments with parsed numbers and constantly second-guessing my logic. I also misunderstood CLI arguments. I expected missing inputs to appear as undefined which made my validation more complicated than necessary. The worst part was the flow. Everything felt tangled. Command lookup parsing validation execution like it was happening all at once. Even when the code worked I didn’t fully trust it which made the whole process frustrating. Current features: Command routing using a function map ( commands[cmd] ) Argument validation based on expected counts Clean input parsing using slice() and map(Number) Domain rules (division by zero negative square roots) Scientific operations: sqrt pow log In-memory history system history command for session logs Improved help command More consistent error handling Next steps: Persist history to a file Refactor validation into helper functions Improve error messages Reflection: Validation was mentally draining. I kept mixing up arity type and domain rules and the code felt like a pile of checks instead of a system. It worked but I didn’t trust it. The biggest reality check was the history system. I built it saw it work then ran another command and everything was gone. That’s when it clicked. CLI programs don’t persist memory. Every run starts fresh. That was the most important lesson. Not everything you build “stays” unless you store it. It changed how I think about programs. By the end the calculator is still simple but my understanding of structure and flow is much stronger. It feels less like guessing and more like knowing what I’m doing. Note: The screenshot only shows a basic run and does not include all implemented features (validation command handling improvements and history tracking)."}, {"post_id": 5093, "ts": "2026-06-08T19:37:58Z", "hours": 0.9297, "text": "Devlog 1 — Building a CLI Calculator What I set out to build : A command-based CLI calculator using Node.js that can take input directly from the terminal and perform operations like addition, subtraction multiplication and division. What I learned: How process.argv works for handling command-line input Why \"5\" + \"3\" results in \"53\" (strings vs numbers in JavaScript) How to convert inputs properly using Number() The difference between calling a function and referencing it How to implement a command map using commands[cmd]() Biggest struggle: Understanding how to structure the command system cleanly without relying on long and messy if/else chains. Breakthrough moment: Realizing that I could store functions inside an object and dynamically execute them based on user input. That made the whole system feel much cleaner and scalable. Current features: Supports add , sub , mul and div commands Handles invalid commands with basic error messaging Uses a command map for cleaner execution logic Next steps: Add scientific functions like sqrt , pow , and log Improve input validation Potentially add a history system Reflection: Started this knowing almost nothing about CLI tools or Node.js input handling and ended up building a working command-based system. It’s simple but it actually feels like the foundation of something bigger."}]...
|
Title: CLI Calculator by @AidenHammy | Stardance
Title: CLI Calculator by @AidenHammy | Stardance
Devlogs:
Devlog 1 — Building a CLI Calculator What I set out to build : A command-based CLI calculator using Node.js that can take input directly from the terminal and perform operations like addition, subtraction multiplication and division. What I learned: How process.argv works for handling command-line input Why "5" + "3" results in "53" (strings vs numbers in JavaScript) How to convert inputs properly using Number() The difference between calling a function and referencing it How to implement a command map using commands[cmd]() Biggest struggle: Understanding how to structure the command system cleanly without relying on long and messy if/else chains. Breakthrough moment: Realizing that I could store functions inside an object and dynamically execute them based on user input. That made the whole system feel much cleaner and scalable. Current features: Supports add , sub , mul and div commands Handles invalid commands with basic error messaging Uses a command map for cleaner execution logic Next steps: Add scientific functions like sqrt , pow , and log Improve input validation Potentially add a history system Reflection: Started this knowing almost nothing about CLI tools or Node.js input handling and ended up building a working command-based system. It’s simple but it actually feels like the foundation of something bigger.
Devlog 2 — CLI Calculator Upgrade (Validation + History System) What I learned: How to structure validation into layers (arity type domain) How CLI arguments actually behave — missing inputs simply don’t exist in the array How to use slice() + map(Number) to normalize input in one step Why separating parsing validation and execution simplifies reasoning How function hoisting allows referencing functions before declaration How to maintain in-memory state using arrays How for loops and forEach help format structured output How small design choices like a numbers array simplify architecture Biggest struggle: This part was genuinely exhausting. I kept getting stuck on when validation should happen and what exactly needed to be validated. I was duplicating checks mixing raw CLI arguments with parsed numbers and constantly second-guessing my logic. I also misunderstood CLI arguments. I expected missing inputs to appear as undefined which made my validation more complicated than necessary. The worst part was the flow. Everything felt tangled. Command lookup parsing validation execution like it was happening all at once. Even when the code worked I didn’t fully trust it which made the whole process frustrating. Current features: Command routing using a function map ( commands[cmd] ) Argument validation based on expected counts Clean input parsing using slice() and map(Number) Domain rules (division by zero negative square roots) Scientific operations: sqrt pow log In-memory history system history command for session logs Improved help command More consistent error handling Next steps: Persist history to a file Refactor validation into helper functions Improve error messages Reflection: Validation was mentally draining. I kept mixing up arity type and domain rules and the code felt like a pile of checks instead of a system. It worked but I didn’t trust it. The biggest reality check was the history system. I built it saw it work then ran another command and everything was gone. That’s when it clicked. CLI programs don’t persist memory. Every run starts fresh. That was the most important lesson. Not everything you build “stays” unless you store it. It changed how I think about programs. By the end the calculator is still simple but my understanding of structure and flow is much stronger. It feels less like guessing and more like knowing what I’m doing. Note: The screenshot only shows a basic run and does not include all implemented features (validation command handling improvements and history tracking).
Devlog 3 — Persistence and Control (File-based History + Clear Command) What I learned: Why CLI programs reset completely every time they are executed How to use the fs module to write and read files in Node.js How appendFileSync can be used to store data incrementally How to read stored data using readFileSync The difference between in-memory state and persistent state How small bugs (like variable naming or extra trims) can break logic in subtle ways Why validation, execution and side effects (like saving history) should stay separated Biggest struggle: This part was less chaotic than Day 2 but still frustrating in a different way. The logic itself wasn’t the problem this time. It was understanding how programs behave over time . I had already built a history system before so seeing it disappear every run was confusing at first. Then came the file system part. Writing to a file felt simple but reading it back properly and formatting it without breaking things took more effort than expected. Small mistakes like misnaming variables or structuring loops incorrectly kept causing issues. It wasn’t overwhelming chaos but more like constant small friction that slowed everything down. Current features: Persistent history system using fs Calculations are stored in history.txt across runs history command displays formatted past calculations clear command wipes stored history clean Improved validation and error messages Clean separation between parsing, validation and execution Next steps: Convert the calculator into an interactive CLI (REPL-style) Reduce repeated validation logic into reusable helpers Improve overall UX (cleaner outputs and command feedback) Reflection: The biggest realization was understanding that programs don’t remember anything unless you explicitly store it. That changed how I think about state completely. Compared to earlier struggles, this one felt quieter but still tiring. Less confusion, more persistence. Fixing small issues, understanding behavior and slowly making things more stable. It still isn’t perfect but it finally feels like the calculator has some sense of continuity instead of resetting every time. Note: The screenshot does not show all features (full validation system).
Devlog 4 — Making it Interactive (REPL + UX Improvements) What I learned: How to use readline to keep the program running and take input again and again The difference between a script that runs once vs something interactive How small UX things (like input formatting and cleaner output) actually matter a lot How to handle messy user input using trim() and split(/\s+/) How to structure code so it doesn’t become a mess when it keeps running in a loop Biggest struggle: This part wasn’t “hard” in the usual sense but it was confusing at first. Before this, my program would just run once and end. Now it stays alive and that changes how everything works. I had to think differently about how commands are handled because now the same logic runs over and over again. Input handling was also kind of annoying. Even small things like extra spaces could break stuff which forced me to actually deal with it properly instead of ignoring it. Another thing was output. At some points it felt too cluttered and at others it felt like not enough information was being shown. Finding a balance there took a bit of trial and error. Current features: REPL system using readline (no need to restart the program every time) Continuous input like a real CLI Support for both commands and symbols ( add + + , etc.) Better input handling (spaces don’t break things anymore) Validation for: wrong number of arguments invalid numbers division by zero square root of negative numbers Cleaner output (less unnecessary logs) History system: saved to history.txt can view with history can reset with clear cls to clear the screen exit to quit the program Next steps: Support actual expressions like 2 + 3 * 4 instead of strict commands Make history a bit smarter (maybe timestamps or search) Reduce repeated logic even more Add vector/matrix operations Add autocomplete for commands Add colored terminal output Reflection: This is probably the first version that actually feels like a real program. The REPL made a huge difference. Before, it felt like I was just testing functions. Now it actually feels like something you can use. Most of the improvements in this version aren’t big features, but small things that make the experience smoother. Stuff like handling spaces properly or adding aliases doesn’t sound like much but it changes how the program feels. I’m starting to notice that building something usable is very different from just making something work. It’s still simple and there’s a lot more I could improve but this is the first time the calculator feels complete in its own way.
Devlog 5 — Expressions, Memory and a Real “Calculator Feel” What I learned: How to evaluate user input dynamically using Function() (and why it needs to be handled carefully) How to replace parts of user input using regex. How to structure commands when the number of arguments isn’t always fixed (min/max validation) How small UX details (like colors using chalk ) make a big difference in usability How to maintain state across a REPL session How to design a fallback system where unknown commands are treated as expressions Biggest struggle: This one was definitely more complex than the previous days. The hardest part was adding expression evaluation. Using something like Function() to evaluate user input felt powerful but also risky and confusing at first. Making sure it doesn’t break on invalid input and handling errors properly took some time. Another tricky part was implementing a feature ( ans ) that lets you reuse the previous result in new calculations. Ensuring it worked consistently across both commands and expressions required careful handling of user input. Replacing it correctly in user input without breaking other words or expressions required using regex carefully. Also, as the number of commands grew, validation started getting messy. Switching to a min/max argument system helped but it took a bit of thinking to get right. This stage felt less like “just coding” and more like designing how the calculator should behave. Current features: Full REPL-based interactive CLI Support for both commands and direct expressions: add 2 3 2 + 3 * 4 ans keyword to reuse the previous result Expanded math operations: Trigonometry ( sin , cos , tan ) Logarithms ( ln , log ) Factorial ( fact ) Rounding ( round , ceil , floor ) Absolute value ( abs ) Improved validation with flexible argument handling (min/max support) Persistent history with timestamps Optional history limit ( history n ) Colored and structured output using chalk Better error handling for invalid commands and expressions Next steps: Improve expression parsing (support more complex cases safely) Possibly replace Function() with a safer custom parser Add command chaining or multi-step calculations Improve UI further (custom prompt, better formatting) Maybe create a simple web version for easier demo access Reflection: This version feels like a big step forward. Before, the calculator was command-based and structured. Now it feels much more natural and flexible, especially with expressions and the ans feature. It’s starting to behave like an actual calculator instead of just a program that runs specific commands. At the same time, the complexity is definitely increasing. It’s getting harder to manage everything cleanly which makes me realize how important structure and planning are as projects grow. It’s not perfect but it finally feels like something I could actually use. Not just something I built to learn.
Devlog 6 — Taking the CLI to the Browser Biggest struggle The hardest part wasn’t writing new features. It was translating existing ones into a completely different environment. The original CLI felt natural because Node.js gives you everything: file system, stdin/stdout, process control. The browser gives you none of that. Every tool I had been relying on: readline , fs , chalk , console.log even process either doesn’t exist or behaves differently in a browser context. The trickiest translation was the input loop. readline handles line buffering automatically, you just wait for the user to press Enter and get the full line back. With xterm.js, you get one raw character at a time via onData . The other catch was the expression evaluator. After porting everything over, sin(90) + 10 was returning "Invalid command or expression" because the Function() scope didn’t know what sin was. The fix was straightforward once I understood the cause, exposing the math functions as local constants inside the Function() string but it was a good reminder that a working feature in one environment isn’t automatically working in another. What changed in this version New files src/calc-demo.js :- full browser port of calc.js using xterm.js main.js :- entry point: boots xterm, loads the fit addon, calls initCalc(term) index.html :- static shell with topbar, terminal mount and statusbar style.css :- dark terminal theme built around a monospace font stack and a single green accent Key substitutions made Node.js ( calc.js ) Browser ( calc-demo.js ) readline xterm.js onData + manual buffer chalk ANSI escape codes fs / history.txt localStorage console.log term.write() via print() process.exit location.reload() calc.js is untouched. The original CLI still runs exactly as before with node src/calc.js . The browser build is a separate port not a replacement. Current features Everything from Devlog 5, now running in the browser Live deployment on Vercel. No install, no terminal, just a URL Terminal emulator UI with topbar, statusbar and live clock Full xterm.js input handling: backspace, local echo, line buffering History persisted in localStorage across page reloads Expression evaluator now supports sin(90) + 10 , sqrt(144) , abs(-5) etc. directly cls clears the xterm screen properly using escape sequences exit reloads the page Reflection Devlog 5 ended with “maybe create a simple web version for easier demo access” as a future idea. This devlog is that idea, actually shipped. What surprised me most was how much invisible work Node.js was doing. You write readline and it just works but behind it is a whole input loop, line buffering, echo management and terminal control that you never think about. Doing it manually in xterm.js made all of that visible which was frustrating at first but genuinely useful to understand. The project now has two lives: a proper Node.js CLI tool and a browser demo that looks and feels identical. That separation, keeping calc.js untouched and building the browser port as a parallel file felt like the right architectural call. One doesn’t compromise the other. It’s also the first time something I built has a real public URL.
Ships:
What did you make? A CLI calculator built from scratch in Node.js. Not just a basic one, it runs as a full REPL in your terminal, supports both command-driven operations ( add 2 3 , sin 90 ) and free-form math expressions ( 2 + 3 * 4 , sin(90) + 10 ), remembers your last result with ans , logs every calculation to a history file with timestamps and validates inputs with actual helpful error messages. Over the last week I also ported the whole thing to run in the browser using xterm.js so you can try it live without installing anything. What was challenging? Honestly, most of it at some point. The expression evaluator was probably the hardest part. Using Function() to evaluate raw user input feels powerful but also kind of risky and making it fail gracefully without breaking anything took a while to get right. The ans memory system was tricky too because replacing it correctly across both commands and expressions without accidentally mangling other words required careful regex work. The browser port was a whole different kind of hard. I didn’t realize how much Node.js was doing for me silently. readline alone handles an entire input loop that I had to rebuild character by character in xterm.js. What are you proud of? A few things: The validation architecture — argument counts, type checks, domain-specific errors (division by zero, negative square roots, log of non-positives) all cleanly separated from the actual math logic The ans memory system — being able to chain pow 2 8 → add ans 100 → ans / 2 makes it feel like a real calculator The expression evaluator — typing sin(90) + 10 directly and getting 11 feels satisfying every time The history system — timestamped, persistent, filterable with history [n] The fact that the browser demo runs the exact same logic as the CLI — calc.js was never touched, the port lives in a separate file This was built step by step over 6 devlogs in about a week. I’m still a beginner and it’s not perfect but it genuinely feels like something I made rather than something I just followed a tutorial for. What should people know so they can test your project? The easiest way is the live browser demo — no install, just open the link: 🔗 https://cli-calculator-five.vercel.app/ Try these to get a feel for it: help add 2 3 pow 2 8 add ans 100 sin(90) + 10 2 + 3 * 4 history If you want to run it locally instead: git clone https://github.com/AidenHammy/cli-calculator.git cd cli-calculator npm install node src/calc.js...
|
1793462151.8223398
|
1793548551.8223398
|
|
13354
|
My awesome macropad! by @smokystream9236 | Stardan My awesome macropad! by @smokystream9236 | Stardance...
|
smokystream9236
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @smokystream9236 | Title: My awesome macropad! by @smokystream9236 | Stardance...
|
1793404413.586516
|
1794009213.586516
|
|
13355
|
My awesome macropad! by @DeathMoonDemon | Stardanc My awesome macropad! by @DeathMoonDemon | Stardance...
|
DeathMoonDemon
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @DeathMoonDemon | S Title: My awesome macropad! by @DeathMoonDemon | Stardance...
|
1793156194.9466765
|
1793760994.9466765
|
|
13356
|
Untitled by @brny | Stardance
|
brny
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @brny | Stardance
|
1793181073.5507402
|
1793785873.5507402
|
|
13357
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792950684.3028622
|
1793814684.3028622
|
|
13358
|
My very own WebOS by @Lunamiam4 | Stardance
|
Lunamiam4
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Lunamiam4 | Stardance
|
1793389821.8180783
|
1793994621.8180783
|
|
13359
|
WhatsApp-Manager-Bot by @mervin | Stardance
|
mervin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WhatsApp-Manager-Bot by @mervin | Stardance
|
1793411662.789668
|
1794016462.789668
|
|
13360
|
Xinyu Lyu Website by @xinyulyu | Stardance
|
xinyulyu
|
1
|
1.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-16T19:07:45Z", "hours": 1.0, "multiplier": 2.57, "payout": 3, "blessing": "neutral", "text": "I created my own website where people can learn more about me and the projects I am working on. I even bought a custom domain for it. The website took around 23 hours to build with the help of GitHub Copilot, and I spent a lot of time designing, coding, and improving it. I am most proud that I was able to turn my idea into a real website that is online and accessible to everyone. I hope people enjoy exploring it and learning about my projects. I spent around 23 hours building this project, so I would really appreciate any kind feedback or suggestions. Thank you for checking it out!", "repo": "https://github.com/xinyulyuonline/xinyulyu_webseite", "demo": "https://xinyulyu.de/"}]...
|
[{"post_id": 10140, "ts": "202 [{"post_id": 10140, "ts": "2026-06-16T19:00:45Z", "hours": 0.4206, "text": "The website is finished. I might add more services later."}, {"post_id": 6231, "ts": "2026-06-10T14:05:30Z", "hours": 0.8461, "text": "Improving the website and expanding various services, such as the Xinyu Convert service for file conversion."}]...
|
Title: Xinyu Lyu Website by @xinyulyu | Stardance
Title: Xinyu Lyu Website by @xinyulyu | Stardance
Devlogs:
Improving the website and expanding various services, such as the Xinyu Convert service for file conversion.
The website is finished. I might add more services later.
Ships:
I created my own website where people can learn more about me and the projects I am working on. I even bought a custom domain for it. The website took around 23 hours to build with the help of GitHub Copilot, and I spent a lot of time designing, coding, and improving it. I am most proud that I was able to turn my idea into a real website that is online and accessible to everyone. I hope people enjoy exploring it and learning about my projects. I spent around 23 hours building this project, so I would really appreciate any kind feedback or suggestions. Thank you for checking it out!...
|
1793512340.9785483
|
1793598740.9785483
|
|
13361
|
BumpReminder by @ama | Stardance
|
ama
|
0
|
4.16
|
0
|
[]
|
[{"post_id": 43312, "ts": "202 [{"post_id": 43312, "ts": "2026-08-08T14:40:57Z", "hours": 1.6964, "text": "Thanks to a friend who helped me with the code i managed to finish a working version of the bump remind bot. I do not consider the project finished yet tho, i want to implement a way for it to store the roles in a database rather than a file, as my current implementation doesn’t allow for the bot to be used in more than one server."}, {"post_id": 33778, "ts": "2026-07-23T23:23:19Z", "hours": 2.4622, "text": "It is 2am, the time at which i typically get tired these days (ik, my sleep schedule is kinda bad) and i decided to call it a day. I restarted the whole project using discord.py instead of discord.js and made the first commit (again… so this project technically had two first commits). second image is the mood of trying to test a small fix you’ve just finished (at 2:18 am) but the discord god (MLP reference :3) said “rate limited” first image is the disappointment when shit ain’t working. Well… I’m heading to sleep now"}, {"post_id": 5115, "ts": "2026-06-08T20:03:15Z", "hours": 0.0, "text": "I wanted to replace a proprietary bot from one of my discord servers so i decided “why not make my own? a bump reminding bot should be easy to make”. First time using discord.js (used discord.py briefly before tho). I started with a script that logs in the bot account using the token from the .env file (which i just doublechecked that is on .gitignore before pushing to the origin). I have greater plans for stardance, but i am busy with school AND by the time school is over i will be going to a week vacation to Italy (And i’ll go see Linkin Park live on 26th of June :3) So… yea. School be damned."}]...
|
Title: BumpReminder by @ama | Stardance
Devlogs:
Title: BumpReminder by @ama | Stardance
Devlogs:
I wanted to replace a proprietary bot from one of my discord servers so i decided “why not make my own? a bump reminding bot should be easy to make”. First time using discord.js (used discord.py briefly before tho). I started with a script that logs in the bot account using the token from the .env file (which i just doublechecked that is on .gitignore before pushing to the origin). I have greater plans for stardance, but i am busy with school AND by the time school is over i will be going to a week vacation to Italy (And i’ll go see Linkin Park live on 26th of June :3) So… yea. School be damned.
It is 2am, the time at which i typically get tired these days (ik, my sleep schedule is kinda bad) and i decided to call it a day. I restarted the whole project using discord.py instead of discord.js and made the first commit (again… so this project technically had two first commits). second image is the mood of trying to test a small fix you’ve just finished (at 2:18 am) but the discord god (MLP reference :3) said “rate limited” first image is the disappointment when shit ain’t working. Well… I’m heading to sleep now
Thanks to a friend who helped me with the code i managed to finish a working version of the bump remind bot. I do not consider the project finished yet tho, i want to implement a way for it to store the roles in a database rather than a file, as my current implementation doesn’t allow for the bot to be used in more than one server....
|
1793558893.4771938
|
1794163693.4771938
|
|
13362
|
My very own WebOS by @eut1450 | Stardance
|
eut1450
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @eut1450 | Stardance
|
1793347008.9216313
|
1793951808.9216313
|
|
13363
|
Resurfaced by @AnshPa | Stardance
|
AnshPa
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Resurfaced by @AnshPa | Stardance
|
1793360883.0775385
|
1793965683.0775385
|
|
13364
|
My very own WebOS by @quan_cookie | Stardance
|
quan_cookie
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @quan_cookie | Stardan Title: My very own WebOS by @quan_cookie | Stardance...
|
1793400965.9890451
|
1794005765.9890451
|
|
13365
|
My very own WebOS by @pgallagher558 | Stardance
|
pgallagher558
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @pgallagher558 | Stard Title: My very own WebOS by @pgallagher558 | Stardance...
|
1793213657.44511
|
1793818457.44511
|
|
13366
|
Untitled by @will_exe | Stardance
|
will_exe
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @will_exe | Stardance
|
1793479653.5582232
|
1794084453.5582232
|
|
13367
|
Nova Trap (working title) by @Matt_of_Tau_Ceti | S Nova Trap (working title) by @Matt_of_Tau_Ceti | Stardance...
|
Matt_of_Tau_Ceti
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nova Trap (working title) by @Matt_of_Tau_C Title: Nova Trap (working title) by @Matt_of_Tau_Ceti | Stardance...
|
1793177623.0367641
|
1793782423.0367641
|
|
13368
|
Untitled by @lix | Stardance
|
lix
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @lix | Stardance
|
1792940068.6194339
|
1793804068.6194339
|
|
13369
|
My very own WebOS by @Astronaut_ag | Stardance
|
Astronaut_ag
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Astronaut_ag | Starda Title: My very own WebOS by @Astronaut_ag | Stardance...
|
1793306932.447655
|
1793911732.447655
|
|
13370
|
Pi WebOS by @pi | Stardance
|
pi
|
2
|
15.0
|
22
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-27T21:29:52Z", "hours": 6.0, "multiplier": 4.0, "payout": 22, "blessing": "neutral", "text": "Welcome to Pi WebOS! This is my submission to the WebOS 2 Mission. I’ve created a paper-themed WebOS with many, many features, ranging from a mini browser to tiny micro-interactions like double clicking the title bar, or window positions being persistent. Made with pure HTML, CSS, and JS. The project has a built in, intuitive walkthrough, but I’ll also provide a feature list here. You can also watch the short demo attached (also visible on the README). Features Moveable, resizable, closable windows Window positions save on reload Correct Z ordering after opening a page Draggable files/apps on desktop [NEW] Double click menu bar to fullscreen window Window cannot leave desktop Window snaps back into frame Multiple Apps Text Documents (like this one!) (Mostly) Functional Browser Notes App Settings App [NEW] Menu bar Page Selector Fullscreen OS Browser/OS detection Links that open windows in the OS Keyboard shortcuts (Esc, Shift + Esc, Cmd + Z) [NEW] Customizable themes through the Settings app [NEW]", "repo": "https://github.com/anagram-of-pi/web-os-mission", "demo": "https://pi-os-mission.netlify.app"}, {"ship_num": 2, "ts": "2026-06-09T19:12:24Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is Pi WebOS, a website that mimics the look and feel of a OS with moveable, resizable, and closable windows that are both responsive and smooth. There are multiple apps, including a bare bones web browser! The website has many small quality of life features, such as windows snapping back into the desktop and windows being preserved on reload. It provides an intuitive walkthrough of almost every part of the OS and a feature list describing both the large things (like windows and apps) and the small QOL things (like links that open windows). This project was largely to improve my comfortability with JavaScript and CSS No AI was used to generate any code or text. AI was used to help debug and research.", "repo": "https://github.com/anagram-of-pi/web-os-mission", "demo": "https://pi-os-mission.netlify.app"}]...
|
[{"post_id": 17103, "ts": "202 [{"post_id": 17103, "ts": "2026-06-27T19:29:43Z", "hours": 0.9942, "text": "Custom themes! Sorry, this is a short devlog, but I just finished the tedious task of letting the JS update every color in the CSS via CSS variables. Luckily, I had thought ahead and made everything in the CSS already use a variable but there’s a lot of hardcoded values I had to manually input."}, {"post_id": 17060, "ts": "2026-06-27T18:15:07Z", "hours": 2.6006, "text": "Draggable files on the desktop :) . I really like how smooth and bouncy the animation is, and I’m really proud of how well I fit the files in with the rest of the theme. Double clicking gives a really satisfying fluid motion. Also, they open the windows :) . Sidenote, I added keyboard shortcuts! Notably, esc to close windows and cmd z to undo the closing. I really had to balance the command z because I didn’t want it to undo writing text, but I also didn’t want to completely disable command z on my page. text"}, {"post_id": 5970, "ts": "2026-06-10T00:25:40Z", "hours": 1.9894, "text": "Learned another basic JavaScript principle again (unpacking multiple value) :) Meanwhile, I could do this ten times faster in Python without having to look something up every minute or so."}, {"post_id": 5764, "ts": "2026-06-09T17:45:23Z", "hours": 2.4408, "text": "Browser in a website = (Pi WebOS)²"}, {"post_id": 5646, "ts": "2026-06-09T14:55:57Z", "hours": 2.4281, "text": "Behind the scenes there’s a lot that I’ve done. Mainly, the window content is actually styled (and a few new windows have been added!), but there a a ton of small things that had to get done first. There is a working (kind of) web browser that displays the url in an iframe, which is really cool, and actually not too difficult. It can’t display all sites because many popular sites intentionally disable being shown in an iframe, but it can go to hackclub.com."}, {"post_id": 5321, "ts": "2026-06-09T01:50:09Z", "hours": 2.7525, "text": "I’ve added more windows and some other miscellaneous features. There was a lot of debugging, and coincidentally also a lot of forgotten keywords, like “let”. I’m too used to Python. I haven’t styled the windows yet, though."}, {"post_id": 5231, "ts": "2026-06-08T22:50:24Z", "hours": 1.6692, "text": "Starting the WebOS basic mission. I have windows displaying, moving, and closable. Next is adding content to the windows, but also making the nav menu do stuff. I had a weird bug with the rem unit changing based on the parent height. If you know advanced CSS, you’ll understand why that’s strange :)"}]...
|
Title: Pi WebOS by @pi | Stardance
Devlogs:
Start Title: Pi WebOS by @pi | Stardance
Devlogs:
Starting the WebOS basic mission. I have windows displaying, moving, and closable. Next is adding content to the windows, but also making the nav menu do stuff. I had a weird bug with the rem unit changing based on the parent height. If you know advanced CSS, you’ll understand why that’s strange :)
I’ve added more windows and some other miscellaneous features. There was a lot of debugging, and coincidentally also a lot of forgotten keywords, like “let”. I’m too used to Python. I haven’t styled the windows yet, though.
Behind the scenes there’s a lot that I’ve done. Mainly, the window content is actually styled (and a few new windows have been added!), but there a a ton of small things that had to get done first. There is a working (kind of) web browser that displays the url in an iframe, which is really cool, and actually not too difficult. It can’t display all sites because many popular sites intentionally disable being shown in an iframe, but it can go to hackclub.com.
Browser in a website = (Pi WebOS)²
Learned another basic JavaScript principle again (unpacking multiple value) :) Meanwhile, I could do this ten times faster in Python without having to look something up every minute or so.
Draggable files on the desktop :) . I really like how smooth and bouncy the animation is, and I’m really proud of how well I fit the files in with the rest of the theme. Double clicking gives a really satisfying fluid motion. Also, they open the windows :) . Sidenote, I added keyboard shortcuts! Notably, esc to close windows and cmd z to undo the closing. I really had to balance the command z because I didn’t want it to undo writing text, but I also didn’t want to completely disable command z on my page. text
Custom themes! Sorry, this is a short devlog, but I just finished the tedious task of letting the JS update every color in the CSS via CSS variables. Luckily, I had thought ahead and made everything in the CSS already use a variable but there’s a lot of hardcoded values I had to manually input.
Ships:
This is Pi WebOS, a website that mimics the look and feel of a OS with moveable, resizable, and closable windows that are both responsive and smooth. There are multiple apps, including a bare bones web browser! The website has many small quality of life features, such as windows snapping back into the desktop and windows being preserved on reload. It provides an intuitive walkthrough of almost every part of the OS and a feature list describing both the large things (like windows and apps) and the small QOL things (like links that open windows). This project was largely to improve my comfortability with JavaScript and CSS No AI was used to generate any code or text. AI was used to help debug and research.
Welcome to Pi WebOS! This is my submission to the WebOS 2 Mission. I’ve created a paper-themed WebOS with many, many features, ranging from a mini browser to tiny micro-interactions like double clicking the title bar, or window positions being persistent. Made with pure HTML, CSS, and JS. The project has a built in, intuitive walkthrough, but I’ll also provide a feature list here. You can also watch the short demo attached (also visible on the README). Features Moveable, resizable, closable windows Window positions save on reload Correct Z ordering after opening a page Draggable files/apps on desktop [NEW] Double click menu bar to fullscreen window Window cannot leave desktop Window snaps back into frame Multiple Apps Text Documents (like this one!) (Mostly) Functional Browser Notes App Settings App [NEW] Menu bar Page Selector Fullscreen OS Browser/OS detection Links that open windows in the OS Keyboard shortcuts (Esc, Shift + Esc, Cmd + Z) [NEW] Customizable themes through the Settings app [NEW]...
|
1793469364.2343128
|
1793555764.2343128
|
|
13371
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792943602.7105405
|
1793807602.7105405
|
|
13372
|
THE BEST MACROPAD by @Master_Builder | Stardance
|
Master_Builder
|
0
|
0.26
|
0
|
[]
|
[{"post_id": 6063, "ts": "2026 [{"post_id": 6063, "ts": "2026-06-10T05:51:31Z", "hours": 0.2558, "text": "I MADE A HACKPAD (ITS MY FIRST PROJECT EVER!)"}]...
|
Title: THE BEST MACROPAD by @Master_Builder | Star Title: THE BEST MACROPAD by @Master_Builder | Stardance
Devlogs:
I MADE A HACKPAD (ITS MY FIRST PROJECT EVER!)...
|
1793458531.541654
|
1794063331.541654
|
|
13373
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792943684.7503357
|
1793807684.7503357
|
|
13374
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792921693.1086106
|
1793785693.1086106
|
|
13375
|
My very own WebOS by @crmooney7 | Stardance
|
crmooney7
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @crmooney7 | Stardance
|
1793562895.831057
|
1794167695.831057
|
|
13376
|
efficient rover by @valdtaniem | Stardance
|
valdtaniem
|
1
|
13.0
|
90
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-16T11:25:42Z", "hours": 12.0, "multiplier": 7.32, "payout": 90, "blessing": "neutral", "text": "I made 2 scripts in C. A server script and a rover script. The server script accepts the connection from the rover. When it receives “ping” it sends a randomly generated string of 1, 01, 001 and 000. with 50% 1 for forward, 25% 01 for backwards and 12.5% 001 and 000 for left and right. the efficiency comes from the fact that the most used (forward) is only 1 character, and lesser used actions are more. 3blue1brown explains it very well ( https://youtu.be/l6DKRf-fAAM?si=0wl0j-8jQxhWdPC4&t=208 ). That video is also where I got the idea for this project.", "repo": "https://git.tuxworld.nl/valdtaniem/EfficientRover", "demo": "https://git.tuxworld.nl/valdtaniem/EfficientRover/releases"}]...
|
[{"post_id": 35757, "ts": "202 [{"post_id": 35757, "ts": "2026-07-27T12:17:43Z", "hours": 0.9986, "text": "I got feedback on my previous ship that I needed a release with binaries, so i made that. While I’m at it I might as well write a little Makefile. (make help for all the commands)"}, {"post_id": 29392, "ts": "2026-07-16T10:05:55Z", "hours": 2.1306, "text": "I drew a new background and new rover."}, {"post_id": 13776, "ts": "2026-06-22T16:05:19Z", "hours": 0.7764, "text": "Server GUI updated. the server GUI can scroll. the text is no longer editable and the server loads a CSS file for styling."}, {"post_id": 13092, "ts": "2026-06-21T12:55:25Z", "hours": 1.8792, "text": "most functions are in (: The server has a GUI now, just a live log of what is being sent. and connection info. The rover GUI has an update, new buttons and a background. You can now close the rover program and the server won’t crash. you can start the rover up again and reconnect. i want to add a controller to the server for manual driving. Making everything look better is also something I want to do. the rover and background are pretty ugly and the server still looks plain."}, {"post_id": 9817, "ts": "2026-06-16T08:13:05Z", "hours": 3.1278, "text": "The rover has a GUI now! using GTK i made a grid with buttons and a drawing area to visualize the rover moving. with ping to receive movement instructions and reset to position the rover back to the center the button images should change because they are now just hand drawn (; the server sends longer strings. planning to add a background and make the buttons look like a controll panel. while the rover is moving don’t press the ping button becouse than the program crashes. ¯ _ (ツ)_/"}, {"post_id": 6811, "ts": "2026-06-11T13:03:04Z", "hours": 1.3764, "text": "The server now sends full strings of instructions and the rover can properly decode them into forward, backward, left and right instructions. I’m pretty proud of my implementation although I’m sure there is a better way."}, {"post_id": 5605, "ts": "2026-06-09T13:50:10Z", "hours": 0.9508, "text": "The server now transmits random movement instructions. the instructions have a 50%, 25%, 12.5% and 12.5% for 1, 01, 001 and 000. Because 1 is used much more its more efficient than encoding with 00, 01, 10 and 11"}, {"post_id": 5574, "ts": "2026-06-09T12:29:45Z", "hours": 2.0519, "text": "the rover and server scripts are talking via tcp."}]...
|
Title: efficient rover by @valdtaniem | Stardance
Title: efficient rover by @valdtaniem | Stardance
Devlogs:
the rover and server scripts are talking via tcp.
The server now transmits random movement instructions. the instructions have a 50%, 25%, 12.5% and 12.5% for 1, 01, 001 and 000. Because 1 is used much more its more efficient than encoding with 00, 01, 10 and 11
The server now sends full strings of instructions and the rover can properly decode them into forward, backward, left and right instructions. I’m pretty proud of my implementation although I’m sure there is a better way.
The rover has a GUI now! using GTK i made a grid with buttons and a drawing area to visualize the rover moving. with ping to receive movement instructions and reset to position the rover back to the center the button images should change because they are now just hand drawn (; the server sends longer strings. planning to add a background and make the buttons look like a controll panel. while the rover is moving don’t press the ping button becouse than the program crashes. ¯ _ (ツ)_/
most functions are in (: The server has a GUI now, just a live log of what is being sent. and connection info. The rover GUI has an update, new buttons and a background. You can now close the rover program and the server won’t crash. you can start the rover up again and reconnect. i want to add a controller to the server for manual driving. Making everything look better is also something I want to do. the rover and background are pretty ugly and the server still looks plain.
Server GUI updated. the server GUI can scroll. the text is no longer editable and the server loads a CSS file for styling.
I drew a new background and new rover.
I got feedback on my previous ship that I needed a release with binaries, so i made that. While I’m at it I might as well write a little Makefile. (make help for all the commands)
Ships:
I made 2 scripts in C. A server script and a rover script. The server script accepts the connection from the rover. When it receives “ping” it sends a randomly generated string of 1, 01, 001 and 000. with 50% 1 for forward, 25% 01 for backwards and 12.5% 001 and 000 for left and right. the efficiency comes from the fact that the most used (forward) is only 1 character, and lesser used actions are more. 3blue1brown explains it very well ( https://youtu.be/l6DKRf-fAAM?si=0wl0j-8jQxhWdPC4&t=208 ). That video is also where I got the idea for this project....
|
1793515835.2046463
|
1793602235.2046463
|
|
13377
|
Vibe OS by @VibeSlayer | Stardance
|
VibeSlayer
|
1
|
6.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-13T13:24:18Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "VibeOS is Finally Complete This was a really wonderful experience building VibeOS. I made it with both the competition and minimalism in mind, focusing on keeping everything clean, smooth, and useful. The hardest part of this project was aligning everything with a vanilla tech stack. Since I usually work with Node.js and Vite, building this project with vanilla technologies felt refreshing and challenging in a good way. It helped me strengthen my core frontend concepts and made my understanding of vanilla development much cleaner and better. Overall, VibeOS has been an amazing project to work on. I learned a lot throughout the process, improved my development skills, and pushed myself to build something polished and complete. I’m really happy with how it turned out, and I hope VibeOS gets flying colours in the voting!", "repo": "https://github.com/VibeSlayer-code/VibeOS", "demo": "https://vibe-os-lac.vercel.app/"}]...
|
[{"post_id": 8057, "ts": "2026 [{"post_id": 8057, "ts": "2026-06-13T13:20:14Z", "hours": 2.1403, "text": "VibeOS Devlog #5 Hi developers, VibeOS is fully complete, finally. After the previous devlog i pushed major updates like taskbar, window resizing, more apps, dark mode, wallpapers and much more. As VibeOS is deployed. You can try it at https://vibe-os-lac.vercel.app/ . Thanks"}, {"post_id": 6439, "ts": "2026-06-10T20:31:34Z", "hours": 1.9672, "text": "VibeOS Devlog #4 Hi developers, today I gave VibeOS its biggest update yet. I made two new system apps and one app for VibeStore. Making VibeStore was the hardest task lmao. So basically, I’m not going to reveal much about VibeStore yet, as it is not complete with the apps I’m thinking about. I also made a custom browser for VibeOS called Surf . It is fast like Safari and clean, and it also has tab control. If you noticed the calculator logo on the main dock, it is a secret for now. I’m going to disclose more about it later. I also made a status dock on the right with Wi-Fi status, brightness, battery, etc., and added a control center modal. It shows real-time battery status and Wi-Fi status with ping. I also added more cool customizable widgets. For the next and final phase, my plans are to implement more apps and a fully working music player with a wide variety of artists and songs. I’m thinking about Jaydes, Kendrick, and some others. I will also add dark mode and the taskbar, which should not take much time. I have also planned some features for the WebOS 2 mission because I just do not want to drain my idea list in WebOS 1. And yeah one change which i m seeing is that now, i m not facing any problems while coding and everything is going very smooth, thanks Stardance for helping me revise my web dev skills :) Anyways, GN and long live VibeOS!"}, {"post_id": 5704, "ts": "2026-06-09T16:31:21Z", "hours": 1.4183, "text": "VibeOS Devlog #3 Today was a really long and tiring day working on VibeOS, but I pushed some major updates! I completed the filesystem API, made two new apps, improved the dock, added widgets, and more. The hardest part was definitely building the filesystem API, mainly because this was my first time making something like this 😂. It was painful, but worth it. It now supports rename, delete, create, and save properly. The dock also got a big update. Now when you minimize an app, a genie-style animation plays — I tried my best to recreate the macOS one lmao — and the app logo gets stacked in the dock. When you want to open it again, you just click the logo and boom, the window comes back. I also completed the Files app and Notes app, which were honestly much easier for me. Along with that, I designed and added two new movable and customizable widgets, which you can see in the screenshots I attached. Tomorrow, I’m planning to work on more apps, build the taskbar, and add dark mode. Let’s see how it goes. The biggest challenge right now is still the tech stack 😭, because I can’t use cool libraries like Framer Motion and stuff. Anyways, Long Live VibeOS!"}, {"post_id": 5480, "ts": "2026-06-09T08:57:30Z", "hours": 0.5778, "text": "DEVLOG #2 Hi developers! I have done some major completions in VibeOS. Here is the changelog! [+] Completed DockAPI (full function list will be available soon in the readme) [+] Completed App API and added appApi.syncOpenState(name) [+] Did dock enhancements! [+] Made in-app UI cleaner Lets keep going!"}, {"post_id": 5098, "ts": "2026-06-08T19:44:58Z", "hours": 0.2878, "text": "DEV LOG #1 Hi all! I’ve started building the OS. In Phase 1, I focused on creating the UI, deciding on the design rules and color palette, and implementing core features like app windows, dragging, and closing logic. I also made a top bar inspired by the Dynamic Island, which I’m really happy with. For Phase 2, I plan to add more apps, a settings app, different wallpapers, and lots of new features. Excited to keep building and share more progress soon!"}]...
|
Title: Vibe OS by @VibeSlayer | Stardance
Devlogs Title: Vibe OS by @VibeSlayer | Stardance
Devlogs:
DEV LOG #1 Hi all! I’ve started building the OS. In Phase 1, I focused on creating the UI, deciding on the design rules and color palette, and implementing core features like app windows, dragging, and closing logic. I also made a top bar inspired by the Dynamic Island, which I’m really happy with. For Phase 2, I plan to add more apps, a settings app, different wallpapers, and lots of new features. Excited to keep building and share more progress soon!
DEVLOG #2 Hi developers! I have done some major completions in VibeOS. Here is the changelog! [+] Completed DockAPI (full function list will be available soon in the readme) [+] Completed App API and added appApi.syncOpenState(name) [+] Did dock enhancements! [+] Made in-app UI cleaner Lets keep going!
VibeOS Devlog #3 Today was a really long and tiring day working on VibeOS, but I pushed some major updates! I completed the filesystem API, made two new apps, improved the dock, added widgets, and more. The hardest part was definitely building the filesystem API, mainly because this was my first time making something like this 😂. It was painful, but worth it. It now supports rename, delete, create, and save properly. The dock also got a big update. Now when you minimize an app, a genie-style animation plays — I tried my best to recreate the macOS one lmao — and the app logo gets stacked in the dock. When you want to open it again, you just click the logo and boom, the window comes back. I also completed the Files app and Notes app, which were honestly much easier for me. Along with that, I designed and added two new movable and customizable widgets, which you can see in the screenshots I attached. Tomorrow, I’m planning to work on more apps, build the taskbar, and add dark mode. Let’s see how it goes. The biggest challenge right now is still the tech stack 😭, because I can’t use cool libraries like Framer Motion and stuff. Anyways, Long Live VibeOS!
VibeOS Devlog #4 Hi developers, today I gave VibeOS its biggest update yet. I made two new system apps and one app for VibeStore. Making VibeStore was the hardest task lmao. So basically, I’m not going to reveal much about VibeStore yet, as it is not complete with the apps I’m thinking about. I also made a custom browser for VibeOS called Surf . It is fast like Safari and clean, and it also has tab control. If you noticed the calculator logo on the main dock, it is a secret for now. I’m going to disclose more about it later. I also made a status dock on the right with Wi-Fi status, brightness, battery, etc., and added a control center modal. It shows real-time battery status and Wi-Fi status with ping. I also added more cool customizable widgets. For the next and final phase, my plans are to implement more apps and a fully working music player with a wide variety of artists and songs. I’m thinking about Jaydes, Kendrick, and some others. I will also add dark mode and the taskbar, which should not take much time. I have also planned some features for the WebOS 2 mission because I just do not want to drain my idea list in WebOS 1. And yeah one change which i m seeing is that now, i m not facing any problems while coding and everything is going very smooth, thanks Stardance for helping me revise my web dev skills :) Anyways, GN and long live VibeOS!
VibeOS Devlog #5 Hi developers, VibeOS is fully complete, finally. After the previous devlog i pushed major updates like taskbar, window resizing, more apps, dark mode, wallpapers and much more. As VibeOS is deployed. You can try it at https://vibe-os-lac.vercel.app/ . Thanks
Ships:
VibeOS is Finally Complete This was a really wonderful experience building VibeOS. I made it with both the competition and minimalism in mind, focusing on keeping everything clean, smooth, and useful. The hardest part of this project was aligning everything with a vanilla tech stack. Since I usually work with Node.js and Vite, building this project with vanilla technologies felt refreshing and challenging in a good way. It helped me strengthen my core frontend concepts and made my understanding of vanilla development much cleaner and better. Overall, VibeOS has been an amazing project to work on. I learned a lot throughout the process, improved my development skills, and pushed myself to build something polished and complete. I’m really happy with how it turned out, and I hope VibeOS gets flying colours in the voting!...
|
1793508459.6378088
|
1793594859.6378088
|
|
13378
|
My awesome macropad! by @anugamyapanwar | Stardanc My awesome macropad! by @anugamyapanwar | Stardance...
|
anugamyapanwar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @anugamyapanwar | S Title: My awesome macropad! by @anugamyapanwar | Stardance...
|
1793396973.9560425
|
1794001773.9560425
|
|
13379
|
Mining lamp flashlight by @calvin | Stardance
|
calvin
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mining lamp flashlight by @calvin | Stardan Title: Mining lamp flashlight by @calvin | Stardance...
|
1793523254.6387663
|
1794128054.6387663
|
|
13380
|
Planets flashcards & quiz by @Astronaut_ag | S Planets flashcards & quiz by @Astronaut_ag | Stardance...
|
Astronaut_ag
|
2
|
7.0
|
84
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T20:16:12Z", "hours": 1.0, "multiplier": 9.74, "payout": 8, "blessing": "neutral", "text": "This is a website about the Objects in our Solar System! People can click through 3 different flashcard sets to gain knowledge! Please suggest any changes/requests you have on this website! Thanks!!", "repo": "https://github.com/AstronautAG/planets-cards", "demo": "https://astronautag.github.io/planets-cards/"}, {"ship_num": 2, "ts": "2026-06-24T21:22:59Z", "hours": 6.0, "multiplier": 13.11, "payout": 76, "blessing": "neutral", "text": "This is a cool, interactive, and fun website where people can flip through flashcards to learn about space with a quiz for people to test their knowledge!", "repo": "https://github.com/AstronautAG/planets-cards", "demo": "https://astronautag.github.io/planets-cards/"}]...
|
[{"post_id": 30337, "ts": "202 [{"post_id": 30337, "ts": "2026-07-17T20:14:18Z", "hours": 0.8511, "text": "Devlog #4: Made user interface better! :D Special Thanks: First, I would like to thank everyone who reviewed my project and gave me the wonderful feedback. Really appreciate it!! Overview: Significantly upgraded user interface so the buttons stay in roughly the same spot and moved them inside the flashcards My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was how to keep the buttons in the same spot. I had to look up a lot of CSS stuff on websites like w3schools, but figuring it out was the best part! Lessons Learned: Learn a lot from sites like w3schools!! Play around with CSS elements until you get it to look how you want to Looking forward: I hope to publish this on GitHub as a new update, thanks for following my project!!"}, {"post_id": 14700, "ts": "2026-06-23T21:57:58Z", "hours": 1.3939, "text": "Devlog #3: I updated the User Interface which looks MUCH better (after some troubleshooting) :D Overview: Significantly upgraded user interface so it’s actually interactive My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was the User Interface. Before, the UI was pretty basic, and so the HTML and JavaScript had pretty simple variables and id’s for the styling in the CSS. But, when I went to upgrade, I had to change a bunch of variables, but I got it done. One challenge in particular was adding a progress bar to my quiz. Since I already had a structure inside my HTML and CSS, putting it there was not a problem. I thought I had it in the right spot for JavaScript. I was wrong. I spent 20 minutes debugging, then finally found out that it was in the wrong spot the whole time. It was in the function nextQuestion(index) instead of showQuestion(index). Lessons Learned: Keep a close eye on which function is which and keep code organized Debug carefully and don’t mix up different parts of the code Looking forward: I hope to publish this on GitHub now, thanks for following my project!!"}, {"post_id": 13404, "ts": "2026-06-21T23:04:32Z", "hours": 1.0369, "text": "Devlog #2: In this update, I added another flashcard set to my flashcard and quiz website. I edited the HTML, CSS, and JavaScript to make sure that it mirrored the other sets. One challenge with this was to keep each of the information on each flashcard separate. Each flashcard has an image, a title, and a short description specific to the object on the flashcard. Additionally, I had to add another function in JavaScript, but (as I mentioned in the last update), I kept the variables consistent across the functions. One thing I learned from today’s coding is that if the layout is kept consistent across the different flashcard sets and in CSS, it is easier to navigate and make more flashcard sets. In the next update, I plan to update the user interface to level up the experience. Thanks and see you in the next update!"}, {"post_id": 12799, "ts": "2026-06-20T22:40:18Z", "hours": 3.3878, "text": "Devlog #1: In this update, on my flashcard website, I added two flashcard sets. I also updated the user interface significantly, and I added a two-question quiz at the bottom of the page. I upgraded my CSS to show “blocks” (the flashcards) to make sure that the cards that were supposed to be hidden were hidden until the buttons were clicked. I also upgraded how the website looks by adding hover features as well as changing the background color and adding images to each flashcard. Overall, my biggest challenge was keeping ID’s and variables sorted from HTML to JavaScript for each of the flashcard sets. I solved this problem by sorting out each part of my JS into two categories for each set, changing the variable names to ones that made sense and were easy to keep track of (set1, container1, etc.), and finally updating the HTML with these new variables. I learned that keeping code organized from the start prevents problems later! I also learned the debugging process through the console in the website preview on my device. Another thing I learned is that divs in HTML can be extremely useful, especially when there are very similar elements on the page. For the future, I hope to add another flashcard set. Thanks and see you in the next update!"}]...
|
Title: Planets flashcards & quiz by @Astronaut Title: Planets flashcards & quiz by @Astronaut_ag | Stardance
Devlogs:
Devlog #1: In this update, on my flashcard website, I added two flashcard sets. I also updated the user interface significantly, and I added a two-question quiz at the bottom of the page. I upgraded my CSS to show “blocks” (the flashcards) to make sure that the cards that were supposed to be hidden were hidden until the buttons were clicked. I also upgraded how the website looks by adding hover features as well as changing the background color and adding images to each flashcard. Overall, my biggest challenge was keeping ID’s and variables sorted from HTML to JavaScript for each of the flashcard sets. I solved this problem by sorting out each part of my JS into two categories for each set, changing the variable names to ones that made sense and were easy to keep track of (set1, container1, etc.), and finally updating the HTML with these new variables. I learned that keeping code organized from the start prevents problems later! I also learned the debugging process through the console in the website preview on my device. Another thing I learned is that divs in HTML can be extremely useful, especially when there are very similar elements on the page. For the future, I hope to add another flashcard set. Thanks and see you in the next update!
Devlog #2: In this update, I added another flashcard set to my flashcard and quiz website. I edited the HTML, CSS, and JavaScript to make sure that it mirrored the other sets. One challenge with this was to keep each of the information on each flashcard separate. Each flashcard has an image, a title, and a short description specific to the object on the flashcard. Additionally, I had to add another function in JavaScript, but (as I mentioned in the last update), I kept the variables consistent across the functions. One thing I learned from today’s coding is that if the layout is kept consistent across the different flashcard sets and in CSS, it is easier to navigate and make more flashcard sets. In the next update, I plan to update the user interface to level up the experience. Thanks and see you in the next update!
Devlog #3: I updated the User Interface which looks MUCH better (after some troubleshooting) :D Overview: Significantly upgraded user interface so it’s actually interactive My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was the User Interface. Before, the UI was pretty basic, and so the HTML and JavaScript had pretty simple variables and id’s for the styling in the CSS. But, when I went to upgrade, I had to change a bunch of variables, but I got it done. One challenge in particular was adding a progress bar to my quiz. Since I already had a structure inside my HTML and CSS, putting it there was not a problem. I thought I had it in the right spot for JavaScript. I was wrong. I spent 20 minutes debugging, then finally found out that it was in the wrong spot the whole time. It was in the function nextQuestion(index) instead of showQuestion(index). Lessons Learned: Keep a close eye on which function is which and keep code organized Debug carefully and don’t mix up different parts of the code Looking forward: I hope to publish this on GitHub now, thanks for following my project!!
Devlog #4: Made user interface better! :D Special Thanks: First, I would like to thank everyone who reviewed my project and gave me the wonderful feedback. Really appreciate it!! Overview: Significantly upgraded user interface so the buttons stay in roughly the same spot and moved them inside the flashcards My website is a website that has flashcards for people to learn about cool space facts, and there is a quiz at the bottom for people to test their skills! Challenges: The biggest challenge for me this time was how to keep the buttons in the same spot. I had to look up a lot of CSS stuff on websites like w3schools, but figuring it out was the best part! Lessons Learned: Learn a lot from sites like w3schools!! Play around with CSS elements until you get it to look how you want to Looking forward: I hope to publish this on GitHub as a new update, thanks for following my project!!
Ships:
This is a cool, interactive, and fun website where people can flip through flashcards to learn about space with a quiz for people to test their knowledge!
This is a website about the Objects in our Solar System! People can click through 3 different flashcard sets to gain knowledge! Please suggest any changes/requests you have on this website! Thanks!!...
|
1793515865.2160385
|
1793602265.2160385
|
|
13381
|
My first slack bot! by @cheezit | Stardance
|
cheezit
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @cheezit | Stardance
|
1793386213.3985565
|
1793991013.3985565
|
|
13382
|
Rova by @kittendevv | Stardance
|
kittendevv
|
0
|
1.65
|
0
|
[]
|
[{"post_id": 8075, "ts": "2026 [{"post_id": 8075, "ts": "2026-06-13T14:11:13Z", "hours": 1.6489, "text": "Created most of the basic endpoints, for the backend I chose to use Bun + ElysiaJS and I am using Drizzle ORM to interface with my db."}]...
|
Title: Rova by @kittendevv | Stardance
Devlogs:
C Title: Rova by @kittendevv | Stardance
Devlogs:
Created most of the basic endpoints, for the backend I chose to use Bun + ElysiaJS and I am using Drizzle ORM to interface with my db....
|
1793498012.5350466
|
1794102812.5350466
|
|
13383
|
My awesome macropad! by @noofed | Stardance
|
noofed
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @noofed | Stardance
|
1793534119.875913
|
1794138919.875913
|
|
13384
|
WebOS by @JosephK | Stardance
|
JosephK
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WebOS by @JosephK | Stardance
|
1793148832.282954
|
1793753632.282954
|
|
13385
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792950718.8556666
|
1793814718.8556666
|
|
13386
|
test by @taiyo_tomato | Stardance
|
taiyo_tomato
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: test by @taiyo_tomato | Stardance
|
1793263886.0760403
|
1793868686.0760403
|
|
13387
|
My very own WebOS by @Ben_A | Stardance
|
Ben_A
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Ben_A | Stardance
|
1793159752.1720307
|
1793764552.1720307
|
|
13388
|
codex-connect by @nightowl | Stardance
|
nightowl
|
1
|
7.78
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-09T19:25:36Z", "hours": 6.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a library in java called codex-connect that allows users to use their chatgpt account in order to query the api programmatically.", "repo": "https://github.com/nightowl-devs/codex-connect", "demo": "https://jitpack.io/#nightowl-devs/codex-connect/v1.0.2"}]...
|
[{"post_id": 65822, "ts": "202 [{"post_id": 65822, "ts": "2026-09-11T06:59:09Z", "hours": 1.3761, "text": "Okay baisicly stardance demaned a video showcase of the library in the readme so here it is ig. Also adapted the library for the latest gpt 5.5 models and fixed auth since the schema changed once again!! also made the readme cleaner and the example better. idk I was not able to embed the video into the GitHub readme so ig someone curious enough will have to download it :/"}, {"post_id": 15522, "ts": "2026-06-25T06:43:13Z", "hours": 0.4033, "text": "I have fixed the library not working on paid ChatGPT accounts due to me not having the schema at this time"}, {"post_id": 5823, "ts": "2026-06-09T19:21:53Z", "hours": 0.3622, "text": "devlog #3 I got the library to compile correctly on jitpack, made a few mistakes along the way but they all fixed now, and also wrote a readme and included examples on how to use the library"}, {"post_id": 5750, "ts": "2026-06-09T17:29:01Z", "hours": 0.3697, "text": "devlog #2 I have just finished the codex-connect library allowing you to use codex’s api in java it supports tools, the responses endpoint and authentication"}, {"post_id": 5138, "ts": "2026-06-08T20:29:29Z", "hours": 5.3397, "text": "devlog #1 today I wrote a library that allows you to sign in with your ChatGPT account check your quota, usage, get available models for your plan, and obviously prompt the model! why am i doing this? idk i kinda like codex but we know java is better than rust so they leave me no choice. alr cya"}]...
|
Title: codex-connect by @nightowl | Stardance
Dev Title: codex-connect by @nightowl | Stardance
Devlogs:
devlog #1 today I wrote a library that allows you to sign in with your ChatGPT account check your quota, usage, get available models for your plan, and obviously prompt the model! why am i doing this? idk i kinda like codex but we know java is better than rust so they leave me no choice. alr cya
devlog #2 I have just finished the codex-connect library allowing you to use codex’s api in java it supports tools, the responses endpoint and authentication
devlog #3 I got the library to compile correctly on jitpack, made a few mistakes along the way but they all fixed now, and also wrote a readme and included examples on how to use the library
I have fixed the library not working on paid ChatGPT accounts due to me not having the schema at this time
Okay baisicly stardance demaned a video showcase of the library in the readme so here it is ig. Also adapted the library for the latest gpt 5.5 models and fixed auth since the schema changed once again!! also made the readme cleaner and the example better. idk I was not able to embed the video into the GitHub readme so ig someone curious enough will have to download it :/
Ships:
I made a library in java called codex-connect that allows users to use their chatgpt account in order to query the api programmatically....
|
1793490597.0870898
|
1793576997.0870898
|
|
13389
|
My awesome macropad! by @dhrshe934 | Stardance
|
dhrshe934
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @dhrshe934 | Starda Title: My awesome macropad! by @dhrshe934 | Stardance...
|
1793155838.2495475
|
1793760638.2495475
|
|
13390
|
My very own WebOS by @fishycat | Stardance
|
fishycat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @fishycat | Stardance
|
1793174070.112966
|
1793778870.112966
|
|
13391
|
Little Blueberry Adventure by @mohammedmasadeh | S Little Blueberry Adventure by @mohammedmasadeh | Stardance...
|
mohammedmasadeh
|
0
|
0.36
|
0
|
[]
|
[{"post_id": 78823, "ts": "202 [{"post_id": 78823, "ts": "2026-10-11T18:09:21Z", "hours": 0.3569, "text": "I worked on this for so much longer but I forgot to connect it because I used a new coding software so I only have 16 mins logged compared to the actual 2 but its fine."}]...
|
Title: Little Blueberry Adventure by @mohammedmasa Title: Little Blueberry Adventure by @mohammedmasadeh | Stardance
Devlogs:
I worked on this for so much longer but I forgot to connect it because I used a new coding software so I only have 16 mins logged compared to the actual 2 but its fine....
|
1793249554.1970494
|
1794113554.1970494
|
|
13392
|
Alarm Clock by @jad09cook | Stardance
|
jad09cook
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Alarm Clock by @jad09cook | Stardance
|
1793569873.6451132
|
1794174673.6451132
|
|
13393
|
Warhammer Paint-shaker by @Sarcop | Stardance
|
Sarcop
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Warhammer Paint-shaker by @Sarcop | Stardan Title: Warhammer Paint-shaker by @Sarcop | Stardance...
|
1793541251.3516638
|
1794146051.3516638
|
|
13394
|
Marble Cannon by @dh68 | Stardance
|
dh68
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Marble Cannon by @dh68 | Stardance
|
1793246154.5417476
|
1793850954.5417476
|
|
13395
|
10 Zoll 3d Printed Drone by @maximilian_kracke | S 10 Zoll 3d Printed Drone by @maximilian_kracke | Stardance...
|
maximilian_kracke
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: 10 Zoll 3d Printed Drone by @maximilian_kra Title: 10 Zoll 3d Printed Drone by @maximilian_kracke | Stardance...
|
1793541318.0989182
|
1794146118.0989182
|
|
13396
|
Reyansh's WebOS by @Reyansh13 | Stardance
|
Reyansh13
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Reyansh's WebOS by @Reyansh13 | Stardan Title: Reyansh's WebOS by @Reyansh13 | Stardance...
|
1793249321.8353322
|
1793854121.8353322
|
|
13397
|
Portfolio by @AvaR | Stardance
|
AvaR
|
2
|
5.0
|
7
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-07T23:39:22Z", "hours": 1.0, "multiplier": 6.74, "payout": 7, "blessing": "neutral", "text": "Made a Coding Portfolio for myself which I’ve been meaning to do for a while now. In the future I will add images, and more projects :) Features: Separate Pages - Home, About Me, Projects Moveable Windows - Project Details Only Movable Windows Can Be Expanded and Minimized Scrolling available on minimized movable windows, and easily able to close movable windows whether expanded or minimized Working Contact Me Form that connects to my email Simplistic Navigation Bar", "repo": "https://github.com/AvaLR/WebOs-Project", "demo": "https://avalr.github.io/Coding-Portfolio/index.html"}, {"ship_num": 2, "ts": "2026-06-11T15:56:33Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I created a eportfolio page that I’ve been meaning to make for a while now. I’m really happy with how it turned out and I will definitely be adding new pages, projects, etc. in the future as it will change with what I do. I hope you enjoy how it looks and works. Below I added an image of my favorite feature. I created a similar one in 8th grade in code.org. It didn’t work though due to it not being able/not knowing how to attach it to my email. So i’m really happy to have a working version!", "repo": "https://github.com/AvaLR/WebOs-Project", "demo": "https://avalr.github.io/Coding-Portfolio/index.html"}]...
|
[{"post_id": 24418, "ts": "202 [{"post_id": 24418, "ts": "2026-07-07T23:26:11Z", "hours": 1.0558, "text": "Added moveable windows for project details that can scroll, expand/retract and be closed with ease :)"}, {"post_id": 6898, "ts": "2026-06-11T15:45:10Z", "hours": 1.0103, "text": "FINISHED!!! I love how it looks I will continue to add more projects and other updates to make it even BETTER! This is was a great relaxing project for me!"}, {"post_id": 6420, "ts": "2026-06-10T19:57:30Z", "hours": 1.8225, "text": "Got basically everything done! I need to add more projects (might do that as part of WebOS 2 tho so I can go ahead and ship this ) I also added a lovely form and attached it to formspree which was suprisingly easier than I had thought!"}, {"post_id": 5938, "ts": "2026-06-09T22:41:53Z", "hours": 1.3292, "text": "Started my own personal Coding portfolio through github codespaces. I’ve worked on it a LOT since this last work session but forgot to use lapse. So here is this update and then I’ll show the newest version in a little bit when I post another Devlog+. Below is a sneak peek. :)"}]...
|
Title: Portfolio by @AvaR | Stardance
Devlogs:
St Title: Portfolio by @AvaR | Stardance
Devlogs:
Started my own personal Coding portfolio through github codespaces. I’ve worked on it a LOT since this last work session but forgot to use lapse. So here is this update and then I’ll show the newest version in a little bit when I post another Devlog+. Below is a sneak peek. :)
Got basically everything done! I need to add more projects (might do that as part of WebOS 2 tho so I can go ahead and ship this ) I also added a lovely form and attached it to formspree which was suprisingly easier than I had thought!
FINISHED!!! I love how it looks I will continue to add more projects and other updates to make it even BETTER! This is was a great relaxing project for me!
Added moveable windows for project details that can scroll, expand/retract and be closed with ease :)
Ships:
I created a eportfolio page that I’ve been meaning to make for a while now. I’m really happy with how it turned out and I will definitely be adding new pages, projects, etc. in the future as it will change with what I do. I hope you enjoy how it looks and works. Below I added an image of my favorite feature. I created a similar one in 8th grade in code.org. It didn’t work though due to it not being able/not knowing how to attach it to my email. So i’m really happy to have a working version!
Made a Coding Portfolio for myself which I’ve been meaning to do for a while now. In the future I will add images, and more projects :) Features: Separate Pages - Home, About Me, Projects Moveable Windows - Project Details Only Movable Windows Can Be Expanded and Minimized Scrolling available on minimized movable windows, and easily able to close movable windows whether expanded or minimized Working Contact Me Form that connects to my email Simplistic Navigation Bar...
|
1793508522.6416285
|
1793594922.6416285
|
|
13398
|
NULL
|
NULL
|
0
|
0.0
|
0
|
[]
|
[]
|
|
1792946909.6510105
|
1793810909.6510105
|
|
13399
|
Echoes Of The Fort by @mayankbhatt | Stardance
|
mayankbhatt
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Echoes Of The Fort by @mayankbhatt | Starda Title: Echoes Of The Fort by @mayankbhatt | Stardance...
|
1793533887.5029356
|
1794138687.5029356
|
|
13400
|
My first slack bot! by @leuwenhoek | Stardance
|
leuwenhoek
|
1
|
5.55
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T11:20:38Z", "hours": 5.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Alr, thanks to hackclub that I Pushed myself to create somthing different like I didn’t even used slack but now created a bot for slack :) So, available commands for the bot is: /dsb-leuwen-matrix - Get a random 3x3 matrix /dsb-leuwen-dev - About developer ( about me :] ) /dsb-leuwen-ping - Ping Bot", "repo": "https://github.com/leuwenhoek/Hackclub-Slack-bot", "demo": "https://app.slack.com/client/E09V59WQY1E/C0APH2MMHH7?cdn_fallback=1"}]...
|
[{"post_id": 17538, "ts": "202 [{"post_id": 17538, "ts": "2026-06-28T11:22:27Z", "hours": 0.5458, "text": "Finally I shipped me Slack bot :]"}, {"post_id": 5508, "ts": "2026-06-09T09:48:37Z", "hours": 4.9714, "text": "Finally my slackbot is not live in the HackClub slack server…. Use commands like /dsb-leuwen-ping /dsb-leuwen-dev more commands will roll-out soon :)"}]...
|
Title: My first slack bot! by @leuwenhoek | Starda Title: My first slack bot! by @leuwenhoek | Stardance
Devlogs:
Finally my slackbot is not live in the HackClub slack server…. Use commands like /dsb-leuwen-ping /dsb-leuwen-dev more commands will roll-out soon :)
Finally I shipped me Slack bot :]
Ships:
Alr, thanks to hackclub that I Pushed myself to create somthing different like I didn’t even used slack but now created a bot for slack :) So, available commands for the bot is: /dsb-leuwen-matrix - Get a random 3x3 matrix /dsb-leuwen-dev - About developer ( about me :] ) /dsb-leuwen-ping - Ping Bot...
|
1793516098.3104544
|
1793602498.3104544
|