|
41482
|
My own site! by @Dune | Stardance
|
Dune
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Dune | Stardance
|
1792806603.1750948
|
1793411403.1750948
|
|
54802
|
UAV Military Drone by @NisargT | Stardance
|
NisargT
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: UAV Military Drone by @NisargT | Stardance
|
1792806602.3478374
|
1793411402.3478374
|
|
15818
|
PSim - Particle Simulator by @etaiami09-cmd | Star PSim - Particle Simulator by @etaiami09-cmd | Stardance...
|
etaiami09-cmd
|
1
|
64.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-10T21:25:14Z", "hours": 64.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "PSimUltimate Is Ready! I made a particle simulator desktop application in C++ with heavy extension support. Overview PSimUltimate models real physics, but also allows you to inject your own behavior. Using a simple development API that even someone with no C++ experience can understand, you can create, compile and load your own custom modules to the simulator and watch the behavior you’ve coded in action. PSim even ships with 2 of these modules built into the binary, and 3 more modules that you can load dynamically. PSimUltimate also comes with a very simple UI, one that anyone could be comfortable with within minutes. How it works PSimUltimate has documentation for creating your own modules, and compiling them is very simple with a few commands. You can then load the modules, and PSim knows how to run your module and follow its physics. PSimUltimate is written in modern C++, using Raylib and Dear ImGui to provide a clean UI and good support in multiple platforms. While it only ships a Windows binary, you can easily follow the instructions in README.md to compile in other platforms. How to try it You can download the PSimUltimate installation wizard in this page . For more instructions and information, including information on support for other platforms, check out README.md in the source code. Challenges I’ve faced This project took a lot of effort to complete. It is the largest single solo project I have worked on since I started programming, and it included a lot of technical software design and infrastructure that I had to familiarize myself with, like dynamic libraries and using and altering 3rd party libraries (I altered portable file dialogs and Dear ImGui to suit my needs). I also had to deal with moving to a new computer, and then when that computer broke down due to a faulty motherboard, I had to move back to my old computer. I also started a full-time internship at a tech company. All that, coupled with some massive life changes, made it much harder to work on this project. But I enjoyed making it nonetheless, and I’m proud to show off what I’ve created.", "repo": "https://github.com/etaiami09-cmd/PSimUltimate", "demo": "https://github.com/etaiami09-cmd/PSimUltimate/releases/tag/v1.0"}]...
|
[{"post_id": 65606, "ts": "202 [{"post_id": 65606, "ts": "2026-09-10T20:55:45Z", "hours": 7.9922, "text": "Devlog #13 - Time To Ship! PSimUltimate is finally ready to ship. I have put a lot of effort into this project, and I feel genuinely proud of my what I have achieved. While working on this project I have gotten a new computer, lost that computer due to a faulty motherboard, got an internship at a tech company, and started working there full time. Suffice to say, I haven’t had much time to work on PSim in the last month. But I did. I spent time polishing what I have already created and now I feel content with my product. What I’ve done since the last devlog PSimUltimate now has a logo, designed by me. I have also run PSim on WSL and fixed various issues that only appeared on Linux. There is now a way to use your mouse to set the next particle’s position There is now a menu for editing particle data - you can delete a particle and change its position, velocity, mass, etc. PSim is now ready for release. I’m happy and proud to present it and show what I’ve done, and I hope other people receive it well. Thank you all for your support!"}, {"post_id": 48457, "ts": "2026-08-16T20:12:07Z", "hours": 4.1594, "text": "Half Devlog - Short Update: Sorry for not posting for a while. My computer broke and I’m waiting for the repair. Hopefully I’ll be back next week! Thank you for your patience."}, {"post_id": 32968, "ts": "2026-07-22T13:52:27Z", "hours": 8.5469, "text": "Devlog #12 - Solid, Boring Progress I’ve spent the last few days making regular feature updates to PSim. Here are the highlights: 1. Unload Modules Until now, if a user loaded a module and didn’t want it anymore, he would have to reopen the app. Additionally, there was no way to unload the built-in modules. I added an options tooltip in the module order GUI that allows the user to unload a module and everything it has registered. 2. Confirm Action Menu If a user is about to do an action which might lead to loss of data (close the window, override a save file), we want to confirm they know about the potential consequences and accept it. For this, I created an interface for creating a blocking modal that forces the user to either confirm an action or cancel it. 3. Graphics Handlers Behavior Improved The default should obviously be for graphics callbacks to have what they draw to the screen be projected into the actual intended buffer - that is, not anywhere in the top menu bar or the left-hand control panel. This is also already where particles are drawn, so a particle at 0, 0 is drawn in the top-left corner where the top menu bar and control panel intersect. This math had to be applied to every single thing drawn by a graphics callback, and I decided to fix it by calling graphics callbacks while in a raylib 2D mode that offsets everything so that 0, 0 is where a particle at 0,0 is drawn. 4. DPI Scaling I switched to a new laptop this week, and went from a 14 Inch 1080p screen to a 14 Inch 1440p screen. Suddenly, the menu became much smaller, because the program was drawing by pixel instead of by the system’s default scaling (which, on my new laptop, is 200%). I fixed this by making Raylib scale everything by the user’s system DPI. 5. Module Internal Serialization If a module has any internal state that should be preserved when a save file is written, it can now register a callback that returns a std::string and a callback that accepts one, and those can be used to serialize and deserialize its internal state. 6. Extended Module API Documentation I’ve now written documentation for everything but the feature discussed in point 5. 7. New Particle Target I’ve added a cross target placed in the position where a new particle would be placed according to the Position buffer, to ease on visualizing the new particle. This cross is customizeable in the settings menu and you can change width, length and color."}, {"post_id": 27577, "ts": "2026-07-13T09:02:19Z", "hours": 5.8525, "text": "Devlog #11 - Adding A Settings Page, A Config System, And More Module API Yesterday I wrote about my commitment to making PSim an actual, usable desktop application that doesn’t feel limiting to the user. What I did yesterday was create an error notification system, so if something goes wrong the user can understand why and code has a standard philosophy to handle issues. Today, I put my focus on improving the user experience by adding a settings page to PSim. The Layout Personally, when I think of a settings page in a desktop application, I usually imagine a blocking pop-up (as in, a subwindow inside the application window that while opened, does not let you touch anything outside of it) with a few tabs for different categories of settings. ImGui actually has great support for this, with OpenPopup to create one. the smaller, left-side portion of the settings page is a tab-selection area, and the right-side portion is the tab which is selected. There are 4 tabs: General Simulation Modules - modules can register custom settings About - basically just the full text of the MIT License + a link to the project’s GitHub page The Config System Personally, when I change a setting on a desktop application, I generally expect that change to still be in effect when I close and reopen it. To do this, PSim needs to get to the target platform’s app data folder, create a folder for itself if one doesn’t already exist, and then save whatever information it needs there. Now, this is obviously annoying to have to re-write every time you want to save something as simple as what FPS the user wants, so I wrote a template system to save and access binary settings files on the fly. I now had a way to make it so arbitrary settings stay the same every time I open the app. Now, I need to make it so modules have the same privilege. I created 3 new functions in the module API, writeConfig , readConfig , and registerSwitch . Each of these does as the name implies, and it allows you to add on-off switches (support for more will come later) and read/write configs to disk. Conclusion It may have taken 6 hours of work, but I managed to create a fully-functional settings UI with module support to my first desktop application. This is an important piece of architechture and makes it much easier to add more features in the future and expand the app into something I can be very proud of. Thank you very much for reading! Please enjoy this proof-of-concept video of me changing settings and reopening the app."}, {"post_id": 27058, "ts": "2026-07-12T08:08:01Z", "hours": 3.7278, "text": "Devlog #10 - Don’t Hate The User One of the most important unwritten (though I’m sure it is written somewhere) rules of writing good software is responsible error handling. I’m writing a desktop application, and personally, when I’m using a desktop application, I don’t like it when it suddenly crashes with no useful error message. This is especially possible in a desktop application written in C++, where irresponsible coding practices can lead to segfaults and other crashes without so much as a Java-style “NullPointerException”. It would be incredibly frustrating for the user to lose progress and not even know why. Another potentially frustrutaing situation is when the program fails silently. It doesn’t quite crash, but when you ask a program to do something and it just doesn’t do it, that can be frustrating. When a program can’t satisfy an action the user wants it to make, it should make it as clear as possible that it’s aware of its failure, and attempt to clarify what went wrong. What I’ve Been Doing Until Now Up until now I have handled runtime errors by… well… not handling them. I wrote my application under the assumption that everything works smoothly, every module loaded by the user exports the correct signature, every file opened by the user is well-formed, and every file the user wants to write to has the necessary permissions. If any of this went wrong, the program entered undefined behavior. Most likely, it will crash. My Solution Whenever the user requests an action by the program, for example, trying to open a saved simulation state JSON, the program goes through the following steps: Make sure the file is actually opened Make sure the file is correctly-formed JSON syntax Make sure the actual data in the file aligns with PSimUltimate’s requirements and constraints Actually deserialize the file If any of these goes wrong, the deserialization process immidiately ends and an error notification is pushed to the bottom-right corner of the screen. If multiple things are wrong about the data in the file, only the first thing in the deserialization order is written. There can be up to 3 error notifications displayed at once, with any more notifications being queued for when those are closed by the user . This solves the issue of responsible, user-friendly error handling, and is an important piece of infrastructure for a usable desktop application."}, {"post_id": 25930, "ts": "2026-07-10T13:04:03Z", "hours": 1.7719, "text": "Devlog #9 - Expanding The Module Developer API Before I begin this devlog, I would like to apologize for being inactive over the past week. I have had quite a busy week, and I did not have much of an opportunity to work on PSimUltimate unfortunately. What I Have Been Working On I’ve been putting more attention to the module API, modules are the most important part of PSim, and their API should be more advanced than the very basic one that currently exists. I’ve split the API into 5 different sections: Physics Behavior - callbacks into force, velocity, and positions of particles User Input - adding new keyboard shortcuts, reading mouse positions, reading which keys are being pressed Graphical Behavior - being able to draw stuff on the screen GUI - adding buttons, settings pages, descriptions, and more for specific modules. Other Modules - modules should be able to register dependencies and force certain modules to be either lower or higher than them on the callback order. I have been hard at work (when I can) on designing and implementing these needs. So far I have made some progress, but there is still much to do and research, and I’m sorry it’s not so juicy for a week’s worth of progress. Either way, thank you for reading, attached is an example of custom buttons that can be registered by modules in the top bar, and please keep following the project for more updates."}, {"post_id": 19922, "ts": "2026-07-01T11:10:57Z", "hours": 3.965, "text": "Devlog #8 - I Need Your Help This devlog is not so focused on what I’ve been doing since the last one, but what I have been doing is pretty cool, so I’ll go over it: PSim uses Dear ImGui as the backend for its GUI. Up until now, the font size in the GUI has been way too small (13px) and the GUI sidebar could not be resized in any way. I had to make it so resizing is possible and the font is more readable, because I want the app to be properly useable. The first thing I did switch fonts from Dear ImGui’s default non-scalable font to Dear ImGui’s default scalable version, ProggyForever. This took a few minutes but the big challenge was getting resizing to do exactly what I wanted. Despite Dear ImGui usually having exactly the correct amount of features, there is no option to make resizing only possible from one side or disable the completely free bottom-right resize grip. I had to go directly into Dear ImGui’s source code and manually disable those things myself, which was a first for me. What I Need Help With Right now whenever I try to do anything I realize that I don’t actually have a good feel for what’s missing and what needs improvement. If anyone reading this could spare some time of their day to install my application and play around with it, maybe write a module. I have added proper documentation for modules to make the whole process much easier, so hopefully someone will be able to help me find issues and missing features. You can get the release on GitHub . Thank you for reading and thank you for helping out!"}, {"post_id": 17653, "ts": "2026-06-28T15:14:57Z", "hours": 1.375, "text": "Devlog #7 - Steady Progress Is Not Interesting Sorry for the low logged time, I’ve actually been working for several hours but I forgot to install wakatime after switching to CLion. What I’ve Been Working On One of the most important things when working with multiple modules that work on a callback-based system is the ability to reorder modules so some callbacks get called before others. Imagine this: You have a module foo which clamps all particles to the window border so they can never escape the boundaries of the window. You also have module bar which increments the X position of each particle by 3, each frame. Say foo gets registered after bar , particles will get clamped to the border AND THEN move 3 pixels, breaking the behavior both module authors likely intended. The Solution Create a GUI which allows the user to reorder modules by, so a module placed after another module gets called last. Implementation Challenges I had to learn how std::list works (a linked list was the obvious choice for this use case), and let me tell you, it is by far one of the worst STL containers I’ve had to work with, and anyone who writes C++ code knows that MEANS somethimg. Conclusion Again, not much to write about today, but steady progress just isn’t all that interesting. Thanks for reading!"}, {"post_id": 14586, "ts": "2026-06-23T19:08:32Z", "hours": 1.7331, "text": "Mini Devlog - How Writing Unit Tests Made Me Fight C++ For An Hour Whenever I spend some time fighting with C++ instead of actually being productive, I feel like I at least need to get a devlog out of it, so here goes. Background I’ve been writing unit tests for my particle simulator, and one thing I’ve noticed is that I have no code to protect global state when a single module is registered more than once, which leads to weird and unintended behavior. My solution is lazy: silent failure. If a module already exists when addModule(const std::string& name) is called through the module interface function registerModule(const std::string& name) (You can read about why these are separated in an earlier blog post, it’s very cool!), the function just doesn’t register it again. Simple enough, but I wanted to implement it in “correct” C++. The Implementation (Where Things Went Wrong) What I did was create a function in module.cpp with internal linkage called getModuleByName which returns a std::optional<Module&> . Well, apparently for the C++ standard that amounts to heresy, since up until C++26 the committee never managed to agree on how to handle std::optional s that contain references. Well, I thought, I am already compiling with -std=c++26 in my project, so this should work. But it didn’t. I needed an updated libc++ implementation, which I managed to get through MinGW. I spent 30 more minutes fighting with CMake as it insisted to link against MSVC’s headers, but eventually I did manage to get it to compile. A normal programmer would have just used std::optional<Module*> but I am definitely not normal. Was it worth it? probably not. Especially when it’s all for a function which only has internal linkage and is only used in one place. But I like to think that writing code I’m comfortable with will help maintain the codebase in the future."}, {"post_id": 14286, "ts": "2026-06-23T10:40:41Z", "hours": 2.7964, "text": "Devlog #6 - Adding Testing To My Particle Simulator I’ve been working on adding unit testing to my project. It was important for me to add unit tests for several reasons: I have never written unit tests in C++, so it’s a good learning experience I genuinely want this project to end up as a polished desktop application, and that’s not really possible without following best practices. Tests are important. Parts of my application are already extremely vulnerable to bugs It’s easier to catch bugs through unit tests than through actual use of the application Catch2 as the framework I chose Catch2 as my framework because it seemed easy to work with and not too verbose. Current sensitive parts of the application Position , Velocity , and Force are all independent wrappers around Vec2<float> . It is extremely important to me that these have proper arithmetic, but are not implicitly convertible, since that is almost definitely not intended behavior. This is why I wrote almost 200 lines of code’s worth of unit tests to make sure that the typing system is strong and acts the way I want it to. Catching bugs easily through unit testing While a user will most likely eventually stumble upon any bug worth fixing, I don’t really have any users yet! I would like to ship an app that isn’t obviously broken, and to do that, I need unit tests that stress the logic of my program to make sure it can survive users messing with it. Current progress on writing tests I’ve written fairly extensive tests to enforce the Vec2<float> variants type system, and to enforce particles working and ticking correctly and interacting with modules correctly. I still have many more tests to write, and I expect to spend the next couple of hours doing that. Thank you for reading!"}, {"post_id": 11527, "ts": "2026-06-18T20:30:02Z", "hours": 1.4006, "text": "Mini Devlog - Just Spent An Hour Fighting With The C++ Standard Library + Live Showcase! I just finished spending 8 hours on a massive refactor and new features, so I thought it would be nice to sit for a little while and play around with the program and fix some errors, and generally try to make the code a little safer. I’ve spent the past hour looking at various crashes i’ve had and tryint to pinpoint and debug them, and pretty much every single one of them came down to the fact that I keep forgetting that std::vector<T>::resize(n) does not have the same functionality as std::vector<T>::clear(); std::vector<T>::reserve(n) . This should be a very simple concept, and yet it’s apperently riddled my program with bugs. That’s all solved now, and you can try release 0.1.4 here with an example boxing module! Happy programming! Also, here’s a live demo of the program in action. The recording doesn’t capture the file dialog opening up, but you can tell it’s there before the particles spawn and when I load in the module."}, {"post_id": 11357, "ts": "2026-06-18T15:58:33Z", "hours": 8.3031, "text": "Devlog #5 - I spent 8 hours overengineering my desktop application to avoid spaghetti code A few days ago I wrote about how my small desktop app was already suffering from spaghetti code due to interaction between its modules. I had originally set out to create an application with just 3 modes: Gravity, Electrostatic movement, and chemical bonds. But this has a big problem: The scope is small, making development uninteresting and the actual application pointless to users. The Change In order to solve my spaghetti code problem, I came up with a solution: Instead of implementing 3 different modes, implement an interface that allows you to add as many modes as you want. The Process My first step was to decide what the public API should be for creating a new module. I settled for this: What the module author needs The module author may want to intercept a few different things: Change Force, Velocity and Position values every frame when they are being evaluated Add an attribute for a particle (like how a particle needs a charge in electrostatics) Add a universal physical constant (like Coulomb’s constant or the gravitational constant) Render something on top of the application What I need to do I built a module system to register all of the above, plus a psim_module_api.hpp header for the module author. It defines a C-ABI entry point that calls a C++ init function the author provides. I was almost done with the entire process when I discovered that Windows apparently doesn’t properly support the ability of DLLs to access functions in the main program by linking against them at compile time, and had to rewrite a large chunk from scratch. All the user has to do is include the header and define a void initializePSimModule() which is forward-declared by the header and called by the entry point after populating the function pointer table. Then we just use user-friendly functions to register anything the module might need. An example module is shown in the screenshots, along with its source code. This module creates constants for boundaries that particles cannot cross, effectively boxing them in a rectangle. I rewrote the Gravity and Electric modules in the module system. They are part of the core application, so I’m not loading them dynamically every time, but they use the same API as dynamic extensions. This makes it essentially impossible to create spaghetti code around the different modes, and now all I have to do to load a new module into the program is call loadModule(const std::string& path) . The final flow is something like this: The module entry point is a function that receives a function pointer table to all the C-ABI functions that the module uses under the hood. It populates the module’s function pointer table (the one I added because of Windows) and then calls the main initialization function implemented by the module author. To put things in perspective, here is what happens when you register a constant: You call registerConstant(...) with a std::string and a std::function => they’re destructured into C-friendly structs => the module finds _regConstant(const char* module, size_t moduleLen, ..., PSIM_Constant_Change_Callback) in the pointer table and calls it => the main program restructures the C parameters back into C++ types => the main program calls the real registration function. And this is precisely the hard part: The module author can believe that he’s dealing with the same exact std::span<Particle> that is passed to him by the main program, but in reality that span was destructured into a Particle* and a size_t and was then restructured, all before his callback was even called. This took me 8 hours, and out of everything I’ve done with PSimUltimate for now, this has definitely been the most valuable learning experience. I learned how to expose C++ APIs while maintaining a stable C ABI backend. Very cool!"}, {"post_id": 9226, "ts": "2026-06-15T14:32:40Z", "hours": 3.5978, "text": "Devlog - 04 - Fast JSON Serialization And Deserialization I need a way to save the simulation’s state. My options were few: Create a custom binary format (pretty easy, but not readable) Create a custom text format (hard but readable) Use an existing JSON library and format state into a JSON (very easy, very readable) Option 3 is naturally the best one, so that’s the one I went with. I used nlohmann/json as my JSON library, and for now I have just gone with the native approach of manually looping through the particles to build an object tree and walking the object tree to deserialize files. Now, I know that technically this part of the application doesn’t really require any form of optimization, since even with 1,000 particles and O3 compiler optimizations this native approach takes a small enough time that there isn’t even one frame of overhead. But I still didn’t want to leave performance on the table for no reason. I started with a 10000 particle serialization benchmark. It originally took 100ms to serialize and write to disk with O3 optimizations. After a few changes, mainly first formatting the json object to a std::string and then piping it to a std::ofstream to reduce OS overhead, I quickly reached about 40ms for building an object tree and writing to disk. I got similar results without really adding any optimizations to the deserialization process. Now, this is definitely fast enough for the kind of application that PSimUltimate is, but it still seems slow. People manage to write gigabytes of JSON per second, why is my process so slow? Well, turns out the main reason is the fact that nlohmann/json is, well, pretty slow to build an object tree with. Every single item in the tree is a heap-allocated object, which means both malloc and free overhead and cache-unfriendliness. You can see in the benchmark that serializeState and deserializeState both take a couple milliseconds despite not doing anything but set up the work for the other functions, and this is because of the time it takes to malloc and free the object trees. Theoretically, there are ways to write faster nlohmann/json code that doesn’t rely on as many heap allocations, but it’s not really worth it for me to do spend time looking into it and designing it right now, so this is good enough for me for now."}, {"post_id": 9148, "ts": "2026-06-15T10:03:31Z", "hours": 0.3217, "text": "(Advice Welcome) Devlog - 03 - How to design extensible architechture for my particle simulator desktop application I tried making a simple refactor - when I was first experimenting with the code, Whenever electrostatics were disabled the vector of charges for each particle was reset. This is obviously not great behavior for when you want to be able to quickly toggle modes on and off, so I tried making it so toggling electrostatics simply switches whether the simulation notices them or not, and not whether the data exists. This took 4 different attempts at compilation and playing around before I arrived at the expected behavior - and all I was doing was just deleting some code! It became clear that even though my application is still tiny (under 1k lines of code) and even though I have only 2 modes (gravity and electrostatics), I already have spaghetti code. Now I need to do one thing: design a safe and extensible architechture for adding new types of forces. The first thing that needs to happen is deciding how each mode interacts with the particles. This is the easiest part: Each mode is told to calculate the force for which it is responsible for every particle, and those forces get added to an array of forces, and then the sum force for each particle is used to determine its new position. This alone means there will never be any meaningful spaghetti code. Now comes the hard part: deciding how modes should be declared and added to the application. There are two approaches: Create an interface for modes which is known at compile time. This will lead to better performance due to optimizations, faster startup times, and more control for me over how the application works. Create an interface for modes which is registered dynamically at startup, this approach allows for 3rd-party extensions in the form of dll files that are dropped into some folder in the install directory. This leads to slower startup times, less optimizations due to the need of a stable ABI, and an overall increase in architechture size. I don’t know what I should choose, but I would love to have someone’s input on which would be better for my project."}, {"post_id": 7542, "ts": "2026-06-12T16:19:21Z", "hours": 3.0608, "text": "Devlog - 02 - Before Shabbos Since the last blogpost I have been working on cleaning up the existing codebase, improving some APIs and laying down the groundwork for electrostatic movement. I spent over an hour splitting the GUI rendering process into multiple independent files that are each much smaller than the monolithic “graphical.cpp” from before, which allowed for a cleaner structure which enabled me to think about the code more cleanly and refactor it further. I created a generic Holder struct which runs some function when constructed (and can receive arguments for that function when constructed) and calls another function when it goes out of scope. This is useful in ImGui because very often you have stuff like ImGui::BeginGroup() which must be followed with ImGui::EndGroup() which can easily be forgotten and also leads to unclean and spaghetti code. Instead, All that needs to be done now is a declaration of a GroupHolder variable, and then ImGui::EndGroup() is automatically called when that variable goes out of scope. I moved a bunch of constants from graphical.cpp to a PSimImpl namespace which allows them to be accessed from anywhere without polluting the global namespace. Additionally, I spent some time laying down the groundwork for electrostatic movement, which includes a Force type, which is a strongly typed wrapper around Vec2. I need these to be strongly typed so Force cannot be accidentally converted to Position or Velocity, but I also wanted to be able to explicitly (or implicitly) convert a Vec2 to one of its wrappers. This took a while to get right and eventually lead to the line of code in the screenshot. One more thing: I noticed that currently this website has no way to actually find the GitHub page for other people’s projects, so here’s the link to mine: https://etaiami09-cmd/PSimUltimate Enjoy!"}, {"post_id": 6808, "ts": "2026-06-11T12:46:37Z", "hours": 4.9311, "text": "Devlog - 01 This project is a remake of my first C++ project, which was an electrostatic particle simulator. This time, I’m looking to do a bit more - the simulator will have multiple modes which can be switched on or off, and instead of trying to reinvent the wheel by making a GUI with raw SFML, I’m using ImGui and binding it to raylib for the particles. So far, I’ve spent multiple hours (I started before linking the project) setting up the project with CMake, an install wizard, and external libraries. Additionally, so far I have implemented the ability to toggle gravity and the simulation, and there is a button to toggle electrostatics, even though electrostatics are not implemented yet. I also have a menu for spawning new particles, an about page, and a menu for editing constants (like gravity)."}]...
|
Title: PSim - Particle Simulator by @etaiami09-cmd Title: PSim - Particle Simulator by @etaiami09-cmd | Stardance
Devlogs:
Devlog - 01 This project is a remake of my first C++ project, which was an electrostatic particle simulator. This time, I’m looking to do a bit more - the simulator will have multiple modes which can be switched on or off, and instead of trying to reinvent the wheel by making a GUI with raw SFML, I’m using ImGui and binding it to raylib for the particles. So far, I’ve spent multiple hours (I started before linking the project) setting up the project with CMake, an install wizard, and external libraries. Additionally, so far I have implemented the ability to toggle gravity and the simulation, and there is a button to toggle electrostatics, even though electrostatics are not implemented yet. I also have a menu for spawning new particles, an about page, and a menu for editing constants (like gravity).
Devlog - 02 - Before Shabbos Since the last blogpost I have been working on cleaning up the existing codebase, improving some APIs and laying down the groundwork for electrostatic movement. I spent over an hour splitting the GUI rendering process into multiple independent files that are each much smaller than the monolithic “graphical.cpp” from before, which allowed for a cleaner structure which enabled me to think about the code more cleanly and refactor it further. I created a generic Holder struct which runs some function when constructed (and can receive arguments for that function when constructed) and calls another function when it goes out of scope. This is useful in ImGui because very often you have stuff like ImGui::BeginGroup() which must be followed with ImGui::EndGroup() which can easily be forgotten and also leads to unclean and spaghetti code. Instead, All that needs to be done now is a declaration of a GroupHolder variable, and then ImGui::EndGroup() is automatically called when that variable goes out of scope. I moved a bunch of constants from graphical.cpp to a PSimImpl namespace which allows them to be accessed from anywhere without polluting the global namespace. Additionally, I spent some time laying down the groundwork for electrostatic movement, which includes a Force type, which is a strongly typed wrapper around Vec2. I need these to be strongly typed so Force cannot be accidentally converted to Position or Velocity, but I also wanted to be able to explicitly (or implicitly) convert a Vec2 to one of its wrappers. This took a while to get right and eventually lead to the line of code in the screenshot. One more thing: I noticed that currently this website has no way to actually find the GitHub page for other people’s projects, so here’s the link to mine: https://etaiami09-cmd/PSimUltimate Enjoy!
(Advice Welcome) Devlog - 03 - How to design extensible architechture for my particle simulator desktop application I tried making a simple refactor - when I was first experimenting with the code, Whenever electrostatics were disabled the vector of charges for each particle was reset. This is obviously not great behavior for when you want to be able to quickly toggle modes on and off, so I tried making it so toggling electrostatics simply switches whether the simulation notices them or not, and not whether the data exists. This took 4 different attempts at compilation and playing around before I arrived at the expected behavior - and all I was doing was just deleting some code! It became clear that even though my application is still tiny (under 1k lines of code) and even though I have only 2 modes (gravity and electrostatics), I already have spaghetti code. Now I need to do one thing: design a safe and extensible architechture for adding new types of forces. The first thing that needs to happen is deciding how each mode interacts with the particles. This is the easiest part: Each mode is told to calculate the force for which it is responsible for every particle, and those forces get added to an array of forces, and then the sum force for each particle is used to determine its new position. This alone means there will never be any meaningful spaghetti code. Now comes the hard part: deciding how modes should be declared and added to the application. There are two approaches: Create an interface for modes which is known at compile time. This will lead to better performance due to optimizations, faster startup times, and more control for me over how the application works. Create an interface for modes which is registered dynamically at startup, this approach allows for 3rd-party extensions in the form of dll files that are dropped into some folder in the install directory. This leads to slower startup times, less optimizations due to the need of a stable ABI, and an overall increase in architechture size. I don’t know what I should choose, but I would love to have someone’s input on which would be better for my project.
Devlog - 04 - Fast JSON Serialization And Deserialization I need a way to save the simulation’s state. My options were few: Create a custom binary format (pretty easy, but not readable) Create a custom text format (hard but readable) Use an existing JSON library and format state into a JSON (very easy, very readable) Option 3 is naturally the best one, so that’s the one I went with. I used nlohmann/json as my JSON library, and for now I have just gone with the native approach of manually looping through the particles to build an object tree and walking the object tree to deserialize files. Now, I know that technically this part of the application doesn’t really require any form of optimization, since even with 1,000 particles and O3 compiler optimizations this native approach takes a small enough time that there isn’t even one frame of overhead. But I still didn’t want to leave performance on the table for no reason. I started with a 10000 particle serialization benchmark. It originally took 100ms to serialize and write to disk with O3 optimizations. After a few changes, mainly first formatting the json object to a std::string and then piping it to a std::ofstream to reduce OS overhead, I quickly reached about 40ms for building an object tree and writing to disk. I got similar results without really adding any optimizations to the deserialization process. Now, this is definitely fast enough for the kind of application that PSimUltimate is, but it still seems slow. People manage to write gigabytes of JSON per second, why is my process so slow? Well, turns out the main reason is the fact that nlohmann/json is, well, pretty slow to build an object tree with. Every single item in the tree is a heap-allocated object, which means both malloc and free overhead and cache-unfriendliness. You can see in the benchmark that serializeState and deserializeState both take a couple milliseconds despite not doing anything but set up the work for the other functions, and this is because of the time it takes to malloc and free the object trees. Theoretically, there are ways to write faster nlohmann/json code that doesn’t rely on as many heap allocations, but it’s not really worth it for me to do spend time looking into it and designing it right now, so this is good enough for me for now.
Devlog #5 - I spent 8 hours overengineering my desktop application to avoid spaghetti code A few days ago I wrote about how my small desktop app was already suffering from spaghetti code due to interaction between its modules. I had originally set out to create an application with just 3 modes: Gravity, Electrostatic movement, and chemical bonds. But this has a big problem: The scope is small, making development uninteresting and the actual application pointless to users. The Change In order to solve my spaghetti code problem, I came up with a solution: Instead of implementing 3 different modes, implement an interface that allows you to add as many modes as you want. The Process My first step was to decide what the public API should be for creating a new module. I settled for this: What the module author needs The module author may want to intercept a few different things: Change Force, Velocity and Position values every frame when they are being evaluated Add an attribute for a particle (like how a particle needs a charge in electrostatics) Add a universal physical constant (like Coulomb’s constant or the gravitational constant) Render something on top of the application What I need to do I built a module system to register all of the above, plus a psim_module_api.hpp header for the module author. It defines a C-ABI entry point that calls a C++ init function the author provides. I was almost done with the entire process when I discovered that Windows apparently doesn’t properly support the ability of DLLs to access functions in the main program by linking against them at compile time, and had to rewrite a large chunk from scratch. All the user has to do is include the header and define a void initializePSimModule() which is forward-declared by the header and called by the entry point after populating the function pointer table. Then we just use user-friendly functions to register anything the module might need. An example module is shown in the screenshots, along with its source code. This module creates constants for boundaries that particles cannot cross, effectively boxing them in a rectangle. I rewrote the Gravity and Electric modules in the module system. They are part of the core application, so I’m not loading them dynamically every time, but they use the same API as dynamic extensions. This makes it essentially impossible to create spaghetti code around the different modes, and now all I have to do to load a new module into the program is call loadModule(const std::string& path) . The final flow is something like this: The module entry point is a function that receives a function pointer table to all the C-ABI functions that the module uses under the hood. It populates the module’s function pointer table (the one I added because of Windows) and then calls the main initialization function implemented by the module author. To put things in perspective, here is what happens when you register a constant: You call registerConstant(...) with a std::string and a std::function => they’re destructured into C-friendly structs => the module finds _regConstant(const char* module, size_t moduleLen, ..., PSIM_Constant_Change_Callback) in the pointer table and calls it => the main program restructures the C parameters back into C++ types => the main program calls the real registration function. And this is precisely the hard part: The module author can believe that he’s dealing with the same exact std::span<Particle> that is passed to him by the main program, but in reality that span was destructured into a Particle* and a size_t and was then restructured, all before his callback was even called. This took me 8 hours, and out of everything I’ve done with PSimUltimate for now, this has definitely been the most valuable learning experience. I learned how to expose C++ APIs while maintaining a stable C ABI backend. Very cool!
Mini Devlog - Just Spent An Hour Fighting With The C++ Standard Library + Live Showcase! I just finished spending 8 hours on a massive refactor and new features, so I thought it would be nice to sit for a little while and play around with the program and fix some errors, and generally try to make the code a little safer. I’ve spent the past hour looking at various crashes i’ve had and tryint to pinpoint and debug them, and pretty much every single one of them came down to the fact that I keep forgetting that std::vector<T>::resize(n) does not have the same functionality as std::vector<T>::clear(); std::vector<T>::reserve(n) . This should be a very simple concept, and yet it’s apperently riddled my program with bugs. That’s all solved now, and you can try release 0.1.4 here with an example boxing module! Happy programming! Also, here’s a live demo of the program in action. The recording doesn’t capture the file dialog opening up, but you can tell it’s there before the particles spawn and when I load in the module.
Devlog #6 - Adding Testing To My Particle Simulator I’ve been working on adding unit testing to my project. It was important for me to add unit tests for several reasons: I have never written unit tests in C++, so it’s a good learning experience I genuinely want this project to end up as a polished desktop application, and that’s not really possible without following best practices. Tests are important. Parts of my application are already extremely vulnerable to bugs It’s easier to catch bugs through unit tests than through actual use of the application Catch2 as the framework I chose Catch2 as my framework because it seemed easy to work with and not too verbose. Current sensitive parts of the application Position , Velocity , and Force are all independent wrappers around Vec2<float> . It is extremely important to me that these have proper arithmetic, but are not implicitly convertible, since that is almost definitely not intended behavior. This is why I wrote almost 200 lines of code’s worth of unit tests to make sure that the typing system is strong and acts the way I want it to. Catching bugs easily through unit testing While a user will most likely eventually stumble upon any bug worth fixing, I don’t really have any users yet! I would like to ship an app that isn’t obviously broken, and to do that, I need unit tests that stress the logic of my program to make sure it can survive users messing with it. Current progress on writing tests I’ve written fairly extensive tests to enforce the Vec2<float> variants type system, and to enforce particles working and ticking correctly and interacting with modules correctly. I still have many more tests to write, and I expect to spend the next couple of hours doing that. Thank you for reading!
Mini Devlog - How Writing Unit Tests Made Me Fight C++ For An Hour Whenever I spend some time fighting with C++ instead of actually being productive, I feel like I at least need to get a devlog out of it, so here goes. Background I’ve been writing unit tests for my particle simulator, and one thing I’ve noticed is that I have no code to protect global state when a single module is registered more than once, which leads to weird and unintended behavior. My solution is lazy: silent failure. If a module already exists when addModule(const std::string& name) is called through the module interface function registerModule(const std::string& name) (You can read about why these are separated in an earlier blog post, it’s very cool!), the function just doesn’t register it again. Simple enough, but I wanted to implement it in “correct” C++. The Implementation (Where Things Went Wrong) What I did was create a function in module.cpp with internal linkage called getModuleByName which returns a std::optional<Module&> . Well, apparently for the C++ standard that amounts to heresy, since up until C++26 the committee never managed to agree on how to handle std::optional s that contain references. Well, I thought, I am already compiling with -std=c++26 in my project, so this should work. But it didn’t. I needed an updated libc++ implementation, which I managed to get through MinGW. I spent 30 more minutes fighting with CMake as it insisted to link against MSVC’s headers, but eventually I did manage to get it to compile. A normal programmer would have just used std::optional<Module*> but I am definitely not normal. Was it worth it? probably not. Especially when it’s all for a function which only has internal linkage and is only used in one place. But I like to think that writing code I’m comfortable with will help maintain the codebase in the future.
Devlog #7 - Steady Progress Is Not Interesting Sorry for the low logged time, I’ve actually been working for several hours but I forgot to install wakatime after switching to CLion. What I’ve Been Working On One of the most important things when working with multiple modules that work on a callback-based system is the ability to reorder modules so some callbacks get called before others. Imagine this: You have a module foo which clamps all particles to the window border so they can never escape the boundaries of the window. You also have module bar which increments the X position of each particle by 3, each frame. Say foo gets registered after bar , particles will get clamped to the border AND THEN move 3 pixels, breaking the behavior both module authors likely intended. The Solution Create a GUI which allows the user to reorder modules by, so a module placed after another module gets called last. Implementation Challenges I had to learn how std::list works (a linked list was the obvious choice for this use case), and let me tell you, it is by far one of the worst STL containers I’ve had to work with, and anyone who writes C++ code knows that MEANS somethimg. Conclusion Again, not much to write about today, but steady progress just isn’t all that interesting. Thanks for reading!
Devlog #8 - I Need Your Help This devlog is not so focused on what I’ve been doing since the last one, but what I have been doing is pretty cool, so I’ll go over it: PSim uses Dear ImGui as the backend for its GUI. Up until now, the font size in the GUI has been way too small (13px) and the GUI sidebar could not be resized in any way. I had to make it so resizing is possible and the font is more readable, because I want the app to be properly useable. The first thing I did switch fonts from Dear ImGui’s default non-scalable font to Dear ImGui’s default scalable version, ProggyForever. This took a few minutes but the big challenge was getting resizing to do exactly what I wanted. Despite Dear ImGui usually having exactly the correct amount of features, there is no option to make resizing only possible from one side or disable the completely free bottom-right resize grip. I had to go directly into Dear ImGui’s source code and manually disable those things myself, which was a first for me. What I Need Help With Right now whenever I try to do anything I realize that I don’t actually have a good feel for what’s missing and what needs improvement. If anyone reading this could spare some time of their day to install my application and play around with it, maybe write a module. I have added proper documentation for modules to make the whole process much easier, so hopefully someone will be able to help me find issues and missing features. You can get the release on GitHub . Thank you for reading and thank you for helping out!
Devlog #9 - Expanding The Module Developer API Before I begin this devlog, I would like to apologize for being inactive over the past week. I have had quite a busy week, and I did not have much of an opportunity to work on PSimUltimate unfortunately. What I Have Been Working On I’ve been putting more attention to the module API, modules are the most important part of PSim, and their API should be more advanced than the very basic one that currently exists. I’ve split the API into 5 different sections: Physics Behavior - callbacks into force, velocity, and positions of particles User Input - adding new keyboard shortcuts, reading mouse positions, reading which keys are being pressed Graphical Behavior - being able to draw stuff on the screen GUI - adding buttons, settings pages, descriptions, and more for specific modules. Other Modules - modules should be able to register dependencies and force certain modules to be either lower or higher than them on the callback order. I have been hard at work (when I can) on designing and implementing these needs. So far I have made some progress, but there is still much to do and research, and I’m sorry it’s not so juicy for a week’s worth of progress. Either way, thank you for reading, attached is an example of custom buttons that can be registered by modules in the top bar, and please keep following the project for more updates.
Devlog #10 - Don’t Hate The User One of the most important unwritten (though I’m sure it is written somewhere) rules of writing good software is responsible error handling. I’m writing a desktop application, and personally, when I’m using a desktop application, I don’t like it when it suddenly crashes with no useful error message. This is especially possible in a desktop application written in C++, where irresponsible coding practices can lead to segfaults and other crashes without so much as a Java-style “NullPointerException”. It would be incredibly frustrating for the user to lose progress and not even know why. Another potentially frustrutaing situation is when the program fails silently. It doesn’t quite crash, but when you ask a program to do something and it just doesn’t do it, that can be frustrating. When a program can’t satisfy an action the user wants it to make, it should make it as clear as possible that it’s aware of its failure, and attempt to clarify what went wrong. What I’ve Been Doing Until Now Up until now I have handled runtime errors by… well… not handling them. I wrote my application under the assumption that everything works smoothly, every module loaded by the user exports the correct signature, every file opened by the user is well-formed, and every file the user wants to write to has the necessary permissions. If any of this went wrong, the program entered undefined behavior. Most likely, it will crash. My Solution Whenever the user requests an action by the program, for example, trying to open a saved simulation state JSON, the program goes through the following steps: Make sure the file is actually opened Make sure the file is correctly-formed JSON syntax Make sure the actual data in the file aligns with PSimUltimate’s requirements and constraints Actually deserialize the file If any of these goes wrong, the deserialization process immidiately ends and an error notification is pushed to the bottom-right corner of the screen. If multiple things are wrong about the data in the file, only the first thing in the deserialization order is written. There can be up to 3 error notifications displayed at once, with any more notifications being queued for when those are closed by the user . This solves the issue of responsible, user-friendly error handling, and is an important piece of infrastructure for a usable desktop application.
Devlog #11 - Adding A Settings Page, A Config System, And More Module API Yesterday I wrote about my commitment to making PSim an actual, usable desktop application that doesn’t feel limiting to the user. What I did yesterday was create an error notification system, so if something goes wrong the user can understand why and code has a standard philosophy to handle issues. Today, I put my focus on improving the user experience by adding a settings page to PSim. The Layout Personally, when I think of a settings page in a desktop application, I usually imagine a blocking pop-up (as in, a subwindow inside the application window that while opened, does not let you touch anything outside of it) with a few tabs for different categories of settings. ImGui actually has great support for this, with OpenPopup to create one. the smaller, left-side portion of the settings page is a tab-selection area, and the right-side portion is the tab which is selected. There are 4 tabs: General Simulation Modules - modules can register custom settings About - basically just the full text of the MIT License + a link to the project’s GitHub page The Config System Personally, when I change a setting on a desktop application, I generally expect that change to still be in effect when I close and reopen it. To do this, PSim needs to get to the target platform’s app data folder, create a folder for itself if one doesn’t already exist, and then save whatever information it needs there. Now, this is obviously annoying to have to re-write every time you want to save something as simple as what FPS the user wants, so I wrote a template system to save and access binary settings files on the fly. I now had a way to make it so arbitrary settings stay the same every time I open the app. Now, I need to make it so modules have the same privilege. I created 3 new functions in the module API, writeConfig , readConfig , and registerSwitch . Each of these does as the name implies, and it allows you to add on-off switches (support for more will come later) and read/write configs to disk. Conclusion It may have taken 6 hours of work, but I managed to create a fully-functional settings UI with module support to my first desktop application. This is an important piece of architechture and makes it much easier to add more features in the future and expand the app into something I can be very proud of. Thank you very much for reading! Please enjoy this proof-of-concept video of me changing settings and reopening the app.
Devlog #12 - Solid, Boring Progress I’ve spent the last few days making regular feature updates to PSim. Here are the highlights: 1. Unload Modules Until now, if a user loaded a module and didn’t want it anymore, he would have to reopen the app. Additionally, there was no way to unload the built-in modules. I added an options tooltip in the module order GUI that allows the user to unload a module and everything it has registered. 2. Confirm Action Menu If a user is about to do an action which might lead to loss of data (close the window, override a save file), we want to confirm they know about the potential consequences and accept it. For this, I created an interface for creating a blocking modal that forces the user to either confirm an action or cancel it. 3. Graphics Handlers Behavior Improved The default should obviously be for graphics callbacks to have what they draw to the screen be projected into the actual intended buffer - that is, not anywhere in the top menu bar or the left-hand control panel. This is also already where particles are drawn, so a particle at 0, 0 is drawn in the top-left corner where the top menu bar and control panel intersect. This math had to be applied to every single thing drawn by a graphics callback, and I decided to fix it by calling graphics callbacks while in a raylib 2D mode that offsets everything so that 0, 0 is where a particle at 0,0 is drawn. 4. DPI Scaling I switched to a new laptop this week, and went from a 14 Inch 1080p screen to a 14 Inch 1440p screen. Suddenly, the menu became much smaller, because the program was drawing by pixel instead of by the system’s default scaling (which, on my new laptop, is 200%). I fixed this by making Raylib scale everything by the user’s system DPI. 5. Module Internal Serialization If a module has any internal state that should be preserved when a save file is written, it can now register a callback that returns a std::string and a callback that accepts one, and those can be used to serialize and deserialize its internal state. 6. Extended Module API Documentation I’ve now written documentation for everything but the feature discussed in point 5. 7. New Particle Target I’ve added a cross target placed in the position where a new particle would be placed according to the Position buffer, to ease on visualizing the new particle. This cross is customizeable in the settings menu and you can change width, length and color.
Half Devlog - Short Update: Sorry for not posting for a while. My computer broke and I’m waiting for the repair. Hopefully I’ll be back next week! Thank you for your patience.
Devlog #13 - Time To Ship! PSimUltimate is finally ready to ship. I have put a lot of effort into this project, and I feel genuinely proud of my what I have achieved. While working on this project I have gotten a new computer, lost that computer due to a faulty motherboard, got an internship at a tech company, and started working there full time. Suffice to say, I haven’t had much time to work on PSim in the last month. But I did. I spent time polishing what I have already created and now I feel content with my product. What I’ve done since the last devlog PSimUltimate now has a logo, designed by me. I have also run PSim on WSL and fixed various issues that only appeared on Linux. There is now a way to use your mouse to set the next particle’s position There is now a menu for editing particle data - you can delete a particle and change its position, velocity, mass, etc. PSim is now ready for release. I’m happy and proud to present it and show what I’ve done, and I hope other people receive it well. Thank you all for your support!
Ships:
PSimUltimate Is Ready! I made a particle simulator desktop application in C++ with heavy extension support. Overview PSimUltimate models real physics, but also allows you to inject your own behavior. Using a simple development API that even someone with no C++ experience can understand, you can create, compile and load your own custom modules to the simulator and watch the behavior you’ve coded in action. PSim even ships with 2 of these modules built into the binary, and 3 more modules that you can load dynamically. PSimUltimate also comes with a very simple UI, one that anyone could be comfortable with within minutes. How it works PSimUltimate has documentation for creating your own modules, and compiling them is very simple with a few commands. You can then load the modules, and PSim knows how to run your module and follow its physics. PSimUltimate is written in modern C++, using Raylib and Dear ImGui to provide a clean UI and good support in multiple platforms. While it only ships a Windows binary, you can easily follow the instructions in README.md to compile in other platforms. How to try it You can download the PSimUltimate installation wizard in this page . For more instructions and information, including information on support for other platforms, check out README.md in the source code. Challenges I’ve faced This project took a lot of effort to complete. It is the largest single solo project I have worked on since I started programming, and it included a lot of technical software design and infrastructure that I had to familiarize myself with, like dynamic libraries and using and altering 3rd party libraries (I altered portable file dialogs and Dear ImGui to suit my needs). I also had to deal with moving to a new computer, and then when that computer broke down due to a faulty motherboard, I had to move back to my old computer. I also started a full-time internship at a tech company. All that, coupled with some massive life changes, made it much harder to work on this project. But I enjoyed making it nonetheless, and I’m proud to show off what I’ve created....
|
1793325001.5489676
|
1793411401.5489676
|
|
41480
|
Spaceship team game by @WonTheGoat | Stardance
|
WonTheGoat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Spaceship team game by @WonTheGoat | Starda Title: Spaceship team game by @WonTheGoat | Stardance...
|
1792806601.492225
|
1793411401.492225
|
|
54801
|
Wake Up Boii by @wchia333 | Stardance
|
wchia333
|
0
|
4.5
|
0
|
[]
|
[{"post_id": 59273, "ts": "202 [{"post_id": 59273, "ts": "2026-08-31T23:46:47Z", "hours": 0.4667, "text": "So confused with the firmware, its my first time using Arduino.IDE. Unfortunately the guide does not really go that in depth so I’m trying to learn from other people projects."}, {"post_id": 56963, "ts": "2026-08-29T00:34:33Z", "hours": 0.8, "text": "Finished CAD! I’m going to get started on the firmware with Arduino IDE."}, {"post_id": 56304, "ts": "2026-08-28T01:07:24Z", "hours": 1.3483, "text": "Worked on GitHub Repo and started case for PCB. The CAD looks kinda bland so I wanna make it look better."}, {"post_id": 55301, "ts": "2026-08-27T01:26:02Z", "hours": 1.8836, "text": "Finished the PCB! Pretty straight forward although I did have to rewire a few times and completely redo it because I realized it had to be less than 100x100. Overall pretty fun!"}]...
|
Title: Wake Up Boii by @wchia333 | Stardance
Devl Title: Wake Up Boii by @wchia333 | Stardance
Devlogs:
Finished the PCB! Pretty straight forward although I did have to rewire a few times and completely redo it because I realized it had to be less than 100x100. Overall pretty fun!
Worked on GitHub Repo and started case for PCB. The CAD looks kinda bland so I wanna make it look better.
Finished CAD! I’m going to get started on the firmware with Arduino IDE.
So confused with the firmware, its my first time using Arduino.IDE. Unfortunately the guide does not really go that in depth so I’m trying to learn from other people projects....
|
1792806600.6158006
|
1793411400.6158006
|
|
41479
|
A Application to track memory layout of the microc A Application to track memory layout of the microcontroller by @Pratham_264 | Stardance...
|
Pratham_264
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: A Application to track memory layout of the Title: A Application to track memory layout of the microcontroller by @Pratham_264 | Stardance...
|
1792806599.7870238
|
1793411399.7870238
|
|
41478
|
My first slack bot! by @bebrochka | Stardance
|
bebrochka
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @bebrochka | Stardan Title: My first slack bot! by @bebrochka | Stardance...
|
1792806598.9441612
|
1793411398.9441612
|
|
41477
|
My own site! by @pramuki | Stardance
|
pramuki
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @pramuki | Stardance
|
1792806598.0695958
|
1793411398.0695958
|
|
50131
|
Vanguard SSA (Space Situational Awareness) by @Spa Vanguard SSA (Space Situational Awareness) by @SpaceRanger | Stardance...
|
SpaceRanger
|
1
|
32.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-28T20:15:31Z", "hours": 32.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "In the end, I was not able to do half as much As I wanted to do, EVEN with the extension. TCH. For now, all the project does is show multiple different satellites in Orbit against a static earth, where you can choose How fast the in app world goes compared to the Real world. RUST was not like I expected it to be. Still love it tho. Y’all, Pleas vote nicely 🤧. Thanks.", "repo": "https://github.com/abdulgafarabdurrasheed/Vanguard-SSA", "demo": "https://entrepreneur-atmosphere-sao-archived.trycloudflare.com/"}]...
|
[{"post_id": 83881, "ts": "202 [{"post_id": 83881, "ts": "2026-10-28T20:12:47Z", "hours": 1.1275, "text": "Last Update till ship. Made README, Hosted and everything."}, {"post_id": 80681, "ts": "2026-10-18T14:11:49Z", "hours": 1.4303, "text": "Well, you can now choose your own time multiplier from between the Real world, and the app. This part was(Mostly) gemini code. I suck at math, so I had it do the calculations and stuff. I also tried to Make the earth also spin in relation to the satellites using Julian Time mathematical calculations, But i’ve not been able to achieve that. Changelog git commit -m “choose time multiplier plus earth rotation” ( a585661 ) choose time multiplier plus earth rotation ( eca1623 )"}, {"post_id": 76714, "ts": "2026-10-04T12:17:06Z", "hours": 1.9442, "text": "Changelog configured 2 way channel websocket broadcast. can now receive info from the frontend ( 2500f28 ) Yeah. That’s all. “THAT’S ALL YOU DID FOR 2 HOURS 🙆♀️”. Yeah. Keep judging. Until you try to code in RUST 😑🙂"}, {"post_id": 75998, "ts": "2026-10-01T23:58:50Z", "hours": 1.0653, "text": "Changelog Made the in App world go 60* faster than the normal time. ( be91922 ) Basically, 1 Normal second is 60 seconds in app. 1 Normal hour is 60 hours in app"}, {"post_id": 75991, "ts": "2026-10-01T21:38:25Z", "hours": 1.0053, "text": "Changelog Trajectory calculation Now uses universal timestamp ( c842228 ) Okay, Because Celestrak tracks and updates satellite data at different times, The data from the API doesn’t actually reflect the current coordinates of the satellites, especially when compared to one another. While the specific orbits were accurate, The timing was completely random, and so, if 2 satellites were recorded in the same position, 6 hours apart, My simulation will start them in the same coordinate. This is obviously dangerously inaccurate. Fix: I removed the simulated “timestep” entirely, and Built the whole thing to Check current time, Check time the satellite’s data was recorded, and Simulate Orbit/Calculate trajectory and coordinates based on that. Problem with that is, without the timestep, My previous calculation for How fast this thing can run in relation to real word time will be totally wrong. I’ll fix that next."}, {"post_id": 75982, "ts": "2026-10-01T20:30:22Z", "hours": 0.6856, "text": "Changelog Improve error handling for satellite and debris data fetching; adjust time step for simulation ( 7e7c487 ) Coming back to this after legit leaving it for One month 😭. Anyway, I fixed error handling for Cases where the user is not able to ping the Celestrak servers to get the data needed. Now It just falls back to the Cache. I also reduced the amount of time That goes by in app, to perfectly mirror the real world."}, {"post_id": 73015, "ts": "2026-09-24T07:04:21Z", "hours": 1.5769, "text": "A few different things have bugged me since last I Devlogged. For one, i’m not tntirely sure how to go on. What i need, to remove, and all. Secondly, everything is so Unorganized rn. So many debris and satellites Just swimming around in Orbit against a static Earth And everything doesn’t even scale properly. Lastly, I’ve tried to focus a bit more on Orging My own YSWS. Thank goodness stardance was extended(Expected, but thank goodness still)."}, {"post_id": 68568, "ts": "2026-09-15T10:28:11Z", "hours": 1.9689, "text": "Changelog tweaks and updates ( 7fc4786 ) Ported satellite data from backend, and introduced satellite component in frontend. ( b6b8e5d ) Meh. Frontend change. Not much."}, {"post_id": 64802, "ts": "2026-09-09T13:47:15Z", "hours": 1.9544, "text": "Changelog Updated program to include, and handle both satellite and debris Cache Data from Celestrak ( 1665273 ) Basically, Now I have 2 files of both Debris data and Satellite Data"}, {"post_id": 63937, "ts": "2026-09-08T00:39:47Z", "hours": 1.2925, "text": "Changelog Implement caching for live satellite data and adjust debris scaling for better visualization ( 0e71088 ) Okay, so remember in my last Devlog, i noted that Celestrak didn’t like me pinging their servers more than once every 2 hours, which crashes my RUST backend. So today i implemented Caching. Basically, How this works is, I check if there is a file named “active_satellites.txt”, if there is not, i go ahead and create one, and add all the satellite TLE data from Celestrak here. If there already was one, I check the MetaData for time modified, and if this is more than 2 hours, I ping Celestrak again, and Update the File with new data. If it is less than 2 hours tho, i go ahead and use the one i already HAD."}, {"post_id": 62528, "ts": "2026-09-05T23:06:15Z", "hours": 1.88, "text": "Changelog Changed from Static data to live data using celestrak Starlink APIs. ( 4a27c90 ) Okay, so i HAVE been able to Change from Static data to live data using Celestrak Starlink APIs. Doing this inSo many problems like Chunking, Parsing, RUST async/await, and doing all of that over 500 3d models without frying my CPU. Now, even tho i have been able to get it actually showing up, I need to deal with Celestrak Rate limiting, and Separating Debris from Satellites(Currently, One of the satellite is chosen to be the Satellite, and the rest are set to debris lol). I’ll fix all of this Tomorrow, FOR NOW I HAVE TO SLEEP(My girlfriend got Mad i was not sleeping enough lol 😭😂). Also fixing Scaling, as these should NOT be this big compared to the earth lol."}, {"post_id": 61809, "ts": "2026-09-04T21:53:45Z", "hours": 0.9103, "text": "Changelog Collision Detection now works on the frontend by changing to a red glow from a cyan glow. ( 81c0078 ) Okay, Massive W on this devlog. So I made collision detection show up on the frontend rather than just the Backend by enhancing my RUST functions to return a True or False value when collision is detected. I had some problems with that, cause RUST doesn’t do global variables, and trying to pass a variable from one function(The collision detector) To another(The trajectory calculation), to add a value to my struct was quite literally impossible. I had to delete one of my threads, and change my architecture from branching to linear. Oh, and I also changed the number of debris from 10 to 100, and the collision distance from 100km to 1000km to ensure collision will be detected lol."}, {"post_id": 61475, "ts": "2026-09-04T12:37:51Z", "hours": 0.7792, "text": "Changelog Add Asteroid component and GLB model for 3D visualization ( f92bbd9 ) Yay 🥳🎉. Finally have the debris models showing up. They’re really small tho, so can’t really be seennn. Lemme make them a bit bigger Done."}, {"post_id": 60702, "ts": "2026-09-03T07:58:01Z", "hours": 1.8011, "text": "Changelog Replaced 250 dynamic debris with 10 Static Debris. ( 10a6f0a ) Sighs. I promise this is not all i did for nearly 2 hours 😭🤧. I have been really battling with trying to render 3d Model Asteroids instead of red Meshes, and am having problems with Only accepting one unique item(Which means i’d have to load 10 different 4mb debris file 62 times every second PURELY ON THE FRONTEND, which would surely crash any browser in any computer lol. Severely Un-Optimised). Currently doing research On how to Handle that, Don’t wanna use gemini too much. Sadly, HackClub does not record time spent on research 😭"}, {"post_id": 60236, "ts": "2026-09-02T14:05:00Z", "hours": 2.1914, "text": "Changelog Add Debris component for visualizing debris in 3D space ( 20f3c78 ) Refactor collision detection to use dynamic debris field ( b07aa44 ) Added random coordinate generator for debris coordinates. ( 45ddcbf ) Basically, i have been working with generating debris coordinates, and Mesh visualizations for said Debris."}, {"post_id": 59950, "ts": "2026-09-02T00:43:08Z", "hours": 1.7517, "text": "Changelog Added 3d visualizations of the earth, and the ISS. ( 382c0e9 ) Basically, I Ditched the Nonsense Sphere Meshes, and added actual 3d models of the Earth and the ISS. I encountered several issues, Like scaling, and stuff. Had to make sure The ISS could be seen, While not being big enough to be a bother to the Earth. Ended up adding a glow to the satellite. Add 3D models for Earth and ISS with scaling logic"}, {"post_id": 59844, "ts": "2026-09-01T20:29:01Z", "hours": 1.5506, "text": "Changelog Added sattellite coordinates updates in the browser ( 81723a5 ) Init vanguard frontend with React and Vite setup ( a3f753c ) Started Adding the 3d implementation of a satellite(The ISS) orbiting the earth. For now, I have used Mesh spheres to test that my code works, before actually loading massive glb files. The Red satellite Mesh Sphere actually orbits the Blue Earth Mesh Sphere. THIS IS INTERESTING. NB: The prediction formula predicts the location of the ISS every second where one second is 90 seconds simulated."}, {"post_id": 59474, "ts": "2026-09-01T10:40:50Z", "hours": 0.7222, "text": "Changelog Implement WebSocket server for real-time trajectory updates. ( 6708b17 ) Basically, My RUST Program can now talk to my Browser console. It’s so cool. And it works over multiple Browsers Windows/Tabs too. Now I can add a frontend with those 3d models, and an infinite Zoomable Canvas. This is moving forward much faster than i thought."}, {"post_id": 59420, "ts": "2026-09-01T07:33:56Z", "hours": 0.9658, "text": "Changelog Added async support for frontend integration, And Used Tokio’s broadcast channel to pass messages between threads. ( daf47ad ) Okay, So…… I wanted a way to show my Output Outside if the terminal, and I chose to use a web browser, since I am already quite skilled in frontend web dev. Had to add 2 New crates. Tokio for Async/Await functions, and Axum for Web socket Functions. Had some fun reading through their documentations and Implementing Tokio’s Broadcast instead of mpsc ones. The reason i needed to change my broadcast method is cause mpsc is Single Consumer/Client, But multiple people might want to View the website at the same time"}, {"post_id": 59296, "ts": "2026-09-01T00:36:01Z", "hours": 0.6539, "text": "Changelog Implement collision detection in check_collision function using fake, Hardcoded debris coordinates ( 5b6b87f ) Okay, so I Hardcoded Debris Coordinates, and Compared it’s Predicted Coordinates to the Predicted Coordinates of My Sattelite. Cna now Predict Collision Chances, and Warn if They get too close. Also went on a Looking Spree, to Download 3d Models of Sattelites, Space Junk, and the Earth, To use in my Frontend, and Look at other Sites that do what I am aiming at like https://keeptrack.space , and https://cp4.rkas.net/?intldes=2007-012Q(Stuffin Space)."}, {"post_id": 59256, "ts": "2026-08-31T22:58:07Z", "hours": 0.3883, "text": "Changelog Added time tracking to the Telemetry state so the ISS can update coordinates based on time set. ( cf354ae ) Basically Made the Predicted Coordinates of the ISS change based on the amount of time that has passed(Simulates 90 minutes in 60 seconds)."}, {"post_id": 59133, "ts": "2026-08-31T19:18:10Z", "hours": 1.33, "text": "Changelog Add sgp4 and chrono dependencies; implement trajectory calculation for the ISS ( 4702ca4 ) Update telemetry handling and add orbital trajectory calculations ( 4cc8218 ) Basically, i can now track the Live position of the ISS, and Calculate/Predict it’s trajectory. Yay."}, {"post_id": 57691, "ts": "2026-08-29T22:39:05Z", "hours": 1.4156, "text": "Changelog Add telemetry models and refactor signal analysis and database saving functions ( 7aaf79a ) Threaded the analyse signal, and save to database functions too ( b37fc97 ) Added a thread to make sure the main loop runs without waiting for stuff… I guess ( 16c5881 ) Bad first commit. rectified ( 32b9e40 ) Basically Added Threading to the RUST Program to make sure stuff runs without waiting for something, And Multi File RUST Handling. Still only Infinitely Prints stuff to the terminal tho."}, {"post_id": 57359, "ts": "2026-08-29T14:15:58Z", "hours": 1.35, "text": "Changelog 4a6461d Basically, I wrote some functions, and a RUST struct with Mock telemetry data. Doesn’t do much rn, Just prints stuff to the terminal."}]...
|
Title: Vanguard SSA (Space Situational Awareness) Title: Vanguard SSA (Space Situational Awareness) by @SpaceRanger | Stardance
Devlogs:
Changelog 4a6461d Basically, I wrote some functions, and a RUST struct with Mock telemetry data. Doesn’t do much rn, Just prints stuff to the terminal.
Changelog Add telemetry models and refactor signal analysis and database saving functions ( 7aaf79a ) Threaded the analyse signal, and save to database functions too ( b37fc97 ) Added a thread to make sure the main loop runs without waiting for stuff… I guess ( 16c5881 ) Bad first commit. rectified ( 32b9e40 ) Basically Added Threading to the RUST Program to make sure stuff runs without waiting for something, And Multi File RUST Handling. Still only Infinitely Prints stuff to the terminal tho.
Changelog Add sgp4 and chrono dependencies; implement trajectory calculation for the ISS ( 4702ca4 ) Update telemetry handling and add orbital trajectory calculations ( 4cc8218 ) Basically, i can now track the Live position of the ISS, and Calculate/Predict it’s trajectory. Yay.
Changelog Added time tracking to the Telemetry state so the ISS can update coordinates based on time set. ( cf354ae ) Basically Made the Predicted Coordinates of the ISS change based on the amount of time that has passed(Simulates 90 minutes in 60 seconds).
Changelog Implement collision detection in check_collision function using fake, Hardcoded debris coordinates ( 5b6b87f ) Okay, so I Hardcoded Debris Coordinates, and Compared it’s Predicted Coordinates to the Predicted Coordinates of My Sattelite. Cna now Predict Collision Chances, and Warn if They get too close. Also went on a Looking Spree, to Download 3d Models of Sattelites, Space Junk, and the Earth, To use in my Frontend, and Look at other Sites that do what I am aiming at like https://keeptrack.space , and https://cp4.rkas.net/?intldes=2007-012Q(Stuffin Space).
Changelog Added async support for frontend integration, And Used Tokio’s broadcast channel to pass messages between threads. ( daf47ad ) Okay, So…… I wanted a way to show my Output Outside if the terminal, and I chose to use a web browser, since I am already quite skilled in frontend web dev. Had to add 2 New crates. Tokio for Async/Await functions, and Axum for Web socket Functions. Had some fun reading through their documentations and Implementing Tokio’s Broadcast instead of mpsc ones. The reason i needed to change my broadcast method is cause mpsc is Single Consumer/Client, But multiple people might want to View the website at the same time
Changelog Implement WebSocket server for real-time trajectory updates. ( 6708b17 ) Basically, My RUST Program can now talk to my Browser console. It’s so cool. And it works over multiple Browsers Windows/Tabs too. Now I can add a frontend with those 3d models, and an infinite Zoomable Canvas. This is moving forward much faster than i thought.
Changelog Added sattellite coordinates updates in the browser ( 81723a5 ) Init vanguard frontend with React and Vite setup ( a3f753c ) Started Adding the 3d implementation of a satellite(The ISS) orbiting the earth. For now, I have used Mesh spheres to test that my code works, before actually loading massive glb files. The Red satellite Mesh Sphere actually orbits the Blue Earth Mesh Sphere. THIS IS INTERESTING. NB: The prediction formula predicts the location of the ISS every second where one second is 90 seconds simulated.
Changelog Added 3d visualizations of the earth, and the ISS. ( 382c0e9 ) Basically, I Ditched the Nonsense Sphere Meshes, and added actual 3d models of the Earth and the ISS. I encountered several issues, Like scaling, and stuff. Had to make sure The ISS could be seen, While not being big enough to be a bother to the Earth. Ended up adding a glow to the satellite. Add 3D models for Earth and ISS with scaling logic
Changelog Add Debris component for visualizing debris in 3D space ( 20f3c78 ) Refactor collision detection to use dynamic debris field ( b07aa44 ) Added random coordinate generator for debris coordinates. ( 45ddcbf ) Basically, i have been working with generating debris coordinates, and Mesh visualizations for said Debris.
Changelog Replaced 250 dynamic debris with 10 Static Debris. ( 10a6f0a ) Sighs. I promise this is not all i did for nearly 2 hours 😭🤧. I have been really battling with trying to render 3d Model Asteroids instead of red Meshes, and am having problems with Only accepting one unique item(Which means i’d have to load 10 different 4mb debris file 62 times every second PURELY ON THE FRONTEND, which would surely crash any browser in any computer lol. Severely Un-Optimised). Currently doing research On how to Handle that, Don’t wanna use gemini too much. Sadly, HackClub does not record time spent on research 😭
Changelog Add Asteroid component and GLB model for 3D visualization ( f92bbd9 ) Yay 🥳🎉. Finally have the debris models showing up. They’re really small tho, so can’t really be seennn. Lemme make them a bit bigger Done.
Changelog Collision Detection now works on the frontend by changing to a red glow from a cyan glow. ( 81c0078 ) Okay, Massive W on this devlog. So I made collision detection show up on the frontend rather than just the Backend by enhancing my RUST functions to return a True or False value when collision is detected. I had some problems with that, cause RUST doesn’t do global variables, and trying to pass a variable from one function(The collision detector) To another(The trajectory calculation), to add a value to my struct was quite literally impossible. I had to delete one of my threads, and change my architecture from branching to linear. Oh, and I also changed the number of debris from 10 to 100, and the collision distance from 100km to 1000km to ensure collision will be detected lol.
Changelog Changed from Static data to live data using celestrak Starlink APIs. ( 4a27c90 ) Okay, so i HAVE been able to Change from Static data to live data using Celestrak Starlink APIs. Doing this inSo many problems like Chunking, Parsing, RUST async/await, and doing all of that over 500 3d models without frying my CPU. Now, even tho i have been able to get it actually showing up, I need to deal with Celestrak Rate limiting, and Separating Debris from Satellites(Currently, One of the satellite is chosen to be the Satellite, and the rest are set to debris lol). I’ll fix all of this Tomorrow, FOR NOW I HAVE TO SLEEP(My girlfriend got Mad i was not sleeping enough lol 😭😂). Also fixing Scaling, as these should NOT be this big compared to the earth lol.
Changelog Implement caching for live satellite data and adjust debris scaling for better visualization ( 0e71088 ) Okay, so remember in my last Devlog, i noted that Celestrak didn’t like me pinging their servers more than once every 2 hours, which crashes my RUST backend. So today i implemented Caching. Basically, How this works is, I check if there is a file named “active_satellites.txt”, if there is not, i go ahead and create one, and add all the satellite TLE data from Celestrak here. If there already was one, I check the MetaData for time modified, and if this is more than 2 hours, I ping Celestrak again, and Update the File with new data. If it is less than 2 hours tho, i go ahead and use the one i already HAD.
Changelog Updated program to include, and handle both satellite and debris Cache Data from Celestrak ( 1665273 ) Basically, Now I have 2 files of both Debris data and Satellite Data
Changelog tweaks and updates ( 7fc4786 ) Ported satellite data from backend, and introduced satellite component in frontend. ( b6b8e5d ) Meh. Frontend change. Not much.
A few different things have bugged me since last I Devlogged. For one, i’m not tntirely sure how to go on. What i need, to remove, and all. Secondly, everything is so Unorganized rn. So many debris and satellites Just swimming around in Orbit against a static Earth And everything doesn’t even scale properly. Lastly, I’ve tried to focus a bit more on Orging My own YSWS. Thank goodness stardance was extended(Expected, but thank goodness still).
Changelog Improve error handling for satellite and debris data fetching; adjust time step for simulation ( 7e7c487 ) Coming back to this after legit leaving it for One month 😭. Anyway, I fixed error handling for Cases where the user is not able to ping the Celestrak servers to get the data needed. Now It just falls back to the Cache. I also reduced the amount of time That goes by in app, to perfectly mirror the real world.
Changelog Trajectory calculation Now uses universal timestamp ( c842228 ) Okay, Because Celestrak tracks and updates satellite data at different times, The data from the API doesn’t actually reflect the current coordinates of the satellites, especially when compared to one another. While the specific orbits were accurate, The timing was completely random, and so, if 2 satellites were recorded in the same position, 6 hours apart, My simulation will start them in the same coordinate. This is obviously dangerously inaccurate. Fix: I removed the simulated “timestep” entirely, and Built the whole thing to Check current time, Check time the satellite’s data was recorded, and Simulate Orbit/Calculate trajectory and coordinates based on that. Problem with that is, without the timestep, My previous calculation for How fast this thing can run in relation to real word time will be totally wrong. I’ll fix that next.
Changelog Made the in App world go 60* faster than the normal time. ( be91922 ) Basically, 1 Normal second is 60 seconds in app. 1 Normal hour is 60 hours in app
Changelog configured 2 way channel websocket broadcast. can now receive info from the frontend ( 2500f28 ) Yeah. That’s all. “THAT’S ALL YOU DID FOR 2 HOURS 🙆♀️”. Yeah. Keep judging. Until you try to code in RUST 😑🙂
Well, you can now choose your own time multiplier from between the Real world, and the app. This part was(Mostly) gemini code. I suck at math, so I had it do the calculations and stuff. I also tried to Make the earth also spin in relation to the satellites using Julian Time mathematical calculations, But i’ve not been able to achieve that. Changelog git commit -m “choose time multiplier plus earth rotation” ( a585661 ) choose time multiplier plus earth rotation ( eca1623 )
Last Update till ship. Made README, Hosted and everything.
Ships:
In the end, I was not able to do half as much As I wanted to do, EVEN with the extension. TCH. For now, all the project does is show multiple different satellites in Orbit against a static earth, where you can choose How fast the in app world goes compared to the Real world. RUST was not like I expected it to be. Still love it tho. Y’all, Pleas vote nicely 🤧. Thanks....
|
1793324997.6497998
|
1793411397.6497998
|
|
41474
|
Packet Scraper by @vaito | Stardance
|
vaito
|
0
|
4.74
|
0
|
[]
|
[{"post_id": 37568, "ts": "202 [{"post_id": 37568, "ts": "2026-07-30T11:56:03Z", "hours": 0.7631, "text": "Got the output"}, {"post_id": 37041, "ts": "2026-07-29T14:43:24Z", "hours": 0.7878, "text": "Got the type parsing"}, {"post_id": 36985, "ts": "2026-07-29T12:49:25Z", "hours": 3.1939, "text": "I making this project in order to support my main project is MineJS. It now be able to get the packet list and the structure My remaining j*bs are: Parsing the structure into JSON file that my lib can understand … (No idea atm)"}]...
|
Title: Packet Scraper by @vaito | Stardance
Devlo Title: Packet Scraper by @vaito | Stardance
Devlogs:
I making this project in order to support my main project is MineJS. It now be able to get the packet list and the structure My remaining j*bs are: Parsing the structure into JSON file that my lib can understand … (No idea atm)
Got the type parsing
Got the output...
|
1792806597.1929033
|
1793411397.1929033
|
|
41473
|
My awesome macropad! by @Matyk | Stardance
|
Matyk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Matyk | Stardance
|
1792806596.0214345
|
1793411396.0214345
|
|
37990
|
My own site! by @Charfol | Stardance
|
Charfol
|
2
|
14.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-14T20:49:43Z", "hours": 12.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own personal site! It was my learning experience for html and css. The site consists of 2 pages which are an about me and a portfolio. Most of my time making this website was spent on my about me, where I spent time making the sticky notes work properly and look realistic. I’m proud of how it looks; although some organization in the code and github could be better.", "repo": "https://github.com/Charfoal/Personal-Site-2.0", "demo": "https://charfoal.github.io/Sticky-Notes/"}, {"ship_num": 2, "ts": "2026-07-31T19:51:42Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own site! My first time working with HTML, I made this. My largest struggle was with getting the pages to work, as it was my first time working with Github pages too. It was pretty fun to make!", "repo": "https://github.com/Charfoal/Personal-Site-2.0", "demo": "https://charfoal.github.io/Sticky-Notes/"}]...
|
[{"post_id": 47153, "ts": "202 [{"post_id": 47153, "ts": "2026-08-14T20:45:22Z", "hours": 1.5047, "text": "Finished the portfolio page and added the links for the navbar. I got the repositories working (though not in the best way) and am finally shipping my site."}, {"post_id": 46107, "ts": "2026-08-13T02:58:19Z", "hours": 10.2817, "text": "I spent a couple hours making a sticky notes platform. It took me a while, as I was learning html and css for the first time along with it. I am not attaching a test as I will post everything at once, because, due to my ship getting rejected, I decided to redo it all and make it my best work, so I will also have to post my new GitHub repository."}, {"post_id": 38344, "ts": "2026-07-31T17:59:40Z", "hours": 2.3247, "text": "I added multiple pages to my personal site! I spent a while trying to make multiple pages work. I finally got it working by using multiple repos to have the pages for all the sites. The repository that I have attached has all of the code for all the pages."}]...
|
Title: My own site! by @Charfol | Stardance
Devlo Title: My own site! by @Charfol | Stardance
Devlogs:
I added multiple pages to my personal site! I spent a while trying to make multiple pages work. I finally got it working by using multiple repos to have the pages for all the sites. The repository that I have attached has all of the code for all the pages.
I spent a couple hours making a sticky notes platform. It took me a while, as I was learning html and css for the first time along with it. I am not attaching a test as I will post everything at once, because, due to my ship getting rejected, I decided to redo it all and make it my best work, so I will also have to post my new GitHub repository.
Finished the portfolio page and added the links for the navbar. I got the repositories working (though not in the best way) and am finally shipping my site.
Ships:
I made my own site! My first time working with HTML, I made this. My largest struggle was with getting the pages to work, as it was my first time working with Github pages too. It was pretty fun to make!
I made my own personal site! It was my learning experience for html and css. The site consists of 2 pages which are an about me and a portfolio. Most of my time making this website was spent on my about me, where I spent time making the sticky notes work properly and look realistic. I’m proud of how it looks; although some organization in the code and github could be better....
|
1793324995.3274703
|
1793411395.3274703
|
|
41472
|
Cosmic radio telescope by @Sohrab_space | Stardanc Cosmic radio telescope by @Sohrab_space | Stardance...
|
Sohrab_space
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cosmic radio telescope by @Sohrab_space | S Title: Cosmic radio telescope by @Sohrab_space | Stardance...
|
1792806594.9669979
|
1793411394.9669979
|
|
41471
|
Pico matrix by @hanzs | Stardance
|
hanzs
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pico matrix by @hanzs | Stardance
|
1792806594.1049418
|
1793411394.1049418
|
|
41469
|
My own site! by @SifenFitsum | Stardance
|
SifenFitsum
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @SifenFitsum | Stardance
|
1792806593.245159
|
1793411393.245159
|
|
41468
|
Login System Using php by @AnshuRoy | Stardance
|
AnshuRoy
|
0
|
1.77
|
0
|
[]
|
[{"post_id": 36973, "ts": "202 [{"post_id": 36973, "ts": "2026-07-29T12:26:05Z", "hours": 1.77, "text": "WHO SAID PHP IS OLD"}]...
|
Title: Login System Using php by @AnshuRoy | Stard Title: Login System Using php by @AnshuRoy | Stardance
Devlogs:
WHO SAID PHP IS OLD...
|
1792806592.3836446
|
1793411392.3836446
|
|
41465
|
My own site! by @hirani_dras11 | Stardance
|
hirani_dras11
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @hirani_dras11 | Stardance
|
1792806591.5346482
|
1793411391.5346482
|
|
41464
|
My first slack bot! by @AnshuRoy | Stardance
|
AnshuRoy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @AnshuRoy | Stardanc Title: My first slack bot! by @AnshuRoy | Stardance...
|
1792806590.6842113
|
1793411390.6842113
|
|
41463
|
My first slack bot! by @Anagha | Stardance
|
Anagha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Anagha | Stardance
|
1792806589.8207119
|
1793411389.8207119
|
|
41462
|
My first slack bot! by @rakeshbist505 | Stardance
|
rakeshbist505
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @rakeshbist505 | Sta Title: My first slack bot! by @rakeshbist505 | Stardance...
|
1792806588.990321
|
1793411388.990321
|
|
41461
|
My awesome macropad! by @harini0317 | Stardance
|
harini0317
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @harini0317 | Stard Title: My awesome macropad! by @harini0317 | Stardance...
|
1792806588.1596487
|
1793411388.1596487
|
|
35980
|
My personal site! by @Shreiyaan_Parin_Shah | Stard My personal site! by @Shreiyaan_Parin_Shah | Stardance...
|
Shreiyaan_Parin_Shah
|
2
|
16.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T02:18:45Z", "hours": 9.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a website where I share my personal information and and everything about me. The most challenging part of the website was to get the layout correct. But after a lot of hard work and hours of grinding, I finally did it. I included a lot of cool and funny features in this website. Very glad looking at how it has turned out to be. I learned HTML and CSS from w3schools.", "repo": "https://github.com/Shreiyaan/my-personal-website", "demo": "https://shreiyaan.github.io/my-personal-website/"}, {"ship_num": 2, "ts": "2026-07-28T07:29:15Z", "hours": 7.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a personal site that contains information about me, my projects that I will add soon and my achievements as well. The part that was actually challenging was getting the code correct and not messing up the color, font, style and everything else included. But finally, I am proud of it’s outcome. This is my first project and I am excited to do more.", "repo": "https://github.com/Shreiyaan/my-personal-website", "demo": "https://shreiyaan.github.io/my-personal-website/"}]...
|
[{"post_id": 84044, "ts": "202 [{"post_id": 84044, "ts": "2026-10-29T02:13:54Z", "hours": 0.2992, "text": "Finally, done with my website. Very happy to see how it turned out to be!"}, {"post_id": 81714, "ts": "2026-10-22T06:05:28Z", "hours": 0.8228, "text": "I added more uniqueness to my website and here is the outcome. This is my completely personalized website."}, {"post_id": 81700, "ts": "2026-10-22T04:20:52Z", "hours": 3.46, "text": "As mentioned before, there are always corrections to make. So this time, i thought, why not start the entire thing once again from scratch. This is my progress so far. I am a huge fan of Thor, hence the background. The website is not done yet. Have to make a lot of changes and also, have to bring in some of my pictures! I am trying to make it as unique as possible. Yet have to work on it."}, {"post_id": 76364, "ts": "2026-10-03T09:54:47Z", "hours": 4.3561, "text": "I had spent hours behind my previous website, but naturally, there are always more corrections to make. But this time, it wasn’t only a correction. It was s restructure. A complete transformation. I have completed changed the outlook of my personal website, and I just have to make a few more edits before it can go live. Excited on how it is coming out to be!!!"}, {"post_id": 36253, "ts": "2026-07-28T07:20:36Z", "hours": 2.105, "text": "Hello everyone! The site is finally completely finished and all the features are finally working. When I first started working on this for Hack Club, I honestly wasn’t sure how it was going to turn out, but I’m super proud of the final result. Getting everything from a blank screen to a fully working, polished website took way more trial and error than expected, especially trying to get the styling and code structure right without it becoming a total mess. But after grinding through the bugs and finishing up the last few details, it’s finally ready to ship."}, {"post_id": 31794, "ts": "2026-07-20T13:54:17Z", "hours": 5.3539, "text": "After immense hard work and grinding - here is my personal site. This is a culmination of tremendous hours of coding and learning. However intense the hardwork, this process truly taught me a lot. Looking forward for more"}]...
|
Title: My personal site! by @Shreiyaan_Parin_Shah Title: My personal site! by @Shreiyaan_Parin_Shah | Stardance
Devlogs:
After immense hard work and grinding - here is my personal site. This is a culmination of tremendous hours of coding and learning. However intense the hardwork, this process truly taught me a lot. Looking forward for more
Hello everyone! The site is finally completely finished and all the features are finally working. When I first started working on this for Hack Club, I honestly wasn’t sure how it was going to turn out, but I’m super proud of the final result. Getting everything from a blank screen to a fully working, polished website took way more trial and error than expected, especially trying to get the styling and code structure right without it becoming a total mess. But after grinding through the bugs and finishing up the last few details, it’s finally ready to ship.
I had spent hours behind my previous website, but naturally, there are always more corrections to make. But this time, it wasn’t only a correction. It was s restructure. A complete transformation. I have completed changed the outlook of my personal website, and I just have to make a few more edits before it can go live. Excited on how it is coming out to be!!!
As mentioned before, there are always corrections to make. So this time, i thought, why not start the entire thing once again from scratch. This is my progress so far. I am a huge fan of Thor, hence the background. The website is not done yet. Have to make a lot of changes and also, have to bring in some of my pictures! I am trying to make it as unique as possible. Yet have to work on it.
I added more uniqueness to my website and here is the outcome. This is my completely personalized website.
Finally, done with my website. Very happy to see how it turned out to be!
Ships:
I made a personal site that contains information about me, my projects that I will add soon and my achievements as well. The part that was actually challenging was getting the code correct and not messing up the color, font, style and everything else included. But finally, I am proud of it’s outcome. This is my first project and I am excited to do more.
I made a website where I share my personal information and and everything about me. The most challenging part of the website was to get the layout correct. But after a lot of hard work and hours of grinding, I finally did it. I included a lot of cool and funny features in this website. Very glad looking at how it has turned out to be. I learned HTML and CSS from w3schools....
|
1793324987.3735628
|
1793411387.3735628
|
|
41458
|
My own website by @Somda | Stardance
|
Somda
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own website by @Somda | Stardance
|
1792806587.3014376
|
1793411387.3014376
|
|
41457
|
My first slack bot! by @seerkinglover | Stardance
|
seerkinglover
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @seerkinglover | Sta Title: My first slack bot! by @seerkinglover | Stardance...
|
1792806586.4545622
|
1793411386.4545622
|
|
41455
|
UAV drone by @Parth_1234 | Stardance
|
Parth_1234
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: UAV drone by @Parth_1234 | Stardance
|
1792806585.5836775
|
1793411385.5836775
|
|
41454
|
My awesome macropad! by @Gravity | Stardance
|
Gravity
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Gravity | Stardanc Title: My awesome macropad! by @Gravity | Stardance...
|
1792806584.72014
|
1793411384.72014
|
|
28030
|
Star Browser by @adri_3763 | Stardance
|
adri_3763
|
1
|
104.97
|
1079
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T12:07:03Z", "hours": 99.0, "multiplier": 12.69, "payout": 1079, "blessing": "neutral", "text": "I built a ligthweight and a beutiful browser with AI integrated. It was pretty easy at first but then some bugs started to appear and we had to work hard to fix them with some help of AI. I’m proud that I pulled off such a big project especially with my friend @Aron_3763 I’m so glad we finished it after all difficulties and stress. Try out the AI chat integrated into this browser and AI Memory. Let us know what you think of the project or if you have any feedback to give us.", "repo": "https://github.com/Adriii3793/Star-Browser", "demo": "https://github.com/Adriii3793/Star-Browser/releases/tag/v1.1.2"}]...
|
[{"post_id": 63889, "ts": "202 [{"post_id": 63889, "ts": "2026-09-07T22:14:07Z", "hours": 5.9744, "text": "Hello, @Aron_3763 and I fixed some bugs on Linux and made some improvements after a week of trying to test on virtual machines. It was pretty hard testing because the virtual machines sometimes took so long to load and create the app and we had some difficulties trying to fix the bugs. Plus we took a while because we had some stuff going on in our lives apparently but we hope y’all will like this browser and we’re glad it’s working now. Let us know what you think of this project, we would love to hear your feedback on it. That’s all for today soon we will upload the app. Byee!"}, {"post_id": 56554, "ts": "2026-08-28T11:07:12Z", "hours": 6.2892, "text": "Hey everyone, we finally made it. We did round of testing, fixed the last remaining issues and made some improvements. The App is almost ready to submit. We put a lot of effort into this build and we really hope you all enjoy it. Let us know what you think."}, {"post_id": 55172, "ts": "2026-08-26T17:28:31Z", "hours": 9.7044, "text": "Hello guys, we are almost done catching the bugs and fixing them. @Aron_3763 and I are doing some refinements on the code and optimizing it and in a few hours we will ship it.Hope y’all have a wonderful day.Bye bye"}, {"post_id": 54454, "ts": "2026-08-25T14:02:21Z", "hours": 10.1133, "text": "Hello guys, We’ve been trying to fix some bugs and we still have some issues with it We are trying to fix it and find the reason. Meanwhile Aron is trying to help me find out some issues too with me and testing and moral support hahah 😭 We’re still trying to find the bugs and I hope soon I will be able to ship it so y’all can try it. fun fact: we added this silly cat drooling working that represent us working on this project hahaha Hope you have a great day Byee"}, {"post_id": 53660, "ts": "2026-08-24T10:05:38Z", "hours": 16.6439, "text": "Hey guys sorry I haven’t updated you for a while, I was away on vacation and did a ton of stuff so everything has been a bit of a mess. While I was away, @Aron_3763 worked on a bunch of features for the browser. We fixed a lot of bugs, added memory to the AI so it can remember things and put in ad blockers and custom wallpapers. I also added a button to copy links from the search bar, optimized the favorite websites section and media players on the homepage and ran some tests with AI to clean up the code and prevent lag. However right now we’re having some issues in the frontend. We’ve been using AI to help us understand some of the problems and fix bugs because it started acting super strange whenever we try to use the AI chat and sometimes it just won’t respond at all. We’ve been trying to solve this for so many hours now with no luck but we’re still grinding and trying to figure it out. I will show more later byeee!"}, {"post_id": 38119, "ts": "2026-07-31T10:26:32Z", "hours": 10.4014, "text": "Hello guys Lately I’ve been working on few design changes and adding new features to make the browsing experience much smoother. We added 2 new feature Tab groups: you can categorize and group your open tabs together to stay organized while browsing. Honestly implementing this was pretty tough. It kept glitching, doing unexpected things and completely messing up the UI but after a lot of debugging with the help of AI, I managed to understand the errors and learned a lot along the way. Quick access Favorites: we updated the main start page layout and moved favorites right to the top for instant access to your most important websites. @Aron_3763 is currently working on the AI assistant + AI memory to make our built-in assistant remember past context and feel much smarter. That’s all for now baii"}, {"post_id": 36042, "ts": "2026-07-27T21:19:41Z", "hours": 15.9719, "text": "Hey guys, back with another update! Lately we’ve been spending a lot of time working on the setup of the browser, the AI, and the design. We decided to split the work to get things done. Things got pretty hard and I kept getting a lot of errors that were breaking the code but after trying many times, I figured it out and fixed all the backend issues by myself. Meanwhile, @Aron_3763 is working on the frontend, fixing bugs there and making the design look great. That’s it, byeee!"}, {"post_id": 34326, "ts": "2026-07-24T22:46:05Z", "hours": 10.0811, "text": "Hello guys! In these three days, I have been debugging some files and adding some fixes to the code. I would say it was pretty tough, but I did it with a lot of effort. Also, I have been working on the backend for AI memory and improving the AI with new cool features such as tagging tab and file uploads which @Aron_3763 worked on. For the apps, we were working on Windows, but we wanted to make it cross-platform, so we used a virtual machine to install macOS. It was pretty hard, but I luckily made it possible to use and work on my project. I also made some improvements for macOS, and now we are making it perfect. For now, we made it compatible with macOS and Windows and soon we will test it on Linux to understand it better and try to make it compatible with all operating systems. We are also trying to optimize this browser and I would say it’s pretty overwhelming, but I am glad we are seeing some progress. Let us know what you think about this project. Thanks for your attention baii!"}, {"post_id": 32333, "ts": "2026-07-21T13:18:23Z", "hours": 9.0183, "text": "Hello everyone Over the past few days, @Aron_3763 and I have been trying to solve bugs and polish the UI. We focused on fixing the window dragging and styling the tabs, including making them draggable. The tabs took a lot of effort because we ran into some crashing issues but we finally solved it. We also had some issues with Git giving us errors while trying to share our files which slowed us down a bit. Yesterday I was working on importing a webview into the page to enable website navigation. The backend has been pretty hard. I’ve spent almost 5 hours on it and I’m still working on it. Meanwhile Aron is currently styling the AI window so we can integrate AI into our browser. That’s all for now. Baii guys take care"}, {"post_id": 30352, "ts": "2026-07-17T20:34:32Z", "hours": 10.7142, "text": "Hello everyone Yesterday and today my friend @Aron_3763 and I worked together at the library each day for 8h on a project. We planned to build a fast, secure and beautiful browser. We divided the tasks after deciding to collaborate on the files. I designed the front page while Aron continued working on the window controls. We saw some issues, especially with the UI and parts of the code that wouldn’t work. However, we resolved them using AI and supporting each other throughout the process. Later, we will find the issues of the window controls, refine the UI, and if possible begin to work on the backend.This project is new for us, since we’ve never done this one before. We’re already learning new languages like Svelte, collaborating, and discovering how to create applications.Thanks for reading this. Hope you’ll support us during the process and share your thoughts on how it looksBaiii"}]...
|
Title: Star Browser by @adri_3763 | Stardance
Dev Title: Star Browser by @adri_3763 | Stardance
Devlogs:
Hello everyone Yesterday and today my friend @Aron_3763 and I worked together at the library each day for 8h on a project. We planned to build a fast, secure and beautiful browser. We divided the tasks after deciding to collaborate on the files. I designed the front page while Aron continued working on the window controls. We saw some issues, especially with the UI and parts of the code that wouldn’t work. However, we resolved them using AI and supporting each other throughout the process. Later, we will find the issues of the window controls, refine the UI, and if possible begin to work on the backend.This project is new for us, since we’ve never done this one before. We’re already learning new languages like Svelte, collaborating, and discovering how to create applications.Thanks for reading this. Hope you’ll support us during the process and share your thoughts on how it looksBaiii
Hello everyone Over the past few days, @Aron_3763 and I have been trying to solve bugs and polish the UI. We focused on fixing the window dragging and styling the tabs, including making them draggable. The tabs took a lot of effort because we ran into some crashing issues but we finally solved it. We also had some issues with Git giving us errors while trying to share our files which slowed us down a bit. Yesterday I was working on importing a webview into the page to enable website navigation. The backend has been pretty hard. I’ve spent almost 5 hours on it and I’m still working on it. Meanwhile Aron is currently styling the AI window so we can integrate AI into our browser. That’s all for now. Baii guys take care
Hello guys! In these three days, I have been debugging some files and adding some fixes to the code. I would say it was pretty tough, but I did it with a lot of effort. Also, I have been working on the backend for AI memory and improving the AI with new cool features such as tagging tab and file uploads which @Aron_3763 worked on. For the apps, we were working on Windows, but we wanted to make it cross-platform, so we used a virtual machine to install macOS. It was pretty hard, but I luckily made it possible to use and work on my project. I also made some improvements for macOS, and now we are making it perfect. For now, we made it compatible with macOS and Windows and soon we will test it on Linux to understand it better and try to make it compatible with all operating systems. We are also trying to optimize this browser and I would say it’s pretty overwhelming, but I am glad we are seeing some progress. Let us know what you think about this project. Thanks for your attention baii!
Hey guys, back with another update! Lately we’ve been spending a lot of time working on the setup of the browser, the AI, and the design. We decided to split the work to get things done. Things got pretty hard and I kept getting a lot of errors that were breaking the code but after trying many times, I figured it out and fixed all the backend issues by myself. Meanwhile, @Aron_3763 is working on the frontend, fixing bugs there and making the design look great. That’s it, byeee!
Hello guys Lately I’ve been working on few design changes and adding new features to make the browsing experience much smoother. We added 2 new feature Tab groups: you can categorize and group your open tabs together to stay organized while browsing. Honestly implementing this was pretty tough. It kept glitching, doing unexpected things and completely messing up the UI but after a lot of debugging with the help of AI, I managed to understand the errors and learned a lot along the way. Quick access Favorites: we updated the main start page layout and moved favorites right to the top for instant access to your most important websites. @Aron_3763 is currently working on the AI assistant + AI memory to make our built-in assistant remember past context and feel much smarter. That’s all for now baii
Hey guys sorry I haven’t updated you for a while, I was away on vacation and did a ton of stuff so everything has been a bit of a mess. While I was away, @Aron_3763 worked on a bunch of features for the browser. We fixed a lot of bugs, added memory to the AI so it can remember things and put in ad blockers and custom wallpapers. I also added a button to copy links from the search bar, optimized the favorite websites section and media players on the homepage and ran some tests with AI to clean up the code and prevent lag. However right now we’re having some issues in the frontend. We’ve been using AI to help us understand some of the problems and fix bugs because it started acting super strange whenever we try to use the AI chat and sometimes it just won’t respond at all. We’ve been trying to solve this for so many hours now with no luck but we’re still grinding and trying to figure it out. I will show more later byeee!
Hello guys, We’ve been trying to fix some bugs and we still have some issues with it We are trying to fix it and find the reason. Meanwhile Aron is trying to help me find out some issues too with me and testing and moral support hahah 😭 We’re still trying to find the bugs and I hope soon I will be able to ship it so y’all can try it. fun fact: we added this silly cat drooling working that represent us working on this project hahaha Hope you have a great day Byee
Hello guys, we are almost done catching the bugs and fixing them. @Aron_3763 and I are doing some refinements on the code and optimizing it and in a few hours we will ship it.Hope y’all have a wonderful day.Bye bye
Hey everyone, we finally made it. We did round of testing, fixed the last remaining issues and made some improvements. The App is almost ready to submit. We put a lot of effort into this build and we really hope you all enjoy it. Let us know what you think.
Hello, @Aron_3763 and I fixed some bugs on Linux and made some improvements after a week of trying to test on virtual machines. It was pretty hard testing because the virtual machines sometimes took so long to load and create the app and we had some difficulties trying to fix the bugs. Plus we took a while because we had some stuff going on in our lives apparently but we hope y’all will like this browser and we’re glad it’s working now. Let us know what you think of this project, we would love to hear your feedback on it. That’s all for today soon we will upload the app. Byee!
Ships:
I built a ligthweight and a beutiful browser with AI integrated. It was pretty easy at first but then some bugs started to appear and we had to work hard to fix them with some help of AI. I’m proud that I pulled off such a big project especially with my friend @Aron_3763 I’m so glad we finished it after all difficulties and stress. Try out the AI chat integrated into this browser and AI Memory. Let us know what you think of the project or if you have any feedback to give us....
|
1793324984.1514885
|
1793411384.1514885
|
|
41453
|
My own site! by @AMMOUSSA | Stardance
|
AMMOUSSA
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @AMMOUSSA | Stardance
|
1792806583.8316748
|
1793411383.8316748
|
|
41451
|
TheNoRoteClub by @bhargavTheDev | Stardance
|
bhargavTheDev
|
0
|
3.64
|
0
|
[]
|
[{"post_id": 36951, "ts": "202 [{"post_id": 36951, "ts": "2026-07-29T11:23:37Z", "hours": 3.6425, "text": "TheNoRoteClub - The new education platform"}]...
|
Title: TheNoRoteClub by @bhargavTheDev | Stardance Title: TheNoRoteClub by @bhargavTheDev | Stardance
Devlogs:
TheNoRoteClub - The new education platform...
|
1792806582.9812922
|
1793411382.9812922
|
|
35275
|
Deterministic Desktop Assistant by @JV | Stardance
|
JV
|
0
|
5.43
|
0
|
[]
|
[{"post_id": 32698, "ts": "202 [{"post_id": 32698, "ts": "2026-07-22T00:48:33Z", "hours": 5.0369, "text": "The assistant can now read and execute from an external function library when prompted by user voice input. The assistant can handle multiple closely named functions or input that includes multiple function names by providing an options list to the user, allowing them to choose through their voice. The functions used in the video are placeholders/demos because eventually the user should be able to write their own scripts that suit their own needs or find community scripts online to import. My next step is probably to try making an app to house the program and give the assistant a graphical interface for configuring settings, writing/importing scripts, and other customizations. A decent amount of the time I spent working on this project so far comes from learning how to use Git with my code. Between this devlog and the last, I redid the entire Github setup for this project. This has been my first time ever using Github from the IDE so the learning curve was initially a little steep, but I think I’ve got the hang of it now!"}, {"post_id": 30469, "ts": "2026-07-18T01:53:48Z", "hours": 0.3933, "text": "I finally picked up a project I had started about a year ago where I decided to make a personal virtual assistant that didn’t need to use AI to do anything. I’m still deciding on a working name for the assistant, but the project now has basic voice-to-text functionality, a voice playback function, and all code-breaking bugs seem to have been fixed. My next step will be to add a few testing functions and to find a way for the program to decide which functions I want to run based on the user’s voice command and the given names of the functions. The assistant currently only runs through the terminal, but eventually I want to be able to manage the assistant through a GUI."}]...
|
Title: Deterministic Desktop Assistant by @JV | St Title: Deterministic Desktop Assistant by @JV | Stardance
Devlogs:
I finally picked up a project I had started about a year ago where I decided to make a personal virtual assistant that didn’t need to use AI to do anything. I’m still deciding on a working name for the assistant, but the project now has basic voice-to-text functionality, a voice playback function, and all code-breaking bugs seem to have been fixed. My next step will be to add a few testing functions and to find a way for the program to decide which functions I want to run based on the user’s voice command and the given names of the functions. The assistant currently only runs through the terminal, but eventually I want to be able to manage the assistant through a GUI.
The assistant can now read and execute from an external function library when prompted by user voice input. The assistant can handle multiple closely named functions or input that includes multiple function names by providing an options list to the user, allowing them to choose through their voice. The functions used in the video are placeholders/demos because eventually the user should be able to write their own scripts that suit their own needs or find community scripts online to import. My next step is probably to try making an app to house the program and give the assistant a graphical interface for configuring settings, writing/importing scripts, and other customizations. A decent amount of the time I spent working on this project so far comes from learning how to use Git with my code. Between this devlog and the last, I redid the entire Github setup for this project. This has been my first time ever using Github from the IDE so the learning curve was initially a little steep, but I think I’ve got the hang of it now!...
|
1792806582.1045108
|
1793411382.1045108
|
|
23479
|
Untitled project by @Nithin_hack | Stardance
|
Nithin_hack
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Nithin_hack | Stardanc Title: Untitled project by @Nithin_hack | Stardance...
|
1792806581.2459688
|
1793411381.2459688
|
|
17508
|
My very own WebOS - MoonOS by @b4san_34 | Stardanc My very own WebOS - MoonOS by @b4san_34 | Stardance...
|
b4san_34
|
0
|
4.7
|
0
|
[]
|
[{"post_id": 10919, "ts": "202 [{"post_id": 10919, "ts": "2026-06-17T21:52:59Z", "hours": 2.0717, "text": "After presenting the first version of MoonOS, the project had the basics in place — enough to prove the concept worked. At that point, I was only around 4–8 commits in, with a minimal but functional core.Since then, I’ve pushed a much bigger wave of updates focused on turning MoonOS from an early prototype into something more complete and scalable. What’s improved since the last updateStronger architecture:I restructured key parts of the codebase to make the system cleaner, more modular, and easier to maintain as it grows. More real functionality:A lot of features that were either missing or still conceptual in v1 are now implemented and integrated into the OS flow. Better overall UX and polish:I refined interactions and visual behavior so the system feels more consistent, less rough, and more intentional.Stability + internal quality:I fixed bugs, handled edge cases better, and refactored fragile sections so new changes don’t break existing behavior as easily.Built for future expansion:The current version is not just “more features” — it’s a better foundation for adding upcoming functionality faster and with less technical friction.Short reflectionIf v1 was about saying “it works”, this phase is about saying “it’s becoming a real system.”The biggest progress wasn’t just feature count — it was maturity in structure, consistency, and direction.Next focusGoing forward, I want to keep building in the same direction:expand core capabilities,keep improving performance/stability,and continue polishing the experience so MoonOS feels as good to use as it is to build."}, {"post_id": 8396, "ts": "2026-06-13T23:28:04Z", "hours": 2.6289, "text": "MoonOS Preview v1: Just the Beginning Hey everyone, I’m launching MoonOS—a web-based operating system that runs entirely in your browser and adapts to whatever hardware you’re using. Here’s the thing: it detects your CPU, RAM, GPU, and battery, then automatically adjusts its visual fidelity. Got a powerful machine? Full glassmorphism and particle effects. On a budget laptop? It strips down gracefully. No configuration. It just works. You get a real window manager with drag, resize, snap-to-edges, virtual workspaces, a Spotlight-style launcher, a command palette, and keyboard shortcuts that feel native. There’s persistent storage with IndexedDB, so files you create actually stick around. Nine built-in apps: Terminal with a real filesystem, Notes with markdown preview, Files browser, Tasks, Calendar, Settings, Task Manager, Theme Editor, and a Browser. The tech is intentional—Vite, React 19, TypeScript strict mode, TailwindCSS, Zustand, all bundled at just 137KB gzipped. Tested with Vitest and Playwright. But here’s what matters most: this is v1, and I’m just getting started. I’m going to make this beautiful. Every detail, every interaction, every visual is going to be refined. MoonOS is going to look and feel incredible. Try it out at : https://moonos-66c14b9918e1.herokuapp.com/ And let me know what you think, i hope you like it, its my first WebOS try"}]...
|
Title: My very own WebOS - MoonOS by @b4san_34 | S Title: My very own WebOS - MoonOS by @b4san_34 | Stardance
Devlogs:
MoonOS Preview v1: Just the Beginning Hey everyone, I’m launching MoonOS—a web-based operating system that runs entirely in your browser and adapts to whatever hardware you’re using. Here’s the thing: it detects your CPU, RAM, GPU, and battery, then automatically adjusts its visual fidelity. Got a powerful machine? Full glassmorphism and particle effects. On a budget laptop? It strips down gracefully. No configuration. It just works. You get a real window manager with drag, resize, snap-to-edges, virtual workspaces, a Spotlight-style launcher, a command palette, and keyboard shortcuts that feel native. There’s persistent storage with IndexedDB, so files you create actually stick around. Nine built-in apps: Terminal with a real filesystem, Notes with markdown preview, Files browser, Tasks, Calendar, Settings, Task Manager, Theme Editor, and a Browser. The tech is intentional—Vite, React 19, TypeScript strict mode, TailwindCSS, Zustand, all bundled at just 137KB gzipped. Tested with Vitest and Playwright. But here’s what matters most: this is v1, and I’m just getting started. I’m going to make this beautiful. Every detail, every interaction, every visual is going to be refined. MoonOS is going to look and feel incredible. Try it out at : https://moonos-66c14b9918e1.herokuapp.com/ And let me know what you think, i hope you like it, its my first WebOS try
After presenting the first version of MoonOS, the project had the basics in place — enough to prove the concept worked. At that point, I was only around 4–8 commits in, with a minimal but functional core.Since then, I’ve pushed a much bigger wave of updates focused on turning MoonOS from an early prototype into something more complete and scalable. What’s improved since the last updateStronger architecture:I restructured key parts of the codebase to make the system cleaner, more modular, and easier to maintain as it grows. More real functionality:A lot of features that were either missing or still conceptual in v1 are now implemented and integrated into the OS flow. Better overall UX and polish:I refined interactions and visual behavior so the system feels more consistent, less rough, and more intentional.Stability + internal quality:I fixed bugs, handled edge cases better, and refactored fragile sections so new changes don’t break existing behavior as easily.Built for future expansion:The current version is not just “more features” — it’s a better foundation for adding upcoming functionality faster and with less technical friction.Short reflectionIf v1 was about saying “it works”, this phase is about saying “it’s becoming a real system.”The biggest progress wasn’t just feature count — it was maturity in structure, consistency, and direction.Next focusGoing forward, I want to keep building in the same direction:expand core capabilities,keep improving performance/stability,and continue polishing the experience so MoonOS feels as good to use as it is to build....
|
1792806580.346418
|
1793411380.346418
|
|
10357
|
Apple App by @Nihu | Stardance
|
Nihu
|
1
|
27.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-27T20:51:56Z", "hours": 27.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "For my very first coding project in Xcode, I built an iOS app that helps users quickly locate nearby recycling centers. My favorite accomplishment was successfully embedding Apple Maps and generating a list of local centers to help people recycle more easily. Although working with MapKit and setting up the map was a big challenge, I am super proud to have built a fully functional app from scratch!", "repo": "https://github.com/Nihu-Wihu/BinWise", "demo": "https://youtube.com/shorts/Vm0KYB0_Qak"}]...
|
[{"post_id": 35567, "ts": "202 [{"post_id": 35567, "ts": "2026-07-27T03:04:20Z", "hours": 12.4489, "text": "I finished my app!!!!! I have added the MAPKit part and I sadly had to scrap a lot of my ideas like adding a barcode scanner becuase it was too advanced for me. I succesfull imbedded Apple maps into the app, so the maps run in the app as opposed to it taking you to apple map it self"}, {"post_id": 31038, "ts": "2026-07-19T03:27:46Z", "hours": 5.0953, "text": "I started studing Xcode more. In this part I tried to make images load onto Xcode but I didn’t lieke how that looked. I started learinng how to use Apple maps here but didnt implement it beucase it had a lot of bugs. Next devlog, I will probably ask AI to help me debug and complete the MAP kit part"}, {"post_id": 12631, "ts": "2026-06-20T17:08:08Z", "hours": 7.7894, "text": "idk how to connect my wakatime with my hackatime???"}, {"post_id": 3928, "ts": "2026-06-07T01:33:14Z", "hours": 1.575, "text": "Apple App - I don’t know whta exactly my app will be but I will figure it out soon! (trust) So now I’m just familiarizing myself with XCode’s interface and functions; since I found out it is actually pretty difffernt from the coding languages I know. That’s all for now!"}]...
|
Title: Apple App by @Nihu | Stardance
Devlogs:
Ap Title: Apple App by @Nihu | Stardance
Devlogs:
Apple App - I don’t know whta exactly my app will be but I will figure it out soon! (trust) So now I’m just familiarizing myself with XCode’s interface and functions; since I found out it is actually pretty difffernt from the coding languages I know. That’s all for now!
idk how to connect my wakatime with my hackatime???
I started studing Xcode more. In this part I tried to make images load onto Xcode but I didn’t lieke how that looked. I started learinng how to use Apple maps here but didnt implement it beucase it had a lot of bugs. Next devlog, I will probably ask AI to help me debug and complete the MAP kit part
I finished my app!!!!! I have added the MAPKit part and I sadly had to scrap a lot of my ideas like adding a barcode scanner becuase it was too advanced for me. I succesfull imbedded Apple maps into the app, so the maps run in the app as opposed to it taking you to apple map it self
Ships:
For my very first coding project in Xcode, I built an iOS app that helps users quickly locate nearby recycling centers. My favorite accomplishment was successfully embedding Apple Maps and generating a list of local centers to help people recycle more easily. Although working with MapKit and setting up the map was a big challenge, I am super proud to have built a fully functional app from scratch!...
|
1793324979.2737265
|
1793411379.2737265
|
|
27
|
Stardance Utils by @Hridya | Stardance
|
Hridya
|
0
|
35.15
|
0
|
[]
|
[{"post_id": 15726, "ts": "202 [{"post_id": 15726, "ts": "2026-06-25T16:22:49Z", "hours": 2.1933, "text": "Fixes Fixed testflight building & publishing fixed firefox scrolling and published that and fixed other bug fixes"}, {"post_id": 9451, "ts": "2026-06-15T20:19:32Z", "hours": 1.8658, "text": "Testflight autopublishing, bug fixes, collapsed devlogs Testflight now autodeploys with chrome webstore and firefox store, so safari users also have regular updates w/o me building & deploying manually Bug fixes with AI checks in firefox, and like untoggleable keep orders in sidebar etc. and auto publishing detection for versions fixed Collapsible devlogs for long ones show more/show less"}, {"post_id": 7545, "ts": "2026-06-12T16:31:11Z", "hours": 3.81, "text": "Changelog, theming, bug fixes, improvements Changelog, add to devlog, has multiple formatting options and supports branches as well. Themed rate page A lot of performance improvements to the website focusing on reducing load because of the galaxy bg and cubes. Command palette now has stardance utils options like change font pairing, theme, etc. and some other bug fixes & improvements with bugs reported by users. Changelog improvements ( 8be79e9 ) more speeed ( 6ca07c7 ) speeed ( e97a3f2 ) performance ( b4ffca0 ) some more bug fixes ( d82efb7 ) performance & bug fixes ( c4844f9 ) fix selectors for global feeds ( d10135f ) zooming ( 31fe643 )"}, {"post_id": 5128, "ts": "2026-06-08T20:22:42Z", "hours": 0.4969, "text": "Syncing & devlog zoom Implemented syncing of goals, theme, fonts etc. across chrome account/firefox account. also did sharding of goals, as about 12 goals exceeds quota of syncing for chrome so added sharding to work with that. Also changed check AI to a robot svg and added a zoom in to see devlog images better when they have small details!"}, {"post_id": 5014, "ts": "2026-06-08T17:44:17Z", "hours": 1.5442, "text": "Auto publishing + safari build Setup a github workflow, so when i start working on new version, old version is automatically published to chrome webstore & mozilla addons through API, so i don’t need to press like 4 extra buttons on each to do so. Also built & submitted extension to app store so my safari users can use it easier than building it themselves."}, {"post_id": 4454, "ts": "2026-06-07T19:35:59Z", "hours": 4.1611, "text": "Onboarding Made a detailed onboarding flow to help users to be aware of and understand Stardance Utils features. Also made several performance improvements to the website."}, {"post_id": 3682, "ts": "2026-06-06T18:49:22Z", "hours": 2.5978, "text": "Website! Finally made a showcase website for Stardance Utils. Added some fun UI stuff like the hover cubes, and the galaxy background! Added sections for past projects/reviews too so the page has a little more proof behind it and less trust me bro cough cough"}, {"post_id": 2857, "ts": "2026-06-05T18:27:31Z", "hours": 5.5658, "text": "Shop Improvements Major shop changes: Removed the popular carousel Made All items the default view and moved categories into a filter Improved the Goals and Your Orders sidebar spacing and UI Added cumulative and individual goal progress Added background progress bars per item and an overall progress bar Added estimated time remaining for each goal and a total time estimate Added the option to remove the Goals sidebar and show Goals as a top section instead Added the option to show or hide Your Orders in the sidebar, or use it as a link (Longest devlog yet, website coming up next!)"}, {"post_id": 1601, "ts": "2026-06-03T18:46:19Z", "hours": 0.3131, "text": "Pinned projects Pin the projects you work on the most for easy access!"}, {"post_id": 1589, "ts": "2026-06-03T18:23:25Z", "hours": 2.2786, "text": "Markdown toolbar, live preview! Toolbar with all markdown that is supported (except images, PR to be merged soon?) Live preview of the markdown in your devlogs! Fixing some bugs with AI detection (support of locales like FR-fr, etc)"}, {"post_id": 1082, "ts": "2026-06-02T21:58:20Z", "hours": 0.6494, "text": "Refactor & cleanup Split 3k+ lines of content.js into modularized files, projects.js and others to manage code quality better. (Last time it went to 10k+ lines in 1 file and i don’t want to repeat that) Cleaned up some inline styles and reorganized into styles.css Updated readme with latest features"}, {"post_id": 892, "ts": "2026-06-02T16:50:13Z", "hours": 2.2256, "text": "AI image detection Live on webstore now: https://chromewebstore.google.com/detail/stardance-utils/kapdpeddcghffhildgnbbdnaedeebdoj So, started out with C2PA, got it working with wasm through the extension but then realized that it won’t work since C2PA is lost in upload to stardance, therefore i switched to using https://openai.com/research/verify/ in a background job when check AI is clicked."}, {"post_id": 435, "ts": "2026-06-01T20:45:36Z", "hours": 1.8744, "text": "Themes Make stardance look different, all catpuccin accents and other themes now live! Started work on AI detection for devlog images & banners."}, {"post_id": 319, "ts": "2026-06-01T16:21:51Z", "hours": 1.2333, "text": "Slack emojis support So, slack emojis should work, however there’s a bug with post markdown that causes it not to. I’m going to PR a fix and then you can use slack emojis in devlogs!"}, {"post_id": 272, "ts": "2026-06-01T14:32:17Z", "hours": 0.3925, "text": "Devlog drafts! Don’t lose your devlogs, because now they’re saved locally. (Note: this only includes the devlog text, not images)"}, {"post_id": 180, "ts": "2026-06-01T06:00:30Z", "hours": 0.2944, "text": "Inline devlog editing You can now edit devlogs inline, without having to be redirected Added feature list to readme and early stage webstore link"}, {"post_id": 177, "ts": "2026-06-01T05:37:51Z", "hours": 0.9578, "text": "Speak your Devlogs! Tired of typing? Want to just speak out your devlog? Well now you can do that with stardance utils. In fact I fully spoke out this devlog, and your wpm is always higher with speaking (probably) Also, I did some improvements to the styling of ship button."}, {"post_id": 126, "ts": "2026-05-31T21:06:59Z", "hours": 0.7456, "text": "Project page improvements! inline devlogging, so you don’t need to click a button duplicate edit button removed ship button moved to top of hero which is more convienent"}, {"post_id": 95, "ts": "2026-05-31T18:09:13Z", "hours": 1.9536, "text": "Sidebar improvements! Choose out of 11 curated font pairings, or make your custom one with any font from google fonts! Reorder your sidebar tabs how you prefer them!"}]...
|
Title: Stardance Utils by @Hridya | Stardance
Dev Title: Stardance Utils by @Hridya | Stardance
Devlogs:
Sidebar improvements! Choose out of 11 curated font pairings, or make your custom one with any font from google fonts! Reorder your sidebar tabs how you prefer them!
Project page improvements! inline devlogging, so you don’t need to click a button duplicate edit button removed ship button moved to top of hero which is more convienent
Speak your Devlogs! Tired of typing? Want to just speak out your devlog? Well now you can do that with stardance utils. In fact I fully spoke out this devlog, and your wpm is always higher with speaking (probably) Also, I did some improvements to the styling of ship button.
Inline devlog editing You can now edit devlogs inline, without having to be redirected Added feature list to readme and early stage webstore link
Devlog drafts! Don’t lose your devlogs, because now they’re saved locally. (Note: this only includes the devlog text, not images)
Slack emojis support So, slack emojis should work, however there’s a bug with post markdown that causes it not to. I’m going to PR a fix and then you can use slack emojis in devlogs!
Themes Make stardance look different, all catpuccin accents and other themes now live! Started work on AI detection for devlog images & banners.
AI image detection Live on webstore now: https://chromewebstore.google.com/detail/stardance-utils/kapdpeddcghffhildgnbbdnaedeebdoj So, started out with C2PA, got it working with wasm through the extension but then realized that it won’t work since C2PA is lost in upload to stardance, therefore i switched to using https://openai.com/research/verify/ in a background job when check AI is clicked.
Refactor & cleanup Split 3k+ lines of content.js into modularized files, projects.js and others to manage code quality better. (Last time it went to 10k+ lines in 1 file and i don’t want to repeat that) Cleaned up some inline styles and reorganized into styles.css Updated readme with latest features
Markdown toolbar, live preview! Toolbar with all markdown that is supported (except images, PR to be merged soon?) Live preview of the markdown in your devlogs! Fixing some bugs with AI detection (support of locales like FR-fr, etc)
Pinned projects Pin the projects you work on the most for easy access!
Shop Improvements Major shop changes: Removed the popular carousel Made All items the default view and moved categories into a filter Improved the Goals and Your Orders sidebar spacing and UI Added cumulative and individual goal progress Added background progress bars per item and an overall progress bar Added estimated time remaining for each goal and a total time estimate Added the option to remove the Goals sidebar and show Goals as a top section instead Added the option to show or hide Your Orders in the sidebar, or use it as a link (Longest devlog yet, website coming up next!)
Website! Finally made a showcase website for Stardance Utils. Added some fun UI stuff like the hover cubes, and the galaxy background! Added sections for past projects/reviews too so the page has a little more proof behind it and less trust me bro cough cough
Onboarding Made a detailed onboarding flow to help users to be aware of and understand Stardance Utils features. Also made several performance improvements to the website.
Auto publishing + safari build Setup a github workflow, so when i start working on new version, old version is automatically published to chrome webstore & mozilla addons through API, so i don’t need to press like 4 extra buttons on each to do so. Also built & submitted extension to app store so my safari users can use it easier than building it themselves.
Syncing & devlog zoom Implemented syncing of goals, theme, fonts etc. across chrome account/firefox account. also did sharding of goals, as about 12 goals exceeds quota of syncing for chrome so added sharding to work with that. Also changed check AI to a robot svg and added a zoom in to see devlog images better when they have small details!
Changelog, theming, bug fixes, improvements Changelog, add to devlog, has multiple formatting options and supports branches as well. Themed rate page A lot of performance improvements to the website focusing on reducing load because of the galaxy bg and cubes. Command palette now has stardance utils options like change font pairing, theme, etc. and some other bug fixes & improvements with bugs reported by users. Changelog improvements ( 8be79e9 ) more speeed ( 6ca07c7 ) speeed ( e97a3f2 ) performance ( b4ffca0 ) some more bug fixes ( d82efb7 ) performance & bug fixes ( c4844f9 ) fix selectors for global feeds ( d10135f ) zooming ( 31fe643 )
Testflight autopublishing, bug fixes, collapsed devlogs Testflight now autodeploys with chrome webstore and firefox store, so safari users also have regular updates w/o me building & deploying manually Bug fixes with AI checks in firefox, and like untoggleable keep orders in sidebar etc. and auto publishing detection for versions fixed Collapsible devlogs for long ones show more/show less
Fixes Fixed testflight building & publishing fixed firefox scrolling and published that and fixed other bug fixes...
|
1792806579.1208222
|
1793411379.1208222
|
|
24456
|
Aphelion by @qaimkhaniarzan | Stardance
|
qaimkhaniarzan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Aphelion by @qaimkhaniarzan | Stardance
|
1792806578.2777777
|
1793411378.2777777
|
|
39391
|
Pork(e) by @Bry | Stardance
|
Bry
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Pork(e) by @Bry | Stardance
|
1792806575.6405594
|
1793411375.6405594
|
|
1498
|
My first slack bot! by @Darryl | Stardance
|
Darryl
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Darryl | Stardance
|
1792806574.783699
|
1793411374.783699
|
|
32163
|
My Creation: SpotifyPad! by @MuhammadI | Stardance
|
MuhammadI
|
0
|
7.49
|
0
|
[]
|
[{"post_id": 36553, "ts": "202 [{"post_id": 36553, "ts": "2026-07-28T19:01:08Z", "hours": 1.8069, "text": "Update! I have decided to stick to my original schematic. I had to redo the whole thing, which was a pain, but I got it done. The reason I removed the OLED is that I want to try making a screen that can display the songs I’m listening to."}, {"post_id": 33083, "ts": "2026-07-22T17:46:10Z", "hours": 1.2875, "text": "Update: I have decided to add an oled display to see the current/next tracks with the ability to skip and pause songs. Right now I have updated the schematics but they will still need some work as the wiring is not complete."}, {"post_id": 32700, "ts": "2026-07-22T00:52:07Z", "hours": 1.1667, "text": "I have done a better mockup of my case. It is in a much better state than before. It will still need some additional modeling, but it is now in a good spot. Now moving on, I can try to focus more on the aesthetics of the case"}, {"post_id": 32050, "ts": "2026-07-20T22:45:41Z", "hours": 0.8175, "text": "Work on my case design in onshape"}, {"post_id": 31574, "ts": "2026-07-20T02:37:01Z", "hours": 0.4347, "text": "Fixed the layout of my pcb. I have made so the usb-c port is on the front and not on the side anymore . I felt that it was a weird design choice so I ended up changing it. It would function alot better for the end user and makes more sense to put it there."}, {"post_id": 30483, "ts": "2026-07-18T03:02:02Z", "hours": 0.7836, "text": "Case: This is the start of my case design. I have used my prior knowledge to make a very basic case. This case is temporary for now. I hope I can make it more unique to the end user (me)."}, {"post_id": 30189, "ts": "2026-07-17T15:44:24Z", "hours": 0.4736, "text": "Update: I think I have finished up my pcb! Im not sure if it is correctly orientated. If my pcb is all good, next I will be modeling up a case in onshape!"}, {"post_id": 29936, "ts": "2026-07-17T03:22:48Z", "hours": 0.4003, "text": "Working on the wiring of the pcb. I’m trying to make the wiring as nice/clean as possible. Later on I will use Onshape to model a case for this!"}, {"post_id": 29873, "ts": "2026-07-17T01:08:47Z", "hours": 0.3192, "text": "I have finished working on my schematic and moved onto working on the pcb. I’m currently in the process of looking how to organize the components together and how to wire it up."}]...
|
Title: My Creation: SpotifyPad! by @MuhammadI | St Title: My Creation: SpotifyPad! by @MuhammadI | Stardance
Devlogs:
I have finished working on my schematic and moved onto working on the pcb. I’m currently in the process of looking how to organize the components together and how to wire it up.
Working on the wiring of the pcb. I’m trying to make the wiring as nice/clean as possible. Later on I will use Onshape to model a case for this!
Update: I think I have finished up my pcb! Im not sure if it is correctly orientated. If my pcb is all good, next I will be modeling up a case in onshape!
Case: This is the start of my case design. I have used my prior knowledge to make a very basic case. This case is temporary for now. I hope I can make it more unique to the end user (me).
Fixed the layout of my pcb. I have made so the usb-c port is on the front and not on the side anymore . I felt that it was a weird design choice so I ended up changing it. It would function alot better for the end user and makes more sense to put it there.
Work on my case design in onshape
I have done a better mockup of my case. It is in a much better state than before. It will still need some additional modeling, but it is now in a good spot. Now moving on, I can try to focus more on the aesthetics of the case
Update: I have decided to add an oled display to see the current/next tracks with the ability to skip and pause songs. Right now I have updated the schematics but they will still need some work as the wiring is not complete.
Update! I have decided to stick to my original schematic. I had to redo the whole thing, which was a pain, but I got it done. The reason I removed the OLED is that I want to try making a screen that can display the songs I’m listening to....
|
1792806573.5801191
|
1793411373.5801191
|
|
39865
|
my APOD site by @kevinamir | Stardance
|
kevinamir
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-30T21:47:48Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this website takes the APOD from NASA and shows it to you with the date", "repo": "https://github.com/kevinamirr1/nasa-is-cooked", "demo": "https://kevinamirr1.github.io/nasa-is-cooked/"}]...
|
[{"post_id": 37897, "ts": "202 [{"post_id": 37897, "ts": "2026-07-30T21:46:14Z", "hours": 0.4508, "text": "My APOD website"}]...
|
Title: my APOD site by @kevinamir | Stardance
Dev Title: my APOD site by @kevinamir | Stardance
Devlogs:
My APOD website
Ships:
this website takes the APOD from NASA and shows it to you with the date...
|
1793324973.374319
|
1793411373.374319
|
|
19490
|
Untitled project by @ace_aryan | Stardance
|
ace_aryan
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @ace_aryan | Stardance
|
1792806572.7376177
|
1793411372.7376177
|
|
3749
|
options_engine by @Aarnav | Stardance
|
Aarnav
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: options_engine by @Aarnav | Stardance
|
1792806571.5922494
|
1793411371.5922494
|
|
14209
|
My very own WebOS by @wefevom733 | Stardance
|
wefevom733
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @wefevom733 | Stardanc Title: My very own WebOS by @wefevom733 | Stardance...
|
1792806570.7433834
|
1793411370.7433834
|
|
6463
|
My awesome macropad! by @byashas0528 | Stardance
|
byashas0528
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @byashas0528 | Star Title: My awesome macropad! by @byashas0528 | Stardance...
|
1792806569.9148142
|
1793411369.9148142
|
|
19624
|
Personal by @AbdulazizAbdullaev | Stardance
|
AbdulazizAbdullaev
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Personal by @AbdulazizAbdullaev | Stardance
|
1792806569.0607274
|
1793411369.0607274
|
|
28201
|
My awesome macropad! by @rusheadrenaline | Stardan My awesome macropad! by @rusheadrenaline | Stardance...
|
rusheadrenaline
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rusheadrenaline | Title: My awesome macropad! by @rusheadrenaline | Stardance...
|
1792806568.1933622
|
1793411368.1933622
|
|
29122
|
My first slack bot! by @ethana1325 | Stardance
|
ethana1325
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @ethana1325 | Starda Title: My first slack bot! by @ethana1325 | Stardance...
|
1792806567.3405688
|
1793411367.3405688
|
|
36458
|
MalWare Game by @AkistarX | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: MalWare Game by @AkistarX | Stardance
|
1792806566.4881456
|
1793411366.4881456
|
|
48185
|
~/SLAIR by @domos000 | Stardance
|
domos000
|
1
|
4.55
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T17:39:33Z", "hours": 4.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "~/SLAIR is now LIVE! What is ~/SLAIR ? ~/SLAIR is a free-to-use Slack Bot packed with mini-games and a few things you probably didn’t know you needed! Where does the name ~/SLAIR come from? The name ~/SLAIR comes from my other project ~/KLAIR which was a Discord Bot. As this bot is similar to ~/KLAIR in features but for Slack instead of Discord, I’ve decided to name it ~/SLAIR . Features: ~/SLAIR is designed to be a small, fun, free-to-use bot that aims to add a bunch of entertaining features. Mini Games: /slair-coinflip Flip a coin /slair-guessthenumber Try to guess the number /slair-rps Challenge the bot /slair-unscramble Unscramble the word Other Commands: /slair-8ball Ask the magic 8-ball /slair-cat Get a random cat /slair-dog Get a random dog /slair-cryptoprice Check cryptocurrency prices /slair-uselessfact Receive a completely useless fact AI Usage: Used Gemini 3.1 Pro (High) in Antigravity to fix errors and bugs in the code which I couldn't figure out how to solve. AI was primarily used to debug /slair-unscramble and /slair-guessthenumber commands as I couldn't figure out how to open modals upon clicking a button.", "repo": "https://github.com/adeebur-x64/SLAIR", "demo": "https://hackclub.enterprise.slack.com/archives/C0BR0071C14"}]...
|
[{"post_id": 59693, "ts": "202 [{"post_id": 59693, "ts": "2026-09-01T16:48:52Z", "hours": 0.5453, "text": "Devlog - 5 I don’t remember what exactly I did but these 32 mins weren’t logged. What I do remember: I had worked on troubleshooting the bot and fixing errors / bugs in the code as well as writing the README.md file where most of this 32 minutes went."}, {"post_id": 48848, "ts": "2026-08-17T12:17:30Z", "hours": 1.3106, "text": "Devlog - 4 Aw man, I forgot to post a devlog againnnnnn! Anyways, I’ve now ported the /unscramble and /guessthenumber commands to ~/SLAIR now! Creating both of these commands was a challenge and I had to utilize Gemini 3.1 Pro (High) in Antigravity to get it working. The main challenge I faced was to make the modals open upon a button click and work exactly how modals do in Discord. Also, ignore the stuff I covered with red, those responses were just for testing what works and what bugs there are which I need to fix. => This is the last Devlog! I’ll NOT be adding the nim Mini Game to ~/SLAIR for now."}, {"post_id": 47961, "ts": "2026-08-16T07:31:16Z", "hours": 0.7831, "text": "Devlog - 3 Didn’t even realize it took me 46 minutes to make this lol. Anyways, I’ve now ported the /coinflip and /rockpaperscissors command to ~/SLAIR now! Creating this was somehow a challenge and I almost lost my mind trying to figure out how to get these buttons working! I’ll take a break for now and will be back with another Devlog very soon! This will most probably be one of the last few Devlogs before the first Ship!"}, {"post_id": 47942, "ts": "2026-08-16T06:35:54Z", "hours": 0.6028, "text": "Devlog - 2 Made some more progress in porting the features of ~/KLAIR to the Slack Bot ~/SLAIR . I’ve added the /cryptoprice and /8ball commands now which utilize the Slack Modal to ask the person for their input. I’ll try to port the mini games to ~/SLAIR too and that will be the V1 of the Slack Bot!"}, {"post_id": 47487, "ts": "2026-08-15T12:51:49Z", "hours": 0.8081, "text": "Devlog - 1 I started working on my Slack Bot and completely forgot I also need to post my progress here. Well, till now, I’ve been able to port the /cat , /dog and /uselessfact commands from my Discord Bot ~/KLAIR to this Slack Bot ~/SLAIR . => I will NOT be adding the AI features in this Slack Bot. (At least for now, I won’t). Where does the name ~/SLAIR come from? The name ~/SLAIR comes from the Discord Bot I made earlier /KLAIR but, instead of it being a Discord Bot, it’s a Slack Bot."}]...
|
Title: ~/SLAIR by @domos000 | Stardance
Devlogs:
Title: ~/SLAIR by @domos000 | Stardance
Devlogs:
Devlog - 1 I started working on my Slack Bot and completely forgot I also need to post my progress here. Well, till now, I’ve been able to port the /cat , /dog and /uselessfact commands from my Discord Bot ~/KLAIR to this Slack Bot ~/SLAIR . => I will NOT be adding the AI features in this Slack Bot. (At least for now, I won’t). Where does the name ~/SLAIR come from? The name ~/SLAIR comes from the Discord Bot I made earlier /KLAIR but, instead of it being a Discord Bot, it’s a Slack Bot.
Devlog - 2 Made some more progress in porting the features of ~/KLAIR to the Slack Bot ~/SLAIR . I’ve added the /cryptoprice and /8ball commands now which utilize the Slack Modal to ask the person for their input. I’ll try to port the mini games to ~/SLAIR too and that will be the V1 of the Slack Bot!
Devlog - 3 Didn’t even realize it took me 46 minutes to make this lol. Anyways, I’ve now ported the /coinflip and /rockpaperscissors command to ~/SLAIR now! Creating this was somehow a challenge and I almost lost my mind trying to figure out how to get these buttons working! I’ll take a break for now and will be back with another Devlog very soon! This will most probably be one of the last few Devlogs before the first Ship!
Devlog - 4 Aw man, I forgot to post a devlog againnnnnn! Anyways, I’ve now ported the /unscramble and /guessthenumber commands to ~/SLAIR now! Creating both of these commands was a challenge and I had to utilize Gemini 3.1 Pro (High) in Antigravity to get it working. The main challenge I faced was to make the modals open upon a button click and work exactly how modals do in Discord. Also, ignore the stuff I covered with red, those responses were just for testing what works and what bugs there are which I need to fix. => This is the last Devlog! I’ll NOT be adding the nim Mini Game to ~/SLAIR for now.
Devlog - 5 I don’t remember what exactly I did but these 32 mins weren’t logged. What I do remember: I had worked on troubleshooting the bot and fixing errors / bugs in the code as well as writing the README.md file where most of this 32 minutes went.
Ships:
~/SLAIR is now LIVE! What is ~/SLAIR ? ~/SLAIR is a free-to-use Slack Bot packed with mini-games and a few things you probably didn’t know you needed! Where does the name ~/SLAIR come from? The name ~/SLAIR comes from my other project ~/KLAIR which was a Discord Bot. As this bot is similar to ~/KLAIR in features but for Slack instead of Discord, I’ve decided to name it ~/SLAIR . Features: ~/SLAIR is designed to be a small, fun, free-to-use bot that aims to add a bunch of entertaining features. Mini Games: /slair-coinflip Flip a coin /slair-guessthenumber Try to guess the number /slair-rps Challenge the bot /slair-unscramble Unscramble the word Other Commands: /slair-8ball Ask the magic 8-ball /slair-cat Get a random cat /slair-dog Get a random dog /slair-cryptoprice Check cryptocurrency prices /slair-uselessfact Receive a completely useless fact AI Usage: Used Gemini 3.1 Pro (High) in Antigravity to fix errors and bugs in the code which I couldn't figure out how to solve. AI was primarily used to debug /slair-unscramble and /slair-guessthenumber commands as I couldn't figure out how to open modals upon clicking a button....
|
1793324966.3803997
|
1793411366.3803997
|
|
14453
|
My awesome macropad! by @Dann | Stardance
|
Dann
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @Dann | Stardance
|
1792806565.641483
|
1793411365.641483
|
|
59533
|
slakie by @IcedThrower_95 | Stardance
|
IcedThrower_95
|
1
|
10.71
|
48
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-11T10:32:16Z", "hours": 8.0, "multiplier": 6.23, "payout": 48, "blessing": "neutral", "text": "What did you make? I built Slackie—a multi-purpose Slack bot packed with 10 fully functional slash commands! I wanted to make something that wasn’t just a simple text responder, so I integrated multiple APIs to make it genuinely useful and fun. It features a Gemini 3.8 Flash AI assistant that can browse the web, a currency converter, a math expression evaluator, a QR code generator, and even a command that fetches the exact countdown and details for the next Formula 1 race. What was challenging? Trying to get the currency converter to accept flexible inputs (like “1299 USD to INR” vs just “USD to INR”) without completely breaking the code took a lot of trial and error. What am I proud of? The F1 Command: As a massive Formula 1 fan, building a custom /my-slakie-f1 command that tracks the next Grand Prix weekend using the Jolpica API was super satisfying. I am really proud that I figured out the Linux service file stuff. Slackie is now running flawlessly 24/7 on my own hardware. What should you know before testing? To talk to the AI, use /my-slakie-gemini [your question]. It has Google Search grounding enabled, so you can ask it about current events or tech news! Try /my-slakie-currency 100 USD to INR to test the live exchange rates. Type /my-slakie-help to see the full list of all 10 commands you can play with. Make sure you use the exact /my-slakie-… prefix so it doesn’t collide with other bots in the workspace! Example Here in the image attached shows the working of the /my-slakie-gemini [Question] command the model intellingently uses web search to get the latest information if its system instrutction is outdated", "repo": "https://github.com/IcedThrower95/slakie_bot", "demo": "https://hackclub.enterprise.slack.com/archives/C0C16D3SXCK"}]...
|
[{"post_id": 72632, "ts": "202 [{"post_id": 72632, "ts": "2026-09-23T12:01:07Z", "hours": 1.6297, "text": "wrote the code my self from scratch again, as the reviewers were flagging it as “more than 30% usage of AI”"}, {"post_id": 66636, "ts": "2026-09-12T14:20:36Z", "hours": 1.0817, "text": "final devlog after review. Today I edited some of my codebase to make it more cleaner rather than having it clustered.I added a few comments as well along the way"}, {"post_id": 65887, "ts": "2026-09-11T10:18:56Z", "hours": 0.2964, "text": "at last i finished the README document and also edited some code(tiny changes to make it better)"}, {"post_id": 65832, "ts": "2026-09-11T07:29:41Z", "hours": 1.0794, "text": "#final - devlog3 I have finally fixed the gemini ai integration and i have 10 fully working commands, here i have attached. It took me a lot of time to debug the Gemini AI errors. i even used AI to debug but failed unfortunately. Anyways it is now fixed and everything works. Signing off on this project"}, {"post_id": 65318, "ts": "2026-09-10T12:10:30Z", "hours": 3.1189, "text": "#devlog2 , today i completed all the commands which i wanted to integrate in my slackbot.Moreover I am trying to fix the gemini ai which i have intergrated in my slakie it keeps giving me outdated information it is unable to do a web search. I hope to fix it by the end of today"}, {"post_id": 64343, "ts": "2026-09-08T17:24:03Z", "hours": 3.2531, "text": "#devlog1, today I started working on my project Slack bot—my-slakie. At first I followed the guide and went along with the flow. After a while, I had some ideas pop up into my head, and I tried to integrate Gemini AI in the slash command, but unfortunately I was unable to get the desired result—the bot is giving outdated data; the rest of the functions are fine. I will work on debugging the problem with Gemini tomorrow. Also, I am hosting my Slack bot on my Raspberry Pi instead of using the Hack Club Nest. So yeah, that’s it for today!!"}]...
|
Title: slakie by @IcedThrower_95 | Stardance
Devl Title: slakie by @IcedThrower_95 | Stardance
Devlogs:
#devlog1, today I started working on my project Slack bot—my-slakie. At first I followed the guide and went along with the flow. After a while, I had some ideas pop up into my head, and I tried to integrate Gemini AI in the slash command, but unfortunately I was unable to get the desired result—the bot is giving outdated data; the rest of the functions are fine. I will work on debugging the problem with Gemini tomorrow. Also, I am hosting my Slack bot on my Raspberry Pi instead of using the Hack Club Nest. So yeah, that’s it for today!!
#devlog2 , today i completed all the commands which i wanted to integrate in my slackbot.Moreover I am trying to fix the gemini ai which i have intergrated in my slakie it keeps giving me outdated information it is unable to do a web search. I hope to fix it by the end of today
#final - devlog3 I have finally fixed the gemini ai integration and i have 10 fully working commands, here i have attached. It took me a lot of time to debug the Gemini AI errors. i even used AI to debug but failed unfortunately. Anyways it is now fixed and everything works. Signing off on this project
at last i finished the README document and also edited some code(tiny changes to make it better)
final devlog after review. Today I edited some of my codebase to make it more cleaner rather than having it clustered.I added a few comments as well along the way
wrote the code my self from scratch again, as the reviewers were flagging it as “more than 30% usage of AI”
Ships:
What did you make? I built Slackie—a multi-purpose Slack bot packed with 10 fully functional slash commands! I wanted to make something that wasn’t just a simple text responder, so I integrated multiple APIs to make it genuinely useful and fun. It features a Gemini 3.8 Flash AI assistant that can browse the web, a currency converter, a math expression evaluator, a QR code generator, and even a command that fetches the exact countdown and details for the next Formula 1 race. What was challenging? Trying to get the currency converter to accept flexible inputs (like “1299 USD to INR” vs just “USD to INR”) without completely breaking the code took a lot of trial and error. What am I proud of? The F1 Command: As a massive Formula 1 fan, building a custom /my-slakie-f1 command that tracks the next Grand Prix weekend using the Jolpica API was super satisfying. I am really proud that I figured out the Linux service file stuff. Slackie is now running flawlessly 24/7 on my own hardware. What should you know before testing? To talk to the AI, use /my-slakie-gemini [your question]. It has Google Search grounding enabled, so you can ask it about current events or tech news! Try /my-slakie-currency 100 USD to INR to test the live exchange rates. Type /my-slakie-help to see the full list of all 10 commands you can play with. Make sure you use the exact /my-slakie-… prefix so it doesn’t collide with other bots in the workspace! Example Here in the image attached shows the working of the /my-slakie-gemini [Question] command the model intellingently uses web search to get the latest information if its system instrutction is outdated...
|
1793324965.146307
|
1793411365.146307
|