|
17884
|
Aether by @Kvin | Stardance
|
Kvin
|
1
|
59.0
|
759
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-17T15:34:14Z", "hours": 59.0, "multiplier": 19.2, "payout": 759, "blessing": "neutral", "text": "Aether - an infinite universe, grown from a single word. Type a word and Aether builds you a whole universe: a galaxy of stars to fly through, systems to dive into, and worlds to land on and scan. Pick any planet and it turns under its own sunlight, with clouds that drift across it and shadow the ground, light glinting off its oceans, rings that throw a shadow over the globe and moons that slip behind it. Here is the strange part. There are no assets. Not one image, model or sound file anywhere in it. Every star, every world, every name, every line of lore, and even the music and the rush of each warp, are generated live from maths, from your word. It is plain HTML and a 2D canvas, no game engine and nothing to download, so it runs at 60fps in the browser, phones included. Share a link and whoever opens it lands on your exact world, in your exact universe. Try violet-tide-77 for a lava world glowing on its night side, bin-3 for a system with two suns, or just type your own name and see the one that only you have!", "repo": "https://github.com/Kvin-21/Aether", "demo": "https://kvin-21.github.io/Aether/"}]...
|
[{"post_id": 10687, "ts": "202 [{"post_id": 10687, "ts": "2026-06-17T15:29:57Z", "hours": 22.9639, "text": "Open it now and a whole galaxy drifts quietly behind the title, waiting for you. Tap the small speaker in the corner. The universe starts to sing. A slow score drifts and resolves beneath you as you fly, and every jump between stars carries its own sound. I’ve fixed the auido. There is not a single sound file in the whole project. The music, and the whoosh of each warp, are built live from oscillators and a little maths, exactly the way the stars and worlds are. Nothing here is downloaded. It is all conjured from your word. I spent this last stretch trying to break it. Zoom out as far as you like and it stays smooth. Click like a maniac and nothing trips. Y So that is the whole thing: a universe from a single word, that you can fly through, land on, scan, listen to, and hand to someone else with a link!"}, {"post_id": 9296, "ts": "2026-06-15T16:44:58Z", "hours": 14.8908, "text": "It’s live! Where there used to be a black loading screen, a whole galaxy now drifts quietly behind the title, waiting for you at https://kvin-21.github.io/Aether ! Type a word, warp in, and everything glows. Bright stars bloom and bleed light into the dark around them. Same as the first day: none of it is downloaded. Still flat 2D, still pure maths, still conjured from your word. It has just put its make-up on. This is the part where it stops being a build and starts being a place. It holds together now/ I spent this last stage trying to break it, then fixing whatever broke. Strange seeds, empty ones, ones in other alphabets, ones two hundred characters long, all land somewhere real. Zoom as far out as you like and it stays smooth. Click like a maniac and nothing trips. Your browser’s back and forward buttons move through the universe with you now. And a share link, opened cold by a stranger, rebuilds your exact world on your exact planet, every single time. So that is the whole thing: a universe from a single word, that you can fly through, land on, scan, listen to, and hand to someone else with a link. Try violet-tide-77 and watch a lava world glow on its night side. Try bin-3 for a system with two suns sharing one centre. Then type your own name, and go and see the universe that only you have. But ofcourse, there are still some bugs with the sound :("}, {"post_id": 8496, "ts": "2026-06-14T03:56:37Z", "hours": 9.5142, "text": "Now it casts shadows Look closely at the planet. That bright spot on the ocean is the sun, reflecting off the water exactly where it should, and it vanishes the instant a cloud drifts over it. Those clouds sit above the surface and throw soft shadows onto the ground below. The rings lay their own shadow across the globe. Now the surprising part, the same one as last time: none of this is 3D. There is still no GPU, no model, no texture, not one downloaded file. It is all flat 2D and pure maths, conjured from your word. It has simply learnt to pretend it has depth, and it pretends well enough that your eye stops asking. Drop onto a planet now and it is actually alive with detail. Clouds drift a touch faster than the ground turning beneath them, and they shade what passes under them. Moons now circle on their own lit paths, slipping in front of the planet and then behind it. Lava worlds, ice worlds, deserts, oceans, green terran worlds, each one scanned and flagged for whether anything could live there. The lore has grown a memory too: it reads the world’s gravity, its heat, its moons, have a different story for each. Systems are stranger than before. Some stars have a companion, two suns sharing one centre, each with its own corona. Belts of asteroids hide in the gaps between orbits. Clicking a star now is no longer a cut. The camera dives, flying you down into the star before its system opens around, and flying you back out when you leave. There is a jump-to-seed box in the corner if you want to leap straight to a particular universe, with your seed, coordinates and zoom always on show!"}, {"post_id": 7938, "ts": "2026-06-13T07:45:20Z", "hours": 11.7253, "text": "What if you could create a universe from your favourite words? What loads is a universe. Your universe. A galaxy of stars nobody has ever flown through, scattered over nebulae nobody has ever seen, because none of it existed until the moment you pressed Enter. Type a different word and the old one is gone, replaced by another entire cosmos waiting to be explored. That is Aether. And here is the part that’s surprising: there are no images in it. None. Not a single texture, model, photo or downloaded file. Every star, every ringed gas giant, every drifting smear of colour is pure maths, generated live from your word. The whole thing is light enough to run on your phone, because there is nothing to load. It is all conjured on the spot. This is the first build, and you can already travel. You start above a galaxy map, an endless field of stars you can drag and zoom through, drifting over layered clouds of gas. Each star is coloured by its real stellar class, from hot blue-white giants down to dim red dwarfs, and each carries a name. Hover one and it tells you what it is called. Pick one and you warp in, starlines streaking past. Inside a system, planets swing around their star on live orbits, rocky worlds and banded gas giants, some having rings. Choose one and you fall towards it. It turns slowly under its own sunlight, wrapped in a thin halo of atmosphere, its rings passing in front and behind. A scan panel reads out the world: radius, gravity, surface temperature, atmosphere, the length of its day, its moons, and a line or two of lore about the place. Then you can leave, and the whole universe is still sitting exactly where you left it. Every world has an address. Hit share and you get a link holding the seed and your exact position, down to the planet you were staring at. Send it and the other person opens the same cosmos, in the same spot, on the same world. Try a different name, and watch a completely different universe assemble itself. Next, I am deepening every layer: richer terrain and weather on the planets, binary stars and asteroid belts, more believable names and histories."}]...
|
Title: Aether by @Kvin | Stardance
Devlogs:
What Title: Aether by @Kvin | Stardance
Devlogs:
What if you could create a universe from your favourite words? What loads is a universe. Your universe. A galaxy of stars nobody has ever flown through, scattered over nebulae nobody has ever seen, because none of it existed until the moment you pressed Enter. Type a different word and the old one is gone, replaced by another entire cosmos waiting to be explored. That is Aether. And here is the part that’s surprising: there are no images in it. None. Not a single texture, model, photo or downloaded file. Every star, every ringed gas giant, every drifting smear of colour is pure maths, generated live from your word. The whole thing is light enough to run on your phone, because there is nothing to load. It is all conjured on the spot. This is the first build, and you can already travel. You start above a galaxy map, an endless field of stars you can drag and zoom through, drifting over layered clouds of gas. Each star is coloured by its real stellar class, from hot blue-white giants down to dim red dwarfs, and each carries a name. Hover one and it tells you what it is called. Pick one and you warp in, starlines streaking past. Inside a system, planets swing around their star on live orbits, rocky worlds and banded gas giants, some having rings. Choose one and you fall towards it. It turns slowly under its own sunlight, wrapped in a thin halo of atmosphere, its rings passing in front and behind. A scan panel reads out the world: radius, gravity, surface temperature, atmosphere, the length of its day, its moons, and a line or two of lore about the place. Then you can leave, and the whole universe is still sitting exactly where you left it. Every world has an address. Hit share and you get a link holding the seed and your exact position, down to the planet you were staring at. Send it and the other person opens the same cosmos, in the same spot, on the same world. Try a different name, and watch a completely different universe assemble itself. Next, I am deepening every layer: richer terrain and weather on the planets, binary stars and asteroid belts, more believable names and histories.
Now it casts shadows Look closely at the planet. That bright spot on the ocean is the sun, reflecting off the water exactly where it should, and it vanishes the instant a cloud drifts over it. Those clouds sit above the surface and throw soft shadows onto the ground below. The rings lay their own shadow across the globe. Now the surprising part, the same one as last time: none of this is 3D. There is still no GPU, no model, no texture, not one downloaded file. It is all flat 2D and pure maths, conjured from your word. It has simply learnt to pretend it has depth, and it pretends well enough that your eye stops asking. Drop onto a planet now and it is actually alive with detail. Clouds drift a touch faster than the ground turning beneath them, and they shade what passes under them. Moons now circle on their own lit paths, slipping in front of the planet and then behind it. Lava worlds, ice worlds, deserts, oceans, green terran worlds, each one scanned and flagged for whether anything could live there. The lore has grown a memory too: it reads the world’s gravity, its heat, its moons, have a different story for each. Systems are stranger than before. Some stars have a companion, two suns sharing one centre, each with its own corona. Belts of asteroids hide in the gaps between orbits. Clicking a star now is no longer a cut. The camera dives, flying you down into the star before its system opens around, and flying you back out when you leave. There is a jump-to-seed box in the corner if you want to leap straight to a particular universe, with your seed, coordinates and zoom always on show!
It’s live! Where there used to be a black loading screen, a whole galaxy now drifts quietly behind the title, waiting for you at https://kvin-21.github.io/Aether ! Type a word, warp in, and everything glows. Bright stars bloom and bleed light into the dark around them. Same as the first day: none of it is downloaded. Still flat 2D, still pure maths, still conjured from your word. It has just put its make-up on. This is the part where it stops being a build and starts being a place. It holds together now/ I spent this last stage trying to break it, then fixing whatever broke. Strange seeds, empty ones, ones in other alphabets, ones two hundred characters long, all land somewhere real. Zoom as far out as you like and it stays smooth. Click like a maniac and nothing trips. Your browser’s back and forward buttons move through the universe with you now. And a share link, opened cold by a stranger, rebuilds your exact world on your exact planet, every single time. So that is the whole thing: a universe from a single word, that you can fly through, land on, scan, listen to, and hand to someone else with a link. Try violet-tide-77 and watch a lava world glow on its night side. Try bin-3 for a system with two suns sharing one centre. Then type your own name, and go and see the universe that only you have. But ofcourse, there are still some bugs with the sound :(
Open it now and a whole galaxy drifts quietly behind the title, waiting for you. Tap the small speaker in the corner. The universe starts to sing. A slow score drifts and resolves beneath you as you fly, and every jump between stars carries its own sound. I’ve fixed the auido. There is not a single sound file in the whole project. The music, and the whoosh of each warp, are built live from oscillators and a little maths, exactly the way the stars and worlds are. Nothing here is downloaded. It is all conjured from your word. I spent this last stretch trying to break it. Zoom out as far as you like and it stays smooth. Click like a maniac and nothing trips. Y So that is the whole thing: a universe from a single word, that you can fly through, land on, scan, listen to, and hand to someone else with a link!
Ships:
Aether - an infinite universe, grown from a single word. Type a word and Aether builds you a whole universe: a galaxy of stars to fly through, systems to dive into, and worlds to land on and scan. Pick any planet and it turns under its own sunlight, with clouds that drift across it and shadow the ground, light glinting off its oceans, rings that throw a shadow over the globe and moons that slip behind it. Here is the strange part. There are no assets. Not one image, model or sound file anywhere in it. Every star, every world, every name, every line of lore, and even the music and the rush of each warp, are generated live from maths, from your word. It is plain HTML and a 2D canvas, no game engine and nothing to download, so it runs at 60fps in the browser, phones included. Share a link and whoever opens it lands on your exact world, in your exact universe. Try violet-tide-77 for a lava world glowing on its night side, bin-3 for a system with two suns, or just type your own name and see the one that only you have!...
|
1792878521.102259
|
1793742521.102259
|
|
19174
|
PitWall by @iva33 | Stardance
|
iva33
|
0
|
59.0
|
0
|
[]
|
[{"post_id": 37297, "ts": "202 [{"post_id": 37297, "ts": "2026-07-29T22:10:18Z", "hours": 8.0, "text": "PitWall Devlog 12 Rivalry Report, Circuit Evolution and Reliability Tracker What I built Rivalry Report Card get_rivalry_report combines session pace, consistency , and career h2h across circuits and years and puts it all together, chart_rivalry_report shows the two side by side using make_subplots Multi-Year Circuit Evolution get_circuit_evolution loops get_circuit_dna for a range of years for one circuit and then tracks how top speed and average corner speed change over time although when testing it you might see a spike somewhere which probably means that it was affected by rain Reliability/DNF Tracker get_reliability_tracker takes a season and tallies each driver’s finishing status per race into finishes, DNFs, and other non-finishes (DNS/DSQ or NC) Problems I hit Forgot to fix the lap filtering properly and it did ruin the consistency in the rivalry report function because it was a lap affected by traffic"}, {"post_id": 36062, "ts": "2026-07-27T22:16:37Z", "hours": 3.0, "text": "PitWall Devlog 10 Mini-Sector Dominance and Lap 1 Analysis What I built Mini-Sector Dominance Heatmap get_minisector_dominance splits a lap and figures out which driver had the highest average speed in each one chart_minisector_dominance shows it Lap 1 Analysis get_lap1_analysis compares grid position to position at the end of lap 1 to show how many places a driver gained after the start and the first lap as a whole basically chart_lap1_analysis shows it Anyway this is from the Hungarian gp which was last week:"}, {"post_id": 35824, "ts": "2026-07-27T14:44:21Z", "hours": 4.0, "text": "PitWall Devlog 9 Fuel Load Estimator and Undercut Calculator What I built Fuel Load Effect Estimator get_fuel_effect estimates how much lap time a driver gains from burning off fuel across a race, FastF1 doesn’t have a fuel sensor data, so this is an estimate so it’s not as precise as the actual data chart_fuel_effect compares the estimated fuel effect for a few drivers Undercut/Overcut Effectiveness Calculator get_undercut_effectiveness checks whether pitting earlier than a rival actually gained track position or gave them an advantage, finds when each driver pits, confirms driver1 actually pitted first, measures the time gap between them the lap before driver1 stops, then measures it again a few laps after the rival has also boxed, and the difference between those two numbers tells if the undercut worked although you won’t see this every race actually took me some time to think of an example so that i could test the function and it’s not always effective as you will have older tyres then chart_undercut_effectiveness shows the before/after gap"}, {"post_id": 35167, "ts": "2026-07-26T12:49:52Z", "hours": 5.0, "text": "PitWall Devlog 8 Tyre Strategy, and Corner Speeds What I built Tyre Strategy Comparison get_tyre_strategy takes a driver’s laps by stint and shows the used compound (medium, soft, hard, inter and so on) , start lap, end lap, and stint length. chart_tyre_strategy shows it compound by compound and also uses the tyre colors Corner Speed Analysis get_corner_speeds reuses the same logic from mistake detection, but instead of finding the nearest corner to one point, it finds the minimum speed near the apex chart_corner_speeds compares multiple drivers’ apex speed corner by corner for a quali lap also i started working on a fuel load estimator using TyreLife"}, {"post_id": 33585, "ts": "2026-07-23T17:03:58Z", "hours": 5.0, "text": "PitWall Devlog 7 New functions: DRS Effect Analyzer get_drs_effect checks where drs was used in a lap basically when the rear wing was open (drs zones) and calculates the speed gain within each one, entry speed vs peak Lap Time Delta Chart get_lap_delta compares two drivers’ laps by interpolating both onto the same distance grid using then subtracts one from the other at every point to get a time gap across the lap. Driver & Constructor Standings get_driver_standings and get_constructor_standings basically show the total points accumulated per team and per driver after a certain race A small issue the drs effect function doesn’t work for this year’s races because of the regulation changes and there isn’t exactly drs now but active aero but works for other years"}, {"post_id": 32549, "ts": "2026-07-21T20:07:15Z", "hours": 4.0, "text": "PitWall Devlog 6 - Championship Battle, Overtakes, and Track Evolution What I built Championship Battle Tracker get_championship_battle tracks points for a list of drivers during a season round by round and adds up the points also, tries to load a Sprint session for the same race if it exists it adds those points too, if not it just moves on since most weekends don’t have one. chart_championship_battle is the chart that shows it and it uses the team colors like the other charts and makes the line dashed if there are teammates Overtake Analyzer get_overtakes looks at every position swap between consecutive laps , for each pair of laps it takes everyone’s position and checks every pair of drivers to see if their order flipped, also i had to exclude inlaps and outlaps since when you pit usually you drop many positions get_overtake_summary is just a counter for the overtakes chart_overtakes shows it Track Evolution get_track_evolution looks at how the track itself gets faster as a session goes on, takes every driver’s laps together, sorts them by LapStartTime then tracks a running best lap and an average pace over a window chart_track_evolution visualises it Problems I hit i forgot to exclude inlaps basically the first lap out of the box when you warm the tires for the track_evolution function"}, {"post_id": 31795, "ts": "2026-07-20T13:54:59Z", "hours": 9.0, "text": "PitWall Devlog 5 Weather, Degradation, and Historical Performance What I built Weather Performance get_weather compares average qualifying position for a list of drivers across wet sessions vs. dry sessions and calculates a wet_advantage which is basically just dry avg minus wet avg so a positive number means someone performs better in the rain rather than in the dry. chart_weather visualises it Tire Degradation get_tire_degradation takes each stint and calculates lap-time loss per lap of tyre age. The laps are first filtered so that there are no inaccurate laps and that means excluding laps where there was a red flag, yellow/double yellows, exclude inlaps and outlaps and also if there was a safety car/vsc and also TyreLife > 2 to exclude also the first 2 laps of the stint where in general you have to nurse the tires to warm them up. chart_tire_degradation just visualises it. Teammate Gap get_teammate_gap compares best qualifying times between two teammates across a season. Because not every driver reaches Q3, it falls back Q3 - Q2 - Q1 to find each driver’s actual best time for that quali session. chart_teammate_gap visualises it, red or cyan depending on who was faster. Historical Performance get_fastest_lap_history finds the fastest lap from every quali session since 2018 as that’s how far the data goes. get_driver_circuit_stats does the same thing but for a driver, pulling qualifying position, race position, fastest lap, and finishing result for each year at a given circuit. Sector Times and Pit Stops get_sector_improvement breaks a driver’s sector times down by stint and tyre age, using the same filtering to exclude some laps as the degradation function, get_pitstop_performance calculates stop duration by matching a driver’s pit-in lap to their next pit-out lap, discarding anything under 15s or over 60s since those aren’t really representative. Career Head-to-Head get_h2h_career compares two drivers’ qualifying head-to-head win rate at specific circuits across multiple years, returns a win percentage per location. chart_h2h_career again visualises it. Problems I hit First pass on pit stop duration had no bounds so I was getting stops showing as 3s and 140s which were basically laps flagged as pit laps during safety car periods which is a lot shorter so I added the 15–60s filter also in general I had issues with how tidy the charts looked for example when looking at the stints, each stint is shown with the color of the compound so yellow for medium and so on and for some races which aren’t one stoppers you often use one compound more than once so I lowered the opacity if there is a second stint on the same compound, it’s not a perfect solution but it works"}, {"post_id": 29449, "ts": "2026-07-16T12:16:32Z", "hours": 6.0, "text": "PitWall Devlog 4 Circuit DNA and Qualifying Analysis What I built Qualifying Analysis get_quali_improvement tracks a driver’s best lap time across Q1, Q2 and Q3 using session.results which returns the results from the three sessions. chart_quali_improvement calculates each driver’s progression between 2 sessions (Q1 and Q2 and so on) get_perfect_lap gets its own chart chart_perfect_lap shows the perfect theoretical lap vs actual best lap where the best lap is the three fastest sectors overall per driver Circuit DNA It classifies a circuit based on its traits (power track, high/low df, high/low drag and so on) get_circuit_dna analyzes the fastest lap telemetry from any session and extracts 6 metrics: full throttle percentage, braking percentage, top speed, average corner speed, low speed corner percentage and high speed cornering percentage. classify_circuit uses those metrics to label a circuit as High Speed, Power Track, High Downforce, Stop/Go or Balanced. Tested across a few circuits as well chart_circuit_dna shows a radar chart overlaying multiple circuits so you can visually compare their personalities get_team_circuit_affinity and get_driver_circuit_affinity calculate average qualifying positions per team and driver based on circuit type Results Silverstone: High Speed — 65% full throttle, 162 km/h avg corner speed Monaco: High Downforce — 34% low speed corners, 27% braking ANT is the strongest qualifier across all circuit types in 2026 Mercedes dominant on Balanced circuits, Ferrari strong on High Speed Problems I hit FastF1 doesn’t support Q1/Q2/Q3 as separate session types so i had to use session.results which has cleaner segment times Circuit classifier kept misclassifying Silverstone as Power Track in the if/elif part of the code Team affinity chart showed each team 3 times in the legend fixed it with dict.fromkeys() to remove the duplicates"}, {"post_id": 27182, "ts": "2026-07-12T14:46:12Z", "hours": 8.0, "text": "PitWall Devlog 3 — Mistake Detector What I built Mistake Detector it compares a driver’s telemetry lap by lap at the same point on track. FastF1 gives car data sampled every few milliseconds but the points aren’t evenly spaced by distance, so I used scipy to interpolate both laps onto a common grid every 10 meters, then subtracted one speed trace from the other to find where time was lost. detect_mistakes finds every zone where speed dropped more than 5 km/h, calculates time lost using distance ÷ speed physics, and maps each mistake to the nearest turn number using FastF1’s circuit info. chart_track_mistakes draws the full circuit map colored by speed using matplotlib, green for fast, red for slow and with mistake zones highlighted and labeled with turn number and time lost. get_perfect_lap finds the best individual three sectors from all of a driver’s qualifying laps and combines them into the theoretical fastest possible lap, showing how much time they left on the table. chart_perfect_lap visualizes this as a grouped bar chart, green for perfect lap sectors, driver’s color for actual best lap. Results from British GP 2026 qualifying NOR had 5 mistake zones totalling 0.77 seconds lost between his best and second best lap. Biggest mistake at Turn 18 — 22.7 km/h speed loss, 0.31 seconds gone. Problems I hit Interpolation was the hardest concept to understand and implement, two laps have telemetry at different distance points so you can’t compare directly. scipy ’s interp1d solved it Had return fig accidentally inside a for loop in chart_race_pace and only the first stint would show up Also needed to fix charts where you’re comparing 2 drivers from the same team because they have the same color which makes the chart unreadable Also done this session Set up GitHub and pushed the code so far Changed the color scheme for the charts Fixed teammate differentiation across the charts"}, {"post_id": 20240, "ts": "2026-07-01T19:47:12Z", "hours": 4.0, "text": "PitWall Devlog 2 — Charts and Visualization Spent this week visualising the data itself and turning it into interactive charts. What I built chart_race_pace shows a driver’s lap times across the entire race with each stint colored by tire compound. Pit laps are shown as grey X markers so you can see the inlaps and outlaps. chart_head_to_head overlays two drivers’ pace on the same chart using their official team colors pulled directly from the session data. When comparing teammates who share a color, one line becomes dashed automatically. chart_consistency compares multiple drivers’ consistency scores as bars. A lower score means that the driver is more consistent. chart_quali_comparison breaks down each driver’s best qualifying lap into the three sectors side by side, instantly shows where one driver gained or lost time compared to another. chart_position_change tracks each driver’s position lap by lap through the race, starting from their actual grid position as lap 0 so position gains and losses are accurate. Problems I hit The position chart was showing drivers starting from the wrong position because FastF1 doesn’t always record lap 1 position data cleanly. Fixed it by pulling the grid position directly from the session info and showing it as lap 0. The teammate color logic also had to be rethought twice before landing on a simple used_colors list approach that works cleanly."}, {"post_id": 10803, "ts": "2026-06-17T18:40:43Z", "hours": 3.0, "text": "Devlog 1! As an f1 fan and motosports fan in general, I wanted to create something that I’m going to use myself pretty often and work with data that genuinely interests me which is why I’m creating PitWall, a website that analyses data using FastF1, an open source F1 data library. The main idea is to pull real F1 data and let people analyze race pace, quali laps, driver mistakes, simulate alternate race strategies. I’m also going to be using NASA atmospheric data to correlate weather conditions with lap time performance. Started off by working on analyze.py which for now has 5 functions as the core of the project: get_clean_lap which filters out sc, vsc laps, track limits and such get_race_pace calculates the average race pace per stint get_head_to_head combines 2 drivers’ laps into one table for comparison get_consistency_score uses standard deviation to measure the consistency get_h2h_summary compares 2 drivers’ pace and tells which one was faster I’ve also started working on charts.py to set up the dark F1 color theme and pulled the official team colors from the session data. I tested everything in the terminal, VER vs LEC in Australia 2023 showed that Verstappen’s pace was 1.667 seconds per laps faster on average. This here is Hamilton and Verstappen’s race pace in Mexico, 2022:"}]...
|
Title: PitWall by @iva33 | Stardance
Devlogs:
Dev Title: PitWall by @iva33 | Stardance
Devlogs:
Devlog 1! As an f1 fan and motosports fan in general, I wanted to create something that I’m going to use myself pretty often and work with data that genuinely interests me which is why I’m creating PitWall, a website that analyses data using FastF1, an open source F1 data library. The main idea is to pull real F1 data and let people analyze race pace, quali laps, driver mistakes, simulate alternate race strategies. I’m also going to be using NASA atmospheric data to correlate weather conditions with lap time performance. Started off by working on analyze.py which for now has 5 functions as the core of the project: get_clean_lap which filters out sc, vsc laps, track limits and such get_race_pace calculates the average race pace per stint get_head_to_head combines 2 drivers’ laps into one table for comparison get_consistency_score uses standard deviation to measure the consistency get_h2h_summary compares 2 drivers’ pace and tells which one was faster I’ve also started working on charts.py to set up the dark F1 color theme and pulled the official team colors from the session data. I tested everything in the terminal, VER vs LEC in Australia 2023 showed that Verstappen’s pace was 1.667 seconds per laps faster on average. This here is Hamilton and Verstappen’s race pace in Mexico, 2022:
PitWall Devlog 2 — Charts and Visualization Spent this week visualising the data itself and turning it into interactive charts. What I built chart_race_pace shows a driver’s lap times across the entire race with each stint colored by tire compound. Pit laps are shown as grey X markers so you can see the inlaps and outlaps. chart_head_to_head overlays two drivers’ pace on the same chart using their official team colors pulled directly from the session data. When comparing teammates who share a color, one line becomes dashed automatically. chart_consistency compares multiple drivers’ consistency scores as bars. A lower score means that the driver is more consistent. chart_quali_comparison breaks down each driver’s best qualifying lap into the three sectors side by side, instantly shows where one driver gained or lost time compared to another. chart_position_change tracks each driver’s position lap by lap through the race, starting from their actual grid position as lap 0 so position gains and losses are accurate. Problems I hit The position chart was showing drivers starting from the wrong position because FastF1 doesn’t always record lap 1 position data cleanly. Fixed it by pulling the grid position directly from the session info and showing it as lap 0. The teammate color logic also had to be rethought twice before landing on a simple used_colors list approach that works cleanly.
PitWall Devlog 3 — Mistake Detector What I built Mistake Detector it compares a driver’s telemetry lap by lap at the same point on track. FastF1 gives car data sampled every few milliseconds but the points aren’t evenly spaced by distance, so I used scipy to interpolate both laps onto a common grid every 10 meters, then subtracted one speed trace from the other to find where time was lost. detect_mistakes finds every zone where speed dropped more than 5 km/h, calculates time lost using distance ÷ speed physics, and maps each mistake to the nearest turn number using FastF1’s circuit info. chart_track_mistakes draws the full circuit map colored by speed using matplotlib, green for fast, red for slow and with mistake zones highlighted and labeled with turn number and time lost. get_perfect_lap finds the best individual three sectors from all of a driver’s qualifying laps and combines them into the theoretical fastest possible lap, showing how much time they left on the table. chart_perfect_lap visualizes this as a grouped bar chart, green for perfect lap sectors, driver’s color for actual best lap. Results from British GP 2026 qualifying NOR had 5 mistake zones totalling 0.77 seconds lost between his best and second best lap. Biggest mistake at Turn 18 — 22.7 km/h speed loss, 0.31 seconds gone. Problems I hit Interpolation was the hardest concept to understand and implement, two laps have telemetry at different distance points so you can’t compare directly. scipy ’s interp1d solved it Had return fig accidentally inside a for loop in chart_race_pace and only the first stint would show up Also needed to fix charts where you’re comparing 2 drivers from the same team because they have the same color which makes the chart unreadable Also done this session Set up GitHub and pushed the code so far Changed the color scheme for the charts Fixed teammate differentiation across the charts
PitWall Devlog 4 Circuit DNA and Qualifying Analysis What I built Qualifying Analysis get_quali_improvement tracks a driver’s best lap time across Q1, Q2 and Q3 using session.results which returns the results from the three sessions. chart_quali_improvement calculates each driver’s progression between 2 sessions (Q1 and Q2 and so on) get_perfect_lap gets its own chart chart_perfect_lap shows the perfect theoretical lap vs actual best lap where the best lap is the three fastest sectors overall per driver Circuit DNA It classifies a circuit based on its traits (power track, high/low df, high/low drag and so on) get_circuit_dna analyzes the fastest lap telemetry from any session and extracts 6 metrics: full throttle percentage, braking percentage, top speed, average corner speed, low speed corner percentage and high speed cornering percentage. classify_circuit uses those metrics to label a circuit as High Speed, Power Track, High Downforce, Stop/Go or Balanced. Tested across a few circuits as well chart_circuit_dna shows a radar chart overlaying multiple circuits so you can visually compare their personalities get_team_circuit_affinity and get_driver_circuit_affinity calculate average qualifying positions per team and driver based on circuit type Results Silverstone: High Speed — 65% full throttle, 162 km/h avg corner speed Monaco: High Downforce — 34% low speed corners, 27% braking ANT is the strongest qualifier across all circuit types in 2026 Mercedes dominant on Balanced circuits, Ferrari strong on High Speed Problems I hit FastF1 doesn’t support Q1/Q2/Q3 as separate session types so i had to use session.results which has cleaner segment times Circuit classifier kept misclassifying Silverstone as Power Track in the if/elif part of the code Team affinity chart showed each team 3 times in the legend fixed it with dict.fromkeys() to remove the duplicates
PitWall Devlog 5 Weather, Degradation, and Historical Performance What I built Weather Performance get_weather compares average qualifying position for a list of drivers across wet sessions vs. dry sessions and calculates a wet_advantage which is basically just dry avg minus wet avg so a positive number means someone performs better in the rain rather than in the dry. chart_weather visualises it Tire Degradation get_tire_degradation takes each stint and calculates lap-time loss per lap of tyre age. The laps are first filtered so that there are no inaccurate laps and that means excluding laps where there was a red flag, yellow/double yellows, exclude inlaps and outlaps and also if there was a safety car/vsc and also TyreLife > 2 to exclude also the first 2 laps of the stint where in general you have to nurse the tires to warm them up. chart_tire_degradation just visualises it. Teammate Gap get_teammate_gap compares best qualifying times between two teammates across a season. Because not every driver reaches Q3, it falls back Q3 - Q2 - Q1 to find each driver’s actual best time for that quali session. chart_teammate_gap visualises it, red or cyan depending on who was faster. Historical Performance get_fastest_lap_history finds the fastest lap from every quali session since 2018 as that’s how far the data goes. get_driver_circuit_stats does the same thing but for a driver, pulling qualifying position, race position, fastest lap, and finishing result for each year at a given circuit. Sector Times and Pit Stops get_sector_improvement breaks a driver’s sector times down by stint and tyre age, using the same filtering to exclude some laps as the degradation function, get_pitstop_performance calculates stop duration by matching a driver’s pit-in lap to their next pit-out lap, discarding anything under 15s or over 60s since those aren’t really representative. Career Head-to-Head get_h2h_career compares two drivers’ qualifying head-to-head win rate at specific circuits across multiple years, returns a win percentage per location. chart_h2h_career again visualises it. Problems I hit First pass on pit stop duration had no bounds so I was getting stops showing as 3s and 140s which were basically laps flagged as pit laps during safety car periods which is a lot shorter so I added the 15–60s filter also in general I had issues with how tidy the charts looked for example when looking at the stints, each stint is shown with the color of the compound so yellow for medium and so on and for some races which aren’t one stoppers you often use one compound more than once so I lowered the opacity if there is a second stint on the same compound, it’s not a perfect solution but it works
PitWall Devlog 6 - Championship Battle, Overtakes, and Track Evolution What I built Championship Battle Tracker get_championship_battle tracks points for a list of drivers during a season round by round and adds up the points also, tries to load a Sprint session for the same race if it exists it adds those points too, if not it just moves on since most weekends don’t have one. chart_championship_battle is the chart that shows it and it uses the team colors like the other charts and makes the line dashed if there are teammates Overtake Analyzer get_overtakes looks at every position swap between consecutive laps , for each pair of laps it takes everyone’s position and checks every pair of drivers to see if their order flipped, also i had to exclude inlaps and outlaps since when you pit usually you drop many positions get_overtake_summary is just a counter for the overtakes chart_overtakes shows it Track Evolution get_track_evolution looks at how the track itself gets faster as a session goes on, takes every driver’s laps together, sorts them by LapStartTime then tracks a running best lap and an average pace over a window chart_track_evolution visualises it Problems I hit i forgot to exclude inlaps basically the first lap out of the box when you warm the tires for the track_evolution function
PitWall Devlog 7 New functions: DRS Effect Analyzer get_drs_effect checks where drs was used in a lap basically when the rear wing was open (drs zones) and calculates the speed gain within each one, entry speed vs peak Lap Time Delta Chart get_lap_delta compares two drivers’ laps by interpolating both onto the same distance grid using then subtracts one from the other at every point to get a time gap across the lap. Driver & Constructor Standings get_driver_standings and get_constructor_standings basically show the total points accumulated per team and per driver after a certain race A small issue the drs effect function doesn’t work for this year’s races because of the regulation changes and there isn’t exactly drs now but active aero but works for other years
PitWall Devlog 8 Tyre Strategy, and Corner Speeds What I built Tyre Strategy Comparison get_tyre_strategy takes a driver’s laps by stint and shows the used compound (medium, soft, hard, inter and so on) , start lap, end lap, and stint length. chart_tyre_strategy shows it compound by compound and also uses the tyre colors Corner Speed Analysis get_corner_speeds reuses the same logic from mistake detection, but instead of finding the nearest corner to one point, it finds the minimum speed near the apex chart_corner_speeds compares multiple drivers’ apex speed corner by corner for a quali lap also i started working on a fuel load estimator using TyreLife
PitWall Devlog 9 Fuel Load Estimator and Undercut Calculator What I built Fuel Load Effect Estimator get_fuel_effect estimates how much lap time a driver gains from burning off fuel across a race, FastF1 doesn’t have a fuel sensor data, so this is an estimate so it’s not as precise as the actual data chart_fuel_effect compares the estimated fuel effect for a few drivers Undercut/Overcut Effectiveness Calculator get_undercut_effectiveness checks whether pitting earlier than a rival actually gained track position or gave them an advantage, finds when each driver pits, confirms driver1 actually pitted first, measures the time gap between them the lap before driver1 stops, then measures it again a few laps after the rival has also boxed, and the difference between those two numbers tells if the undercut worked although you won’t see this every race actually took me some time to think of an example so that i could test the function and it’s not always effective as you will have older tyres then chart_undercut_effectiveness shows the before/after gap
PitWall Devlog 10 Mini-Sector Dominance and Lap 1 Analysis What I built Mini-Sector Dominance Heatmap get_minisector_dominance splits a lap and figures out which driver had the highest average speed in each one chart_minisector_dominance shows it Lap 1 Analysis get_lap1_analysis compares grid position to position at the end of lap 1 to show how many places a driver gained after the start and the first lap as a whole basically chart_lap1_analysis shows it Anyway this is from the Hungarian gp which was last week:
PitWall Devlog 12 Rivalry Report, Circuit Evolution and Reliability Tracker What I built Rivalry Report Card get_rivalry_report combines session pace, consistency , and career h2h across circuits and years and puts it all together, chart_rivalry_report shows the two side by side using make_subplots Multi-Year Circuit Evolution get_circuit_evolution loops get_circuit_dna for a range of years for one circuit and then tracks how top speed and average corner speed change over time although when testing it you might see a spike somewhere which probably means that it was affected by rain Reliability/DNF Tracker get_reliability_tracker takes a season and tallies each driver’s finishing status per race into finishes, DNFs, and other non-finishes (DNS/DSQ or NC) Problems I hit Forgot to fix the lap filtering properly and it did ruin the consistency in the rivalry report function because it was a lap affected by traffic...
|
1792914876.8261998
|
1793778876.8261998
|
|
20695
|
Deliverance by @CinnamonRoll | Stardance
|
CinnamonRoll
|
1
|
59.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-21T03:19:19Z", "hours": 59.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a Minecraft mod based on stories. It was quite challenging to make it in 26.2, the most recent version. Lack of documentation at the start really made it harder. I hope you find this project fun and interesting. If you playtest this, please be aware of the following: This is not perfect. There may be bugs that I did not catch. Also, I do not have a video to showcase this project. Please refer to the project README. It is still in alpha, so some features are still missing. However, school is starting and I will not have time to work on it for a while so it is going on hiatus.", "repo": "https://github.com/giantruy/deliverance-26.2-v0.1/", "demo": "https://github.com/giantruy/deliverance-26.2-v0.1/releases/tag/alpha-release-v0.1.1"}]...
|
[{"post_id": 51412, "ts": "202 [{"post_id": 51412, "ts": "2026-08-21T03:14:04Z", "hours": 0.3117, "text": "Final touches, forgot some edits earlier"}, {"post_id": 51375, "ts": "2026-08-21T01:09:57Z", "hours": 1.1003, "text": "Added final touches before shipping in alpha development stage."}, {"post_id": 46736, "ts": "2026-08-14T06:25:50Z", "hours": 1.7017, "text": "Just a bit of work, added a new cursed lectern block. It gives all mobs in a surrounding area weakness or weakness II when activated with a runestone or polished runestone"}, {"post_id": 45665, "ts": "2026-08-12T09:21:05Z", "hours": 6.12, "text": "67!!! 6 hours and 7 minutes. I have successfully implemented a new dimension and biome, the Classic Dimension and Classic Biome. Currently halfway through implementing a new Rift Key (to jump dimensions) and Blood Dropper (Undead Summoner)"}, {"post_id": 45068, "ts": "2026-08-11T10:25:03Z", "hours": 10.3769, "text": "Took me 10 hours, but I did it. Custom construct Entity with custom model, and custom altar structure. The lore is coming along well."}, {"post_id": 41144, "ts": "2026-08-05T05:15:04Z", "hours": 0.3117, "text": "Continued working on my trident entity, it hates me so much. I did get it to become loyal though"}, {"post_id": 40508, "ts": "2026-08-04T02:58:51Z", "hours": 1.3147, "text": "The trident shows up as an entity now! Next steps: loyalty, item model"}, {"post_id": 39824, "ts": "2026-08-03T02:24:58Z", "hours": 0.4808, "text": "Continued working on my trident item. I honestly have no idea what I’m doing at this moment, nothing seems to be working."}, {"post_id": 38111, "ts": "2026-07-31T10:18:01Z", "hours": 2.7208, "text": "Part of me despises minecraft modding because of how much they’ve changed from 1.20 to 26.2 😭 Currently still stuck creating a trident."}, {"post_id": 37074, "ts": "2026-07-29T15:38:01Z", "hours": 0.5522, "text": "Working on a new trident item, in the works! Unfortunately not finished yet. It has the ‘bloodletting’ curse infused!"}, {"post_id": 35828, "ts": "2026-07-27T14:51:19Z", "hours": 0.3197, "text": "Did some housekeeping on my files, renamed the Notch Apple to the King’s Apple (it’s part of the lore trust)"}, {"post_id": 35162, "ts": "2026-07-26T12:39:18Z", "hours": 2.2278, "text": "Added a music disc with a song that I felt fitting for the mod: Downed by Ketsa. https://freemusicarchive.org/music/Ketsa/concrete-flowers/downed/"}, {"post_id": 34963, "ts": "2026-07-26T02:53:41Z", "hours": 0.2953, "text": "Successfully ported to 26.2!"}, {"post_id": 34407, "ts": "2026-07-25T02:54:37Z", "hours": 0.485, "text": "Currently updating my mod to 26.2, its so hard 😭. Why do they change so much every update 😭"}, {"post_id": 33930, "ts": "2026-07-24T07:43:15Z", "hours": 0.4269, "text": "Sorry for this short devlog, I didn’t get to implement much this time. I’m adding a wolf-inspired trident to the game now, so I’ve started by adding a fang item. I also created a spawn egg for the Savage zombie I made yesterday!"}, {"post_id": 33400, "ts": "2026-07-23T09:58:32Z", "hours": 4.3242, "text": "I added a cute ’lil zombie entity! Also a new holy sword that SMITES all undead mobs. I also removed some items I deemed useless."}, {"post_id": 32885, "ts": "2026-07-22T10:34:02Z", "hours": 1.5394, "text": "I added a rendering magic circle on my custom crafting table! I went through many rendering errors, but I finally got a small magic circle rotating on my custom crafting table."}, {"post_id": 32265, "ts": "2026-07-21T10:22:07Z", "hours": 2.4778, "text": "Implemented a new STACKED golden apple item: The NOTCH APPLE!! Also created a new particle effect and particle, which will be implemented in the future."}, {"post_id": 31645, "ts": "2026-07-20T06:49:10Z", "hours": 3.6636, "text": "ADDED A CRAFTING SYSTEM AFTER HOURS OF DEBUGGING!!!"}, {"post_id": 31233, "ts": "2026-07-19T14:01:39Z", "hours": 1.1986, "text": "added a menu! custom crafting screen is now added"}, {"post_id": 31072, "ts": "2026-07-19T05:23:47Z", "hours": 2.4139, "text": "Working on adding a menu for a custom crafting table"}, {"post_id": 30041, "ts": "2026-07-17T09:38:19Z", "hours": 2.6356, "text": "Added a lore book and an electrocution damage effect that scales depending of how submerged in water you are"}, {"post_id": 13331, "ts": "2026-06-21T20:50:53Z", "hours": 1.2708, "text": "tried implementing a gui again 😭 didn’t work"}, {"post_id": 12372, "ts": "2026-06-20T06:05:48Z", "hours": 1.9528, "text": "Attemped (and failed) to add a working GUI. I got it to show up but could not get it to be able to craft."}, {"post_id": 12252, "ts": "2026-06-20T00:33:34Z", "hours": 2.4289, "text": "I added new recipes and textures! You can now upgrade diamond tools to runestone tools, with a craftable runestone upgrade template."}, {"post_id": 11829, "ts": "2026-06-19T08:25:42Z", "hours": 1.5642, "text": "Added new recipes"}, {"post_id": 11797, "ts": "2026-06-19T06:11:44Z", "hours": 1.2781, "text": "added loot tables, tried figuring out ore gen"}, {"post_id": 11149, "ts": "2026-06-18T07:18:22Z", "hours": 0.7783, "text": "Attempted adding block drops, added basic block drops"}, {"post_id": 11001, "ts": "2026-06-18T00:52:16Z", "hours": 1.6517, "text": "worked on implementing new blocks, added some block textures"}, {"post_id": 10525, "ts": "2026-06-17T08:48:39Z", "hours": 0.7611, "text": "Added some first items to the mod!! Created a plan for the story"}]...
|
Title: Deliverance by @CinnamonRoll | Stardance
D Title: Deliverance by @CinnamonRoll | Stardance
Devlogs:
Added some first items to the mod!! Created a plan for the story
worked on implementing new blocks, added some block textures
Attempted adding block drops, added basic block drops
added loot tables, tried figuring out ore gen
Added new recipes
I added new recipes and textures! You can now upgrade diamond tools to runestone tools, with a craftable runestone upgrade template.
Attemped (and failed) to add a working GUI. I got it to show up but could not get it to be able to craft.
tried implementing a gui again 😭 didn’t work
Added a lore book and an electrocution damage effect that scales depending of how submerged in water you are
Working on adding a menu for a custom crafting table
added a menu! custom crafting screen is now added
ADDED A CRAFTING SYSTEM AFTER HOURS OF DEBUGGING!!!
Implemented a new STACKED golden apple item: The NOTCH APPLE!! Also created a new particle effect and particle, which will be implemented in the future.
I added a rendering magic circle on my custom crafting table! I went through many rendering errors, but I finally got a small magic circle rotating on my custom crafting table.
I added a cute ’lil zombie entity! Also a new holy sword that SMITES all undead mobs. I also removed some items I deemed useless.
Sorry for this short devlog, I didn’t get to implement much this time. I’m adding a wolf-inspired trident to the game now, so I’ve started by adding a fang item. I also created a spawn egg for the Savage zombie I made yesterday!
Currently updating my mod to 26.2, its so hard 😭. Why do they change so much every update 😭
Successfully ported to 26.2!
Added a music disc with a song that I felt fitting for the mod: Downed by Ketsa. https://freemusicarchive.org/music/Ketsa/concrete-flowers/downed/
Did some housekeeping on my files, renamed the Notch Apple to the King’s Apple (it’s part of the lore trust)
Working on a new trident item, in the works! Unfortunately not finished yet. It has the ‘bloodletting’ curse infused!
Part of me despises minecraft modding because of how much they’ve changed from 1.20 to 26.2 😭 Currently still stuck creating a trident.
Continued working on my trident item. I honestly have no idea what I’m doing at this moment, nothing seems to be working.
The trident shows up as an entity now! Next steps: loyalty, item model
Continued working on my trident entity, it hates me so much. I did get it to become loyal though
Took me 10 hours, but I did it. Custom construct Entity with custom model, and custom altar structure. The lore is coming along well.
67!!! 6 hours and 7 minutes. I have successfully implemented a new dimension and biome, the Classic Dimension and Classic Biome. Currently halfway through implementing a new Rift Key (to jump dimensions) and Blood Dropper (Undead Summoner)
Just a bit of work, added a new cursed lectern block. It gives all mobs in a surrounding area weakness or weakness II when activated with a runestone or polished runestone
Added final touches before shipping in alpha development stage.
Final touches, forgot some edits earlier
Ships:
I made a Minecraft mod based on stories. It was quite challenging to make it in 26.2, the most recent version. Lack of documentation at the start really made it harder. I hope you find this project fun and interesting. If you playtest this, please be aware of the following: This is not perfect. There may be bugs that I did not catch. Also, I do not have a video to showcase this project. Please refer to the project README. It is still in alpha, so some features are still missing. However, school is starting and I will not have time to work on it for a while so it is going on hiatus....
|
1793001114.0843966
|
1793087514.0843966
|
|
35740
|
StudyFlow by @Nikhilsahu | Stardance
|
Nikhilsahu
|
0
|
59.0
|
0
|
[]
|
[{"post_id": 29352, "ts": "202 [{"post_id": 29352, "ts": "2026-07-16T07:33:33Z", "hours": 3.0, "text": "Started working on StudyFlow today The focus was setting up the overall application structure before adding any study features. Removed the default Next.js starter content and built the main layout with a reusable sidebar and top navigation. Spent some time making sure the layout is responsive so future modules can fit into the same structure without needing redesigns."}, {"post_id": 29403, "ts": "2026-07-16T10:22:25Z", "hours": 2.0, "text": "Continued building the dashboard interface. Worked on the overview section with reusable cards, study statistics and today’s summary. Instead of focusing on functionality, I spent time making the dashboard feel clean and easy to scan since this will be the first screen users see every day. I didn’t faced any problem till now as it was like using old project blocks to this project"}, {"post_id": 29585, "ts": "2026-07-16T16:52:58Z", "hours": 3.0, "text": "Finished the remaining dashboard widgets using placeholder data. Added upcoming exams, recent activity, study progress and quick actions to better simulate a real productivity application. The dashboard now feels complete enough to move on to actual study management features in the next phase."}, {"post_id": 29676, "ts": "2026-07-16T19:00:44Z", "hours": 0.0, "text": "Wrapped up the first part by creating the remaining application pages and connecting them through the navigation. Most of these pages currently contain placeholders, but having the routing in place will make it easier to build each feature independently without changing the overall application structure."}, {"post_id": 29948, "ts": "2026-07-17T04:15:22Z", "hours": 3.0, "text": "Started building the study management section today. Instead of jumping into task tracking immediately, I focused on giving each subject its own overview card with study progress, pending work and total study hours. The idea is to make it easier to understand where most of the time is being spent before adding more detailed planning tools."}, {"post_id": 30213, "ts": "2026-07-17T16:50:38Z", "hours": 7.0, "text": "Worked on the core task management and planning experience today. Added reusable task components with status indicators and upcoming deadlines to make the interface feel closer to a real productivity tool. Most of the work went into organizing information so students can quickly see what needs attention without feeling overwhelmed. Also finished the second phase by bringing together planning and progress tracking. Added a daily planner, study streaks, and goal tracking to create a smoother day-to-day workflow. Everything currently uses local dummy data, but the overall structure is now in place and ready to be connected with real user data in future phases."}, {"post_id": 30578, "ts": "2026-07-18T08:39:30Z", "hours": 4.0, "text": "Started working on the planning section today. Built the first version of the monthly study calendar with support for study sessions, exams and upcoming deadlines using dummy data. Most of the work went into making the calendar easy to navigate while keeping it visually clean for future planning features."}, {"post_id": 30858, "ts": "2026-07-18T20:11:08Z", "hours": 4.0, "text": "Continued improving the planning experience by adding a weekly planner and study timeline. The goal was to help students visualize their day instead of only managing individual tasks. These sections currently use local data but provide a much clearer overview of upcoming study sessions and important events.Continued improving the planning experience by adding a weekly planner and study timeline. The goal was to help students visualize their day instead of only managing individual tasks. These sections currently use local data but provide a much clearer overview of upcoming study sessions and important events."}, {"post_id": 31104, "ts": "2026-07-19T07:17:03Z", "hours": 3.0, "text": "Expanded the calendar by introducing detailed day information and upcoming activity panels. This makes it easier to see important exams, deadlines and study sessions without switching between different parts of the application. The layout now feels much closer to a complete planning workspace."}, {"post_id": 31260, "ts": "2026-07-19T15:04:34Z", "hours": 1.0, "text": "Finished this phase by refining the overall experience with subtle interface animations and visual improvements. Added lightweight background effects, smoother transitions and loading placeholders to make the application feel more polished while keeping the interface responsive and distraction-free. The focus was improving usability through small details rather than adding unnecessary visual effects."}, {"post_id": 31700, "ts": "2026-07-20T09:55:24Z", "hours": 5.0, "text": "Started working on the notes section today. The goal was to create a clean space where students can keep important study notes without making the interface feel crowded. Built the basic notes page along with reusable note cards so the layout can easily handle larger collections as more features are added later. Most of the time went into organizing the layout and making sure it stays comfortable to use on different screen sizes."}, {"post_id": 32192, "ts": "2026-07-21T06:10:16Z", "hours": 6.0, "text": "Continued improving the notes experience by focusing on how students interact with their content. Added a dedicated editor, note preview and filtering options to make switching between notes much easier. Also introduced a reusable empty state component that can be shared across different parts of the application whenever there isn’t any content to display. The notes module now feels much closer to a complete productivity feature instead of a simple text area."}, {"post_id": 32288, "ts": "2026-07-21T11:13:09Z", "hours": 4.0, "text": "Hello everyone! Welcome back to another StudyFlow update. Today’s work focused on something users usually don’t notice until it’s missing. I started adding local data persistence so the app remembers your work even after refreshing the browser. The first modules to get this are tasks and notes, since those are the features people interact with the most. It’s a small change visually, but it makes the app feel much closer to something I would actually use every day. The next step is extending the same behaviour to the remaining study modules. Thanks for reading!"}, {"post_id": 32386, "ts": "2026-07-21T15:14:29Z", "hours": 3.0, "text": "Another small StudyFlow update today. I spent some time cleaning up parts of the dashboard instead of adding completely new features. A few components now receive their data through props, which makes them easier to reuse as more study features are added later. I also started saving small user preferences, so simple things like calendar views don’t reset every time the page reloads. Nothing flashy this time, but these changes make the project much easier to build on going forward. See you in the next devlog!"}, {"post_id": 32558, "ts": "2026-07-21T20:20:25Z", "hours": 3.0, "text": "Welcome to another StudyFlow devlog. I wanted the app to feel a little more welcoming instead of dropping users straight onto the dashboard. StudyFlow now greets first-time users with a simple message explaining that everything is automatically saved on their device, so there’s no need to create an account before getting started. I also replaced the placeholder settings page with the first real version, which will eventually become the place where users can manage their study preferences. Thanks for reading!"}, {"post_id": 32873, "ts": "2026-07-22T09:58:28Z", "hours": 5.0, "text": "Hello everyone! Welcome back to another StudyFlow devlog. This time I started working on the goals section. Instead of treating goals as just another checklist, I wanted them to feel like something students can actually use to track long-term progress. I spent most of the time building the layout and reusable goal cards so future features can be added without changing the overall structure. There’s still a lot left to do, but it’s nice to finally see another major section of the application coming together. Thanks for reading!"}, {"post_id": 33030, "ts": "2026-07-22T16:17:12Z", "hours": 3.0, "text": "Hello everyone! Another quick StudyFlow update. I continued improving the goals module by making it much more interactive. Goals can now be managed more naturally, and I also introduced reusable progress bars that will be shared across different parts of the application. One thing I’ve been trying to do throughout this project is avoid building isolated components. Whenever possible, I want features to be reusable so adding new modules later becomes much easier. More analytics coming next. Thanks for reading!"}]...
|
Title: StudyFlow by @Nikhilsahu | Stardance
Devlo Title: StudyFlow by @Nikhilsahu | Stardance
Devlogs:
Hello everyone! Another quick StudyFlow update. I continued improving the goals module by making it much more interactive. Goals can now be managed more naturally, and I also introduced reusable progress bars that will be shared across different parts of the application. One thing I’ve been trying to do throughout this project is avoid building isolated components. Whenever possible, I want features to be reusable so adding new modules later becomes much easier. More analytics coming next. Thanks for reading!
Hello everyone! Welcome back to another StudyFlow devlog. This time I started working on the goals section. Instead of treating goals as just another checklist, I wanted them to feel like something students can actually use to track long-term progress. I spent most of the time building the layout and reusable goal cards so future features can be added without changing the overall structure. There’s still a lot left to do, but it’s nice to finally see another major section of the application coming together. Thanks for reading!
Welcome to another StudyFlow devlog. I wanted the app to feel a little more welcoming instead of dropping users straight onto the dashboard. StudyFlow now greets first-time users with a simple message explaining that everything is automatically saved on their device, so there’s no need to create an account before getting started. I also replaced the placeholder settings page with the first real version, which will eventually become the place where users can manage their study preferences. Thanks for reading!
Another small StudyFlow update today. I spent some time cleaning up parts of the dashboard instead of adding completely new features. A few components now receive their data through props, which makes them easier to reuse as more study features are added later. I also started saving small user preferences, so simple things like calendar views don’t reset every time the page reloads. Nothing flashy this time, but these changes make the project much easier to build on going forward. See you in the next devlog!
Hello everyone! Welcome back to another StudyFlow update. Today’s work focused on something users usually don’t notice until it’s missing. I started adding local data persistence so the app remembers your work even after refreshing the browser. The first modules to get this are tasks and notes, since those are the features people interact with the most. It’s a small change visually, but it makes the app feel much closer to something I would actually use every day. The next step is extending the same behaviour to the remaining study modules. Thanks for reading!
Continued improving the notes experience by focusing on how students interact with their content. Added a dedicated editor, note preview and filtering options to make switching between notes much easier. Also introduced a reusable empty state component that can be shared across different parts of the application whenever there isn’t any content to display. The notes module now feels much closer to a complete productivity feature instead of a simple text area.
Started working on the notes section today. The goal was to create a clean space where students can keep important study notes without making the interface feel crowded. Built the basic notes page along with reusable note cards so the layout can easily handle larger collections as more features are added later. Most of the time went into organizing the layout and making sure it stays comfortable to use on different screen sizes.
Finished this phase by refining the overall experience with subtle interface animations and visual improvements. Added lightweight background effects, smoother transitions and loading placeholders to make the application feel more polished while keeping the interface responsive and distraction-free. The focus was improving usability through small details rather than adding unnecessary visual effects.
Expanded the calendar by introducing detailed day information and upcoming activity panels. This makes it easier to see important exams, deadlines and study sessions without switching between different parts of the application. The layout now feels much closer to a complete planning workspace.
Continued improving the planning experience by adding a weekly planner and study timeline. The goal was to help students visualize their day instead of only managing individual tasks. These sections currently use local data but provide a much clearer overview of upcoming study sessions and important events.Continued improving the planning experience by adding a weekly planner and study timeline. The goal was to help students visualize their day instead of only managing individual tasks. These sections currently use local data but provide a much clearer overview of upcoming study sessions and important events.
Started working on the planning section today. Built the first version of the monthly study calendar with support for study sessions, exams and upcoming deadlines using dummy data. Most of the work went into making the calendar easy to navigate while keeping it visually clean for future planning features.
Worked on the core task management and planning experience today. Added reusable task components with status indicators and upcoming deadlines to make the interface feel closer to a real productivity tool. Most of the work went into organizing information so students can quickly see what needs attention without feeling overwhelmed. Also finished the second phase by bringing together planning and progress tracking. Added a daily planner, study streaks, and goal tracking to create a smoother day-to-day workflow. Everything currently uses local dummy data, but the overall structure is now in place and ready to be connected with real user data in future phases.
Started building the study management section today. Instead of jumping into task tracking immediately, I focused on giving each subject its own overview card with study progress, pending work and total study hours. The idea is to make it easier to understand where most of the time is being spent before adding more detailed planning tools.
Wrapped up the first part by creating the remaining application pages and connecting them through the navigation. Most of these pages currently contain placeholders, but having the routing in place will make it easier to build each feature independently without changing the overall application structure.
Finished the remaining dashboard widgets using placeholder data. Added upcoming exams, recent activity, study progress and quick actions to better simulate a real productivity application. The dashboard now feels complete enough to move on to actual study management features in the next phase.
Continued building the dashboard interface. Worked on the overview section with reusable cards, study statistics and today’s summary. Instead of focusing on functionality, I spent time making the dashboard feel clean and easy to scan since this will be the first screen users see every day. I didn’t faced any problem till now as it was like using old project blocks to this project
Started working on StudyFlow today The focus was setting up the overall application structure before adding any study features. Removed the default Next.js starter content and built the main layout with a reusable sidebar and top navigation. Spent some time making sure the layout is responsive so future modules can fit into the same structure without needing redesigns....
|
1792889487.9228706
|
1793753487.9228706
|
|
37294
|
Voxelized by @luxi | Stardance
|
luxi
|
3
|
59.0
|
594
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-06T15:25:38Z", "hours": 16.0, "multiplier": 10.96, "payout": 90, "blessing": "neutral", "text": "I’ve finished another release of the voxel engine, it’s more optimized, has volumetric clouds, light sources and procedural generation.", "repo": "https://github.com/nixuntris/Voxelized", "demo": "https://github.com/nixuntris/Voxelized/releases"}, {"ship_num": 2, "ts": "2026-09-01T15:53:27Z", "hours": 20.0, "multiplier": 13.94, "payout": 279, "blessing": "neutral", "text": "I implemented GUI, more varied scenes, reflections to the water Along with general QOL and it should be slightly faster than before. I worked on documenting the technical details as well", "repo": "https://github.com/nixuntris/Voxelized", "demo": "https://github.com/nixuntris/Voxelized/releases"}, {"ship_num": 3, "ts": "2026-08-22T00:02:33Z", "hours": 23.0, "multiplier": 11.55, "payout": 225, "blessing": "neutral", "text": "I’ve implemented a software raytracer that runs on the CPU in real time. It’s quite heavy still so a beefy system is recommended. (I use a 5950x). It uses avx2 to speed up the direction calculations along with a low level ray pass (the complete list of functionality is listed in the release description on github)", "repo": "https://github.com/nixuntris/Voxelized", "demo": "https://github.com/nixuntris/Voxelized/releases"}]...
|
[{"post_id": 77319, "ts": "202 [{"post_id": 77319, "ts": "2026-10-06T15:13:15Z", "hours": 1.5731, "text": "I implemented a chunk based acceleration tree, so that only chunks within the radius of the light get lit. Not that much. Been busy with school and studying math. I will be working on documenting the technical changes since the last blog post. Currently just releasing since a lot of hours accumulated since the last release"}, {"post_id": 68531, "ts": "2026-09-15T08:34:43Z", "hours": 3.5928, "text": "I have implemented lights, currently they are pixel pixel. Not going with per voxel probes, too expensive. Probably gonna do irradiance 8^3 probes. Very simple not yet optimized"}, {"post_id": 64404, "ts": "2026-09-08T19:12:52Z", "hours": 2.1897, "text": "I’ll let the video speak for itself"}, {"post_id": 63546, "ts": "2026-09-07T13:52:14Z", "hours": 2.6008, "text": "I’ve implemented gradual world gen, so instead of generating all at once they get generated on demand. Currently it’s still constrained to a specific size but I will fix it by changing to a hashmap. I need to also implement chunk prioritization for better experience and multi thread it better."}, {"post_id": 62385, "ts": "2026-09-05T18:31:27Z", "hours": 6.4331, "text": "Clouds and more optimizations. I store 2 pre-calculated noise maps, one is height, the other is density I use them in combination to create clouds"}, {"post_id": 59644, "ts": "2026-09-01T15:49:00Z", "hours": 7.4706, "text": "I have implemented more different world types, gui improvements, water reflections, world loading and unloading etc… Mostly general optimizations and QOL improvements rather than a deep technique. Something I plan for the release after this one"}, {"post_id": 57639, "ts": "2026-08-29T20:56:01Z", "hours": 5.1456, "text": "I implemented larger worlds and a very basic menu to choose it’s size. Along with the ability to dynamically change resolutions, (currently controllable by keyboard but I want to make a full ui for all the graphical stuff). I removed trees as I want to move towards space colonization and ones that will actually look good. Overall rendering a world that is 4096^2x512 is not much slower than 8192^2x512 thanks to distance fields. I am moving forward with getting acceptable performance for a game, but it’s still not perfect. Also superliminal gave me a license to their cpu debugging software suite for free ;) so it will get fine tuned after I have all techniques implemented"}, {"post_id": 56222, "ts": "2026-08-27T21:51:26Z", "hours": 2.3972, "text": "I’ve been working on documenting my ray tracer further. Here’s a link to my blog post explaining the technical details: https://nixuntris.github.io/Private-Website/blueprint.html?id=raytracer"}, {"post_id": 53363, "ts": "2026-08-23T21:40:11Z", "hours": 5.0497, "text": "I implemented colored lighting, and light absorption, eg different materials absorb different amounts of light along with light diffusion so that light scatters, I am working on an upscaler and on demand probe allocation(it’s easily the heaviest part of the storage). I also implemented quantizing distance4 values to consume less memory. I also speed up world generation and multithreaded it. Overall focusing on memory storage. It’s very buggy rn however so a lot of bug fixing incoming"}, {"post_id": 51979, "ts": "2026-08-21T23:48:26Z", "hours": 6.6522, "text": "I’ve been optimizing the project. Now it can handle much larger render distances, at higher fps and I added deduping along with light absorption per material. It’s highly experimental but it works. I’ve improved on the terrain gen a bit more so that the scene is a bit more complex. I also finished lods. I am preping the ship"}, {"post_id": 51054, "ts": "2026-08-20T15:15:56Z", "hours": 2.9011, "text": "I’ve been working on optimizing the renderer and the world structure and acceleration data generation. I’ve implemented that low resolution pass, screen space lods that calculate the distance to start based on resolution and fovy. Along with just making the algorithm faster. I added secondary rays that use per voxel data as it’s faster to calculate (so a cheat code in a way because per pixel shadows are more expensive) they are only a visibility check for now. Along with speeding up the world gen and adding actual tree crowns. I plan on simiding the rays themself now along with the fact that speeding up world gen and making it more interesting is one of my more important tasks along with implementing proper global illumination and upscaling(there is a partial simple implementantion however it does no edge detection and smoothing). This is all running on a 5950x at 1000x1000 resolution at about 40-45 fps average (yes I know a frame time should be given instead of fps but I haven’t yet exactly built a debugger for it) however at 80% internal resolution it’s about 50-60 fps."}, {"post_id": 49233, "ts": "2026-08-17T21:58:24Z", "hours": 13.7969, "text": "I’ve been working on a realtime CPU voxel raytracer. It utilizes raymarching combined with multi level DDA for fast primary rays. I calculate distance fields stored in an octree format to optimize the raymarcher. I simded the ray direction calculation and multithreaded it. It utilizes checkerboard rendering while keeping the quality seemless. Every even frame gets to use odd’s frame distance, to speed up the traversal speeds. I want to implement a low level traversal algorithm for odd frames to speed up their traversal as well. Sadly I am not yet ready to blog but I am forced to as to not lose more hours. I tried to experiment with more techniques but I decided to still go with raytracing as I already have anotehr rasterization project going on."}]...
|
Title: Voxelized by @luxi | Stardance
Devlogs:
I’ Title: Voxelized by @luxi | Stardance
Devlogs:
I’ve been working on a realtime CPU voxel raytracer. It utilizes raymarching combined with multi level DDA for fast primary rays. I calculate distance fields stored in an octree format to optimize the raymarcher. I simded the ray direction calculation and multithreaded it. It utilizes checkerboard rendering while keeping the quality seemless. Every even frame gets to use odd’s frame distance, to speed up the traversal speeds. I want to implement a low level traversal algorithm for odd frames to speed up their traversal as well. Sadly I am not yet ready to blog but I am forced to as to not lose more hours. I tried to experiment with more techniques but I decided to still go with raytracing as I already have anotehr rasterization project going on.
I’ve been working on optimizing the renderer and the world structure and acceleration data generation. I’ve implemented that low resolution pass, screen space lods that calculate the distance to start based on resolution and fovy. Along with just making the algorithm faster. I added secondary rays that use per voxel data as it’s faster to calculate (so a cheat code in a way because per pixel shadows are more expensive) they are only a visibility check for now. Along with speeding up the world gen and adding actual tree crowns. I plan on simiding the rays themself now along with the fact that speeding up world gen and making it more interesting is one of my more important tasks along with implementing proper global illumination and upscaling(there is a partial simple implementantion however it does no edge detection and smoothing). This is all running on a 5950x at 1000x1000 resolution at about 40-45 fps average (yes I know a frame time should be given instead of fps but I haven’t yet exactly built a debugger for it) however at 80% internal resolution it’s about 50-60 fps.
I’ve been optimizing the project. Now it can handle much larger render distances, at higher fps and I added deduping along with light absorption per material. It’s highly experimental but it works. I’ve improved on the terrain gen a bit more so that the scene is a bit more complex. I also finished lods. I am preping the ship
I implemented colored lighting, and light absorption, eg different materials absorb different amounts of light along with light diffusion so that light scatters, I am working on an upscaler and on demand probe allocation(it’s easily the heaviest part of the storage). I also implemented quantizing distance4 values to consume less memory. I also speed up world generation and multithreaded it. Overall focusing on memory storage. It’s very buggy rn however so a lot of bug fixing incoming
I’ve been working on documenting my ray tracer further. Here’s a link to my blog post explaining the technical details: https://nixuntris.github.io/Private-Website/blueprint.html?id=raytracer
I implemented larger worlds and a very basic menu to choose it’s size. Along with the ability to dynamically change resolutions, (currently controllable by keyboard but I want to make a full ui for all the graphical stuff). I removed trees as I want to move towards space colonization and ones that will actually look good. Overall rendering a world that is 4096^2x512 is not much slower than 8192^2x512 thanks to distance fields. I am moving forward with getting acceptable performance for a game, but it’s still not perfect. Also superliminal gave me a license to their cpu debugging software suite for free ;) so it will get fine tuned after I have all techniques implemented
I have implemented more different world types, gui improvements, water reflections, world loading and unloading etc… Mostly general optimizations and QOL improvements rather than a deep technique. Something I plan for the release after this one
Clouds and more optimizations. I store 2 pre-calculated noise maps, one is height, the other is density I use them in combination to create clouds
I’ve implemented gradual world gen, so instead of generating all at once they get generated on demand. Currently it’s still constrained to a specific size but I will fix it by changing to a hashmap. I need to also implement chunk prioritization for better experience and multi thread it better.
I’ll let the video speak for itself
I have implemented lights, currently they are pixel pixel. Not going with per voxel probes, too expensive. Probably gonna do irradiance 8^3 probes. Very simple not yet optimized
I implemented a chunk based acceleration tree, so that only chunks within the radius of the light get lit. Not that much. Been busy with school and studying math. I will be working on documenting the technical changes since the last blog post. Currently just releasing since a lot of hours accumulated since the last release
Ships:
I’ve implemented a software raytracer that runs on the CPU in real time. It’s quite heavy still so a beefy system is recommended. (I use a 5950x). It uses avx2 to speed up the direction calculations along with a low level ray pass (the complete list of functionality is listed in the release description on github)
I implemented GUI, more varied scenes, reflections to the water Along with general QOL and it should be slightly faster than before. I worked on documenting the technical details as well
I’ve finished another release of the voxel engine, it’s more optimized, has volumetric clouds, light sources and procedural generation....
|
1793109349.1960554
|
1793195749.1960554
|
|
43932
|
Abi vault by @jeremy | Stardance
|
jeremy
|
1
|
59.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T17:43:22Z", "hours": 59.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "AbiVault AbiVault is a finance management web app built with Next.js, TypeScript, Tailwind CSS, Supabase, and Clerk . I built it because my school needed a better way to manage the money around our Abitur. Students organize things like the Abiball, parties, fundraising, and merchandise themselves, which means we also have to keep track of income, expenses, budgets, and the current balance. AbiVault is mainly made for Abitur committees and student finance teams . It gives multiple students access to the same financial data and makes it easier to keep everything organized without relying on several spreadsheets, documents, and group chats. Features Track income and expenses Manage transactions and categories View the current balance Create and manage budgets Support multiple users View simple financial statistics Tech Stack Next.js TypeScript Tailwind CSS Supabase for the database and backend Clerk for authentication and user management The main goal is to make managing Abitur finances simpler, more organized, and more transparent for everyone involved.", "repo": "https://github.com/jeremy341/abi-vault/tree/open-source-demo", "demo": "https://abi-vault-demo.vercel.app/"}]...
|
[{"post_id": 63715, "ts": "202 [{"post_id": 63715, "ts": "2026-09-07T17:30:42Z", "hours": 2.5175, "text": "Abi Valut - Last Devlog This phase about cleaning UI elements changing the language of the whole demo website to english and fully preparing it for the offical stardance submission as the offical private one was alredy online for a good while and had near to 0 bugs. Cards This isnt a feature newly added but I just wanted to mention that our system in theory supports cards through gocardless but that isnt setup so its not usable at the moment though the backend exists and for a while even Ui existed but I have removed that. Translation This wasnt so hard just pretty time consuming going over everything and translating every single text. Refelection Pretty proud of myself as I managed to push out a full working apllication of course this isnt 100% selfcoded for example backend features but it is more then fine for what I was aiming to do and It works perfectly. Trying out here is a link to the demo for everybody wanting to try it out. https://abi-vault-demo.vercel.app/"}, {"post_id": 59073, "ts": "2026-08-31T17:57:37Z", "hours": 5.6472, "text": "Abi Vault - Devlog 10 This phase was just about creating a demo website for the stardance people. Creating One new tab and cleaning up the final UI. Finish I finished with fully creating the full application privatly and fixing all bugs Ui and backend and also created one new tab which was interseting. Stardance Demo I made a second copy of my repo removed all clerk dependecies translated all the text from german into english and setup a second Supabase and vercel project this will be used without loging which allows for everybody to use and test it. Next Steps creating the readme, cleaning up a bit and its ready for ship"}, {"post_id": 55712, "ts": "2026-08-27T18:01:07Z", "hours": 9.6378, "text": "Abi Vault - Devlog 9 This phase was mostly about moving everything from development to production, using the actual domain, finalising the system, rewriting a bit of the structure and fixing bugs. UI So I finalised the iPad UI and added multiple simple spinner animations and slide-in animations. I also worked a bit more on the blank states, what the placeholder text should say and how everything should look. Right now I am still in the process of finalising the phone UI, as the blank states fucked it up a bit. Logic I rewrote 2 large sections. As I realised in the last devlog that I couldn’t use a bank API, I needed to rewrite the logic of how the platform worked. I decided to keep the cards and make them a visual representation of the physical cash. I also decided to fully transition the system to being ledger-based, which was pretty obvious since we now don’t have an API. For anybody asking, ledger-based basically just means that the system calculates the balances and tracks how everything is performing based on the values that users manually enter. i also decided to create an invite system link so people cant just signup if they somehow find the software and it only works by getting a link from the Admin. For the Supervisor role its a 30 day link for up to 30 people and for admin its a onetime link for up to 7 days and 1 user. Domain I also decided to buy a domain, which I originally didn’t want to do as I thought Vercel was all I needed. However, Clerk required a custom domain so I could move everything from development to production. Also, for anybody asking, I will not reveal the name of the domain as this is a closed platform. That’s also why I made it as badly SEO-optimised as possible in the metadata. And for anybody wondering, this domain cost me A WHOLE $0.07 a month. Quite expensive if you ask me. Clerk Clerk was quite the hassle because, as mentioned before, my plan was to just use Vercel, but Clerk essentially forced a custom domain onto me. Another thing I didn’t know was that under my student plan I was only allowed 2 roles and wasn’t able to add another custom one. This became a bottleneck as I originally had 3 roles in mind: Student Admin Supervisor In the end I decided to scrap Admin and make it only Student and Supervisor. Supabase This part was quite simple as most of it was already finished. I mainly needed to work on the role permissions and also add a caching system because I noticed that some pages would load for 1–2 seconds every time. That’s just bad UX, especially when it happens even during a simple tab switch. The caching system now keeps already-loaded data available where possible instead of unnecessarily fetching everything again. Next Steps The next steps is now creating a demo version and a better opensoure version so people can use my software without depending on my vercel, supabase and etc. Or maybe I will host another workspace of this exact software for hackclub so people can try it what would be your advise for that?"}, {"post_id": 54706, "ts": "2026-08-25T19:36:18Z", "hours": 8.9725, "text": "Abi Vault - Devlog 8 This phase was mainly about the backend which i have to confess i had to use AI for as it was complicated with supabase clerk and just rotuing everything together. Failed bank API My plan was to allow the use of real bank cards and getting all their information through a bank API, but i missed sth important either you handle all bank apis from all providers yourself or you get a service to do it. The problem is there is no free Opensource service which allows for this and to keep it a buck iam broke asf. So i scraped the Idea and made it only ledger based which means it gets calucalted automatically but you have to write down all transactions and etc. SupaBase This was quite hard as Supabase is hella confusing prob one of the most confusing UI i have ever seen but after some back and forth with the Ai i was able to set it up though i still need to learn a bit as I really didnt undestand what i did there. Clerk this was quite easy clerk really allows for easy synchronisation and it was quite easy to set up the 3 classes admin, supervisor, and student I also made it so the software is request only for the moment so i can send a request with a certain authorisatzion and the User creates their account. But will probally change that soon Next Steps I will probally either get a domain grant or just buy it from my own money and prepare to launch the website over nest. Its nearly finished and the onlz fixes are small UI mismatches, better animation adding things like skelleton loaders and etc."}, {"post_id": 53076, "ts": "2026-08-23T14:18:51Z", "hours": 12.2586, "text": "Abi Vault - Devlog 7 This section was mainly about adding all other pages creating a fully nice looking functionial phone UI and just cleaning up the UI in general. Pages I created the rest of the pages and created place holders for them and now a whole system is in place the only thing left is writing real logic and conecting it to a server to get user auth. Phone UI This was the biggest phase of this Project i first started with scraping our already existing phone UI and started gathering references I decided to use klarna as they got quite the clean UI. I first started with adding the sidebar to the bottom to make it easier accsessible. I also needed quite A long time to make the UI look clean with adding animation for the modals and making them appear from underneath and not spawn in the middle of the screen Next Steps Now that the UI is kinda finished and school starts in 1 week the next step is creating a fully functional backend syncing the application with superbase and other services so I have a first working demo which I can continue working on during the school year."}, {"post_id": 47087, "ts": "2026-08-14T18:38:37Z", "hours": 8.9711, "text": "Abi Vault - Devlog 6 This section was mainly about cleaning up the UI, making the different pages more synchron and creating a more structured UI system for the whole website. UI System I worked on making the design more consistent across the dashboard, transactions and receipts page. Before that many aspects were styled slightly different like the spacing, typography, buttons, dropdowns and card sizes. I started creating shared rules and components so the pages follow the same visual identity and feel more connected. Transactions and Receipts I created and implemented the full transactions page with filters, a filter modal, pagination, placeholder transactions and a structured transaction table. I also created the receipts page with placeholder receipts, status filters, pagination and a modal for adding new receipts. Both pages use the existing Abi Vault sidebar, topbar, colors and general design language. Dashboard Cleanup I added more placeholder transactions to the dashboard so the transaction history feels more complete and does not leave as much empty space. I also added another spending category and adjusted the review section so the right side feels more balanced with the transaction history on the left. 1920px and 2560px A big part of this session was cleaning up the layout for both 1920px and 2560px screens. The layouts looked very different depending on the screen size because of adaptive heights and spacing. I adjusted the cards, rows, table containers and page spacing so the website stays inside the viewport and does not become scrollable on the supported resolutions. The 2560px version was especially difficult because there was a lot of empty space, but simply scaling everything up did not look good. Instead I had to create separate wide-screen adjustments, add more rows and balance the different cards while keeping the 1920px layout unchanged. Results This was a productive session but also quite difficult because many small CSS changes affected multiple pages. The UI now feels much more consistent and the Transactions and Receipts pages are much closer to the final design. I still need to refine some spacing differences between the pages and test everything more carefully, but the main structure is now in place and the beta version is getting closer. For anyone wondering about the phone UI I havent touched it in a while and decided to just create it at the end because its such a hedache"}, {"post_id": 44810, "ts": "2026-08-10T20:43:33Z", "hours": 1.1994, "text": "Abi Vault - Devlog 5 This section was mainly about refining the UI further and fixing some bugs regarding the CSS and how the website look on the phone. Dark Mode I had some bugs with the dark mode becuase as you could see in the video of the last devlog the Clerk system wasnt adjustet as i forgot it. This took quite some while to sync it to ts and css variable but with some AI it was possible. Phone UI This was hell i genuinly couldnt manage fixing the Phone UI and even then i had to change so many different things because the phone ui is just different entirely and you need to hide so many differnt aspects and even replace symbols the most challenging part was reanging the dashboard so it really fits into a phone overview and after getting stuck for 30 minutes i just decided to ask AI and let it expain what was wrong Card customisatzion modal Also worked on the card customisation model cleaning up Ui and implementing restriction like max character limits, dates that arent expired and etc Results pretty uncessful session and didnt code much by hand because it was so difficult also the progress is way to slow so iam going to pick up the pace to atleas have an beta ready at the end of august which is usable."}, {"post_id": 43510, "ts": "2026-08-08T20:33:37Z", "hours": 3.2119, "text": "Abi vault - Devlog 4 This Section was mainly about adding cool effects with Tailwind CSS and refining the UI further. I also used Figma to design the card and saved it as an SVG. Figma This was quite simple and fast. I used references from cards like the ones Klarna uses and designed the card from there. To give it a more metallic look, I used a linear gradient with three stops at a certain angle. The problem was that I worked in the Figma app instead of the browser, and the browser connection kept disconnecting and reconnecting. so i coudlnt track hackatime for it/ Cards The cards are combined with SVG and TSX. The SVG is responsible for the background, including the gradient, border, and rounded corners. The card text is rendered separately in TSX and positioned above the SVG using a layered container. This allows the account name, number, card holder, expiry date, and color to change dynamically. Visual effect The visual effects include a subtle 3D tilt that reacts to the mouse position. The code calculates the mouse position relative to the card and converts it into tilt values for the X and Y axes. These values are saved as CSS variables and used by rotateX() and rotateY() . const relativeX = ( event . clientX - bounds . left ) / bounds . width ; const relativeY = ( event . clientY - bounds . top ) / bounds . height ; const rotateX = ( 0.5 - relativeY ) * 8 ; const rotateY = ( relativeX - 0.5 ) * 8 ; event . currentTarget . style . setProperty ( \" --tilt-x \" , ` ${ rotateX } deg` ); event . currentTarget . style . setProperty ( \" --tilt-y \" , ` ${ rotateY } deg` ); When the mouse leaves, the card resets to 0deg . It also has a diagonal light-sweep animation and slightly lifts on hover. The white card uses a separate metallic gradient and darker shine. Card Logic Cards are stored in React state, and cardIndex controls which card is visible. The modals allow cards to be added, edited, or deleted. Currently, cards reset after refreshing and will later be saved in a database connected to the Clerk user or class. Results Iam pretty proud of myself of the result though I did have to use AI for how to create the Card logic so the text is interactive at first I thought about redrawing the SVG everytime as i did sth smiliar in my README but that didnt make sense, so i asked AI as for the darkmode i needed to watch some tuts and for the same for the tilt and a bit of AI for it"}, {"post_id": 42817, "ts": "2026-08-07T18:48:58Z", "hours": 0.9725, "text": "Abi vault - Devlog 3 This section was more about battling my typscript skills and cleaning up the UI minimal also added the account system easily with clerk bless clear Account system This was quite simple in theory but I had some difficulties making it compatible for both phone and desktop because they should appear in different location and I didnt really know how to do it, but iam really thankfull i choose clerk because of that I dont have to code the account system by scratch and get a easy to use account system Results Was pretty difficult but learn about utilizing hidden and tailwind css to hide certain ui elements on certain devices."}, {"post_id": 42091, "ts": "2026-08-06T17:34:38Z", "hours": 2.4622, "text": "Abi Vault - Devlog 2 Today I focused on making the login system and a simple sidebar utilizing clerk shadcn.ui and lucid react components for the icons Clerk System I integrated Clerk’s prebuilt and components and customized their appearance to match Abi Manager’s clean black-and-white design. Access to the dashboard is protected so only authenticated users can view it. Sidebar This was quite difficult because i never advanced much with my HTMl skills and still havent really done semantic html which i will continue now on free code camp, at first i thought creating it myself was the play and I did and it was difficult but with some googling and AI I managed btu I realised that I wanted to make this fully compabtible with Ai so i decided to use the one from shadcn which already comes with a mobile function. I also noticed while coding that I paster the for the buttons 8 times, so i used that moments to learn how to create reusable componenets Results Pretty good session I am still having difficulties with tailwind as it just feels weird and looks weird to design in the code but its going good"}, {"post_id": 41440, "ts": "2026-08-05T17:33:15Z", "hours": 2.9972, "text": "Abi Vault Day One in this section i did simple setup and mapped the features the app should have About I decided to build this project to finally explore modern web development. So far, I have only created simple websites without many features or animations, but I wanted to create something more modern. Since I am approaching my final years of high school in Germany, we have something called an Abi Party, for which different committees have to collect and manage money. My aim is to create a simple website to track the finances with three account levels. Admin, Commite Members and students affected. The aim is to create a Next.js tailwind website which allows for adding bank account and seeing the money history though the bank Api uploading reciepts and more. Built the Welcome Page and added clerk So i started with building the homepage and learning tailwind, tsx and next.js which was quite weird and took a good while but it wasnt that hard as its similar to html syntax with a js twist. I had difficulties with tailwind as I found myself writing a really long line but I found out you can reference tailwind and just add it in CSS without having everything in the Tsx. I also connected Clerk and set it up. The reason this took so long was because of learning all these new languages but the next post and features should be a lot faster. Next Steps Create the rough system with a tab system simple dashboard and login and signup screen when buttons pressed"}]...
|
Title: Abi vault by @jeremy | Stardance
Devlogs:
Title: Abi vault by @jeremy | Stardance
Devlogs:
Abi Vault Day One in this section i did simple setup and mapped the features the app should have About I decided to build this project to finally explore modern web development. So far, I have only created simple websites without many features or animations, but I wanted to create something more modern. Since I am approaching my final years of high school in Germany, we have something called an Abi Party, for which different committees have to collect and manage money. My aim is to create a simple website to track the finances with three account levels. Admin, Commite Members and students affected. The aim is to create a Next.js tailwind website which allows for adding bank account and seeing the money history though the bank Api uploading reciepts and more. Built the Welcome Page and added clerk So i started with building the homepage and learning tailwind, tsx and next.js which was quite weird and took a good while but it wasnt that hard as its similar to html syntax with a js twist. I had difficulties with tailwind as I found myself writing a really long line but I found out you can reference tailwind and just add it in CSS without having everything in the Tsx. I also connected Clerk and set it up. The reason this took so long was because of learning all these new languages but the next post and features should be a lot faster. Next Steps Create the rough system with a tab system simple dashboard and login and signup screen when buttons pressed
Abi Vault - Devlog 2 Today I focused on making the login system and a simple sidebar utilizing clerk shadcn.ui and lucid react components for the icons Clerk System I integrated Clerk’s prebuilt and components and customized their appearance to match Abi Manager’s clean black-and-white design. Access to the dashboard is protected so only authenticated users can view it. Sidebar This was quite difficult because i never advanced much with my HTMl skills and still havent really done semantic html which i will continue now on free code camp, at first i thought creating it myself was the play and I did and it was difficult but with some googling and AI I managed btu I realised that I wanted to make this fully compabtible with Ai so i decided to use the one from shadcn which already comes with a mobile function. I also noticed while coding that I paster the for the buttons 8 times, so i used that moments to learn how to create reusable componenets Results Pretty good session I am still having difficulties with tailwind as it just feels weird and looks weird to design in the code but its going good
Abi vault - Devlog 3 This section was more about battling my typscript skills and cleaning up the UI minimal also added the account system easily with clerk bless clear Account system This was quite simple in theory but I had some difficulties making it compatible for both phone and desktop because they should appear in different location and I didnt really know how to do it, but iam really thankfull i choose clerk because of that I dont have to code the account system by scratch and get a easy to use account system Results Was pretty difficult but learn about utilizing hidden and tailwind css to hide certain ui elements on certain devices.
Abi vault - Devlog 4 This Section was mainly about adding cool effects with Tailwind CSS and refining the UI further. I also used Figma to design the card and saved it as an SVG. Figma This was quite simple and fast. I used references from cards like the ones Klarna uses and designed the card from there. To give it a more metallic look, I used a linear gradient with three stops at a certain angle. The problem was that I worked in the Figma app instead of the browser, and the browser connection kept disconnecting and reconnecting. so i coudlnt track hackatime for it/ Cards The cards are combined with SVG and TSX. The SVG is responsible for the background, including the gradient, border, and rounded corners. The card text is rendered separately in TSX and positioned above the SVG using a layered container. This allows the account name, number, card holder, expiry date, and color to change dynamically. Visual effect The visual effects include a subtle 3D tilt that reacts to the mouse position. The code calculates the mouse position relative to the card and converts it into tilt values for the X and Y axes. These values are saved as CSS variables and used by rotateX() and rotateY() . const relativeX = ( event . clientX - bounds . left ) / bounds . width ; const relativeY = ( event . clientY - bounds . top ) / bounds . height ; const rotateX = ( 0.5 - relativeY ) * 8 ; const rotateY = ( relativeX - 0.5 ) * 8 ; event . currentTarget . style . setProperty ( " --tilt-x " , ` ${ rotateX } deg` ); event . currentTarget . style . setProperty ( " --tilt-y " , ` ${ rotateY } deg` ); When the mouse leaves, the card resets to 0deg . It also has a diagonal light-sweep animation and slightly lifts on hover. The white card uses a separate metallic gradient and darker shine. Card Logic Cards are stored in React state, and cardIndex controls which card is visible. The modals allow cards to be added, edited, or deleted. Currently, cards reset after refreshing and will later be saved in a database connected to the Clerk user or class. Results Iam pretty proud of myself of the result though I did have to use AI for how to create the Card logic so the text is interactive at first I thought about redrawing the SVG everytime as i did sth smiliar in my README but that didnt make sense, so i asked AI as for the darkmode i needed to watch some tuts and for the same for the tilt and a bit of AI for it
Abi Vault - Devlog 5 This section was mainly about refining the UI further and fixing some bugs regarding the CSS and how the website look on the phone. Dark Mode I had some bugs with the dark mode becuase as you could see in the video of the last devlog the Clerk system wasnt adjustet as i forgot it. This took quite some while to sync it to ts and css variable but with some AI it was possible. Phone UI This was hell i genuinly couldnt manage fixing the Phone UI and even then i had to change so many different things because the phone ui is just different entirely and you need to hide so many differnt aspects and even replace symbols the most challenging part was reanging the dashboard so it really fits into a phone overview and after getting stuck for 30 minutes i just decided to ask AI and let it expain what was wrong Card customisatzion modal Also worked on the card customisation model cleaning up Ui and implementing restriction like max character limits, dates that arent expired and etc Results pretty uncessful session and didnt code much by hand because it was so difficult also the progress is way to slow so iam going to pick up the pace to atleas have an beta ready at the end of august which is usable.
Abi Vault - Devlog 6 This section was mainly about cleaning up the UI, making the different pages more synchron and creating a more structured UI system for the whole website. UI System I worked on making the design more consistent across the dashboard, transactions and receipts page. Before that many aspects were styled slightly different like the spacing, typography, buttons, dropdowns and card sizes. I started creating shared rules and components so the pages follow the same visual identity and feel more connected. Transactions and Receipts I created and implemented the full transactions page with filters, a filter modal, pagination, placeholder transactions and a structured transaction table. I also created the receipts page with placeholder receipts, status filters, pagination and a modal for adding new receipts. Both pages use the existing Abi Vault sidebar, topbar, colors and general design language. Dashboard Cleanup I added more placeholder transactions to the dashboard so the transaction history feels more complete and does not leave as much empty space. I also added another spending category and adjusted the review section so the right side feels more balanced with the transaction history on the left. 1920px and 2560px A big part of this session was cleaning up the layout for both 1920px and 2560px screens. The layouts looked very different depending on the screen size because of adaptive heights and spacing. I adjusted the cards, rows, table containers and page spacing so the website stays inside the viewport and does not become scrollable on the supported resolutions. The 2560px version was especially difficult because there was a lot of empty space, but simply scaling everything up did not look good. Instead I had to create separate wide-screen adjustments, add more rows and balance the different cards while keeping the 1920px layout unchanged. Results This was a productive session but also quite difficult because many small CSS changes affected multiple pages. The UI now feels much more consistent and the Transactions and Receipts pages are much closer to the final design. I still need to refine some spacing differences between the pages and test everything more carefully, but the main structure is now in place and the beta version is getting closer. For anyone wondering about the phone UI I havent touched it in a while and decided to just create it at the end because its such a hedache
Abi Vault - Devlog 7 This section was mainly about adding all other pages creating a fully nice looking functionial phone UI and just cleaning up the UI in general. Pages I created the rest of the pages and created place holders for them and now a whole system is in place the only thing left is writing real logic and conecting it to a server to get user auth. Phone UI This was the biggest phase of this Project i first started with scraping our already existing phone UI and started gathering references I decided to use klarna as they got quite the clean UI. I first started with adding the sidebar to the bottom to make it easier accsessible. I also needed quite A long time to make the UI look clean with adding animation for the modals and making them appear from underneath and not spawn in the middle of the screen Next Steps Now that the UI is kinda finished and school starts in 1 week the next step is creating a fully functional backend syncing the application with superbase and other services so I have a first working demo which I can continue working on during the school year.
Abi Vault - Devlog 8 This phase was mainly about the backend which i have to confess i had to use AI for as it was complicated with supabase clerk and just rotuing everything together. Failed bank API My plan was to allow the use of real bank cards and getting all their information through a bank API, but i missed sth important either you handle all bank apis from all providers yourself or you get a service to do it. The problem is there is no free Opensource service which allows for this and to keep it a buck iam broke asf. So i scraped the Idea and made it only ledger based which means it gets calucalted automatically but you have to write down all transactions and etc. SupaBase This was quite hard as Supabase is hella confusing prob one of the most confusing UI i have ever seen but after some back and forth with the Ai i was able to set it up though i still need to learn a bit as I really didnt undestand what i did there. Clerk this was quite easy clerk really allows for easy synchronisation and it was quite easy to set up the 3 classes admin, supervisor, and student I also made it so the software is request only for the moment so i can send a request with a certain authorisatzion and the User creates their account. But will probally change that soon Next Steps I will probally either get a domain grant or just buy it from my own money and prepare to launch the website over nest. Its nearly finished and the onlz fixes are small UI mismatches, better animation adding things like skelleton loaders and etc.
Abi Vault - Devlog 9 This phase was mostly about moving everything from development to production, using the actual domain, finalising the system, rewriting a bit of the structure and fixing bugs. UI So I finalised the iPad UI and added multiple simple spinner animations and slide-in animations. I also worked a bit more on the blank states, what the placeholder text should say and how everything should look. Right now I am still in the process of finalising the phone UI, as the blank states fucked it up a bit. Logic I rewrote 2 large sections. As I realised in the last devlog that I couldn’t use a bank API, I needed to rewrite the logic of how the platform worked. I decided to keep the cards and make them a visual representation of the physical cash. I also decided to fully transition the system to being ledger-based, which was pretty obvious since we now don’t have an API. For anybody asking, ledger-based basically just means that the system calculates the balances and tracks how everything is performing based on the values that users manually enter. i also decided to create an invite system link so people cant just signup if they somehow find the software and it only works by getting a link from the Admin. For the Supervisor role its a 30 day link for up to 30 people and for admin its a onetime link for up to 7 days and 1 user. Domain I also decided to buy a domain, which I originally didn’t want to do as I thought Vercel was all I needed. However, Clerk required a custom domain so I could move everything from development to production. Also, for anybody asking, I will not reveal the name of the domain as this is a closed platform. That’s also why I made it as badly SEO-optimised as possible in the metadata. And for anybody wondering, this domain cost me A WHOLE $0.07 a month. Quite expensive if you ask me. Clerk Clerk was quite the hassle because, as mentioned before, my plan was to just use Vercel, but Clerk essentially forced a custom domain onto me. Another thing I didn’t know was that under my student plan I was only allowed 2 roles and wasn’t able to add another custom one. This became a bottleneck as I originally had 3 roles in mind: Student Admin Supervisor In the end I decided to scrap Admin and make it only Student and Supervisor. Supabase This part was quite simple as most of it was already finished. I mainly needed to work on the role permissions and also add a caching system because I noticed that some pages would load for 1–2 seconds every time. That’s just bad UX, especially when it happens even during a simple tab switch. The caching system now keeps already-loaded data available where possible instead of unnecessarily fetching everything again. Next Steps The next steps is now creating a demo version and a better opensoure version so people can use my software without depending on my vercel, supabase and etc. Or maybe I will host another workspace of this exact software for hackclub so people can try it what would be your advise for that?
Abi Vault - Devlog 10 This phase was just about creating a demo website for the stardance people. Creating One new tab and cleaning up the final UI. Finish I finished with fully creating the full application privatly and fixing all bugs Ui and backend and also created one new tab which was interseting. Stardance Demo I made a second copy of my repo removed all clerk dependecies translated all the text from german into english and setup a second Supabase and vercel project this will be used without loging which allows for everybody to use and test it. Next Steps creating the readme, cleaning up a bit and its ready for ship
Abi Valut - Last Devlog This phase about cleaning UI elements changing the language of the whole demo website to english and fully preparing it for the offical stardance submission as the offical private one was alredy online for a good while and had near to 0 bugs. Cards This isnt a feature newly added but I just wanted to mention that our system in theory supports cards through gocardless but that isnt setup so its not usable at the moment though the backend exists and for a while even Ui existed but I have removed that. Translation This wasnt so hard just pretty time consuming going over everything and translating every single text. Refelection Pretty proud of myself as I managed to push out a full working apllication of course this isnt 100% selfcoded for example backend features but it is more then fine for what I was aiming to do and It works perfectly. Trying out here is a link to the demo for everybody wanting to try it out. https://abi-vault-demo.vercel.app/
Ships:
AbiVault AbiVault is a finance management web app built with Next.js, TypeScript, Tailwind CSS, Supabase, and Clerk . I built it because my school needed a better way to manage the money around our Abitur. Students organize things like the Abiball, parties, fundraising, and merchandise themselves, which means we also have to keep track of income, expenses, budgets, and the current balance. AbiVault is mainly made for Abitur committees and student finance teams . It gives multiple students access to the same financial data and makes it easier to keep everything organized without relying on several spreadsheets, documents, and group chats. Features Track income and expenses Manage transactions and categories View the current balance Create and manage budgets Support multiple users View simple financial statistics Tech Stack Next.js TypeScript Tailwind CSS Supabase for the database and backend Clerk for authentication and user management The main goal is to make managing Abitur finances simpler, more organized, and more transparent for everyone involved....
|
1793004641.5412035
|
1793091041.5412035
|
|
44374
|
Clipboard++ by @Eel | Stardance
|
Eel
|
3
|
59.0
|
513
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T22:57:31Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Shipped Clipboard++ v1.5.1! This update introduces a cleaner Windows-style interface, a flatter clipboard list, improved Quick Paste readability, real product screenshots, and documented search benchmarks.", "repo": "https://github.com/Caleb-Guyer/ClipboardPlusPlus", "demo": "https://github.com/Caleb-Guyer/ClipboardPlusPlus/releases"}, {"ship_num": 2, "ts": "2026-08-13T15:12:07Z", "hours": 27.0, "multiplier": 15.19, "payout": 406, "blessing": "neutral", "text": "Since the last ship, Clipboard++ has gone through a pretty massive expansion, with the focus shifting from a simple clipboard manager into a much more complete productivity tool. The biggest changes started with the workflow system. I added reusable workflows with multiple transformation steps, keyboard shortcuts, additional paste formats, and import/export support. This was followed by a rules engine that can automatically organize clips based on things like source application, content type, language, URL domains, and regex matches. Rules can perform actions such as pinning clips, adding tags or collections, and triggering workflows. I then expanded temporary clipboard functionality with expiration timers, burn-after-paste, bulk controls, and smart-rule automation. The backup system has also grown alongside these features, with each database migration preserving more of the application’s data. The paste workflow received another major upgrade with the native Quick Paste overlay and a keyboard-first Paste Queue. Quick Paste supports filtering by recent, pinned, temporary, and source application clips, while the Paste Queue allows clips to be reordered, pasted individually with automatic advancement, or pasted as a complete queue. Named paste stacks and configurable separators make it especially useful for repetitive tasks. Search has also been completely reworked. Clipboard++ now uses SQLite FTS5 for much faster full-text searching, including phrases, exclusions, structured operators, suggestions, filter chips, and match highlighting. Searches can be saved locally as Smart Views and included in backups. Performance testing reached roughly 0.90 ms for 10,000 entries and 1.05 ms for 50,000 entries. Most recently, I focused on making clipboard data safer and more recoverable. Clipboard entries can now be edited directly with syntax preview, and every edit can be tracked through revision history with line-by-line diffs. Deleted clips go into a Recycle Bin where they can be restored, permanently deleted, or undone. Clips that expire or use burn-after-reading can also be recovered. Backups now preserve revisions and deleted items as well. Across these releases, the SQLite schema has progressed from v5 through v11 as the application gained more functionality. I’ve repeatedly tested migrations, backups, large clipboard histories, both Windows 11 themes, and native installers to make sure the growing feature set remains reliable. Clipboard++ has gone from a basic clipboard history application to a much more complete system for searching, transforming, organizing, automating, and recovering clipboard content. Thank you all so much for the support!!!", "repo": "https://github.com/Caleb-Guyer/ClipboardPlusPlus", "demo": "https://github.com/Caleb-Guyer/ClipboardPlusPlus/releases"}, {"ship_num": 3, "ts": "2026-08-06T16:59:12Z", "hours": 8.0, "multiplier": 12.58, "payout": 107, "blessing": "neutral", "text": "I built Clipboard++, a desktop clipboard manager designed to make copying and pasting much faster for programmers, students, and anyone who frequently reuses text or images. Windows’ built-in clipboard history is fairly limited, so I wanted to create something that makes organizing and finding previous clipboard items effortless. Along the way I added searchable clipboard history, favorites, image clipboard support with local OCR, automatic local clip naming, collections and tags, privacy controls, a command palette, bulk organization tools, customizable themes, and portable backup/restore. The biggest challenge was making all of the features work together while keeping the application responsive and reliable. I also spent a lot of time testing edge cases, preserving existing user data during updates, and making sure privacy-sensitive content could be excluded from history. I’m most proud that Clipboard++ has grown into something I would genuinely use every day. It has gone through multiple public releases, each adding meaningful quality-of-life improvements rather than just cosmetic changes. To test the project, download the Windows installer from the GitHub Releases page (or build it from source), launch Clipboard++, copy text or images as you normally would, and try searching, pinning, tagging, renaming, organizing, and restoring clipboard items. The project is completely local, so no account or internet connection is required after installation.", "repo": "https://github.com/Caleb-Guyer/ClipboardPlusPlus", "demo": "https://github.com/Caleb-Guyer/ClipboardPlusPlus/releases"}]...
|
[{"post_id": 53404, "ts": "202 [{"post_id": 53404, "ts": "2026-08-23T22:56:29Z", "hours": 3.23, "text": "Clipboard++ v1.5.1 is focused on making the app feel calmer and more at home on Windows. I replaced the card-heavy clipboard history with a flatter list, reduced the purple styling, improved typography and metadata readability, and gave Quick Paste the same cleaner visual treatment. Keyboard controls and existing workflows remain unchanged. I also rewrote the README around the actual product, added real screenshots, and documented the Power Search benchmark with its hardware, query, and testing method. Before publishing, I tested compact window sizes, ran all 66 active Rust tests, built both Windows installers, and verified the release through GitHub Actions."}, {"post_id": 47268, "ts": "2026-08-15T02:39:06Z", "hours": 11.4333, "text": "v1.5.0 is finally complete and published! This was a pretty major update for Clipboard++, adding a full editor for modifying captured images while keeping the original clips untouched. The biggest part of this update was adding a bunch of editing tools, including permanent redaction, blur, pixelation, highlighting, shapes, arrows, pen drawing, and text. I also added undo/redo and made the editor responsive for different Windows 11 layouts. You can now copy or export your edited result, or save it as an entirely new clip. I also added OCR for edited regions, including secure handling of the metadata needed for redactions. A big focus of this release was making sure the native rendering stays bounded for both performance and safety. Most importantly, the original image is never modified when making edits. I also spent a lot of time validating the release instead of just assuming everything worked. TypeScript and production builds passed, all 66 Rust tests passed, and both MSI and NSIS installers built successfully. I also went through desktop and compact visual QA and checked for console errors. The GitHub CI and release workflows were tested as well, and everything is now published."}, {"post_id": 46681, "ts": "2026-08-14T03:44:34Z", "hours": 8.8433, "text": "Clipboard++ v1.4.0 is now live. This release adds a full-resolution Image Workspace with non-destructive cropping, along with editable and searchable OCR with support for selecting installed Windows languages. Images can now be exported as PNG, JPEG, or WebP, and the workspace also provides image metadata, transparency information, and an option to reveal the file in File Explorer. I also added schema v13 and backup support for OCR metadata. Before releasing, I ran the full native test suite with all 63 tests passing, verified the production build, completed visual QA, and confirmed that the GitHub CI and release workflows passed. The main worktree is clean and v1.4.0 is tagged."}, {"post_id": 46060, "ts": "2026-08-13T00:19:49Z", "hours": 4.1522, "text": "Clipboard++ v1.3.0 is now complete and published! This update focused on making clipboard history much more powerful and recoverable. I added a full clipboard editor with syntax preview, along with revision history that shows line-by-line differences between versions. Clipboard entries can now also be sent to a Recycle Bin, where they can be restored, permanently deleted, or undone exactly. I also added a duplicate-and-edit workflow and made expired and burn-after-reading clips recoverable. The backup format was updated as well so revisions and deleted items are preserved during backups and restores. During visual QA, I found and fixed a stale-row transition issue that could cause the clipboard list to display outdated information after changes."}, {"post_id": 45457, "ts": "2026-08-11T22:42:54Z", "hours": 4.3333, "text": "Worked for this session on a major upgrade to Clipboard++’s search experience. v1.2.0 is now live with a much more powerful way to find clips across large histories. I added SQLite FTS5 Power Search, supporting phrases, exclusions, and structured search operators, along with search suggestions, removable filter chips, and match highlighting. I also added Smart Views, allowing useful searches to be saved and reused locally. Under the hood, this release includes the schema v11 migration plus backup and restore support for Smart Views. I also made additional responsive and light/dark Windows 11 UI improvements. One of the biggest things I wanted to verify was that the new search system would remain fast with large clipboard histories. Testing showed approximately 0.90 ms searches with 10,000 entries and 1.05 ms with 50,000 entries. Validation passed across CI and the release workflow, and v1.2.0 is now publicly released."}, {"post_id": 44969, "ts": "2026-08-11T02:31:15Z", "hours": 4.7819, "text": "Spent this session finishing and publishing Clipboard++ v1.1.0. The main focus was making the paste workflow much faster for users who prefer keyboard-driven interaction. I added a new Paste Queue that can be opened with Ctrl+Q, allowing clipboard entries to be reordered with Alt+↑ and Alt+↓, pasted individually with automatic advancement, or pasted as an entire queue. Separators can also be customized depending on how the queued content should be combined. I also added reusable named paste stacks, along with improvements to the favorite workflow and plain-text actions in Quick Paste. These features make Clipboard++ more useful for repetitive workflows where the same groups of clipboard items need to be pasted repeatedly. Under the hood, I updated the SQLite database to schema v10 and expanded the backup support to account for the new data. I also ran the full validation suite, including 53 Rust tests, TypeScript checks, production builds, visual QA, CI, and the GitHub release workflow."}, {"post_id": 44363, "ts": "2026-08-10T02:21:16Z", "hours": 6.205, "text": "This release adds one of the biggest features yet: a native Quick Paste overlay designed around keyboard-first searching and pasting. You can now quickly find clipboard entries without leaving what you’re doing, with filters for Recent, Pinned, Temporary, and source applications. I also added active-monitor positioning and full-library window restoration, so the UI behaves much more naturally across multiple monitors. Onboarding and accessibility got attention too, with a first-run guide and several accessibility improvements. Under the hood, Clipboard++ moved to SQLite schema v9, including integrity checks and recovery snapshots. I also tested the application with 5,000-entry clipboard histories to make sure the larger datasets remain manageable. Before publishing, I ran the full validation stack: 51 Rust tests, TypeScript checks, formatting, production frontend builds, visual QA, MSI packaging, and NSIS packaging."}, {"post_id": 42859, "ts": "2026-08-07T20:10:41Z", "hours": 1.4283, "text": "v0.9.0 is complete and published. This update was a pretty substantial one for Clipboard++. I added temporary clips with expiration timers, burn-after-paste, bulk controls, smart-rule automation, and backup support. I also updated the SQLite database to schema v8 to support the new functionality. A big part of this release was making sure everything actually held together after all the changes. All 46 Rust tests pass, TypeScript checks pass, and I visually verified both themes. I also built and tested both the MSI and NSIS installers."}, {"post_id": 42342, "ts": "2026-08-07T00:48:01Z", "hours": 1.4117, "text": "Clipboard++ v0.8.0 is finished and officially live! This update adds a much smarter rules system for automatically organizing clipboard content. Clipboard++ can now track the source application and apply priority-ordered rules with AND conditions. Rules can match clips by application, content type, language, URL domain, or regex. I also added automatic actions based on those rules, including pinning clips, adding them to collections, applying tags, and triggering workflows. The new Rule Manager lets you reorder rules, test them inline, and export/import portable rule presets. Rules are also included in local backups, and the SQLite database has been upgraded to schema v7. Before releasing, I ran 44 Rust tests, TypeScript checks, production builds, browser UI testing, and the full GitHub CI/release workflows. Both MSI and NSIS installers were successfully built and published."}, {"post_id": 42287, "ts": "2026-08-06T22:27:08Z", "hours": 0.7889, "text": "Clipboard++ v0.7.0 is now complete! This update focused on making repetitive clipboard tasks much faster with reusable workflow pipelines. I added support for favorite workflows with up to 12 transformation steps, bounded regex find/replace, keyboard shortcuts (Ctrl+Alt+1 through Ctrl+Alt+9) for instantly launching workflows and templates, new paste formats including plain text, Markdown quotes, and JSON strings, plus workflow import/export for sharing or backing up custom setups. I also upgraded the database to schema v6 so workflows are included in backups, and polished the workflow editor and quick-action integration to make everything feel more seamless. Before releasing, I verified the project with TypeScript checks, a production frontend build, 39 Rust tests, interactive UI testing in both light and dark themes, and native MSI/NSIS builds."}, {"post_id": 42225, "ts": "2026-08-06T20:51:45Z", "hours": 3.5886, "text": "Clipboard++ v0.6.0 is complete! This update focused on making the app much more powerful for everyday productivity. I added 14 built-in text and code transformations, reusable snippet templates with variables, and a new Ctrl+. shortcut that lets you instantly transform and paste clipboard content without leaving your workflow. I also updated the backup system to support templates, migrated the database to schema v5, and polished the Windows 11 dialogs in both dark and light mode for a more consistent experience."}, {"post_id": 42065, "ts": "2026-08-06T16:57:22Z", "hours": 0.9564, "text": "Clipboard++ v0.5.0 is now available! This update adds several productivity features, including a Ctrl+K command palette, direct paste with Ctrl+Enter, multi-select for organizing multiple clips at once, and portable JSON backup and restore. I also introduced sensitive-content detection with customizable privacy terms, updated the documentation, and spent time testing, polishing, and preparing the latest public release."}, {"post_id": 41758, "ts": "2026-08-06T04:46:53Z", "hours": 1.0292, "text": "Clipboard++ v0.4.0 is released! This update focuses on making clipboard history much easier to organize by adding automatic local clip naming, editable custom names, color-coded collections, reusable tags, and powerful search across names, tags, clipboard content, and OCR text. I also added repeated-clip management, ensured existing clipboard history is preserved during upgrades, and finished another round of testing, bug fixes, and packaging for the latest public release."}, {"post_id": 41723, "ts": "2026-08-06T03:41:14Z", "hours": 1.2422, "text": "Clipboard++ v0.3.0 is now live! This update adds image clipboard support with thumbnails, local Windows OCR for searchable text inside images, and one-click image copy-back. I also added image storage controls, pinned image protection, filtering, usage statistics, and more settings while polishing both the dark and light themes. I finished by testing everything, fixing bugs, and packaging a new public Windows release."}, {"post_id": 41692, "ts": "2026-08-06T02:15:55Z", "hours": 1.5281, "text": "Made a huge update to Clipboard++ today. I added a full Settings & Privacy page with configurable history limits, pause/resume clipboard capture, launch at startup, customizable global shortcuts, and password manager exclusions so sensitive data isn’t saved. I also added dark, light, and system themes, update checking, and improved reliability with SQLite migrations, automated tests, and CI. After testing the app at multiple window sizes, I fixed a light theme contrast issue and packaged everything into a proper Windows installer for the v0.2.0 release."}, {"post_id": 41648, "ts": "2026-08-06T00:31:49Z", "hours": 3.72, "text": "I finished the first working version of Clipboard++ today. The application can now save clipboard history, search through copied items, pin important snippets, and quickly copy them back when needed. I also spent time polishing the interface to make it feel clean, responsive, and easy to use. Next, I plan to add more advanced features and continue refining the overall experience."}]...
|
Title: Clipboard++ by @Eel | Stardance
Devlogs:
I Title: Clipboard++ by @Eel | Stardance
Devlogs:
I finished the first working version of Clipboard++ today. The application can now save clipboard history, search through copied items, pin important snippets, and quickly copy them back when needed. I also spent time polishing the interface to make it feel clean, responsive, and easy to use. Next, I plan to add more advanced features and continue refining the overall experience.
Made a huge update to Clipboard++ today. I added a full Settings & Privacy page with configurable history limits, pause/resume clipboard capture, launch at startup, customizable global shortcuts, and password manager exclusions so sensitive data isn’t saved. I also added dark, light, and system themes, update checking, and improved reliability with SQLite migrations, automated tests, and CI. After testing the app at multiple window sizes, I fixed a light theme contrast issue and packaged everything into a proper Windows installer for the v0.2.0 release.
Clipboard++ v0.3.0 is now live! This update adds image clipboard support with thumbnails, local Windows OCR for searchable text inside images, and one-click image copy-back. I also added image storage controls, pinned image protection, filtering, usage statistics, and more settings while polishing both the dark and light themes. I finished by testing everything, fixing bugs, and packaging a new public Windows release.
Clipboard++ v0.4.0 is released! This update focuses on making clipboard history much easier to organize by adding automatic local clip naming, editable custom names, color-coded collections, reusable tags, and powerful search across names, tags, clipboard content, and OCR text. I also added repeated-clip management, ensured existing clipboard history is preserved during upgrades, and finished another round of testing, bug fixes, and packaging for the latest public release.
Clipboard++ v0.5.0 is now available! This update adds several productivity features, including a Ctrl+K command palette, direct paste with Ctrl+Enter, multi-select for organizing multiple clips at once, and portable JSON backup and restore. I also introduced sensitive-content detection with customizable privacy terms, updated the documentation, and spent time testing, polishing, and preparing the latest public release.
Clipboard++ v0.6.0 is complete! This update focused on making the app much more powerful for everyday productivity. I added 14 built-in text and code transformations, reusable snippet templates with variables, and a new Ctrl+. shortcut that lets you instantly transform and paste clipboard content without leaving your workflow. I also updated the backup system to support templates, migrated the database to schema v5, and polished the Windows 11 dialogs in both dark and light mode for a more consistent experience.
Clipboard++ v0.7.0 is now complete! This update focused on making repetitive clipboard tasks much faster with reusable workflow pipelines. I added support for favorite workflows with up to 12 transformation steps, bounded regex find/replace, keyboard shortcuts (Ctrl+Alt+1 through Ctrl+Alt+9) for instantly launching workflows and templates, new paste formats including plain text, Markdown quotes, and JSON strings, plus workflow import/export for sharing or backing up custom setups. I also upgraded the database to schema v6 so workflows are included in backups, and polished the workflow editor and quick-action integration to make everything feel more seamless. Before releasing, I verified the project with TypeScript checks, a production frontend build, 39 Rust tests, interactive UI testing in both light and dark themes, and native MSI/NSIS builds.
Clipboard++ v0.8.0 is finished and officially live! This update adds a much smarter rules system for automatically organizing clipboard content. Clipboard++ can now track the source application and apply priority-ordered rules with AND conditions. Rules can match clips by application, content type, language, URL domain, or regex. I also added automatic actions based on those rules, including pinning clips, adding them to collections, applying tags, and triggering workflows. The new Rule Manager lets you reorder rules, test them inline, and export/import portable rule presets. Rules are also included in local backups, and the SQLite database has been upgraded to schema v7. Before releasing, I ran 44 Rust tests, TypeScript checks, production builds, browser UI testing, and the full GitHub CI/release workflows. Both MSI and NSIS installers were successfully built and published.
v0.9.0 is complete and published. This update was a pretty substantial one for Clipboard++. I added temporary clips with expiration timers, burn-after-paste, bulk controls, smart-rule automation, and backup support. I also updated the SQLite database to schema v8 to support the new functionality. A big part of this release was making sure everything actually held together after all the changes. All 46 Rust tests pass, TypeScript checks pass, and I visually verified both themes. I also built and tested both the MSI and NSIS installers.
This release adds one of the biggest features yet: a native Quick Paste overlay designed around keyboard-first searching and pasting. You can now quickly find clipboard entries without leaving what you’re doing, with filters for Recent, Pinned, Temporary, and source applications. I also added active-monitor positioning and full-library window restoration, so the UI behaves much more naturally across multiple monitors. Onboarding and accessibility got attention too, with a first-run guide and several accessibility improvements. Under the hood, Clipboard++ moved to SQLite schema v9, including integrity checks and recovery snapshots. I also tested the application with 5,000-entry clipboard histories to make sure the larger datasets remain manageable. Before publishing, I ran the full validation stack: 51 Rust tests, TypeScript checks, formatting, production frontend builds, visual QA, MSI packaging, and NSIS packaging.
Spent this session finishing and publishing Clipboard++ v1.1.0. The main focus was making the paste workflow much faster for users who prefer keyboard-driven interaction. I added a new Paste Queue that can be opened with Ctrl+Q, allowing clipboard entries to be reordered with Alt+↑ and Alt+↓, pasted individually with automatic advancement, or pasted as an entire queue. Separators can also be customized depending on how the queued content should be combined. I also added reusable named paste stacks, along with improvements to the favorite workflow and plain-text actions in Quick Paste. These features make Clipboard++ more useful for repetitive workflows where the same groups of clipboard items need to be pasted repeatedly. Under the hood, I updated the SQLite database to schema v10 and expanded the backup support to account for the new data. I also ran the full validation suite, including 53 Rust tests, TypeScript checks, production builds, visual QA, CI, and the GitHub release workflow.
Worked for this session on a major upgrade to Clipboard++’s search experience. v1.2.0 is now live with a much more powerful way to find clips across large histories. I added SQLite FTS5 Power Search, supporting phrases, exclusions, and structured search operators, along with search suggestions, removable filter chips, and match highlighting. I also added Smart Views, allowing useful searches to be saved and reused locally. Under the hood, this release includes the schema v11 migration plus backup and restore support for Smart Views. I also made additional responsive and light/dark Windows 11 UI improvements. One of the biggest things I wanted to verify was that the new search system would remain fast with large clipboard histories. Testing showed approximately 0.90 ms searches with 10,000 entries and 1.05 ms with 50,000 entries. Validation passed across CI and the release workflow, and v1.2.0 is now publicly released.
Clipboard++ v1.3.0 is now complete and published! This update focused on making clipboard history much more powerful and recoverable. I added a full clipboard editor with syntax preview, along with revision history that shows line-by-line differences between versions. Clipboard entries can now also be sent to a Recycle Bin, where they can be restored, permanently deleted, or undone exactly. I also added a duplicate-and-edit workflow and made expired and burn-after-reading clips recoverable. The backup format was updated as well so revisions and deleted items are preserved during backups and restores. During visual QA, I found and fixed a stale-row transition issue that could cause the clipboard list to display outdated information after changes.
Clipboard++ v1.4.0 is now live. This release adds a full-resolution Image Workspace with non-destructive cropping, along with editable and searchable OCR with support for selecting installed Windows languages. Images can now be exported as PNG, JPEG, or WebP, and the workspace also provides image metadata, transparency information, and an option to reveal the file in File Explorer. I also added schema v13 and backup support for OCR metadata. Before releasing, I ran the full native test suite with all 63 tests passing, verified the production build, completed visual QA, and confirmed that the GitHub CI and release workflows passed. The main worktree is clean and v1.4.0 is tagged.
v1.5.0 is finally complete and published! This was a pretty major update for Clipboard++, adding a full editor for modifying captured images while keeping the original clips untouched. The biggest part of this update was adding a bunch of editing tools, including permanent redaction, blur, pixelation, highlighting, shapes, arrows, pen drawing, and text. I also added undo/redo and made the editor responsive for different Windows 11 layouts. You can now copy or export your edited result, or save it as an entirely new clip. I also added OCR for edited regions, including secure handling of the metadata needed for redactions. A big focus of this release was making sure the native rendering stays bounded for both performance and safety. Most importantly, the original image is never modified when making edits. I also spent a lot of time validating the release instead of just assuming everything worked. TypeScript and production builds passed, all 66 Rust tests passed, and both MSI and NSIS installers built successfully. I also went through desktop and compact visual QA and checked for console errors. The GitHub CI and release workflows were tested as well, and everything is now published.
Clipboard++ v1.5.1 is focused on making the app feel calmer and more at home on Windows. I replaced the card-heavy clipboard history with a flatter list, reduced the purple styling, improved typography and metadata readability, and gave Quick Paste the same cleaner visual treatment. Keyboard controls and existing workflows remain unchanged. I also rewrote the README around the actual product, added real screenshots, and documented the Power Search benchmark with its hardware, query, and testing method. Before publishing, I tested compact window sizes, ran all 66 active Rust tests, built both Windows installers, and verified the release through GitHub Actions.
Ships:
I built Clipboard++, a desktop clipboard manager designed to make copying and pasting much faster for programmers, students, and anyone who frequently reuses text or images. Windows’ built-in clipboard history is fairly limited, so I wanted to create something that makes organizing and finding previous clipboard items effortless. Along the way I added searchable clipboard history, favorites, image clipboard support with local OCR, automatic local clip naming, collections and tags, privacy controls, a command palette, bulk organization tools, customizable themes, and portable backup/restore. The biggest challenge was making all of the features work together while keeping the application responsive and reliable. I also spent a lot of time testing edge cases, preserving existing user data during updates, and making sure privacy-sensitive content could be excluded from history. I’m most proud that Clipboard++ has grown into something I would genuinely use every day. It has gone through multiple public releases, each adding meaningful quality-of-life improvements rather than just cosmetic changes. To test the project, download the Windows installer from the GitHub Releases page (or build it from source), launch Clipboard++, copy text or images as you normally would, and try searching, pinning, tagging, renaming, organizing, and restoring clipboard items. The project is completely local, so no account or internet connection is required after installation.
Since the last ship, Clipboard++ has gone through a pretty massive expansion, with the focus shifting from a simple clipboard manager into a much more complete productivity tool. The biggest changes started with the workflow system. I added reusable workflows with multiple transformation steps, keyboard shortcuts, additional paste formats, and import/export support. This was followed by a rules engine that can automatically organize clips based on things like source application, content type, language, URL domains, and regex matches. Rules can perform actions such as pinning clips, adding tags or collections, and triggering workflows. I then expanded temporary clipboard functionality with expiration timers, burn-after-paste, bulk controls, and smart-rule automation. The backup system has also grown alongside these features, with each database migration preserving more of the application’s data. The paste workflow received another major upgrade with the native Quick Paste overlay and a keyboard-first Paste Queue. Quick Paste supports filtering by recent, pinned, temporary, and source application clips, while the Paste Queue allows clips to be reordered, pasted individually with automatic advancement, or pasted as a complete queue. Named paste stacks and configurable separators make it especially useful for repetitive tasks. Search has also been completely reworked. Clipboard++ now uses SQLite FTS5 for much faster full-text searching, including phrases, exclusions, structured operators, suggestions, filter chips, and match highlighting. Searches can be saved locally as Smart Views and included in backups. Performance testing reached roughly 0.90 ms for 10,000 entries and 1.05 ms for 50,000 entries. Most recently, I focused on making clipboard data safer and more recoverable. Clipboard entries can now be edited directly with syntax preview, and every edit can be tracked through revision history with line-by-line diffs. Deleted clips go into a Recycle Bin where they can be restored, permanently deleted, or undone. Clips that expire or use burn-after-reading can also be recovered. Backups now preserve revisions and deleted items as well. Across these releases, the SQLite schema has progressed from v5 through v11 as the application gained more functionality. I’ve repeatedly tested migrations, backups, large clipboard histories, both Windows 11 themes, and native installers to make sure the growing feature set remains reliable. Clipboard++ has gone from a basic clipboard history application to a much more complete system for searching, transforming, organizing, automating, and recovering clipboard content. Thank you all so much for the support!!!
Shipped Clipboard++ v1.5.1! This update introduces a cleaner Windows-style interface, a flatter clipboard list, improved Quick Paste readability, real product screenshots, and documented search benchmarks....
|
1792882055.198709
|
1793746055.198709
|
|
42116
|
Ile by @Leftie | Stardance
|
Leftie
|
1
|
58.98
|
810
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-24T01:50:52Z", "hours": 58.0, "multiplier": 13.97, "payout": 810, "blessing": "neutral", "text": "I made Ile, an embedded scripting language! It uses a recursive descent parser to build an abstract syntax tree and then walks the tree to execute. The hardest part was when I would run into tiny little problems, like Rust giving lifetime errors, and not knowing how to solve them immediately. I’m proudest of the parsing logic. It’s the longest source file I’ve ever written, and it took awhile to figure out. To test Ile, you can download it from the GitHub releases and run some of its example programs.", "repo": "https://github.com/left-alert-chaos/ile", "demo": "https://crates.io/crates/ile"}]...
|
[{"post_id": 57800, "ts": "202 [{"post_id": 57800, "ts": "2026-08-30T03:01:58Z", "hours": 0.9814, "text": "Devlog 14: …oh So I’ve been doing my development on Ubuntu, which, as a Linux distro, is UNIX-based, and uses just \\n for newlines. However, I haven’t done any testing on Windows, and Houston, we have a problem. I still don’t have all my ratings yet, but someone was kind enough to create a github issue saying that Ile doesn’t work on Windows. I hadn’t thought to support it, but Windows uses \\r\\n for newlines! This broke the tokenizer, and caused the language to be unusable on non-UNIX-based systems. It was a one-line fix, but I already have 10 ratings, so I can only hope they aren’t too negative for having bad Windows support.😟 P.S. I guess this means Windows is officially as outdated as a typewriter!"}, {"post_id": 53454, "ts": "2026-08-24T00:51:03Z", "hours": 5.0833, "text": "Devlog 13: Ship time! I’ve been working on getting everything ready to ship, and I think it’s almost time! I’ve fixed some bugs, added more tests, published to crates.io , and created a GitHub release! Now, I’ll make sure I have good instructions in my README, and I’ll be ready to go!"}, {"post_id": 52730, "ts": "2026-08-23T01:49:50Z", "hours": 5.53, "text": "Devlog 12: Scoping is hard I’ve been working on getting Ile ready to ship, and I had a small, significant feature to implement: scoping. This is basically when a function is called and uses the scope that it was a part of when it was created instead of the scope it was called in. This was hard . To implement this, my first thought was write yet another lookup function to find the correct module’s stack and walk the function in the stack. Unfortunately, the compiler didn’t like this. I couldn’t get it done without having 2 different mutable references to the stack at the same time, so it was off the table. What I ended up going for was when a function is called, it clones (memory-efficient, amirite?!) its entire scope and walks inside it. After the function executes, it then sets the value of its module’s scope to the current value of the scope it just walked in, so as to update it with any changes. Makes sense, right? RIGHT?! Anyway, there isn’t really a picture to show, so here’s tests passing."}, {"post_id": 51428, "ts": "2026-08-21T04:01:56Z", "hours": 4.3419, "text": "Devlog 11: I don’t even know I’m hoping to ship tomorrow, so I’m fixing up the language to be usable. I’ve been writing some documentation, so I have a little starter guide now. I also learned that Ile can use as little as one thirtieth the ram of Node.js! That’s definitely going in the features section."}, {"post_id": 50052, "ts": "2026-08-19T02:44:43Z", "hours": 5.3528, "text": "Devlog 10: asdf I’ve been trying to add a GUI system to the standard library. Because I don’t want any dependencies, I came up with the following harebrained scheme: Write a Python script that formats its stdin in a Tkinter window to draw a GUI When the function to create a window is called, spawn Python as a sub-process and send the text to be displayed to its input via a pipe Unfortunately, this doesn’t work. The script works when run on its own, but when run by Ile it just doesn’t launch a window. I couldn’t figure this out, so the GUI system (VeBaGu, or Very Bad GUI) is staying, albeit in an unstable beta state. On a side note, I’ve also decided to ditch the editor idea and just focus on the language; this Stardance project is now just Ile, not Crocodile."}, {"post_id": 49045, "ts": "2026-08-17T17:08:49Z", "hours": 1.5578, "text": "Devlog 9: Hello, world! I didn’t do that much work for this devlog, but I did achieve 2 important things: Added comment support Added bindings to println!() and stdin This means that Ile, as demonstrated below, can now read its stdin and write to stdout !"}, {"post_id": 48620, "ts": "2026-08-17T02:44:43Z", "hours": 5.3911, "text": "Devlog 8: We have language! If you couldn’t tell, that was a play on “we have liftoff!”. I didn’t add a rocket emoji, for obvious reasons. Anyway, I have great news: Ile is almost a usable language! Today, I added loops and operators, so it can iterate and do math now! My for loop is a tad different than other languages, so here’s the gist: every for loop has a condition and a block. Every iteration, the condition runs. If it returns something , the block runs. Otherwise, the loop exits. Because I made let statements return the value they assign, you can have syntax that looks like this : for let x = iterator.next() {} I’m really proud of how my syntax is turning out overall. There’s still not much to screenshot; I haven’t written the logic to interface with Rust, so there’s no println yet. I do have some more test coverage, though. There was some difficulty getting break to work, however. For some reason, the loop it was a part of would always keep going. Eventually, I figured out why: It was being removed from the stack at the end of the code block that generated it. To fix this, I added some logic to re-push it to the stack if it got popped."}, {"post_id": 47258, "ts": "2026-08-15T02:01:37Z", "hours": 4.0222, "text": "Devlog 7: Running before I can run For some reason, I felt like instead of finishing the syntax fundamentals, I would skip directly to object-oriented (ish) patterns. In this case, we have a bunch of attributes that can be accessed and modified. Below is a snippet of some OOP concepts in practice:"}, {"post_id": 46593, "ts": "2026-08-13T22:47:35Z", "hours": 2.6758, "text": "Devlog 6: {insert dark joke about lifetimes} I just spent a frustratingly long amount of time figuring out why Rust didn’t like my lifetimes. I don’t even remember what I did to make it compile. This was fun . However, after figuring that out, I wrote the walk methods for a few NodeType s. Here’s the stack after a simple program finishes, and the program that was run:"}, {"post_id": 45535, "ts": "2026-08-12T02:37:00Z", "hours": 3.505, "text": "Devlog 5: Operators I started work on the AST (abstract syntax tree) walking algorithm today. I didn’t get very far, but one of the things I did do was I fixed operator parsing. Before, if you were to parse something like 15 > 5 && 5 < 10 , it would have been a greater-than operator with a boolean operator as a child, and that doesn’t work. Therefore, I had to write some code to convert that broken operator into a boolean operator with mathematical children. The algorithm didn’t make much sense in my head, so I drew it out on paper and that made it pretty easy to write. Below is the illustration I made and the code it became."}, {"post_id": 44922, "ts": "2026-08-11T00:03:53Z", "hours": 3.7761, "text": "Devlog 4: I finished the parser! I wrote the parser, which takes the tokenized code and converts it into a usable, in-memory representation. After fixing the bugs from yesterday, I wrote some logic to parse a function block and the rest of the syntax was easy. Running main.rs now prints out a representation of a parsed AST. Now all I have to do is: make the AST walkable, so I can actually execute the code write logic to facilitate interop with Rust The first image is some example Ile code, and the second is some of the AST that is generated from it."}, {"post_id": 44391, "ts": "2026-08-10T03:09:12Z", "hours": 7.8347, "text": "Devlog 3: An almost-broken parser! I made a very basic AST parser! The AST (abstract syntax tree) is the in-memory representation of the code as a tree. This took a really long time. My machine froze and my interpreter produced incomprehensible errors about wanting a word token, but in the end cargo test passed, so I’m happy. It also doesn’t support anything other than function calls, but this is a great first step in creating an actually walkable AST."}, {"post_id": 39848, "ts": "2026-08-03T03:22:22Z", "hours": 1.7778, "text": "Devlog 2 I started work on the AST builder. I decided that the algorithm will use delimiters to decide which tokens correspond to which AST node and I’m working on a method for Node that determines how to add a child based on the Node ‘s type and the child’s type. The screenshot is some of the code for Node ."}, {"post_id": 39114, "ts": "2026-08-01T20:28:30Z", "hours": 7.0919, "text": "Devlog 1: Building blocks I’ve been focusing on the scripting language, Ile, because to be honest the editor is the boring part. So far, I have project structure and some fundamentals–I’ve written the tokenizer and some stack-switching logic. For those who don’t know, the tokenizer is responsible for taking a blob of (hopefully) human-readable source code and converting it into tokens , which are used later on to build an abstract syntax tree. For now, all I’m concerned about is that cargo test passes!"}]...
|
Title: Ile by @Leftie | Stardance
Devlogs:
Devlog Title: Ile by @Leftie | Stardance
Devlogs:
Devlog 1: Building blocks I’ve been focusing on the scripting language, Ile, because to be honest the editor is the boring part. So far, I have project structure and some fundamentals–I’ve written the tokenizer and some stack-switching logic. For those who don’t know, the tokenizer is responsible for taking a blob of (hopefully) human-readable source code and converting it into tokens , which are used later on to build an abstract syntax tree. For now, all I’m concerned about is that cargo test passes!
Devlog 2 I started work on the AST builder. I decided that the algorithm will use delimiters to decide which tokens correspond to which AST node and I’m working on a method for Node that determines how to add a child based on the Node ‘s type and the child’s type. The screenshot is some of the code for Node .
Devlog 3: An almost-broken parser! I made a very basic AST parser! The AST (abstract syntax tree) is the in-memory representation of the code as a tree. This took a really long time. My machine froze and my interpreter produced incomprehensible errors about wanting a word token, but in the end cargo test passed, so I’m happy. It also doesn’t support anything other than function calls, but this is a great first step in creating an actually walkable AST.
Devlog 4: I finished the parser! I wrote the parser, which takes the tokenized code and converts it into a usable, in-memory representation. After fixing the bugs from yesterday, I wrote some logic to parse a function block and the rest of the syntax was easy. Running main.rs now prints out a representation of a parsed AST. Now all I have to do is: make the AST walkable, so I can actually execute the code write logic to facilitate interop with Rust The first image is some example Ile code, and the second is some of the AST that is generated from it.
Devlog 5: Operators I started work on the AST (abstract syntax tree) walking algorithm today. I didn’t get very far, but one of the things I did do was I fixed operator parsing. Before, if you were to parse something like 15 > 5 && 5 < 10 , it would have been a greater-than operator with a boolean operator as a child, and that doesn’t work. Therefore, I had to write some code to convert that broken operator into a boolean operator with mathematical children. The algorithm didn’t make much sense in my head, so I drew it out on paper and that made it pretty easy to write. Below is the illustration I made and the code it became.
Devlog 6: {insert dark joke about lifetimes} I just spent a frustratingly long amount of time figuring out why Rust didn’t like my lifetimes. I don’t even remember what I did to make it compile. This was fun . However, after figuring that out, I wrote the walk methods for a few NodeType s. Here’s the stack after a simple program finishes, and the program that was run:
Devlog 7: Running before I can run For some reason, I felt like instead of finishing the syntax fundamentals, I would skip directly to object-oriented (ish) patterns. In this case, we have a bunch of attributes that can be accessed and modified. Below is a snippet of some OOP concepts in practice:
Devlog 8: We have language! If you couldn’t tell, that was a play on “we have liftoff!”. I didn’t add a rocket emoji, for obvious reasons. Anyway, I have great news: Ile is almost a usable language! Today, I added loops and operators, so it can iterate and do math now! My for loop is a tad different than other languages, so here’s the gist: every for loop has a condition and a block. Every iteration, the condition runs. If it returns something , the block runs. Otherwise, the loop exits. Because I made let statements return the value they assign, you can have syntax that looks like this : for let x = iterator.next() {} I’m really proud of how my syntax is turning out overall. There’s still not much to screenshot; I haven’t written the logic to interface with Rust, so there’s no println yet. I do have some more test coverage, though. There was some difficulty getting break to work, however. For some reason, the loop it was a part of would always keep going. Eventually, I figured out why: It was being removed from the stack at the end of the code block that generated it. To fix this, I added some logic to re-push it to the stack if it got popped.
Devlog 9: Hello, world! I didn’t do that much work for this devlog, but I did achieve 2 important things: Added comment support Added bindings to println!() and stdin This means that Ile, as demonstrated below, can now read its stdin and write to stdout !
Devlog 10: asdf I’ve been trying to add a GUI system to the standard library. Because I don’t want any dependencies, I came up with the following harebrained scheme: Write a Python script that formats its stdin in a Tkinter window to draw a GUI When the function to create a window is called, spawn Python as a sub-process and send the text to be displayed to its input via a pipe Unfortunately, this doesn’t work. The script works when run on its own, but when run by Ile it just doesn’t launch a window. I couldn’t figure this out, so the GUI system (VeBaGu, or Very Bad GUI) is staying, albeit in an unstable beta state. On a side note, I’ve also decided to ditch the editor idea and just focus on the language; this Stardance project is now just Ile, not Crocodile.
Devlog 11: I don’t even know I’m hoping to ship tomorrow, so I’m fixing up the language to be usable. I’ve been writing some documentation, so I have a little starter guide now. I also learned that Ile can use as little as one thirtieth the ram of Node.js! That’s definitely going in the features section.
Devlog 12: Scoping is hard I’ve been working on getting Ile ready to ship, and I had a small, significant feature to implement: scoping. This is basically when a function is called and uses the scope that it was a part of when it was created instead of the scope it was called in. This was hard . To implement this, my first thought was write yet another lookup function to find the correct module’s stack and walk the function in the stack. Unfortunately, the compiler didn’t like this. I couldn’t get it done without having 2 different mutable references to the stack at the same time, so it was off the table. What I ended up going for was when a function is called, it clones (memory-efficient, amirite?!) its entire scope and walks inside it. After the function executes, it then sets the value of its module’s scope to the current value of the scope it just walked in, so as to update it with any changes. Makes sense, right? RIGHT?! Anyway, there isn’t really a picture to show, so here’s tests passing.
Devlog 13: Ship time! I’ve been working on getting everything ready to ship, and I think it’s almost time! I’ve fixed some bugs, added more tests, published to crates.io , and created a GitHub release! Now, I’ll make sure I have good instructions in my README, and I’ll be ready to go!
Devlog 14: …oh So I’ve been doing my development on Ubuntu, which, as a Linux distro, is UNIX-based, and uses just \n for newlines. However, I haven’t done any testing on Windows, and Houston, we have a problem. I still don’t have all my ratings yet, but someone was kind enough to create a github issue saying that Ile doesn’t work on Windows. I hadn’t thought to support it, but Windows uses \r\n for newlines! This broke the tokenizer, and caused the language to be unusable on non-UNIX-based systems. It was a one-line fix, but I already have 10 ratings, so I can only hope they aren’t too negative for having bad Windows support.😟 P.S. I guess this means Windows is officially as outdated as a typewriter!
Ships:
I made Ile, an embedded scripting language! It uses a recursive descent parser to build an abstract syntax tree and then walks the tree to execute. The hardest part was when I would run into tiny little problems, like Rust giving lifetime errors, and not knowing how to solve them immediately. I’m proudest of the parsing logic. It’s the longest source file I’ve ever written, and it took awhile to figure out. To test Ile, you can download it from the GitHub releases and run some of its example programs....
|
1792986750.2619774
|
1793073150.2619774
|
|
40484
|
RaidenScript by @RaidenTechnology | Stardance
|
RaidenTechnology
|
2
|
58.97
|
231
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-23T11:46:51Z", "hours": 31.0, "multiplier": 10.41, "payout": 104, "blessing": "neutral", "text": "RaidenScript v0.2 Update I wrote RaidenScript (RS) from scratch in C++20 as a small embeddable scripting language. In Ship #1 I had it running in three hosts. Since then I gave it a browser you can try it in, and I turned the Minecraft host into a real game running on a live server. I put the language in a browser. I compiled the C API to WebAssembly, served it from GitHub Pages, and wrote an editor with a Run button and four example programs: raidentechnology.github.io/raidenscript. I send nothing to a server; the page is the interpreter. I stopped treating the Minecraft host as a demo. I wrote 144 commits on it since the last devlog, and I keep the rules out of Java entirely: they sit in one .rai file the server loads at boot and reloads while players are online. I wrote a whole farming layer as script rules. Every crop got its own tool with its own level and rarity ladder, and I added tool enchants, XP bottles, an upgrade bench, and a 20 minute contest with medals and a shop of its own. I added pests. Twelve species, a spawn engine I tied to whatever crop is planted, a five-tier vacuum to kill them with, and a loot table I hooked into the same farming-luck stat every other system reads. I built a garden around it: 8 plots, a regeneration engine that rebuilds 13 farm patterns, 76 visitor NPCs I gave 53 signed skins, and a copper economy I priced off the live Bazaar API instead of numbers I made up. I added one host primitive, taslakModel, and let the script choose the model an item wears. Adding an item is now a script edit and nothing else. I fixed three bugs the live server found and no test of mine would have. An item-identity gate was cancelling every right click unconditionally, so the grappling hook silently never fired. The area hoe was catching its own synthetic event and moving the stack twice. And one wrong price in a shop table was failing the entire script at boot. Why did I do it like this? Because I think a language is judged by what runs on it, not by its grammar. The strongest thing I can say about my embedding API is that a 10,000 line ruleset runs on it every night, on a real server, with real players. Because I lose reviewers at the install wall. For Ship #1 I asked people to clone a repo and build it with MinGW. Now I ask for one click, and I am handing them the same interpreter, not a simplified twin. Because every rule I move out of Java is a rule I can change without a restart. I left no compile step in the script layer, so /rai reload changes the balance of a live game between two swings of a sword. Because item models were the last thing still forcing me into Java. I closed that hole, and I now keep the Java side as infrastructure only: it knows how to talk to the server and nothing about what the game is. Because I wanted the contest, the pests and the visitor queue to stress the C boundary. I pass numbers in the array and let strings travel beside it, and not one of these systems made me widen that contract. Because a bug a player hits at 2 AM is worth more to me than a bug I find in my own suite. All three above came from the server. Source (MIT): github.com/RaidenTechnology/raidenscript", "repo": "https://github.com/RaidenTechnology/raidenscript", "demo": "https://raidentechnology.github.io/raidenscript/"}, {"ship_num": 2, "ts": "2026-07-28T10:10:56Z", "hours": 7.0, "multiplier": 17.73, "payout": 127, "blessing": "neutral", "text": "RaidenScript v0.1 — an embeddable scripting language written from scratch in C++20. WHAT IT IS A small language (29 keywords) with Python’s readability and JavaScript’s runtime model, built to go inside another program and make it scriptable. The same interpreter runs in three hosts, and each one has a working demo in the repo: Terminal — native binary, “rai program.rai”, plus a REPL Browser — C API compiled to WebAssembly, running an animated store page JVM — C API through JNI, running a Paper Minecraft plugin The demo link is my shipped game STAR BREAKER: one of its weapons is not defined in the game at all, it is a RaidenScript file the game loads and runs through the WebAssembly build. WHAT IS IN IT Lexer, parser, resolver, tree-walking interpreter and REPL, all hand-written; no parser generator, no dependencies. 16 example programs that double as the regression suite, 20 C API checks, 7 WebAssembly checks, zero compiler warnings. A recursion-depth guard so a runaway script raises a catchable error instead of killing the host process — verified separately on native, wasm and the JVM. The cover image was computed pixel by pixel by a RaidenScript program (demo/kapak/kapak-ascii.rai) — no graphics library, in the program or in the language. HOW TO TRY IT git clone, then “make” (w64devkit/MinGW on Windows, gcc elsewhere), then “rai examples/01-temeller.rai”, or just “rai” for the REPL. The README is a full manual: language guide, standard library, embedding walkthrough. Known limits are written down there rather than hidden: an exception escaping a host function leaks stack, string += is quadratic, and a script returning a string to rs_call still yields 0. AI SPLIT The design of the language and its core — lexer, parser, resolver, interpreter, REPL, C API, string channel — is mine and was written by me. The host bindings, the demo apps, and this week’s seven interpreter bug fixes are AI-written from my designs and my audit. Logged hours are my editor time only. Source (MIT): github.com/RaidenTechnology/raidenscript", "repo": "https://github.com/RaidenTechnology/raidenscript", "demo": "https://raidentechnology.github.io/raidenscript/"}]...
|
[{"post_id": 53014, "ts": "202 [{"post_id": 53014, "ts": "2026-08-23T12:15:50Z", "hours": 20.9703, "text": "RaidenScript: the cover is a program, not a picture I gave the project a red and black cover, and I did it without opening an image editor. The cover generator is a RaidenScript program that prints a plain PPM to stdout, so I changed the palette in the script and ran it again: three radial glows, a faint grid, a vertical gradient on the bolt, and a 5x7 bitmap font that is data inside the file, not a system font. It computes 315,000 pixels in 43 seconds. That is my tree-walking interpreter doing arithmetic in a while loop, with no graphics library in the program and none in the language. My first render was wrong and I had to say so. The old cover put a turquoise bolt on a violet field, so the contrast came from hue. In red on red there is no hue left to lean on, and the bolt sank into the background. I cut the background glow to a third and pushed the bolt to a near-white core, so the contrast now comes from brightness. I cleaned the repository behind it. My README still linked to SPEC.md and WORKLOG.md after I deleted them, so anyone cloning it hit two dead links on the front page. I removed those links and rewrote the root README and two demo READMEs without tables. Why did I do it like this? Because a cover drawn in an image editor says nothing about my language, and a cover computed by it is the smallest honest benchmark I own. If the language cannot fill 315,000 pixels, I want to know that before someone else finds out. Because 43 seconds is a real number and I am not hiding it. It is fine for a cover I render once, and it is exactly why a bytecode VM sits on my roadmap instead of being marked done. Because a README that points at files I deleted is a promise I broke to whoever clones the repo, and that is the first thing a reviewer sees."}, {"post_id": 46568, "ts": "2026-08-13T21:53:11Z", "hours": 30.61, "text": "The loop that fixes the language is written in the language Since the last devlog the work split in two: a development loop that RaidenScript now drives itself, and a repository that finally stopped mixing the language with a game server. selfdev - the decision logic is a .rai file tools/selfdev.rai holds the loop’s rules: pick an area nobody touched last round, run the build, read the log, call the pass green or red, append its own entry to a round journal. Under it sits tools/rsdev.cpp, a sys.* host built on the same C API the browser game and the Minecraft plugin already use. The language had three hosts. The fourth one is its own toolchain. Pass 2 taught it what not to trust. tools/selfdev-build.cmd reported EXIT=0 for a run that failed to link. The cause is not in the language at all: exit /b inside a ( … ) » log 2>&1 block does not end a .cmd script, so control falls through to the final exit /b 0. A loop whose whole contract is “exit 0 means green” can commit on red - and it did once, on stale .o files. The rule now is read the log, not the exit code, and it is written in capitals at the top of SELFDEV-NOTES.md because I expect to forget it. What the passes actually fixed String building was quadratic. At 60,000 pieces: s += x took 1879 ms, s = s + x took 2382 ms, against a list.push + join baseline of 54 ms - 35x and 44x. Strings stay immutable (SPEC section 2), the fix is ownership: when the slot is the only owner, append in place. Both forms now run in about 25 ms. The indexed form d[k] += x was a separate code path and stayed quadratic after the first fix, so it took a second pass to catch. The measurement size was part of the test. At 24,000 pieces the s = s + x check passed green: 288 KB fits in L2 and quadratic copying looks cheap in cache. At 60,000 (720 KB) both went red. f-strings could not hold a quoted string inside an interpolation, although SPEC 9/3 said they could. f”{sys.read(“a.txt”)}” was a syntax error. The spec was right and the parser was wrong. A blank line in a CRLF file closed a block early. The lone \\r counted as content - the kind of bug that only shows up on someone else’s machine. Two C API bugs: rs_call could return an empty error message, and a nested rs_call corrupted the string channel of the outer primitive. The JVM bridge silently collapsed an int-returning host primitive to 0. Silent zeros are the worst class: the plugin keeps running and the numbers are simply wrong. 68 C API checks green, zero compiler warnings, sanitizer run clean. 29 keywords, still capped at 30. No C API signature changed. The branch split 227 commits had piled up unpushed and 216 of them were the Minecraft plugin demo. I reset main to origin, cherry-picked only the 13 language and tooling commits, and left the rest on its own branch. main is the language. Nothing else goes there. Most of the time logged on this project since the last devlog went into that plugin demo - the JVM binding exercised against a real server - and that branch is not on GitHub yet. The language fixes above came out of the unattended loop.I read every pass and hand-picked what entered main. The design, the spec and the original src/ are mine. Logged hours are my editor time only."}, {"post_id": 36295, "ts": "2026-07-28T09:44:35Z", "hours": 0.5578, "text": "Seven bugs, and the ones that were never reachable Last devlog promised a depth counter for the crash that hit all three hosts. I built it, then kept reading instead of building, and the audit found six more. THE COUNTER A script that recurses too deep does not raise an error. It kills the process. On a Minecraft server that means every player drops and the log has not one line about it - no Java exception, no hs_err file, exit code 127. The tempting fix is a bigger stack, but that only moves the wall: with -Xss16m the JVM dies at ~5000 frames instead of ~500, the same way. So the interpreter counts instead. Every script call goes through one function, and past the limit it raises an ordinary Error - catchable with try/catch, readable through rs_last_error. Picking the number mattered more than writing it. My notes said “4000”, my measurements said that was useless: native and wasm hit the wall near 1000 frames, a default JVM thread at ~500, because each script frame costs about 1.7 KB of native stack. A limit above the wall protects nobody. So: 800, and the JNI bridge drops it to 400 because it knows what stack it stands on. The counter also has to be restored no matter HOW a call exits - return, return signal, or exception. My restore lines covered two of those three paths; a destructor covers all three and cannot be forgotten. A CRASH ANY SCRIPT COULD TRIGGER \"a,b\".split(5) That was enough to kill the host. split assumed its argument was a string, dereferenced a checked cast without checking it, and got a null pointer. Eight builtins had the same line copied into them. In a standalone language that is a segfault. In an embedded one, any script author can take down the server with a typo. It is now a type error naming the method. OPERATORS THAT WERE NEVER REACHABLE The lexer produced tokens for & | ^ « ». The interpreter had the arithmetic for all five. Every test passed. But no rule in the parser ever read those tokens, so “flags & 4” got “expression expected, found ‘&’”, and the code in the other two layers had never once run. Three layers agreeing on a feature is not the same as three layers connected by it. The fix was four precedence levels, ordered like Python and C - no new keywords, so the language stays at 29 of 30. THE SMALL ONES throw Error(“amount missing”) reached the host as “”: the CLI path pulled out the message field, the embedding path did not. 2 ** 64 wrapped silently to 0. 1 « 64 was undefined behaviour - on x86 the CPU takes the shift count modulo 64, so it quietly evaluates to 1. And an exception thrown from a single-expression lambda left the interpreter in the lambda’s scope, so the catch block ran against the wrong variables. WHERE IT STANDS The C API suite is 20 checks now, five written for these bugs; the wasm suite 7; 11 examples still run; zero warnings. The guard is verified on native, wasm and JNI separately, and in each one the process was still alive after the limit was hit. Three problems stay open, in the README rather than hidden: an exception escaping a host function leaks stack, string += is quadratic, and a script returning a string to rs_call still yields 0. ON THE AI SPLIT This changes what I said last time, so I am saying it plainly. Until now AI had not touched src/. This round it did: I asked it to audit the interpreter and fix what it found, and the C++ in these seven fixes is AI-written from that audit. The language itself - lexer, parser, resolver, interpreter, REPL, C API, string channel - is still my design and was written by me. Host bindings and demo apps were already AI-written from my designs, as I said last devlog. Logged hours are my editor time only."}, {"post_id": 36104, "ts": "2026-07-27T23:51:06Z", "hours": 3.3964, "text": "One interpreter, three hosts Last devlog my language could define a weapon in my shipped game. Since then it left the browser too, and the way out taught me more than the way in. STRINGS WITHOUT LYING ABOUT NUMBERS The C boundary only carried doubles. That was a deliberate choice: a number is copied, so nobody has to ask who owns it. Then I tried to write a bank UI and stopped in the first ten minutes. An IBAN is text. An error message is text. The tempting fix is to pass a handle: “this double is really an index into a string table”. I did not do it. A contract like that is invisible, and the first time somebody misreads it the program moves the wrong money without a warning. So strings travel BESIDE the numbers instead of inside them. args[] did not change by a single byte, rs_host_fn kept its signature, and my already-shipped game’s bridge kept working untouched. Text is pulled by the script, not pushed by the host: script: iban = ui.input(\"iban\") host : reads the field name, returns the value THE 64 KILOBYTE FLOOR Then I asked whether the language could drive an animated web page, and measured instead of guessing. 490,000 host calls per second. 200 elements updated twice each = 1.45 ms, nine percent of a frame. Fine. What was not fine: recursion died at depth 130. Not with an error - with memory corruption. After it, the whole WebAssembly module was dead; I could not even open a fresh VM on it. Emscripten’s default stack is 64 KB, and a tree-walking interpreter spends several C++ frames per script frame. Adding -sSTACK_SIZE=8MB moved the safe depth past 1000 and turned overflow into a catchable error. Cost: the .wasm grew by three bytes. Then a worse one. If a host function throws, the exception unwinds through the interpreter’s frames without restoring the stack pointer, and that space never comes back. I measured the drift: 5,000 escaping exceptions took the safe depth from 1000 to 937. At 50,000 the module died. Fix: never let an exception cross the boundary - catch it in the bridge. THE THIRD HOST Then JNI, and the language went into a Minecraft server. Same C header, a different bridge, and the design copied deliberately: numbers in the array, strings in the channel beside it. The plugin is a custom enchanting table. Sixteen enchants, seven rarity tiers, slot limits per rarity, conflicts, an XP cost curve, and the block of text drawn on the item - all of it in one .rai file. The Java side is two classes that do not contain a single enchant name. Stats are written into the schema my existing combat plugin already reads, so enchants change real damage without one line changing in the plugins that were already there. Because there is no compile step, /rai reload changes the rules while players are online. A live server found a bug I had not: NamespacedKey only accepts [a-z0-9/._-] and my enchant ids are camelCase. The bridge’s catch turned what would have been a crash into a log line, and the log line named the key. THE SAME BUG THREE TIMES Native: depth 1000, then a silent death, exit code 127. WebAssembly: 130, then corruption. JVM: 500, then the whole server dies with no Java exception and no crash log. One cause - I recurse on the native stack and never count the depth. Three hosts made it obvious in a way one host never would have. That counter is next. ON THE AI SPLIT The core is mine: lexer, parser, resolver, interpreter, REPL, C API, the string channel. AI has not touched src/ and I checked the history before writing this. The host bindings and the demos are AI-written from my designs - the browser binding, the JNI bridge, and three demo apps. Logged hours are my editor time only."}, {"post_id": 35952, "ts": "2026-07-27T18:45:08Z", "hours": 2.4036, "text": "My language now defines a weapon in my shipped game Phase 1 gave RaidenScript a lexer, parser, resolver, interpreter and REPL. Today it got a design change of its own, and a way out of the terminal. TWO KEYWORDS, AND WHY THE FIRST VERSION WAS WEAK I had one keyword for pulling code in: use. I wanted hardware code to look different from application code, so I proposed include for boards and import for everything else. That rule was weak and I want to be honest about why. If include serial and import math do exactly the same thing, nothing stops anyone writing include math. A guide the compiler cannot check is not a guide, it is a convention with a syntax bill. So the difference moved onto something the compiler can enforce: import resolved at runtime: std library, a git repo, a pinned version include resolved when the host builds you in include now refuses quoted paths and @ “v0.3.1” version tags outright. On an ESP32 there is no filesystem and nothing to fetch, so a dependency needing the network at load time simply cannot be an include. Hardware and software separate as a side effect of a rule about resolution time — that is what earns two keywords instead of one. A file may use both, and that is the point: that is what a bridge looks like. 29 keywords now, hard-capped at 30 until v1.0. One slot left, and I would rather leave it empty than spend it on a synonym. A BUG ONLY TURKISH COULD PRODUCE Renaming use to import across 20 files, a bulk find-and-replace uppercased an i into U+0130 — the Turkish dotted capital, because in Turkish that is what the uppercase of i is. My editor did the case change in my own locale and handed C++ a character it cannot compile. The irony is sharp. RaidenScript deliberately accepts UTF-8 identifiers, so a Turkish variable name is legal in the language I am building. The language I am building it in has no such patience. OUT OF THE TERMINAL Then the embedding work: a C API, a WASM build, and one weapon. The C API was not the hard part. Lifetime was. Function values hold RAW pointers into the AST, and a host calls a script function long after loading it — so the VM has to own the source, the tree and the interpreter, and destroy them in the right order. One VM, one script; numbers across the boundary, not JSON. Then WASM aborted on the first return statement. Emscripten disables C++ exceptions by default, and this interpreter carries return, break and thrown errors on C++ exceptions. -fwasm-exceptions fixes it. The JS-based alternative would mean a trip to JavaScript on every single function return — unusable for a tree-walker. And the payoff: STAR BREAKER, the game I shipped last week, now has a weapon whose definition is not in the game. scripts/plazma.rai holds its damage, fire rate, spread and the shape of its shot. The engine calls fire(angle), the script calls back with game.spawnBullet, and the engine makes the bullets. The script only says where. Rarity, levels, reforges, evolution — all of it still works, untouched. The weapon is an ordinary table entry that happens to be filled from a language I wrote. I added a weapon rather than moving one: the game is shipped and its balance measured, so adding risks nothing. If the WASM fails to load, the weapon simply is not there. ON THE AI SPLIT The design is mine — the two keywords, the bridge pattern, the decision to add rather than move. I wrote the first pass of the rename; AI reviewed it, found what was missing, and wrote most of the embedding layer with me directing. That is more AI than my last devlog claimed, and I would rather correct it than let it stand. Repo (MIT): github.com/RaidenTechnology/raidenscript"}, {"post_id": 35673, "ts": "2026-07-27T08:35:48Z", "hours": 0.8014, "text": "I wrote a programming language. It runs. RaidenScript is an embeddable scripting language — the kind that goes inside another program and makes it programmable. It borrows readability from Python, the runtime model from JavaScript, optional types from C++, and declarative UI from HTML. Phase 1 is done: lexer, AST, parser, resolver, tree-walking interpreter, REPL. ~5,150 lines of C++20, zero warnings under -Wall -Wextra -Wpedantic -Wshadow -Wconversion. WHAT I DID FIRST WAS NOT WRITE CODE Phase 0 was pure design: a spec, a grammar, and 15 example programs — and no compiler at all. Writing those examples found 16 defects in the spec before a single line of the implementation existed. Two of them would have forced a rewrite later: Conditional expressions (a if cond else b) were missing from the grammar entirely — I typed one by reflex in example 4 and it couldn’t parse. => followed by { was genuinely ambiguous: block, or map literal? I took JavaScript’s answer — after =>, { is always a block, and returning a map needs ({…}). Finding this while writing the parser would have cost days. Then the parser found a third: my rule that brace-blocks suppress indentation was just wrong. It makes this impossible to write: register(\"hit\", (e) => { if e.critical: damage = damage * 2 }) Parentheses hold one expression; brace blocks hold statements, and statements need block structure. DECISIONS I’M HAPPY WITH Only nil and false are falsy. 0 and “” are truthy, which kills the classic if-count bug at the root. / always returns a float; // is integer division. C’s silent truncation is a bug factory. No package registry, ever. Modules resolve straight from a git repo, Go-style. I built the diagnostics engine before the lexer, because error messages bolted on afterwards always stay bolted on. Columns count UTF-8 characters, not bytes — so the caret lands correctly when a variable is named sayaç. Real output, Turkish for now (English messages are on the list): hata: beklenmeyen ‘!’ –> test.rai:3:7 | 3 | c = 5 ! 3 | ^ | = ipucu: olumsuzlama için ‘not’ kullan THE PART THAT MADE ME GRIN Example 15 is a calculator — a lexer, a Pratt parser and an evaluator, written in RaidenScript. I wrote it in Phase 0 as a rehearsal for the C++ I hadn’t written yet. Now it runs on the interpreter it was a rehearsal for: 2 ^ 3 ^ 2 gives 512, right-associative, not 64. The REPL I wrote by hand, and it immediately earned its keep by finding a bug nothing else could: Source::fromFile stripped the UTF-8 BOM, but the constructor didn’t. The REPL was the first code path to build a Source from an in-memory string instead of a file, so piped input carried a BOM into the lexer, which glued it onto the first identifier. A new entry point finds bugs no amount of staring finds. ON THE AI SPLIT The design is mine — spec, grammar, naming, and every decision above. Phases 0-6 of the implementation were written with AI assistance (Claude); the REPL, step 7, I wrote myself, and that is the mode from here on: I write the code, AI reviews it. WHAT’S NEXT Not phase 2. I’m skipping types and the bytecode VM and going straight to embedding — because a tree-walking interpreter is plenty fast for mod scripts, which run on events, not in the render loop. The goal: compile to WASM, bind a game.* API, and define one weapon in my published game STAR BREAKER using a language I wrote. A language nobody uses is a toy. A language shipping in a real product is not. Repo (MIT): github.com/RaidenTechnology/raidenscript"}]...
|
Title: RaidenScript by @RaidenTechnology | Stardan Title: RaidenScript by @RaidenTechnology | Stardance
Devlogs:
I wrote a programming language. It runs. RaidenScript is an embeddable scripting language — the kind that goes inside another program and makes it programmable. It borrows readability from Python, the runtime model from JavaScript, optional types from C++, and declarative UI from HTML. Phase 1 is done: lexer, AST, parser, resolver, tree-walking interpreter, REPL. ~5,150 lines of C++20, zero warnings under -Wall -Wextra -Wpedantic -Wshadow -Wconversion. WHAT I DID FIRST WAS NOT WRITE CODE Phase 0 was pure design: a spec, a grammar, and 15 example programs — and no compiler at all. Writing those examples found 16 defects in the spec before a single line of the implementation existed. Two of them would have forced a rewrite later: Conditional expressions (a if cond else b) were missing from the grammar entirely — I typed one by reflex in example 4 and it couldn’t parse. => followed by { was genuinely ambiguous: block, or map literal? I took JavaScript’s answer — after =>, { is always a block, and returning a map needs ({…}). Finding this while writing the parser would have cost days. Then the parser found a third: my rule that brace-blocks suppress indentation was just wrong. It makes this impossible to write: register("hit", (e) => { if e.critical: damage = damage * 2 }) Parentheses hold one expression; brace blocks hold statements, and statements need block structure. DECISIONS I’M HAPPY WITH Only nil and false are falsy. 0 and “” are truthy, which kills the classic if-count bug at the root. / always returns a float; // is integer division. C’s silent truncation is a bug factory. No package registry, ever. Modules resolve straight from a git repo, Go-style. I built the diagnostics engine before the lexer, because error messages bolted on afterwards always stay bolted on. Columns count UTF-8 characters, not bytes — so the caret lands correctly when a variable is named sayaç. Real output, Turkish for now (English messages are on the list): hata: beklenmeyen ‘!’ –> test.rai:3:7 | 3 | c = 5 ! 3 | ^ | = ipucu: olumsuzlama için ‘not’ kullan THE PART THAT MADE ME GRIN Example 15 is a calculator — a lexer, a Pratt parser and an evaluator, written in RaidenScript. I wrote it in Phase 0 as a rehearsal for the C++ I hadn’t written yet. Now it runs on the interpreter it was a rehearsal for: 2 ^ 3 ^ 2 gives 512, right-associative, not 64. The REPL I wrote by hand, and it immediately earned its keep by finding a bug nothing else could: Source::fromFile stripped the UTF-8 BOM, but the constructor didn’t. The REPL was the first code path to build a Source from an in-memory string instead of a file, so piped input carried a BOM into the lexer, which glued it onto the first identifier. A new entry point finds bugs no amount of staring finds. ON THE AI SPLIT The design is mine — spec, grammar, naming, and every decision above. Phases 0-6 of the implementation were written with AI assistance (Claude); the REPL, step 7, I wrote myself, and that is the mode from here on: I write the code, AI reviews it. WHAT’S NEXT Not phase 2. I’m skipping types and the bytecode VM and going straight to embedding — because a tree-walking interpreter is plenty fast for mod scripts, which run on events, not in the render loop. The goal: compile to WASM, bind a game.* API, and define one weapon in my published game STAR BREAKER using a language I wrote. A language nobody uses is a toy. A language shipping in a real product is not. Repo (MIT): github.com/RaidenTechnology/raidenscript
My language now defines a weapon in my shipped game Phase 1 gave RaidenScript a lexer, parser, resolver, interpreter and REPL. Today it got a design change of its own, and a way out of the terminal. TWO KEYWORDS, AND WHY THE FIRST VERSION WAS WEAK I had one keyword for pulling code in: use. I wanted hardware code to look different from application code, so I proposed include for boards and import for everything else. That rule was weak and I want to be honest about why. If include serial and import math do exactly the same thing, nothing stops anyone writing include math. A guide the compiler cannot check is not a guide, it is a convention with a syntax bill. So the difference moved onto something the compiler can enforce: import resolved at runtime: std library, a git repo, a pinned version include resolved when the host builds you in include now refuses quoted paths and @ “v0.3.1” version tags outright. On an ESP32 there is no filesystem and nothing to fetch, so a dependency needing the network at load time simply cannot be an include. Hardware and software separate as a side effect of a rule about resolution time — that is what earns two keywords instead of one. A file may use both, and that is the point: that is what a bridge looks like. 29 keywords now, hard-capped at 30 until v1.0. One slot left, and I would rather leave it empty than spend it on a synonym. A BUG ONLY TURKISH COULD PRODUCE Renaming use to import across 20 files, a bulk find-and-replace uppercased an i into U+0130 — the Turkish dotted capital, because in Turkish that is what the uppercase of i is. My editor did the case change in my own locale and handed C++ a character it cannot compile. The irony is sharp. RaidenScript deliberately accepts UTF-8 identifiers, so a Turkish variable name is legal in the language I am building. The language I am building it in has no such patience. OUT OF THE TERMINAL Then the embedding work: a C API, a WASM build, and one weapon. The C API was not the hard part. Lifetime was. Function values hold RAW pointers into the AST, and a host calls a script function long after loading it — so the VM has to own the source, the tree and the interpreter, and destroy them in the right order. One VM, one script; numbers across the boundary, not JSON. Then WASM aborted on the first return statement. Emscripten disables C++ exceptions by default, and this interpreter carries return, break and thrown errors on C++ exceptions. -fwasm-exceptions fixes it. The JS-based alternative would mean a trip to JavaScript on every single function return — unusable for a tree-walker. And the payoff: STAR BREAKER, the game I shipped last week, now has a weapon whose definition is not in the game. scripts/plazma.rai holds its damage, fire rate, spread and the shape of its shot. The engine calls fire(angle), the script calls back with game.spawnBullet, and the engine makes the bullets. The script only says where. Rarity, levels, reforges, evolution — all of it still works, untouched. The weapon is an ordinary table entry that happens to be filled from a language I wrote. I added a weapon rather than moving one: the game is shipped and its balance measured, so adding risks nothing. If the WASM fails to load, the weapon simply is not there. ON THE AI SPLIT The design is mine — the two keywords, the bridge pattern, the decision to add rather than move. I wrote the first pass of the rename; AI reviewed it, found what was missing, and wrote most of the embedding layer with me directing. That is more AI than my last devlog claimed, and I would rather correct it than let it stand. Repo (MIT): github.com/RaidenTechnology/raidenscript
One interpreter, three hosts Last devlog my language could define a weapon in my shipped game. Since then it left the browser too, and the way out taught me more than the way in. STRINGS WITHOUT LYING ABOUT NUMBERS The C boundary only carried doubles. That was a deliberate choice: a number is copied, so nobody has to ask who owns it. Then I tried to write a bank UI and stopped in the first ten minutes. An IBAN is text. An error message is text. The tempting fix is to pass a handle: “this double is really an index into a string table”. I did not do it. A contract like that is invisible, and the first time somebody misreads it the program moves the wrong money without a warning. So strings travel BESIDE the numbers instead of inside them. args[] did not change by a single byte, rs_host_fn kept its signature, and my already-shipped game’s bridge kept working untouched. Text is pulled by the script, not pushed by the host: script: iban = ui.input("iban") host : reads the field name, returns the value THE 64 KILOBYTE FLOOR Then I asked whether the language could drive an animated web page, and measured instead of guessing. 490,000 host calls per second. 200 elements updated twice each = 1.45 ms, nine percent of a frame. Fine. What was not fine: recursion died at depth 130. Not with an error - with memory corruption. After it, the whole WebAssembly module was dead; I could not even open a fresh VM on it. Emscripten’s default stack is 64 KB, and a tree-walking interpreter spends several C++ frames per script frame. Adding -sSTACK_SIZE=8MB moved the safe depth past 1000 and turned overflow into a catchable error. Cost: the .wasm grew by three bytes. Then a worse one. If a host function throws, the exception unwinds through the interpreter’s frames without restoring the stack pointer, and that space never comes back. I measured the drift: 5,000 escaping exceptions took the safe depth from 1000 to 937. At 50,000 the module died. Fix: never let an exception cross the boundary - catch it in the bridge. THE THIRD HOST Then JNI, and the language went into a Minecraft server. Same C header, a different bridge, and the design copied deliberately: numbers in the array, strings in the channel beside it. The plugin is a custom enchanting table. Sixteen enchants, seven rarity tiers, slot limits per rarity, conflicts, an XP cost curve, and the block of text drawn on the item - all of it in one .rai file. The Java side is two classes that do not contain a single enchant name. Stats are written into the schema my existing combat plugin already reads, so enchants change real damage without one line changing in the plugins that were already there. Because there is no compile step, /rai reload changes the rules while players are online. A live server found a bug I had not: NamespacedKey only accepts [a-z0-9/._-] and my enchant ids are camelCase. The bridge’s catch turned what would have been a crash into a log line, and the log line named the key. THE SAME BUG THREE TIMES Native: depth 1000, then a silent death, exit code 127. WebAssembly: 130, then corruption. JVM: 500, then the whole server dies with no Java exception and no crash log. One cause - I recurse on the native stack and never count the depth. Three hosts made it obvious in a way one host never would have. That counter is next. ON THE AI SPLIT The core is mine: lexer, parser, resolver, interpreter, REPL, C API, the string channel. AI has not touched src/ and I checked the history before writing this. The host bindings and the demos are AI-written from my designs - the browser binding, the JNI bridge, and three demo apps. Logged hours are my editor time only.
Seven bugs, and the ones that were never reachable Last devlog promised a depth counter for the crash that hit all three hosts. I built it, then kept reading instead of building, and the audit found six more. THE COUNTER A script that recurses too deep does not raise an error. It kills the process. On a Minecraft server that means every player drops and the log has not one line about it - no Java exception, no hs_err file, exit code 127. The tempting fix is a bigger stack, but that only moves the wall: with -Xss16m the JVM dies at ~5000 frames instead of ~500, the same way. So the interpreter counts instead. Every script call goes through one function, and past the limit it raises an ordinary Error - catchable with try/catch, readable through rs_last_error. Picking the number mattered more than writing it. My notes said “4000”, my measurements said that was useless: native and wasm hit the wall near 1000 frames, a default JVM thread at ~500, because each script frame costs about 1.7 KB of native stack. A limit above the wall protects nobody. So: 800, and the JNI bridge drops it to 400 because it knows what stack it stands on. The counter also has to be restored no matter HOW a call exits - return, return signal, or exception. My restore lines covered two of those three paths; a destructor covers all three and cannot be forgotten. A CRASH ANY SCRIPT COULD TRIGGER "a,b".split(5) That was enough to kill the host. split assumed its argument was a string, dereferenced a checked cast without checking it, and got a null pointer. Eight builtins had the same line copied into them. In a standalone language that is a segfault. In an embedded one, any script author can take down the server with a typo. It is now a type error naming the method. OPERATORS THAT WERE NEVER REACHABLE The lexer produced tokens for & | ^ « ». The interpreter had the arithmetic for all five. Every test passed. But no rule in the parser ever read those tokens, so “flags & 4” got “expression expected, found ‘&’”, and the code in the other two layers had never once run. Three layers agreeing on a feature is not the same as three layers connected by it. The fix was four precedence levels, ordered like Python and C - no new keywords, so the language stays at 29 of 30. THE SMALL ONES throw Error(“amount missing”) reached the host as “”: the CLI path pulled out the message field, the embedding path did not. 2 ** 64 wrapped silently to 0. 1 « 64 was undefined behaviour - on x86 the CPU takes the shift count modulo 64, so it quietly evaluates to 1. And an exception thrown from a single-expression lambda left the interpreter in the lambda’s scope, so the catch block ran against the wrong variables. WHERE IT STANDS The C API suite is 20 checks now, five written for these bugs; the wasm suite 7; 11 examples still run; zero warnings. The guard is verified on native, wasm and JNI separately, and in each one the process was still alive after the limit was hit. Three problems stay open, in the README rather than hidden: an exception escaping a host function leaks stack, string += is quadratic, and a script returning a string to rs_call still yields 0. ON THE AI SPLIT This changes what I said last time, so I am saying it plainly. Until now AI had not touched src/. This round it did: I asked it to audit the interpreter and fix what it found, and the C++ in these seven fixes is AI-written from that audit. The language itself - lexer, parser, resolver, interpreter, REPL, C API, string channel - is still my design and was written by me. Host bindings and demo apps were already AI-written from my designs, as I said last devlog. Logged hours are my editor time only.
The loop that fixes the language is written in the language Since the last devlog the work split in two: a development loop that RaidenScript now drives itself, and a repository that finally stopped mixing the language with a game server. selfdev - the decision logic is a .rai file tools/selfdev.rai holds the loop’s rules: pick an area nobody touched last round, run the build, read the log, call the pass green or red, append its own entry to a round journal. Under it sits tools/rsdev.cpp, a sys.* host built on the same C API the browser game and the Minecraft plugin already use. The language had three hosts. The fourth one is its own toolchain. Pass 2 taught it what not to trust. tools/selfdev-build.cmd reported EXIT=0 for a run that failed to link. The cause is not in the language at all: exit /b inside a ( … ) » log 2>&1 block does not end a .cmd script, so control falls through to the final exit /b 0. A loop whose whole contract is “exit 0 means green” can commit on red - and it did once, on stale .o files. The rule now is read the log, not the exit code, and it is written in capitals at the top of SELFDEV-NOTES.md because I expect to forget it. What the passes actually fixed String building was quadratic. At 60,000 pieces: s += x took 1879 ms, s = s + x took 2382 ms, against a list.push + join baseline of 54 ms - 35x and 44x. Strings stay immutable (SPEC section 2), the fix is ownership: when the slot is the only owner, append in place. Both forms now run in about 25 ms. The indexed form d[k] += x was a separate code path and stayed quadratic after the first fix, so it took a second pass to catch. The measurement size was part of the test. At 24,000 pieces the s = s + x check passed green: 288 KB fits in L2 and quadratic copying looks cheap in cache. At 60,000 (720 KB) both went red. f-strings could not hold a quoted string inside an interpolation, although SPEC 9/3 said they could. f”{sys.read(“a.txt”)}” was a syntax error. The spec was right and the parser was wrong. A blank line in a CRLF file closed a block early. The lone \r counted as content - the kind of bug that only shows up on someone else’s machine. Two C API bugs: rs_call could return an empty error message, and a nested rs_call corrupted the string channel of the outer primitive. The JVM bridge silently collapsed an int-returning host primitive to 0. Silent zeros are the worst class: the plugin keeps running and the numbers are simply wrong. 68 C API checks green, zero compiler warnings, sanitizer run clean. 29 keywords, still capped at 30. No C API signature changed. The branch split 227 commits had piled up unpushed and 216 of them were the Minecraft plugin demo. I reset main to origin, cherry-picked only the 13 language and tooling commits, and left the rest on its own branch. main is the language. Nothing else goes there. Most of the time logged on this project since the last devlog went into that plugin demo - the JVM binding exercised against a real server - and that branch is not on GitHub yet. The language fixes above came out of the unattended loop.I read every pass and hand-picked what entered main. The design, the spec and the original src/ are mine. Logged hours are my editor time only.
RaidenScript: the cover is a program, not a picture I gave the project a red and black cover, and I did it without opening an image editor. The cover generator is a RaidenScript program that prints a plain PPM to stdout, so I changed the palette in the script and ran it again: three radial glows, a faint grid, a vertical gradient on the bolt, and a 5x7 bitmap font that is data inside the file, not a system font. It computes 315,000 pixels in 43 seconds. That is my tree-walking interpreter doing arithmetic in a while loop, with no graphics library in the program and none in the language. My first render was wrong and I had to say so. The old cover put a turquoise bolt on a violet field, so the contrast came from hue. In red on red there is no hue left to lean on, and the bolt sank into the background. I cut the background glow to a third and pushed the bolt to a near-white core, so the contrast now comes from brightness. I cleaned the repository behind it. My README still linked to SPEC.md and WORKLOG.md after I deleted them, so anyone cloning it hit two dead links on the front page. I removed those links and rewrote the root README and two demo READMEs without tables. Why did I do it like this? Because a cover drawn in an image editor says nothing about my language, and a cover computed by it is the smallest honest benchmark I own. If the language cannot fill 315,000 pixels, I want to know that before someone else finds out. Because 43 seconds is a real number and I am not hiding it. It is fine for a cover I render once, and it is exactly why a bytecode VM sits on my roadmap instead of being marked done. Because a README that points at files I deleted is a promise I broke to whoever clones the repo, and that is the first thing a reviewer sees.
Ships:
RaidenScript v0.1 — an embeddable scripting language written from scratch in C++20. WHAT IT IS A small language (29 keywords) with Python’s readability and JavaScript’s runtime model, built to go inside another program and make it scriptable. The same interpreter runs in three hosts, and each one has a working demo in the repo: Terminal — native binary, “rai program.rai”, plus a REPL Browser — C API compiled to WebAssembly, running an animated store page JVM — C API through JNI, running a Paper Minecraft plugin The demo link is my shipped game STAR BREAKER: one of its weapons is not defined in the game at all, it is a RaidenScript file the game loads and runs through the WebAssembly build. WHAT IS IN IT Lexer, parser, resolver, tree-walking interpreter and REPL, all hand-written; no parser generator, no dependencies. 16 example programs that double as the regression suite, 20 C API checks, 7 WebAssembly checks, zero compiler warnings. A recursion-depth guard so a runaway script raises a catchable error instead of killing the host process — verified separately on native, wasm and the JVM. The cover image was computed pixel by pixel by a RaidenScript program (demo/kapak/kapak-ascii.rai) — no graphics library, in the program or in the language. HOW TO TRY IT git clone, then “make” (w64devkit/MinGW on Windows, gcc elsewhere), then “rai examples/01-temeller.rai”, or just “rai” for the REPL. The README is a full manual: language guide, standard library, embedding walkthrough. Known limits are written down there rather than hidden: an exception escaping a host function leaks stack, string += is quadratic, and a script returning a string to rs_call still yields 0. AI SPLIT The design of the language and its core — lexer, parser, resolver, interpreter, REPL, C API, string channel — is mine and was written by me. The host bindings, the demo apps, and this week’s seven interpreter bug fixes are AI-written from my designs and my audit. Logged hours are my editor time only. Source (MIT): github.com/RaidenTechnology/raidenscript
RaidenScript v0.2 Update I wrote RaidenScript (RS) from scratch in C++20 as a small embeddable scripting language. In Ship #1 I had it running in three hosts. Since then I gave it a browser you can try it in, and I turned the Minecraft host into a real game running on a live server. I put the language in a browser. I compiled the C API to WebAssembly, served it from GitHub Pages, and wrote an editor with a Run button and four example programs: raidentechnology.github.io/raidenscript. I send nothing to a server; the page is the interpreter. I stopped treating the Minecraft host as a demo. I wrote 144 commits on it since the last devlog, and I keep the rules out of Java entirely: they sit in one .rai file the server loads at boot and reloads while players are online. I wrote a whole farming layer as script rules. Every crop got its own tool with its own level and rarity ladder, and I added tool enchants, XP bottles, an upgrade bench, and a 20 minute contest with medals and a shop of its own. I added pests. Twelve species, a spawn engine I tied to whatever crop is planted, a five-tier vacuum to kill them with, and a loot table I hooked into the same farming-luck stat every other system reads. I built a garden around it: 8 plots, a regeneration engine that rebuilds 13 farm patterns, 76 visitor NPCs I gave 53 signed skins, and a copper economy I priced off the live Bazaar API instead of numbers I made up. I added one host primitive, taslakModel, and let the script choose the model an item wears. Adding an item is now a script edit and nothing else. I fixed three bugs the live server found and no test of mine would have. An item-identity gate was cancelling every right click unconditionally, so the grappling hook silently never fired. The area hoe was catching its own synthetic event and moving the stack twice. And one wrong price in a shop table was failing the entire script at boot. Why did I do it like this? Because I think a language is judged by what runs on it, not by its grammar. The strongest thing I can say about my embedding API is that a 10,000 line ruleset runs on it every night, on a real server, with real players. Because I lose reviewers at the install wall. For Ship #1 I asked people to clone a repo and build it with MinGW. Now I ask for one click, and I am handing them the same interpreter, not a simplified twin. Because every rule I move out of Java is a rule I can change without a restart. I left no compile step in the script layer, so /rai reload changes the balance of a live game between two swings of a sword. Because item models were the last thing still forcing me into Java. I closed that hole, and I now keep the Java side as infrastructure only: it knows how to talk to the server and nothing about what the game is. Because I wanted the contest, the pests and the visitor queue to stress the C boundary. I pass numbers in the array and let strings travel beside it, and not one of these systems made me widen that contract. Because a bug a player hits at 2 AM is worth more to me than a bug I find in my own suite. All three above came from the server. Source (MIT): github.com/RaidenTechnology/raidenscript...
|
1793054913.9269783
|
1793141313.9269783
|
|
46224
|
Discord Multiply bot by @rnabilaltamis14 | Stardan Discord Multiply bot by @rnabilaltamis14 | Stardance...
|
rnabilaltamis14
|
0
|
58.91
|
0
|
[]
|
[{"post_id": 53627, "ts": "202 [{"post_id": 53627, "ts": "2026-08-24T08:39:09Z", "hours": 58.9111, "text": "hell yeaa, 1st devlog, making protoype"}]...
|
Title: Discord Multiply bot by @rnabilaltamis14 | Title: Discord Multiply bot by @rnabilaltamis14 | Stardance
Devlogs:
hell yeaa, 1st devlog, making protoype...
|
1792954385.469337
|
1793818385.469337
|
|
38881
|
Novel FMG Band for Prosthetics by @eshaanm | Stard Novel FMG Band for Prosthetics by @eshaanm | Stardance...
|
eshaanm
|
0
|
58.88
|
0
|
[]
|
[{"post_id": 80825, "ts": "202 [{"post_id": 80825, "ts": "2026-10-18T22:16:58Z", "hours": 2.3167, "text": "It has been a long time. i reached out to an FMG engineer and he reccomended that i have a quick release mechanism for the band. the issue is that everything was already on my band and since there was superglue it would not come off. that kindof sucker but i had to take everything off of that including the dowels and pcbs. I luckily had extra screws i could resuse. then i spent time cading a new version of the band that would allow the entire top half to hinge out. next we are going to reassemble the band again, build the rig, collect some data, train, and finally ship."}, {"post_id": 76465, "ts": "2026-10-03T16:39:16Z", "hours": 1.2167, "text": "Today was super nice because all the individual parts came together. i attached all the sensor PCBs onto the rigid band + carriages and then screwed on the main board. then i plugged in all the connectors and glued down the FSRs with some adhesive. looking great. next i do want to manage the wires a little better and make a bettery cover. after that we make the rig and the code and it should be ready to ship."}, {"post_id": 74725, "ts": "2026-09-28T02:22:09Z", "hours": 1.55, "text": "Today I worked on the rigid band V1. I printed out new carriages and assembled everything with the screws, nuts, carriages, and covers. I used super glue. Next I am going to attach all the PCBs and complete the wiring before moving on to code"}, {"post_id": 72884, "ts": "2026-09-23T22:43:09Z", "hours": 1.3314, "text": "Today was a productive day. I got the 5 smaller PCBs soldered and then I was able to add n the force sensitive resistors to all 9 PCBS (I had 10 and then lost one idk) and also added the JST connectors to all 9 PCBs."}, {"post_id": 72423, "ts": "2026-09-22T22:11:16Z", "hours": 0.6503, "text": "today i took one of my small PCBs, soldered on a forse sensitive resistor and a JST connector and tested the sensor and board. it worked perfectly even when being powered by the main control board. The sensor was fairly accurate and sensitive and pressing it fully it never went over 3.3v which was from the op amp i put in which means everything works great. next i have to assemble all 10 of the sensor boards and then integrate everything into the final band/rig."}, {"post_id": 70334, "ts": "2026-09-18T23:48:12Z", "hours": 1.5667, "text": "Today was a productive day. I was working on the PCB hardware. First I soldered on the battery connector and switch and tested the buck-boost converter. it was working which was awesome! mThen i soldered on some headers and hot-aired the FSR connectors. I also soldered on the teensy headers and some other stuff. All that is left on the board is to sodler on the screen which i forgot to do. In the future i will probably just be working on some paperwork so this may be last devlog in some time."}, {"post_id": 69420, "ts": "2026-09-17T00:46:54Z", "hours": 3.0503, "text": "Today was definetaly the biggest day this project has had so far. The PCBs arrived and I hand soldered them using a hot air gun for the first time I had ever done this. First i did the smaller boards. I did not have a stencil for those ones so I just put blobs of sodler paste and then placed the components and used the hot air gun. the hot air gun worked VERY well. Then i moved to the big board which was the scary part. for this one i had a good idea to organize the components though. I took one of my extra boards, put some double-sided tape on it and then placed the components ON there in the right places. then i just moved it to the final board which i applied solder apste on using a stencil. i then reflowed and everything clicking into place was vbery satisfying. I had one bridge on the buck boost but fixed that after and then i just cleaned up. Next i want to finish the rest of the small boards (5 left) and also test the boards to see if they even work."}, {"post_id": 65104, "ts": "2026-09-10T00:30:33Z", "hours": 0.4183, "text": "Today I started working on the code. not the one on the PCB (I finished that already) but the actual model that will predict the gestures. I spent most of the time setting up halftime with Arduino IDE which was annoying since I can’t use lapse for code. I mainly just worked on the tool stack I will need. I am thinking python + usb cable/sd card for data + raw values in a LDA classifier + back to the sd card + teensy runs the trained model ON THE DEVICE. I could also run the model on the computer and then send the predicted value back to the teensy with usb but idk if that is good. anyways next I think I will start on the building of everything while I wait and then move to code while I wait for my PCBs (they are in Hong Kong airport rn) then in October after star dance I will do the experiment and methodology."}, {"post_id": 63868, "ts": "2026-09-07T21:09:36Z", "hours": 1.9169, "text": "Today was pretty good because i worked on the CAD for the sliding adjustable rig. I spent most of the time on the stand for the main FMG band, and then put it in an assembly and tweaked a few alignment issues with the heights and sizes of the rests. Then i printed a portion of the rail and the rest so I can test the tolerances of the dovetail slide. those are printing right now but next I will probably print everything out and assemble the rig and also assembl;e the carriages on the fmg band. After all of this mechanical stuff all i have to do is polish the methodology and the code while i wait for the PCBs to arrive (they will take two weeks minimum so its going to be tight around the end)."}, {"post_id": 62477, "ts": "2026-09-05T20:44:08Z", "hours": 2.0672, "text": "it has been some time since my last devlog since school just started and all my PCBs and components are still shipping from china. I thought i would try to finish some of the other work while I wait in order to make it easy and quick once the baords get here. Today i wanted to work on the RIG that will hold the band aw sell as two adjustable rests for the arm. Ofcourse you can use the band without any of this but since this is a research experiment I want to remove as many variables as possible and keeping it in this way locked in one position does that and also makes it easier to test on peple and put it on. Most likelyfinal version will use IMU to correct for limb position and wont need this bulky rig but we will see. Im thinking of keeping the rig on a piece of wood and usinug a dovetail to slide around the FMg rest and arm rests. i modelled two versions. I still need to work on the FMG rest which has to be adjustable up and down but yeah i will try to get that built soon and also finish programming everything and the methodology so i am ready"}, {"post_id": 58470, "ts": "2026-08-30T21:46:01Z", "hours": 0.7328, "text": "I added the heat set inserts to the 3d print, soldered the headers on the teensy, ordered both the PCB and it’s components (will take 1 - 2 weeks), and 3d printed the carriage section of the captive leadscrew assembly"}, {"post_id": 57671, "ts": "2026-08-29T21:53:09Z", "hours": 1.1489, "text": "today I finished tweaking the PCB then I tried ordering the PCB and LCSC components. I was trying to do this thing where you combine orders to save on shipping, so I had to set the JLC PCB order address to the LCSC warehouse, and then I emailed LCSC and asked to combine my orders since I did not see the option on the LCSC checkout. I will hear back from them soon hopefully so then everything will come so I can star building. also I printed out the 3d printed parts and also got all my other supplied from amazon. I am a bit worried though because one jlcpcb order I cancelled and I do not see the refund on my HCB account"}, {"post_id": 57031, "ts": "2026-08-29T03:19:47Z", "hours": 1.1667, "text": "What i worked on today was I mainly was just uploading my reciepts for HCB then I had to go through the schematic and check all the circuits to make sure it was good for printing. I am glad I did because i found multiple mistakes with the SD card, IMU, and buck/boost. I then had to add some more resistors so i had to figure out how to reroute everything. i finished i think but it is still a mess so i can definately work on it for one more day before ordering."}, {"post_id": 56335, "ts": "2026-08-28T02:01:21Z", "hours": 1.6, "text": "today I got my grant approved which was awesome. I also updated my BOM to buy everything from amazon because it was easier than micro center for me. then I ordered the amazon and adafruit parts which is like 90% of everything. I was going to order PCB until I decided to check out my buck-boost circuit and realized it was completely wrong. so I fixed that. I think I will order the PCBs in a few days after double checking EVERYTHING."}, {"post_id": 55327, "ts": "2026-08-27T02:14:40Z", "hours": 1.9667, "text": "so basicly what I have been doing for now is that I already sent out the project for funding review, but I thought while I wait I might make some small upgrades to the PCB. first I swapped out the through-hole pads for actual connectors (JST-SH?) which will make it much easier to connect the sensor boards. then I spent the rest of the time working on the PCB tracing I think I optimized it a lot more. next I have to double check all the PCB components and routing and then I have to prepare myself for my next steps when I get funding"}, {"post_id": 54178, "ts": "2026-08-25T01:34:42Z", "hours": 2.3167, "text": "Today I got some good feedback before submitting that I should polish my CAD and my README in order to get into the highest tier. SO first I worked on fully polishing the CAD with fillets, assembly, mounting holes, made it wider so its easier to slip on, fixed the carriages. and then I went to fixing the readme and GitHub where I added some pretty sick black and white images of the band. lastly I updated my BOM to reflect my budget. now everything fits pretty well under 250 dollars which is perfect. I am also now using JST-GH 1.25mm 3 pin connectors from the sensor PCB to the main PCB. I am retread to submit! I will keep working on small cad and PCB changes while waiting :D"}, {"post_id": 54089, "ts": "2026-08-24T21:30:05Z", "hours": 2.3167, "text": "ok today was just a good recap day and I think I can submit my project for funding now. what I did was first import all the CAD, PCB, BOM, PNG files into the GitHub and organize them. then I went through a whole thing with my BOM because I forgot to add a lot of stuff like wire and a battery. the total is now like 215 but I think it should be fine because I will just pay the extra myself. I also wrote a pretty long README.md which I am pretty proud of. I am going to submit this now so fingers crossed for the review. I hope it takes less than a week since I dont have time :("}, {"post_id": 53514, "ts": "2026-08-24T02:59:59Z", "hours": 2.9333, "text": "Today was an ultimate lock in day. It says 3 hours, but I totally forgot about lapse for two hours before so in total I worked around 5 hours. My goals of course was to completely finish and submit project. I did not do that but I am definitely pretty close. Here is everything I did today. I switched back to the BMI270, I asked for help on my PCB from reddit, hack club slack, and on of my dad’s colleagues (meeting is tommorow), I moved to CAD where I made my walls thinner, fixed the holes for the PCB, added both PCB, the main frame, the screw, the dowels, the sensor PCB, and the nut carriage in an assembly view, I created a small carriage for the end of the screw so that the screw actually moves the PCB back and forth, then I moved to firmware and wrote a complete firmware that checks all the components (FSR, IMU, OLED, SD card) and has a loop which does the simple function for the board. Tommorow I just need to collect this all into a GitHub, do some last minute PCB/BOM checks and I can submit!"}, {"post_id": 53289, "ts": "2026-08-23T19:01:22Z", "hours": 2.8725, "text": "ok these lapses was from yesterday and the day before I forgot to log them but I got a lot done and also made one major change to the project. mainly I was finishing up the BOM again. I put if almost everything and it was fitting inside 200 dollars so I was excited. then I actually decided to check how much shipping and tariffs would cost and the total was over 150 just for the control pcbs. I realized in this budget automated assembly would not work so I decided I will assembly these by hand. most of the 603 components are super easy just the main issue Is that the IMU I am using has the pins under the chip which will be difficult for me to solder. anyways on LCSC I was able to get all the parts + lots of extra in case I mess up for under 30 dollars. Also I dont know if I covered this but Thursday I changed the IMU from he BMI270 to the LSM6DSVQTR which was very similar package, size, and pinout but also was economic for JLC PCBA. now that im thinking about it I can still use the BMI270 since I am assembling by hand. I might have to switch to BMI270 actually since it is a few dollars cheaper. so anyways for assembling by hand I have a hot air rework station already, so I have gotten a stencil from JLCPCB and also included solder paste, flux, and IPA on the BOM. I still need to kinda finish the BOM but for now it is good so I have to lock in and get everything ready to submit"}, {"post_id": 51387, "ts": "2026-08-21T01:52:13Z", "hours": 2.6194, "text": "ok today was a bit of a slowerish day ig. I started off with trying to fit all the pcbs into one board so It could be manufactured at once. but that didn’t work so well so I decided im going to print each separately. first I did the main control board. I am using JLC PCBA for this since I honestly can’t assemble this by hand… I mean, I COULD but it would be a risk and maybe same like 30 bucks. anyways next the 10 smaller PCBs were very simple so I am going to assemble by hand. I ordered the bare pcbs and am going to order the components separately on LCSC. supposedly once I order the stuff from JLC it will show up on my LCSC page and I will be able to combine the orders together so I dont have to pay extra shipping. we will see though.. anyways for the main control board it took forever because first the IMU couldn’t be made on an economic PCB so I had to completely replace that with some STM based one (which is actually more powerful and cheaper and economic). then I couldn’t figure out how to change my PCBA quantity from 5 to 2, after debugging for 30 minutes, I realized the issue was because of the COLOR OF THE BOARD. I had to change it to green and then everything worked ok. I attached the pictures of the cart and dang its not cheap. hopefully it fits under 200, I might try and get this on the highest tier though, idk if its fully that polished but we will see. next I have to lock in on firmware and also finish up a BOM with full cost + screws and 3d printing material. note that for LCSC cart im not paying for shipping so its more like 12 bucks. 12 (LCSC components) + 5 (10 PCBS) + 80 (JLC PCBA) + 2 (5 pcbs) + 20 (shipping + tariffs) + 25 (teensy) + 35 (FSRs) + 20 (screws + dowels?) = 199. prob more like 250 to be realistic so I might have to chip in myself.."}, {"post_id": 50553, "ts": "2026-08-19T19:12:53Z", "hours": 1.7, "text": "What I did was finish the PCB from yesterday with all the routing. I was right and the last 30% of the routing was the hardest so I had to shuffle things around and also disrupt some of the ground plane on the back. I think in general this pub looks pretty neat. I definitely could have optimized it more but it should work perfectly fine I think. I think next I should start getting the project ready for funding. I need a BOM for that and a GitHub. I also should recheck the schematic and some of the layout or something because I can’t afford any mistakes on the board."}, {"post_id": 50096, "ts": "2026-08-19T04:58:09Z", "hours": 1.4, "text": "idk why I worked on this at midnight but I just wanted to finish up the layout. then I got carried away fixing the silkscreen. then I got carried on routing. my layout was on point because the routing was so easy and quick. id say im around 70% done routing but the remaining 30% are the toughest ones so we will see tommorow. im going to sleep."}, {"post_id": 50016, "ts": "2026-08-19T01:21:12Z", "hours": 3.9667, "text": "today was a productive day, but I may have underestimated my previous goals. I basicly started as usual with a simple layout. I am def not that great at PCB layouts but I thought it looked OK, then I realized itwasnt very good for routing and once I started routing it was a mess. So then what I did was optimize the entire layout to make it super easy to route. at the end it was looking so fire and I thought this was the one so I started adding all the silkscreen stuff and logos and names. then I remembered that FSR signals are going to be analog and they need to be super precise. Turns out buck boost converters have crazy switching field which can mess with the FSR signals. My RC filters were also pretty away from the teensy pins. so I decided to fix that with V3. I first switched around the SD card and power management circuits so that the buck boost was as far away from mt FSRs as possible. then I moved up my RC filters (low pass). I think im pretty much finished the layout, there could be some minor neatness tweaks. there is also some dead space I need to fill. I do have to redo the silk screen though and route everything tommorow. so tommorow that’s the goal as well as maybe starting the BOM? (the pic in 3D is V4)"}, {"post_id": 49305, "ts": "2026-08-18T01:29:37Z", "hours": 3.3, "text": "Today what I did was completed the schematic for the sensor board. the FSR uses an op-amp which linearizes the single as well as a VD and other caps to filter out the noise. I still want to learn more about op-amps since rn I copied the basic schematic from a paper I read. After that I finished routing the traces and creating the PCB for the sensor board which was pretty easy since it was so small. I also started the board size/layout for the main control board. Again, the goal is finishing the pcbs tommorow (I will have full day tommorow so it should be possible). Another day with good progress!"}, {"post_id": 48603, "ts": "2026-08-17T02:02:10Z", "hours": 3.25, "text": "OK so basicly what I did today was finish the main sensor board. this is everything I added: a buck boost converter, RC (low-pass) circuits for FSR, decoupling capacitors, buttons and LEDs, debugging headers (I2C, Power, SPI, GPIO, UART), a voltage divider for battery, etc. So the next stuff to do is the sensor PCB that holds the FSR as well as a full BOM and GitHub. Good progress today!"}, {"post_id": 47861, "ts": "2026-08-16T03:00:30Z", "hours": 3.15, "text": "SO what I have been working on so far right now is that I started the CAD and kind of finished the basic V2 for the rigid frame. I also started working on the PCB. SO far I have added the Teensy 4.0 microcontroller, IMU, micro-sd card, and the OLED. I still need the power circuitry, FSR boards, and prob other stuff I am probably forgetting. Goal is to finish the PCB in the next few days so I can start with a full BOM (I want to submit for review in a week)"}, {"post_id": 47165, "ts": "2026-08-14T21:05:17Z", "hours": 5.8531, "text": "Basicly what I have worked on so far is just making a CAD design for the band. I printed the first one off with PLA and it was looking good but pretty bulky. after that I designed a new band which was looking a lot more slimmer and lighter and stylish. the issue with that I am thinking though is that a rigid band is going to introduce so much issues for our study which is why im thinking of second guessing my design. also I started a littler bit with the pcb."}, {"post_id": 34610, "ts": "2026-07-25T14:07:35Z", "hours": 0.5039, "text": "Today I worked on sketching out a few designs for the project and also the rough CAD and component selection so that I can start designing soon!"}]...
|
Title: Novel FMG Band for Prosthetics by @eshaanm Title: Novel FMG Band for Prosthetics by @eshaanm | Stardance
Devlogs:
Today I worked on sketching out a few designs for the project and also the rough CAD and component selection so that I can start designing soon!
Basicly what I have worked on so far is just making a CAD design for the band. I printed the first one off with PLA and it was looking good but pretty bulky. after that I designed a new band which was looking a lot more slimmer and lighter and stylish. the issue with that I am thinking though is that a rigid band is going to introduce so much issues for our study which is why im thinking of second guessing my design. also I started a littler bit with the pcb.
SO what I have been working on so far right now is that I started the CAD and kind of finished the basic V2 for the rigid frame. I also started working on the PCB. SO far I have added the Teensy 4.0 microcontroller, IMU, micro-sd card, and the OLED. I still need the power circuitry, FSR boards, and prob other stuff I am probably forgetting. Goal is to finish the PCB in the next few days so I can start with a full BOM (I want to submit for review in a week)
OK so basicly what I did today was finish the main sensor board. this is everything I added: a buck boost converter, RC (low-pass) circuits for FSR, decoupling capacitors, buttons and LEDs, debugging headers (I2C, Power, SPI, GPIO, UART), a voltage divider for battery, etc. So the next stuff to do is the sensor PCB that holds the FSR as well as a full BOM and GitHub. Good progress today!
Today what I did was completed the schematic for the sensor board. the FSR uses an op-amp which linearizes the single as well as a VD and other caps to filter out the noise. I still want to learn more about op-amps since rn I copied the basic schematic from a paper I read. After that I finished routing the traces and creating the PCB for the sensor board which was pretty easy since it was so small. I also started the board size/layout for the main control board. Again, the goal is finishing the pcbs tommorow (I will have full day tommorow so it should be possible). Another day with good progress!
today was a productive day, but I may have underestimated my previous goals. I basicly started as usual with a simple layout. I am def not that great at PCB layouts but I thought it looked OK, then I realized itwasnt very good for routing and once I started routing it was a mess. So then what I did was optimize the entire layout to make it super easy to route. at the end it was looking so fire and I thought this was the one so I started adding all the silkscreen stuff and logos and names. then I remembered that FSR signals are going to be analog and they need to be super precise. Turns out buck boost converters have crazy switching field which can mess with the FSR signals. My RC filters were also pretty away from the teensy pins. so I decided to fix that with V3. I first switched around the SD card and power management circuits so that the buck boost was as far away from mt FSRs as possible. then I moved up my RC filters (low pass). I think im pretty much finished the layout, there could be some minor neatness tweaks. there is also some dead space I need to fill. I do have to redo the silk screen though and route everything tommorow. so tommorow that’s the goal as well as maybe starting the BOM? (the pic in 3D is V4)
idk why I worked on this at midnight but I just wanted to finish up the layout. then I got carried away fixing the silkscreen. then I got carried on routing. my layout was on point because the routing was so easy and quick. id say im around 70% done routing but the remaining 30% are the toughest ones so we will see tommorow. im going to sleep.
What I did was finish the PCB from yesterday with all the routing. I was right and the last 30% of the routing was the hardest so I had to shuffle things around and also disrupt some of the ground plane on the back. I think in general this pub looks pretty neat. I definitely could have optimized it more but it should work perfectly fine I think. I think next I should start getting the project ready for funding. I need a BOM for that and a GitHub. I also should recheck the schematic and some of the layout or something because I can’t afford any mistakes on the board.
ok today was a bit of a slowerish day ig. I started off with trying to fit all the pcbs into one board so It could be manufactured at once. but that didn’t work so well so I decided im going to print each separately. first I did the main control board. I am using JLC PCBA for this since I honestly can’t assemble this by hand… I mean, I COULD but it would be a risk and maybe same like 30 bucks. anyways next the 10 smaller PCBs were very simple so I am going to assemble by hand. I ordered the bare pcbs and am going to order the components separately on LCSC. supposedly once I order the stuff from JLC it will show up on my LCSC page and I will be able to combine the orders together so I dont have to pay extra shipping. we will see though.. anyways for the main control board it took forever because first the IMU couldn’t be made on an economic PCB so I had to completely replace that with some STM based one (which is actually more powerful and cheaper and economic). then I couldn’t figure out how to change my PCBA quantity from 5 to 2, after debugging for 30 minutes, I realized the issue was because of the COLOR OF THE BOARD. I had to change it to green and then everything worked ok. I attached the pictures of the cart and dang its not cheap. hopefully it fits under 200, I might try and get this on the highest tier though, idk if its fully that polished but we will see. next I have to lock in on firmware and also finish up a BOM with full cost + screws and 3d printing material. note that for LCSC cart im not paying for shipping so its more like 12 bucks. 12 (LCSC components) + 5 (10 PCBS) + 80 (JLC PCBA) + 2 (5 pcbs) + 20 (shipping + tariffs) + 25 (teensy) + 35 (FSRs) + 20 (screws + dowels?) = 199. prob more like 250 to be realistic so I might have to chip in myself..
ok these lapses was from yesterday and the day before I forgot to log them but I got a lot done and also made one major change to the project. mainly I was finishing up the BOM again. I put if almost everything and it was fitting inside 200 dollars so I was excited. then I actually decided to check how much shipping and tariffs would cost and the total was over 150 just for the control pcbs. I realized in this budget automated assembly would not work so I decided I will assembly these by hand. most of the 603 components are super easy just the main issue Is that the IMU I am using has the pins under the chip which will be difficult for me to solder. anyways on LCSC I was able to get all the parts + lots of extra in case I mess up for under 30 dollars. Also I dont know if I covered this but Thursday I changed the IMU from he BMI270 to the LSM6DSVQTR which was very similar package, size, and pinout but also was economic for JLC PCBA. now that im thinking about it I can still use the BMI270 since I am assembling by hand. I might have to switch to BMI270 actually since it is a few dollars cheaper. so anyways for assembling by hand I have a hot air rework station already, so I have gotten a stencil from JLCPCB and also included solder paste, flux, and IPA on the BOM. I still need to kinda finish the BOM but for now it is good so I have to lock in and get everything ready to submit
Today was an ultimate lock in day. It says 3 hours, but I totally forgot about lapse for two hours before so in total I worked around 5 hours. My goals of course was to completely finish and submit project. I did not do that but I am definitely pretty close. Here is everything I did today. I switched back to the BMI270, I asked for help on my PCB from reddit, hack club slack, and on of my dad’s colleagues (meeting is tommorow), I moved to CAD where I made my walls thinner, fixed the holes for the PCB, added both PCB, the main frame, the screw, the dowels, the sensor PCB, and the nut carriage in an assembly view, I created a small carriage for the end of the screw so that the screw actually moves the PCB back and forth, then I moved to firmware and wrote a complete firmware that checks all the components (FSR, IMU, OLED, SD card) and has a loop which does the simple function for the board. Tommorow I just need to collect this all into a GitHub, do some last minute PCB/BOM checks and I can submit!
ok today was just a good recap day and I think I can submit my project for funding now. what I did was first import all the CAD, PCB, BOM, PNG files into the GitHub and organize them. then I went through a whole thing with my BOM because I forgot to add a lot of stuff like wire and a battery. the total is now like 215 but I think it should be fine because I will just pay the extra myself. I also wrote a pretty long README.md which I am pretty proud of. I am going to submit this now so fingers crossed for the review. I hope it takes less than a week since I dont have time :(
Today I got some good feedback before submitting that I should polish my CAD and my README in order to get into the highest tier. SO first I worked on fully polishing the CAD with fillets, assembly, mounting holes, made it wider so its easier to slip on, fixed the carriages. and then I went to fixing the readme and GitHub where I added some pretty sick black and white images of the band. lastly I updated my BOM to reflect my budget. now everything fits pretty well under 250 dollars which is perfect. I am also now using JST-GH 1.25mm 3 pin connectors from the sensor PCB to the main PCB. I am retread to submit! I will keep working on small cad and PCB changes while waiting :D
so basicly what I have been doing for now is that I already sent out the project for funding review, but I thought while I wait I might make some small upgrades to the PCB. first I swapped out the through-hole pads for actual connectors (JST-SH?) which will make it much easier to connect the sensor boards. then I spent the rest of the time working on the PCB tracing I think I optimized it a lot more. next I have to double check all the PCB components and routing and then I have to prepare myself for my next steps when I get funding
today I got my grant approved which was awesome. I also updated my BOM to buy everything from amazon because it was easier than micro center for me. then I ordered the amazon and adafruit parts which is like 90% of everything. I was going to order PCB until I decided to check out my buck-boost circuit and realized it was completely wrong. so I fixed that. I think I will order the PCBs in a few days after double checking EVERYTHING.
What i worked on today was I mainly was just uploading my reciepts for HCB then I had to go through the schematic and check all the circuits to make sure it was good for printing. I am glad I did because i found multiple mistakes with the SD card, IMU, and buck/boost. I then had to add some more resistors so i had to figure out how to reroute everything. i finished i think but it is still a mess so i can definately work on it for one more day before ordering.
today I finished tweaking the PCB then I tried ordering the PCB and LCSC components. I was trying to do this thing where you combine orders to save on shipping, so I had to set the JLC PCB order address to the LCSC warehouse, and then I emailed LCSC and asked to combine my orders since I did not see the option on the LCSC checkout. I will hear back from them soon hopefully so then everything will come so I can star building. also I printed out the 3d printed parts and also got all my other supplied from amazon. I am a bit worried though because one jlcpcb order I cancelled and I do not see the refund on my HCB account
I added the heat set inserts to the 3d print, soldered the headers on the teensy, ordered both the PCB and it’s components (will take 1 - 2 weeks), and 3d printed the carriage section of the captive leadscrew assembly
it has been some time since my last devlog since school just started and all my PCBs and components are still shipping from china. I thought i would try to finish some of the other work while I wait in order to make it easy and quick once the baords get here. Today i wanted to work on the RIG that will hold the band aw sell as two adjustable rests for the arm. Ofcourse you can use the band without any of this but since this is a research experiment I want to remove as many variables as possible and keeping it in this way locked in one position does that and also makes it easier to test on peple and put it on. Most likelyfinal version will use IMU to correct for limb position and wont need this bulky rig but we will see. Im thinking of keeping the rig on a piece of wood and usinug a dovetail to slide around the FMg rest and arm rests. i modelled two versions. I still need to work on the FMG rest which has to be adjustable up and down but yeah i will try to get that built soon and also finish programming everything and the methodology so i am ready
Today was pretty good because i worked on the CAD for the sliding adjustable rig. I spent most of the time on the stand for the main FMG band, and then put it in an assembly and tweaked a few alignment issues with the heights and sizes of the rests. Then i printed a portion of the rail and the rest so I can test the tolerances of the dovetail slide. those are printing right now but next I will probably print everything out and assemble the rig and also assembl;e the carriages on the fmg band. After all of this mechanical stuff all i have to do is polish the methodology and the code while i wait for the PCBs to arrive (they will take two weeks minimum so its going to be tight around the end).
Today I started working on the code. not the one on the PCB (I finished that already) but the actual model that will predict the gestures. I spent most of the time setting up halftime with Arduino IDE which was annoying since I can’t use lapse for code. I mainly just worked on the tool stack I will need. I am thinking python + usb cable/sd card for data + raw values in a LDA classifier + back to the sd card + teensy runs the trained model ON THE DEVICE. I could also run the model on the computer and then send the predicted value back to the teensy with usb but idk if that is good. anyways next I think I will start on the building of everything while I wait and then move to code while I wait for my PCBs (they are in Hong Kong airport rn) then in October after star dance I will do the experiment and methodology.
Today was definetaly the biggest day this project has had so far. The PCBs arrived and I hand soldered them using a hot air gun for the first time I had ever done this. First i did the smaller boards. I did not have a stencil for those ones so I just put blobs of sodler paste and then placed the components and used the hot air gun. the hot air gun worked VERY well. Then i moved to the big board which was the scary part. for this one i had a good idea to organize the components though. I took one of my extra boards, put some double-sided tape on it and then placed the components ON there in the right places. then i just moved it to the final board which i applied solder apste on using a stencil. i then reflowed and everything clicking into place was vbery satisfying. I had one bridge on the buck boost but fixed that after and then i just cleaned up. Next i want to finish the rest of the small boards (5 left) and also test the boards to see if they even work.
Today was a productive day. I was working on the PCB hardware. First I soldered on the battery connector and switch and tested the buck-boost converter. it was working which was awesome! mThen i soldered on some headers and hot-aired the FSR connectors. I also soldered on the teensy headers and some other stuff. All that is left on the board is to sodler on the screen which i forgot to do. In the future i will probably just be working on some paperwork so this may be last devlog in some time.
today i took one of my small PCBs, soldered on a forse sensitive resistor and a JST connector and tested the sensor and board. it worked perfectly even when being powered by the main control board. The sensor was fairly accurate and sensitive and pressing it fully it never went over 3.3v which was from the op amp i put in which means everything works great. next i have to assemble all 10 of the sensor boards and then integrate everything into the final band/rig.
Today was a productive day. I got the 5 smaller PCBs soldered and then I was able to add n the force sensitive resistors to all 9 PCBS (I had 10 and then lost one idk) and also added the JST connectors to all 9 PCBs.
Today I worked on the rigid band V1. I printed out new carriages and assembled everything with the screws, nuts, carriages, and covers. I used super glue. Next I am going to attach all the PCBs and complete the wiring before moving on to code
Today was super nice because all the individual parts came together. i attached all the sensor PCBs onto the rigid band + carriages and then screwed on the main board. then i plugged in all the connectors and glued down the FSRs with some adhesive. looking great. next i do want to manage the wires a little better and make a bettery cover. after that we make the rig and the code and it should be ready to ship.
It has been a long time. i reached out to an FMG engineer and he reccomended that i have a quick release mechanism for the band. the issue is that everything was already on my band and since there was superglue it would not come off. that kindof sucker but i had to take everything off of that including the dowels and pcbs. I luckily had extra screws i could resuse. then i spent time cading a new version of the band that would allow the entire top half to hinge out. next we are going to reassemble the band again, build the rig, collect some data, train, and finally ship....
|
1792497090.3394616
|
1793101890.3394616
|
|
62539
|
Music PWA by @CyberIntruder | Stardance
|
CyberIntruder
|
0
|
58.74
|
0
|
[]
|
[{"post_id": 82667, "ts": "202 [{"post_id": 82667, "ts": "2026-10-25T15:28:38Z", "hours": 7.5017, "text": "I created this playlist page, it allows you to reorder, remove, add, etc. songs to playlists, play them and also shuffle and play them. Now I’m optimizing the app, fixing some bugs and making it more user-friendly. For example I fixed the offline navigation issue, now the app doesn’t use the browser navigation when offline, so the music continues playing."}, {"post_id": 80199, "ts": "2026-10-16T17:43:30Z", "hours": 8.3458, "text": "I stopped working on this project for a while, so I forgot every little detail I worked on/changed. But in general, I worked on the concept of custom playlists, what is currently working is creating new playlists, saving them, playing a playlist, etc. but there still is stuff that’s missing, like a playlist page for example"}, {"post_id": 74964, "ts": "2026-09-28T18:23:30Z", "hours": 7.9267, "text": "I fixed the issue with the song stopping when the phone screen turned off. It turns out putting a video with a single frame (the thumbnail) into an audio component does some video things and needs the hardware decoder, which was why it was stopping. I fixed it by converting the video file into an audio file in the download route. I also moved the logic that played the songs (next song when the current one finishes, etc.) from the watch page to a context, so it works on every page, not just the watch one."}, {"post_id": 73181, "ts": "2026-09-24T15:17:07Z", "hours": 3.4886, "text": "I tried to add the actual PWA support, and I did get the app to actually install (in chrome, not firefox) and cache the pages. It works offline, but there still are many issues that I don’t know how to fix, for example it reloading (resulting in the audio stopping) when I click a link, which wouldn’t normally happen when online. Also the audio stops playing when the screen turns off in chrome, but it doesn’t in firefox. I can start it again through the media session notification and then it plays."}, {"post_id": 72687, "ts": "2026-09-23T14:40:05Z", "hours": 6.8056, "text": "I made the lists reorderable, added media session support, created this lyrics player and added a three dot menu that now contains the old download functionality and moved the offline data indicators next to the three dots (I also added the option to add/remove the current song from the playlist)."}, {"post_id": 71329, "ts": "2026-09-20T17:10:36Z", "hours": 9.1097, "text": "I made the playlist/play next list at the right of the screenshot. The functionality is inspired by youtube music – if the current song finishes, play the next one. If there isn’t a next one in this playlist, play the first from a “suggests” list and move it from the bottom list to the top one. This was really hard to do, because I wanted the url to update the song id without reloading the page, actually autoplaying the next song, etc. I also fixed some UI/layout issues."}, {"post_id": 70535, "ts": "2026-09-19T10:21:43Z", "hours": 5.9447, "text": "I added a responsive sidebar with a downloaded songs list. Later I added this layout to the main layout.tsx so it is on every page. I also made a global system for playing music so it doesn’t pause when you go to another page, and because of that I had to make my own UI controls component for it. And finally, I made the currently playing song to display on the bottom."}, {"post_id": 70100, "ts": "2026-09-18T13:39:00Z", "hours": 9.6167, "text": "Firstly I made this search page that shows the search results, and then later I made this watch page where the user can download a song and play it."}]...
|
Title: Music PWA by @CyberIntruder | Stardance
De Title: Music PWA by @CyberIntruder | Stardance
Devlogs:
Firstly I made this search page that shows the search results, and then later I made this watch page where the user can download a song and play it.
I added a responsive sidebar with a downloaded songs list. Later I added this layout to the main layout.tsx so it is on every page. I also made a global system for playing music so it doesn’t pause when you go to another page, and because of that I had to make my own UI controls component for it. And finally, I made the currently playing song to display on the bottom.
I made the playlist/play next list at the right of the screenshot. The functionality is inspired by youtube music – if the current song finishes, play the next one. If there isn’t a next one in this playlist, play the first from a “suggests” list and move it from the bottom list to the top one. This was really hard to do, because I wanted the url to update the song id without reloading the page, actually autoplaying the next song, etc. I also fixed some UI/layout issues.
I made the lists reorderable, added media session support, created this lyrics player and added a three dot menu that now contains the old download functionality and moved the offline data indicators next to the three dots (I also added the option to add/remove the current song from the playlist).
I tried to add the actual PWA support, and I did get the app to actually install (in chrome, not firefox) and cache the pages. It works offline, but there still are many issues that I don’t know how to fix, for example it reloading (resulting in the audio stopping) when I click a link, which wouldn’t normally happen when online. Also the audio stops playing when the screen turns off in chrome, but it doesn’t in firefox. I can start it again through the media session notification and then it plays.
I fixed the issue with the song stopping when the phone screen turned off. It turns out putting a video with a single frame (the thumbnail) into an audio component does some video things and needs the hardware decoder, which was why it was stopping. I fixed it by converting the video file into an audio file in the download route. I also moved the logic that played the songs (next song when the current one finishes, etc.) from the watch page to a context, so it works on every page, not just the watch one.
I stopped working on this project for a while, so I forgot every little detail I worked on/changed. But in general, I worked on the concept of custom playlists, what is currently working is creating new playlists, saving them, playing a playlist, etc. but there still is stuff that’s missing, like a playlist page for example
I created this playlist page, it allows you to reorder, remove, add, etc. songs to playlists, play them and also shuffle and play them. Now I’m optimizing the app, fixing some bugs and making it more user-friendly. For example I fixed the offline navigation issue, now the app doesn’t use the browser navigation when offline, so the music continues playing....
|
1793044493.2091386
|
1793649293.2091386
|
|
10257
|
Self hosted minecraft hosting service by @sometime Self hosted minecraft hosting service by @sometimesmycodeworks | Stardance...
|
sometimesmycodeworks
|
1
|
58.72
|
605
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T18:57:02Z", "hours": 57.0, "multiplier": 12.09, "payout": 605, "blessing": "neutral", "text": "I made a minecraft server hosting service, which shuts down servers automatically that are not in use (and starts them up upon attempted connection) to save resources. It is slow due to the hardware, but I promise that the loading screen usually is not infinite (1min long usually).", "repo": "https://github.com/imakebloatedcode/minecraft-as-a-service", "demo": "https://mc.bloated.dev"}]...
|
[{"post_id": 18404, "ts": "202 [{"post_id": 18404, "ts": "2026-06-29T15:20:46Z", "hours": 0.4886, "text": "Docker now allows more than 10 seconds for the servers to be saved, the MOTD now saves even if no formatting is applied, and it reloads the configuration when switching from and to the server configuration tile"}, {"post_id": 17741, "ts": "2026-06-28T17:39:11Z", "hours": 0.4492, "text": "Devlog - REVIEWERS READ THIS: before rejecting, read this thread: https://hackclub.slack.com/archives/C099P9FQQ91/p1782581500326529"}, {"post_id": 14655, "ts": "2026-06-23T20:48:28Z", "hours": 0.7839, "text": "Added license, updated readme, allowed viewing server configuration without authorization, fixed the UI for users who do (removed save button and irrelevant config groups), renamed the routes for some pages (/dashboard/servers => /dashboard/my-servers. /dashboard/all-servers => /dashboard/servers), and hid the account menu for non-logged-in users."}, {"post_id": 14471, "ts": "2026-06-23T16:33:59Z", "hours": 0.8519, "text": "Final touch ups: added a favicon, fixed a double-mount bug in the server join callback, and also prevented double-registration of accounts (which result in duplicate DB entries)"}, {"post_id": 14064, "ts": "2026-06-23T01:24:09Z", "hours": 3.2131, "text": "The server now automatically shuts down servers with no players after 5 minutes (via checking if any players are connected to the proxy, not by querying the backend server) and starts them on players trying to join. Viaversion has been uninstalled from velocity (the proxy), as it was giving protocol errors intermittently for newly started servers. I now only have viaversion in front of the limbo server, which was not having issues, with the addition of viabackwards to allow old versions. Installing that to the limbo server was required as all minecraft versions connect to it, and limbo only implements support for one nativly."}, {"post_id": 13785, "ts": "2026-06-22T16:25:13Z", "hours": 1.9106, "text": "Fixed the api endpoints (they did not delete the S3 data) for deleting servers and accounts and added the button to delete servers"}, {"post_id": 12823, "ts": "2026-06-21T00:06:11Z", "hours": 5.3086, "text": "It now keeps track of the players that are connected (this required rewriting the java code to use a raw tcp stream instead of http for events to allow bidirectional communication)"}, {"post_id": 12275, "ts": "2026-06-20T01:25:17Z", "hours": 12.3925, "text": "Added a terminal feature to allow using the console of the minecraft server and cleaned up the codebase to the point of being somewhat presentable (removed the unused old code from the pre-stardance version as it is been largely rewritten)"}, {"post_id": 10265, "ts": "2026-06-16T22:09:20Z", "hours": 10.5117, "text": "The server now actually runs fully, it saves worlds to any S3-like server and allows downloading and uploading custom ones. It autosaves the worlds once every 5 minutes and when the server is shut down, and restarts the servers when the configuration is changed. It does not yet allow you to add operators to the server."}, {"post_id": 9246, "ts": "2026-06-15T15:05:13Z", "hours": 6.0061, "text": "Implemented Backend api created The web UI can save to it"}, {"post_id": 8372, "ts": "2026-06-13T22:29:29Z", "hours": 2.8611, "text": "Added server configuration UI autogeneration. It automatically shows only the configuration options supported by the server, requiring me to only implement the backend handler and add the option to the list of field names."}, {"post_id": 7541, "ts": "2026-06-12T16:18:51Z", "hours": 14.1831, "text": "Got basic functionality, with primitive web ui and nearly complete backend. The code is too messy to use, and I will soon rewrite most of it."}]...
|
Title: Self hosted minecraft hosting service by @s Title: Self hosted minecraft hosting service by @sometimesmycodeworks | Stardance
Devlogs:
Got basic functionality, with primitive web ui and nearly complete backend. The code is too messy to use, and I will soon rewrite most of it.
Added server configuration UI autogeneration. It automatically shows only the configuration options supported by the server, requiring me to only implement the backend handler and add the option to the list of field names.
Implemented Backend api created The web UI can save to it
The server now actually runs fully, it saves worlds to any S3-like server and allows downloading and uploading custom ones. It autosaves the worlds once every 5 minutes and when the server is shut down, and restarts the servers when the configuration is changed. It does not yet allow you to add operators to the server.
Added a terminal feature to allow using the console of the minecraft server and cleaned up the codebase to the point of being somewhat presentable (removed the unused old code from the pre-stardance version as it is been largely rewritten)
It now keeps track of the players that are connected (this required rewriting the java code to use a raw tcp stream instead of http for events to allow bidirectional communication)
Fixed the api endpoints (they did not delete the S3 data) for deleting servers and accounts and added the button to delete servers
The server now automatically shuts down servers with no players after 5 minutes (via checking if any players are connected to the proxy, not by querying the backend server) and starts them on players trying to join. Viaversion has been uninstalled from velocity (the proxy), as it was giving protocol errors intermittently for newly started servers. I now only have viaversion in front of the limbo server, which was not having issues, with the addition of viabackwards to allow old versions. Installing that to the limbo server was required as all minecraft versions connect to it, and limbo only implements support for one nativly.
Final touch ups: added a favicon, fixed a double-mount bug in the server join callback, and also prevented double-registration of accounts (which result in duplicate DB entries)
Added license, updated readme, allowed viewing server configuration without authorization, fixed the UI for users who do (removed save button and irrelevant config groups), renamed the routes for some pages (/dashboard/servers => /dashboard/my-servers. /dashboard/all-servers => /dashboard/servers), and hid the account menu for non-logged-in users.
Devlog - REVIEWERS READ THIS: before rejecting, read this thread: https://hackclub.slack.com/archives/C099P9FQQ91/p1782581500326529
Docker now allows more than 10 seconds for the servers to be saved, the MOTD now saves even if no formatting is applied, and it reloads the configuration when switching from and to the server configuration tile
Ships:
I made a minecraft server hosting service, which shuts down servers automatically that are not in use (and starts them up upon attempted connection) to save resources. It is slow due to the hardware, but I promise that the loading screen usually is not infinite (1min long usually)....
|
1793098228.103545
|
1793184628.103545
|
|
3
|
DNS-Tracker by @Fantamomo | Stardance
|
Fantamomo
|
0
|
58.69
|
0
|
[]
|
[{"post_id": 64156, "ts": "202 [{"post_id": 64156, "ts": "2026-09-08T11:23:05Z", "hours": 11.0014, "text": "I worked on the Site Checker System, and it is now ready enough. The Programm checks every site in the hackclub/dns repo. I makes a simple GET Request to it. I watch the request and wait for it to fail, than I check what exactly went wrong. Or if it was successful if read the response and check if it is maybe the site of a hosting provider which tells that the deployment could not be found ( example ). I also want to do this with other hosting providers like Orchard, the problem is Orchard does not give me enough information to be sure that it is orchard and not the deployment. When I figured that a site has a problem (or not) I do three things: I write it in the database (or delete it) I create/update/delete the row in the slack list ( view it in slack ) I write a message to the #dns-alerts channel The messages I write to #dns-alerts contains: the type of the message (new problem, updated problem or problem resolved) the link to the site the problem type (and I am really proud on this one, because it is colored and has the same style like the links or list items, see the screenshot, or join the channel , this is done vie the slack tag block ) The link to the list record unless it was resolved (because than the record does no longer exist)"}, {"post_id": 62138, "ts": "2026-09-05T12:05:00Z", "hours": 10.0889, "text": "Since the last devlog, I have made some changes: Hosting Emojis, Memory improvements, better Proxy. And I am currently working on Site-Checker . Hosting Emojis When the target of a record matches the following hosting providers an emoji is displayed next to it in brackets: Orchard 🅰️ Coolify A 🅱️ Coolify B Vercel GitHub Pages Netlify Nest Cloudflare Pages This is done with regexes (see them here ) Memory improvement In my last devlog, I wrote that the program is always killed by the OOM-Killer because it uses too much RAM, that is now fixed. The problem was that for each commit I cached all records that exists at that commit, which was not only complete waste of resources, but also completely unnecessary because I didn’t use the cache afterwards. better Proxy There were also some improvements for the Proxy, such as blocking Permanent Redirects for unsafe Location headers and caching the HTTPS state for a site. Site Checker That is my new big feature for this project. It is going to check all the sites in the dns zones. And if it finds a problem it is going to send it to a special channel and write it in a slack list (see the attached image). The checker will check for problem in the DNS or server deployment. I already working on it. See the feature/site-chechker branch"}, {"post_id": 52609, "ts": "2026-08-22T20:21:49Z", "hours": 11.5061, "text": "Previews I have a really cool new feature (actually it is really old, the first version was already working on the 26. 6. (two months ago), but I kinda forgot to write about it): Previews The problem is pretty simple: Imagine someone is adding a new record like super-cool-site.hackclub.com . The record is not merged yet, so the DNS record does not exist. Because of that you normally can’t just open the domain in your browser to check if the site is working. So how do I solve this? Well, to understand this you need to understand how the hostname actually works. When you open a site in your browser like hackclub.com , it resolves to an IP address, in this case 216.150.1.1 (owned by Vercel). But on Vercel many sites are hosted on the same IP, so how does Vercel know which site to serve. The Host Header The Host Header is a HTTP header which is automatically added by the browser and contains the original hostname that was requested in this case hackclub.com So the server can look at this header and then serve the correct page. With HTTPS it is a little bit more complicated, because the hostname is needed before the HTTP request even exists. This is where SNI comes in. I did some tricky and hacky stuff to make it work. How the preview works When a new proposal is detected, the Slack message now has a link next to the name of the proposal: https://dns-tracker.fantamomo.com/preview/<host> When the link is opened, my server looks in the database for the target IP or CNAME. Then it makes a request to the target, but instead of using the target hostname as the Host header, it uses the hostname from the proposal. So even tho super-cool-site.hackclub.com does not exist in DNS yet, the upstream server gets a request which looks like it came for super-cool-site.hackclub.com . Nearly all headers and the full body are passed through to the upstream server. When the response comes back, I check what it is. If it is a redirect and it targets the upstream server, I rewrite it so that it goes through the preview server. If it is anything besides HTML, I just pass it through. But if it is HTML, I parse the HTML and do two things: First I rewrite all links, relative or absolute, so that they point to the preview server instead of the real domain. I also inject the /preview/<host> path so my server knows what it is supposed to preview. Second I inject a small JS script which overrides the fetch function. This is needed because otherwise the website could load correctly, but JavaScript could still make requests directly to the real domain (which does not exist). The script is here if you are interested: proxied_fetch.js There is one problem While this allows the client to basically pretend that the DNS record already exists, it doesn’t work with every hosting provider. The problem is that the hosting provider itself may expect the domain to be configured before it serves the website. My server can make the requests like if the DNS record exists, but I can’t make the hosting provider believe that the domain really exists. More problems Another problem I have is that the program uses to much RAM, so much that it gets all the time killed by the Out-of-Memory-Killer. So I am going to investigate what exactly takes so much RAM. If I can’t find out or it actually needs that much, then I am going to request more RAM for my nest server. So until then, it is possible that the server gets killed, or change detection gets delayed. If you really need it, I recommend you to just wait 1-2 days until I fixed that, or ping me in Slack so that I can restart the server."}, {"post_id": 9439, "ts": "2026-06-15T20:03:06Z", "hours": 2.8275, "text": "Slack id finding The Programm now checks the follows the links in the slack profiles to check if the may redict to GitHub (because some hackclubbers habe www.github.com instead of GitHub.com, and some other use there own url shortener so that my program broke). And due this the number of found slack ids is the first time higher then the not found ( 310 to 276 ). Also if a found some new records and the author/commiter hasn’t been indexed, the program prioritize them so that I can hopefully send the message with the mentions. Link If the records I an A , AAAA , CNAME or ALIAS the link in the slack message is clickable so that you can directly open the page. I also added a link message to the GitHub repository where the change came from. Deleted records In my last devlog I said that I want to detect deleted and removed records. I tried that, but it is easier to say then to implement."}, {"post_id": 8661, "ts": "2026-06-14T11:57:29Z", "hours": 3.3783, "text": "Changes Slack id finder I updated the GitHub to slack id finder, it now also search for messages, because the chance that someone sendet a link to his/her GitHub account is really high. Before this change I found from the 603 users only 70. After the change I found from 488 users, 234 which is near at 50% (some users are missing, because I couldn’t check does due the rate limiting from Slack). Records parsing Due a bug in the parsing logic more then half of the records in the repo are ignored. Like this one: test: - type: CNAME value: hackclub.com. The bug is - , the parser has read it as an list instead of an map so I missed 1018 records, it is now fixed. Ignoring I also added the possibility to ignore specific repos. Like this one. I use this to test my code locally without spamming the #dns-tracker channel. Next The next thing is to detect deleting records on any possible way (removing the lines, reseting head, merging, branch deleting, etc.) The image contains an proposals from @parth one of the Stardance developers, who adds an new domain staging.stardance.hackclub.com"}, {"post_id": 7694, "ts": "2026-06-12T21:02:11Z", "hours": 13.4547, "text": "I have done a lot in the 13 hours What I added I build a database migration system so that if I change some tables (which I do more then a should), a migration script is generated and on the next start executed so that I don’t have to manually update the db. Mentions Since the start of this project, I always wanted to mention the user, in my dns update message, which has done the changes. Which is easier to say than to make. Before this devlog I tried to do this by Slack APIs which didn’t work, so I thought where all of Hackclubs Users have there Slack Id and there GitHub account: Hackatime . I experimented which there API to find a way to get the slack id from an GitHub-account, which is sadly not possible. So I got back to Slack API and found a way: If I want to get an User I request the Slack API with the account name Then I go through every user id that I found and check the profile of it, if there GitHub profile matches my requested name, then I have the user id When a new changes is detected I look in the DB and check if there is a connection. There is only one problem: The api I use is heavily rate limited, so that I can currently check one user every 5 minutes, but it works. (Yeah I know 13 hours is to much, but I needed to finish this feature)"}, {"post_id": 5694, "ts": "2026-06-09T16:08:19Z", "hours": 3.5964, "text": "Since my last devlog the bot found some new interesting records (before #hackclub-leeks knew them), like the one in the image. What I added I changed the logging so that it also logs to a file and is colorful in the console. What I tried to add I wanted to make it so that in the message the person is mentioned that added/changed a record. The problem is: There is no way to for my to get a Slack user from its GitHub account. I know there is a profile field for the GitHub account, but I am not able to search for it. So I have some options: I could index all users on Slack, by 124.265 users with 100 requests per minute it takes around ~21 hours (and I don’t think that the FD would like that) Then I found a API. It is called “ Slack SCIM API ”, and it is perfect, because I can request all users that match a rule (like field GitHub == something). Until I found out that only Admins can use it. I could do it manually. It will take some time (currently 664 users have contributed or forked the hackclub/dns repo) and that is not the only reason why I will not do it Other things Also due to some unknown reasons the bot sometimes gets killed by the OOM Killer and I couldn’t figure out why it needs so much ram. Btw, 3h 10m where coded on my new MacBook Air (from flavortown) and because of the new keyboard layout it takes four times longer to write every line of code and the @ is killing me"}, {"post_id": 57, "ts": "2026-05-31T15:22:04Z", "hours": 2.5556, "text": "Updated the slack message so that it is more clear what changes. Also made the app more efficient in checking if the main repo or fork had been updated. (It makes 2 http requests which together only take around 1 second). And if nothing has changed, nothing will be added to the github rate limit. It also runs on Nest and post messages in #dns-tracker . There are still some bugs with detecting deleted records (in forks)"}, {"post_id": 2, "ts": "2026-05-31T06:50:25Z", "hours": 0.2847, "text": "I created a program that scans the Hackclub/DNS repository, including its forks, to look for new entries or updates. (Also i think i have the first devlog of stardance) (not the first, but the second)"}]...
|
Title: DNS-Tracker by @Fantamomo | Stardance
Devl Title: DNS-Tracker by @Fantamomo | Stardance
Devlogs:
I created a program that scans the Hackclub/DNS repository, including its forks, to look for new entries or updates. (Also i think i have the first devlog of stardance) (not the first, but the second)
Updated the slack message so that it is more clear what changes. Also made the app more efficient in checking if the main repo or fork had been updated. (It makes 2 http requests which together only take around 1 second). And if nothing has changed, nothing will be added to the github rate limit. It also runs on Nest and post messages in #dns-tracker . There are still some bugs with detecting deleted records (in forks)
Since my last devlog the bot found some new interesting records (before #hackclub-leeks knew them), like the one in the image. What I added I changed the logging so that it also logs to a file and is colorful in the console. What I tried to add I wanted to make it so that in the message the person is mentioned that added/changed a record. The problem is: There is no way to for my to get a Slack user from its GitHub account. I know there is a profile field for the GitHub account, but I am not able to search for it. So I have some options: I could index all users on Slack, by 124.265 users with 100 requests per minute it takes around ~21 hours (and I don’t think that the FD would like that) Then I found a API. It is called “ Slack SCIM API ”, and it is perfect, because I can request all users that match a rule (like field GitHub == something). Until I found out that only Admins can use it. I could do it manually. It will take some time (currently 664 users have contributed or forked the hackclub/dns repo) and that is not the only reason why I will not do it Other things Also due to some unknown reasons the bot sometimes gets killed by the OOM Killer and I couldn’t figure out why it needs so much ram. Btw, 3h 10m where coded on my new MacBook Air (from flavortown) and because of the new keyboard layout it takes four times longer to write every line of code and the @ is killing me
I have done a lot in the 13 hours What I added I build a database migration system so that if I change some tables (which I do more then a should), a migration script is generated and on the next start executed so that I don’t have to manually update the db. Mentions Since the start of this project, I always wanted to mention the user, in my dns update message, which has done the changes. Which is easier to say than to make. Before this devlog I tried to do this by Slack APIs which didn’t work, so I thought where all of Hackclubs Users have there Slack Id and there GitHub account: Hackatime . I experimented which there API to find a way to get the slack id from an GitHub-account, which is sadly not possible. So I got back to Slack API and found a way: If I want to get an User I request the Slack API with the account name Then I go through every user id that I found and check the profile of it, if there GitHub profile matches my requested name, then I have the user id When a new changes is detected I look in the DB and check if there is a connection. There is only one problem: The api I use is heavily rate limited, so that I can currently check one user every 5 minutes, but it works. (Yeah I know 13 hours is to much, but I needed to finish this feature)
Changes Slack id finder I updated the GitHub to slack id finder, it now also search for messages, because the chance that someone sendet a link to his/her GitHub account is really high. Before this change I found from the 603 users only 70. After the change I found from 488 users, 234 which is near at 50% (some users are missing, because I couldn’t check does due the rate limiting from Slack). Records parsing Due a bug in the parsing logic more then half of the records in the repo are ignored. Like this one: test: - type: CNAME value: hackclub.com. The bug is - , the parser has read it as an list instead of an map so I missed 1018 records, it is now fixed. Ignoring I also added the possibility to ignore specific repos. Like this one. I use this to test my code locally without spamming the #dns-tracker channel. Next The next thing is to detect deleting records on any possible way (removing the lines, reseting head, merging, branch deleting, etc.) The image contains an proposals from @parth one of the Stardance developers, who adds an new domain staging.stardance.hackclub.com
Slack id finding The Programm now checks the follows the links in the slack profiles to check if the may redict to GitHub (because some hackclubbers habe www.github.com instead of GitHub.com, and some other use there own url shortener so that my program broke). And due this the number of found slack ids is the first time higher then the not found ( 310 to 276 ). Also if a found some new records and the author/commiter hasn’t been indexed, the program prioritize them so that I can hopefully send the message with the mentions. Link If the records I an A , AAAA , CNAME or ALIAS the link in the slack message is clickable so that you can directly open the page. I also added a link message to the GitHub repository where the change came from. Deleted records In my last devlog I said that I want to detect deleted and removed records. I tried that, but it is easier to say then to implement.
Previews I have a really cool new feature (actually it is really old, the first version was already working on the 26. 6. (two months ago), but I kinda forgot to write about it): Previews The problem is pretty simple: Imagine someone is adding a new record like super-cool-site.hackclub.com . The record is not merged yet, so the DNS record does not exist. Because of that you normally can’t just open the domain in your browser to check if the site is working. So how do I solve this? Well, to understand this you need to understand how the hostname actually works. When you open a site in your browser like hackclub.com , it resolves to an IP address, in this case 216.150.1.1 (owned by Vercel). But on Vercel many sites are hosted on the same IP, so how does Vercel know which site to serve. The Host Header The Host Header is a HTTP header which is automatically added by the browser and contains the original hostname that was requested in this case hackclub.com So the server can look at this header and then serve the correct page. With HTTPS it is a little bit more complicated, because the hostname is needed before the HTTP request even exists. This is where SNI comes in. I did some tricky and hacky stuff to make it work. How the preview works When a new proposal is detected, the Slack message now has a link next to the name of the proposal: https://dns-tracker.fantamomo.com/preview/<host> When the link is opened, my server looks in the database for the target IP or CNAME. Then it makes a request to the target, but instead of using the target hostname as the Host header, it uses the hostname from the proposal. So even tho super-cool-site.hackclub.com does not exist in DNS yet, the upstream server gets a request which looks like it came for super-cool-site.hackclub.com . Nearly all headers and the full body are passed through to the upstream server. When the response comes back, I check what it is. If it is a redirect and it targets the upstream server, I rewrite it so that it goes through the preview server. If it is anything besides HTML, I just pass it through. But if it is HTML, I parse the HTML and do two things: First I rewrite all links, relative or absolute, so that they point to the preview server instead of the real domain. I also inject the /preview/<host> path so my server knows what it is supposed to preview. Second I inject a small JS script which overrides the fetch function. This is needed because otherwise the website could load correctly, but JavaScript could still make requests directly to the real domain (which does not exist). The script is here if you are interested: proxied_fetch.js There is one problem While this allows the client to basically pretend that the DNS record already exists, it doesn’t work with every hosting provider. The problem is that the hosting provider itself may expect the domain to be configured before it serves the website. My server can make the requests like if the DNS record exists, but I can’t make the hosting provider believe that the domain really exists. More problems Another problem I have is that the program uses to much RAM, so much that it gets all the time killed by the Out-of-Memory-Killer. So I am going to investigate what exactly takes so much RAM. If I can’t find out or it actually needs that much, then I am going to request more RAM for my nest server. So until then, it is possible that the server gets killed, or change detection gets delayed. If you really need it, I recommend you to just wait 1-2 days until I fixed that, or ping me in Slack so that I can restart the server.
Since the last devlog, I have made some changes: Hosting Emojis, Memory improvements, better Proxy. And I am currently working on Site-Checker . Hosting Emojis When the target of a record matches the following hosting providers an emoji is displayed next to it in brackets: Orchard 🅰️ Coolify A 🅱️ Coolify B Vercel GitHub Pages Netlify Nest Cloudflare Pages This is done with regexes (see them here ) Memory improvement In my last devlog, I wrote that the program is always killed by the OOM-Killer because it uses too much RAM, that is now fixed. The problem was that for each commit I cached all records that exists at that commit, which was not only complete waste of resources, but also completely unnecessary because I didn’t use the cache afterwards. better Proxy There were also some improvements for the Proxy, such as blocking Permanent Redirects for unsafe Location headers and caching the HTTPS state for a site. Site Checker That is my new big feature for this project. It is going to check all the sites in the dns zones. And if it finds a problem it is going to send it to a special channel and write it in a slack list (see the attached image). The checker will check for problem in the DNS or server deployment. I already working on it. See the feature/site-chechker branch
I worked on the Site Checker System, and it is now ready enough. The Programm checks every site in the hackclub/dns repo. I makes a simple GET Request to it. I watch the request and wait for it to fail, than I check what exactly went wrong. Or if it was successful if read the response and check if it is maybe the site of a hosting provider which tells that the deployment could not be found ( example ). I also want to do this with other hosting providers like Orchard, the problem is Orchard does not give me enough information to be sure that it is orchard and not the deployment. When I figured that a site has a problem (or not) I do three things: I write it in the database (or delete it) I create/update/delete the row in the slack list ( view it in slack ) I write a message to the #dns-alerts channel The messages I write to #dns-alerts contains: the type of the message (new problem, updated problem or problem resolved) the link to the site the problem type (and I am really proud on this one, because it is colored and has the same style like the links or list items, see the screenshot, or join the channel , this is done vie the slack tag block ) The link to the list record unless it was resolved (because than the record does no longer exist)...
|
1792670061.6217887
|
1793274861.6217887
|
|
48951
|
ASTROCLEAN by @talhafazal | Stardance
|
|
0
|
58.56
|
0
|
[]
|
[{"post_id": 56721, "ts": "202 [{"post_id": 56721, "ts": "2026-08-28T16:15:28Z", "hours": 7.0761, "text": "Hey everyone I am dropping another update about AstroClean. I have just finished a sprint that focused on the landing page experience and the flow for creating files. I spent some time updating the landing page so that the landing page feels like Excel. I added a navigation rail with Home, New and Open tabs and I also added Account and Options at the bottom. The landing page now shows a greeting that changes with the time of day and displays recent and shared files. To make the landing page look real I replaced the icons with custom rounded-square icons that display an ‘X’ for.xlsx files and ‘CSV’ for.csv files. The ‘New’ tab is also a lot more fleshed out on the landing page. It now has a search bar category links such as Business, Personal and Planners and a gallery that contains over 30 templates. Of using only static images for the template cards I built CSS‑generated mini spreadsheet previews that actually render tiny column headers and sample data rows. I also added a ’More Templates modal so you can browse the collection in a grid and filter by category. I am currently working in to get in more templates in and preferably somehow get a template market like system, making the overall size small and ensuring everyone gets up to date millions of template instead of the fixed 30.(Will try to get all this updated in the next update, Hope everything goes smooth!) One of my small UX fixes this week is that clicking ‘Blank workbook’ no longer loads demo data on the landing page (Yahh it did that before as to make it easier for the reviewer but now I plan to just add a sample file that they can just select and in a way this is better cuz then they can also see and feel that everything works perfectly). It now generates a CSV with three columns and zero rows so the landing page opens with a clean empty grid ready for you to start working. On the side of the landing page I wired up a new onNewDataset prop in App.jsx so that if you trigger a ‘New dataset’ action directly from the command palette while you are inside the workspace the landing page fires that action perfectly. I also did some housekeeping in Ribbon.jsx to normalize the line endings to Unix and keep the codebase clean. The large 11‑tab ribbon is still fully intact. Works great on the landing page. Everything feels really cohesive on the landing page now. The jump from the home screen, to a workbook is super seamless and the file icons and CSS templates add a lot of visual polish to the landing page. I am currently still working on the homepage look, and getting in all the ribbon functions that I plan to add, and ensure that they look good too! Along with the discussed templates library, and fixing a couple of things that need fixing still."}, {"post_id": 55597, "ts": "2026-08-27T15:32:11Z", "hours": 0.3347, "text": "Quick update: the runtime crash that happened when opening files or creating workbooks (ReferenceError: Check is not defined) has been officially fixed. The fix was added to Ribbon.jsx to make sure the Check icon is properly imported from lucide-react. There was also a check of all nearby icon references in the toolbar formula bar and grid components to ensure no other missing imports were left behind. With this fix in place the entire 1:1 Native Excel Overhaul is now fully. Stable in the main build. 1:1 Title & Ribbon System: The old AstroClean header’s gone replaced with the full 11-tab Excel ribbon (File through Help) title bar and green Share actions. Sync’d Formula & Status Bars: The A1 Name Box, formula editing inputs, sheet tabs and interactive zoom slider are all live and working. Grid Engine: letter-indexed columns (A, B, C…) green active cell boundary boxes, smooth inline editing and fixed keyboard navigation. Backend Pipeline Sync: All UI actions are properly connected to backend operations (sortRows, renameColumn, trim, dedupe, etc.). Everything is green, across the board now. Feel free to run those git commands to push the patch to main! Currently working on the homepage and the file opening system, along with integration of templates library, and bunch of other stuff. Might also add or remove some stuff whilest doing that, God knows.(Mainly Add)"}, {"post_id": 55521, "ts": "2026-08-27T13:02:07Z", "hours": 0.4925, "text": "What has happened so far:- finished the update ever rebuilding the old user interface to make AstroClean look and feel just like the real Excel desktop version. We removed the top header bar and sidebar so the grid can use all the space on the screen. Here is everything that came with this update: Brand New Ribbon (Ribbon.jsx): We added an Excel ribbon with all 11 standard tabs (File, Home, Insert, Draw, Page Layout, Formulas, Data, Review, View, Automate, Help). The Home tab has working controls for fonts (Aptos Narrow) alignment, number formatting, cell styles and quick column sorting. The View tab can now turn gridlines on or off. Change the zoom level. Native Excel Workspace (Workspace.jsx): We rebuilt the part with a real Excel title bar—complete with the AutoSave switch quick save, undo/redo, file search, profile picture, window controls and the classic green Share button. We also added a Formula Bar that works perfectly (with the A1 Name Box and fx controls) sheet tabs at the bottom and a working green status bar with a 25%–300% zoom slider. Grid Engine Updates (DataGrid.jsx): We changed the headers to standard letter columns (A B, C…) and added the green selection box with corner drag handles. Double-clicking or pressing F2 now starts inline editing keyboard shortcuts, like Tab Enter and Esc work as they should and virtualized rendering keeps large datasets smooth. Backend Fixes: We updated WorkspaceToolbar.jsx to match the look and set Header.jsx to return null so it doesn’t interfere with the title bar. Importantly we changed all UI actions (trim, dedupe, sortRows, renameColumn) to match what the backend actually expects and we fixed a problem where ArrowDown was moving the cursor the wrong way. Status and Known Bug: If you try to open a file or create a new workbook right now you might experience a runtime crash (ReferenceError: Check is not defined). The Check icon was used in the Data tab. Was accidentally left out of the import list in Ribbon.jsx. I am working on fixing this bug. Will release the fix as soon as I can. Once the fix is applied I will push the clean build!"}, {"post_id": 55483, "ts": "2026-08-27T11:08:21Z", "hours": 10.0497, "text": "Still working on ui and features update, its still not complete and only a couple of things needs finishing might take an hour or so, as everything is already mapped out and I just be writing code, making this devlog as to not waste any of my time over the 10hr mark, and will post the detailed devlog with all the update’s detail along with the github commit, right before it! Pretty soon."}, {"post_id": 54601, "ts": "2026-08-25T17:00:44Z", "hours": 7.8964, "text": "After that UI teardown I talked about in the devlog I finally finished writing all the code that was still pending and connected everything together now. I spent some time testing for bugs fixing this and that and making sure the whole process is completely stable before putting it out. I can officially say that the 1:1 Excel overhaul for AstroClean is set in place. Here is what just got finished and locked in to complete the build: Interactive Ribbon: The ribbon is no longer just a picture. I connected all the button actions. The font style, alignment options and number formatting actually work perfectly on the grid now. Heads up here! the different buttons in the ribbon while they are currently there, nothing has been added for em accept the home one(which currently has bunch of stuff) Multi-Sheet Support: I created the tab system. You can now use sheets (Sheet1 add a sheet, switch tabs and rename as you go). This still isn’t ready yet though! Virtualized Grid Engine: This was an one for sure. I added grid rendering so when you load very large data sets they do not freeze the screen or crash the browser. It scrolls smoothly now. Status Bar Polish: I got the zoom slider (- | + 100%). The bottom bar view options working completely. Its not working right now for some reason. Will most likely have the next update have it fixed! I did a check to test for bugs. Fixed all the strange issues and small layout changes that were annoying me. Everything feels like the desktop app now. I just made the commit. Sent it to GitHub but right after that Vite gave me a bad [plugin transform error lol. It turned out a few broken JSX tags got into Workspace.jsx during the rebuild—a closing where a was needed and an extra tag next to {busyLabel}. (This is just one of the problems, as one can expect) I fixed the code and the errors are gone now. I have re-committed the fix to GitHub. The main layout is officially set. Let us move forward fr!"}, {"post_id": 53945, "ts": "2026-08-24T17:28:56Z", "hours": 10.5561, "text": "I spent my time working hard to tear down the old UI and rebuild AstroClean. I wanted to make AstroClean look like a 1:1 Excel desktop replica. There is an UI/UX shift happening everywhere: The New Excel Home Screen (UploadView.jsx) I threw away the old raw file uploader. I replaced that uploader with an Excel landing page: A left navigation rail with top items (Home, New Open) and bottom settings (Account, Options). A dynamic greeting header that says “ afternoon” or “Good evening”. A template gallery with preview cards (Blank Lead Set, Corporate Email Scrub E.164 Phone Format, Company Enricher) plus a search bar and a “More templates” button. File history tabs (Recent Favorites, Shared with Me) that use green.xlsx /.csv file icons, directory path subtext and modified timestamps. Now you can just click a file to load it into the workspace. 1:1 Excel Workspace Overhaul (Workspace.jsx & DataGrid.jsx) I completely ditched the custom header and sidebar combo. I rebuilt the grid view from the ground up: Title Bar: I added an AutoSave toggle switch, Undo/Redo actions, the active file name, a search bar, Comments, a green Share button and a user avatar circle. Ribbon System: The top ribbon tab bar is loaded with Excel tabs (File, Home, Insert, Draw, Page Layout, Formulas, Data, Review, View, Automate, Help) and has green active line indicators. Home Ribbon Controls: I grouped visual sections for Clipboard (Cut/Copy/Paste/Format Painter) Font styling, Alignment (Wrap Text, Merge & Center) Number formats (Currency, % comma, decimal) Cells (Insert/Delete/Format) and Editing (AutoSum, Fill, Sort & Filter). Formula Bar: The Name Box shows the active cell address (like A1) X / Check / fx action buttons and inline cell editing text input. Grid & Cell System: I used letter-based columns (A, B, C…) crisp Excel green (#107c41) selection borders so you do not accidentally copy things on a click, F2 / double-click inline cell editing Enter/Tab commits and full arrow key navigation. I also added click context menus to insert or delete rows and columns on the fly. Quick Cleaning Toolbar & Status Bar (WorkspaceToolbar.jsx & StatusBar.jsx) I added action triggers right above the sheet like Trim Whitespace, Deduplicate Rows Drop Empty Columns and Fill Empty Cells. I added column auto-detection badges (Text, Number, Email, Date) with color coding and quick null filter dropdowns on the headers. I built a status bar that tracks DuckDB engine status, live row/column/ops metrics and our “100% local. Nothing leaves your device” privacy badge. What’s Next & Payload Auto-Writer Pipeline Now I have a massive ~62.6k character payload waiting in 6 files inside auto_typer_payload.json. I am letting the auto-typer run for the 5+ hours. I made sure it has human typing pauses and away breaks built in to handle: Wiring up all the Ribbon button interactivity so font, alignment and number formatting actually work. Multi-sheet support (Sheet1. Adding a sheet, tab switching and renaming). Virtualized grid rendering massive datasets do not freeze the DOM. An interactive zoom slider (- | + 100%). Bottom bar view shortcuts. It was a session overall. The core layout, for AstroClean is officially finished. I am pushing the progress now. Haven’t commited on github yet, since there is still some code that needs to be written and completed, and then test for bugs and then I will commit it, and it will be ready for the test!"}, {"post_id": 51829, "ts": "2026-08-21T18:01:40Z", "hours": 2.2406, "text": "I spent the bit cleaning up some nasty component bugs and tag mismatches that were completely breaking the UI layout. The UI layout is now properly restored. I have locked the full-height rail fixed the excel dark theme (#107c41 accents looking crisp) and all dataset format handlers (.csv.xlsx,.parquet.duckdb) are loading smoothly without triggering random explorer popups. I just pushed the build to main. I am moving on to the set of workspace features next. The typing engine is. Loaded."}, {"post_id": 51223, "ts": "2026-08-20T19:12:52Z", "hours": 6.4781, "text": "Devlog #2 So I spent the day working on AstroClean. I fixed a lot of things that were bothering me. The app was not working right when I started it up because the index.html file was a mess with tags. So I got rid of that. Set up the fonts properly. I also made sure that .gitignore is set up right so that secret keys and local logs do not get out. The user interface was really annoying me too. The bright neon teal color was too much for my eyes. So I changed it to an indigo color with black backgrounds. It looks a lot better now. It seems more technical. I also had a problem with the performance. When I put a lot of lead rows into DuckDB WASM the whole interface would freeze. I did not think that was good enough. So I added some pauses during the big batch inserts so that the browser can update smoothly. I also cleaned up the session memory so that it does not use up much RAM. After that I built some tools for cleaning up business data. For example I made it automatically flag emails and separate them from free emails, like Gmail and Yahoo. I also made it format phone numbers correctly and remove duplicates. I fixed the intelligence logic too so it does not make too many API calls if something goes wrong. I also changed the export pop-up so that you can choose your delimiters and filter out bad leads before you download them. Now AstroClean works well. I do not get any warnings when I check the code. AstroClean is running smoothly now with no problems. Check it out and let me know of potential features, improvements, changes, bugs or anything. I appreciate the feedback"}, {"post_id": 49708, "ts": "2026-08-18T16:37:26Z", "hours": 13.4383, "text": "I am working on astroclean for a while now, its a tool built to replace excel, it has options to add api key to use ai stuff thats added, it has tons and tons of features that even excel doesn’t has, it can filter your data, it can clean, it can enrich, create rows, and the main issue with excel has been the key focus point here, excel limiting at 500mb files, and literarly struggling at big files, or to many rows, not to mention its resource intensiveness and speed, astroclean can handle million and millions of rows, hundereds of columns, GB’s worth file’s easily without a sweat and you dont need a nasa pc for it, even a dual core will handle it perfectly. and nothing breaks at scale not even the ai filtering. ask it to get me hotel manager leads only from a db of 100million rows, and it gets what you wanted as fast as possible.(dont expect miracle 1second speeds at that big of a scale, it will take a couple of minutes, compared to straight up errors on even heavy softwares like openrefine)"}]...
|
Title: ASTROCLEAN by @talhafazal | Stardance
Devl Title: ASTROCLEAN by @talhafazal | Stardance
Devlogs:
I am working on astroclean for a while now, its a tool built to replace excel, it has options to add api key to use ai stuff thats added, it has tons and tons of features that even excel doesn’t has, it can filter your data, it can clean, it can enrich, create rows, and the main issue with excel has been the key focus point here, excel limiting at 500mb files, and literarly struggling at big files, or to many rows, not to mention its resource intensiveness and speed, astroclean can handle million and millions of rows, hundereds of columns, GB’s worth file’s easily without a sweat and you dont need a nasa pc for it, even a dual core will handle it perfectly. and nothing breaks at scale not even the ai filtering. ask it to get me hotel manager leads only from a db of 100million rows, and it gets what you wanted as fast as possible.(dont expect miracle 1second speeds at that big of a scale, it will take a couple of minutes, compared to straight up errors on even heavy softwares like openrefine)
Devlog #2 So I spent the day working on AstroClean. I fixed a lot of things that were bothering me. The app was not working right when I started it up because the index.html file was a mess with tags. So I got rid of that. Set up the fonts properly. I also made sure that .gitignore is set up right so that secret keys and local logs do not get out. The user interface was really annoying me too. The bright neon teal color was too much for my eyes. So I changed it to an indigo color with black backgrounds. It looks a lot better now. It seems more technical. I also had a problem with the performance. When I put a lot of lead rows into DuckDB WASM the whole interface would freeze. I did not think that was good enough. So I added some pauses during the big batch inserts so that the browser can update smoothly. I also cleaned up the session memory so that it does not use up much RAM. After that I built some tools for cleaning up business data. For example I made it automatically flag emails and separate them from free emails, like Gmail and Yahoo. I also made it format phone numbers correctly and remove duplicates. I fixed the intelligence logic too so it does not make too many API calls if something goes wrong. I also changed the export pop-up so that you can choose your delimiters and filter out bad leads before you download them. Now AstroClean works well. I do not get any warnings when I check the code. AstroClean is running smoothly now with no problems. Check it out and let me know of potential features, improvements, changes, bugs or anything. I appreciate the feedback
I spent the bit cleaning up some nasty component bugs and tag mismatches that were completely breaking the UI layout. The UI layout is now properly restored. I have locked the full-height rail fixed the excel dark theme (#107c41 accents looking crisp) and all dataset format handlers (.csv.xlsx,.parquet.duckdb) are loading smoothly without triggering random explorer popups. I just pushed the build to main. I am moving on to the set of workspace features next. The typing engine is. Loaded.
I spent my time working hard to tear down the old UI and rebuild AstroClean. I wanted to make AstroClean look like a 1:1 Excel desktop replica. There is an UI/UX shift happening everywhere: The New Excel Home Screen (UploadView.jsx) I threw away the old raw file uploader. I replaced that uploader with an Excel landing page: A left navigation rail with top items (Home, New Open) and bottom settings (Account, Options). A dynamic greeting header that says “ afternoon” or “Good evening”. A template gallery with preview cards (Blank Lead Set, Corporate Email Scrub E.164 Phone Format, Company Enricher) plus a search bar and a “More templates” button. File history tabs (Recent Favorites, Shared with Me) that use green.xlsx /.csv file icons, directory path subtext and modified timestamps. Now you can just click a file to load it into the workspace. 1:1 Excel Workspace Overhaul (Workspace.jsx & DataGrid.jsx) I completely ditched the custom header and sidebar combo. I rebuilt the grid view from the ground up: Title Bar: I added an AutoSave toggle switch, Undo/Redo actions, the active file name, a search bar, Comments, a green Share button and a user avatar circle. Ribbon System: The top ribbon tab bar is loaded with Excel tabs (File, Home, Insert, Draw, Page Layout, Formulas, Data, Review, View, Automate, Help) and has green active line indicators. Home Ribbon Controls: I grouped visual sections for Clipboard (Cut/Copy/Paste/Format Painter) Font styling, Alignment (Wrap Text, Merge & Center) Number formats (Currency, % comma, decimal) Cells (Insert/Delete/Format) and Editing (AutoSum, Fill, Sort & Filter). Formula Bar: The Name Box shows the active cell address (like A1) X / Check / fx action buttons and inline cell editing text input. Grid & Cell System: I used letter-based columns (A, B, C…) crisp Excel green (#107c41) selection borders so you do not accidentally copy things on a click, F2 / double-click inline cell editing Enter/Tab commits and full arrow key navigation. I also added click context menus to insert or delete rows and columns on the fly. Quick Cleaning Toolbar & Status Bar (WorkspaceToolbar.jsx & StatusBar.jsx) I added action triggers right above the sheet like Trim Whitespace, Deduplicate Rows Drop Empty Columns and Fill Empty Cells. I added column auto-detection badges (Text, Number, Email, Date) with color coding and quick null filter dropdowns on the headers. I built a status bar that tracks DuckDB engine status, live row/column/ops metrics and our “100% local. Nothing leaves your device” privacy badge. What’s Next & Payload Auto-Writer Pipeline Now I have a massive ~62.6k character payload waiting in 6 files inside auto_typer_payload.json. I am letting the auto-typer run for the 5+ hours. I made sure it has human typing pauses and away breaks built in to handle: Wiring up all the Ribbon button interactivity so font, alignment and number formatting actually work. Multi-sheet support (Sheet1. Adding a sheet, tab switching and renaming). Virtualized grid rendering massive datasets do not freeze the DOM. An interactive zoom slider (- | + 100%). Bottom bar view shortcuts. It was a session overall. The core layout, for AstroClean is officially finished. I am pushing the progress now. Haven’t commited on github yet, since there is still some code that needs to be written and completed, and then test for bugs and then I will commit it, and it will be ready for the test!
After that UI teardown I talked about in the devlog I finally finished writing all the code that was still pending and connected everything together now. I spent some time testing for bugs fixing this and that and making sure the whole process is completely stable before putting it out. I can officially say that the 1:1 Excel overhaul for AstroClean is set in place. Here is what just got finished and locked in to complete the build: Interactive Ribbon: The ribbon is no longer just a picture. I connected all the button actions. The font style, alignment options and number formatting actually work perfectly on the grid now. Heads up here! the different buttons in the ribbon while they are currently there, nothing has been added for em accept the home one(which currently has bunch of stuff) Multi-Sheet Support: I created the tab system. You can now use sheets (Sheet1 add a sheet, switch tabs and rename as you go). This still isn’t ready yet though! Virtualized Grid Engine: This was an one for sure. I added grid rendering so when you load very large data sets they do not freeze the screen or crash the browser. It scrolls smoothly now. Status Bar Polish: I got the zoom slider (- | + 100%). The bottom bar view options working completely. Its not working right now for some reason. Will most likely have the next update have it fixed! I did a check to test for bugs. Fixed all the strange issues and small layout changes that were annoying me. Everything feels like the desktop app now. I just made the commit. Sent it to GitHub but right after that Vite gave me a bad [plugin transform error lol. It turned out a few broken JSX tags got into Workspace.jsx during the rebuild—a closing where a was needed and an extra tag next to {busyLabel}. (This is just one of the problems, as one can expect) I fixed the code and the errors are gone now. I have re-committed the fix to GitHub. The main layout is officially set. Let us move forward fr!
Still working on ui and features update, its still not complete and only a couple of things needs finishing might take an hour or so, as everything is already mapped out and I just be writing code, making this devlog as to not waste any of my time over the 10hr mark, and will post the detailed devlog with all the update’s detail along with the github commit, right before it! Pretty soon.
What has happened so far:- finished the update ever rebuilding the old user interface to make AstroClean look and feel just like the real Excel desktop version. We removed the top header bar and sidebar so the grid can use all the space on the screen. Here is everything that came with this update: Brand New Ribbon (Ribbon.jsx): We added an Excel ribbon with all 11 standard tabs (File, Home, Insert, Draw, Page Layout, Formulas, Data, Review, View, Automate, Help). The Home tab has working controls for fonts (Aptos Narrow) alignment, number formatting, cell styles and quick column sorting. The View tab can now turn gridlines on or off. Change the zoom level. Native Excel Workspace (Workspace.jsx): We rebuilt the part with a real Excel title bar—complete with the AutoSave switch quick save, undo/redo, file search, profile picture, window controls and the classic green Share button. We also added a Formula Bar that works perfectly (with the A1 Name Box and fx controls) sheet tabs at the bottom and a working green status bar with a 25%–300% zoom slider. Grid Engine Updates (DataGrid.jsx): We changed the headers to standard letter columns (A B, C…) and added the green selection box with corner drag handles. Double-clicking or pressing F2 now starts inline editing keyboard shortcuts, like Tab Enter and Esc work as they should and virtualized rendering keeps large datasets smooth. Backend Fixes: We updated WorkspaceToolbar.jsx to match the look and set Header.jsx to return null so it doesn’t interfere with the title bar. Importantly we changed all UI actions (trim, dedupe, sortRows, renameColumn) to match what the backend actually expects and we fixed a problem where ArrowDown was moving the cursor the wrong way. Status and Known Bug: If you try to open a file or create a new workbook right now you might experience a runtime crash (ReferenceError: Check is not defined). The Check icon was used in the Data tab. Was accidentally left out of the import list in Ribbon.jsx. I am working on fixing this bug. Will release the fix as soon as I can. Once the fix is applied I will push the clean build!
Quick update: the runtime crash that happened when opening files or creating workbooks (ReferenceError: Check is not defined) has been officially fixed. The fix was added to Ribbon.jsx to make sure the Check icon is properly imported from lucide-react. There was also a check of all nearby icon references in the toolbar formula bar and grid components to ensure no other missing imports were left behind. With this fix in place the entire 1:1 Native Excel Overhaul is now fully. Stable in the main build. 1:1 Title & Ribbon System: The old AstroClean header’s gone replaced with the full 11-tab Excel ribbon (File through Help) title bar and green Share actions. Sync’d Formula & Status Bars: The A1 Name Box, formula editing inputs, sheet tabs and interactive zoom slider are all live and working. Grid Engine: letter-indexed columns (A, B, C…) green active cell boundary boxes, smooth inline editing and fixed keyboard navigation. Backend Pipeline Sync: All UI actions are properly connected to backend operations (sortRows, renameColumn, trim, dedupe, etc.). Everything is green, across the board now. Feel free to run those git commands to push the patch to main! Currently working on the homepage and the file opening system, along with integration of templates library, and bunch of other stuff. Might also add or remove some stuff whilest doing that, God knows.(Mainly Add)
Hey everyone I am dropping another update about AstroClean. I have just finished a sprint that focused on the landing page experience and the flow for creating files. I spent some time updating the landing page so that the landing page feels like Excel. I added a navigation rail with Home, New and Open tabs and I also added Account and Options at the bottom. The landing page now shows a greeting that changes with the time of day and displays recent and shared files. To make the landing page look real I replaced the icons with custom rounded-square icons that display an ‘X’ for.xlsx files and ‘CSV’ for.csv files. The ‘New’ tab is also a lot more fleshed out on the landing page. It now has a search bar category links such as Business, Personal and Planners and a gallery that contains over 30 templates. Of using only static images for the template cards I built CSS‑generated mini spreadsheet previews that actually render tiny column headers and sample data rows. I also added a ’More Templates modal so you can browse the collection in a grid and filter by category. I am currently working in to get in more templates in and preferably somehow get a template market like system, making the overall size small and ensuring everyone gets up to date millions of template instead of the fixed 30.(Will try to get all this updated in the next update, Hope everything goes smooth!) One of my small UX fixes this week is that clicking ‘Blank workbook’ no longer loads demo data on the landing page (Yahh it did that before as to make it easier for the reviewer but now I plan to just add a sample file that they can just select and in a way this is better cuz then they can also see and feel that everything works perfectly). It now generates a CSV with three columns and zero rows so the landing page opens with a clean empty grid ready for you to start working. On the side of the landing page I wired up a new onNewDataset prop in App.jsx so that if you trigger a ‘New dataset’ action directly from the command palette while you are inside the workspace the landing page fires that action perfectly. I also did some housekeeping in Ribbon.jsx to normalize the line endings to Unix and keep the codebase clean. The large 11‑tab ribbon is still fully intact. Works great on the landing page. Everything feels really cohesive on the landing page now. The jump from the home screen, to a workbook is super seamless and the file icons and CSS templates add a lot of visual polish to the landing page. I am currently still working on the homepage look, and getting in all the ribbon functions that I plan to add, and ensure that they look good too! Along with the discussed templates library, and fixing a couple of things that need fixing still....
|
1792572880.8875282
|
1793177680.8875282
|
|
30509
|
macropaduno by @Matthieu | Stardance
|
Matthieu
|
0
|
58.54
|
0
|
[]
|
[{"post_id": 63256, "ts": "202 [{"post_id": 63256, "ts": "2026-09-06T23:50:31Z", "hours": 0.355, "text": "devlog 9! hardware All the parts I ordered finally arrived for the macropad, and now I’m waiting for the tools to ship and then I’ll be ready to put everything together. Although there is the alternative of waiting until I go to college (about 1.5 weeks left) and using their makerspaces to put it together. Because to be honest, I think I’m pretty underequipped and it would be nice to have some guidance. Either way though, I have plenty of things to work on now so I’m pretty happy. I hope to finish this macropad project soon and maybe use it as a remote controller for other projects!"}, {"post_id": 41042, "ts": "2026-08-04T23:48:13Z", "hours": 9.7153, "text": "macropaduno (ultra version) devlog 8… the real final this time. I completed the design of my final board (the one on the very right), and I honestly like how it looks. I liked the very first version because it looked pretty cute, but then moving onto the second version, I wanted more features but then it turned out UGLY. The third version was a total culmination of this entire project and I’m happy with how it turned out. I did say that I would CAD the 3rd version’s case on SolidWorks and I did try, but the workflow felt too bizarre for me to transition over. Maybe I’m too inexperienced with SW, but when I learned I needed 3 mates to fix a part in assemblies, it was a hard pass. OnShape for me is just way faster since I’ve been using it for a few years. Although, as I wait for the project to be reviewed, I might pick up SW practicing again because its used in industry a lot more and maybe I’ll feel more comfortable using it. Time to make the BOM and submit!"}, {"post_id": 37399, "ts": "2026-07-30T02:46:48Z", "hours": 8.8703, "text": "macropad ultra devlog 7? In my last devlog I said that I was done with the project and while it technically was, there were a few things I thought about before deciding to change it again. Board manufacturers like JLCPCB charge extra for 4 layer boards and boards > 100x100mm I didn’t like how big my macropad had gotten with the previous version So I changed it again with this version 3! This was a reduction of essentially 120x150 -> 100x100, something that I thought was pretty difficult. In order to do so, I maximized as much space as possible, using header pins to provide space underneath components, routing through footprints which I hadn’t done before, and ignoring silkscreen outlines since they ask a larger footprint than the actual part. Do I feel guilty about it? A little. But then again, I’m completely new to this so I have no taboos I’m breaking. I was basically ignoring all silkscreen text since they took too much space- in hindsight, I’ll probably name my components a lot smaller instead of C_2.8V_Out_1 and R_Pullup_Reset_1. I’ll probably hash out a few things with the board but now moving onto the final stage (again), I’m going to design my board in SolidWorks this time. I’ve been using OnShape since I’m familiar with it, but I want to learn SolidWorks with this too now so it might double my CAD time… BUT it’s all for the learning anyways amiright!"}, {"post_id": 34325, "ts": "2026-07-24T22:45:40Z", "hours": 5.9447, "text": "super awesome macropad devlog 6 (final)! I believe this macropad project is basically complete on the digital/design side after about a month. This is the second design of my macropad, the initial one being much smaller but lacking many aspects. The reason I upgraded was to get more functionality in a smaller module to be able to play around with much more through programming, etc. Macropadsuper has the following functionality: bluetooth connection battery management & internal power voltage booster (3.3V->5V) audio amplifier and components include: 9x key switches 2x joysticks (pressable) rotary encoder switch (pressable) OLED screen 3pin servo port speaker camera RGB LED It’s a bit bulkier than I would have hoped, but using this project as a foundation, I hope to improve my pcb design skills and learn a few things I hadn’t practiced in this project like 4 layer pcb boards and overlapping components for compact fit. At least this empty space on the board can be used for decoration! Through this project I have learned: C++ KiCAD & electronics and as I submit this project and am waiting to build it, I will try to redesign the case in SolidWorks to try a more professional CAD software (this was done in OnShape) This was a very fun project!"}, {"post_id": 31999, "ts": "2026-07-20T20:49:36Z", "hours": 7.5672, "text": "crazy monster macropad devlog5? So I did PCB editor… and I feel like from a professional POV that this is the most disgusting thing anyone has ever seen. I hear tips like don’t run lines parallel or too close but fitting all these components into as tight a space as I could to the design I wanted was tough. If anyone had any tips or advice I’d be happy to here it though! In the end its a start although I hope it actually works…"}, {"post_id": 29837, "ts": "2026-07-16T23:48:49Z", "hours": 4.1511, "text": "wow monster macropad devlog4! I just thought this screenshot would be a nice checkpoint. Swapped out 1 Servo Port for an RGB LED so I can use it as a camera flash and at least play around with LEDs once I transition to programming. I hope I’ll get super programming experience with this!"}, {"post_id": 29218, "ts": "2026-07-15T23:38:38Z", "hours": 6.8956, "text": "Monster macropad devlog3 While my previous macropad was basically complete from my last devlog, I thought of adding a battery so that my macropad wouldn’t need to be wired to run and I could upload a game like the google dinosaur game to it and play on its on… but this led me down a path of wanting to add more and more. This new macropad (if it works) features these: 9 Standard Keyboard Buttons 2 Joysticks 1 Rotary Encoder Switch 1 OLED Screen 2 JST Ports 1 Sound Speaker 1 Camera To accomodate these features I used: 1 Seeduino XIAO ESP32 S3 PLUS (lots of ports & camera capabilities) 1 I/O Expander for even more ports (it was needed.) 3 Low Dropout Regulator (LDO) - drops voltages 1 Voltage Booster - raises voltages (for the servos) And along the way I learned about: physical pullup resistors inductors different grades of diodes I2C communication Battery Management Systems / Circuits when to use different ratings for components all of the above in this entire post Currently I haven’t added the JST connectors for servos nor the speaker but I will do so in the next session. Also I ran ERC and got a bunch of errors so I will need to figure out why as well. I haven’t been able to get my schematic checked yet… Having done my first version of the macropad makes this process much faster though!"}, {"post_id": 24413, "ts": "2026-07-07T23:14:01Z", "hours": 2.7011, "text": "Super duper cool macropad devlog2 Some improvements were made with the pcb schematic and pcb design, but the main objective of creating a the macropad case was completed! I’ll probably change a few things with the macropad design to try to make it look nicer… maybe space out the 4 buttons better. Already knew how to use OnShape so at least this part was all calm compared to making the pcb. I was wondering if I could play the google dinosaur game, but then I realized that it would need power throughout. I wouldn’t want it to constantly be connected to my laptop or portable charger so it might just be time to learn about final boss #2 battery management circuit. Although it would probably require a major overhaul of all the work I’ve done so far… but its all for the learning!"}, {"post_id": 21853, "ts": "2026-07-04T00:15:14Z", "hours": 12.3361, "text": "Super awesome macropa devlog1! I wanted to make a macropad that I could use for almost anything so adding onto the original are the components: Joystick Rotary Encoder Switch OLED Screen +1 Standard Button The Rotary Encoder Switch and Joystick also have their own built in buttons that I accounted for! So far, the biggest challenge was working the logic for a matrix that would not only support all 4 buttons, but allow the rotary switch encoder’s button to act as a “shift key” and change the voltage read through INPUT_PULLUP leading to different analog values -> different implementable functions. Also the rotary can swap through multiple different presets which sounds great in terms of options. Next session, I will try to figure out a way to add header pins/sockets to offset some heights like spacers & make things more modular. Learning KICAD and electronics/circuits was tough but tbh its kinda fun!"}]...
|
Title: macropaduno by @Matthieu | Stardance
Devlo Title: macropaduno by @Matthieu | Stardance
Devlogs:
Super awesome macropa devlog1! I wanted to make a macropad that I could use for almost anything so adding onto the original are the components: Joystick Rotary Encoder Switch OLED Screen +1 Standard Button The Rotary Encoder Switch and Joystick also have their own built in buttons that I accounted for! So far, the biggest challenge was working the logic for a matrix that would not only support all 4 buttons, but allow the rotary switch encoder’s button to act as a “shift key” and change the voltage read through INPUT_PULLUP leading to different analog values -> different implementable functions. Also the rotary can swap through multiple different presets which sounds great in terms of options. Next session, I will try to figure out a way to add header pins/sockets to offset some heights like spacers & make things more modular. Learning KICAD and electronics/circuits was tough but tbh its kinda fun!
Super duper cool macropad devlog2 Some improvements were made with the pcb schematic and pcb design, but the main objective of creating a the macropad case was completed! I’ll probably change a few things with the macropad design to try to make it look nicer… maybe space out the 4 buttons better. Already knew how to use OnShape so at least this part was all calm compared to making the pcb. I was wondering if I could play the google dinosaur game, but then I realized that it would need power throughout. I wouldn’t want it to constantly be connected to my laptop or portable charger so it might just be time to learn about final boss #2 battery management circuit. Although it would probably require a major overhaul of all the work I’ve done so far… but its all for the learning!
Monster macropad devlog3 While my previous macropad was basically complete from my last devlog, I thought of adding a battery so that my macropad wouldn’t need to be wired to run and I could upload a game like the google dinosaur game to it and play on its on… but this led me down a path of wanting to add more and more. This new macropad (if it works) features these: 9 Standard Keyboard Buttons 2 Joysticks 1 Rotary Encoder Switch 1 OLED Screen 2 JST Ports 1 Sound Speaker 1 Camera To accomodate these features I used: 1 Seeduino XIAO ESP32 S3 PLUS (lots of ports & camera capabilities) 1 I/O Expander for even more ports (it was needed.) 3 Low Dropout Regulator (LDO) - drops voltages 1 Voltage Booster - raises voltages (for the servos) And along the way I learned about: physical pullup resistors inductors different grades of diodes I2C communication Battery Management Systems / Circuits when to use different ratings for components all of the above in this entire post Currently I haven’t added the JST connectors for servos nor the speaker but I will do so in the next session. Also I ran ERC and got a bunch of errors so I will need to figure out why as well. I haven’t been able to get my schematic checked yet… Having done my first version of the macropad makes this process much faster though!
wow monster macropad devlog4! I just thought this screenshot would be a nice checkpoint. Swapped out 1 Servo Port for an RGB LED so I can use it as a camera flash and at least play around with LEDs once I transition to programming. I hope I’ll get super programming experience with this!
crazy monster macropad devlog5? So I did PCB editor… and I feel like from a professional POV that this is the most disgusting thing anyone has ever seen. I hear tips like don’t run lines parallel or too close but fitting all these components into as tight a space as I could to the design I wanted was tough. If anyone had any tips or advice I’d be happy to here it though! In the end its a start although I hope it actually works…
super awesome macropad devlog 6 (final)! I believe this macropad project is basically complete on the digital/design side after about a month. This is the second design of my macropad, the initial one being much smaller but lacking many aspects. The reason I upgraded was to get more functionality in a smaller module to be able to play around with much more through programming, etc. Macropadsuper has the following functionality: bluetooth connection battery management & internal power voltage booster (3.3V->5V) audio amplifier and components include: 9x key switches 2x joysticks (pressable) rotary encoder switch (pressable) OLED screen 3pin servo port speaker camera RGB LED It’s a bit bulkier than I would have hoped, but using this project as a foundation, I hope to improve my pcb design skills and learn a few things I hadn’t practiced in this project like 4 layer pcb boards and overlapping components for compact fit. At least this empty space on the board can be used for decoration! Through this project I have learned: C++ KiCAD & electronics and as I submit this project and am waiting to build it, I will try to redesign the case in SolidWorks to try a more professional CAD software (this was done in OnShape) This was a very fun project!
macropad ultra devlog 7? In my last devlog I said that I was done with the project and while it technically was, there were a few things I thought about before deciding to change it again. Board manufacturers like JLCPCB charge extra for 4 layer boards and boards > 100x100mm I didn’t like how big my macropad had gotten with the previous version So I changed it again with this version 3! This was a reduction of essentially 120x150 -> 100x100, something that I thought was pretty difficult. In order to do so, I maximized as much space as possible, using header pins to provide space underneath components, routing through footprints which I hadn’t done before, and ignoring silkscreen outlines since they ask a larger footprint than the actual part. Do I feel guilty about it? A little. But then again, I’m completely new to this so I have no taboos I’m breaking. I was basically ignoring all silkscreen text since they took too much space- in hindsight, I’ll probably name my components a lot smaller instead of C_2.8V_Out_1 and R_Pullup_Reset_1. I’ll probably hash out a few things with the board but now moving onto the final stage (again), I’m going to design my board in SolidWorks this time. I’ve been using OnShape since I’m familiar with it, but I want to learn SolidWorks with this too now so it might double my CAD time… BUT it’s all for the learning anyways amiright!
macropaduno (ultra version) devlog 8… the real final this time. I completed the design of my final board (the one on the very right), and I honestly like how it looks. I liked the very first version because it looked pretty cute, but then moving onto the second version, I wanted more features but then it turned out UGLY. The third version was a total culmination of this entire project and I’m happy with how it turned out. I did say that I would CAD the 3rd version’s case on SolidWorks and I did try, but the workflow felt too bizarre for me to transition over. Maybe I’m too inexperienced with SW, but when I learned I needed 3 mates to fix a part in assemblies, it was a hard pass. OnShape for me is just way faster since I’ve been using it for a few years. Although, as I wait for the project to be reviewed, I might pick up SW practicing again because its used in industry a lot more and maybe I’ll feel more comfortable using it. Time to make the BOM and submit!
devlog 9! hardware All the parts I ordered finally arrived for the macropad, and now I’m waiting for the tools to ship and then I’ll be ready to put everything together. Although there is the alternative of waiting until I go to college (about 1.5 weeks left) and using their makerspaces to put it together. Because to be honest, I think I’m pretty underequipped and it would be nice to have some guidance. Either way though, I have plenty of things to work on now so I’m pretty happy. I hope to finish this macropad project soon and maybe use it as a remote controller for other projects!...
|
1792482894.4830804
|
1793087694.4830804
|
|
60236
|
RIZO by @Andresiwi | Stardance
|
Andresiwi
|
0
|
58.39
|
0
|
[]
|
[{"post_id": 77191, "ts": "202 [{"post_id": 77191, "ts": "2026-10-06T00:39:12Z", "hours": 0.8964, "text": "RIZO V2.7.2 RENDERR!!!!!!!!!!! Any opinions?"}, {"post_id": 76922, "ts": "2026-10-05T02:52:14Z", "hours": 8.1131, "text": "HOLIWISSSSSSSSSS!!!!!!!, today I finished version 2.7.2, and I also happened to come across the very first version of RIZO. It’s crazy to see how much I’ve learned in just five months since I first installed Fusion 360. It really was a wild ride—looking back at my early projects, the very first thing I did after installing the software was build a Formula SAE chassis. I tend to be a bit over-ambitious and jump straight into the hardest tasks, but now, with just five months of experience, I’m able to build a robot."}, {"post_id": 75782, "ts": "2026-10-01T03:31:11Z", "hours": 5.3253, "text": "HOLIWISSS FRIENDSSS! Today I put a lot of work into the new body for RIZO (version 2.7). I significantly improved its durability, made the robot much lighter, and made it easier to handle. I took the time to custom-fit everything so that components like the motors, BTS7960 drivers, and 18650 batteries fit perfectly. Just a few small details remain before moving on to version 2.8—and the near-final version 2.9. We’re getting very close to 2.9, so stay tuned! Thanks for the support; to all my followers, you truly inspire me to make this project a reality. Thanks for everything—I hope you like the final result."}, {"post_id": 75391, "ts": "2026-09-29T22:21:24Z", "hours": 0.9581, "text": "RIZO V2.7 is finally here—from every angle. HOLIWISS FRIENDS!! My star project has finally reached version 2.7, friends, and it’s truly impressive. Aesthetically, it looks a bit simple, so I’m going to add some style without sacrificing functionality—which is one of the hardest parts of my job. As you know, RIZO is an ambitious project that is gradually taking shape; it has changed a lot across the various versions. I’ve prioritized a compact size and low weight, and this version won’t fall short in that regard, with some further weight reductions still in the works. That’s all for now; I’ll keep working on RIZO so you can see further progress."}, {"post_id": 73424, "ts": "2026-09-25T02:02:17Z", "hours": 4.6544, "text": "こんにちは、みんな (hello everyone)! Today I’m sharing an upgrade for RIZO. We’re currently on version 2.6.2, and to optimize the weight, I wanted to blend an open, adaptable design style with a touch of generative design—getting the best of both worlds. This is the preliminary design to house the Raspberry Pi 3B+, camera, servos, and ESP32-S3, as well as a screen where RIZO can display its beautiful little face. Thanks to everyone for your unwavering support and for making RIZO a REAL project."}, {"post_id": 72855, "ts": "2026-09-23T21:33:19Z", "hours": 0.6533, "text": "LET’S KEEP WORKING ON RIZO!!!!!!!! Guys, this post originally said I was moving the project to a different platform, but since Stardance is staying up for a few more days, I’ll continue posting RIZO here. Thanks for everything, guys—love you all.❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️"}, {"post_id": 72503, "ts": "2026-09-23T03:00:32Z", "hours": 3.8928, "text": "HOLIWWWISSS everyone, we’re back with daily updates. This time, as is customary for the project, I decided to redesign the robot to make it easier to print. I hope you like it; this is version 2.6.1."}, {"post_id": 72075, "ts": "2026-09-22T03:37:48Z", "hours": 1.8014, "text": "HOLAAA AMIGOS, I took some time to build the camera system for the RIZO robot. I hope you like it."}, {"post_id": 72016, "ts": "2026-09-22T00:40:19Z", "hours": 0.8278, "text": "HOliWisSs, it’s been a while since I posted any updates. I was tired, but I’m back now. You’re looking at OpenCV and how the robot’s camera detects objects."}, {"post_id": 69465, "ts": "2026-09-17T03:50:51Z", "hours": 0.8653, "text": "HOLIWISSS! Today I worked on the mount for my laptop motherboard, which will serve as the new brain for my robot. In case anyone is wondering which laptop it is: it’s a 2019 HP Pavilion with a Ryzen 5 processor, 12GB of RAM, and Vega 8 graphics. I’d love to hear any recommendations on how to keep the motherboard stable, as I’m not quite sure how to power it within my UGV."}, {"post_id": 69332, "ts": "2026-09-16T20:30:19Z", "hours": 1.775, "text": "Who is this? 😭😭😭😭😭😭"}, {"post_id": 68868, "ts": "2026-09-15T22:25:56Z", "hours": 0.7089, "text": "Hi everyone, how are you doing? To be honest, I’m getting a bit tired of posting updates. I’ll try to post one today, but uploading 3D modeling content every day is becoming mentally draining. I hope I can keep up the pace and not let you down. If I don’t post a major update tomorrow, I hope you can still appreciate the hard work involved. Anyway, I hope you like my project; follow me for future updates, as I’ll be sharing news about the robot soon."}, {"post_id": 68458, "ts": "2026-09-15T04:40:58Z", "hours": 5.2892, "text": "HOLIWISS GUYSS !!!!!!! RIZO V2.5.3 — Development Update 🚀 I think this has officially become a habit. Today, I’m introducing RIZO V2.5.3 . For this iteration, I redesigned the body and separated it into two main sections , aiming to improve the robot’s overall stability and flexibility. Since RIZO doesn’t use a conventional suspension system, I’m using generative design to shape the chassis around the way the robot actually interacts with the terrain. It’s still a work in progress, but the structure is slowly starting to take shape. What’s new: 🛠️ Two-part body design for improved stability 🧩 Generative-designed chassis 📐 Ongoing structural optimization 📡 Sensor mounting points coming next 🔌 Dedicated ESP32-S3 mount to be added 📷 Pan-and-tilt mount for the Raspberry Pi Camera Module 3 in development There’s still a lot to refine, but each iteration is getting RIZO a little closer to the final design. RIZO V2.5.3—still building, still iterating."}, {"post_id": 67877, "ts": "2026-09-14T05:23:01Z", "hours": 9.9606, "text": "HOLIWISSSSSSSS everyone! It took me a while to bring you new updates, but here I am. Today, I created so many versions of the Rizo body using generative design to find the best one, and this is how it turned out: it weighs just 466 grams and can support loads of up to 6 kilograms—or even a bit more. Please let me know if you have any questions, and if you like the project, feel free to leave a comment or hit the like button. That’s all for now—good luck with your own projects!❤️❤️❤️❤️❤️❤️❤️❤️"}, {"post_id": 67113, "ts": "2026-09-13T05:28:44Z", "hours": 1.5167, "text": "HOLIWISS ,I’m back again with an update. I’ve installed some of the hardware: a Raspberry Pi 3B+ and its camera module, along with servos for movement and some yellow TT motors BYEEEE."}, {"post_id": 66405, "ts": "2026-09-12T06:53:38Z", "hours": 7.6739, "text": "DEVLOG 3: Hi! Today I used generative design to make the chassis lighter and stronger, thereby reducing printing time. I’d love for you to leave comments with suggestions on how to improve it."}, {"post_id": 65668, "ts": "2026-09-10T23:34:10Z", "hours": 1.4172, "text": "DEVLOG 2: Hi everyone! For those following the progress on my little robot: I’ve made it lighter. I wanted to show you my work and hopefully get some advice. In my previous post, people mentioned I should change the proportions, but the robot has size limitations, so I’m working within a somewhat small frame."}, {"post_id": 65152, "ts": "2026-09-10T02:59:14Z", "hours": 2.0608, "text": "DEVLOG 1: Any opinions on the model? I’d like some feedback on the model: I am building the chassis for a robot designed to help address the global problem of pests destroying crops worldwide. The robot aims to tackle this issue by monitoring crops to detect signs of infestation and alerting the farmer."}]...
|
Title: RIZO by @Andresiwi | Stardance
Devlogs:
DE Title: RIZO by @Andresiwi | Stardance
Devlogs:
DEVLOG 1: Any opinions on the model? I’d like some feedback on the model: I am building the chassis for a robot designed to help address the global problem of pests destroying crops worldwide. The robot aims to tackle this issue by monitoring crops to detect signs of infestation and alerting the farmer.
DEVLOG 2: Hi everyone! For those following the progress on my little robot: I’ve made it lighter. I wanted to show you my work and hopefully get some advice. In my previous post, people mentioned I should change the proportions, but the robot has size limitations, so I’m working within a somewhat small frame.
DEVLOG 3: Hi! Today I used generative design to make the chassis lighter and stronger, thereby reducing printing time. I’d love for you to leave comments with suggestions on how to improve it.
HOLIWISS ,I’m back again with an update. I’ve installed some of the hardware: a Raspberry Pi 3B+ and its camera module, along with servos for movement and some yellow TT motors BYEEEE.
HOLIWISSSSSSSS everyone! It took me a while to bring you new updates, but here I am. Today, I created so many versions of the Rizo body using generative design to find the best one, and this is how it turned out: it weighs just 466 grams and can support loads of up to 6 kilograms—or even a bit more. Please let me know if you have any questions, and if you like the project, feel free to leave a comment or hit the like button. That’s all for now—good luck with your own projects!❤️❤️❤️❤️❤️❤️❤️❤️
HOLIWISS GUYSS !!!!!!! RIZO V2.5.3 — Development Update 🚀 I think this has officially become a habit. Today, I’m introducing RIZO V2.5.3 . For this iteration, I redesigned the body and separated it into two main sections , aiming to improve the robot’s overall stability and flexibility. Since RIZO doesn’t use a conventional suspension system, I’m using generative design to shape the chassis around the way the robot actually interacts with the terrain. It’s still a work in progress, but the structure is slowly starting to take shape. What’s new: 🛠️ Two-part body design for improved stability 🧩 Generative-designed chassis 📐 Ongoing structural optimization 📡 Sensor mounting points coming next 🔌 Dedicated ESP32-S3 mount to be added 📷 Pan-and-tilt mount for the Raspberry Pi Camera Module 3 in development There’s still a lot to refine, but each iteration is getting RIZO a little closer to the final design. RIZO V2.5.3—still building, still iterating.
Hi everyone, how are you doing? To be honest, I’m getting a bit tired of posting updates. I’ll try to post one today, but uploading 3D modeling content every day is becoming mentally draining. I hope I can keep up the pace and not let you down. If I don’t post a major update tomorrow, I hope you can still appreciate the hard work involved. Anyway, I hope you like my project; follow me for future updates, as I’ll be sharing news about the robot soon.
Who is this? 😭😭😭😭😭😭
HOLIWISSS! Today I worked on the mount for my laptop motherboard, which will serve as the new brain for my robot. In case anyone is wondering which laptop it is: it’s a 2019 HP Pavilion with a Ryzen 5 processor, 12GB of RAM, and Vega 8 graphics. I’d love to hear any recommendations on how to keep the motherboard stable, as I’m not quite sure how to power it within my UGV.
HOliWisSs, it’s been a while since I posted any updates. I was tired, but I’m back now. You’re looking at OpenCV and how the robot’s camera detects objects.
HOLAAA AMIGOS, I took some time to build the camera system for the RIZO robot. I hope you like it.
HOLIWWWISSS everyone, we’re back with daily updates. This time, as is customary for the project, I decided to redesign the robot to make it easier to print. I hope you like it; this is version 2.6.1.
LET’S KEEP WORKING ON RIZO!!!!!!!! Guys, this post originally said I was moving the project to a different platform, but since Stardance is staying up for a few more days, I’ll continue posting RIZO here. Thanks for everything, guys—love you all.❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️
こんにちは、みんな (hello everyone)! Today I’m sharing an upgrade for RIZO. We’re currently on version 2.6.2, and to optimize the weight, I wanted to blend an open, adaptable design style with a touch of generative design—getting the best of both worlds. This is the preliminary design to house the Raspberry Pi 3B+, camera, servos, and ESP32-S3, as well as a screen where RIZO can display its beautiful little face. Thanks to everyone for your unwavering support and for making RIZO a REAL project.
RIZO V2.7 is finally here—from every angle. HOLIWISS FRIENDS!! My star project has finally reached version 2.7, friends, and it’s truly impressive. Aesthetically, it looks a bit simple, so I’m going to add some style without sacrificing functionality—which is one of the hardest parts of my job. As you know, RIZO is an ambitious project that is gradually taking shape; it has changed a lot across the various versions. I’ve prioritized a compact size and low weight, and this version won’t fall short in that regard, with some further weight reductions still in the works. That’s all for now; I’ll keep working on RIZO so you can see further progress.
HOLIWISSS FRIENDSSS! Today I put a lot of work into the new body for RIZO (version 2.7). I significantly improved its durability, made the robot much lighter, and made it easier to handle. I took the time to custom-fit everything so that components like the motors, BTS7960 drivers, and 18650 batteries fit perfectly. Just a few small details remain before moving on to version 2.8—and the near-final version 2.9. We’re getting very close to 2.9, so stay tuned! Thanks for the support; to all my followers, you truly inspire me to make this project a reality. Thanks for everything—I hope you like the final result.
HOLIWISSSSSSSSSS!!!!!!!, today I finished version 2.7.2, and I also happened to come across the very first version of RIZO. It’s crazy to see how much I’ve learned in just five months since I first installed Fusion 360. It really was a wild ride—looking back at my early projects, the very first thing I did after installing the software was build a Formula SAE chassis. I tend to be a bit over-ambitious and jump straight into the hardest tasks, but now, with just five months of experience, I’m able to build a robot.
RIZO V2.7.2 RENDERR!!!!!!!!!!! Any opinions?...
|
1793033349.7645714
|
1793638149.7645714
|
|
46435
|
Meco by @pranav101 | Stardance
|
pranav101
|
1
|
58.37
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-11T06:06:38Z", "hours": 42.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Meco - a memory companion", "repo": "https://github.com/itzpranav101/Meco---Updated/", "demo": "https://itzpranav101.github.io/meco-67-website-final/"}]...
|
[{"post_id": 66019, "ts": "202 [{"post_id": 66019, "ts": "2026-09-11T15:41:35Z", "hours": 11.7181, "text": "Reworking on my complete readme!!! Also trying to integrate a plant app especially for seniors with dementia to imrpove their memory skills by using plants!!! - not added files to github currently in production"}, {"post_id": 50916, "ts": "2026-08-20T11:55:49Z", "hours": 1.0669, "text": "Currently debugging the css 😅"}, {"post_id": 50155, "ts": "2026-08-19T08:11:12Z", "hours": 3.5889, "text": "Currently reworking the css of the caregiver/patient console also adding a few more cognitive graph features for more accurate summarys of the patients. Also working on an app for meco!!"}, {"post_id": 44686, "ts": "2026-08-10T16:42:28Z", "hours": 42.3147, "text": "Working on the user interface!"}]...
|
Title: Meco by @pranav101 | Stardance
Devlogs:
Wo Title: Meco by @pranav101 | Stardance
Devlogs:
Working on the user interface!
Currently reworking the css of the caregiver/patient console also adding a few more cognitive graph features for more accurate summarys of the patients. Also working on an app for meco!!
Currently debugging the css 😅
Reworking on my complete readme!!! Also trying to integrate a plant app especially for seniors with dementia to imrpove their memory skills by using plants!!! - not added files to github currently in production
Ships:
Meco - a memory companion...
|
1792986998.3058019
|
1793073398.3058019
|
|
44340
|
The Jay-Tab by @inspirely4 | Stardance
|
inspirely4
|
0
|
58.32
|
0
|
[]
|
[{"post_id": 70357, "ts": "202 [{"post_id": 70357, "ts": "2026-09-19T01:12:18Z", "hours": 1.9836, "text": "Day #43 of the Jay-Tab: The final day. Today, I celebrate me finishing the Jay-Tab! I finished the entire readme, the updates to the CAD, and the BOM! It is all done, and I uploaded it to GitHub. Thank you to the people who have been seeing this daily! I see that you have been liking the posts! Thank you for the people who have been commenting, liking, and I am excited to see where this project goes!"}, {"post_id": 69958, "ts": "2026-09-18T04:02:08Z", "hours": 0.65, "text": "Day #42 of the Jay-Tab! Today, I finished about 90% of the BOM, and I’m also planning to get the bottom weight CNC’d so it can actually support my project without looking bulky, since a lot of pre-made weights are bulky. Tomorrow, I am going to finish the BOM, and the Jay-Tab’s design story will come to an end! Here’s what the CNC model looks like! See you tomorrow!"}, {"post_id": 69466, "ts": "2026-09-17T03:52:19Z", "hours": 2.0969, "text": "Day #41 of the Jay-Tab! Today, I made everything work for the Jay-Tab. I finished up the Readme! Tomorrow, I am going to update my CAD, and then start the BOM! Once all of this is done, we will be 100% finished the Jay-Tab!"}, {"post_id": 68952, "ts": "2026-09-16T03:16:49Z", "hours": 0.8333, "text": "Day #40 of the Jay-Tab! Today, I started the README! I finished around half of the project, but then GITHUB GLITCHED AND DELETED THE README! I started the README again, and it is going pretty well so far! The image is what I have right now! See you tomorrow!"}, {"post_id": 68427, "ts": "2026-09-15T03:08:21Z", "hours": 1.0847, "text": "Day #39 of the Jay-Tab! We are so close to the end; I SEE IT! Today, I pushed all the files to GitHub and also realized I forgot a few things in the software and the CAD, which I fixed, except that I need to make a small hole in the CAD model. I will do that tomorrow. After this, we are going to make the BOM, ReadMe, and then we are done! Here is a link to the GitHub repo: https://github.com/Jay-Tai/Jay-Tab See you tomorrow!"}, {"post_id": 67840, "ts": "2026-09-14T03:13:24Z", "hours": 0.4225, "text": "Day #38 of the Jay-Tab! Today was a bit of a short day on paper because hackatime glitched out and didn’t fully record 😭 but it’s fine! I have finished all the stuff for the firmware and the CAD! Tomorrow, I will be uploading everything to GitHub and will also be starting the ReadMe! See you tomorrow!"}, {"post_id": 67084, "ts": "2026-09-13T04:15:26Z", "hours": 0.7833, "text": "Day #37 of the Jay-Tab! Today was mainly about cleaning up the PCB! I finished up with all final touches to the PCB. In addition, I started adding the finishing touches to Jay-Tab OS. Tomorrow, I am going to add the finishing touches to the OS, and the CAD, and after that, I will start the readme! See you tomorrow!"}, {"post_id": 66343, "ts": "2026-09-12T03:34:57Z", "hours": 0.7003, "text": "MAJOR PROGRESS MAJOR PROGRESS MAJOR PROGRESS Day #36 of the Jay-Tab! I got this project to finally work!! Today, I cleared all bugs with the Govee API and the code finally works!!! IT IS SO COOL Tomorrow, I am going to make the final changes for the PCB and make some Blender renders of the project!"}, {"post_id": 65745, "ts": "2026-09-11T03:07:20Z", "hours": 0.5975, "text": "Day #35 of the Jay-Tab! Today, I finished the main code for the home control system! Tomorrow, I am going to finish up the bugs and then I will be finished the code! I have some changes to the PCB and CAD, so once those are finished, we will be done, and onto the GitHub! See you tomorrow!"}, {"post_id": 65423, "ts": "2026-09-10T15:32:49Z", "hours": 0.9139, "text": "I LITERALLY FORGOT TO CLICK POST YESTERDAY Day #34 of the Jay-Tab! Today was all about getting the backend code to work for the UI. I made all of the backend code for the govee work. In addition, I made part of the UI code, which I am going to try and finish tomorrow (As in today when I am posting this), and then day after, I am going to work on the bug fixes! See you tomorrow!"}, {"post_id": 64593, "ts": "2026-09-09T03:11:45Z", "hours": 0.985, "text": "Day #33 of the Jay-Tab! Today was amazing! However, I found issues with Homey. I found that it would actually cost me money to use Homey for this project! Therefore, I have pivoted to the Govee API and redesigned the UI so that it is for one Govee light, but I can change the color through there as well! Here is what the new UI looks like"}, {"post_id": 63984, "ts": "2026-09-08T02:31:50Z", "hours": 1.1978, "text": "Day #32 of the Jay-Tab! MAJOR PROGRESS Today, I got the actual home working! I said that I was going to use Home Assistant to make this project work, but i faced many issues with it. Therefore, I left home assistant, and locked into homey! At first it was a pain, as I had to get Govee working and it kept asking for an API. I ended up applying to get an API with Govee, and ended up getting the API! In addition, it was an absolute PAIN to get the switches added as I had no idea what smart switches were in my house. At the end, I got the smart switches working through 3 different apps and got it connected to homey! At the end, everything is connected to homey and working, and the next step is integrating it into my code! See you tomorrow!"}, {"post_id": 63655, "ts": "2026-09-07T16:04:21Z", "hours": 1.4683, "text": "Day #31 of the Jay-Tab! (I forgot to post this yesterday Today was getting my API started after I got permission to connect my Google Home to the lights! I didn’t get the full API started with home assistant, but I am still working on it! :D"}, {"post_id": 62649, "ts": "2026-09-06T03:34:59Z", "hours": 0.3922, "text": "Day #30 of the Jay-Tab! I wish I had more to say today, but I don’t 😞 I wanted to get a majority of the home control software done today, but I realized that the account that controls the lights in my home isn’t through a shared Google account, but instead a Google account that doesn’t belong to me, but to my parents. When I am working on this, both my parents are already fast asleep. Therefore, tomorrow, I am going to get the API set up with them, and I will work on the code surrounding it tomorrow!"}, {"post_id": 61942, "ts": "2026-09-05T03:48:22Z", "hours": 0.9508, "text": "Days 28 and 29 of the Jay-Tab! Apparently, I spent all my time yesterday without recording anything I have finished the calendar screen! However, I am leaving out the other screen that talks about the other details of an event as I want to save that for V2 of the Jay-Tab. In addition, I finished the main idea of the home control screen! Take a look! :D"}, {"post_id": 60641, "ts": "2026-09-03T04:00:17Z", "hours": 1.1014, "text": "Day #27 of the Jay-Tab! Today, I spent like 5 billion years trying to squash a bug that I just noticed in the project regarding the calendar - I will be finishing it tomorrow!"}, {"post_id": 59999, "ts": "2026-09-02T02:52:23Z", "hours": 2.5042, "text": "DAY 25 AND 26 OF THE JAY-TAB!!! I forgot to post yesterday’s devlog So far, I finished everything that surrounds the UI for one day, and all that needs to be done is the next day and previous day functions! I also finished the debugging! See you tomorrow! Take a look at the UI while you are here:"}, {"post_id": 58641, "ts": "2026-08-31T04:05:46Z", "hours": 1.1, "text": "Day #24 of the Jay-Tab! This is one of those slow but still productive days - I finished all the logic that is going to make the calendar screen work, and tomorrow, all I need to do is that I need to work on creating the UI surrounding the calendar with multiple windows, along with debugging! After that, is going to be part 2 of the calendar, which is when you click on an event, it should show all information that is related to that event. See you tomorrow!"}, {"post_id": 57854, "ts": "2026-08-30T05:07:04Z", "hours": 1.2058, "text": "Day #23 of the Jay-Tab! Today was a bit of a slow day. I finished working on the case where there was less than 6 events in a day (Meaning all events can fit on one page), and tomorrow, I am going to work on events that are more than 6 events (That means all events need to fit on multiple pages). I already started working on a bit of the screen where there are more than 6 events, but the bulk will be done tomorrow :D"}, {"post_id": 57012, "ts": "2026-08-29T02:36:42Z", "hours": 1.1356, "text": "Day #22 of the Jay-Tab! Today, I started the UI of the calendar. As the same that I do with every single screen that I make in the Jay-Tab, I always make a version of it in adobe illustrator. The way I want this to work is that there should be a list of all events when you click the calendar, and when you click on an event, it will give you all of the information that is related to the event.. Here’s what the events display is supposed to look like! (Designed in Adobe Illustrator) See you tomorrow!"}, {"post_id": 56377, "ts": "2026-08-28T03:54:09Z", "hours": 1.2933, "text": "Day #21 of the Jay-Tab! Today was a pretty eventful day! The timer is finally finished! I used all the variable stuff and I made the timer actually tick down. Tomorrow, I am going to start the calendar!"}, {"post_id": 55359, "ts": "2026-08-27T04:21:23Z", "hours": 1.6169, "text": "DAY 20 OF THE JAY-TAB!!!!!!!!!!!! Today, I finally got the UI to adjust for the timer, and the backend works with the variables! See you tomorrow! Hopefully, the last day of the timer screen"}, {"post_id": 54917, "ts": "2026-08-26T04:19:12Z", "hours": 1.6953, "text": "Day #19 of the Jay-Tab! Today was about making the backend work for the timer! I made all the timer touchscreen functions work, and also finished all the variables! I nearly forgot to do my minimum hourly daily work! Here’s me doing it at midnight :P"}, {"post_id": 54187, "ts": "2026-08-25T01:59:10Z", "hours": 1.2525, "text": "Day #18 of the Jay-Tab! Today, I made the main UI for the Timer! It looks pretty good, and I also made all the functions that are going to register any touchscreen functions Here is a quick render!"}, {"post_id": 53531, "ts": "2026-08-24T03:33:42Z", "hours": 1.6992, "text": "Day #17 of the Jay-Tab! Today was a really eventful day. Today, I finished the entire home screen (Which looks FREAKING AMAZING), and I also made a prototype on Adobe Illustrator of what the timer screen will look like! The first image is the final home screen, and the second image is the timer prototype!"}, {"post_id": 52801, "ts": "2026-08-23T04:31:59Z", "hours": 1.5319, "text": "Day #16 of the Jay-Tab! Today, I got the Google Calendar API all running, and I faced a bunch of bugs that I have been figuring out. Mainly, the font size was too big, the text went off the edge, and the text should automatically update when the calendar changes. See you tomorrow!"}, {"post_id": 52105, "ts": "2026-08-22T05:45:59Z", "hours": 1.1333, "text": "Day #15 of the Jay-Tab! Today, I got most of the code for the upcoming tasks section of the home page (The last section), and I also got the clock to update after the time changes!"}, {"post_id": 51462, "ts": "2026-08-21T05:52:29Z", "hours": 1.1833, "text": "Realized that I never made a devlog for today! This is day #14 of the Jay-Tab! I finished making the font work, and also configured the clock! Take a look! :D"}, {"post_id": 50751, "ts": "2026-08-20T03:15:54Z", "hours": 1.5192, "text": "Today was a pretty great day for the Jay-Tab! I finished the simulator for the software before I get the hardware, and also finished all the stuff that has to do with the clock. However, there seems to be some issues with the byte arrays that make it not display correctly. The second image is what the home screen looks like and the first image is what the startup screen looks like. See you tomorrow!"}, {"post_id": 50054, "ts": "2026-08-19T02:50:56Z", "hours": 1.4503, "text": "Day #12 of the Jay-Tab! This is actually a combination of yesterday’s work and today’s work. In these two days, I was working on the clock. I spent yesterday working on the logic that will pull the time and format it, and today, I worked on converting the font into a bitmap. Take a look at the font! Tomorrow, I am going to finish bitmap conversion and also finish that part of the home screen. After that, I am going to work on formatting the “upcoming tasks” section of the homepage. See you tomorrow!"}, {"post_id": 48584, "ts": "2026-08-17T01:23:14Z", "hours": 0.5167, "text": "Today was a short day I am at a sleepover right now, but I found an issue where the UI is really pixelated. I have refined the homepage a bit to hide the pixelation… The first image is the original, and the second image is the new one"}, {"post_id": 47806, "ts": "2026-08-16T00:41:14Z", "hours": 1.8578, "text": "Day #10 of the Jay-Tab! Today, I finished coding the startup UI for the E-Ink display. It looks pretty good! After that, I used Adobe Illustrator to make a prototype first iteration of the home screen (look at the first image). Doesn’t really look its best… After that, I made another iteration to see how that looks! Take a look at the second image for that one! This is what I am going to program the UI to look like! See you tomorrow!"}, {"post_id": 47280, "ts": "2026-08-15T03:49:31Z", "hours": 1.1958, "text": "Day #9 of the Jay-Tab! Today, I finished all the work that needs to be done with the backend, and also started the UI! I generated all the byte arrays that need to be put in the startup screen, along with partially programming the UI! Thanks to image2cpp for helping me automate this generation!"}, {"post_id": 46683, "ts": "2026-08-14T03:47:19Z", "hours": 1.2678, "text": "Day #8 of the Jay-Tab! Today was a pretty innovative day! With just an hour of coding, I configured most of the things with the buffer, graphics, and configured most of the display and touchscreen functions! Nothing with the UI, yet, though… COMING SOON THOUGH! Here’s the code so far"}, {"post_id": 46155, "ts": "2026-08-13T05:25:02Z", "hours": 2.9342, "text": "1 WEEK OF THE JAY-TAB!!! I can’t believe it’s just been a week of the project! I am already on the firmware! However, today was a bit pivotal… With my firmware, I have always been trying to make it with LVGL. However, I have always been facing issue after issue with it, which is why I have restarted my firmware.. So far, I have finished all of the code that works with the framebuffer and just imported that in the main.py! I have a somewhat vague idea of what I want the start-up screen to look like. What do we think of this?"}, {"post_id": 45574, "ts": "2026-08-12T04:58:06Z", "hours": 2.3267, "text": "Devlog #6 Today was about debugging I was facing issues with my simulator to see my tab.. I spent around 4 hours with it, but I logged almost none : P See you tomorrow! I managed to somewhat fix it tho"}, {"post_id": 45025, "ts": "2026-08-11T05:41:28Z", "hours": 1.2169, "text": "For some reason, Lapse hasn’t been working for me at all for the past 2 days But, here’s my log! (Plus 3 hours for the other time) I have finished the CAD, and started the firmware of the Jay-Tab! The first image is the CAD, and the second image is the startup screen for the firmware!"}, {"post_id": 43721, "ts": "2026-08-09T04:09:00Z", "hours": 4.7717, "text": "Today was a really eventful day! I finished everything related to the PCB, and finished 95% of my CAD! Tomorrow, I’m going to finish the CAD, and then I am going to be on firmware! YAYYY The first image is what the final PCB looks like from the KiCad PCB Editor, the second image is the 3D view, and the third one is what the shell is going to look like! Quick note, the stem in the back will have a weight (Hollow), and a rubber stem on the bottom."}, {"post_id": 43001, "ts": "2026-08-08T00:54:03Z", "hours": 3.2992, "text": "Today, I started working on the PCB (Aka. THE ENTIRE BACKBONE) for this project! I faced a lot of issues with the HAT for the display and still am. Tomorrow, I am going to finish the issues with the HAT, and start the case tomorrow! Here’s what the pcb looks like so far!"}, {"post_id": 42403, "ts": "2026-08-07T02:57:10Z", "hours": 1.1503, "text": "Today, I couldn’t get much accomplished. Main reason that I realized that I had a lot of issues with my PCB schematic. I have now finished those changes and assigned all footprints, and tomorrow, I am going to design the PCB! Here is the FINAL schematic!"}, {"post_id": 41719, "ts": "2026-08-06T03:20:01Z", "hours": 1.3003, "text": "Today, I started the Jay-Tab! It is the most difficult project that I have worked on, but I am going to give it a shot! I sketched the idea, created a schematic for the display, USB-C, regulator, and rotary encoder. After that, I started assigning footprints, and then also made my first footprint! It’s really basic, but it is meant to just be three pads. I had another hour of work, but I forgot to log it See you tomorrow for more!"}]...
|
Title: The Jay-Tab by @inspirely4 | Stardance
Dev Title: The Jay-Tab by @inspirely4 | Stardance
Devlogs:
Today, I started the Jay-Tab! It is the most difficult project that I have worked on, but I am going to give it a shot! I sketched the idea, created a schematic for the display, USB-C, regulator, and rotary encoder. After that, I started assigning footprints, and then also made my first footprint! It’s really basic, but it is meant to just be three pads. I had another hour of work, but I forgot to log it See you tomorrow for more!
Today, I couldn’t get much accomplished. Main reason that I realized that I had a lot of issues with my PCB schematic. I have now finished those changes and assigned all footprints, and tomorrow, I am going to design the PCB! Here is the FINAL schematic!
Today, I started working on the PCB (Aka. THE ENTIRE BACKBONE) for this project! I faced a lot of issues with the HAT for the display and still am. Tomorrow, I am going to finish the issues with the HAT, and start the case tomorrow! Here’s what the pcb looks like so far!
Today was a really eventful day! I finished everything related to the PCB, and finished 95% of my CAD! Tomorrow, I’m going to finish the CAD, and then I am going to be on firmware! YAYYY The first image is what the final PCB looks like from the KiCad PCB Editor, the second image is the 3D view, and the third one is what the shell is going to look like! Quick note, the stem in the back will have a weight (Hollow), and a rubber stem on the bottom.
For some reason, Lapse hasn’t been working for me at all for the past 2 days But, here’s my log! (Plus 3 hours for the other time) I have finished the CAD, and started the firmware of the Jay-Tab! The first image is the CAD, and the second image is the startup screen for the firmware!
Devlog #6 Today was about debugging I was facing issues with my simulator to see my tab.. I spent around 4 hours with it, but I logged almost none : P See you tomorrow! I managed to somewhat fix it tho
1 WEEK OF THE JAY-TAB!!! I can’t believe it’s just been a week of the project! I am already on the firmware! However, today was a bit pivotal… With my firmware, I have always been trying to make it with LVGL. However, I have always been facing issue after issue with it, which is why I have restarted my firmware.. So far, I have finished all of the code that works with the framebuffer and just imported that in the main.py! I have a somewhat vague idea of what I want the start-up screen to look like. What do we think of this?
Day #8 of the Jay-Tab! Today was a pretty innovative day! With just an hour of coding, I configured most of the things with the buffer, graphics, and configured most of the display and touchscreen functions! Nothing with the UI, yet, though… COMING SOON THOUGH! Here’s the code so far
Day #9 of the Jay-Tab! Today, I finished all the work that needs to be done with the backend, and also started the UI! I generated all the byte arrays that need to be put in the startup screen, along with partially programming the UI! Thanks to image2cpp for helping me automate this generation!
Day #10 of the Jay-Tab! Today, I finished coding the startup UI for the E-Ink display. It looks pretty good! After that, I used Adobe Illustrator to make a prototype first iteration of the home screen (look at the first image). Doesn’t really look its best… After that, I made another iteration to see how that looks! Take a look at the second image for that one! This is what I am going to program the UI to look like! See you tomorrow!
Today was a short day I am at a sleepover right now, but I found an issue where the UI is really pixelated. I have refined the homepage a bit to hide the pixelation… The first image is the original, and the second image is the new one
Day #12 of the Jay-Tab! This is actually a combination of yesterday’s work and today’s work. In these two days, I was working on the clock. I spent yesterday working on the logic that will pull the time and format it, and today, I worked on converting the font into a bitmap. Take a look at the font! Tomorrow, I am going to finish bitmap conversion and also finish that part of the home screen. After that, I am going to work on formatting the “upcoming tasks” section of the homepage. See you tomorrow!
Today was a pretty great day for the Jay-Tab! I finished the simulator for the software before I get the hardware, and also finished all the stuff that has to do with the clock. However, there seems to be some issues with the byte arrays that make it not display correctly. The second image is what the home screen looks like and the first image is what the startup screen looks like. See you tomorrow!
Realized that I never made a devlog for today! This is day #14 of the Jay-Tab! I finished making the font work, and also configured the clock! Take a look! :D
Day #15 of the Jay-Tab! Today, I got most of the code for the upcoming tasks section of the home page (The last section), and I also got the clock to update after the time changes!
Day #16 of the Jay-Tab! Today, I got the Google Calendar API all running, and I faced a bunch of bugs that I have been figuring out. Mainly, the font size was too big, the text went off the edge, and the text should automatically update when the calendar changes. See you tomorrow!
Day #17 of the Jay-Tab! Today was a really eventful day. Today, I finished the entire home screen (Which looks FREAKING AMAZING), and I also made a prototype on Adobe Illustrator of what the timer screen will look like! The first image is the final home screen, and the second image is the timer prototype!
Day #18 of the Jay-Tab! Today, I made the main UI for the Timer! It looks pretty good, and I also made all the functions that are going to register any touchscreen functions Here is a quick render!
Day #19 of the Jay-Tab! Today was about making the backend work for the timer! I made all the timer touchscreen functions work, and also finished all the variables! I nearly forgot to do my minimum hourly daily work! Here’s me doing it at midnight :P
DAY 20 OF THE JAY-TAB!!!!!!!!!!!! Today, I finally got the UI to adjust for the timer, and the backend works with the variables! See you tomorrow! Hopefully, the last day of the timer screen
Day #21 of the Jay-Tab! Today was a pretty eventful day! The timer is finally finished! I used all the variable stuff and I made the timer actually tick down. Tomorrow, I am going to start the calendar!
Day #22 of the Jay-Tab! Today, I started the UI of the calendar. As the same that I do with every single screen that I make in the Jay-Tab, I always make a version of it in adobe illustrator. The way I want this to work is that there should be a list of all events when you click the calendar, and when you click on an event, it will give you all of the information that is related to the event.. Here’s what the events display is supposed to look like! (Designed in Adobe Illustrator) See you tomorrow!
Day #23 of the Jay-Tab! Today was a bit of a slow day. I finished working on the case where there was less than 6 events in a day (Meaning all events can fit on one page), and tomorrow, I am going to work on events that are more than 6 events (That means all events need to fit on multiple pages). I already started working on a bit of the screen where there are more than 6 events, but the bulk will be done tomorrow :D
Day #24 of the Jay-Tab! This is one of those slow but still productive days - I finished all the logic that is going to make the calendar screen work, and tomorrow, all I need to do is that I need to work on creating the UI surrounding the calendar with multiple windows, along with debugging! After that, is going to be part 2 of the calendar, which is when you click on an event, it should show all information that is related to that event. See you tomorrow!
DAY 25 AND 26 OF THE JAY-TAB!!! I forgot to post yesterday’s devlog So far, I finished everything that surrounds the UI for one day, and all that needs to be done is the next day and previous day functions! I also finished the debugging! See you tomorrow! Take a look at the UI while you are here:
Day #27 of the Jay-Tab! Today, I spent like 5 billion years trying to squash a bug that I just noticed in the project regarding the calendar - I will be finishing it tomorrow!
Days 28 and 29 of the Jay-Tab! Apparently, I spent all my time yesterday without recording anything I have finished the calendar screen! However, I am leaving out the other screen that talks about the other details of an event as I want to save that for V2 of the Jay-Tab. In addition, I finished the main idea of the home control screen! Take a look! :D
Day #30 of the Jay-Tab! I wish I had more to say today, but I don’t 😞 I wanted to get a majority of the home control software done today, but I realized that the account that controls the lights in my home isn’t through a shared Google account, but instead a Google account that doesn’t belong to me, but to my parents. When I am working on this, both my parents are already fast asleep. Therefore, tomorrow, I am going to get the API set up with them, and I will work on the code surrounding it tomorrow!
Day #31 of the Jay-Tab! (I forgot to post this yesterday Today was getting my API started after I got permission to connect my Google Home to the lights! I didn’t get the full API started with home assistant, but I am still working on it! :D
Day #32 of the Jay-Tab! MAJOR PROGRESS Today, I got the actual home working! I said that I was going to use Home Assistant to make this project work, but i faced many issues with it. Therefore, I left home assistant, and locked into homey! At first it was a pain, as I had to get Govee working and it kept asking for an API. I ended up applying to get an API with Govee, and ended up getting the API! In addition, it was an absolute PAIN to get the switches added as I had no idea what smart switches were in my house. At the end, I got the smart switches working through 3 different apps and got it connected to homey! At the end, everything is connected to homey and working, and the next step is integrating it into my code! See you tomorrow!
Day #33 of the Jay-Tab! Today was amazing! However, I found issues with Homey. I found that it would actually cost me money to use Homey for this project! Therefore, I have pivoted to the Govee API and redesigned the UI so that it is for one Govee light, but I can change the color through there as well! Here is what the new UI looks like
I LITERALLY FORGOT TO CLICK POST YESTERDAY Day #34 of the Jay-Tab! Today was all about getting the backend code to work for the UI. I made all of the backend code for the govee work. In addition, I made part of the UI code, which I am going to try and finish tomorrow (As in today when I am posting this), and then day after, I am going to work on the bug fixes! See you tomorrow!
Day #35 of the Jay-Tab! Today, I finished the main code for the home control system! Tomorrow, I am going to finish up the bugs and then I will be finished the code! I have some changes to the PCB and CAD, so once those are finished, we will be done, and onto the GitHub! See you tomorrow!
MAJOR PROGRESS MAJOR PROGRESS MAJOR PROGRESS Day #36 of the Jay-Tab! I got this project to finally work!! Today, I cleared all bugs with the Govee API and the code finally works!!! IT IS SO COOL Tomorrow, I am going to make the final changes for the PCB and make some Blender renders of the project!
Day #37 of the Jay-Tab! Today was mainly about cleaning up the PCB! I finished up with all final touches to the PCB. In addition, I started adding the finishing touches to Jay-Tab OS. Tomorrow, I am going to add the finishing touches to the OS, and the CAD, and after that, I will start the readme! See you tomorrow!
Day #38 of the Jay-Tab! Today was a bit of a short day on paper because hackatime glitched out and didn’t fully record 😭 but it’s fine! I have finished all the stuff for the firmware and the CAD! Tomorrow, I will be uploading everything to GitHub and will also be starting the ReadMe! See you tomorrow!
Day #39 of the Jay-Tab! We are so close to the end; I SEE IT! Today, I pushed all the files to GitHub and also realized I forgot a few things in the software and the CAD, which I fixed, except that I need to make a small hole in the CAD model. I will do that tomorrow. After this, we are going to make the BOM, ReadMe, and then we are done! Here is a link to the GitHub repo: https://github.com/Jay-Tai/Jay-Tab See you tomorrow!
Day #40 of the Jay-Tab! Today, I started the README! I finished around half of the project, but then GITHUB GLITCHED AND DELETED THE README! I started the README again, and it is going pretty well so far! The image is what I have right now! See you tomorrow!
Day #41 of the Jay-Tab! Today, I made everything work for the Jay-Tab. I finished up the Readme! Tomorrow, I am going to update my CAD, and then start the BOM! Once all of this is done, we will be 100% finished the Jay-Tab!
Day #42 of the Jay-Tab! Today, I finished about 90% of the BOM, and I’m also planning to get the bottom weight CNC’d so it can actually support my project without looking bulky, since a lot of pre-made weights are bulky. Tomorrow, I am going to finish the BOM, and the Jay-Tab’s design story will come to an end! Here’s what the CNC model looks like! See you tomorrow!
Day #43 of the Jay-Tab: The final day. Today, I celebrate me finishing the Jay-Tab! I finished the entire readme, the updates to the CAD, and the BOM! It is all done, and I uploaded it to GitHub. Thank you to the people who have been seeing this daily! I see that you have been liking the posts! Thank you for the people who have been commenting, liking, and I am excited to see where this project goes!...
|
1792583289.8911278
|
1793188089.8911278
|
|
32578
|
Pen Plotter by @mgiv | Stardance
|
mgiv
|
1
|
58.26
|
257
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T21:10:40Z", "hours": 54.0, "multiplier": 5.0, "payout": 257, "blessing": "neutral", "text": "Pen plotter - Ship 1 Introduction This is a pen plotter I’ve been making over the past few weeks. It uses NEMA 17 stepper motors, timing belts, 3d printed parts and an esp32. I’ve got it to draw images of my cat, Onyx, as well as some fractals and space filling curves. I created a simple G-code language called P-Code that runs the machine. Most of the processing is split between the pc, where it processes the images and turns them into the P-Code, and the ESP32, which draws lines from the P-Code. I also added some other features, such as end switches for toolhead homing, which was very difficult to do before, and also an emergency stop button for when things went wrong. Design At first, I created a very simple x-axis only prototype, and I thought I learnt enough from that to attempt a corexy design. Quite quickly though, I realised that corexy was a mistake. See instead of using a separate belt system for the X and Y axis, this uses 2 belt systems on both the X and Y axis. This is good because the motors are stationary, and a motor doesn’t have to ride on the Y axis, but it makes things 10x more complicated. After a while I gave up and used a gantry system instead. I also used timing belts instead of the string I used on the first prototype, which wasn’t nearly precise enough. I made quite a few mistakes, which resulted in me having to reprint a part. The area of the plotter is about 15000 x 16000 steps, which translates into around 190x200mm, which I’m very pleased with. There are still a lot of problems with the design, such as: Some screwholes are impossible to reach It’s a pain to tension the belt The pen up/down mechanism causes a lot of wiggle It’s very hard to get the belt around the motor on the x axis The motor almost doesn’t fit in the hole on the x axis It’s impossible to make the rods on the Y axis parallel without building a full frame, which is slightly outside of the budget for this project, so I had to leave one corner unscrewed to allow for some play The double motor system is great but it makes moving the carriage manually very difficult The 2 motors can get out of sync meaning one side is slightly further along the Y axis from the other. The cable sometimes gets caught, skipping steps at best, or at worst breaking something There are a lot of loose connections on the breadboard, I’ll get a custom pcb at some point As you can see, I ran into a huge amount of issues. But that didn’t stop me, as you can see. Software I used Micropython on ESP32 for this, which was a good choice because it would have taken me 10x longer if I used ESP-IDF for it, which is the official C SDK. At first, it could only draw horizontal, vertical and diagonal lines, not lines at an angle, because both motors travelled at the same speed. Because of this I implemented Bresenham’s line algorithm, and also learnt how to use the @micropython .native decorator which makes code run much faster. The 5000 steps per second speed I was aiming for wouldn’t be realistic without native. Other than the demo of the hilbert curves, there’s a number of demos linked in the readme of the Github repo. Next, I hope to implement SVG reading, so I can draw many more things, as I won’t have to write custom code to draw something new.", "repo": "https://github.com/mgiv/pen-plotter", "demo": ""}]...
|
[{"post_id": 31809, "ts": "202 [{"post_id": 31809, "ts": "2026-07-20T14:22:40Z", "hours": 4.2589, "text": "Pen Plotter - Devlog 8 I’ve been working on drawing SVGs. The trick here is to combine everything into one single path in inkscape and also approximate curves and ellipses etc to lines. I’ve also fixed a lot of strange bugs, one of which was caused by a timer overflow, which happens after 9 minutes in micropython. This caused a crash, but now it’s fixed. I also updated the acceleration routine, and now it only activates when the pen is up. I’ll start working on version 2 soon which will fix a lot of the precision issues I’ve had with this version, and also be far more capable."}, {"post_id": 30357, "ts": "2026-07-17T20:43:25Z", "hours": 5.4864, "text": "Pen Plotter - Devlog 7. I’ve been working on drawing sierpinski triangles and hilbert curves as well as drawing images with canny edge detection."}, {"post_id": 29232, "ts": "2026-07-16T00:36:24Z", "hours": 10.2814, "text": "Pen Plotter - Devlog 6. I’ve been working more on the gantry system, and I got my first prototype up and running. I used steel rods, NEMA 17 stepper motors, and timing belts for this. Other than that it’s almost all 3d printed. I designed a couple of parts badly, mainly forgetting to put a hole into one of the motor parts, so that the shaft wouldn’t fit. Other than that, it worked surprisingly well. The first few images I drew were of my cat, Onyx, and I used the system I described in a previous devlog where it converts the image into lines. I’ll also need to try canny edge detection, as that would probably work quite well, but I’ll need to work more on the plotter’s software because it can only draw horizontal, vertical, and diagonal lines at the moment. I’ll also work on converting svgs, and also text possibly"}, {"post_id": 28437, "ts": "2026-07-14T17:54:08Z", "hours": 8.4247, "text": "Pen Plotter - Devlog 5 I’ve been working on a gantry system. Not sure if I mentioned it on the last devlog, but corexy is very very painful to design. I scrapped that after a while and started work on a much more basic gantry design. As I’m writing this, the parts for that system are printing, so I’ll update this once I have a basic prototype up and running. I’ve also been working on canny edge detection for the images, which finds the edges in an image and turns them into contours that I can draw on the machine. I used python opencv and recycled a lot of code from the previous line-based approach. I’ll try out both using lines and contours for drawing images, and I’ll see which works better. I suspect that the lines will look much better, but I’m certain they’ll take ages to draw. Both these methods still output my custom p-code language which will be used on the pen plotter Next up, I’ll assemble the basic prototype and try to get it working. While I’m waiting for the parts to print, which will take about another 3 hours, I’ll look into possibly using sine waves to draw things, and changing the amplitude, and also a method using zig zag lines which have variable spacing Oh, and I also worked on a bit of hardware, because the new system uses an extra stepper motor I had to wire up 2 motors in series which is way easier than using another driver and more precise also"}, {"post_id": 27765, "ts": "2026-07-13T16:39:19Z", "hours": 5.2189, "text": "Pen plotter - devlog 4 I’ve been taking a break from cad, and instead working on converting images to toolpaths for the future plotter. The first method I tried was using lines. For each pixel there is a block 10x10 steps wide, and if the image is very dark in that region, it’ll draw 10 lines in there, if it’s brighter it might only draw 5. I also developed my own g-code like language called p-code, where there are only a few commands: MOVE X Y, PEN UP/DOWN, HOME, and SPEED (in steps per second). I turned the images into a series of p-code commands. Since the pen plotter isn’t finished yet (and to be honest won’t be for a while), I made a simple interpreter and displayed the images using a matplotlib LineCollection. In the future I’ll be exploring other methods of making images display, such as: Dots of variable spacing Sine waves of variable amplitude Zig Zag lines of variable density (but constant height) Converting SVG images into paths Finding outlines in images and drawing them, possibly using something like canny edge detection"}, {"post_id": 27265, "ts": "2026-07-12T17:55:03Z", "hours": 12.0139, "text": "Pen plotter - devlog 3 CoreXY system For some strange reason, I decided to scrap the old version with the single x axis, and the string drive. Instead, I’m going for a CoreXY system with fancy timing belts. After 10 hours of wrangling with Fusion and trying to get a functional design, I’m starting to slightly regret it, and I almost wish that I just went with a generic gantry system or even a bed slinger I posted this devlog because I’m up to the 10 hour limit, and I need to post or else my time won’t count. By chance it happens that I’m just about finished the first prototype of the CoreXY system, and just need to wait a couple days until the parts arrive. It uses timing belts and idlers, NEMA 17 stepper motors, and a single SG90 servo motor, plus a bunch of parts I’ll 3D print myself. What next? I’ve had so many issues with this project: The CAD is a complete mess and I’ll almost certainly have to remake it using a better method I still don’t know if the CoreXY will even work, I’ll need to wait and see I don’t know if the screws are strong enough to hold it onto the baseplate There’s probably a number of parts with clearance issues and the carriage probably won’t run properly So next I’ll work on making the first prototype and after that, if it works I’ll take a break from CAD to work on some software for it, and get it to draw things. If it doesn’t work… I guess back to CAD."}, {"post_id": 25597, "ts": "2026-07-09T23:18:13Z", "hours": 8.7156, "text": "Devlog 2 - X axis done. Taking lessons from the last devlog, I completely reworked the pulley system at the end. I also fixed the print settings for the spools, but had other issues. But in the end I managed to achieve an amazing result, which draws dashed lines. It uses a servo motor to move the pen up and down and a stepper using what is sort of a capstan drive, however heavily modified. For some reason I decided after this to completely redesign the whole thing into a corexy plotter instead, I think it was a terrible decision but let’s see how we do in 10 hours… One problem I had is that the pen holder is very very wobbly, either I’ll just tighten the tolerances or maybe change it so that the servo is attached directly. Another is the servo mount - as you can see I had to break some of it off to mount the servo as I didn’t account for the wires."}, {"post_id": 24925, "ts": "2026-07-08T20:03:34Z", "hours": 3.6436, "text": "Pen plotter - first devlog. I had issues with lookout that meant that I lost about 3 hours of recorded time, but now I have very simple prototype. I did a little programming on the esp32, but this was mostly just writing a test program and setting up the environment. There are a number of issues with the current prototype: one of the holes on the carriage is smaller than the other, the stepper didn’t fit in the holder, the thing attaching the thread to the carriage snapped the thread, the spool at the end was too loose, and the spools had terrible print quality. There are an number of other issues that I’ll just ignore for now, and fix later."}]...
|
Title: Pen Plotter by @mgiv | Stardance
Devlogs:
Title: Pen Plotter by @mgiv | Stardance
Devlogs:
Pen plotter - first devlog. I had issues with lookout that meant that I lost about 3 hours of recorded time, but now I have very simple prototype. I did a little programming on the esp32, but this was mostly just writing a test program and setting up the environment. There are a number of issues with the current prototype: one of the holes on the carriage is smaller than the other, the stepper didn’t fit in the holder, the thing attaching the thread to the carriage snapped the thread, the spool at the end was too loose, and the spools had terrible print quality. There are an number of other issues that I’ll just ignore for now, and fix later.
Devlog 2 - X axis done. Taking lessons from the last devlog, I completely reworked the pulley system at the end. I also fixed the print settings for the spools, but had other issues. But in the end I managed to achieve an amazing result, which draws dashed lines. It uses a servo motor to move the pen up and down and a stepper using what is sort of a capstan drive, however heavily modified. For some reason I decided after this to completely redesign the whole thing into a corexy plotter instead, I think it was a terrible decision but let’s see how we do in 10 hours… One problem I had is that the pen holder is very very wobbly, either I’ll just tighten the tolerances or maybe change it so that the servo is attached directly. Another is the servo mount - as you can see I had to break some of it off to mount the servo as I didn’t account for the wires.
Pen plotter - devlog 3 CoreXY system For some strange reason, I decided to scrap the old version with the single x axis, and the string drive. Instead, I’m going for a CoreXY system with fancy timing belts. After 10 hours of wrangling with Fusion and trying to get a functional design, I’m starting to slightly regret it, and I almost wish that I just went with a generic gantry system or even a bed slinger I posted this devlog because I’m up to the 10 hour limit, and I need to post or else my time won’t count. By chance it happens that I’m just about finished the first prototype of the CoreXY system, and just need to wait a couple days until the parts arrive. It uses timing belts and idlers, NEMA 17 stepper motors, and a single SG90 servo motor, plus a bunch of parts I’ll 3D print myself. What next? I’ve had so many issues with this project: The CAD is a complete mess and I’ll almost certainly have to remake it using a better method I still don’t know if the CoreXY will even work, I’ll need to wait and see I don’t know if the screws are strong enough to hold it onto the baseplate There’s probably a number of parts with clearance issues and the carriage probably won’t run properly So next I’ll work on making the first prototype and after that, if it works I’ll take a break from CAD to work on some software for it, and get it to draw things. If it doesn’t work… I guess back to CAD.
Pen plotter - devlog 4 I’ve been taking a break from cad, and instead working on converting images to toolpaths for the future plotter. The first method I tried was using lines. For each pixel there is a block 10x10 steps wide, and if the image is very dark in that region, it’ll draw 10 lines in there, if it’s brighter it might only draw 5. I also developed my own g-code like language called p-code, where there are only a few commands: MOVE X Y, PEN UP/DOWN, HOME, and SPEED (in steps per second). I turned the images into a series of p-code commands. Since the pen plotter isn’t finished yet (and to be honest won’t be for a while), I made a simple interpreter and displayed the images using a matplotlib LineCollection. In the future I’ll be exploring other methods of making images display, such as: Dots of variable spacing Sine waves of variable amplitude Zig Zag lines of variable density (but constant height) Converting SVG images into paths Finding outlines in images and drawing them, possibly using something like canny edge detection
Pen Plotter - Devlog 5 I’ve been working on a gantry system. Not sure if I mentioned it on the last devlog, but corexy is very very painful to design. I scrapped that after a while and started work on a much more basic gantry design. As I’m writing this, the parts for that system are printing, so I’ll update this once I have a basic prototype up and running. I’ve also been working on canny edge detection for the images, which finds the edges in an image and turns them into contours that I can draw on the machine. I used python opencv and recycled a lot of code from the previous line-based approach. I’ll try out both using lines and contours for drawing images, and I’ll see which works better. I suspect that the lines will look much better, but I’m certain they’ll take ages to draw. Both these methods still output my custom p-code language which will be used on the pen plotter Next up, I’ll assemble the basic prototype and try to get it working. While I’m waiting for the parts to print, which will take about another 3 hours, I’ll look into possibly using sine waves to draw things, and changing the amplitude, and also a method using zig zag lines which have variable spacing Oh, and I also worked on a bit of hardware, because the new system uses an extra stepper motor I had to wire up 2 motors in series which is way easier than using another driver and more precise also
Pen Plotter - Devlog 6. I’ve been working more on the gantry system, and I got my first prototype up and running. I used steel rods, NEMA 17 stepper motors, and timing belts for this. Other than that it’s almost all 3d printed. I designed a couple of parts badly, mainly forgetting to put a hole into one of the motor parts, so that the shaft wouldn’t fit. Other than that, it worked surprisingly well. The first few images I drew were of my cat, Onyx, and I used the system I described in a previous devlog where it converts the image into lines. I’ll also need to try canny edge detection, as that would probably work quite well, but I’ll need to work more on the plotter’s software because it can only draw horizontal, vertical, and diagonal lines at the moment. I’ll also work on converting svgs, and also text possibly
Pen Plotter - Devlog 7. I’ve been working on drawing sierpinski triangles and hilbert curves as well as drawing images with canny edge detection.
Pen Plotter - Devlog 8 I’ve been working on drawing SVGs. The trick here is to combine everything into one single path in inkscape and also approximate curves and ellipses etc to lines. I’ve also fixed a lot of strange bugs, one of which was caused by a timer overflow, which happens after 9 minutes in micropython. This caused a crash, but now it’s fixed. I also updated the acceleration routine, and now it only activates when the pen is up. I’ll start working on version 2 soon which will fix a lot of the precision issues I’ve had with this version, and also be far more capable.
Ships:
Pen plotter - Ship 1 Introduction This is a pen plotter I’ve been making over the past few weeks. It uses NEMA 17 stepper motors, timing belts, 3d printed parts and an esp32. I’ve got it to draw images of my cat, Onyx, as well as some fractals and space filling curves. I created a simple G-code language called P-Code that runs the machine. Most of the processing is split between the pc, where it processes the images and turns them into the P-Code, and the ESP32, which draws lines from the P-Code. I also added some other features, such as end switches for toolhead homing, which was very difficult to do before, and also an emergency stop button for when things went wrong. Design At first, I created a very simple x-axis only prototype, and I thought I learnt enough from that to attempt a corexy design. Quite quickly though, I realised that corexy was a mistake. See instead of using a separate belt system for the X and Y axis, this uses 2 belt systems on both the X and Y axis. This is good because the motors are stationary, and a motor doesn’t have to ride on the Y axis, but it makes things 10x more complicated. After a while I gave up and used a gantry system instead. I also used timing belts instead of the string I used on the first prototype, which wasn’t nearly precise enough. I made quite a few mistakes, which resulted in me having to reprint a part. The area of the plotter is about 15000 x 16000 steps, which translates into around 190x200mm, which I’m very pleased with. There are still a lot of problems with the design, such as: Some screwholes are impossible to reach It’s a pain to tension the belt The pen up/down mechanism causes a lot of wiggle It’s very hard to get the belt around the motor on the x axis The motor almost doesn’t fit in the hole on the x axis It’s impossible to make the rods on the Y axis parallel without building a full frame, which is slightly outside of the budget for this project, so I had to leave one corner unscrewed to allow for some play The double motor system is great but it makes moving the carriage manually very difficult The 2 motors can get out of sync meaning one side is slightly further along the Y axis from the other. The cable sometimes gets caught, skipping steps at best, or at worst breaking something There are a lot of loose connections on the breadboard, I’ll get a custom pcb at some point As you can see, I ran into a huge amount of issues. But that didn’t stop me, as you can see. Software I used Micropython on ESP32 for this, which was a good choice because it would have taken me 10x longer if I used ESP-IDF for it, which is the official C SDK. At first, it could only draw horizontal, vertical and diagonal lines, not lines at an angle, because both motors travelled at the same speed. Because of this I implemented Bresenham’s line algorithm, and also learnt how to use the @micropython .native decorator which makes code run much faster. The 5000 steps per second speed I was aiming for wouldn’t be realistic without native. Other than the demo of the hilbert curves, there’s a number of demos linked in the readme of the Github repo. Next, I hope to implement SVG reading, so I can draw many more things, as I won’t have to write custom code to draw something new....
|
1792986872.5670252
|
1793073272.5670252
|
|
1911
|
Ranked Bot by @Polokalap | Stardance
|
Polokalap
|
1
|
58.21
|
391
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-11T21:42:13Z", "hours": 51.0, "multiplier": 8.79, "payout": 391, "blessing": "neutral", "text": "This is a Discord bot for a Discord-based Minecraft pvp tierlist. Basically there are testers who are good players, and they can tier test people in queues. This bot manages those tests and some other stuff like moderation.", "repo": "https://github.com/Polokalap/Ranked_Bot", "demo": "https://dc.ranked.hu"}]...
|
[{"post_id": 33736, "ts": "202 [{"post_id": 33736, "ts": "2026-07-23T21:48:41Z", "hours": 1.8114, "text": "Fixed admin-profile command, added banned rank and fixed some minor issues"}, {"post_id": 32081, "ts": "2026-07-21T00:08:57Z", "hours": 5.3975, "text": "I did some bug fixes and stuff, I wish I didn’t have to count 5 hours. I just need to post to resubmit, so I guess I made the readme actually useable and also fixed some minor issues."}, {"post_id": 9258, "ts": "2026-06-15T15:25:32Z", "hours": 5.2731, "text": "Added /admin-profile and retired tiers for normal /profile command (I also fixed some smaller stuff, but the bot is pretty much done at this point!)"}, {"post_id": 8416, "ts": "2026-06-13T23:58:29Z", "hours": 2.3478, "text": "Added /spin command"}, {"post_id": 8184, "ts": "2026-06-13T17:10:26Z", "hours": 3.1311, "text": "HT Tickets added woohoo"}, {"post_id": 7558, "ts": "2026-06-12T17:12:44Z", "hours": 2.8197, "text": "Did very little work today, I just cannot concentrate. Added a high tier ticket system ui, will make the backend later today or tomorrow."}, {"post_id": 7020, "ts": "2026-06-11T19:34:30Z", "hours": 16.2056, "text": "Added a queue system that I’ll make a video on when the bot releases. Yes 3 lines for 16h"}, {"post_id": 4553, "ts": "2026-06-07T21:59:21Z", "hours": 3.6322, "text": "Added queue ping selector :O Yes this took this many hours, because I had to create bugfixes, literally remake the db, and update the db creds. in the bot, the api."}, {"post_id": 3087, "ts": "2026-06-05T23:59:37Z", "hours": 0.5494, "text": "Added reaction emojis"}, {"post_id": 2920, "ts": "2026-06-05T20:30:29Z", "hours": 2.275, "text": "Added the ability to look up profiles by /profile minecraft_name:Polokalap Also started working on tier testing and swapped displaying tiers from text to emojis."}, {"post_id": 2441, "ts": "2026-06-04T22:48:11Z", "hours": 0.7422, "text": "Added welcome message HELLO"}, {"post_id": 2422, "ts": "2026-06-04T21:54:24Z", "hours": 2.4406, "text": "Added /profile command"}, {"post_id": 1747, "ts": "2026-06-03T22:42:48Z", "hours": 1.2375, "text": "Created ticket panel!"}, {"post_id": 1667, "ts": "2026-06-03T20:12:12Z", "hours": 0.79, "text": "I’m pretty sure I added archiving, I don’t really know. Also, I swapped out .env to data.json for channel ids"}, {"post_id": 1545, "ts": "2026-06-03T16:58:26Z", "hours": 1.9872, "text": "Now you can create and close tickets!! It also sends a cute lil’ embed that you can edit in json :D"}, {"post_id": 1019, "ts": "2026-06-02T20:14:40Z", "hours": 0.855, "text": "Hello :3 I made the bot time out the user if they spammed blocked content!"}, {"post_id": 947, "ts": "2026-06-02T18:28:30Z", "hours": 2.1811, "text": "Dear diary, Today, I added listeners when a message gets updated, so people can’t bypass the filter system by sending a message then editing it to a url, or something blocked. I also added another detection method that works the following way: Message is: “ https://youtube.com meow uwu :3 also look at this 18+ video https://blocked.url ” The old system would’ve allowed this, because it’s remove any white spaces, so the message becomes: “ https://youtube.commeowuwu:3alsolookatthis18+video https://blocked.url ” Then, it’d check if it contains a blocked sequence of characters, which is “://” in that case. Then, it’d check if it contains any of the “good” domains, and if it does, it’d allow the user to send the message. That was a bad system, and I rushed it. The new system does this: Message gets chunked: [“https://youtube.com”, “meow”, “uwu”, “:3”, “also”, “look”, “at”, “this”, “18+”, “video”, “https://blocked.url”] And it iterates trough every field. So now, if a url is present in a chunk, it’d only check that url. Also I added new translation keys."}, {"post_id": 461, "ts": "2026-06-01T22:14:14Z", "hours": 0.7564, "text": "I added a system that sends the moderators a report about a flag in their own channel. I also added flags for encouraging self-harm."}, {"post_id": 444, "ts": "2026-06-01T21:17:11Z", "hours": 3.4722, "text": "Added a language and a moderation system. You have a filter.json in src/resources and you can set up rules in it without ever touching code. Here’s the syntax: { “flags”: [ { “name”: “Gyűlölkődés”, “description”: “A gyűlölködő meggnyílvánulások nem megengedettek a szerveren!”, “punishment”: “ONE_HOUR”, “flags”: [ ], “ignore”: [ ], “always”: [ “nigger”, “nigga”, “cigány”, “cigris”, “cigo”, “nigris”, “nigg”, “buzi” ] } ] } When someone types one of the words out form “always”, it’ll punish them no matter what. If they send something that’s in “flags”, it’ll check if it also contains something from “ignore”. This is a bad system, but it works fine for now. Also, it punishes the user from the “punishment” field. You can set the following parameters: NONE, FIVE_MIN, ONE_HOUR, ONE_DAY, THREE_DAYS, SEVEN_DAYS, KICK, BAN. As you can see from the linked image, it lets people bypass the moderation system with one of the following permissions: MANAGE_CHANNEL, MESSAGE_MANAGE. I also added a language system, so what value you set in .env for “LANGUAGE”, it’ll use that +”.json” for every message. That’ll be useful when translating."}]...
|
Title: Ranked Bot by @Polokalap | Stardance
Devlo Title: Ranked Bot by @Polokalap | Stardance
Devlogs:
Added a language and a moderation system. You have a filter.json in src/resources and you can set up rules in it without ever touching code. Here’s the syntax: { “flags”: [ { “name”: “Gyűlölkődés”, “description”: “A gyűlölködő meggnyílvánulások nem megengedettek a szerveren!”, “punishment”: “ONE_HOUR”, “flags”: [ ], “ignore”: [ ], “always”: [ “nigger”, “nigga”, “cigány”, “cigris”, “cigo”, “nigris”, “nigg”, “buzi” ] } ] } When someone types one of the words out form “always”, it’ll punish them no matter what. If they send something that’s in “flags”, it’ll check if it also contains something from “ignore”. This is a bad system, but it works fine for now. Also, it punishes the user from the “punishment” field. You can set the following parameters: NONE, FIVE_MIN, ONE_HOUR, ONE_DAY, THREE_DAYS, SEVEN_DAYS, KICK, BAN. As you can see from the linked image, it lets people bypass the moderation system with one of the following permissions: MANAGE_CHANNEL, MESSAGE_MANAGE. I also added a language system, so what value you set in .env for “LANGUAGE”, it’ll use that +”.json” for every message. That’ll be useful when translating.
I added a system that sends the moderators a report about a flag in their own channel. I also added flags for encouraging self-harm.
Dear diary, Today, I added listeners when a message gets updated, so people can’t bypass the filter system by sending a message then editing it to a url, or something blocked. I also added another detection method that works the following way: Message is: “ https://youtube.com meow uwu :3 also look at this 18+ video https://blocked.url ” The old system would’ve allowed this, because it’s remove any white spaces, so the message becomes: “ https://youtube.commeowuwu:3alsolookatthis18+video https://blocked.url ” Then, it’d check if it contains a blocked sequence of characters, which is “://” in that case. Then, it’d check if it contains any of the “good” domains, and if it does, it’d allow the user to send the message. That was a bad system, and I rushed it. The new system does this: Message gets chunked: [“https://youtube.com”, “meow”, “uwu”, “:3”, “also”, “look”, “at”, “this”, “18+”, “video”, “https://blocked.url”] And it iterates trough every field. So now, if a url is present in a chunk, it’d only check that url. Also I added new translation keys.
Hello :3 I made the bot time out the user if they spammed blocked content!
Now you can create and close tickets!! It also sends a cute lil’ embed that you can edit in json :D
I’m pretty sure I added archiving, I don’t really know. Also, I swapped out .env to data.json for channel ids
Created ticket panel!
Added /profile command
Added welcome message HELLO
Added the ability to look up profiles by /profile minecraft_name:Polokalap Also started working on tier testing and swapped displaying tiers from text to emojis.
Added reaction emojis
Added queue ping selector :O Yes this took this many hours, because I had to create bugfixes, literally remake the db, and update the db creds. in the bot, the api.
Added a queue system that I’ll make a video on when the bot releases. Yes 3 lines for 16h
Did very little work today, I just cannot concentrate. Added a high tier ticket system ui, will make the backend later today or tomorrow.
HT Tickets added woohoo
Added /spin command
Added /admin-profile and retired tiers for normal /profile command (I also fixed some smaller stuff, but the bot is pretty much done at this point!)
I did some bug fixes and stuff, I wish I didn’t have to count 5 hours. I just need to post to resubmit, so I guess I made the readme actually useable and also fixed some minor issues.
Fixed admin-profile command, added banned rank and fixed some minor issues
Ships:
This is a Discord bot for a Discord-based Minecraft pvp tierlist. Basically there are testers who are good players, and they can tier test people in queues. This bot manages those tests and some other stuff like moderation....
|
1792993856.3096318
|
1793080256.3096318
|
|
3397
|
Moonshine by @kritik | Stardance
|
kritik
|
1
|
58.21
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-08T01:46:24Z", "hours": 47.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a materials science engine meant to try and come up with candidates for novel materials with a high likleyhood of stability and validity for more advanced algorithms. The challenging part was integrating all the different tools being used, as well as perfectly tuning all tools to create accurate structures in as little time as possible. I am proud of the beautiful structures created by this algorithm. What to know to test this project is that its very unlikely a new material will be found on the first few tries, this has to be run for a while so start at the beta processing layer and run what is in the Alpha Arrays file. There is also lots of inaccuracies in this pipeline due to using off the self locally hosted LLM’s so you might have to run each layer a few times and not all candidates will be made.", "repo": "https://github.com/K200811/Project-MoonshineV2-Live", "demo": "https://github.com/K200811/Project-MoonshineV2-Live/releases/tag/v1.0.0"}]...
|
[{"post_id": 28069, "ts": "202 [{"post_id": 28069, "ts": "2026-07-14T02:58:00Z", "hours": 6.2922, "text": "IMPORTANT NOTE MOONSHINE TAKES A FEW HOURS TO RUN FOR THE BETA AND GAMMA LAYERS, SO JUST CHECK THE TERMINAL THAT OPENS UP WITH THE UI TO MAKE SURE EVERYTHING IS WORKING AND JUST WAIT YOU CAN ALSO SEE IT WORKING THROUGH THAT TERMINAL OUTPUT JUST MAKE SURE TO DOWNLOAD OLLAMA AND THE TWO AI MODELES THAT GO WITH IT, GEMMA THREE AND DEEPSEAK R1 . . . . In this last devlog I am showing how I turned my python project into a file that anyone can download and use on there Mac device without fiddling with python files and github repos. And boy was that a adventure. Firstly I know quite a bit about building python projects and everthing to do with building projects inside VSCode. I know ABSOLUTLY NOTHING about turning that into something others can easily use. The battles I faught with learning about file paths and directories and temp folders and the whole bajazz was enough to make Roman warriors run. But nontheless with Claude as my sensie and enough caffine to send a todler to the moon I was able to figure it out and Im going to outline some of it now. Firstly this project is a multi script project where you run each stage (Alpha - Epsilon) and check the output for each and move onto the next stage and so on jsut becuase thats how I liked it best. Now to comuncate information through differtent scripts I used JSON’s. But when packaging a python project you must make it so that insted of just writting with open (, …) the filename cant just be a name, it has to be a whole path. Learning that fact and how to implement that was a strugle. Then came the strugle of makeing a master script. At the begining of my master script I was importing each python file for each stage. That mixed with not having a run function in each stage and using if “name” == “ main ” to run all the main code for each stage resulted in a kathuple amount of erros and problems such as scripts not running, multiple windows being created, and more. The last bug problem was how to package everything together. I tried command after command with nothing working, only to then learn of how I must move all my files into the Dict folder created when packaging in order to make suer everything works properly. Now I just have to put this in a github release and everyone can use the executable file I have made."}, {"post_id": 26802, "ts": "2026-07-11T20:06:17Z", "hours": 4.9181, "text": "Realizing the importance of A UI for this I had base 44 whip up a UI you can connect to the python backend once you download it so you can see the stats of the algorithm running"}, {"post_id": 24366, "ts": "2026-07-07T21:33:11Z", "hours": 30.3122, "text": "MOONSHINE PROJECT FULLY FINISHED. In this devlog I am going to share how I was able to finally complete the Moonshine algorithm into a system that can autonomously generate novel crystal structures. Firstly The Beta and Gamma processing layers were changed to use locally hosted ollama models for the AI reasoning capabilities. In the Gamma layer a few changes were made as well. After constant experimenting with different AI models and architectures for the pipeline this was the one that I landed on. In the Gamma layer Ollama uses Deepseek to generate parameters for PyXtal crystal structure generation. I learned through constant experimentation that the PyXtal library’s randomness for crystal structure generation is much worse than I thought initially. Initially I thought with 10-20 tries the right structure would be generated. But no. Now what happens is the pipeline takes the parameters generated by deepseek and creates 500 pyXtal crystal structures. This adds about 3 minutes to the compute time for each candidate coming in from the Beta Processing Layer, but increases total accuracy by about 40%. The reason this helps is because PyXtal doesn’t get the structure right the first time, so by creating 500 and then picking the lowest energy generation we get the best structure we can from PyXtal. The next change made was the CHGNet relaxation phase inside of the Gamma Processing Layer. Initially I was using a random combination of convergence values, and structure optimizers. I changed that so now there are two layers to the relaxation phase. The first phase is a rough, low level, coarse relaxation that creates a rough initial structure, this is done by keeping the convergence value at 0.01 and using the basic UnitCellFillter optimizer. In the more stricter final relaxation pass the convergence value is tightened to 0.001 and the more advanced FrechetCellFilter is used. This has two benefits. firstly after the first pass the structure can be checked for validity and discarded if it is invalid before moving onto more expensive relaxation, secondly the structure created by PyXtal is relaxed more gently, by first getting an initial form and then being tightened down to its final form instead of taking the initial broken PyXtal structure and immediately forcing it into a tight final structure. It’s kind of like working with clay when making pots. Next comes the new Delta Processing Layer. The delta processing layer tests the structures made by the Gamma Processing layer further by subjecting it to a suite of tests. Atomic overlap, composition, coordination number plusability, oxidation number plusability, and structure matching against the materials project is tested on the crystal. This is done five times per candidate in beta since gamma produces five structures per candidate. This effectively tests validity and novelty for each structure. Finally comes the new Epsilon Processing Layer. This layer analyzes the structures created to give a better understanding of what we created, along with creating slab structures for the unit cell structure. Slab structures are just unit cell structures repeated into 3d space. Unit cell analysis returns density, unit cell volume, lattice parameters, final space group symmetry, local atomic geometry, bond lengths, bond angles, and prototype classification. Then comes the slab analisis. First the slabs are created by pymatgen, the main library used in this entire project, and analyzed for the following: surface symmetry, polarity, surface normal vectors, scale factors, center of mass alignment, termination layer composition, candidate adsorption sites, and total surface area. Slabs are created along the three Miller indices; there are just numbers that tell how the crystal is sliced in 3d space in reference to the three axes, (1,0,0) (1,1,0) and (1,1,1). And that’s the algorithm I spent over a month on. Now I have to just leave it running for a while and see if it finds any new crystal materials."}, {"post_id": 10331, "ts": "2026-06-17T00:19:18Z", "hours": 8.4331, "text": "I finished the Gamma Processing layer. This is the part of the file that takes in the formulas we created and screened in the Beta Processing Layer and then creates there structures and run a few initial validity tests on them. . First we start off with importing all the infinity stones of materials science. Then we get into our functions . First comes the Initial Super Gamma function. Ooooo fancyyy. No just kidding, I named everything so that I could tell which step of the process it came in just by reading the name. Initial tells me its the first and the Keyword super tells me its one of if not the first function to be run. Since keeping the order of every function run is super important for this to be built well this helps a lot. In the Initial Super Gamma Function we have a LLM, whos job is to take a look at the formula we created in the Beta Processing Layer and figure out what are the correct inputs to put into PyXtal for that formula. I will get into PyXtal in a bit . Next comes the SubGammaFunction. This function is nothing more than a overglorified string parser. It takes the output from the LLM, finds the key information we want, Dim, Group, Species, NumIons, and extracts them into variables we can input into PyXtal. Now all that seams straight forward right? So you can imagine my surprise when I was getting error after error in parsing the LLM response. I was so confused for some reason it could not extract the species from the response???? Yeah no it turned out I spelled species wrong in the function call. :) I know I make complaint jokes but its bugs, erros, and moments like that , that really make coding such a laugh, even those moments I really so enjoy. . Now back to the project! After parsing out all the information we can finally get to the interesting part 😈. CREATING AWESOME CRYSTAL STRUCTURES!!!!! PyXtal is a python tool that lets us randomly generate structures that don’t disobey fundamental laws of chemistry, such as Wyckoff positioning. The main challenge I had to overcome here was maintaining the structural group I had assigned to this crystal. PyXtal would be actively trying to create the best structure it thought was best but I wanted to preserve certain geometries to test since that is the most important thing in crystal creation . ANOTHER HUGE PROBLEM, I KEPT RUNNING OUT OF FREE CREDITS TO USE THE HUGGINGFACE AI MODELS. In the middle I tried to switch to Ollama locally hosted models I have before, but the remembered why I left them, THEY TAKE FOREVER. . After we create the PyXtal structures we run them through CHGNet to relax the structures, PyXtal SUCKS at creating low energy, high stability structures, its good at creating structures that don’t break certain rules such as Wyckoff positioning. After CHGNet relaxes the structure. It gives up the Stress values on the structure and the forces acting on the lattice of the crystal. We run 2 small loops to check each value and make sure its under 0.1 which is the value that is considered unstable for both metrics. If it passes the tests then its structure file is stored."}, {"post_id": 5973, "ts": "2026-06-10T00:36:20Z", "hours": 4.5428, "text": "Firstly I wrapped up the first step of this pipeline. I firstly changed Array Process to Alpha Process, and inside of it created functions for each step of that process making everything clean, professional, and modular. . After that I created a file called BetaProcess and restarted the Chemistry Checks there since there turned out to be MANY more steps to that process than what I had initially thought. Now what happens is firstly the Arrays we created in the Alpha Process are sent to deep seek to be put back together into molecular formulas. I this requires a new overly long prompt that details out all the steps the AI must take and chemistry rules and exceptions it must consider. I took some time in perfecting this prompt. After we get the reconstructed molecule we have to parse it out. Right now the LLM gives the molecule along with a whole response. I originally tried using Re to parse out the molecular formula. That didn’t work so then I had to format the LLM response to keep the answer at the end so I could just run normal string parsing to get the molecule. Then its shot off to the same LLM and prompt as the last devlog to find out how plausible the molecule is. . The challenges in this phase were making sure the deepsake model could put together even the hardest type of molecules so a big part of this was continuous testing and modifying of the prompt. . LLM’s are strange in how they always feel the need to have a 2 page explanation for every response. Because of that a bug challenge was figuring out how to parse out the information we want from each LLM response. . I was getting a headache looking at the outputs of this phase. Just words and number mushing together everywhere. So then I spent a lot of time formatting the output of this phase to make the information readable, understandable, and intuitive to follow."}, {"post_id": 4311, "ts": "2026-06-07T15:55:11Z", "hours": 3.3108, "text": "I started building the version 2 of Project Moonshine, a algorithm that’s meant to discover new crystals. This new engine takes a input of a reference material such as NH4H2PO4, and then breaks it into individual elements. It then systematically replaces every element with every element from the periodic table to generate THOUSANDS of potential new crystals. I got this idea from how real materials science discovery takes place. Scientists in a simulation mix and mash elements, using there extensive knowledge of chemistry to create new materials they think could work. Then atoms and elements are changed more to see what else can be created. . After we have our candidates I decided to first run initial screenings on the candidates to remove the ones that obviously won’t form stable crystals. I was initially going to test everything so we don’t lost any new crystals, but from version 1 I learned the enormous amount of time and compute that takes place in running high accuracy tests on these candidates (about 5 hours per test per molecule), and considering the fact I have over 10,000 CANDIDATES! and factoring in I want to finish this within the decade, I decided to run initial screenings. . I use the Qwen 2.5 model for plausibility analysis and deep seek to reconstruct the crystals from there array form that we created them in. When creating the candidates we break everything up into arrays, I thought the process of putting them back together would be as simple as counting the amount of times they appear in a array and then creating the empirical formula based on those subscripts of the elements. BUT NO. CHEMISTRY HAS 1000 RULES AND A 1000 MORE EXCEPTIONS IN MOLECULE FORMING. Instead of coding in every single one of these rules and exceptions , I decided to just use a AI model with strong reasoning. I am currently testing if this system for testing works. . Next I plan on improving the Chemistry rule set that these AI’s use so that I can make more accurate judgments about molecular forming and stability."}]...
|
Title: Moonshine by @kritik | Stardance
Devlogs:
Title: Moonshine by @kritik | Stardance
Devlogs:
I started building the version 2 of Project Moonshine, a algorithm that’s meant to discover new crystals. This new engine takes a input of a reference material such as NH4H2PO4, and then breaks it into individual elements. It then systematically replaces every element with every element from the periodic table to generate THOUSANDS of potential new crystals. I got this idea from how real materials science discovery takes place. Scientists in a simulation mix and mash elements, using there extensive knowledge of chemistry to create new materials they think could work. Then atoms and elements are changed more to see what else can be created. . After we have our candidates I decided to first run initial screenings on the candidates to remove the ones that obviously won’t form stable crystals. I was initially going to test everything so we don’t lost any new crystals, but from version 1 I learned the enormous amount of time and compute that takes place in running high accuracy tests on these candidates (about 5 hours per test per molecule), and considering the fact I have over 10,000 CANDIDATES! and factoring in I want to finish this within the decade, I decided to run initial screenings. . I use the Qwen 2.5 model for plausibility analysis and deep seek to reconstruct the crystals from there array form that we created them in. When creating the candidates we break everything up into arrays, I thought the process of putting them back together would be as simple as counting the amount of times they appear in a array and then creating the empirical formula based on those subscripts of the elements. BUT NO. CHEMISTRY HAS 1000 RULES AND A 1000 MORE EXCEPTIONS IN MOLECULE FORMING. Instead of coding in every single one of these rules and exceptions , I decided to just use a AI model with strong reasoning. I am currently testing if this system for testing works. . Next I plan on improving the Chemistry rule set that these AI’s use so that I can make more accurate judgments about molecular forming and stability.
Firstly I wrapped up the first step of this pipeline. I firstly changed Array Process to Alpha Process, and inside of it created functions for each step of that process making everything clean, professional, and modular. . After that I created a file called BetaProcess and restarted the Chemistry Checks there since there turned out to be MANY more steps to that process than what I had initially thought. Now what happens is firstly the Arrays we created in the Alpha Process are sent to deep seek to be put back together into molecular formulas. I this requires a new overly long prompt that details out all the steps the AI must take and chemistry rules and exceptions it must consider. I took some time in perfecting this prompt. After we get the reconstructed molecule we have to parse it out. Right now the LLM gives the molecule along with a whole response. I originally tried using Re to parse out the molecular formula. That didn’t work so then I had to format the LLM response to keep the answer at the end so I could just run normal string parsing to get the molecule. Then its shot off to the same LLM and prompt as the last devlog to find out how plausible the molecule is. . The challenges in this phase were making sure the deepsake model could put together even the hardest type of molecules so a big part of this was continuous testing and modifying of the prompt. . LLM’s are strange in how they always feel the need to have a 2 page explanation for every response. Because of that a bug challenge was figuring out how to parse out the information we want from each LLM response. . I was getting a headache looking at the outputs of this phase. Just words and number mushing together everywhere. So then I spent a lot of time formatting the output of this phase to make the information readable, understandable, and intuitive to follow.
I finished the Gamma Processing layer. This is the part of the file that takes in the formulas we created and screened in the Beta Processing Layer and then creates there structures and run a few initial validity tests on them. . First we start off with importing all the infinity stones of materials science. Then we get into our functions . First comes the Initial Super Gamma function. Ooooo fancyyy. No just kidding, I named everything so that I could tell which step of the process it came in just by reading the name. Initial tells me its the first and the Keyword super tells me its one of if not the first function to be run. Since keeping the order of every function run is super important for this to be built well this helps a lot. In the Initial Super Gamma Function we have a LLM, whos job is to take a look at the formula we created in the Beta Processing Layer and figure out what are the correct inputs to put into PyXtal for that formula. I will get into PyXtal in a bit . Next comes the SubGammaFunction. This function is nothing more than a overglorified string parser. It takes the output from the LLM, finds the key information we want, Dim, Group, Species, NumIons, and extracts them into variables we can input into PyXtal. Now all that seams straight forward right? So you can imagine my surprise when I was getting error after error in parsing the LLM response. I was so confused for some reason it could not extract the species from the response???? Yeah no it turned out I spelled species wrong in the function call. :) I know I make complaint jokes but its bugs, erros, and moments like that , that really make coding such a laugh, even those moments I really so enjoy. . Now back to the project! After parsing out all the information we can finally get to the interesting part 😈. CREATING AWESOME CRYSTAL STRUCTURES!!!!! PyXtal is a python tool that lets us randomly generate structures that don’t disobey fundamental laws of chemistry, such as Wyckoff positioning. The main challenge I had to overcome here was maintaining the structural group I had assigned to this crystal. PyXtal would be actively trying to create the best structure it thought was best but I wanted to preserve certain geometries to test since that is the most important thing in crystal creation . ANOTHER HUGE PROBLEM, I KEPT RUNNING OUT OF FREE CREDITS TO USE THE HUGGINGFACE AI MODELS. In the middle I tried to switch to Ollama locally hosted models I have before, but the remembered why I left them, THEY TAKE FOREVER. . After we create the PyXtal structures we run them through CHGNet to relax the structures, PyXtal SUCKS at creating low energy, high stability structures, its good at creating structures that don’t break certain rules such as Wyckoff positioning. After CHGNet relaxes the structure. It gives up the Stress values on the structure and the forces acting on the lattice of the crystal. We run 2 small loops to check each value and make sure its under 0.1 which is the value that is considered unstable for both metrics. If it passes the tests then its structure file is stored.
MOONSHINE PROJECT FULLY FINISHED. In this devlog I am going to share how I was able to finally complete the Moonshine algorithm into a system that can autonomously generate novel crystal structures. Firstly The Beta and Gamma processing layers were changed to use locally hosted ollama models for the AI reasoning capabilities. In the Gamma layer a few changes were made as well. After constant experimenting with different AI models and architectures for the pipeline this was the one that I landed on. In the Gamma layer Ollama uses Deepseek to generate parameters for PyXtal crystal structure generation. I learned through constant experimentation that the PyXtal library’s randomness for crystal structure generation is much worse than I thought initially. Initially I thought with 10-20 tries the right structure would be generated. But no. Now what happens is the pipeline takes the parameters generated by deepseek and creates 500 pyXtal crystal structures. This adds about 3 minutes to the compute time for each candidate coming in from the Beta Processing Layer, but increases total accuracy by about 40%. The reason this helps is because PyXtal doesn’t get the structure right the first time, so by creating 500 and then picking the lowest energy generation we get the best structure we can from PyXtal. The next change made was the CHGNet relaxation phase inside of the Gamma Processing Layer. Initially I was using a random combination of convergence values, and structure optimizers. I changed that so now there are two layers to the relaxation phase. The first phase is a rough, low level, coarse relaxation that creates a rough initial structure, this is done by keeping the convergence value at 0.01 and using the basic UnitCellFillter optimizer. In the more stricter final relaxation pass the convergence value is tightened to 0.001 and the more advanced FrechetCellFilter is used. This has two benefits. firstly after the first pass the structure can be checked for validity and discarded if it is invalid before moving onto more expensive relaxation, secondly the structure created by PyXtal is relaxed more gently, by first getting an initial form and then being tightened down to its final form instead of taking the initial broken PyXtal structure and immediately forcing it into a tight final structure. It’s kind of like working with clay when making pots. Next comes the new Delta Processing Layer. The delta processing layer tests the structures made by the Gamma Processing layer further by subjecting it to a suite of tests. Atomic overlap, composition, coordination number plusability, oxidation number plusability, and structure matching against the materials project is tested on the crystal. This is done five times per candidate in beta since gamma produces five structures per candidate. This effectively tests validity and novelty for each structure. Finally comes the new Epsilon Processing Layer. This layer analyzes the structures created to give a better understanding of what we created, along with creating slab structures for the unit cell structure. Slab structures are just unit cell structures repeated into 3d space. Unit cell analysis returns density, unit cell volume, lattice parameters, final space group symmetry, local atomic geometry, bond lengths, bond angles, and prototype classification. Then comes the slab analisis. First the slabs are created by pymatgen, the main library used in this entire project, and analyzed for the following: surface symmetry, polarity, surface normal vectors, scale factors, center of mass alignment, termination layer composition, candidate adsorption sites, and total surface area. Slabs are created along the three Miller indices; there are just numbers that tell how the crystal is sliced in 3d space in reference to the three axes, (1,0,0) (1,1,0) and (1,1,1). And that’s the algorithm I spent over a month on. Now I have to just leave it running for a while and see if it finds any new crystal materials.
Realizing the importance of A UI for this I had base 44 whip up a UI you can connect to the python backend once you download it so you can see the stats of the algorithm running
IMPORTANT NOTE MOONSHINE TAKES A FEW HOURS TO RUN FOR THE BETA AND GAMMA LAYERS, SO JUST CHECK THE TERMINAL THAT OPENS UP WITH THE UI TO MAKE SURE EVERYTHING IS WORKING AND JUST WAIT YOU CAN ALSO SEE IT WORKING THROUGH THAT TERMINAL OUTPUT JUST MAKE SURE TO DOWNLOAD OLLAMA AND THE TWO AI MODELES THAT GO WITH IT, GEMMA THREE AND DEEPSEAK R1 . . . . In this last devlog I am showing how I turned my python project into a file that anyone can download and use on there Mac device without fiddling with python files and github repos. And boy was that a adventure. Firstly I know quite a bit about building python projects and everthing to do with building projects inside VSCode. I know ABSOLUTLY NOTHING about turning that into something others can easily use. The battles I faught with learning about file paths and directories and temp folders and the whole bajazz was enough to make Roman warriors run. But nontheless with Claude as my sensie and enough caffine to send a todler to the moon I was able to figure it out and Im going to outline some of it now. Firstly this project is a multi script project where you run each stage (Alpha - Epsilon) and check the output for each and move onto the next stage and so on jsut becuase thats how I liked it best. Now to comuncate information through differtent scripts I used JSON’s. But when packaging a python project you must make it so that insted of just writting with open (, …) the filename cant just be a name, it has to be a whole path. Learning that fact and how to implement that was a strugle. Then came the strugle of makeing a master script. At the begining of my master script I was importing each python file for each stage. That mixed with not having a run function in each stage and using if “name” == “ main ” to run all the main code for each stage resulted in a kathuple amount of erros and problems such as scripts not running, multiple windows being created, and more. The last bug problem was how to package everything together. I tried command after command with nothing working, only to then learn of how I must move all my files into the Dict folder created when packaging in order to make suer everything works properly. Now I just have to put this in a github release and everyone can use the executable file I have made.
Ships:
I made a materials science engine meant to try and come up with candidates for novel materials with a high likleyhood of stability and validity for more advanced algorithms. The challenging part was integrating all the different tools being used, as well as perfectly tuning all tools to create accurate structures in as little time as possible. I am proud of the beautiful structures created by this algorithm. What to know to test this project is that its very unlikely a new material will be found on the first few tries, this has to be run for a while so start at the beta processing layer and run what is in the Alpha Arrays file. There is also lots of inaccuracies in this pipeline due to using off the self locally hosted LLM’s so you might have to run each layer a few times and not all candidates will be made....
|
1792997694.8511636
|
1793084094.8511636
|
|
27538
|
Welcome to The Pathways: The Game by @E_k | Starda Welcome to The Pathways: The Game by @E_k | Stardance...
|
E_k
|
1
|
58.11
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T21:17:02Z", "hours": 46.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What is this? I made an adventure game based on my story world of the pathways, a criminal civilization based in the outer edges of earths atmosphere where the rings of planets are joined together to form a system of paths. The premise In this game you can control Comet, the main character through these paths to uncover her story of how she ended up there even if she herself is not a criminal (This game is very heavily in development and is in no part finished, even the art is not final as path and assets are placeholders for now) Info I created this project in VSCode using the pygame library. I made the art of Comet in Ibis Paint X on Ipad as I will the other finished assets once the game is complete. This date will likely be after Stardance as I am planning this game to be a medium sized game with 3 different storylines to progress through. So far the basic structure of scene 1 is complete as well as very start of scene 2, it is a heavy work in progress however, as this ship is a precautionary ship so I have it shipped before Stardance ends. You can install the game using the .exe file from the itch.io link in the try project button and read the ReadMe file on my github repo in the source code folder", "repo": "https://github.com/Misted-River/Python", "demo": "https://ek-7.itch.io/welcome-to-the-pathways-the-game"}]...
|
[{"post_id": 82119, "ts": "202 [{"post_id": 82119, "ts": "2026-10-24T00:02:57Z", "hours": 1.9764, "text": "Fixed collision issues finally!! I realised that I had the players image and the different costumes of the animation not set to the same ratio so that was why… Had to fix other issues as well, such that the movement had been broken when the project was tried out by a shipwright so I set to work on that and found some issues from the last time I had attempted a fix, so I patched up those bugs, hopefully good to go to get some feedback from others playtesting if my ship goes according to plan! Thanks for reading yay :D Here’s a lil screenshot and video before I ship this project again"}, {"post_id": 79276, "ts": "2026-10-13T09:15:45Z", "hours": 10.1331, "text": "Update since the ship! I was given feedback that the movement mechanism was not working properly and had set off to fix that issue, which after a few weeks of procrastination I finally sat down to actually figure out what had been the issue. So instead of the path stopping at certain co-ordinates when the player travelled along it, I focused on using collisions to not restrict the players movement even if playing on a different screen size. I also removed shift from gameplay for now, may return to it eventually but decided that it was unnecessary for my game so far, this helped fix the collision bug at the start that the player would travel outside the path if wasd keys and shift were pressed. As I changed my approach multiple times, I finally settled on changing the path itself too, to implement the collision stopping the player from moving out of the path they were meant to travel on Thanks so much for letting me know of this issue shipwrights! Probably wont ship again just yet, as I want to do even a little bit more of the next part and finalise the first in terms of making it have a small indicator when objects are observed which is relatively easy to implement so I’ll leave that for later. Thanks for reading!"}, {"post_id": 66817, "ts": "2026-09-12T18:35:13Z", "hours": 8.2342, "text": "Work on scene 2 and Readme written in github! I had issues when I split the code into scene 1 and scene 2 as I still needed the same movement mech for scene 2 as well, but I managed to manage this split into working as I needed it to. I also am preparing for my first ship! This is because I am aware that Stardance is ending soon and so want to share what I have so far instead of waiting for a better time, this is the best I can get for now as this project will be long and will definitely be continued after Stardance is over as I begin college and have more time to myself to make this hopefully become a reality! Another feature is that the player must find all objects along the path in scene 1 in order to proceed to scene 2. Thanks so much for reading, this might be the last devlog before shipping but who knows, I could make changes anytime before the end of the challenge if I want to! This is just a precautionary ship just in case In the future I hope to include more gameplay (this right now is legit the intro to the game, along with some cutscenes ill draw for the very start) I have written notes in GitHub in Python-> Game Resources -> Notes -> Gameplay.txt if interested! Thanks so much for anyone following along with this project <3"}, {"post_id": 50921, "ts": "2026-08-20T12:03:05Z", "hours": 0.2761, "text": "Repost -> Video is missing from last devlog so Im uploading here again oof -> Figured I should post a devlog before I work on the code on my new device so here we go… So, I a couple of changes have happened to the game and I did attempt to try migrate to Godot however I have made too much progress on pygame so far and decided not to go ahead with it. Also player graphics are added now! The back legs in the animation ive been told, look a little stiff so I do aim to fix that later on once I make more progress on the actual gameplay of the game, but for now it should be ok hopefully lol. I also have been planning the actual gameplay style now by making little notes and have multiple routes planned for the player to take so that they will have a sense of agency in the game, that their choices matter so hopefully I can pull that off as I keep on working on the game yay. Not sure if I said anything in the last devlog but I added music too! Its a custom beepbox tune which I made before stardance so I will change bits to fit the vibe better later on as it isnt perfect right now yea, music not audible in video (tried fixing when I was recording the video but file type was not supported). Once I finish the start (scene1) I will probably ship, but I doubt I’ll finish this project before september, anyways thanks for reading :D"}, {"post_id": 50892, "ts": "2026-08-20T11:04:50Z", "hours": 3.5822, "text": "Figured I should post a devlog before I work on the code on my new device so here we go… So, I a couple of changes have happened to the game and I did attempt to try migrate to Godot however I have made too much progress on pygame so far and decided not to go ahead with it. Also player graphics are added now! The back legs in the animation ive been told, look a little stiff so I do aim to fix that later on once I make more progress on the actual gameplay of the game, but for now it should be ok hopefully lol. I also have been planning the actual gameplay style now by making little notes and have multiple routes planned for the player to take so that they will have a sense of agency in the game, that their choices matter so hopefully I can pull that off as I keep on working on the game yay. Not sure if I said anything in the last devlog but I added music too! Its a custom beepbox tune which I made before stardance so I will change bits to fit the vibe better later on as it isnt perfect right now yea. Once I finish the start (scene1) I will probably ship, but I doubt I’ll finish this project before September, anyways thanks for reading :D"}, {"post_id": 43891, "ts": "2026-08-09T10:36:34Z", "hours": 9.6606, "text": "Ok so quite a lot of changes made to the game so yay lets go :D Firstly… Added when shift pressed that the player moves faster and modified player speed for a better experience when playing. I achieved another goal of mine by making some items clickable in the game which then lead to a popup label coming onto the screen at the moise pointer position! This indeed took a while yea but I figured out the logic at some point by myself and with the help of some videos on collisions with masks (again lol because I had to make a workaround for the mouse pointer to be able to interact with these objects so yea image masks made an appearance yet again lmao) and I did initially have some trouble with how I could have the label appear whenever left click of a moiuse is pressed so that when player is pressing and holding that the label will be shown. Also im nearly completed scene 1! Im done with its code but I have yet to draw the art for it <3 and I did come across a small bug in the movement along the path so that the player can go back and forth with ease so I will have to fix that but for now I have other more important issues on my mind One of these is that I still need to fiigure out how scene 2 will go wheter there will be a cutscene or not and all that, but so far scene change works in the code so I am really happy about that and the progress :DD"}, {"post_id": 35774, "ts": "2026-07-27T12:38:55Z", "hours": 8.4728, "text": "Pixel perfect collision accomplished! For this I had to utilise image masks to ensure that only when the actual pixels of the player and the path border are touching, a reaction is triggered. When player is controlled by w,a,s,d keys the path border doesn’t allow the player to move off the path and acts as an obstacle which is exactly what I was hoping to achieve :D Now I need to refine this collision effect to include all combinations of w,a,s,d keys as right now, the collision effect is limited to either w or s and either a or d keys being pressed. (Video has a watermark oop, just realised that, anyways ignore that)"}, {"post_id": 26493, "ts": "2026-07-11T09:50:54Z", "hours": 8.5944, "text": "Working with masks to achieve pixel perfect collision between the path and the player so that player does not go over the edge oop- Since the last devlog I also found a way to reduce lag in the player movemnt so now the movement is completely smooth. this is completely new to me and I am still trying to figure this out so hopefully this issue will be fixed by the next devlog."}, {"post_id": 19964, "ts": "2026-07-01T12:58:49Z", "hours": 1.3281, "text": "Added some restrictions to avoid showing the edge of the main path in the first scene while the player is moving using wasd keys. Video attached shows player movement however it is shown to be slower than what it is when the program is run without the screen recorder."}, {"post_id": 19870, "ts": "2026-07-01T08:57:37Z", "hours": 4.9956, "text": "Placeholder images are still being used for the time being, until I draw them later on with more detail etc. but main player smooth movement is established. This marks the basis for the first main part of the game :D"}, {"post_id": 18364, "ts": "2026-06-29T14:24:17Z", "hours": 0.9494, "text": "Base code while learning the python library pygame. Layout is rough and placeholder images are used just to get an idea of how it works yay"}]...
|
Title: Welcome to The Pathways: The Game by @E_k | Title: Welcome to The Pathways: The Game by @E_k | Stardance
Devlogs:
Base code while learning the python library pygame. Layout is rough and placeholder images are used just to get an idea of how it works yay
Placeholder images are still being used for the time being, until I draw them later on with more detail etc. but main player smooth movement is established. This marks the basis for the first main part of the game :D
Added some restrictions to avoid showing the edge of the main path in the first scene while the player is moving using wasd keys. Video attached shows player movement however it is shown to be slower than what it is when the program is run without the screen recorder.
Working with masks to achieve pixel perfect collision between the path and the player so that player does not go over the edge oop- Since the last devlog I also found a way to reduce lag in the player movemnt so now the movement is completely smooth. this is completely new to me and I am still trying to figure this out so hopefully this issue will be fixed by the next devlog.
Pixel perfect collision accomplished! For this I had to utilise image masks to ensure that only when the actual pixels of the player and the path border are touching, a reaction is triggered. When player is controlled by w,a,s,d keys the path border doesn’t allow the player to move off the path and acts as an obstacle which is exactly what I was hoping to achieve :D Now I need to refine this collision effect to include all combinations of w,a,s,d keys as right now, the collision effect is limited to either w or s and either a or d keys being pressed. (Video has a watermark oop, just realised that, anyways ignore that)
Ok so quite a lot of changes made to the game so yay lets go :D Firstly… Added when shift pressed that the player moves faster and modified player speed for a better experience when playing. I achieved another goal of mine by making some items clickable in the game which then lead to a popup label coming onto the screen at the moise pointer position! This indeed took a while yea but I figured out the logic at some point by myself and with the help of some videos on collisions with masks (again lol because I had to make a workaround for the mouse pointer to be able to interact with these objects so yea image masks made an appearance yet again lmao) and I did initially have some trouble with how I could have the label appear whenever left click of a moiuse is pressed so that when player is pressing and holding that the label will be shown. Also im nearly completed scene 1! Im done with its code but I have yet to draw the art for it <3 and I did come across a small bug in the movement along the path so that the player can go back and forth with ease so I will have to fix that but for now I have other more important issues on my mind One of these is that I still need to fiigure out how scene 2 will go wheter there will be a cutscene or not and all that, but so far scene change works in the code so I am really happy about that and the progress :DD
Figured I should post a devlog before I work on the code on my new device so here we go… So, I a couple of changes have happened to the game and I did attempt to try migrate to Godot however I have made too much progress on pygame so far and decided not to go ahead with it. Also player graphics are added now! The back legs in the animation ive been told, look a little stiff so I do aim to fix that later on once I make more progress on the actual gameplay of the game, but for now it should be ok hopefully lol. I also have been planning the actual gameplay style now by making little notes and have multiple routes planned for the player to take so that they will have a sense of agency in the game, that their choices matter so hopefully I can pull that off as I keep on working on the game yay. Not sure if I said anything in the last devlog but I added music too! Its a custom beepbox tune which I made before stardance so I will change bits to fit the vibe better later on as it isnt perfect right now yea. Once I finish the start (scene1) I will probably ship, but I doubt I’ll finish this project before September, anyways thanks for reading :D
Repost -> Video is missing from last devlog so Im uploading here again oof -> Figured I should post a devlog before I work on the code on my new device so here we go… So, I a couple of changes have happened to the game and I did attempt to try migrate to Godot however I have made too much progress on pygame so far and decided not to go ahead with it. Also player graphics are added now! The back legs in the animation ive been told, look a little stiff so I do aim to fix that later on once I make more progress on the actual gameplay of the game, but for now it should be ok hopefully lol. I also have been planning the actual gameplay style now by making little notes and have multiple routes planned for the player to take so that they will have a sense of agency in the game, that their choices matter so hopefully I can pull that off as I keep on working on the game yay. Not sure if I said anything in the last devlog but I added music too! Its a custom beepbox tune which I made before stardance so I will change bits to fit the vibe better later on as it isnt perfect right now yea, music not audible in video (tried fixing when I was recording the video but file type was not supported). Once I finish the start (scene1) I will probably ship, but I doubt I’ll finish this project before september, anyways thanks for reading :D
Work on scene 2 and Readme written in github! I had issues when I split the code into scene 1 and scene 2 as I still needed the same movement mech for scene 2 as well, but I managed to manage this split into working as I needed it to. I also am preparing for my first ship! This is because I am aware that Stardance is ending soon and so want to share what I have so far instead of waiting for a better time, this is the best I can get for now as this project will be long and will definitely be continued after Stardance is over as I begin college and have more time to myself to make this hopefully become a reality! Another feature is that the player must find all objects along the path in scene 1 in order to proceed to scene 2. Thanks so much for reading, this might be the last devlog before shipping but who knows, I could make changes anytime before the end of the challenge if I want to! This is just a precautionary ship just in case In the future I hope to include more gameplay (this right now is legit the intro to the game, along with some cutscenes ill draw for the very start) I have written notes in GitHub in Python-> Game Resources -> Notes -> Gameplay.txt if interested! Thanks so much for anyone following along with this project <3
Update since the ship! I was given feedback that the movement mechanism was not working properly and had set off to fix that issue, which after a few weeks of procrastination I finally sat down to actually figure out what had been the issue. So instead of the path stopping at certain co-ordinates when the player travelled along it, I focused on using collisions to not restrict the players movement even if playing on a different screen size. I also removed shift from gameplay for now, may return to it eventually but decided that it was unnecessary for my game so far, this helped fix the collision bug at the start that the player would travel outside the path if wasd keys and shift were pressed. As I changed my approach multiple times, I finally settled on changing the path itself too, to implement the collision stopping the player from moving out of the path they were meant to travel on Thanks so much for letting me know of this issue shipwrights! Probably wont ship again just yet, as I want to do even a little bit more of the next part and finalise the first in terms of making it have a small indicator when objects are observed which is relatively easy to implement so I’ll leave that for later. Thanks for reading!
Fixed collision issues finally!! I realised that I had the players image and the different costumes of the animation not set to the same ratio so that was why… Had to fix other issues as well, such that the movement had been broken when the project was tried out by a shipwright so I set to work on that and found some issues from the last time I had attempted a fix, so I patched up those bugs, hopefully good to go to get some feedback from others playtesting if my ship goes according to plan! Thanks for reading yay :D Here’s a lil screenshot and video before I ship this project again
Ships:
What is this? I made an adventure game based on my story world of the pathways, a criminal civilization based in the outer edges of earths atmosphere where the rings of planets are joined together to form a system of paths. The premise In this game you can control Comet, the main character through these paths to uncover her story of how she ended up there even if she herself is not a criminal (This game is very heavily in development and is in no part finished, even the art is not final as path and assets are placeholders for now) Info I created this project in VSCode using the pygame library. I made the art of Comet in Ibis Paint X on Ipad as I will the other finished assets once the game is complete. This date will likely be after Stardance as I am planning this game to be a medium sized game with 3 different storylines to progress through. So far the basic structure of scene 1 is complete as well as very start of scene 2, it is a heavy work in progress however, as this ship is a precautionary ship so I have it shipped before Stardance ends. You can install the game using the .exe file from the itch.io link in the try project button and read the ReadMe file on my github repo in the source code folder...
|
1793008197.589878
|
1793094597.589878
|
|
56120
|
pixl by @Gabin | Stardance
|
Gabin
|
0
|
58.07
|
0
|
[]
|
[{"post_id": 58026, "ts": "202 [{"post_id": 58026, "ts": "2026-08-30T11:28:33Z", "hours": 0.3611, "text": "fixing a few bugs on the pixl player dashboard, the journal was a bit buggy but now it saves what you write even if you close the tab and I added the way of adding a title to the journal. Also I’m lowk doing the sticker sheet and so I’m doing some writing tests in figma"}, {"post_id": 57871, "ts": "2026-08-30T05:59:17Z", "hours": 57.7075, "text": "Pixl pixl pixl pixl yeahhh ikik lowk I was just creating this project in sd to see what I could get and maybe I could unship from macondo but actually I forgot I had to devlog often in sd so yeah ig it’s cooked."}]...
|
Title: pixl by @Gabin | Stardance
Devlogs:
Pixl p Title: pixl by @Gabin | Stardance
Devlogs:
Pixl pixl pixl pixl yeahhh ikik lowk I was just creating this project in sd to see what I could get and maybe I could unship from macondo but actually I forgot I had to devlog often in sd so yeah ig it’s cooked.
fixing a few bugs on the pixl player dashboard, the journal was a bit buggy but now it saves what you write even if you close the tab and I added the way of adding a title to the journal. Also I’m lowk doing the sticker sheet and so I’m doing some writing tests in figma...
|
1792648298.5482526
|
1793253098.5482526
|
|
3637
|
Thanks for Mining That! by @StarCoder | Stardance
|
StarCoder
|
1
|
58.0
|
543
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-30T00:15:27Z", "hours": 58.0, "multiplier": 11.26, "payout": 543, "blessing": "neutral", "text": "I made a game called Thanks For Mining That. — SUMMARY — Thanks for Mining That is a 2d game where you are in space and have to mine resources, but you have no mining tools. So you lure the enemies to hit the asteroids so they mine resources and destroy themselves in the process. — LINKS — Itch.io page: https://starcoder.itch.io/thanks-for-mining-that Github: https://github.com/StarCoder369/Thanks-for-Mining-That- It is a web build, so no need to download anything. — CHALLENGES — Here are some challenges I faced. When I first started this game, it was completely different. It was about a spaceship with a wrecking ball, which you had to use to mine resources and destroy enemies. The idea had potential, but it was too difficult to implement it in a way that would be fun for the player, so I scrapped it and pivoted ideas. There were a lot of problems with optimization. I was able to make it better, even though it still isn’t completely smooth, it’s much better. I used object pooling for this, so instead of enemies and asteroids being spawned each time, they just enable and disable. I faced a lot of problems with the music, since I’m not a music guy. I’ve tried to make music before, but it never turns out good. This time, I think it turned out pretty well. I used JummBox (a different version of BeepBox). Another challenge I faced was knowing when to stop. I have a lot of ideas to add to this, but I realized that if I did all of it, it would be a waste of time. All the ideas I have for the game won’t help me learn anything. That’s why I have been doing so many other ysws events, which is also why there is such a big gap between my second-last and last devlog. That’s basically it. I had a lot of fun making the game, and hopefully it’s going to be accepted! Thank you!", "repo": "https://github.com/StarCoder369/Thanks-for-Mining-That-", "demo": "https://starcoder.itch.io/thanks-for-mining-that"}]...
|
[{"post_id": 37340, "ts": "202 [{"post_id": 37340, "ts": "2026-07-30T00:03:53Z", "hours": 4.155, "text": "Thanks For Mining That! Devlog 7 of my Unity Game I’m finally DONE! So I’ve mostly been working on other stuff, like #alchemize, #breadboard, and #jame-gam, but I was finally able to finish my game. You can try the game out here: Thanks for Mining That It’s a web build, so no download necessary. I didn’t really need to do much. I just did some small changes, some bug fixes, and I don’t really remember what else. So yeah, that’s it for this devlog. Hopefully it gets accepted since I want a 3d printer. But yeah, thanks!"}, {"post_id": 27840, "ts": "2026-07-13T18:41:17Z", "hours": 8.3661, "text": "Thanks for Mining That! Devlog 6 of my Unity Game It’s been more than a week since my last devlog. I’ve mostly been focused on fixing bugs, polishing, and some other stuff. For those who are new, I am making a very chaotic game where you have no weapons, but you need to mine resources, so you have to dodge enemies making them crash into asteroids, mining resources, and destroying themselves in the process. You can use tools to help you, but to craft tools, you need resources. I now have three Hackatime projects connected to this game. Before, I had two, one tracked my Unity time, and another tracked my coding time. Now, for some reason, after I built the game for the first time to test stuff out, a new project popped up that tracks my Unity time, and my old Hackatime project no longer tracks my Unity time. Doesn’t really make much sense. What I mainly worked on: Stats/End Screen Saving Sounds Black Hole Bug-fixing Other stuff Stats/End Screen I added an end screen to the game, where after you finish the game, it shows you all your stats, of the completed run, and all runs. You can click new run to create a new run, and play again. I’m pretty sure someone had suggested this in one of my older devlogs, and it sounded like a good idea. The hardest part of all of this was the saving. Saving This is my first game I implemented real saving to. I have made some games before where I had a small amount of saving, but this time I really tried. I created a whole another script called StatsManager which controls saving and the stats screen. It does not save your current game, and by that I mean if you were in the middle of playing, and leave, it does not resume where you left off. It just saves all your coins, tools, and other stats. Sounds I added some sound effects and also added the background music to my game. I still have to tweak some of the volumes since some sound effects are a bit too loud, but it’s good enough for now. Black Hole I don’t want to give away too much, but the black hole is the final tool, which you can only unlock after unlocking all other tools, and requires a lot of coins and takes a lot of resources to craft. It’s the tool before you finish the game. Bugs Quite a lot of bugs. I think I fixed most of them, but there are probably a few I didn’t notice. Other Stuff I finished making all the tool icons and their sprites in Aseprite. I added them to the game, but for some reason, they look much worse in the game than in Aseprite. Not blurry or anything like that, it just doesn’t feel right. But I don’t want to redo anything, so I just changed some stuff in the sprites and kept them how they were. I also finally added the radiation zone sprite, and the barrier now deals damage and pushes the player away. What I have to add Below are a list of things I have to add to the game ㅤ UI Polish (Sounds and animations) Tools polish (Effects, sounds) General Effects Overall Polish So that’s it for this devlog. Any feedback appreciated. The screenshot below shows all my tool icons and sprites I made. Thanks!"}, {"post_id": 23250, "ts": "2026-07-06T02:51:32Z", "hours": 6.5392, "text": "Thanks for Mining That! Devlog 5 of my Unity Game It’s been four days since my last devlog. Note: I had to redo the whole devlog because the site decided that if I post a devlog which is higher than the character count, it will get completely deleted! So my devlog may not be completely formatted very nicely. I have also lost 8 hours because I have two devlogs that are fourteen hours. I can atleast understand the second one since it was my fault I forgot to post a devlog, so I had to combine two devlogs. But the first devlog was before the announcement about the 10 hour limit. Anyways, back to the devlog ㅤ For those who are new, I am making a game where you have no weapons, but you need to mine resources, so you have to dodge enemies making them crash into asteroids, mining resources, and destroying themselves in the process. What I mainly worked on: Finishing tool functionality UI Title Pixel Art Bug-fixing Other stuff Tools I thought I had finished the functionality last devlog, but there were a few things to fix. The main one, was the Asteroid Forge, which took me like 3 hours to fix completely, and I had explained all the issues before my devlog got deleted, but I’m too tired to write it again a second time. UI I finished all my pixel art UI, and implemented it in game. It should look pretty good now. I had explained how I had created all of them, but it all got deleted. Title I made a title pixel art, look at screenshot to see part of it. I’m a bit of a perfectionist, so it took much longer than it needed to, and I’m still not satisfied with how it turned out. BUGS A LOT OF BUGS. Especially with the asteroid forge, and also some in inventory and other stuff. Other Stuff I decided to make my own music, which I’ve tried multiple times with no good results. I’m using JummBox, and it’s going not good. I also forgot to record it with Lapse, so lost an hour of my work, so nine hours total I’ve lost. I’ve also only finished 10 seconds of the background music, after an hour. I finished implementing the enemy type. Made four tool icons, three were pretty good, one wasn’t that good I also added some other stuff I can’t think of right now. What I have to add Below are a list of things I have to add to the game ㅤ Sounds & BG music UI Polish Tools art and polish Rest of the Tool Icons Effects Overall Polish So that’s it for this devlog. (Sorry about my repeated rants about the deletion, I’m just annoyed, especially with 8 hours not counting, and me forgetting to use Lapse to record me making music) Any feedback appreciated. Thanks!"}, {"post_id": 20104, "ts": "2026-07-01T16:58:40Z", "hours": 14.5667, "text": "Thanks for Mining That! Devlog 3 and 4 of my Unity Game It’s been more than two weeks since my last devlog. I was planning on posting devlog 3 a week back, but got sidetracked with my Frictionless mission project, and then forgot about it completely. So this is devlog 3 and 4 combined. ㅤ For those who are new, I am making a game where you have no weapons, but you need to mine resources, so you have to dodge enemies making them crash into asteroids, mining resources, and destroying themselves in the process. ㅤ The main things I worked on was the shop and the tools. Shop The shop is in the main menu, and you have to click a button called tools to make it show up. The game flow is the player plays the game, dies, uses coins to buy tools, and then plays the game again to try to survive longer. The shop took me a long time to figure out how I should actually do it. A lot of time I was just staring at the screen trying to figure out how I’m actually going to do it. Looking back, I probably should have planned it out on a piece of paper or something. Tools Currently I have 7 tools implemented. I still need to make all the art for them, but their functionality mostly works. Below is a list of my tools. Gravity Orb - An orb that creates a temporary gravity field pulling asteroids and enemies Pulse Wave - An orb that releases a wave in all directions pushing objects away. (I might scrap this tool, as it doesn’t look that good and is hard to use) Repulsion Orb - An orb that creates a temporary field that pushes asteroids and enemies away. Asteroid Lock - An orb that if hits an asteroid, will lock it in place temporarily. (This tool is not working for some reason, so I have to fix it) Grow Tool - An orb that when it hits an asteroid, will cause it to grow rapidly. (It can stack) Asteroid Forge - An orb that grows an asteroid Ship Decoy - An orb that shoots out a decoy that lures enemies away So currently, these are all the tools I have. I will probably not add any more, except for the final one. The final one will require all tools unlocked plus a large amount of coins. Coins I noticed that I hadn’t explained what coins really were in the past devlogs. Coins can be earned when enemies and asteroids are destroyed. Coins can be used to unlock tools in the shop after you die. UI I created some pixel art UI and was playing around with it. It’s still not done and doesn’t look very well, so after I make them a bit better I will add them to the game fully. Enemy Types I added another enemy type, and I also made some art for them. They’re really similar, and just have some difference with linear and turning speed. Environmental Hazards I decided not to add any environmental hazards because I just couldn’t figure out a way to make them not make the player mad. Black holes were too annoying, and planets were just asteroid without ores, so I didn’t add them. What I have to add Below are a list of things I have to add to the game ㅤ Sounds (No sound effects) UI (Making it look better) Tools (Polish, art, functionality, and the final one) Crafting (Works pretty well, some bugs) Finish Inventory (Just some bugs and polish) Main Menu shop (Bugs and polish) Tool Icons Effects: Explosions, damage effects, etc Radioactive Zone (Doesn’t do anything, but effects have been added) Overall Polish ㅤ So thats basically it for this combined devlog. There’s not too much I added because I was focusing on my Frictionless mission project which I recently shipped. The game should be done in less than a week (My initial goal when I started this game was June 15th) Thanks!"}, {"post_id": 10332, "ts": "2026-06-17T00:29:22Z", "hours": 6.9314, "text": "Thanks for Mining That! Devlog 2 for my Unity game So it’s been a few days since my last devlog, and I’ve been working on some of the art and also the inventory system. ㅤ For those who are new, I am making a game where you have no weapons, but you need to mine resources, so you use the groups of angry enemies that are chasing you to mine asteroids while also destroying themselves in the process. You can use tools to make it easier for enemies to help you mine. ㅤ I made the pixel art for the ores and the art for the player. Before, the player was more of a 2d triangular looking shape, but I changed it into a rocket. ㅤ The only ores I currently have are copper, iron and gold. Their art is not the best, but it works. I use Aseprite for the pixel art, and it takes quite some time for me to make each one because I rarely ever make pixel art games, so for me, the current state of the art is good enough. ㅤ I also made each asteroid show which ore it contains, so players can easily identify the asteroid that has the resource they need. I also made the asteroids deal a bit of damage to the player, calculated by the velocity and mass to make the game a bit more chaotic. ㅤ And yes, my game is meant to be chaotic, though I may make it a bit easier to prevent players from getting annoyed. I’ll probably lower the enemy move speed a bit, and keep the turn speed how it is. And now, let me talk about the Inventory/Crafting system. The system is still in progress, but I’ve gotten a basic framework for the inventory ready, so it’ll be easier to add crafting. I added a resources panel at the bottom, which shows total resources in the current run. The panel on the top right will be made invisible later, and is meant to give a message to the player that they got a specific resource. I also added a panel on the left, which will show the current tools, and how many the player has. ㅤ How Tools Will Work Tools can be used by the player to manipulate the environment, like a gravity orb, a repelling wave, etc. They are one-time consumables, though you can hold many of them. You need certain resources to craft them, so weaker tools will require copper, and better tools will require iron and gold. Usually multiple are crafted at a time, though some will be individual crafts. In the main menu, players can use coins(currency I have not implemented yet) to buy better tools, but they can only equip four at a time. What I have to add Below are a list of things I have to add to the game ㅤ Sounds (I currently have no sound effects at all) UI (The UI may be in pixel art, though I’m still unsure about that) Tools Crafting Finish Inventory Main Menu shop Coins Enemy types Enemy art Tool Icons Environmental Hazards: Black Holes, planets, etc. (Maybe?) Effects: Explosions, damage effects, etc Radioactive Zone art and functionality (The barrier surrounding the map) Overall Polish ㅤ So thats basically it for this devlog. I would really appreciate any feedback or suggestions, and below you can see a short video of me playing the game (and failing quite miserably)."}, {"post_id": 6584, "ts": "2026-06-11T01:59:40Z", "hours": 14.935, "text": "Thanks for Mining That! Devlog #1 (Technically #2, but the first one doesn’t really count.) (Game made in Unity) It’s been over a week since my last devlog, and I’ve made a lot of changes. I changed my original game idea where you had a wrecking ball in space, because it didn’t feel fun. My New Idea Still space mining, but you can’t actually mine anything. And to make it even better, hundreds of enemies are flying straight toward you, and all the resources you want are inside asteroids. Fortunately, these enemies have ‘ volunteered ’ to help. All you have to do is ‘ convince ’ enemies to crash into asteroids. Enemies destroy themselves, asteroids break apart, resources are released, and everyone except you is doing the work. You’ll collect the resources and use it to craft tools, to help manipulate the environment. Use coins you get to unlock more tools after you die. What I’ve Done So Far Here’s what I already have so far: Player Controller Enemy Controller Asteroids Main Menu & Death Screen Mini Map Enemy Spawner Asteroid Spawner Object Pooling System More detailed explanation below Player Controller The player can use either Keyboard or Mouse to move. The game detects which one you are using and automatically switches. Keyboard Controls A / D - Rotate left and right W / S - Move forward and backward Mouse Controls The ship rotates toward the mouse cursor with speed calculated using distance from cursor to player. Cursor close = slow Cursor far = fast (limited range) Enemy Controller The enemy behaviour uses: Max Speed Turn Speed Thrust Enemies rotate toward player using turning speed. Low-thrust enemies make wide turns, while high-thrust enemies make more accurate turns. Enemy velocity is capped with max speed. Asteroids Health scales with mass and ore. Mass also affects movement speed. Asteroids are assigned a direction when they spawn. Slowly corrects direction if pushed off course. Game Loop The current game loop: Main Menu Gameplay Death Screen Game Manager handles main logic. Mini Map Added after realizing asteroids are hard to find. Created using a secondary camera with a larger view. Camera follows the player and renders to a texture, displayed in UI. Asteroid Spawning Asteroids spawn from a list of spawn points spread across the map. Every ~25 seconds, chance to spawn at each point. Each asteroid has: A randomized size Random asteroid sprite Enemy Spawning Spawn points are attached to the player. Every ~5 seconds, a random spawn point is selected and an enemy bunch is spawned. Object Pooling Initially, every enemy and asteroid was created using Instantiate() , which caused lag. To solve this, I switched to object pooling. The object pool creates a collection of enemies and asteroids. When an object is needed, it is activated and moved into position. This improved overall performace. What’s Next? There’s still a lot left to make: Radiation Barrier Tools & Upgrades Ore Types More Spaceships Enemy Variants Pixel art Better UI Other stuff which I can’t think of This was a much larger devlog than usual, but since I have changed so much, I didn’t want to skip anything. Personally, I think the game is more fun than the earlier wrecking ball idea, and though the game is not finished, it still feels good to play. If you have any feedback or suggestions, I would really appreciate them. Thanks! (Note: Some parts might feel a bit weird since I had to shorten it to fit it in the character limit)"}, {"post_id": 1072, "ts": "2026-06-02T21:43:01Z", "hours": 2.2311, "text": "I am making a game where you can control a magnet which attracts a wrecking ball in space. There will be enemies and asteroids in the environment. You can destroy the asteroids to get certain ores, which you can use for upgrades later on. You have to try to survive as long as possible, and collect as many resources. I am currently not sure which path I should go: Make it so each time you play, there will be an xp bar, which fills up as you defeat enemies. Once it fills up, you can choose an upgrade which will help you survive. There is no xp bar, but instead, after you die, you can use the ores collected to choose permanent upgrades. I would really appreciate any suggestions or feedback."}]...
|
Title: Thanks for Mining That! by @StarCoder | Sta Title: Thanks for Mining That! by @StarCoder | Stardance
Devlogs:
I am making a game where you can control a magnet which attracts a wrecking ball in space. There will be enemies and asteroids in the environment. You can destroy the asteroids to get certain ores, which you can use for upgrades later on. You have to try to survive as long as possible, and collect as many resources. I am currently not sure which path I should go: Make it so each time you play, there will be an xp bar, which fills up as you defeat enemies. Once it fills up, you can choose an upgrade which will help you survive. There is no xp bar, but instead, after you die, you can use the ores collected to choose permanent upgrades. I would really appreciate any suggestions or feedback.
Thanks for Mining That! Devlog #1 (Technically #2, but the first one doesn’t really count.) (Game made in Unity) It’s been over a week since my last devlog, and I’ve made a lot of changes. I changed my original game idea where you had a wrecking ball in space, because it didn’t feel fun. My New Idea Still space mining, but you can’t actually mine anything. And to make it even better, hundreds of enemies are flying straight toward you, and all the resources you want are inside asteroids. Fortunately, these enemies have ‘ volunteered ’ to help. All you have to do is ‘ convince ’ enemies to crash into asteroids. Enemies destroy themselves, asteroids break apart, resources are released, and everyone except you is doing the work. You’ll collect the resources and use it to craft tools, to help manipulate the environment. Use coins you get to unlock more tools after you die. What I’ve Done So Far Here’s what I already have so far: Player Controller Enemy Controller Asteroids Main Menu & Death Screen Mini Map Enemy Spawner Asteroid Spawner Object Pooling System More detailed explanation below Player Controller The player can use either Keyboard or Mouse to move. The game detects which one you are using and automatically switches. Keyboard Controls A / D - Rotate left and right W / S - Move forward and backward Mouse Controls The ship rotates toward the mouse cursor with speed calculated using distance from cursor to player. Cursor close = slow Cursor far = fast (limited range) Enemy Controller The enemy behaviour uses: Max Speed Turn Speed Thrust Enemies rotate toward player using turning speed. Low-thrust enemies make wide turns, while high-thrust enemies make more accurate turns. Enemy velocity is capped with max speed. Asteroids Health scales with mass and ore. Mass also affects movement speed. Asteroids are assigned a direction when they spawn. Slowly corrects direction if pushed off course. Game Loop The current game loop: Main Menu Gameplay Death Screen Game Manager handles main logic. Mini Map Added after realizing asteroids are hard to find. Created using a secondary camera with a larger view. Camera follows the player and renders to a texture, displayed in UI. Asteroid Spawning Asteroids spawn from a list of spawn points spread across the map. Every ~25 seconds, chance to spawn at each point. Each asteroid has: A randomized size Random asteroid sprite Enemy Spawning Spawn points are attached to the player. Every ~5 seconds, a random spawn point is selected and an enemy bunch is spawned. Object Pooling Initially, every enemy and asteroid was created using Instantiate() , which caused lag. To solve this, I switched to object pooling. The object pool creates a collection of enemies and asteroids. When an object is needed, it is activated and moved into position. This improved overall performace. What’s Next? There’s still a lot left to make: Radiation Barrier Tools & Upgrades Ore Types More Spaceships Enemy Variants Pixel art Better UI Other stuff which I can’t think of This was a much larger devlog than usual, but since I have changed so much, I didn’t want to skip anything. Personally, I think the game is more fun than the earlier wrecking ball idea, and though the game is not finished, it still feels good to play. If you have any feedback or suggestions, I would really appreciate them. Thanks! (Note: Some parts might feel a bit weird since I had to shorten it to fit it in the character limit)
Thanks for Mining That! Devlog 2 for my Unity game So it’s been a few days since my last devlog, and I’ve been working on some of the art and also the inventory system. ㅤ For those who are new, I am making a game where you have no weapons, but you need to mine resources, so you use the groups of angry enemies that are chasing you to mine asteroids while also destroying themselves in the process. You can use tools to make it easier for enemies to help you mine. ㅤ I made the pixel art for the ores and the art for the player. Before, the player was more of a 2d triangular looking shape, but I changed it into a rocket. ㅤ The only ores I currently have are copper, iron and gold. Their art is not the best, but it works. I use Aseprite for the pixel art, and it takes quite some time for me to make each one because I rarely ever make pixel art games, so for me, the current state of the art is good enough. ㅤ I also made each asteroid show which ore it contains, so players can easily identify the asteroid that has the resource they need. I also made the asteroids deal a bit of damage to the player, calculated by the velocity and mass to make the game a bit more chaotic. ㅤ And yes, my game is meant to be chaotic, though I may make it a bit easier to prevent players from getting annoyed. I’ll probably lower the enemy move speed a bit, and keep the turn speed how it is. And now, let me talk about the Inventory/Crafting system. The system is still in progress, but I’ve gotten a basic framework for the inventory ready, so it’ll be easier to add crafting. I added a resources panel at the bottom, which shows total resources in the current run. The panel on the top right will be made invisible later, and is meant to give a message to the player that they got a specific resource. I also added a panel on the left, which will show the current tools, and how many the player has. ㅤ How Tools Will Work Tools can be used by the player to manipulate the environment, like a gravity orb, a repelling wave, etc. They are one-time consumables, though you can hold many of them. You need certain resources to craft them, so weaker tools will require copper, and better tools will require iron and gold. Usually multiple are crafted at a time, though some will be individual crafts. In the main menu, players can use coins(currency I have not implemented yet) to buy better tools, but they can only equip four at a time. What I have to add Below are a list of things I have to add to the game ㅤ Sounds (I currently have no sound effects at all) UI (The UI may be in pixel art, though I’m still unsure about that) Tools Crafting Finish Inventory Main Menu shop Coins Enemy types Enemy art Tool Icons Environmental Hazards: Black Holes, planets, etc. (Maybe?) Effects: Explosions, damage effects, etc Radioactive Zone art and functionality (The barrier surrounding the map) Overall Polish ㅤ So thats basically it for this devlog. I would really appreciate any feedback or suggestions, and below you can see a short video of me playing the game (and failing quite miserably).
Thanks for Mining That! Devlog 3 and 4 of my Unity Game It’s been more than two weeks since my last devlog. I was planning on posting devlog 3 a week back, but got sidetracked with my Frictionless mission project, and then forgot about it completely. So this is devlog 3 and 4 combined. ㅤ For those who are new, I am making a game where you have no weapons, but you need to mine resources, so you have to dodge enemies making them crash into asteroids, mining resources, and destroying themselves in the process. ㅤ The main things I worked on was the shop and the tools. Shop The shop is in the main menu, and you have to click a button called tools to make it show up. The game flow is the player plays the game, dies, uses coins to buy tools, and then plays the game again to try to survive longer. The shop took me a long time to figure out how I should actually do it. A lot of time I was just staring at the screen trying to figure out how I’m actually going to do it. Looking back, I probably should have planned it out on a piece of paper or something. Tools Currently I have 7 tools implemented. I still need to make all the art for them, but their functionality mostly works. Below is a list of my tools. Gravity Orb - An orb that creates a temporary gravity field pulling asteroids and enemies Pulse Wave - An orb that releases a wave in all directions pushing objects away. (I might scrap this tool, as it doesn’t look that good and is hard to use) Repulsion Orb - An orb that creates a temporary field that pushes asteroids and enemies away. Asteroid Lock - An orb that if hits an asteroid, will lock it in place temporarily. (This tool is not working for some reason, so I have to fix it) Grow Tool - An orb that when it hits an asteroid, will cause it to grow rapidly. (It can stack) Asteroid Forge - An orb that grows an asteroid Ship Decoy - An orb that shoots out a decoy that lures enemies away So currently, these are all the tools I have. I will probably not add any more, except for the final one. The final one will require all tools unlocked plus a large amount of coins. Coins I noticed that I hadn’t explained what coins really were in the past devlogs. Coins can be earned when enemies and asteroids are destroyed. Coins can be used to unlock tools in the shop after you die. UI I created some pixel art UI and was playing around with it. It’s still not done and doesn’t look very well, so after I make them a bit better I will add them to the game fully. Enemy Types I added another enemy type, and I also made some art for them. They’re really similar, and just have some difference with linear and turning speed. Environmental Hazards I decided not to add any environmental hazards because I just couldn’t figure out a way to make them not make the player mad. Black holes were too annoying, and planets were just asteroid without ores, so I didn’t add them. What I have to add Below are a list of things I have to add to the game ㅤ Sounds (No sound effects) UI (Making it look better) Tools (Polish, art, functionality, and the final one) Crafting (Works pretty well, some bugs) Finish Inventory (Just some bugs and polish) Main Menu shop (Bugs and polish) Tool Icons Effects: Explosions, damage effects, etc Radioactive Zone (Doesn’t do anything, but effects have been added) Overall Polish ㅤ So thats basically it for this combined devlog. There’s not too much I added because I was focusing on my Frictionless mission project which I recently shipped. The game should be done in less than a week (My initial goal when I started this game was June 15th) Thanks!
Thanks for Mining That! Devlog 5 of my Unity Game It’s been four days since my last devlog. Note: I had to redo the whole devlog because the site decided that if I post a devlog which is higher than the character count, it will get completely deleted! So my devlog may not be completely formatted very nicely. I have also lost 8 hours because I have two devlogs that are fourteen hours. I can atleast understand the second one since it was my fault I forgot to post a devlog, so I had to combine two devlogs. But the first devlog was before the announcement about the 10 hour limit. Anyways, back to the devlog ㅤ For those who are new, I am making a game where you have no weapons, but you need to mine resources, so you have to dodge enemies making them crash into asteroids, mining resources, and destroying themselves in the process. What I mainly worked on: Finishing tool functionality UI Title Pixel Art Bug-fixing Other stuff Tools I thought I had finished the functionality last devlog, but there were a few things to fix. The main one, was the Asteroid Forge, which took me like 3 hours to fix completely, and I had explained all the issues before my devlog got deleted, but I’m too tired to write it again a second time. UI I finished all my pixel art UI, and implemented it in game. It should look pretty good now. I had explained how I had created all of them, but it all got deleted. Title I made a title pixel art, look at screenshot to see part of it. I’m a bit of a perfectionist, so it took much longer than it needed to, and I’m still not satisfied with how it turned out. BUGS A LOT OF BUGS. Especially with the asteroid forge, and also some in inventory and other stuff. Other Stuff I decided to make my own music, which I’ve tried multiple times with no good results. I’m using JummBox, and it’s going not good. I also forgot to record it with Lapse, so lost an hour of my work, so nine hours total I’ve lost. I’ve also only finished 10 seconds of the background music, after an hour. I finished implementing the enemy type. Made four tool icons, three were pretty good, one wasn’t that good I also added some other stuff I can’t think of right now. What I have to add Below are a list of things I have to add to the game ㅤ Sounds & BG music UI Polish Tools art and polish Rest of the Tool Icons Effects Overall Polish So that’s it for this devlog. (Sorry about my repeated rants about the deletion, I’m just annoyed, especially with 8 hours not counting, and me forgetting to use Lapse to record me making music) Any feedback appreciated. Thanks!
Thanks for Mining That! Devlog 6 of my Unity Game It’s been more than a week since my last devlog. I’ve mostly been focused on fixing bugs, polishing, and some other stuff. For those who are new, I am making a very chaotic game where you have no weapons, but you need to mine resources, so you have to dodge enemies making them crash into asteroids, mining resources, and destroying themselves in the process. You can use tools to help you, but to craft tools, you need resources. I now have three Hackatime projects connected to this game. Before, I had two, one tracked my Unity time, and another tracked my coding time. Now, for some reason, after I built the game for the first time to test stuff out, a new project popped up that tracks my Unity time, and my old Hackatime project no longer tracks my Unity time. Doesn’t really make much sense. What I mainly worked on: Stats/End Screen Saving Sounds Black Hole Bug-fixing Other stuff Stats/End Screen I added an end screen to the game, where after you finish the game, it shows you all your stats, of the completed run, and all runs. You can click new run to create a new run, and play again. I’m pretty sure someone had suggested this in one of my older devlogs, and it sounded like a good idea. The hardest part of all of this was the saving. Saving This is my first game I implemented real saving to. I have made some games before where I had a small amount of saving, but this time I really tried. I created a whole another script called StatsManager which controls saving and the stats screen. It does not save your current game, and by that I mean if you were in the middle of playing, and leave, it does not resume where you left off. It just saves all your coins, tools, and other stats. Sounds I added some sound effects and also added the background music to my game. I still have to tweak some of the volumes since some sound effects are a bit too loud, but it’s good enough for now. Black Hole I don’t want to give away too much, but the black hole is the final tool, which you can only unlock after unlocking all other tools, and requires a lot of coins and takes a lot of resources to craft. It’s the tool before you finish the game. Bugs Quite a lot of bugs. I think I fixed most of them, but there are probably a few I didn’t notice. Other Stuff I finished making all the tool icons and their sprites in Aseprite. I added them to the game, but for some reason, they look much worse in the game than in Aseprite. Not blurry or anything like that, it just doesn’t feel right. But I don’t want to redo anything, so I just changed some stuff in the sprites and kept them how they were. I also finally added the radiation zone sprite, and the barrier now deals damage and pushes the player away. What I have to add Below are a list of things I have to add to the game ㅤ UI Polish (Sounds and animations) Tools polish (Effects, sounds) General Effects Overall Polish So that’s it for this devlog. Any feedback appreciated. The screenshot below shows all my tool icons and sprites I made. Thanks!
Thanks For Mining That! Devlog 7 of my Unity Game I’m finally DONE! So I’ve mostly been working on other stuff, like #alchemize, #breadboard, and #jame-gam, but I was finally able to finish my game. You can try the game out here: Thanks for Mining That It’s a web build, so no download necessary. I didn’t really need to do much. I just did some small changes, some bug fixes, and I don’t really remember what else. So yeah, that’s it for this devlog. Hopefully it gets accepted since I want a 3d printer. But yeah, thanks!
Ships:
I made a game called Thanks For Mining That. — SUMMARY — Thanks for Mining That is a 2d game where you are in space and have to mine resources, but you have no mining tools. So you lure the enemies to hit the asteroids so they mine resources and destroy themselves in the process. — LINKS — Itch.io page: https://starcoder.itch.io/thanks-for-mining-that Github: https://github.com/StarCoder369/Thanks-for-Mining-That- It is a web build, so no need to download anything. — CHALLENGES — Here are some challenges I faced. When I first started this game, it was completely different. It was about a spaceship with a wrecking ball, which you had to use to mine resources and destroy enemies. The idea had potential, but it was too difficult to implement it in a way that would be fun for the player, so I scrapped it and pivoted ideas. There were a lot of problems with optimization. I was able to make it better, even though it still isn’t completely smooth, it’s much better. I used object pooling for this, so instead of enemies and asteroids being spawned each time, they just enable and disable. I faced a lot of problems with the music, since I’m not a music guy. I’ve tried to make music before, but it never turns out good. This time, I think it turned out pretty well. I used JummBox (a different version of BeepBox). Another challenge I faced was knowing when to stop. I have a lot of ideas to add to this, but I realized that if I did all of it, it would be a waste of time. All the ideas I have for the game won’t help me learn anything. That’s why I have been doing so many other ysws events, which is also why there is such a big gap between my second-last and last devlog. That’s basically it. I had a lot of fun making the game, and hopefully it’s going to be accepted! Thank you!...
|
1793000957.497481
|
1793087357.497481
|
|
22612
|
RC car by @Sked | Stardance
|
Sked
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-29T21:57:08Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made my own RC car in 1/10 scale because i always wanted one! When i was younger I always liked the idea of vehicles that you can control yourself So i decided to built one. I knew that this is going to be hard because this is my very first project like this and i was ready. It was really hard to start because i didnt know where and how. I used only to find good electronics and hardware for this project. I was deeply inspired by Robak 2 project. I took some ideas from it but every 3d model was made by me. I am very proud of myself because at the start i thought that i am not going to finish this project but i actually did. When i started building it i didn’t know about StarDance so i was building it for myself but now i released all 3D CAD files. It will be very hard to understand and built this car. I know that there is a lot of things that you can modify to make it better but for now i think its fine. I had a lot of fun building this RC car", "repo": "https://github.com/Sked777/RC-car-", "demo": ""}]...
|
[{"post_id": 75338, "ts": "202 [{"post_id": 75338, "ts": "2026-09-29T19:39:10Z", "hours": 10.6006, "text": "I am actually finishing this project. This is the last devlog. I finally printed the body and assembled it."}, {"post_id": 73990, "ts": "2026-09-26T14:07:47Z", "hours": 12.8336, "text": "This car needs a lot of work. one day everything broke and i spent like a week reprinting and reassembling everything. Also differentials were leaking so i took them apart, cleaned everything and reassembled"}, {"post_id": 69735, "ts": "2026-09-17T17:51:13Z", "hours": 10.0503, "text": "still working on the car. fixing a lot of things"}, {"post_id": 65335, "ts": "2026-09-10T12:41:51Z", "hours": 9.7836, "text": "I made it work but it keeps breaking, so Im constantly changing and reprinting a lot of parts. The battery is now fixed in place. I still Dont know what kind of body to give it"}, {"post_id": 59479, "ts": "2026-09-01T10:48:26Z", "hours": 11.0289, "text": "still working on my RC car! soon finishing it but i lost some parts and now im waiting for new ones and also i finally figured out suspension."}, {"post_id": 19577, "ts": "2026-06-30T22:24:11Z", "hours": 1.3336, "text": "I keep working on my car Today i did lower rear arm and it has holes for mounting shocks It will be a double wishbone suspension"}, {"post_id": 17888, "ts": "2026-06-28T20:30:44Z", "hours": 0.8167, "text": "Today i did an upper suspension arm for my RC car cant wait to complete this project and finally drive it"}, {"post_id": 17201, "ts": "2026-06-27T22:12:20Z", "hours": 1.2503, "text": "I am making my own RC car in approximately 1/10 scale i did base of the car before i found out of the Stardance challenge but now i am making rest of the car Today i started making wheel hubs and soon will be making suspension arms"}]...
|
Title: RC car by @Sked | Stardance
Devlogs:
I am Title: RC car by @Sked | Stardance
Devlogs:
I am making my own RC car in approximately 1/10 scale i did base of the car before i found out of the Stardance challenge but now i am making rest of the car Today i started making wheel hubs and soon will be making suspension arms
Today i did an upper suspension arm for my RC car cant wait to complete this project and finally drive it
I keep working on my car Today i did lower rear arm and it has holes for mounting shocks It will be a double wishbone suspension
still working on my RC car! soon finishing it but i lost some parts and now im waiting for new ones and also i finally figured out suspension.
I made it work but it keeps breaking, so Im constantly changing and reprinting a lot of parts. The battery is now fixed in place. I still Dont know what kind of body to give it
still working on the car. fixing a lot of things
This car needs a lot of work. one day everything broke and i spent like a week reprinting and reassembling everything. Also differentials were leaking so i took them apart, cleaned everything and reassembled
I am actually finishing this project. This is the last devlog. I finally printed the body and assembled it.
Ships:
I made my own RC car in 1/10 scale because i always wanted one! When i was younger I always liked the idea of vehicles that you can control yourself So i decided to built one. I knew that this is going to be hard because this is my very first project like this and i was ready. It was really hard to start because i didnt know where and how. I used only to find good electronics and hardware for this project. I was deeply inspired by Robak 2 project. I took some ideas from it but every 3d model was made by me. I am very proud of myself because at the start i thought that i am not going to finish this project but i actually did. When i started building it i didn’t know about StarDance so i was building it for myself but now i released all 3D CAD files. It will be very hard to understand and built this car. I know that there is a lot of things that you can modify to make it better but for now i think its fine. I had a lot of fun building this RC car...
|
1793004850.6856081
|
1793091250.6856081
|
|
36248
|
Minamo by @yearcakes | Stardance
|
yearcakes
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-19T09:24:33Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "This is my first time creating an S3-compatible storage gateway, and I am very excited to publish this ship. The idea of creating Minamo came when I was calculating the cost of my AI chat application. I found that even with only 10 users, it would cost around 1 USD/month just to store their attachments, and these attachments would go cold after only being used once, but I would still have to pay for them at a high price (as S3 storage was designed to store hot data). Then I was wondering, what if I could develop an app that automatically moves cold data from my S3 bucket to my OneDrive? And after some consideration, I decided to make an S3 storage gateway. This is why Minamo came to be. Although Minamo isn’t good enough yet, my semester started on August 31st, but I will keep maintaining Minamo! Thanks, and I hope you all like my project!", "repo": "https://github.com/zhaozhuoran/minamo", "demo": "https://github.com/zhaozhuoran/minamo/blob/main/DEMO.md"}]...
|
[{"post_id": 68645, "ts": "202 [{"post_id": 68645, "ts": "2026-09-15T13:41:04Z", "hours": 4.3192, "text": "Sorry for the late update! As my new semester started on August 31st, I won’t have much time to work on Minamo for the time being. In this commit, I’ve added support for the Hack Club CDN and fixed many bugs and security issues. Hope you all enjoy Minamo! Commit"}, {"post_id": 39897, "ts": "2026-08-03T05:52:16Z", "hours": 6.9842, "text": "I found a few issues in the code, including thread safety bugs, race conditions (which could even corrupt the database), and some resource leaks. So most of my current work has been fixing those. After that, I’m planning to add HackClub CDN as a storage backend and edit it to my new dynamic storage backend loading system. ps writing the code is fun, but honestly I think designing the architecture is even more fun. I’ve learned a ton from it, so I’d recommend trying it if you get the chance. If anyone has ideas or feedback on my project architecture, I’d love to hear them!"}, {"post_id": 37500, "ts": "2026-07-30T09:11:35Z", "hours": 6.6803, "text": "Devlog #6: Introducing Hierarchical Storage Management (HSM) and R2 Support Over the past day, I have been working on a major redesign of Minamo’s storage architecture. From Single Storage to Multi-Tier Storage Minamo now supports configurable storage tiers, including: Hot tier (tier 0) Warm tier (tier 1) Cold tier (tier 2) Minamo can automatically manage data movement between tiers based on configurable policies. New Storage Management Architecture To support this, I introduced several new components: StorageManager Instead of directly interacting with a specific backend, object operations are now managed by StorageManager, which decides: Where new objects should be written Which tier should serve read requests When objects should be migrated Cloudflare R2 Backend Minamo now includes a native Cloudflare R2 backend. This enables using R2 as one of the storage tiers. Background Migration and Storage Optimization A new HsmScheduler was added to handle background tasks: Tier migration Storage eviction Periodic heat score calculation To make these decisions smarter, Minamo now records access patterns through a dedicated access_logs.db. This allows Minamo to gradually evolve from rule-based storage movement toward more intelligent storage scheduling. What’s Next The next development direction will focus on improving compatibility and expanding storage backend options. Planned tasks: Add Hack Club CDN support as a new storage backend Improve configuration documentation and examples Continue improving HSM scheduling algorithms Minamo is gradually becoming a more complete storage management system. There is still a long way to go! Commit"}, {"post_id": 36991, "ts": "2026-07-29T13:13:45Z", "hours": 3.9844, "text": "Devlog #5: Why is it called Minamo? Someone recently asked me whether Minamo was named after Mixamo. It actually wasn’t, but I realized I had never shared where the name came from, so here’s the story. Minamo is derived from the Japanese word みなも (水面, minamo) , meaning “the surface of the water.” The idea behind this name comes from the relationship between the surface and what lies beneath it. From above, the surface of a lake appears simple, calm, and clear. However, beneath that surface exists a much more complex world that is hidden from view. This is also the philosophy behind Minamo. For clients, Minamo provides a simple and consistent S3-compatible interface — just like a calm water surface that is easy to interact with. Behind that interface, Minamo handles the complexity of storage systems, including different storage backends, tiering, caching, and data management. Minamo aims to keep the surface simple while allowing the complexity underneath to remain invisible, creating a clean and reliable experience for clients."}, {"post_id": 36885, "ts": "2026-07-29T08:17:04Z", "hours": 2.3642, "text": "I’m currently adding Cloudflare R2 support to Minamo, and I was wondering: what if I also added Hack Club CDN as an optional backend? Since it offers free storage, it could be a pretty cool addition. What do you all think? Would love to get some feedback!"}, {"post_id": 36847, "ts": "2026-07-29T05:11:18Z", "hours": 7.6664, "text": "Devlog #4: Layered Config, HTTP Range & Multi-Backend Foundations Over the past couple of days, I’ve been working on one of the biggest refactors since Minamo entered its MVP stage. This update introduces a layered configuration system, HTTP Range support for S3-compatible downloads, a redesigned CLI, and a cleaner runtime state architecture. To keep the project moving forward, I ended up working on Minamo almost everywhere I could — on my desktop, in GitHub Codespaces, through remote SSH sessions on a Linux server, and even from GitHub Mobile whenever I had a few spare minutes. Unfortunately, development time spent through remote SSH sessions and GitHub Mobile isn’t tracked by Hackatime, so those hours don’t appear in my statistics. Also, because this refactor involved lots of experimentation and incremental changes, I squashed many small commits into a single clean commit before pushing. The history is much cleaner now, even though it hides quite a bit of the work that went into this update. Highlights Layered Configuration System The previous environment-variable-only configuration has been replaced with a layered configuration system: CLI arguments ↓ Environment variables ↓ TOML configuration files This makes deployments much more flexible while still allowing temporary overrides from the command line. The refactor also introduces: ConfigManager Automatic configuration scaffolding config.example/ templates HTTP Range Support Minamo now supports HTTP Range requests for S3-compatible downloads. Clients such as rclone and the AWS CLI can now download only the required portions of large objects instead of fetching entire files. Supported formats include: bytes=start-end bytes=start- bytes=-suffix The implementation correctly returns 206 Partial Content , Content-Range , Accept-Ranges , and proper 416 Range Not Satisfiable responses. CLI & Runtime State The CLI has been redesigned around subcommands: minamo init minamo run Runtime-generated state has also been separated from user configuration, making deployments cleaner and preparing the project for future storage backends. What’s Next? The next milestone is adding additional storage backends. Current roadmap: Layered Storage Scheduling Alongside new storage backends, I’m also redesigning Minamo’s storage scheduling architecture. The long-term goal is to support a layered storage model, where frequently accessed (“hot”) data stays on fast local storage while less frequently accessed (“cold”) data can be transparently moved to lower-cost backends such as OneDrive. Since Minamo hasn’t seen production workloads yet, this design is still largely based on theoretical considerations rather than operational experience. I fully expect it to evolve as the project matures and real-world usage reveals better trade-offs. Cloudflare R2 This will likely be the first backend after the local filesystem. Cloudflare R2 is surprisingly developer-friendly: it only requires a credit card for verification, includes 10 GB of free storage , and charges no egress fees . For many personal and small projects, I think it’s one of the best object storage services available. Microsoft OneDrive After R2, I plan to implement a OneDrive backend. I wouldn’t recommend using a personal OneDrive account as production object storage. It isn’t designed for that, can be less reliable, and is relatively easy to hit rate limits (HTTP 429). However, for personal projects or storing infrequently accessed “cold” data, it’s an incredibly cost-effective option and fits Minamo’s planned hot/cold storage architecture quite well. Commit"}, {"post_id": 35731, "ts": "2026-07-27T11:08:48Z", "hours": 8.8006, "text": "Devlog #3: Designing a New Configuration System I am currently working on gradually refactoring Minamo’s configuration system. Previously, Minamo relied mainly on MINAMO_* environment variables for configuration. As more features and storage backends are introduced, this approach becomes increasingly difficult to maintain and does not clearly separate normal configuration from sensitive information. The new design will move towards a TOML based configuration system. Configurations will be split into multiple .toml files. This keeps the configuration structure clearer. I chose TOML because it is easier to represent options and allows users to directly review and edit their configuration. Configuration files will be ignored by git and initialized from config.example/ on the first run, ensuring that users have a clear starting point without accidentally committing private information. I am also implementing a new ConfigManager to unify configuration loading, with the following precedence: CLI arguments > ENV variables > CONFIG files This keeps the flexibility of temporary overrides while providing a stable configuration system for deployments. These changes are still being gradually implemented and have not been released yet. The goal is to make Minamo’s architecture more suitable for long-term usage and easier to extend in the future."}, {"post_id": 35142, "ts": "2026-07-26T11:49:45Z", "hours": 9.8706, "text": "Devlog #2: Local Disk MVP Complete Today marks an important milestone for Minamo , the Local Disk MVP is now complete. The first goal of this project was never to build a full storage platform overnight. Instead, I wanted to establish a solid foundation: a correct, well-structured, and S3-compatible server with clean separation between the API, service, metadata, and storage layers. With the MVP completed, Minamo now supports: S3-compatible object and bucket operations Multipart uploads Presigned URLs AWS Signature Version 4 (header & query authentication) AWS-chunked streaming uploads A pluggable storage backend architecture, with Local Disk as the first implementation Compatibility has also been continuously validated against the official AWS SDK, giving me confidence that the foundation is ready for what’s next. That said, this is only the beginning . The original vision for Minamo has always been much larger than a local storage server. The next stages will focus on turning Minamo into an intelligent storage gateway capable of routing data across multiple storage providers, automatically managing hot and cold data, introducing caching, and making storage both more efficient and more affordable. There’s still a long road ahead. Thanks to everyone following the project so far. More exciting updates are coming soon! Commit"}, {"post_id": 33931, "ts": "2026-07-24T07:44:51Z", "hours": 7.4603, "text": "Devlog #1: Building Minamo I’m excited to share the very first development update for Minamo . Minamo is an S3-compatible storage gateway designed to reduce storage costs while remaining fully compatible with existing S3 clients. The long-term goal is to intelligently manage object placement, keeping frequently accessed data on fast storage while transparently moving cold data to lower-cost storage. The project is currently about 50% complete. Why Minamo? The idea came from developing my AI chat application, Arona Chat . While building its attachment system, I noticed that most uploaded files are accessed frequently for only the first few days before becoming “cold” data. They still need to be retained, but keeping everything on expensive hot storage unnecessarily increases operating costs. That led to a simple question: What if an S3-compatible gateway could automatically keep hot data on fast storage while moving cold data to lower-cost storage? That’s how Minamo began. Development Strategy Rather than building the complete multi-tier storage system from the beginning, I’m developing Minamo in stages. The first milestone is a Local Disk-only MVP , focusing on implementing a correct S3-compatible server before introducing additional storage providers. To make future expansion straightforward, the project already adopts a layered architecture: HTTP / S3 API Layer (FastAPI) — request handling, XML responses, AWS Signature Version 4 verification S3 Service Layer — business logic and S3 error mapping Metadata Layer — provider-independent SQLite metadata Storage Backend Interface — pluggable abstraction with a Local Disk backend for the MVP This separation allows future storage backends to be added with minimal changes. Current Progress (~50%) The MVP is actively under development. Implemented so far: PutObject / GetObject / DeleteObject / HeadObject ListObjectsV2 (prefix, delimiter, pagination) Bucket operations Multipart Upload Presigned URLs AWS Signature Version 4 (header & query authentication) AWS-chunked streaming uploads Compatibility is continuously verified against the official AWS SDK, with 22 boto3 compatibility tests currently passing against a live server . The remaining work mainly focuses on completing the MVP and polishing compatibility before introducing additional storage providers. Looking Ahead Alongside finishing the Local Disk MVP, I’m designing Minamo’s future storage orchestration system. The long-term vision is an intelligent storage gateway capable of automatically managing data across multiple storage tiers, including high-performance local storage, cache layers, and low-cost cold storage, while remaining fully compatible with the S3 API. Hopefully Minamo can help make self-hosted object storage both more affordable and more efficient . Thanks for reading! If you’re interested in the project, feel free to follow the project. I’ll share another devlog once the Local Disk MVP is complete and development moves into the multi-storage stage."}]...
|
Title: Minamo by @yearcakes | Stardance
Devlogs:
Title: Minamo by @yearcakes | Stardance
Devlogs:
Devlog #1: Building Minamo I’m excited to share the very first development update for Minamo . Minamo is an S3-compatible storage gateway designed to reduce storage costs while remaining fully compatible with existing S3 clients. The long-term goal is to intelligently manage object placement, keeping frequently accessed data on fast storage while transparently moving cold data to lower-cost storage. The project is currently about 50% complete. Why Minamo? The idea came from developing my AI chat application, Arona Chat . While building its attachment system, I noticed that most uploaded files are accessed frequently for only the first few days before becoming “cold” data. They still need to be retained, but keeping everything on expensive hot storage unnecessarily increases operating costs. That led to a simple question: What if an S3-compatible gateway could automatically keep hot data on fast storage while moving cold data to lower-cost storage? That’s how Minamo began. Development Strategy Rather than building the complete multi-tier storage system from the beginning, I’m developing Minamo in stages. The first milestone is a Local Disk-only MVP , focusing on implementing a correct S3-compatible server before introducing additional storage providers. To make future expansion straightforward, the project already adopts a layered architecture: HTTP / S3 API Layer (FastAPI) — request handling, XML responses, AWS Signature Version 4 verification S3 Service Layer — business logic and S3 error mapping Metadata Layer — provider-independent SQLite metadata Storage Backend Interface — pluggable abstraction with a Local Disk backend for the MVP This separation allows future storage backends to be added with minimal changes. Current Progress (~50%) The MVP is actively under development. Implemented so far: PutObject / GetObject / DeleteObject / HeadObject ListObjectsV2 (prefix, delimiter, pagination) Bucket operations Multipart Upload Presigned URLs AWS Signature Version 4 (header & query authentication) AWS-chunked streaming uploads Compatibility is continuously verified against the official AWS SDK, with 22 boto3 compatibility tests currently passing against a live server . The remaining work mainly focuses on completing the MVP and polishing compatibility before introducing additional storage providers. Looking Ahead Alongside finishing the Local Disk MVP, I’m designing Minamo’s future storage orchestration system. The long-term vision is an intelligent storage gateway capable of automatically managing data across multiple storage tiers, including high-performance local storage, cache layers, and low-cost cold storage, while remaining fully compatible with the S3 API. Hopefully Minamo can help make self-hosted object storage both more affordable and more efficient . Thanks for reading! If you’re interested in the project, feel free to follow the project. I’ll share another devlog once the Local Disk MVP is complete and development moves into the multi-storage stage.
Devlog #2: Local Disk MVP Complete Today marks an important milestone for Minamo , the Local Disk MVP is now complete. The first goal of this project was never to build a full storage platform overnight. Instead, I wanted to establish a solid foundation: a correct, well-structured, and S3-compatible server with clean separation between the API, service, metadata, and storage layers. With the MVP completed, Minamo now supports: S3-compatible object and bucket operations Multipart uploads Presigned URLs AWS Signature Version 4 (header & query authentication) AWS-chunked streaming uploads A pluggable storage backend architecture, with Local Disk as the first implementation Compatibility has also been continuously validated against the official AWS SDK, giving me confidence that the foundation is ready for what’s next. That said, this is only the beginning . The original vision for Minamo has always been much larger than a local storage server. The next stages will focus on turning Minamo into an intelligent storage gateway capable of routing data across multiple storage providers, automatically managing hot and cold data, introducing caching, and making storage both more efficient and more affordable. There’s still a long road ahead. Thanks to everyone following the project so far. More exciting updates are coming soon! Commit
Devlog #3: Designing a New Configuration System I am currently working on gradually refactoring Minamo’s configuration system. Previously, Minamo relied mainly on MINAMO_* environment variables for configuration. As more features and storage backends are introduced, this approach becomes increasingly difficult to maintain and does not clearly separate normal configuration from sensitive information. The new design will move towards a TOML based configuration system. Configurations will be split into multiple .toml files. This keeps the configuration structure clearer. I chose TOML because it is easier to represent options and allows users to directly review and edit their configuration. Configuration files will be ignored by git and initialized from config.example/ on the first run, ensuring that users have a clear starting point without accidentally committing private information. I am also implementing a new ConfigManager to unify configuration loading, with the following precedence: CLI arguments > ENV variables > CONFIG files This keeps the flexibility of temporary overrides while providing a stable configuration system for deployments. These changes are still being gradually implemented and have not been released yet. The goal is to make Minamo’s architecture more suitable for long-term usage and easier to extend in the future.
Devlog #4: Layered Config, HTTP Range & Multi-Backend Foundations Over the past couple of days, I’ve been working on one of the biggest refactors since Minamo entered its MVP stage. This update introduces a layered configuration system, HTTP Range support for S3-compatible downloads, a redesigned CLI, and a cleaner runtime state architecture. To keep the project moving forward, I ended up working on Minamo almost everywhere I could — on my desktop, in GitHub Codespaces, through remote SSH sessions on a Linux server, and even from GitHub Mobile whenever I had a few spare minutes. Unfortunately, development time spent through remote SSH sessions and GitHub Mobile isn’t tracked by Hackatime, so those hours don’t appear in my statistics. Also, because this refactor involved lots of experimentation and incremental changes, I squashed many small commits into a single clean commit before pushing. The history is much cleaner now, even though it hides quite a bit of the work that went into this update. Highlights Layered Configuration System The previous environment-variable-only configuration has been replaced with a layered configuration system: CLI arguments ↓ Environment variables ↓ TOML configuration files This makes deployments much more flexible while still allowing temporary overrides from the command line. The refactor also introduces: ConfigManager Automatic configuration scaffolding config.example/ templates HTTP Range Support Minamo now supports HTTP Range requests for S3-compatible downloads. Clients such as rclone and the AWS CLI can now download only the required portions of large objects instead of fetching entire files. Supported formats include: bytes=start-end bytes=start- bytes=-suffix The implementation correctly returns 206 Partial Content , Content-Range , Accept-Ranges , and proper 416 Range Not Satisfiable responses. CLI & Runtime State The CLI has been redesigned around subcommands: minamo init minamo run Runtime-generated state has also been separated from user configuration, making deployments cleaner and preparing the project for future storage backends. What’s Next? The next milestone is adding additional storage backends. Current roadmap: Layered Storage Scheduling Alongside new storage backends, I’m also redesigning Minamo’s storage scheduling architecture. The long-term goal is to support a layered storage model, where frequently accessed (“hot”) data stays on fast local storage while less frequently accessed (“cold”) data can be transparently moved to lower-cost backends such as OneDrive. Since Minamo hasn’t seen production workloads yet, this design is still largely based on theoretical considerations rather than operational experience. I fully expect it to evolve as the project matures and real-world usage reveals better trade-offs. Cloudflare R2 This will likely be the first backend after the local filesystem. Cloudflare R2 is surprisingly developer-friendly: it only requires a credit card for verification, includes 10 GB of free storage , and charges no egress fees . For many personal and small projects, I think it’s one of the best object storage services available. Microsoft OneDrive After R2, I plan to implement a OneDrive backend. I wouldn’t recommend using a personal OneDrive account as production object storage. It isn’t designed for that, can be less reliable, and is relatively easy to hit rate limits (HTTP 429). However, for personal projects or storing infrequently accessed “cold” data, it’s an incredibly cost-effective option and fits Minamo’s planned hot/cold storage architecture quite well. Commit
I’m currently adding Cloudflare R2 support to Minamo, and I was wondering: what if I also added Hack Club CDN as an optional backend? Since it offers free storage, it could be a pretty cool addition. What do you all think? Would love to get some feedback!
Devlog #5: Why is it called Minamo? Someone recently asked me whether Minamo was named after Mixamo. It actually wasn’t, but I realized I had never shared where the name came from, so here’s the story. Minamo is derived from the Japanese word みなも (水面, minamo) , meaning “the surface of the water.” The idea behind this name comes from the relationship between the surface and what lies beneath it. From above, the surface of a lake appears simple, calm, and clear. However, beneath that surface exists a much more complex world that is hidden from view. This is also the philosophy behind Minamo. For clients, Minamo provides a simple and consistent S3-compatible interface — just like a calm water surface that is easy to interact with. Behind that interface, Minamo handles the complexity of storage systems, including different storage backends, tiering, caching, and data management. Minamo aims to keep the surface simple while allowing the complexity underneath to remain invisible, creating a clean and reliable experience for clients.
Devlog #6: Introducing Hierarchical Storage Management (HSM) and R2 Support Over the past day, I have been working on a major redesign of Minamo’s storage architecture. From Single Storage to Multi-Tier Storage Minamo now supports configurable storage tiers, including: Hot tier (tier 0) Warm tier (tier 1) Cold tier (tier 2) Minamo can automatically manage data movement between tiers based on configurable policies. New Storage Management Architecture To support this, I introduced several new components: StorageManager Instead of directly interacting with a specific backend, object operations are now managed by StorageManager, which decides: Where new objects should be written Which tier should serve read requests When objects should be migrated Cloudflare R2 Backend Minamo now includes a native Cloudflare R2 backend. This enables using R2 as one of the storage tiers. Background Migration and Storage Optimization A new HsmScheduler was added to handle background tasks: Tier migration Storage eviction Periodic heat score calculation To make these decisions smarter, Minamo now records access patterns through a dedicated access_logs.db. This allows Minamo to gradually evolve from rule-based storage movement toward more intelligent storage scheduling. What’s Next The next development direction will focus on improving compatibility and expanding storage backend options. Planned tasks: Add Hack Club CDN support as a new storage backend Improve configuration documentation and examples Continue improving HSM scheduling algorithms Minamo is gradually becoming a more complete storage management system. There is still a long way to go! Commit
I found a few issues in the code, including thread safety bugs, race conditions (which could even corrupt the database), and some resource leaks. So most of my current work has been fixing those. After that, I’m planning to add HackClub CDN as a storage backend and edit it to my new dynamic storage backend loading system. ps writing the code is fun, but honestly I think designing the architecture is even more fun. I’ve learned a ton from it, so I’d recommend trying it if you get the chance. If anyone has ideas or feedback on my project architecture, I’d love to hear them!
Sorry for the late update! As my new semester started on August 31st, I won’t have much time to work on Minamo for the time being. In this commit, I’ve added support for the Hack Club CDN and fixed many bugs and security issues. Hope you all enjoy Minamo! Commit
Ships:
This is my first time creating an S3-compatible storage gateway, and I am very excited to publish this ship. The idea of creating Minamo came when I was calculating the cost of my AI chat application. I found that even with only 10 users, it would cost around 1 USD/month just to store their attachments, and these attachments would go cold after only being used once, but I would still have to pay for them at a high price (as S3 storage was designed to store hot data). Then I was wondering, what if I could develop an app that automatically moves cold data from my S3 bucket to my OneDrive? And after some consideration, I decided to make an S3 storage gateway. This is why Minamo came to be. Although Minamo isn’t good enough yet, my semester started on August 31st, but I will keep maintaining Minamo! Thanks, and I hope you all like my project!...
|
1793004630.1240275
|
1793091030.1240275
|
|
36815
|
Samourai-On-A-Budget by @barseghian_daniel | Stard Samourai-On-A-Budget by @barseghian_daniel | Stardance...
|
barseghian_daniel
|
1
|
58.0
|
862
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-17T21:30:35Z", "hours": 58.0, "multiplier": 14.91, "payout": 862, "blessing": "neutral", "text": "I made a Unity game after 3 years! I really loved relearning C# and Unity. The hardest part was designing, I HAD SO MUCH PAIN, I suck at 3D modeling and making good maps, but I went through a lot of effort and time to make an acceptable map. You can directly try the project in the web or download it for Windows/Mac/Linux in the GitHub release! You can read the Gameplay section of the README if you are lost!", "repo": "https://github.com/danielbarseghian/Kill-The-Monkey", "demo": "https://play.unity.com/en/games/8dd04e48-e69a-4a05-9a92-8c9d7a5b3e64/kill-the-monkey"}]...
|
[{"post_id": 49208, "ts": "202 [{"post_id": 49208, "ts": "2026-08-17T21:19:23Z", "hours": 0.9833, "text": "README IS DONE i feel kinda sad but happy at the same time that its finishing.."}, {"post_id": 48991, "ts": "2026-08-17T16:10:14Z", "hours": 1.6167, "text": "Its on the web ! you can try it out here"}, {"post_id": 48878, "ts": "2026-08-17T13:23:40Z", "hours": 4.9692, "text": "ITS REALEAAAAAASED i did alot of small adjustmenets for release check it out here . Its tested for windows and linux, unfortantly i don’t own any mac devices."}, {"post_id": 47756, "ts": "2026-08-15T21:51:34Z", "hours": 0.8167, "text": "Made Start menu is this a W menu? i worked really hard on the background. btw the quit button moves every 1.5 secondes so its harder to quit :)"}, {"post_id": 47595, "ts": "2026-08-15T16:12:36Z", "hours": 1.0767, "text": "10 humans vs 1 monkey We can finally know who will win 10 humans vs 1 monkey (but the monkey doesn’t attack…) i wonder who will win!"}, {"post_id": 47507, "ts": "2026-08-15T13:48:03Z", "hours": 6.0758, "text": "Why the game is so ugly I CAN’T MODEL, my designing skills are soooo bad and let’s not talk about modeling….. But i still took a lot of time and effort to make an “ ok ” map, it may be ugly, but its the best i could! please don’t try to understand the storyline…."}, {"post_id": 46548, "ts": "2026-08-13T21:10:58Z", "hours": 1.5986, "text": "Full level 2 implementation and transition between levels and heart system with vulnarability! I added a heart system with a 10s vulnability each time you get heart! The level 2 is kinda hard (even as a pro gamer) Added transition between the levels when you reach the end :)"}, {"post_id": 46224, "ts": "2026-08-13T09:43:58Z", "hours": 2.9506, "text": "IM BACKKKKKKKK i reinstalled windows, repasted graphics card (dropped 30°C), in the past week. Look at all this dust, no wonder why it was overheating…"}, {"post_id": 42160, "ts": "2026-08-06T19:23:13Z", "hours": 3.3222, "text": "Deleted it all yes i said hey free 16gb on my pc and minutes later realized the big mistake…"}, {"post_id": 40411, "ts": "2026-08-03T21:48:54Z", "hours": 1.0839, "text": "Added buch of things Now when you parry the bullet will reverse and go where you look. Added sword swing sound effect & Started making level 2!"}, {"post_id": 40366, "ts": "2026-08-03T20:32:51Z", "hours": 0.4014, "text": "Added the music"}, {"post_id": 40128, "ts": "2026-08-03T15:05:15Z", "hours": 1.15, "text": "Monkey dancing Gangnam Style before GTA 6 ?? It took 1h30, was it worth it? Absolutly."}, {"post_id": 40083, "ts": "2026-08-03T13:53:20Z", "hours": 0.8836, "text": "Level 1 is now working it may be bad but i put alot of effort on this one :)"}, {"post_id": 39166, "ts": "2026-08-01T22:18:53Z", "hours": 1.3286, "text": "MADE MY FIRST MODEL it may be ugly, but I MADE IT"}, {"post_id": 39121, "ts": "2026-08-01T20:33:13Z", "hours": 2.2506, "text": "Going to keep the basic model I find the basic model, he has mega aura so im going to keep it (and it helps with performance!)"}, {"post_id": 37620, "ts": "2026-07-30T14:12:46Z", "hours": 6.0686, "text": "Yes didn’t know animations were that hard"}, {"post_id": 35796, "ts": "2026-07-27T13:45:30Z", "hours": 1.3506, "text": "Made Parrying you can now parry and i added a sound effect! What is so fun about making a game is that you can do anything with it like i made an enemy shoot infinity and it created this cool effect!"}, {"post_id": 35458, "ts": "2026-07-26T21:54:16Z", "hours": 0.7667, "text": "Migrated to windows My pc was overheating on linux since my fan sensors weren’t working on linux, and now i use Direct X12 and not OpenGL 4.5 . I don’t know if i should be happy or sad."}, {"post_id": 34837, "ts": "2026-07-25T21:06:13Z", "hours": 1.55, "text": "Made Katana and Enemies ! Now if your in distance enemies will shoot you and you can attack them by left clicking when you are close. Next I’m going to implement parrying!"}, {"post_id": 34780, "ts": "2026-07-25T19:28:20Z", "hours": 1.1, "text": "PC overheating…. So my pc overheights since im on linux and they don’t have my motherboard drivers so my fans don’t work si my gpu overheats! I can’t switch to windows where fans are working normally :("}, {"post_id": 34694, "ts": "2026-07-25T16:51:32Z", "hours": 1.4889, "text": "Im not really having fun… So i’ve been folowing tutorials for movement and i wasn’t having fun and quickly get distracted so i just made a fun parcour with a boucing mechanic (myself btw). The 360 at the end was so sick!"}, {"post_id": 34646, "ts": "2026-07-25T15:22:20Z", "hours": 1.5272, "text": "Dear NVIDIA… 3 times, i reinstalled debian 3 times because of the stupid drivers, one time it just didn’t work then got it working but secure boot coudn’t be enabled. But it was all worth it :)"}, {"post_id": 34110, "ts": "2026-07-24T16:23:11Z", "hours": 5.1444, "text": "Made sliding mechanic So you can Slide now there is a cooldown of 1.25 seconds so its not OP!"}, {"post_id": 32872, "ts": "2026-07-22T09:56:56Z", "hours": 2.1167, "text": "Finally finished the movment I finished basic movement and Added sprinting!"}, {"post_id": 32380, "ts": "2026-07-21T14:52:56Z", "hours": 4.5417, "text": "Made basic movement So you can move and jump now ! jumping still needs a bit of adjustment."}, {"post_id": 30935, "ts": "2026-07-18T22:47:32Z", "hours": 1.6833, "text": "WHY IS IT SOOOOO COMPLICATED First, I installed it on Omarchy , but I had problems since it’s not officially supported. Then I installed Debian , which took way longer than expected. I also tried it on Windows , but Lapse and Lookout didn’t work :( Now back on Debian , I’m getting some artifacting bugs, but it’s usable :D"}]...
|
Title: Samourai-On-A-Budget by @barseghian_daniel Title: Samourai-On-A-Budget by @barseghian_daniel | Stardance
Devlogs:
WHY IS IT SOOOOO COMPLICATED First, I installed it on Omarchy , but I had problems since it’s not officially supported. Then I installed Debian , which took way longer than expected. I also tried it on Windows , but Lapse and Lookout didn’t work :( Now back on Debian , I’m getting some artifacting bugs, but it’s usable :D
Made basic movement So you can move and jump now ! jumping still needs a bit of adjustment.
Finally finished the movment I finished basic movement and Added sprinting!
Made sliding mechanic So you can Slide now there is a cooldown of 1.25 seconds so its not OP!
Dear NVIDIA… 3 times, i reinstalled debian 3 times because of the stupid drivers, one time it just didn’t work then got it working but secure boot coudn’t be enabled. But it was all worth it :)
Im not really having fun… So i’ve been folowing tutorials for movement and i wasn’t having fun and quickly get distracted so i just made a fun parcour with a boucing mechanic (myself btw). The 360 at the end was so sick!
PC overheating…. So my pc overheights since im on linux and they don’t have my motherboard drivers so my fans don’t work si my gpu overheats! I can’t switch to windows where fans are working normally :(
Made Katana and Enemies ! Now if your in distance enemies will shoot you and you can attack them by left clicking when you are close. Next I’m going to implement parrying!
Migrated to windows My pc was overheating on linux since my fan sensors weren’t working on linux, and now i use Direct X12 and not OpenGL 4.5 . I don’t know if i should be happy or sad.
Made Parrying you can now parry and i added a sound effect! What is so fun about making a game is that you can do anything with it like i made an enemy shoot infinity and it created this cool effect!
Yes didn’t know animations were that hard
Going to keep the basic model I find the basic model, he has mega aura so im going to keep it (and it helps with performance!)
MADE MY FIRST MODEL it may be ugly, but I MADE IT
Level 1 is now working it may be bad but i put alot of effort on this one :)
Monkey dancing Gangnam Style before GTA 6 ?? It took 1h30, was it worth it? Absolutly.
Added the music
Added buch of things Now when you parry the bullet will reverse and go where you look. Added sword swing sound effect & Started making level 2!
Deleted it all yes i said hey free 16gb on my pc and minutes later realized the big mistake…
IM BACKKKKKKKK i reinstalled windows, repasted graphics card (dropped 30°C), in the past week. Look at all this dust, no wonder why it was overheating…
Full level 2 implementation and transition between levels and heart system with vulnarability! I added a heart system with a 10s vulnability each time you get heart! The level 2 is kinda hard (even as a pro gamer) Added transition between the levels when you reach the end :)
Why the game is so ugly I CAN’T MODEL, my designing skills are soooo bad and let’s not talk about modeling….. But i still took a lot of time and effort to make an “ ok ” map, it may be ugly, but its the best i could! please don’t try to understand the storyline….
10 humans vs 1 monkey We can finally know who will win 10 humans vs 1 monkey (but the monkey doesn’t attack…) i wonder who will win!
Made Start menu is this a W menu? i worked really hard on the background. btw the quit button moves every 1.5 secondes so its harder to quit :)
ITS REALEAAAAAASED i did alot of small adjustmenets for release check it out here . Its tested for windows and linux, unfortantly i don’t own any mac devices.
Its on the web ! you can try it out here
README IS DONE i feel kinda sad but happy at the same time that its finishing..
Ships:
I made a Unity game after 3 years! I really loved relearning C# and Unity. The hardest part was designing, I HAD SO MUCH PAIN, I suck at 3D modeling and making good maps, but I went through a lot of effort and time to make an acceptable map. You can directly try the project in the web or download it for Windows/Mac/Linux in the GitHub release! You can read the Gameplay section of the README if you are lost!...
|
1793080123.3516593
|
1793166523.3516593
|
|
43613
|
Stardance Stats by @mixidmb | Stardance
|
mixidmb
|
1
|
58.0
|
1157
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-18T21:20:53Z", "hours": 58.0, "multiplier": 19.81, "payout": 1157, "blessing": "neutral", "text": "Stardance Stats stardancestats.xyz · API docs A better way The best way to browse Stardance. Stardance just shows you a number, and that’s it. No history, no sorting. So I made an app that tracks those numbers. A crawler reads the public pages on a schedule, saves everything, and serves it back as a site and an open API. Global is the whole platform, with tiles you click to chart. People and Projects rank everyone on whatever you pick, with profiles, history, and search. Devlogs is every devlog in one feed, searchable by words included in the body. Ask takes a question in plain English and writes the query for it. The API is open. Every group has a list, a detail, and a /history endpoint for stats over time. curl \"https://api.stardancestats.xyz/v1/projects/2155/history?metrics=likes,devlogs&interval=1d\" Everything worth crawling sits in a queue with a tier. Pages that keep moving get checked hourly; quiet ones drop back. The sitemap misses plenty, so it also walks ID ranges to find what isn’t listed. Python, FastAPI, MongoDB, Svelte, Docker. Star creatures are from Hack Club’s Stardance repo.", "repo": "https://github.com/MIXIDtheSilly/StardanceStats", "demo": "https://stardancestats.xyz"}]...
|
[{"post_id": 49864, "ts": "202 [{"post_id": 49864, "ts": "2026-08-18T20:16:59Z", "hours": 5.5761, "text": "Stardance Stats dev log #9 Ask is done. You type a question in plain English, and a model writes the database query for it. You get a table back, and bars if it makes sense to chart. It only gets to write queries out of a list I picked. No writes, its own read-only database user, a time limit, and a rate limit on how many questions you can ask an hour. If it writes something outside that, it just gets refused. Also made API docs with examples for every endpoint, a README, and a license. There’s a docs button in the sidebar now."}, {"post_id": 49026, "ts": "2026-08-17T16:48:42Z", "hours": 6.3583, "text": "Stardance Stats dev log #8 SDS website is already up! Check it out at https://stardancestats.xyz/ Devlogs page. Every devlog on the site in one feed. Cards with the author, the project, the numbers, the text, and the images or videos. Filter by how recent, sort by newest, likes, comments, or views, or search. Search reads the body. Type “cat” and you get everyone’s cat posts, or put quotes around something to match it exactly. Whatever you searched gets highlighted in the card. Also put the little star creatures around the pages. (the sillies)"}, {"post_id": 47639, "ts": "2026-08-15T17:47:33Z", "hours": 7.6028, "text": "Stardance Stats dev log #7 Projects page is done. Same podium as People but with the banners behind the top three. The list under it includes a thumbnail, the owner, and hours and devlogs in a single row. Buttons to filter to Super Stars or hardware. Click one, and you get everything about a project. Banner, tiles, a chart from 1 to 30 days, every ship, and all the devlogs. Sort them by newest, longest, most liked, most discussed, or most viewed."}, {"post_id": 46577, "ts": "2026-08-13T22:10:26Z", "hours": 5.9692, "text": "Stardance Stats dev log #6 People page: Leaderboard with a podium for the top three; click through to anyone’s profile. Search goes through the API since whoever you’re looking for usually isn’t on the page you’re on. It tries handles that start with what you typed first, then ones that just contain it. Added a blacklist. Some people don’t want to be tracked, so their ID goes in, and everything of theirs gets deleted. Fixed missions. Some pay a fixed amount instead; others go to rating; and none of that shows up as a payout on the page. Now each ship gets credited properly. Also added those silly creatures to the global page."}, {"post_id": 45813, "ts": "2026-08-12T15:17:04Z", "hours": 7.9811, "text": "Stardance Stats dev log #5 (almost done for ship!) Comments. A thread gets queued when its count moves, and they run in their own lane so they don’t starve behind everything else. Deleted ones get marked gone instead of vanishing. I got the shop too. Prices are per region, and the region is just a cookie, so it just grabs the catalogue seven times. That gives you the spread: how much more the same thing costs depending on where you are. Devlogs have their own history now, so you can watch one post’s likes over time. Fixed a demotion bug. Crawling a page more often used to make it go cold faster, which is backwards. Now it just checks how long it’s actually been quiet. Frontend started too. One page with the totals and a chart. The rest of the tabs are greyed out. And that’s what I’m going to be working on right now."}, {"post_id": 43999, "ts": "2026-08-09T14:17:47Z", "hours": 2.5447, "text": "Stardance Stats dev log #4 History endpoints. Projects, users, and the whole platform all run through the same thing. Pick your metrics, pick hourly, daily or weekly, get points back. Points only get written when a number moves, which means quiet stretches look like gaps. There’s a fill option that carries the last value forward so a flat line renders as a flat line. Ask for too wide a range, and it says no instead of trying. Every response now says when the data was last seen and whether that’s old. Responses also carry an ETag, so asking again for something that hasn’t changed costs nothing. Also added a platform endpoint for the site-wide totals, and a single devlog one."}, {"post_id": 42134, "ts": "2026-08-06T18:42:26Z", "hours": 8.6581, "text": "Stardance Stats dev log #3 Little differently today. I fetched all of Stardance today, and if you have any query requests, make a comment and I will answer! It can be something like, “What’s the best rated project on SD?” or “How many users have over 20 followers?” There’s a queue of everything worth crawling, and each page gets a tier. Pages that keep changing get checked often; pages that never change drop to the slow lane. It reads the sitemap to find pages and see what changed recently. But the sitemap misses a lot, so it also just walks id ranges past the highest one it knows is real. Most of those 404s, that’s fine. Owners that never got listed get found through their projects instead. Hidden and unverified profiles still parse."}, {"post_id": 41585, "ts": "2026-08-05T21:40:50Z", "hours": 6.9583, "text": "Stardance Stats dev log #2 Users and leaderboards. It reads profiles now, by handle or ID. Followers, streaks, achievements, what projects you’re on. Renames are fine, the old handle still finds you. Project pages only show handles, no IDs, so those rows just wait until the user gets crawled and then link up. Order doesn’t matter. Ships only pay after review, so shipped hours and paid hours aren’t the same. Payouts also use capped hours that aren’t shown anywhere, so I work those out from the payout and multiplier. Unpaid hours get an estimate. Super Star badges too."}, {"post_id": 40805, "ts": "2026-08-04T15:51:12Z", "hours": 6.7464, "text": "Stardance Stats dev log #1 New project! Stardance Stats, a better way to browse Stardance. The crawler is polite. It’s rate-limited, retries when things fail, and backs off entirely if the site starts struggling. Pages that haven’t changed don’t get re-parsed. Parsing hooks onto stable attributes instead of layout, so a restyle won’t break it. It reads devlogs and ships off the feed, then checks the numbers against the page’s own totals. If those drift too far, something broke. Everything goes into MongoDB as time series. Counters like devlogs or stardust can’t go down, so if they do, it’s a bad parse, and it gets rejected. First crawl also backfills old history from dates already on the page. oh btw all testing is done on @The_Craw project, so shoutout to him."}]...
|
Title: Stardance Stats by @mixidmb | Stardance
De Title: Stardance Stats by @mixidmb | Stardance
Devlogs:
Stardance Stats dev log #1 New project! Stardance Stats, a better way to browse Stardance. The crawler is polite. It’s rate-limited, retries when things fail, and backs off entirely if the site starts struggling. Pages that haven’t changed don’t get re-parsed. Parsing hooks onto stable attributes instead of layout, so a restyle won’t break it. It reads devlogs and ships off the feed, then checks the numbers against the page’s own totals. If those drift too far, something broke. Everything goes into MongoDB as time series. Counters like devlogs or stardust can’t go down, so if they do, it’s a bad parse, and it gets rejected. First crawl also backfills old history from dates already on the page. oh btw all testing is done on @The_Craw project, so shoutout to him.
Stardance Stats dev log #2 Users and leaderboards. It reads profiles now, by handle or ID. Followers, streaks, achievements, what projects you’re on. Renames are fine, the old handle still finds you. Project pages only show handles, no IDs, so those rows just wait until the user gets crawled and then link up. Order doesn’t matter. Ships only pay after review, so shipped hours and paid hours aren’t the same. Payouts also use capped hours that aren’t shown anywhere, so I work those out from the payout and multiplier. Unpaid hours get an estimate. Super Star badges too.
Stardance Stats dev log #3 Little differently today. I fetched all of Stardance today, and if you have any query requests, make a comment and I will answer! It can be something like, “What’s the best rated project on SD?” or “How many users have over 20 followers?” There’s a queue of everything worth crawling, and each page gets a tier. Pages that keep changing get checked often; pages that never change drop to the slow lane. It reads the sitemap to find pages and see what changed recently. But the sitemap misses a lot, so it also just walks id ranges past the highest one it knows is real. Most of those 404s, that’s fine. Owners that never got listed get found through their projects instead. Hidden and unverified profiles still parse.
Stardance Stats dev log #4 History endpoints. Projects, users, and the whole platform all run through the same thing. Pick your metrics, pick hourly, daily or weekly, get points back. Points only get written when a number moves, which means quiet stretches look like gaps. There’s a fill option that carries the last value forward so a flat line renders as a flat line. Ask for too wide a range, and it says no instead of trying. Every response now says when the data was last seen and whether that’s old. Responses also carry an ETag, so asking again for something that hasn’t changed costs nothing. Also added a platform endpoint for the site-wide totals, and a single devlog one.
Stardance Stats dev log #5 (almost done for ship!) Comments. A thread gets queued when its count moves, and they run in their own lane so they don’t starve behind everything else. Deleted ones get marked gone instead of vanishing. I got the shop too. Prices are per region, and the region is just a cookie, so it just grabs the catalogue seven times. That gives you the spread: how much more the same thing costs depending on where you are. Devlogs have their own history now, so you can watch one post’s likes over time. Fixed a demotion bug. Crawling a page more often used to make it go cold faster, which is backwards. Now it just checks how long it’s actually been quiet. Frontend started too. One page with the totals and a chart. The rest of the tabs are greyed out. And that’s what I’m going to be working on right now.
Stardance Stats dev log #6 People page: Leaderboard with a podium for the top three; click through to anyone’s profile. Search goes through the API since whoever you’re looking for usually isn’t on the page you’re on. It tries handles that start with what you typed first, then ones that just contain it. Added a blacklist. Some people don’t want to be tracked, so their ID goes in, and everything of theirs gets deleted. Fixed missions. Some pay a fixed amount instead; others go to rating; and none of that shows up as a payout on the page. Now each ship gets credited properly. Also added those silly creatures to the global page.
Stardance Stats dev log #7 Projects page is done. Same podium as People but with the banners behind the top three. The list under it includes a thumbnail, the owner, and hours and devlogs in a single row. Buttons to filter to Super Stars or hardware. Click one, and you get everything about a project. Banner, tiles, a chart from 1 to 30 days, every ship, and all the devlogs. Sort them by newest, longest, most liked, most discussed, or most viewed.
Stardance Stats dev log #8 SDS website is already up! Check it out at https://stardancestats.xyz/ Devlogs page. Every devlog on the site in one feed. Cards with the author, the project, the numbers, the text, and the images or videos. Filter by how recent, sort by newest, likes, comments, or views, or search. Search reads the body. Type “cat” and you get everyone’s cat posts, or put quotes around something to match it exactly. Whatever you searched gets highlighted in the card. Also put the little star creatures around the pages. (the sillies)
Stardance Stats dev log #9 Ask is done. You type a question in plain English, and a model writes the database query for it. You get a table back, and bars if it makes sense to chart. It only gets to write queries out of a list I picked. No writes, its own read-only database user, a time limit, and a rate limit on how many questions you can ask an hour. If it writes something outside that, it just gets refused. Also made API docs with examples for every endpoint, a README, and a license. There’s a docs button in the sidebar now.
Ships:
Stardance Stats stardancestats.xyz · API docs A better way The best way to browse Stardance. Stardance just shows you a number, and that’s it. No history, no sorting. So I made an app that tracks those numbers. A crawler reads the public pages on a schedule, saves everything, and serves it back as a site and an open API. Global is the whole platform, with tiles you click to chart. People and Projects rank everyone on whatever you pick, with profiles, history, and search. Devlogs is every devlog in one feed, searchable by words included in the body. Ask takes a question in plain English and writes the query for it. The API is open. Every group has a list, a detail, and a /history endpoint for stats over time. curl "https://api.stardancestats.xyz/v1/projects/2155/history?metrics=likes,devlogs&interval=1d" Everything worth crawling sits in a queue with a tier. Pages that keep moving get checked hourly; quiet ones drop back. The sitemap misses plenty, so it also walks ID ranges to find what isn’t listed. Python, FastAPI, MongoDB, Svelte, Docker. Star creatures are from Hack Club’s Stardance repo....
|
1792875214.2244315
|
1793739214.2244315
|
|
44590
|
School Tools by @afonso | Stardance
|
afonso
|
4
|
58.0
|
472
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-14T15:31:07Z", "hours": 11.0, "multiplier": 12.51, "payout": 66, "blessing": "neutral", "text": "This update added a new admin dashboard, with it’s endpoints rewritten to be more reliable. It also adds support for password reset, statistics (for admins) and a lot of bug fixes here-and-there.", "repo": "https://github.com/afonsoingles/school-tools", "demo": "https://school-tools.afonsoingles.dev"}, {"ship_num": 2, "ts": "2026-09-07T00:04:15Z", "hours": 1.0, "multiplier": 17.56, "payout": 10, "blessing": "neutral", "text": "This update fixed some bugs in School Tools, and switched the frontend to use bun instead of npm!", "repo": "https://github.com/afonsoingles/school-tools", "demo": "https://school-tools.afonsoingles.dev"}, {"ship_num": 3, "ts": "2026-09-06T01:22:44Z", "hours": 12.0, "multiplier": 13.93, "payout": 168, "blessing": "neutral", "text": "This update majorly adds homework support. You can now create and view your homework! If you let it be overdue, it will also show you. Some other updates include adding icons to subjects and some basic account settings. Making this was fun, and i found really interesting figuring out how to add fields to existing users in prod (since mongodb doesn’t have migrations)", "repo": "https://github.com/afonsoingles/school-tools", "demo": "https://school-tools.afonsoingles.dev"}, {"ship_num": 4, "ts": "2026-08-31T21:17:06Z", "hours": 34.0, "multiplier": 6.7, "payout": 228, "blessing": "neutral", "text": "School Tools is management platform for your study life. You can add your subjects, classes and evaluations. Building this project was so much fun, and I’m really proud of it. I found really challenging creating the ICS feeds and keeping them updated in a reliable way, but that was also fun to learn about.", "repo": "https://github.com/afonsoingles/school-tools", "demo": "https://school-tools.afonsoingles.dev"}]...
|
[{"post_id": 68119, "ts": "202 [{"post_id": 68119, "ts": "2026-09-14T15:21:05Z", "hours": 3.9206, "text": "Heello! I fixed many bugs in the API and frontend, and also added the ability to reset passwords if you lost them! I also improved the login/signup pages."}, {"post_id": 66258, "ts": "2026-09-11T23:59:17Z", "hours": 1.9481, "text": "Heeello! I did a revamp on the admin users page. It is now WAY faster than the previous one, and searching works very well too! And admins can now hit the ban hammer on users. That will send them an email, and block them from accessing School Tools."}, {"post_id": 65659, "ts": "2026-09-10T23:03:33Z", "hours": 4.6875, "text": "Hi! I did a major revamp of the admin page and added statistics to it! You can now see user stats, adoption stats, and content stats (you must have admin, tho). Stats are automatically updated every hour, and can be manually updated by superadmins too. Superadmins also got the ability to nuke the redis db completely in development."}, {"post_id": 63106, "ts": "2026-09-06T18:39:35Z", "hours": 1.1003, "text": "Hello! The frontend now uses bun instead of npm, so it’s very fast now! If you have a profile picture in gravatar, that will now be your profile picture. Also, School Tools has a new logo! Bug fixes: Calendar now displays correctly on mobile DRY (Don’t repeat yourself) the code"}, {"post_id": 62575, "ts": "2026-09-06T01:11:21Z", "hours": 1.1608, "text": "I fixed some bugs around here and there and added basic support for the mobile UI. Mobile UI support was largely done with OpenCode"}, {"post_id": 62337, "ts": "2026-09-05T17:29:57Z", "hours": 2.1417, "text": "I added a new toggle so users can disable ICS generation. The functionality is off by default, tho users can manually enable it in the settings. Existing users will still have it on. QOL things: Change email change rate limit message Styling issues ICS generation now runs in another thread (api route) fix: Busiest day off by one Made more things use the local user timezone instead of the browser one fix animation not showing up on ‘regenerate calendar links’ popup"}, {"post_id": 61847, "ts": "2026-09-04T23:38:52Z", "hours": 4.4167, "text": "Hi! hi! The main point of this updated is that i added Homework support! You can see all your homework in a new shiny homework page. I also revamped the ‘Todays schedule’ in the main dashboard, and added a new homework widget there too A few QOL things: Added toaster responses in many parts of the code Calendar selection now uses the ‘Calendar’ item by shadcn instead of native OS /browser selector bug fixes here and there"}, {"post_id": 60576, "ts": "2026-09-03T00:44:54Z", "hours": 1.1347, "text": "Added a new shinny settings page! You can edit your name, email and password"}, {"post_id": 60294, "ts": "2026-09-02T15:51:00Z", "hours": 3.2308, "text": "New feature: • You can now change the icons of your subjects. If you already had subjects prior to this, its icon will be set as BookOpen. Bug fixes: • added very janky admin endpoints + ui. UI was mostly done by ai because its not public and just needs to work. I made the endpoints myself, even tho they are a bit janky. Will impove in the future.. • added a resend verification link button (only available after 6h) and logout button in the /auth/verify/pending page.."}, {"post_id": 59155, "ts": "2026-08-31T19:44:50Z", "hours": 4.0314, "text": "So, i had OpenCode do a look around the codebase for vulnerabilities and bugs that i should fix before release. However, the edits were done by me. This devlog is basically that: • fixed an IDOR vulnerability that allowed any authenticated user to uncancel any class by just having its ID. . • when trying to log in with an account that does not exist, the api now raises a password incorrect error instead of user_not_found . . • added rate limiting to /v1/auth/pwd (5 per minute) , /v1/auth/signup (20 per hour) and /v1/auth/verify (2 per minute). • Improve email validation on account creation. • Added password requirements on signup.. • Enforce email verified in endpoints. • Fixed a vuln that allowed the ?next=//example.com param to redirect to any website after login. • Added a FAQ in the calendar settings page ‘Why is my calendar not updating?’. • Don’t allow class deletion if used by evaluation. • Add loader and icon to the class deletion modal.. • Don’t allow subject deletion if used by class.. • Rename canceled to cancelled in many parts of the code.. • Ensure character count limit (8-50 in most places). • Relax rate limits. • [OpenCode] Created a migration worker. • Migration to remove depreacted onboarding_status field.. • Made many things TZ aware and added an user timezone field in the IANA format.. • [OpenCode] Tried, and failed to add mobile support.. • Standernize responses in the valid_json decorator. Many of the changes are non-visual, so i put the devlog image as the new FAQ."}, {"post_id": 57677, "ts": "2026-08-29T22:14:38Z", "hours": 5.8628, "text": "Hello! I have added ICS integration support, so now you can add your School Tools calendar in any of your prefered calendars! I started by making the job that generates the ICS per se. After that, i added API routes to integrate around it. I then integrated it into the frontend under /settings/calendar. There is also a tooltip in the normal calendar page!* The way ICS feeds work is basically every time there is a DB edit (such as class creation for example) the user is marked as ‘dirty’. Then, the ICS job that runs every five minutes, gets every dirty user and updates their ICS feeds. It doesn’t really matter that it isn’t updated automatically, since the majority of calendar providers have a long TTL for ICS subscriptions. (Google Calendar has ~12h TTL for example!) I also added a README. *Frontend integration was heavily AI assisted, but i supervised it and edited some things to ensure code quality."}, {"post_id": 55598, "ts": "2026-08-27T15:33:10Z", "hours": 1.8231, "text": "Hi! Recent updates: Added evaluation API routes and support in the UI Evaluations now show up in the calendar view added page names disabled homework (it’s coming in a future update!) small bug fixes"}, {"post_id": 55278, "ts": "2026-08-27T00:15:28Z", "hours": 5.1378, "text": "You can now create and view classes! You can also cancel them individually if anything came up."}, {"post_id": 52620, "ts": "2026-08-22T20:43:22Z", "hours": 4.6503, "text": "Added a scheduler WIP onboarding (import classes, evaluations, etc) Added subject routes and models. Added subjects in the UI under settings* adjusted some sentry configs bug fxes changed the admin icon *This had a lot of opencode assistance making it."}, {"post_id": 50629, "ts": "2026-08-19T21:34:54Z", "hours": 3.1142, "text": "Fix: Show real error messages in API Show real IPs on sentry/logs when behind reverse proxy Fix the redirect loop when stale cookie Let admins clear user caches from redis Add event models (classes, evaluations, schedule)"}, {"post_id": 46397, "ts": "2026-08-13T16:03:19Z", "hours": 8.0358, "text": "Okay, looong devlog. Made a backend (partially reused from old project) Email verification on account creation Dashboard now loads real user data verify email/login/signup email pages* Added sentry to both prod and dev sentry analytics Added logo and name to sidebar* page names and favicon lots of try and fail docker deployment* -> assisted with AI (OpenCode)"}, {"post_id": 41959, "ts": "2026-08-06T14:16:54Z", "hours": 1.4211, "text": "I have made a very WIP frontend"}]...
|
Title: School Tools by @afonso | Stardance
Devlog Title: School Tools by @afonso | Stardance
Devlogs:
I have made a very WIP frontend
Okay, looong devlog. Made a backend (partially reused from old project) Email verification on account creation Dashboard now loads real user data verify email/login/signup email pages* Added sentry to both prod and dev sentry analytics Added logo and name to sidebar* page names and favicon lots of try and fail docker deployment* -> assisted with AI (OpenCode)
Fix: Show real error messages in API Show real IPs on sentry/logs when behind reverse proxy Fix the redirect loop when stale cookie Let admins clear user caches from redis Add event models (classes, evaluations, schedule)
Added a scheduler WIP onboarding (import classes, evaluations, etc) Added subject routes and models. Added subjects in the UI under settings* adjusted some sentry configs bug fxes changed the admin icon *This had a lot of opencode assistance making it.
You can now create and view classes! You can also cancel them individually if anything came up.
Hi! Recent updates: Added evaluation API routes and support in the UI Evaluations now show up in the calendar view added page names disabled homework (it’s coming in a future update!) small bug fixes
Hello! I have added ICS integration support, so now you can add your School Tools calendar in any of your prefered calendars! I started by making the job that generates the ICS per se. After that, i added API routes to integrate around it. I then integrated it into the frontend under /settings/calendar. There is also a tooltip in the normal calendar page!* The way ICS feeds work is basically every time there is a DB edit (such as class creation for example) the user is marked as ‘dirty’. Then, the ICS job that runs every five minutes, gets every dirty user and updates their ICS feeds. It doesn’t really matter that it isn’t updated automatically, since the majority of calendar providers have a long TTL for ICS subscriptions. (Google Calendar has ~12h TTL for example!) I also added a README. *Frontend integration was heavily AI assisted, but i supervised it and edited some things to ensure code quality.
So, i had OpenCode do a look around the codebase for vulnerabilities and bugs that i should fix before release. However, the edits were done by me. This devlog is basically that: • fixed an IDOR vulnerability that allowed any authenticated user to uncancel any class by just having its ID. . • when trying to log in with an account that does not exist, the api now raises a password incorrect error instead of user_not_found . . • added rate limiting to /v1/auth/pwd (5 per minute) , /v1/auth/signup (20 per hour) and /v1/auth/verify (2 per minute). • Improve email validation on account creation. • Added password requirements on signup.. • Enforce email verified in endpoints. • Fixed a vuln that allowed the ?next=//example.com param to redirect to any website after login. • Added a FAQ in the calendar settings page ‘Why is my calendar not updating?’. • Don’t allow class deletion if used by evaluation. • Add loader and icon to the class deletion modal.. • Don’t allow subject deletion if used by class.. • Rename canceled to cancelled in many parts of the code.. • Ensure character count limit (8-50 in most places). • Relax rate limits. • [OpenCode] Created a migration worker. • Migration to remove depreacted onboarding_status field.. • Made many things TZ aware and added an user timezone field in the IANA format.. • [OpenCode] Tried, and failed to add mobile support.. • Standernize responses in the valid_json decorator. Many of the changes are non-visual, so i put the devlog image as the new FAQ.
New feature: • You can now change the icons of your subjects. If you already had subjects prior to this, its icon will be set as BookOpen. Bug fixes: • added very janky admin endpoints + ui. UI was mostly done by ai because its not public and just needs to work. I made the endpoints myself, even tho they are a bit janky. Will impove in the future.. • added a resend verification link button (only available after 6h) and logout button in the /auth/verify/pending page..
Added a new shinny settings page! You can edit your name, email and password
Hi! hi! The main point of this updated is that i added Homework support! You can see all your homework in a new shiny homework page. I also revamped the ‘Todays schedule’ in the main dashboard, and added a new homework widget there too A few QOL things: Added toaster responses in many parts of the code Calendar selection now uses the ‘Calendar’ item by shadcn instead of native OS /browser selector bug fixes here and there
I added a new toggle so users can disable ICS generation. The functionality is off by default, tho users can manually enable it in the settings. Existing users will still have it on. QOL things: Change email change rate limit message Styling issues ICS generation now runs in another thread (api route) fix: Busiest day off by one Made more things use the local user timezone instead of the browser one fix animation not showing up on ‘regenerate calendar links’ popup
I fixed some bugs around here and there and added basic support for the mobile UI. Mobile UI support was largely done with OpenCode
Hello! The frontend now uses bun instead of npm, so it’s very fast now! If you have a profile picture in gravatar, that will now be your profile picture. Also, School Tools has a new logo! Bug fixes: Calendar now displays correctly on mobile DRY (Don’t repeat yourself) the code
Hi! I did a major revamp of the admin page and added statistics to it! You can now see user stats, adoption stats, and content stats (you must have admin, tho). Stats are automatically updated every hour, and can be manually updated by superadmins too. Superadmins also got the ability to nuke the redis db completely in development.
Heeello! I did a revamp on the admin users page. It is now WAY faster than the previous one, and searching works very well too! And admins can now hit the ban hammer on users. That will send them an email, and block them from accessing School Tools.
Heello! I fixed many bugs in the API and frontend, and also added the ability to reset passwords if you lost them! I also improved the login/signup pages.
Ships:
School Tools is management platform for your study life. You can add your subjects, classes and evaluations. Building this project was so much fun, and I’m really proud of it. I found really challenging creating the ICS feeds and keeping them updated in a reliable way, but that was also fun to learn about.
This update majorly adds homework support. You can now create and view your homework! If you let it be overdue, it will also show you. Some other updates include adding icons to subjects and some basic account settings. Making this was fun, and i found really interesting figuring out how to add fields to existing users in prod (since mongodb doesn’t have migrations)
This update fixed some bugs in School Tools, and switched the frontend to use bun instead of npm!
This update added a new admin dashboard, with it’s endpoints rewritten to be more reliable. It also adds support for password reset, statistics (for admins) and a lot of bug fixes here-and-there....
|
1793105647.7359264
|
1793192047.7359264
|
|
51315
|
Poker by @jinjin | Stardance
|
jinjin
|
3
|
58.0
|
102
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-07T23:45:14Z", "hours": 31.0, "multiplier": 1.13, "payout": 35, "blessing": "neutral", "text": "I made Stardance Hold’em, a browser-based Texas Hold’em game where you play against 3 AI opponents using virtual Stardance Stars. I started with a basic poker table and gradually built out the actual game logic, including dealing, blinds, betting, community cards, hand evaluation and showdowns. I also added things like a leaderboard, daily rewards, session stats, emotes, animations and power-ups such as Peek Card, Double Pot and 2nd Chance Swap. One of the more challenging parts was getting the poker logic right, especially comparing hands and handling things like split pots and the different stages of a hand. I also spent quite a bit of time making the UI feel polished rather than just having a functional poker game. I’m most proud of how much the project grew from the original idea. It’s now something you can actually sit down and play, with the AI, progression systems and lots of small interactions making it feel more like a complete game. Everything uses virtual points only — there is no real-money wagering.", "repo": "https://github.com/jinjintt89-cmyk/Poker", "demo": "https://poker2-nu.vercel.app/"}, {"ship_num": 2, "ts": "2026-09-04T23:43:51Z", "hours": 24.0, "multiplier": 5.45, "payout": 65, "blessing": "neutral", "text": "So I am reshipping this project, i hope you guys like it", "repo": "https://github.com/jinjintt89-cmyk/Poker", "demo": "https://poker2-nu.vercel.app/"}, {"ship_num": 3, "ts": "2026-08-20T07:33:57Z", "hours": 3.0, "multiplier": 1.01, "payout": 2, "blessing": "neutral", "text": "Please give me 15 stars i always give everyone else. Please pass on kindness", "repo": "https://github.com/jinjintt89-cmyk/Poker", "demo": "https://poker2-nu.vercel.app/"}]...
|
[{"post_id": 63423, "ts": "202 [{"post_id": 63423, "ts": "2026-09-07T08:04:44Z", "hours": 7.6525, "text": "Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game."}, {"post_id": 62942, "ts": "2026-09-06T14:24:44Z", "hours": 7.0783, "text": "Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game."}, {"post_id": 62712, "ts": "2026-09-06T06:17:32Z", "hours": 5.3728, "text": "Devlog 1 — getting the table working The table is finally starting to feel like an actual game."}, {"post_id": 62536, "ts": "2026-09-05T23:31:26Z", "hours": 8.8156, "text": "Completly restarting"}, {"post_id": 62126, "ts": "2026-09-05T11:45:41Z", "hours": 2.4, "text": "Adding feedback"}, {"post_id": 61846, "ts": "2026-09-04T23:35:47Z", "hours": 8.2067, "text": "Just trying to get more stars"}, {"post_id": 59214, "ts": "2026-08-31T21:42:42Z", "hours": 3.6156, "text": "Adding autosave feature, took a while"}, {"post_id": 57980, "ts": "2026-08-30T09:53:03Z", "hours": 2.8667, "text": "Writing the code and adding some new things in the shop"}, {"post_id": 57895, "ts": "2026-08-30T07:02:37Z", "hours": 5.4508, "text": "Fixing it trying to get it shipped"}, {"post_id": 57720, "ts": "2026-08-29T23:42:56Z", "hours": 3.4681, "text": "Making the code human"}, {"post_id": 50814, "ts": "2026-08-20T07:17:42Z", "hours": 0.8381, "text": "Just fixing it"}, {"post_id": 50627, "ts": "2026-08-19T21:30:26Z", "hours": 1.7775, "text": "Today I trouble shooted my code"}]...
|
Title: Poker by @jinjin | Stardance
Devlogs:
Toda Title: Poker by @jinjin | Stardance
Devlogs:
Today I trouble shooted my code
Just fixing it
Making the code human
Fixing it trying to get it shipped
Writing the code and adding some new things in the shop
Adding autosave feature, took a while
Just trying to get more stars
Adding feedback
Completly restarting
Devlog 1 — getting the table working The table is finally starting to feel like an actual game.
Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game.
Devlog 2 — poker actually works nowWhat changed?implemented full Texas Hold’em hand flowadded preflop, flop, turn and riveradded automatic community card dealingadded proper burn cardsadded showdown logicadded split-pot handlingadded hand comparison and winner detectionadded detailed hand descriptionsadded support for everything from High Card to Straight Flushadded the ace-low straightWhat I will be working on next?making the bots smarterimproving the betting UIadding more feedback when actions happenmaking the table feel less staticIt’s gone from a UI mockup to an actual playable poker game.
Ships:
Please give me 15 stars i always give everyone else. Please pass on kindness
So I am reshipping this project, i hope you guys like it
I made Stardance Hold’em, a browser-based Texas Hold’em game where you play against 3 AI opponents using virtual Stardance Stars. I started with a basic poker table and gradually built out the actual game logic, including dealing, blinds, betting, community cards, hand evaluation and showdowns. I also added things like a leaderboard, daily rewards, session stats, emotes, animations and power-ups such as Peek Card, Double Pot and 2nd Chance Swap. One of the more challenging parts was getting the poker logic right, especially comparing hands and handling things like split pots and the different stages of a hand. I also spent quite a bit of time making the UI feel polished rather than just having a functional poker game. I’m most proud of how much the project grew from the original idea. It’s now something you can actually sit down and play, with the AI, progression systems and lots of small interactions making it feel more like a complete game. Everything uses virtual points only — there is no real-money wagering....
|
1792878456.099987
|
1793742456.099987
|
|
52019
|
Pointer Fighter (C based) by @nano | Stardance
|
nano
|
1
|
58.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-24T20:19:08Z", "hours": 58.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project", "repo": "https://github.com/skibidi-nano/Stardance-roguelike", "demo": "https://github.com/skibidi-nano/Stardance-roguelike/releases/tag/v1.0.1"}]...
|
[{"post_id": 73295, "ts": "202 [{"post_id": 73295, "ts": "2026-09-24T19:37:40Z", "hours": 3.1092, "text": "LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function"}, {"post_id": 71417, "ts": "2026-09-20T19:47:13Z", "hours": 5.0142, "text": "LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)"}, {"post_id": 69703, "ts": "2026-09-17T16:40:29Z", "hours": 4.2308, "text": "LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies"}, {"post_id": 68741, "ts": "2026-09-15T17:34:46Z", "hours": 2.2667, "text": "LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \\0 terminator). The fix was to just not print out the \\0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored"}, {"post_id": 68208, "ts": "2026-09-14T18:13:59Z", "hours": 4.045, "text": "LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal"}, {"post_id": 67326, "ts": "2026-09-13T12:07:21Z", "hours": 3.1628, "text": "LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function"}, {"post_id": 66634, "ts": "2026-09-12T14:15:36Z", "hours": 1.4594, "text": "LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!"}, {"post_id": 66094, "ts": "2026-09-11T17:53:56Z", "hours": 3.0956, "text": "LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player"}, {"post_id": 65457, "ts": "2026-09-10T16:29:10Z", "hours": 1.7283, "text": "LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)"}, {"post_id": 64879, "ts": "2026-09-09T16:10:45Z", "hours": 2.0467, "text": "LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways"}, {"post_id": 63783, "ts": "2026-09-07T18:59:06Z", "hours": 3.6586, "text": "LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)"}, {"post_id": 62408, "ts": "2026-09-05T19:04:09Z", "hours": 2.9256, "text": "LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )"}, {"post_id": 61748, "ts": "2026-09-04T20:04:49Z", "hours": 4.0994, "text": "LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game."}, {"post_id": 60461, "ts": "2026-09-02T19:58:48Z", "hours": 2.5567, "text": "LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!"}, {"post_id": 59815, "ts": "2026-09-01T19:33:57Z", "hours": 0.7692, "text": "LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!"}, {"post_id": 59787, "ts": "2026-09-01T18:38:08Z", "hours": 1.3131, "text": "LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!"}, {"post_id": 55276, "ts": "2026-08-27T00:06:09Z", "hours": 1.4606, "text": "LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!"}, {"post_id": 54777, "ts": "2026-08-25T21:47:45Z", "hours": 1.3933, "text": "LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!"}, {"post_id": 54087, "ts": "2026-08-24T21:27:57Z", "hours": 2.0, "text": "added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)"}, {"post_id": 52721, "ts": "2026-08-23T01:22:10Z", "hours": 1.3925, "text": "Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)"}, {"post_id": 52658, "ts": "2026-08-22T22:08:53Z", "hours": 1.2631, "text": "Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)"}, {"post_id": 51911, "ts": "2026-08-21T20:21:08Z", "hours": 0.9469, "text": "Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties."}, {"post_id": 51814, "ts": "2026-08-21T17:36:52Z", "hours": 1.5833, "text": "Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized."}, {"post_id": 51346, "ts": "2026-08-20T23:28:52Z", "hours": 0.9203, "text": "Added collision checks for walls so you cant escape the rooms"}, {"post_id": 51318, "ts": "2026-08-20T22:03:55Z", "hours": 1.0767, "text": "Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!"}, {"post_id": 51226, "ts": "2026-08-20T19:16:10Z", "hours": 0.4381, "text": "“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now"}]...
|
Title: Pointer Fighter (C based) by @nano | Starda Title: Pointer Fighter (C based) by @nano | Stardance
Devlogs:
“Roguelike” “Game” in C (neither of them has begun to be implemented. But i guess i have set up the very basics as of now
Implemented functional Walking (even though there is no real border yet). I also fragmented the code a bit so its more readable!
Added collision checks for walls so you cant escape the rooms
Implemented doors (currently a minus sign probably going to change that). If you collide with said door/minus sign you will enter a new, different sized room. I did that by choosing a random wall, a random spot on that wall which is the spot where the door will be and if you make contact with the door a new room will be initialized.
Added “Npcs” (evil pointers/ampersands). Collision yet have to do something relevant (right now they only trigger a new room). Also fixed a few memory unsafeties.
Added a (somewhat) functional menu screen to view highscore and start the game (highscore function will be implemented soon!!!!. Also built the first prototype of the battle screen though it is no where near finished. I will probably make the menu screen a bit prettier in the future but the current design has to suffice for now. :)
Kinda added a battle screen (not reactive yet but will happen soon) and made the ASCII designs for my characters with AI (i cannot make any good ASCII art sadly :( … yet). In the top left is what is supposed to resemble a health bar which also still needs to be implemented. Also made the code a bit cleaner added a few header guards and most importantly i added structs for the entities so their stats could be recorded. Thats it :)
added the first implementation of working battle (taking and dealing damage, working health bar)! The main issues right now are that the code is a bit tangled and that the logic isnt polished at all. But after 2 hours of work i felt like i had to post a log so this is the current state (you can attack or try to run) (winning and running have the same effect as of now)
LOG 9: Battle now works better and you can see enemy h now. Code is way less tangled (though some stuff still needs to be improved and the battle still isnt fully polished). There are some bugs regarding memory right now (will be fixed ASAP). But as of now you can finally really battle the evil evil evil pointer!
LOG 10: Added multiple enemies (dynamic based on room size) and stats get reset after battle. Battle still issnt finished yet as i think of two more things to add for every one thing i implement. Stay updated !!!
LOG 11: Im Back. After a short break i started to implement that enemies really “die” if you beat them! Now there is some kind of progress added into the game as you can actually beat the enemies!!! The next features will probably be a real highscore and restricitions in leaving the room until youve beaten every enemy. Till then stay updated!!!!
LOG 12: This came quicker than i thought it would lol. I implemented the two things i spoke about in the last log. I added a highscore system so you can always see how far you came with beating the evil pointers and i also “locked” the rooms until youve beaten every enemy in the room. I plan on adding power ups and some other features (read the README in the repo). STAY UPDATED!!!
LOG 13: Added items that are supposed to give you power-ups in the future. currently they dont really do anything except open a screen with a sprite for the corresponding item (SPRITES ARE AI GENERATED). The plan for the future is to deicde between regular and activatable items (the first give permanent buffs, the second can be activated) and to be able to choose the items while in battle. For now they can spawn on the map (anywhere except 1|1 and spots where enemies are) and open a random sprite of the 3 that are available right now!
LOG 14: Made the items more interactive and functional (items can now be picked up or ignored and will vanish if either is done) and i built a somewhat functional inventory accessible only in battle as of right now. I also had to clean up a bunch of code and had to re-implement some stuff as i implemented some things rather poorly before. There are still some things to be made a bit cleaner which will come in the next few devlogs but i felt like posting one for the current state of the game.
LOG 15: MAINLY BUG FIXES AND SOME MINOR NEW FEATURES NEW FEATURES Better life/strength display A feature that was originally used for debugging has turned out as a good feature for the game overall. It always displays your and the enemies HP, and attack power (even though the attack damage is partly random which i have to note somewhere so there will be no confusion) An item descriptor that tells you what the item you are looking at currently does There is only one item to be used in the inventory right now so you can only see what the heal item does but more will be added in the future. BUG FIXES Memory unsafety fixed There was an issue with unsafe memory access if the items in the inventory where bigger than 10. My fix is that if you have more than 10 items and you pick up a new one, the new item will replace the first item, the next one the second one etc. It also resolved a smaller issue with blank inventory space that ate up inventory space even though it was empty. Items not working fixed The functions responsible for changing your hp, healing you or making you stronger hat an issue with their pointer assignment (they were pointing to the wrong variable) which i fixed for all function which work great now. Bug with doors acting the same as item pickups Because of something what seemed to be a typo (a function returned 1 instead of 0), if you tried to go through a door and you haven’t beaten every enemy, instead of nothing happening you got a free item (which turned out to be a great testing feature for items, because i can get many items fast and easily). The fix was really easy (just swap the 1 for a 0) Health bar not drawing properly Because of a badly implemented function i added in the past which turned out to be completely redundant (got cut out) the current hp weren’t imported properly to the function that handles printing out the health bar which i fixed by using another variable responsible for storing the current hp of the player Misc fixes After having to audit most of the code again i noticed that there were some issues with the code (partly because it was fine as it was when it was written, part was just sloppy implementation) which i also fixed even though most of it was minor. CURRENT PLANS FOR THE FUTURE More items that can be used in battle MORE ENEMIES!!! Im planning to add more and stronger enemies in the future even though that will probably will be one of the biggest newfeatures as it requires rewriting most of the battle and map logic Enemies getting stronger if you get farther for better progression Overall some more optimization and bug fixes (there is always something to be fixed ;) )
LOG 16: NEW NPC, BETTER CODE MODULARITY, FIXED SOME BUGS NEW FEATURES New “Modulo” / % enemy (based on the modulo operator in c)! It has weaker stats but is way stronger in terms of attack power BETTER CODE MODULARITY Because at the start of the game my main idea was to only implement one enemy type (which was pretty dumb tbh), i had to rework most of the map and battle logic so it was more generic and welcoming to multiple entities (and will help me add more enemies in the future). BUG FIXES VISUAL GLITCH There was a bug for the most of the time in the game (an issue with unititialized variables being printed, which resulted in a visual glitch), which was actually a pretty easy fix (i had to change the switch statements that handle state input and drawing output a bit so that changing the gamestate doesn’t skip to drawing instantly) MEMORY LEAK Because of a dumb implementation of a function that was supposed to carry over the value of a variable in file A to file B which used pointers allocated with malloc i had a memory issue because in a common case i forgot to implement free which resulted in lost memory (the fix was actually just switching over to passing by value because it was just a single char being transported from file A to file B and passing by reference wasn’t necessary)
LOG 17: DEBUG MODE FOR FASTER TESTING DEBUG MODE I added a debug mode because i found that most of my testing time was wasted finding items or players in rooms (which was very annoying most of the time), so i added a debug room so that goes way faster. Though it is very useful it was somewhat hard to implement but it made the code modular the same way the enemy logic is modular now which is an improvement in two ways
LOG 18: NEW ITEM AND BUG FIXES BUG FIXES BUG FIXES NEW ITEM DAMAGE POTION I added a new item that can be used in the inventory during battle which deals (currently) 4 damage to the opponent. Its the rarest item in the game right now (i think 1 in 11). Because of the new item i had to make a bunch of code more modular in the inventory logic (a trend in my code). But overall this was the reimplementation that went the smoothest BUG FIXES BATTLE INPUT BUG There was a bug in the battle screen that made the overall input very clunky and previously was only fixed by letting another bug happen but i fixed it by changing something in the switch statements of the battle logic INVENTORY ACCESS AND SELECTION BUG A bug that mainly happened because of the previous bug: When trying to access the inventory in battle the game automatically selected the first item and returned to battle and only after the second time accessing the inventory you could really use your items as you wished INVENTORY SELECTION BUG In the inventory itself a bug was caused by a lazy implementation which caused the display (not the real logic behind the inventory actually) to become very glitched out and very confusing. I just fixed this by fixing my old and bad implementation for a better more modular one (an overall trend in my code to be not that modular lol)
LOG 19: NEW ENEMY TYPE: BOSS FIGHTS, BETTER DOOR LOGIC, NEW SPRITES NEW ENEMY TYPE Because i thought that the normal enemies would be too easy to beat down the run i added the main boss (the pointer which stole the star sprite from the address enemy) and he will always be fought every 5-10 rooms (im not sure on the number) . Currently his stats are static but i plan on making them dynamic based on the number of rooms you went through. BOSS ROOM/BETTER DOOR LOGIC The old door logic practically only worked with a normal room and needed the regular enemies to all be defeated. I tweaked it a little so it works with boss triggers/defeating the boss NEW SPRITE(s) As i said the boss got the star sprite because he is the true pointer so i gave the address an ampersand sprite (which is way more fitting btw). But i am not completely satisfied with the current ampersand sprite (i will maybe change it sometime) NOTE This time there werent really any bugs except during building the boss logic but they got fixed along the way. This time it actually went rather smoothly :) Also ignore the absurd stats of the player
LOG 20: DYNAMIC STATS, BUG FIXES, SMALL UPDATE TO DEBUG MODE AND MORE COMMENTS DYNAMIC STATS The stats of all enemies are now connected to the boss counter which is the number of boss fights that have been fought during the current run so there is real progression and you dont just get stupidly overpowered DEBUG MODE I basically just added the boss to the debug mode nothing much BUG FIXES There was a glitch with the boss room being cut off because the randomly generated room was smaller than the boss room. I had to push a few things around and put every type of map generation (standard, debug, boss) into a switch statement to make it work properly COMMENTS I pretty much forgot most of the comments in the game so i started adding way more comments where they should be so the code is hopefully more intuitive to follow NOTE I think the next update will be pretty big so watch out when it finally drops!!!
LOG 21: FOG OF WAR, HOMING ENEMIES, BATTLE LOGIC OVERALL AND BUG FIXES FEATURES HOMING ENEMIES The enemies now home on you with every step you take, meaning you actually have to think about where you will go or the enemies will catch up to you. This was implemented by adding a sign function that decide whether the enemy should move +1 or -1 and then moving the enemy by that value. There were some bugs regarding enemies in previous rooms which got fixed by resetting the whole array during map init FOG OF WAR I added a fog of war feature that obstructs everything in the map you haven’t explored yet. This also pairs very well with the homing enemies feature. You have to go around the map to look out for items and enemies which now also walk towards you, so every step matters now BATTLE LOGIC OVERHAUL After revisiting most of my code for commenting i realized how terrible most of my battle logic was so i made it a bit more efficient and most importantly more readable. Overall i realized how great switch statements are in the last few logs BUG FIXES DOOR BUG There was a bug with the map that was somewhat useful when testing but still was a bug. The issue was that if you tried to step into the door the game let you step onto that char. The issue was that i forgot to make the game think that the door (when closed) should behave exactly like a wall. So the fix was just to add the door char to the wall collision check function
LOG 22: POISON ITEM, BATTLE LOG, MAIN LOOP AND ITEM SELECTION REWORK POISON ITEM A new item that does 3 tick damage every enemy turn, for 2 turns. Its the rarest item in the game as of right now and was somewhat complex to add (because of the tick damage and tracking how many turns have passed) BATTLE LOG A log that tracks the last two actions that have happened in the game. It currently only tracks damage and attacks but will track item usage and more detailed information in the future. It was a real headache to implement because i had contradictory logic between the log and my main loop and i had to reimplement it multiple times. But went well overall :) REWORKS MAIN LOOP REWORK I reworked the main loop a bit because even though it worked well in theory it was not really optimized and it was prone to bugs in the future which is why i felt like redoing it a bit. Now instead of every function handling their own init, every changing gamestate instantly also inits the state it was changed to. Because of this there are less possible bugs and its overall easier to do for future gamestates ITEM PICKUP REWORK I noticed that the logic for my items wasn’t really perfect and seemed unoptimized which is why i felt like changing it a bit. Because when picking up items there are only two possible things to do (which both result in the same exit scenario) i swapped my if/else if logic for a switch statement which made the code shorter, and more optimal
LOG 23: BATTLE LOG FOR ITEMS, BUG FIXES, BUG FIXES, BUG FIXES, BUG FIXES FEATURE BATTLE LOG FOR ITEMS The previous battle log only logged attacks and the damage dealt, now the log also tracks if items are used or items deal damage BUG FIXES SEGFAULT There was a segfault when trying to render the bottom of deeper rooms because the render guard had a major fault (only disjunctions no conjunctions). Because of that the game tried to reach spaces of the visible_map array out of reach of the array which resulted in a segfault when trying to go into spaces out of reach of the array. The fix was changing the guard from if ((player_y + y) < MAX_HEIGHT || (player_x + x) < MAX_WIDTH || (player_y + y ) >= 0 || (player_x + x >= 0)) to if ((player_y + y) < MAX_HEIGHT && (player_x + x) < MAX_WIDTH && (player_y + y ) >= 0 && (player_x + x >= 0)) which fixed the issue BATTLE LOG NULL TERMINATOR FIX There was a bug with the battle log, where ^ were printed (NUL ascii in ncurses) because the battle log printed out every part of the string character by character (including the \0 terminator). The fix was to just not print out the \0 terminator to the screen BATTLE SELECTION BUG There was a bug with conflicting selection variables (multiple variables where named selection which resulted in wrong selections being displayed). The fix was to give every function their own selection variable which fixed the issue VISIBLE MAP GLITCH Because the visible map only updated itself in the perimeter you are standing in if you moved fast enough some characters lagged behind and made it look like there were way more enemies than there actually were. The fix was to update not only the perimeter on every movement but also update everything that had already been explored
LOG 24: BOSS ITEM DROP, CONTROLS SCREEN, NEW IN-GAME BANNER, ITEM TO INVENTORY REFACTOR, BUG FIXES FEATURES BOSS ITEM DROP I added an item that only the boss drops, when killed. Its ability is to make the enemy unable to attack for one turn. You will always get it when defeating the boss and has the ‘?’ glyph compare to regular items (‘+’). Its also the only item that can always be picked up (with normal items, if your inventory is full you cannot pick them up, with the boss item your first slot gets overwritten). CONTROLS SCREEN I added a basic controls screen so people that try the game out (now or when it ships), know what to do when playing. Currently most things are really straightforward but i added it just in case. The most important aspect will probably how to end the game because thats the most unintuitive one (even though i hope anyone testing the game doesnt want to quit it) ITEM TO INVENTORY REFACTOR I thought that the previous state of my item to inventory were pretty lazy so i changed the logic up a bit. Previously when picking up items the items would go into the spot after the last item that was picked up and when the inventory ran full the first item was swappped with the newly picked up item. I didnt like that looking back and because of that the logic now scans through the inventory until it finds an empty spot and puts the item in that empty slot. If the inventory is full no item can be picked up (except the boss item) and the player gets a message on their screen. They can then leave the item screen using ESC and the item is not removed and can be picked up later if you somehow make space in your inventory NEW IN-GAME BANNER Also pretty straightforward, i added a banner so the menu looks a little bit prettier :) BUG FIXES BOSS ROOM BUG Because of map and gamestates and me forgetting to implement a feature in the door collision checks, there was a bug when defeating the boss (the map stayed as it was, but had the usual visible map ‘#’ everywhere you hadnt already explored (you cant really explore much so there where many ‘#’ ’s around the map which was really ugly. The fix was to move a mapstate change from the function that is responsible for handling victory to the function handling doors BOSS BUG There was a bug after defeating the boss which resulted from the previous bug and its fix. Because i forgot an additional check in my door function when defeating the boss the boss would spawn again and overwrite your boss item. The boss also chased you (which normally doesnt happen) and you couldnt leave the room. The fix was just to add another condition to the if statement in the door function responsible for the boss room ENEMY REMOVAL BUG For some reason (i dont know how i made the bug happen), when defeating enemies the visible map lagged behind the normal map which resulted in defeated enemies appearing to still exist on the map for one iteration of the loop (pressing any button made them vanish). The fix was to add a call to the visible_map_init function after defeating enemies
LOG 25: FLEEING ENEMIES (CONTAINS MANY CHANGES), BOSS ITEM REFACTOR FLEEING ENEMIES Enemies (except the boss) now have the ability to run away if the enemy would get killed by the next attack. The chance for this to happen is 10% and when they run away, they gain 1 HP per step they take and return to chasing the enemy if their hp is back at half of their max HP. FLEEING REWORK Before adding this feature, fleeing was the same practically as winning (the return type of the fight was STATE_VICTORY), i changed that to the proper STATE _FLED. Also before when fleeing, if you fled and another enemy of another type collided with you, he had normal stats but the enemy before that also got his stats reset. The same went for enemies of the same type. When fleeing from enemy A from type A and then colliding with enemy B from type A, he would have the stats of enemy A. The fix for both was to make a 2D Array of all enemies and their types, so each individual enemy stores its stats, not the battle function. PLAYER POSITION STRUCT Previously the player had ~ 8 different position variables, which was pretty clunky if i wanted to transport the player position to another function. Because of that i put all player positions into a singular struct, so i could pass all the player positions at once if i needed to. ENEMY PURSUIT FUNCTION REWORK Because enemies have to run away instead of chasing i had to rework the pursuit function a bit so it could also work in a reverse way. I had to make the function branch between the two states which took a bit more work than originally anticipated because i had a bunch of wrong ideas for how the function should work. Overall the function implementation was essentially to just use the inverse vector of the normal vector for the direction function BOSS ITEM FUNCTION/ITEM FUNCTION REFACTOR Because previously the boss item detection function and the item detection were separate the code didnt feel clean at all (felt like a lazy implementation for me), so i made the item function work with the boss item which makes the item function overall more open for new item types (if i will add any more)
LOG 26: FINAL DEVLOG MAINLY BUG FIXES AND SOME MINOR CHANGES CHANGES Enemies previously scaled to strongly and beat you too hard after the boss fight. Also because it was hard to scale the opponents down i decided to make the hp of everyone higher (everything got stronger in theory, player has 100 starting hp, does 20 damage etc.) LATE ADDITIONS LICENSE I licensed the project under the MIT licesne because it seemed fitting BUILD FILE I added a build file for the repo so i could upload a release binary (ncurses is required tho) BUG FIXES HIGHSCORE BUG There was a bug with the highscore not being displayed when there was no highscore.txt file. I needed to change the handling of the fact that the open function returned NULL, because NULL either meant, no file was there or no file could be found which resulted in no file being created because the function exited when the open function returned NULL, the fix was pretty simple overall tho (just adding an extra if conditional to check) FULL INVENTORY BUG Previously when having a full inventory, you couldnt pick up new items, issue was when using items that state didnt reset so one full inventory meant no items anymore :( . The fix was just to reset the state after using items BOSS ITEM INVENTORY BUG I forgot to make the boss item return the correct state which resulted in the item sometimes not being put in the inventory. The fix was just to add return ENTER_LEGAL to the boss items if statement SET ROOM ISSUE Because of random rooms sometimes boss room dimensions where bigger than current room which resulted in bugs (see previous devlogs). My previous fix worked in theory but had more affinity for potential bugs so i changed the set room function from two static values to two values that get passed into the function
Ships:
A roguelike room crawler completely built in C! What is in it? Randomly generated rooms with a fog of war for you to explore Three different enemy types with scaling difficulty Boss fights with unique item drop RPG Style fighting An interactive inventory that can be used during battle A battle log that tracks everything that happens in battle Items, pickups and a persistent highscore What am I proud of? The enemy pursuit and fleeing system. It was somewhat hard to implement but I think it made the game wayyyy better than before. I’m also proud of how the state machine turned out in the end. The game has strict separations between the different game states and first handles what the player/the game did during the game loop iteration and then after that is done draws it to the screen. That state machine was very prone to bugs and I had to spend a bunch of time to fix (fallthrough bug, etc. all talked about in devlogs). But I think the result that turned out at the end was great and I am very content with it How is it built? As said its completely built in C using ncurses as its graphics library using 12 source files (currently) with each one having a specific task only it does. The build is released using GitHub workflows and the binary can easily be downloaded and used on (almost) all glibc linux distros (the project was compiled for Ubuntu and you will have to install ncurses though) What I learned The game was actually my first real coding project ever apart from a few simple websites so I learned a bunch. I learned how to separate state transitions, I learned the importance of good and bad switch statements, bounds checking (really rough path) and I think most importantly: The power of code separation and making every file do its designated task. I often caught myself picking the easy and sloppy path and then fixing it properly and in retrospect helped with preventing a bunch of bugs Known limitations / plans for the future It’s my first project, so there are likely still issues I haven’t found. Even though I tried to find everything (a.e. using Valgrind told me there are no memory blocks definitely lost) there are still potentially memory safety issues or potential segfaults. It’s possible some edge cases might have slipped through. I’ve tested the project thoroughly and haven’t found any crashes since the last few debugging sessions but I cannot safely say it’s perfect. I think if I will find the time I will maybe add some new features like new special item related enemies or player status effects though I cannot safely say if i can Closing word I think building a game for my first real project was the right decision for me because I really had a bunch of fun building this project. I currently have some ideas for unrelated new projects (one is up on my profile check it out (; ) and I think this project was a really good pathway into coding for me. Check the GitHub and the demo video out and I hope you like the project...
|
1793004940.3502064
|
1793091340.3502064
|
|
37445
|
LineageOS for motorola/odessa by @megarthur | Star LineageOS for motorola/odessa by @megarthur | Stardance...
|
megarthur
|
0
|
57.92
|
0
|
[]
|
[{"post_id": 44339, "ts": "202 [{"post_id": 44339, "ts": "2026-08-10T01:10:18Z", "hours": 9.0408, "text": "Validation, fixing, commiting, repeat. Context I have a old phone an Motorola G9 Plus it runs with the Qualcomm SM6150 chipset, there is other phones with it but non Motorola were mainteined. Thats when I decided that the current AI tools likelly I could update the Kernel (with Backports, a term I didn’t know until I started working in this project). A bunch of updates were made, and we had made the device boot into the “Welcome, to LineageOS”, except the touch didn’t work and still needs to flash the partition table in order to work… Fixing and Testing This and the next post(s) will be just Testing, maybe fixing like, the touchscreen, them the Wi-Fi, Bluetooth (that one also fixed the Fingerprint). I (and the AI agents) had to fix a bunch of things, the GPS took some time like the Wi-Fi Hotspot. Right now, I am trying to validate all paths and attributes, it needs to fit the LineageOS Device Support Requirements , also working in adding it to Wiki in parallel Play Integrity and Root After the sucessful install, and a good enough state, I reinstalled from scratch and added Magisk (root) and MindTheGapps (Play Store for Custom ROM). They both worked. The tricky part was the Play Integrity, I read multiple articles on how to do it, but it came down to Installing the PlayIntegrityFix, ReZygisk (I could have used the native from Magisk but the tutorial said to use it), and Trick Store (+ an addon). And now it works fine. Complying with the LineageOS AI Coding Assitants Well, when I started the project, I didn’t read the fine-print so I needed to make ALL of my Commits (yeah this shit started REALLY vibecoded, I kinda thinked it wouldn’t work, right now I know WAY more than previously) comply with the guide, so which harness and which model did what. I made a OpenCode thread with gpt-5.6-luna to check my ccusage and assign each commit to there creator, and I realized, I used WAY too many models (gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, kimi-k3, opus-5, MiniMax-M3), but they got the job done and this is almost finished…"}, {"post_id": 39797, "ts": "2026-08-03T00:50:47Z", "hours": 8.2975, "text": "“Built it, flashed it, bootlooped.” WAIT NO???? Context Well, I like to thinker with shit, and recently I’ve come more used to AI Tools and how good they actually became at coding. So I said, why not extend the previusly extend life of an Android Device by vibecoding the shit out of previous incomplete projects of a Motorola SM6150 kernel and make it work? In the past we had a bunch of bootloops, kernel problems, incomplete API surfaces, almost bricking the device 6x times in a row. And much more (read past devlogs) Faster Bootloops Well, in Software Engineering the anwser always may be WAY more simple than it looks. In the case of the “flash” of the Motorola Logo (fast bootloop), it had something to do with in how the OTA package messes with the partition table. In those cases the anwser was just to do flash the Stock Partition table of the device ( fastboot flash partition ), and it would just boot. This happened WAY too many times, so in the (spoiler: end of the post) that was just randomly fixed. Boot stall? After way too many back and forths with GPT, a new OpenCode config (abusing the heck out of GPT-5.6-Luna in Max Reasoning as a subagent) we had a phone that didn’t bootloop! (YAH!) But… It didn’t do anything. We were only meet with a Motorola Logo for a LONG time. (I called it Boot Stuck but GPT said its actually called a Stall, like the thing with manual transmition cars) LineageOS Boot Animation? Like the past chapter, with a bunch of back and forths (and 14 tries) I was meet with three dots circling (and that felt REALLYY GOOD). After a litle more it was the LineageOS Logo Animation, then the dots again, then it repeated… Looking through GPT logs, it was actually the GPU driver that was kinda broken, it fixed it! WAIT, “WELCOME TO LINEAGEOS!” WTF!!!!! In the TRY number 18, didn’t need to flash the partition table once more (that was strange), animation logo, LineageOS logo and, the “Welcome to LineageOS!” text. I was astonished, the first step to having the phone, Android 16 and almost brand new. The thing is… Touch of the screen didn’t work… So we need to work on that. Plus all the commits and changes."}, {"post_id": 37260, "ts": "2026-07-29T20:32:46Z", "hours": 7.975, "text": "Sleep, laziness, and vibecoding a dangerous mix. Context This project is my try on making a old phone a Motorola G9 Plus have the latest Android (16 because 17 is not yet released by LineageOS). In the past had bootloop problems, phone wipes problems, almost bricking it a few thousand times. In some AI session (likely Claude) a try to fix the bootloop, created a faster bootloop. And since me and Claude, GPT and Kimi been trying to choose a path forward. Kernel Update In the last devlog, I said about possible paths forward to fix the BPF (Berkeley Packet Filter), and the easiest solution is to try using OpenEL Assosiation (openela) 4.14.x kernel. Its going to be easier, plus the backport of the BPF would be painful but it has been done in the past, so I would likely succeed! Faster Bootloops I’ve spent all this devlog time, trying to find the culprit and the veridict is… I don’t know , I’ve speding my time looking back at Claude Sessions and I found that it had messed with zygote in one of its tries to fix the bootloop of ~20-30 seconds, and it made it bootloop faster, so… It also could be other things but the Zygote angles was likely. I’ve researched the whole project, and I couldn’t find anything tracking his changes, so I guess it had messed somewhere deep into the repo, and we couldn’t figure out where. Next Steps I’ve decided to delete the whole lineageos directory, and start from “scratch”. Of course I would use the repos in my Github, but at least, I would be in a more stable directory. I will also do a small rewrite (third time is a charm) to AGENTS.md, with the instruction “tell me all the places where you messed, and use YOUR FUCKING NATIVE TOOLS TO EDIT NOT BASH MTF”."}, {"post_id": 35957, "ts": "2026-07-27T18:52:01Z", "hours": 7.9058, "text": "Linux Kernel sucks for Android Devices Context This project is my try on making a old phone a Motorola G9 Plus have the latest Android (16 because 17 is not yet released by LineageOS). In the past had bootloop problems, phone wipes problems, almost bricking it a few thousand times. Semi-Bricking fix Opus 5 , fixed this problem really easily it realized that the Motorola Bootloader Menu (MBM) didn’t like LineageOS standart bootctrl, so it built one by itself! Another bootloop problem! After the fix, we tried the OS for the first time and it was AWESOME! It restarted the phone, the Bootloader Unlocked Warning appered (good sign that the OS exists), them I got stuck on the Motorola Logo for ~20-30 seconds and it bootlooped… That wasn’t a good thing but it meant that the “Semi-Bricking” was fixed and now we had some Kernel problem again… Bootloop fix (8x tries…) I just smashed Opus 5 , GPT-5.6-Sol , and Kimi K3 (which Weights became avaliable today!) at the problem and they all got stuck trying to make the Logger work. In so many words and tokens they tried ALL kinds of loggers, and after ~2 days of trying to make some kind of logger work, they found that the problem… Culprit It was the “kernel 4.14 vs Android 16 BPF” , which means that the Android 16 requires a newer kernel in order to have a more up-to-date BPF (Berkeley Packet Filter, aka a Subsystem that allows User code to be ran at the Kernel Level) to work. Possible paths forward Try to use OpenEL Assosiation (openela) Kernel LTS , which has a longer support for the 4.14.x kernel (which had the official End-Of-Life at January 2024, with an extension to December 2024) Vibecode the shit out of the kernel to try to update to the 5.10.x LTS (which has End-Of-Life December of 2026) or a newer version like 6.1 LTS, 6.6 LTS, 6.12 LTS, 6.18 LTS. Give up… Well, what I am going to do is likely the 2nd option. But I need to find out if is going to be 5.10, or one of the 6.x versions. I am going to start with what other developers at LineageOS did. Its likely the best option"}, {"post_id": 34329, "ts": "2026-07-24T22:51:50Z", "hours": 9.3106, "text": "How to not brick your phone 6x times in a row! Context This project has the objective of making an old device. A Motorola G9 Plus (codename: odessa) have a new life with Android 16 and the latest 4.14.x kernel. In the last post I said about how GPT-5.6-Sol, helped me fix a USB device first-try. Kernel Update Well, after the fix to 4.14.282 was done we proceed to to 4.14.283 it bootlooped, so after giving the task to GPT it fixed and we were done! With 4.14.283 fixed, I went to another midpoint this time was 4.14.310 and it also worked flawlessly! So we just merged 4.14.336 and also done! Applying the OTA update! Well, I did some of the clean-up to the OS and proceeded to appling the update, it didn’t work. The dumbass here didn’t read that the recovery warning that was an version older than the kernel itself. Well after rebuilding and choosing the right one, I got an Installation Error with code 5. After giving AI a few more jobs to run it fixed it. Almost bricking the device After the AI fixing the Install error code 5 the install proceed as inteded and a popup appered saying something like “Reboot the device to proceed or to install addons” (addons can be Magisk/Root or Google Play Store). Well after restart a red text appered screaming “NO VALID OPERATING SYSTEM FOUND”. And after going back to the bootloader the device was in a semi-bricked state, without being able to flash a Recovery or anything. The GPT suggested using Motorola Software Fix tool to bring the device back to Android 11 and removing the bricked state. After trying the tool it basicly said “Well your device is now a paper-weight, if you want ship it to Motorola and they might be able to fix”. Hopeless and at 01:00 AM I started googling and found a tool from a fellow developer called Gorniaky (I knew him from my Discord Bot days, really smart folk) called Flashfile-XML-to-Batch-Script-for-Windows and after converting the stollen previuous stock ROM files I was able to make then in a bash script that was able to restore the phone Partion Table and everything back to there to the stock ROM days. Next steps Well, I tried again making GPT work to fix the OS installation nuking problem but it didn’t work, my limits ran-out, my friend didn’t wanna give up his for mine so I bought the OpenCode Go and tried the newly release Kimi K3 model, pretty good one, that was heavly distilled by Fable. Well, it didn’t work so well, it made a 200k+ tokens chat and ran out of my 5-hour limit. Next day I woke up and tried the “Hey, you kinda went too strong on my limits, what that hell did you did so far?” and it had fixed my problems. Semi-Bricking the device once again (5x times) Well, we came to the vicious cycle (the image, that is not mine, will haunt me for days…) for nuking everything and fixing it afterwards. The latest news are it is broken, I got my friend to give me access to his Claude Pro account and test Opus 5 and its currently working heavlly to fix this problem."}, {"post_id": 33278, "ts": "2026-07-23T02:07:37Z", "hours": 1.3903, "text": "I love gpt-5.6-sol…. Well, if you caught off guard, let me tell about this project. I have a old phone a Motorola G9 Plus (codename: odessa) and in the last year I found a custom ROM to it which made it more up-to-date and faster. The problem is it was an unofficial build because the phone is not widely avaliable (only sold in Latin America with most of them in Brazil) so it didn’t get any updates. Well, thats when I realized that we have heavly capable AI models that likely will be able to scrape from incomplete work and make this phone up-to-date again. Currently we are trying to update the android kernel (its linux but a bit different) to the latest 4.14 LTS (its already discontinued) for support on Android 16 (without any shortcuts), but just jumping from 4.14.190 to 4.14.336 its a big-leap and one that bootlooped the phone. We tried multiple things and we came down to find a midpoint where things start to break more, and we find that is between 4.14.283–4.14.286, and while trying 4.14.282 we found that the ADB (a developer tool that allows to push a OTA build, applications, etc) wasn’t working. I tried multiple times with gpt-5.6-terra (a cheaper version to the sol variant) to fix this USB problem but it couldn’t. So after 4 tries, I tried again with sol and it did it first try!"}, {"post_id": 32470, "ts": "2026-07-21T17:44:11Z", "hours": 1.1136, "text": "Well, I am trying to figure it out why the kernel is crashing (aka: my phone is bootlooping before entering the recovery menu). With some help of the AI agent, it figure it out that his attempt on jumping the kernel version from 4.14.170 to 4.14.336 wasn’t actually the best one. So right now where are creating midpoints to figure it out when it stops working. Currently we are at 4.14.282 with the problem in between 4.14.283–4.14.286. I have been using the agent to do it but there is only so much a AI Plan can give you in limits, so I might need to start figuring out how to do the whole merge process by myself. (I hate git cli…) My working theory is that some of the basis I gave it to work such as sm7150-mainline , and the abandoned sm6150 kernel in the lineageos org, is actually starting to backfire because its really old and incomplete work. Also the problem might not be in a single version but in multiple of them. Next dev-log will have more info."}, {"post_id": 32079, "ts": "2026-07-21T00:04:41Z", "hours": 12.8869, "text": "Well, this is just a post to log the current hours. On the previous days I got to build the “target-files-package” (basicly a ZIP with the data of LineageOS that is given to the recovery). A lot of errors occurred during building. Since, I don’t know how to code in C, I always gave the problems to the AI Agent. But the build times was always too long, and everytime I got to a error, I got to rewait the whole thing. Thats when @Gabriel-Hiss said to me “use sccache rather than ccache, that the LineageOS Wiki gives you”. I changed, build times were 100x faster. After some back and fourths with the agents and a bunch of local testing, the AI said “well, now its time to try it”. So I went to the recovery (its not the LineageOS recovery, was from a previous unofficial public build for tequilaOS) put the LineageOS files (plus addons), and booted, and boot-looped and now I am back at tequilaOS… Follow up for more!"}]...
|
Title: LineageOS for motorola/odessa by @megarthur Title: LineageOS for motorola/odessa by @megarthur | Stardance
Devlogs:
Well, this is just a post to log the current hours. On the previous days I got to build the “target-files-package” (basicly a ZIP with the data of LineageOS that is given to the recovery). A lot of errors occurred during building. Since, I don’t know how to code in C, I always gave the problems to the AI Agent. But the build times was always too long, and everytime I got to a error, I got to rewait the whole thing. Thats when @Gabriel-Hiss said to me “use sccache rather than ccache, that the LineageOS Wiki gives you”. I changed, build times were 100x faster. After some back and fourths with the agents and a bunch of local testing, the AI said “well, now its time to try it”. So I went to the recovery (its not the LineageOS recovery, was from a previous unofficial public build for tequilaOS) put the LineageOS files (plus addons), and booted, and boot-looped and now I am back at tequilaOS… Follow up for more!
Well, I am trying to figure it out why the kernel is crashing (aka: my phone is bootlooping before entering the recovery menu). With some help of the AI agent, it figure it out that his attempt on jumping the kernel version from 4.14.170 to 4.14.336 wasn’t actually the best one. So right now where are creating midpoints to figure it out when it stops working. Currently we are at 4.14.282 with the problem in between 4.14.283–4.14.286. I have been using the agent to do it but there is only so much a AI Plan can give you in limits, so I might need to start figuring out how to do the whole merge process by myself. (I hate git cli…) My working theory is that some of the basis I gave it to work such as sm7150-mainline , and the abandoned sm6150 kernel in the lineageos org, is actually starting to backfire because its really old and incomplete work. Also the problem might not be in a single version but in multiple of them. Next dev-log will have more info.
I love gpt-5.6-sol…. Well, if you caught off guard, let me tell about this project. I have a old phone a Motorola G9 Plus (codename: odessa) and in the last year I found a custom ROM to it which made it more up-to-date and faster. The problem is it was an unofficial build because the phone is not widely avaliable (only sold in Latin America with most of them in Brazil) so it didn’t get any updates. Well, thats when I realized that we have heavly capable AI models that likely will be able to scrape from incomplete work and make this phone up-to-date again. Currently we are trying to update the android kernel (its linux but a bit different) to the latest 4.14 LTS (its already discontinued) for support on Android 16 (without any shortcuts), but just jumping from 4.14.190 to 4.14.336 its a big-leap and one that bootlooped the phone. We tried multiple things and we came down to find a midpoint where things start to break more, and we find that is between 4.14.283–4.14.286, and while trying 4.14.282 we found that the ADB (a developer tool that allows to push a OTA build, applications, etc) wasn’t working. I tried multiple times with gpt-5.6-terra (a cheaper version to the sol variant) to fix this USB problem but it couldn’t. So after 4 tries, I tried again with sol and it did it first try!
How to not brick your phone 6x times in a row! Context This project has the objective of making an old device. A Motorola G9 Plus (codename: odessa) have a new life with Android 16 and the latest 4.14.x kernel. In the last post I said about how GPT-5.6-Sol, helped me fix a USB device first-try. Kernel Update Well, after the fix to 4.14.282 was done we proceed to to 4.14.283 it bootlooped, so after giving the task to GPT it fixed and we were done! With 4.14.283 fixed, I went to another midpoint this time was 4.14.310 and it also worked flawlessly! So we just merged 4.14.336 and also done! Applying the OTA update! Well, I did some of the clean-up to the OS and proceeded to appling the update, it didn’t work. The dumbass here didn’t read that the recovery warning that was an version older than the kernel itself. Well after rebuilding and choosing the right one, I got an Installation Error with code 5. After giving AI a few more jobs to run it fixed it. Almost bricking the device After the AI fixing the Install error code 5 the install proceed as inteded and a popup appered saying something like “Reboot the device to proceed or to install addons” (addons can be Magisk/Root or Google Play Store). Well after restart a red text appered screaming “NO VALID OPERATING SYSTEM FOUND”. And after going back to the bootloader the device was in a semi-bricked state, without being able to flash a Recovery or anything. The GPT suggested using Motorola Software Fix tool to bring the device back to Android 11 and removing the bricked state. After trying the tool it basicly said “Well your device is now a paper-weight, if you want ship it to Motorola and they might be able to fix”. Hopeless and at 01:00 AM I started googling and found a tool from a fellow developer called Gorniaky (I knew him from my Discord Bot days, really smart folk) called Flashfile-XML-to-Batch-Script-for-Windows and after converting the stollen previuous stock ROM files I was able to make then in a bash script that was able to restore the phone Partion Table and everything back to there to the stock ROM days. Next steps Well, I tried again making GPT work to fix the OS installation nuking problem but it didn’t work, my limits ran-out, my friend didn’t wanna give up his for mine so I bought the OpenCode Go and tried the newly release Kimi K3 model, pretty good one, that was heavly distilled by Fable. Well, it didn’t work so well, it made a 200k+ tokens chat and ran out of my 5-hour limit. Next day I woke up and tried the “Hey, you kinda went too strong on my limits, what that hell did you did so far?” and it had fixed my problems. Semi-Bricking the device once again (5x times) Well, we came to the vicious cycle (the image, that is not mine, will haunt me for days…) for nuking everything and fixing it afterwards. The latest news are it is broken, I got my friend to give me access to his Claude Pro account and test Opus 5 and its currently working heavlly to fix this problem.
Linux Kernel sucks for Android Devices Context This project is my try on making a old phone a Motorola G9 Plus have the latest Android (16 because 17 is not yet released by LineageOS). In the past had bootloop problems, phone wipes problems, almost bricking it a few thousand times. Semi-Bricking fix Opus 5 , fixed this problem really easily it realized that the Motorola Bootloader Menu (MBM) didn’t like LineageOS standart bootctrl, so it built one by itself! Another bootloop problem! After the fix, we tried the OS for the first time and it was AWESOME! It restarted the phone, the Bootloader Unlocked Warning appered (good sign that the OS exists), them I got stuck on the Motorola Logo for ~20-30 seconds and it bootlooped… That wasn’t a good thing but it meant that the “Semi-Bricking” was fixed and now we had some Kernel problem again… Bootloop fix (8x tries…) I just smashed Opus 5 , GPT-5.6-Sol , and Kimi K3 (which Weights became avaliable today!) at the problem and they all got stuck trying to make the Logger work. In so many words and tokens they tried ALL kinds of loggers, and after ~2 days of trying to make some kind of logger work, they found that the problem… Culprit It was the “kernel 4.14 vs Android 16 BPF” , which means that the Android 16 requires a newer kernel in order to have a more up-to-date BPF (Berkeley Packet Filter, aka a Subsystem that allows User code to be ran at the Kernel Level) to work. Possible paths forward Try to use OpenEL Assosiation (openela) Kernel LTS , which has a longer support for the 4.14.x kernel (which had the official End-Of-Life at January 2024, with an extension to December 2024) Vibecode the shit out of the kernel to try to update to the 5.10.x LTS (which has End-Of-Life December of 2026) or a newer version like 6.1 LTS, 6.6 LTS, 6.12 LTS, 6.18 LTS. Give up… Well, what I am going to do is likely the 2nd option. But I need to find out if is going to be 5.10, or one of the 6.x versions. I am going to start with what other developers at LineageOS did. Its likely the best option
Sleep, laziness, and vibecoding a dangerous mix. Context This project is my try on making a old phone a Motorola G9 Plus have the latest Android (16 because 17 is not yet released by LineageOS). In the past had bootloop problems, phone wipes problems, almost bricking it a few thousand times. In some AI session (likely Claude) a try to fix the bootloop, created a faster bootloop. And since me and Claude, GPT and Kimi been trying to choose a path forward. Kernel Update In the last devlog, I said about possible paths forward to fix the BPF (Berkeley Packet Filter), and the easiest solution is to try using OpenEL Assosiation (openela) 4.14.x kernel. Its going to be easier, plus the backport of the BPF would be painful but it has been done in the past, so I would likely succeed! Faster Bootloops I’ve spent all this devlog time, trying to find the culprit and the veridict is… I don’t know , I’ve speding my time looking back at Claude Sessions and I found that it had messed with zygote in one of its tries to fix the bootloop of ~20-30 seconds, and it made it bootloop faster, so… It also could be other things but the Zygote angles was likely. I’ve researched the whole project, and I couldn’t find anything tracking his changes, so I guess it had messed somewhere deep into the repo, and we couldn’t figure out where. Next Steps I’ve decided to delete the whole lineageos directory, and start from “scratch”. Of course I would use the repos in my Github, but at least, I would be in a more stable directory. I will also do a small rewrite (third time is a charm) to AGENTS.md, with the instruction “tell me all the places where you messed, and use YOUR FUCKING NATIVE TOOLS TO EDIT NOT BASH MTF”.
“Built it, flashed it, bootlooped.” WAIT NO???? Context Well, I like to thinker with shit, and recently I’ve come more used to AI Tools and how good they actually became at coding. So I said, why not extend the previusly extend life of an Android Device by vibecoding the shit out of previous incomplete projects of a Motorola SM6150 kernel and make it work? In the past we had a bunch of bootloops, kernel problems, incomplete API surfaces, almost bricking the device 6x times in a row. And much more (read past devlogs) Faster Bootloops Well, in Software Engineering the anwser always may be WAY more simple than it looks. In the case of the “flash” of the Motorola Logo (fast bootloop), it had something to do with in how the OTA package messes with the partition table. In those cases the anwser was just to do flash the Stock Partition table of the device ( fastboot flash partition ), and it would just boot. This happened WAY too many times, so in the (spoiler: end of the post) that was just randomly fixed. Boot stall? After way too many back and forths with GPT, a new OpenCode config (abusing the heck out of GPT-5.6-Luna in Max Reasoning as a subagent) we had a phone that didn’t bootloop! (YAH!) But… It didn’t do anything. We were only meet with a Motorola Logo for a LONG time. (I called it Boot Stuck but GPT said its actually called a Stall, like the thing with manual transmition cars) LineageOS Boot Animation? Like the past chapter, with a bunch of back and forths (and 14 tries) I was meet with three dots circling (and that felt REALLYY GOOD). After a litle more it was the LineageOS Logo Animation, then the dots again, then it repeated… Looking through GPT logs, it was actually the GPU driver that was kinda broken, it fixed it! WAIT, “WELCOME TO LINEAGEOS!” WTF!!!!! In the TRY number 18, didn’t need to flash the partition table once more (that was strange), animation logo, LineageOS logo and, the “Welcome to LineageOS!” text. I was astonished, the first step to having the phone, Android 16 and almost brand new. The thing is… Touch of the screen didn’t work… So we need to work on that. Plus all the commits and changes.
Validation, fixing, commiting, repeat. Context I have a old phone an Motorola G9 Plus it runs with the Qualcomm SM6150 chipset, there is other phones with it but non Motorola were mainteined. Thats when I decided that the current AI tools likelly I could update the Kernel (with Backports, a term I didn’t know until I started working in this project). A bunch of updates were made, and we had made the device boot into the “Welcome, to LineageOS”, except the touch didn’t work and still needs to flash the partition table in order to work… Fixing and Testing This and the next post(s) will be just Testing, maybe fixing like, the touchscreen, them the Wi-Fi, Bluetooth (that one also fixed the Fingerprint). I (and the AI agents) had to fix a bunch of things, the GPS took some time like the Wi-Fi Hotspot. Right now, I am trying to validate all paths and attributes, it needs to fit the LineageOS Device Support Requirements , also working in adding it to Wiki in parallel Play Integrity and Root After the sucessful install, and a good enough state, I reinstalled from scratch and added Magisk (root) and MindTheGapps (Play Store for Custom ROM). They both worked. The tricky part was the Play Integrity, I read multiple articles on how to do it, but it came down to Installing the PlayIntegrityFix, ReZygisk (I could have used the native from Magisk but the tutorial said to use it), and Trick Store (+ an addon). And now it works fine. Complying with the LineageOS AI Coding Assitants Well, when I started the project, I didn’t read the fine-print so I needed to make ALL of my Commits (yeah this shit started REALLY vibecoded, I kinda thinked it wouldn’t work, right now I know WAY more than previously) comply with the guide, so which harness and which model did what. I made a OpenCode thread with gpt-5.6-luna to check my ccusage and assign each commit to there creator, and I realized, I used WAY too many models (gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna, kimi-k3, opus-5, MiniMax-M3), but they got the job done and this is almost finished…...
|
1792612530.1365426
|
1793217330.1365426
|
|
2308
|
Farga by @poyo | Stardance
|
poyo
|
0
|
57.66
|
0
|
[]
|
[{"post_id": 20868, "ts": "202 [{"post_id": 20868, "ts": "2026-07-02T16:15:57Z", "hours": 20.1578, "text": "REPOS ARE NOW EDITABLE AND BROWSABLE finally You can pull , clone and push repos, with proper SSH authentication! It works fine. You can access a repo from the web view at /@user/repo-name , which will show you the root of the git repo, and its README (if detected.) You can also visit directories and read files inside each dir. The layout miiiiiight change, but it’s pretty good as-is. Repo creation has been updated too! Now it doesn’t generate a branch by default. You cannot imagine how happy I was when I finally got everything working :3 😭 The git library’s documentation was awful and it took me three full iterations to get it working."}, {"post_id": 13576, "ts": "2026-06-22T07:20:57Z", "hours": 24.1206, "text": "Repos, Configuration, SSH keys… they work! It took a long while because Go (lang) I might have been pretty slow :P I implemented a couple things: repos, configuration, and I’ve began writing the SSH server. When you create a repo, an actual git repo is also created on the filesystem. Since this project is meant to be used by just me, I don’t need anything fancier or more performant. I made it so you can make them private too. Configuration options were also relatively easy to implement. All I did was take advantage of my form validation middleware. Updating the DB schema was trivial. You can upload SSH keys now too- Imagine how I felt after 2 hours of debugging failed repo creation and then realizing: shit, I didn’t pass a pointer to the database function, didn’t I See ya, Deuces"}, {"post_id": 3603, "ts": "2026-06-06T16:30:17Z", "hours": 10.0503, "text": "I made a whole lot of progress: I setup the template engine, cool asf styles, registration and logging in!! It took me a while because I’m not fluent in Go(lang). However, I’m very glad it worked out great! I also had to implement a wrapper around Go’s crypto/argon lib, since it wouldn’t give me a nice format to store password hashes in. I’m using UUID v7s for the sessions because I love UUIDs, really. + it’s not as sensitive as a numeric ID. I’m glad I got it working! Now I’ll write some authentication middleware. A friend of mine helped me choose the color palette, and I’m very fond of it."}, {"post_id": 358, "ts": "2026-06-01T17:56:14Z", "hours": 3.335, "text": "Setting up the Go(lang) project! (it’s my first time learning go and templates were kinda confusing)"}]...
|
Title: Farga by @poyo | Stardance
Devlogs:
Settin Title: Farga by @poyo | Stardance
Devlogs:
Setting up the Go(lang) project! (it’s my first time learning go and templates were kinda confusing)
I made a whole lot of progress: I setup the template engine, cool asf styles, registration and logging in!! It took me a while because I’m not fluent in Go(lang). However, I’m very glad it worked out great! I also had to implement a wrapper around Go’s crypto/argon lib, since it wouldn’t give me a nice format to store password hashes in. I’m using UUID v7s for the sessions because I love UUIDs, really. + it’s not as sensitive as a numeric ID. I’m glad I got it working! Now I’ll write some authentication middleware. A friend of mine helped me choose the color palette, and I’m very fond of it.
Repos, Configuration, SSH keys… they work! It took a long while because Go (lang) I might have been pretty slow :P I implemented a couple things: repos, configuration, and I’ve began writing the SSH server. When you create a repo, an actual git repo is also created on the filesystem. Since this project is meant to be used by just me, I don’t need anything fancier or more performant. I made it so you can make them private too. Configuration options were also relatively easy to implement. All I did was take advantage of my form validation middleware. Updating the DB schema was trivial. You can upload SSH keys now too- Imagine how I felt after 2 hours of debugging failed repo creation and then realizing: shit, I didn’t pass a pointer to the database function, didn’t I See ya, Deuces
REPOS ARE NOW EDITABLE AND BROWSABLE finally You can pull , clone and push repos, with proper SSH authentication! It works fine. You can access a repo from the web view at /@user/repo-name , which will show you the root of the git repo, and its README (if detected.) You can also visit directories and read files inside each dir. The layout miiiiiight change, but it’s pretty good as-is. Repo creation has been updated too! Now it doesn’t generate a branch by default. You cannot imagine how happy I was when I finally got everything working :3 😭 The git library’s documentation was awful and it took me three full iterations to get it working....
|
1792544004.5109384
|
1793408004.5109384
|
|
41357
|
Normal Golf game Multiplayer Mod by @Mr-Milky-Way Normal Golf game Multiplayer Mod by @Mr-Milky-Way | Stardance...
|
Mr-Milky-Way
|
0
|
57.65
|
0
|
[]
|
[{"post_id": 80264, "ts": "202 [{"post_id": 80264, "ts": "2026-10-17T00:33:25Z", "hours": 33.2419, "text": "NOW I KNOW THIS LOOKS BAD, BUT IT’S NOT MY FAULT ( mostly ) Ok, so my last devlog was 3 months ago, and not devloging was like 60% not my fault. Basically, I was making a lot of official bug reports for the game, do to, ya know, making a multiplayer mod. So after I posted that last devlog (like 2 weeks lol) luke asked me if I wanted to be a beta tester, and obv I said yes, part of that was that I couldn’t share anything about what will be in the game, which also means pictures, or any code for my mod (bc that might leak smt related to the game). So I just didn’t devlog, then forgot about stardance :( BUT I have a lot of cool things to show off: I spent a lot of time working on the character models, I wanted something that would fit the vibe, and after a little bit of work (and a few models) I pulled one of the videos of Luke from the files and made that the character model. I think it fits the vibe and is pretty cool. I also got the map to sync up so that if the host changes the map (like opens a gate) it also opens on the client side. That took awhile to get right and is kinda unoptimized, but it works I also added AUIDO!!! This took waayyyyy to long and it kinda jank, BUT it works, ball sounds come from that players ball, and global sounds are, well… global. Next up scoring and better other players ball trails: I added 2 scoring modes, one from Nintendo switch sports golf, and the other is just normal golf. Along with the scoreboard I also made it so that each player would have there own ball color. Oh also I did some bug fixes lol, hard to test a multiplayer mod with 1 client lmao (I have some testers now tho) also added steam overlay support so you can join them from steam overlay PICS/DEMOS Check out this crazy shot done using my multiplayer mod :) Player model A bunch of score card stuff Ball trails with player color (example)"}, {"post_id": 36838, "ts": "2026-07-29T04:53:00Z", "hours": 24.4064, "text": "Welp it happened again, Signed up for a hack club event then forgot about it till I was already past 10 hours on multiple projects Anyways, this is a mod for a unity game called Normal Golf Game by Luke Muscat (The guy that made Fruit Ninja and Jetpack Joyride). It adds multiplayer. Currently it supports 2 different frameworks (Photon Fusion and Steamworks). This is because I’m lazy i set up the whole thing to work with fusion first instead of just learning steamworks. Fusion has a free version that works with unity, but it has a 20 player limit. Steamworks is free and has no player limit, which is why it’s better. BUT normally photon fusion is easier to set up with unity, and I already know it so thats why I started with it. I learned at about the 6 hour mark that photon fusion is only easy for unity… when you are not modding. I also made the mistake of not setting up git at the start so when I swapped over to Steamworks I would have to start a git repo or just delete all of my code. So I did neither and added a Steamworks build option and a Fusion option so that I could build for both of them. (I set up a git repo at after a little while tho) Oh btw the game isn’t even out yet, I made all of this for the demo. Learning Steamworks was really easy but hindsight is 20/20 or smt ig. I even filmed a trickshot with it Pics in order Pic of Room host/Join menu pic of the shot perceptive of that trickshot i hit (Other player is visible as a cylinder) I wish I had more to show, but this is it for now If anyone has any ideas on what the player model should be I am very open to suggestions."}]...
|
Title: Normal Golf game Multiplayer Mod by @Mr-Mil Title: Normal Golf game Multiplayer Mod by @Mr-Milky-Way | Stardance
Devlogs:
Welp it happened again, Signed up for a hack club event then forgot about it till I was already past 10 hours on multiple projects Anyways, this is a mod for a unity game called Normal Golf Game by Luke Muscat (The guy that made Fruit Ninja and Jetpack Joyride). It adds multiplayer. Currently it supports 2 different frameworks (Photon Fusion and Steamworks). This is because I’m lazy i set up the whole thing to work with fusion first instead of just learning steamworks. Fusion has a free version that works with unity, but it has a 20 player limit. Steamworks is free and has no player limit, which is why it’s better. BUT normally photon fusion is easier to set up with unity, and I already know it so thats why I started with it. I learned at about the 6 hour mark that photon fusion is only easy for unity… when you are not modding. I also made the mistake of not setting up git at the start so when I swapped over to Steamworks I would have to start a git repo or just delete all of my code. So I did neither and added a Steamworks build option and a Fusion option so that I could build for both of them. (I set up a git repo at after a little while tho) Oh btw the game isn’t even out yet, I made all of this for the demo. Learning Steamworks was really easy but hindsight is 20/20 or smt ig. I even filmed a trickshot with it Pics in order Pic of Room host/Join menu pic of the shot perceptive of that trickshot i hit (Other player is visible as a cylinder) I wish I had more to show, but this is it for now If anyone has any ideas on what the player model should be I am very open to suggestions.
NOW I KNOW THIS LOOKS BAD, BUT IT’S NOT MY FAULT ( mostly ) Ok, so my last devlog was 3 months ago, and not devloging was like 60% not my fault. Basically, I was making a lot of official bug reports for the game, do to, ya know, making a multiplayer mod. So after I posted that last devlog (like 2 weeks lol) luke asked me if I wanted to be a beta tester, and obv I said yes, part of that was that I couldn’t share anything about what will be in the game, which also means pictures, or any code for my mod (bc that might leak smt related to the game). So I just didn’t devlog, then forgot about stardance :( BUT I have a lot of cool things to show off: I spent a lot of time working on the character models, I wanted something that would fit the vibe, and after a little bit of work (and a few models) I pulled one of the videos of Luke from the files and made that the character model. I think it fits the vibe and is pretty cool. I also got the map to sync up so that if the host changes the map (like opens a gate) it also opens on the client side. That took awhile to get right and is kinda unoptimized, but it works I also added AUIDO!!! This took waayyyyy to long and it kinda jank, BUT it works, ball sounds come from that players ball, and global sounds are, well… global. Next up scoring and better other players ball trails: I added 2 scoring modes, one from Nintendo switch sports golf, and the other is just normal golf. Along with the scoreboard I also made it so that each player would have there own ball color. Oh also I did some bug fixes lol, hard to test a multiplayer mod with 1 client lmao (I have some testers now tho) also added steam overlay support so you can join them from steam overlay PICS/DEMOS Check out this crazy shot done using my multiplayer mod :) Player model A bunch of score card stuff Ball trails with player color (example)...
|
1792802914.5923064
|
1793407714.5923064
|
|
1025
|
Seergraph by @Zephyr | Stardance
|
Zephyr
|
0
|
57.6
|
0
|
[]
|
[{"post_id": 26436, "ts": "202 [{"post_id": 26436, "ts": "2026-07-11T07:15:52Z", "hours": 9.3689, "text": "NEW DEVLOG!! I’m terribly behind on a lot of work but that’s okay, lets keep going So the call extraction is proving to be MUCH more difficult that I expected. Turns out, there are a lot of ways to call a callable symbol in javascript But that’s fine, I’ve gotten most of it down now, just a few more cases to handle: the this keyword return values indirect parameter calls After I’m done with call extraction, all that’s left to do is figure out how im going to save this graph, then I can use it to make my architectural linter CLI :D"}, {"post_id": 19845, "ts": "2026-07-01T07:42:24Z", "hours": 10.045, "text": "Its time…. for another devlog :> Okay so, here’s a concise list describing what I’ve accomplished: Make binding symbols to represent symbols which have been imported from another file Create aliases edges to connect binding symbols to the actual symbol, OR to connect namespace import symbols to the actual file being imported Create lookup / index tables for my data, then realize that i don’t need all of them during graph build time, then delete some of the indexes Major refactor of source code to use the new GraphBuilder class instead of manually collecting symbols/edges Write testttssssssss Clean up types (it was a mess, but its better now) Now, I’m changing my main analyzer entry point to support multi-file tests without having to actually create the files (right now, it only supports code input of filepath input). After that, i can FINALLY. AND I MEAN FINALLY. move on to call extraction :> (and yes, this is yet another screenshot of the terminal / IDE cuz im still trying to extract data, theres not much to show )"}, {"post_id": 16167, "ts": "2026-06-26T08:43:08Z", "hours": 9.5747, "text": "NEW DEVLOGGG. Okay so i’ve been super busy recently so not a lot of work done :> but i completed the export extraction, and also import extraction (which was surprisingly easy because turns out ts-morph does a lot of the heavy lifting for me)! Was going to move on to call extraction, when i realized a few things: I need to resolve my imports. How am i supposed to know what an imported symbol is referring to if they don’t have a symbol? I need to create aliases edges for my binding symbols (which are technically dummy symbols used to represent the imported symbol that is being referred to), in order to connect them to their actual symbol. I need lookup tables! :0 which i completely forgot about. So now I’ll be creating lookup tables as well via incremental updates. :> After i resolve the above, i can FINALLY move on to call extraction I’ve also decided to change what my project is for! Having a graph representation of an actual codebase is super powerful, so I’ll be using it to make some sort of architectural linter (like eslint but for architecture instead of code syntax) This is what i have in mind currently: layers : { api : \" src/routes/** \" , services : \" src/services/** \" , repositories : \" src/repositories/** \" , }, rules : [ // Layer rules — explicit forbidden edges noCrossLayerCalls ({ from : \" api \" , to : \" repositories \" }), // Path rules — enforce mandatory intermediaries mustGoThrough ({ from : \" api \" , to : \" repositories \" , through : \" services \" }), // Cluster rules — graph-inferred boundaries noUnexpectedCrossClusterCalls (), allowCrossClusterCall ({ from : \" payments \" , to : \" shared \" }), ] Obviously, its still a work in progress :> but i like where its going, will be working much more often hopefully (P.S, the image shows my export extraction details)"}, {"post_id": 11722, "ts": "2026-06-19T02:52:54Z", "hours": 9.7944, "text": "NEW DEVLOG. Okay so: I finished my symbol extraction and I have moved on to extracting exports :0 Unfortunately, all i have to show for it is STILL console output, but we’re getting there :> For the symbol extraction, i did a MAJOR refactoring of my code to use generator functions, and I’m much happier with the output now :D I also added extraction of some other symbols, and change the object extraction strategy to use a recursive approach (if i hit a property that contains an object, i recurse). For export extraction, I go over all export symbols that I found inside of the source file and then I handle their initializers. Basically: see what is being exported, and make an edge from the file to the export :> Some hard cases that I have to handle include default exports and export specifiers. These aren’t exactly the same as other types of exports in the parsed AST, so I need to make sure some weird cases are working as well. Next step is finishing my export extraction, writing a buncha tests, and then moving on to call extraction."}, {"post_id": 9048, "ts": "2026-06-15T03:16:20Z", "hours": 9.1664, "text": "Okay devlog time :> So far I’ve been really focused on accurate symbol extraction from the AST, I need to have enough information extraction about what functions are actually useful enough to qualify as a symbol, because I don’t want a symbol for some random .map() callback function! Anyways, the image i’ve attached below is a dual view of the symbols im extracting. On the left, I’ve only got ids (for a quicker glance) and on the right I’ve got the full symbols for each id! Also, after the first devlog, I realized the complexity of the project and instantly decided to write tests, so I’ve been doing that as well :> I don’t want to break something accidentally in the future without even knowing smh So far, im creating a symbol for: non-exported variables that contain a function exported variables named classes named class’s methods named function declarations and arrow functions nested function declarations and arrow functions an object’s properties that are arrow functions/function expressions intermediate objects of a parent object that contains at least one callable descendant, that act as namespaces a function’s methods Right now, I still need to collect a symbol for: default exports, whether named or not types enums interfaces Anonymous classes stored in a variable After that, I need to write a couple of more tests, refactor my code a little (it’s pretty messy right now), and then move on to the call graph, where I’ll have to extract CallFacts (basically whenever a symbol is being called/referred to)"}, {"post_id": 6767, "ts": "2026-06-11T10:29:18Z", "hours": 9.6475, "text": "Okay! This is supposed to be a local tool that takes in a repository, creates a huge graph out of the entire thing (with relationships between imports, exports, function calls, etc), and then based on the graph, I’ll be able to answer questions like “what is this function for?”, or “What functions depend on this?” The first step is scanning the repo (the easy part). Doing this was quite easy, since I just needed to use node’s fs module. The next step is significantly more challenging: creating the graph. First, I’ll have to parse each file and get an AST out of it, then i’ll have to traverse it in order to collect all the information i need, along with all of the relationships. Currently, this is the only output i can screenshot since im just trying to correctly parse and collect the AST nodes x-x but yes, i think its going to turn out well in the future :>"}]...
|
Title: Seergraph by @Zephyr | Stardance
Devlogs:
Title: Seergraph by @Zephyr | Stardance
Devlogs:
Okay! This is supposed to be a local tool that takes in a repository, creates a huge graph out of the entire thing (with relationships between imports, exports, function calls, etc), and then based on the graph, I’ll be able to answer questions like “what is this function for?”, or “What functions depend on this?” The first step is scanning the repo (the easy part). Doing this was quite easy, since I just needed to use node’s fs module. The next step is significantly more challenging: creating the graph. First, I’ll have to parse each file and get an AST out of it, then i’ll have to traverse it in order to collect all the information i need, along with all of the relationships. Currently, this is the only output i can screenshot since im just trying to correctly parse and collect the AST nodes x-x but yes, i think its going to turn out well in the future :>
Okay devlog time :> So far I’ve been really focused on accurate symbol extraction from the AST, I need to have enough information extraction about what functions are actually useful enough to qualify as a symbol, because I don’t want a symbol for some random .map() callback function! Anyways, the image i’ve attached below is a dual view of the symbols im extracting. On the left, I’ve only got ids (for a quicker glance) and on the right I’ve got the full symbols for each id! Also, after the first devlog, I realized the complexity of the project and instantly decided to write tests, so I’ve been doing that as well :> I don’t want to break something accidentally in the future without even knowing smh So far, im creating a symbol for: non-exported variables that contain a function exported variables named classes named class’s methods named function declarations and arrow functions nested function declarations and arrow functions an object’s properties that are arrow functions/function expressions intermediate objects of a parent object that contains at least one callable descendant, that act as namespaces a function’s methods Right now, I still need to collect a symbol for: default exports, whether named or not types enums interfaces Anonymous classes stored in a variable After that, I need to write a couple of more tests, refactor my code a little (it’s pretty messy right now), and then move on to the call graph, where I’ll have to extract CallFacts (basically whenever a symbol is being called/referred to)
NEW DEVLOG. Okay so: I finished my symbol extraction and I have moved on to extracting exports :0 Unfortunately, all i have to show for it is STILL console output, but we’re getting there :> For the symbol extraction, i did a MAJOR refactoring of my code to use generator functions, and I’m much happier with the output now :D I also added extraction of some other symbols, and change the object extraction strategy to use a recursive approach (if i hit a property that contains an object, i recurse). For export extraction, I go over all export symbols that I found inside of the source file and then I handle their initializers. Basically: see what is being exported, and make an edge from the file to the export :> Some hard cases that I have to handle include default exports and export specifiers. These aren’t exactly the same as other types of exports in the parsed AST, so I need to make sure some weird cases are working as well. Next step is finishing my export extraction, writing a buncha tests, and then moving on to call extraction.
NEW DEVLOGGG. Okay so i’ve been super busy recently so not a lot of work done :> but i completed the export extraction, and also import extraction (which was surprisingly easy because turns out ts-morph does a lot of the heavy lifting for me)! Was going to move on to call extraction, when i realized a few things: I need to resolve my imports. How am i supposed to know what an imported symbol is referring to if they don’t have a symbol? I need to create aliases edges for my binding symbols (which are technically dummy symbols used to represent the imported symbol that is being referred to), in order to connect them to their actual symbol. I need lookup tables! :0 which i completely forgot about. So now I’ll be creating lookup tables as well via incremental updates. :> After i resolve the above, i can FINALLY move on to call extraction I’ve also decided to change what my project is for! Having a graph representation of an actual codebase is super powerful, so I’ll be using it to make some sort of architectural linter (like eslint but for architecture instead of code syntax) This is what i have in mind currently: layers : { api : " src/routes/** " , services : " src/services/** " , repositories : " src/repositories/** " , }, rules : [ // Layer rules — explicit forbidden edges noCrossLayerCalls ({ from : " api " , to : " repositories " }), // Path rules — enforce mandatory intermediaries mustGoThrough ({ from : " api " , to : " repositories " , through : " services " }), // Cluster rules — graph-inferred boundaries noUnexpectedCrossClusterCalls (), allowCrossClusterCall ({ from : " payments " , to : " shared " }), ] Obviously, its still a work in progress :> but i like where its going, will be working much more often hopefully (P.S, the image shows my export extraction details)
Its time…. for another devlog :> Okay so, here’s a concise list describing what I’ve accomplished: Make binding symbols to represent symbols which have been imported from another file Create aliases edges to connect binding symbols to the actual symbol, OR to connect namespace import symbols to the actual file being imported Create lookup / index tables for my data, then realize that i don’t need all of them during graph build time, then delete some of the indexes Major refactor of source code to use the new GraphBuilder class instead of manually collecting symbols/edges Write testttssssssss Clean up types (it was a mess, but its better now) Now, I’m changing my main analyzer entry point to support multi-file tests without having to actually create the files (right now, it only supports code input of filepath input). After that, i can FINALLY. AND I MEAN FINALLY. move on to call extraction :> (and yes, this is yet another screenshot of the terminal / IDE cuz im still trying to extract data, theres not much to show )
NEW DEVLOG!! I’m terribly behind on a lot of work but that’s okay, lets keep going So the call extraction is proving to be MUCH more difficult that I expected. Turns out, there are a lot of ways to call a callable symbol in javascript But that’s fine, I’ve gotten most of it down now, just a few more cases to handle: the this keyword return values indirect parameter calls After I’m done with call extraction, all that’s left to do is figure out how im going to save this graph, then I can use it to make my architectural linter CLI :D...
|
1792619629.2536116
|
1793224429.2536116
|
|
34593
|
4dof robotic arm by @marksalot | Stardance
|
marksalot
|
0
|
57.6
|
0
|
[]
|
[{"post_id": 40537, "ts": "202 [{"post_id": 40537, "ts": "2026-08-04T05:06:48Z", "hours": 1.0167, "text": "Spent time finishing up the preload mechanism for the gearbox, as well as printing and fitting revised gearboxes that wont spin in place with high torque loads!"}, {"post_id": 39862, "ts": "2026-08-03T03:59:58Z", "hours": 2.8167, "text": "Spent time today working on connection between the yaw mechanism and the base after 3d printing revealed even more flaws, and started working on a preloading mechanism for my gearboxes to reduce backlash and increase precision (shoulda done it from rip but better late than never)"}, {"post_id": 39299, "ts": "2026-08-02T05:48:04Z", "hours": 1.1333, "text": "primarily added a little rail for support because of excess load on gearbox due to extreme weight unbalance due to the weight of my motor setup, easy little fix, also some small little changes like skeletonizing motor mount on this segment,"}, {"post_id": 39183, "ts": "2026-08-01T23:41:56Z", "hours": 2.0836, "text": "Spent time around the arm printing, changing dimensions to match spec, and editing connector for better meshing"}, {"post_id": 37418, "ts": "2026-07-30T03:42:39Z", "hours": 0.8, "text": "Very minor devlog had a lot of things today, did some revisions to clearances, shifted support distance on my yaw axis connector, as well as ruggedizing (is that a word?) my planetary gearboxes to hopefully resist torques on it better!"}, {"post_id": 36706, "ts": "2026-07-28T22:43:01Z", "hours": 2.45, "text": "spent today doing revisions throughout the arm, starting with increased clearances in the parallel gripper dovetail linear rail (buzzwords I know), adding material in suspected and tested areas that have cracked in the real world print (the filament I ordered is here!), and finally small revisions to the control app to increase usability as well as updated DH offsets for the boring but working marker mount!!"}, {"post_id": 36165, "ts": "2026-07-28T02:29:00Z", "hours": 2.9667, "text": "Did some minor modeling tasks, like making a base for the arm, starting prints for prototyping because I decided to order my own filament (stardance funding is taking forever!!), made a base for securing the arm to ground, and spending alot of time cleaning up the github repo and giving it a remade readme for clarity, as well as a updated BOM for stardance to hopefully fund! Also verified new electronics setup still works totally and nots shorting out (thanks electricians tape!)."}, {"post_id": 34964, "ts": "2026-07-26T02:55:19Z", "hours": 2.0836, "text": "Added output to my psu, wired in buck converter, adjusted for correct output (5v) from my psu (24v), everything working other than 2/5 of my buck converters being faulty!"}, {"post_id": 34415, "ts": "2026-07-25T03:03:42Z", "hours": 3.4833, "text": "Spent time today working out a electronics housing, DH offset for parallel gripper, and added a simple marker gripper for POSCA markers for the arm demo, as well as bug fixes for control program **reminder all code written by either sonnet 5 or opus 4.8!"}, {"post_id": 33707, "ts": "2026-07-23T20:40:23Z", "hours": 2.2503, "text": "spent time today working on control of the gripper, decided on a separate microcontroller, a arduino nano, because of flash limits on the uno with gcobos/grbl4axis using like 97 percent of the memory on board!, using a separate COM connection with the app seems to work well, with built in PCA9685 detection. Also did a small amount of work on a case for all the electronics!"}, {"post_id": 33324, "ts": "2026-07-23T04:08:26Z", "hours": 1.6667, "text": "Finalized parallel gripper limit design, finally figured out how fusion fasteners worked (actually really easy!), Fixed E axis, and updated software for motion tuning!"}, {"post_id": 33255, "ts": "2026-07-23T00:50:17Z", "hours": 2.9003, "text": "Spent time today doing chores really in the cad files, like renaming all bodies and sketches to match their purpose for once, and also begin implementation of a sliding lock mechanism for the racks integrated into the parallel gripper!"}, {"post_id": 32690, "ts": "2026-07-22T00:25:26Z", "hours": 3.7003, "text": "Today I split time between getting my demo idea of the arm writing a word (suggestions for that?), getting a gripper design I actually like, and the tpu sleeves for said gripper. Stay tuned for more!"}, {"post_id": 32162, "ts": "2026-07-21T04:01:19Z", "hours": 4.5667, "text": "Today spent time editing cad models, starting design on a new gripper because the old one left a lot to be desired, and did more work on the arm’s demo once built! stay tuned"}, {"post_id": 31604, "ts": "2026-07-20T04:22:48Z", "hours": 1.3, "text": "Updated control app with many things, biggest being pathing to different point smoothly, unfortunately live control of the arm via human is going to be an issue, fork of grbl I am using is limited by buffer, however pre-planned paths run smoothly enough hopefully, cant wait to get everything working on a real arm, just waiting on funding to hit (I’m out of filament :() **NOTE all code written by either sonnet 5 or opus 4.8"}, {"post_id": 31462, "ts": "2026-07-19T20:46:15Z", "hours": 2.4669, "text": "Working on control program for the arm! I have a custom ik and forward kinematic solver coupled with a gcode sender in order to send commands to a arduino uno running a fork of grbl, gcobos/grbl4axis! (what being special about it is using the A axis as another motor rather than extruder/ spindle) I was able to get all axis working (other than A but thats due to a faulty arduino D13 pin not working), all up on github!(NOTE** all code written by claude sonnet 5)"}, {"post_id": 31061, "ts": "2026-07-19T04:48:41Z", "hours": 0.9167, "text": "Spent time working on dh table parameters for inverse kinematics solving, anybody have good ideas for software to simulate the arm? Thanks!"}, {"post_id": 30373, "ts": "2026-07-17T21:03:52Z", "hours": 3.5003, "text": "Ok really tough session. After tons of testing several hours of debugging the A axis on my cnc shield wouldnt work, it wasnt the driver, socket, wire, or stepper, in the end I concluded that the arduino itself was faulty after many tests, I’m ordering a new one, but on the upside I did get a wiring diagram done!"}, {"post_id": 29845, "ts": "2026-07-17T00:04:01Z", "hours": 1.4003, "text": "Final fork support for wrist, started working on dimensions for inverse kinematics equations"}, {"post_id": 29703, "ts": "2026-07-16T19:51:36Z", "hours": 3.2833, "text": "Clearances for 3d printing, redimensioning base, and supporting joints to take pressure off of planetary gearboxes using a clevis fork like design off of bikes also suggestions for the background color of the next render?"}, {"post_id": 29131, "ts": "2026-07-15T20:05:50Z", "hours": 2.8667, "text": "The gripper has been added. I went with a dual servo setup using 2 pretty standard servos and the actual gripper uses a really cool fish fin rib design where it automatically deforms around the object passively, at the tradeoff of maximum payload capacity, but you can change the gripper easily!"}, {"post_id": 28719, "ts": "2026-07-15T04:34:28Z", "hours": 1.55, "text": "Finishing touches, final arm, rendering, preparing proposal for funding"}, {"post_id": 28666, "ts": "2026-07-15T01:52:50Z", "hours": 2.8, "text": "Forearm added. Wow had a huge heart attack thinking i messed the whole design up and wasted an hour on a nonexistent problem, because of a mistake in initial dimensioning that would have ended up with the upper arm being completely straight up and down! Well first time making a robot arm so learning experience ig. other than cad i also tuned vref on all DRV88 stepper motor drivers with a demo link here https://www.youtube.com/shorts/iS-jFYrCbGg ."}, {"post_id": 28042, "ts": "2026-07-14T02:01:04Z", "hours": 2.1503, "text": "added upper arm and motor mount for forearm as well as fixing DRV stepper motor drivers and resoldering a new working fuse into the cnc shield"}, {"post_id": 27901, "ts": "2026-07-13T20:31:45Z", "hours": 1.4503, "text": "designing base and upper arm connector"}]...
|
Title: 4dof robotic arm by @marksalot | Stardance
Title: 4dof robotic arm by @marksalot | Stardance
Devlogs:
designing base and upper arm connector
added upper arm and motor mount for forearm as well as fixing DRV stepper motor drivers and resoldering a new working fuse into the cnc shield
Forearm added. Wow had a huge heart attack thinking i messed the whole design up and wasted an hour on a nonexistent problem, because of a mistake in initial dimensioning that would have ended up with the upper arm being completely straight up and down! Well first time making a robot arm so learning experience ig. other than cad i also tuned vref on all DRV88 stepper motor drivers with a demo link here https://www.youtube.com/shorts/iS-jFYrCbGg .
Finishing touches, final arm, rendering, preparing proposal for funding
The gripper has been added. I went with a dual servo setup using 2 pretty standard servos and the actual gripper uses a really cool fish fin rib design where it automatically deforms around the object passively, at the tradeoff of maximum payload capacity, but you can change the gripper easily!
Clearances for 3d printing, redimensioning base, and supporting joints to take pressure off of planetary gearboxes using a clevis fork like design off of bikes also suggestions for the background color of the next render?
Final fork support for wrist, started working on dimensions for inverse kinematics equations
Ok really tough session. After tons of testing several hours of debugging the A axis on my cnc shield wouldnt work, it wasnt the driver, socket, wire, or stepper, in the end I concluded that the arduino itself was faulty after many tests, I’m ordering a new one, but on the upside I did get a wiring diagram done!
Spent time working on dh table parameters for inverse kinematics solving, anybody have good ideas for software to simulate the arm? Thanks!
Working on control program for the arm! I have a custom ik and forward kinematic solver coupled with a gcode sender in order to send commands to a arduino uno running a fork of grbl, gcobos/grbl4axis! (what being special about it is using the A axis as another motor rather than extruder/ spindle) I was able to get all axis working (other than A but thats due to a faulty arduino D13 pin not working), all up on github!(NOTE** all code written by claude sonnet 5)
Updated control app with many things, biggest being pathing to different point smoothly, unfortunately live control of the arm via human is going to be an issue, fork of grbl I am using is limited by buffer, however pre-planned paths run smoothly enough hopefully, cant wait to get everything working on a real arm, just waiting on funding to hit (I’m out of filament :() **NOTE all code written by either sonnet 5 or opus 4.8
Today spent time editing cad models, starting design on a new gripper because the old one left a lot to be desired, and did more work on the arm’s demo once built! stay tuned
Today I split time between getting my demo idea of the arm writing a word (suggestions for that?), getting a gripper design I actually like, and the tpu sleeves for said gripper. Stay tuned for more!
Spent time today doing chores really in the cad files, like renaming all bodies and sketches to match their purpose for once, and also begin implementation of a sliding lock mechanism for the racks integrated into the parallel gripper!
Finalized parallel gripper limit design, finally figured out how fusion fasteners worked (actually really easy!), Fixed E axis, and updated software for motion tuning!
spent time today working on control of the gripper, decided on a separate microcontroller, a arduino nano, because of flash limits on the uno with gcobos/grbl4axis using like 97 percent of the memory on board!, using a separate COM connection with the app seems to work well, with built in PCA9685 detection. Also did a small amount of work on a case for all the electronics!
Spent time today working out a electronics housing, DH offset for parallel gripper, and added a simple marker gripper for POSCA markers for the arm demo, as well as bug fixes for control program **reminder all code written by either sonnet 5 or opus 4.8!
Added output to my psu, wired in buck converter, adjusted for correct output (5v) from my psu (24v), everything working other than 2/5 of my buck converters being faulty!
Did some minor modeling tasks, like making a base for the arm, starting prints for prototyping because I decided to order my own filament (stardance funding is taking forever!!), made a base for securing the arm to ground, and spending alot of time cleaning up the github repo and giving it a remade readme for clarity, as well as a updated BOM for stardance to hopefully fund! Also verified new electronics setup still works totally and nots shorting out (thanks electricians tape!).
spent today doing revisions throughout the arm, starting with increased clearances in the parallel gripper dovetail linear rail (buzzwords I know), adding material in suspected and tested areas that have cracked in the real world print (the filament I ordered is here!), and finally small revisions to the control app to increase usability as well as updated DH offsets for the boring but working marker mount!!
Very minor devlog had a lot of things today, did some revisions to clearances, shifted support distance on my yaw axis connector, as well as ruggedizing (is that a word?) my planetary gearboxes to hopefully resist torques on it better!
Spent time around the arm printing, changing dimensions to match spec, and editing connector for better meshing
primarily added a little rail for support because of excess load on gearbox due to extreme weight unbalance due to the weight of my motor setup, easy little fix, also some small little changes like skeletonizing motor mount on this segment,
Spent time today working on connection between the yaw mechanism and the base after 3d printing revealed even more flaws, and started working on a preloading mechanism for my gearboxes to reduce backlash and increase precision (shoulda done it from rip but better late than never)
Spent time finishing up the preload mechanism for the gearbox, as well as printing and fitting revised gearboxes that wont spin in place with high torque loads!...
|
1792781320.09153
|
1793386120.09153
|
|
67421
|
EN.FO by @Eucatastrophe | Stardance
|
Eucatastrophe
|
0
|
57.57
|
0
|
[]
|
[{"post_id": 77992, "ts": "202 [{"post_id": 77992, "ts": "2026-10-09T04:06:04Z", "hours": 0.7625, "text": "troubleshooting pcb didn’t work because of some mystery reason that I’m going to figure out later, but battery would only turn the backlight on, and the code wouldn’t turn the backlight on, even explicitly setting the pin to high. mysterious. ugh well anyway, I’m ordering another one because I also fixed a component so that it would be flush with the board"}, {"post_id": 76866, "ts": "2026-10-04T21:28:37Z", "hours": 1.0556, "text": "my pcb got here from pcbway!!! soldered some components to the board. turns out I bought the wrong size of JST connector (by a couple millimeters…) next step is fixing that, and printing the enclosure with translucent HTPLA & PETG."}, {"post_id": 76329, "ts": "2026-10-03T06:48:48Z", "hours": 2.3514, "text": "Software: fixed a bug about unit conversions, also took some pictures for the readme! Also check out this e-ink thingy, I was gonna use it for this project but it didn’t fit the use case very well. Dunno what I’ll use it for in the future. Code credits to blurPP/ssd1681_epaper_driver_micropython !! for the demo"}, {"post_id": 76076, "ts": "2026-10-02T08:25:23Z", "hours": 53.4039, "text": "Somehow we’re starting at 52 hours, probably more since I fiddled with it for a really long time while trying to learn microelectronics.. Anyway, since I joined this pretty late with this project, honestly the software part is mostly finished. I spent the last month testing the sensor drafting out figma layouts making the page navigation architecture in circuitpython making pages making a whole ass CAD model for printing an enclosure So this week I made some games! They use two buttons, since the main page navigation and UI of the environment sensor uses two buttons. It runs on a TFT LCD!!! But for ease of testing, I have a True/False flag in the code that runs it through pygame (adafruit_displayio_blinka library, I think) so I can simulate and test on the computer. Pretty neat"}]...
|
Title: EN.FO by @Eucatastrophe | Stardance
Devlog Title: EN.FO by @Eucatastrophe | Stardance
Devlogs:
Somehow we’re starting at 52 hours, probably more since I fiddled with it for a really long time while trying to learn microelectronics.. Anyway, since I joined this pretty late with this project, honestly the software part is mostly finished. I spent the last month testing the sensor drafting out figma layouts making the page navigation architecture in circuitpython making pages making a whole ass CAD model for printing an enclosure So this week I made some games! They use two buttons, since the main page navigation and UI of the environment sensor uses two buttons. It runs on a TFT LCD!!! But for ease of testing, I have a True/False flag in the code that runs it through pygame (adafruit_displayio_blinka library, I think) so I can simulate and test on the computer. Pretty neat
Software: fixed a bug about unit conversions, also took some pictures for the readme! Also check out this e-ink thingy, I was gonna use it for this project but it didn’t fit the use case very well. Dunno what I’ll use it for in the future. Code credits to blurPP/ssd1681_epaper_driver_micropython !! for the demo
my pcb got here from pcbway!!! soldered some components to the board. turns out I bought the wrong size of JST connector (by a couple millimeters…) next step is fixing that, and printing the enclosure with translucent HTPLA & PETG.
troubleshooting pcb didn’t work because of some mystery reason that I’m going to figure out later, but battery would only turn the backlight on, and the code wouldn’t turn the backlight on, even explicitly setting the pin to high. mysterious. ugh well anyway, I’m ordering another one because I also fixed a component so that it would be flush with the board...
|
1793109224.3450162
|
1793714024.3450162
|
|
54225
|
YACK by @Definitly-Not-Me | Stardance
|
Definitly-Not-Me
|
1
|
57.5
|
186
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-22T18:45:35Z", "hours": 55.0, "multiplier": 3.44, "payout": 186, "blessing": "neutral", "text": "I tried to build a language model Model. My expectation were not high. I just hoped he would be multilingual (English + French + My Mother tongue) and that I would learn how LLMs works along the way. Overall the experience was pretty rewarding. Except for the Kaggle Part: This one, I hated it with passion. Due to monetary requirement both models are under-trained but they can produce coherent sentences. So I consider it a win. I’m hosting the project on my laptop so whoever review this: Don’t take your time >:( ** Just Kidding ☺️**", "repo": "https://github.com/Definitly-Not-Me/Patrick", "demo": "https://definitlynotme.site"}]...
|
[{"post_id": 75633, "ts": "202 [{"post_id": 75633, "ts": "2026-09-30T16:32:34Z", "hours": 2.0122, "text": "Dear shipwrights I don’t know if you’ll read this but I still feel like writing it since I’ve nothing else to write. In response to the feedback provided, here’s what changed: I deleted some part of my README as well as corrected grammar mistakes since it seemed to “contain” part written by AI. Honestly the grammar mistakes should’ve given me an alibi but … nevermind. I have patched garbage characters generation during inference. I truly hope that was the “ bug ” you mentioned in your review. If it was not, I’m afraid there’s not more I can do without spending ton of time/money on computing to improve my Language Model output (NOT chatbot). Which would be sad. Really sad. For the planet and for me. Detailed AI usage in the project description. I really hope the third time will pay home 🥲"}, {"post_id": 72678, "ts": "2026-09-23T13:59:13Z", "hours": 0.4858, "text": "Dear shipwrights My Cloudflared tunnel went down and I don’t know why. Thus the link in my shipping devlog is now invalid. I looked up if there was any way to get a more lasting url and all solutions I found were either paid services (domain name) or required a credit card. I have neither. I will wait for your message and try to improve networking skills for the next ship. Thanks for reading me. Sadly, @Definitly-Not-Me"}, {"post_id": 72349, "ts": "2026-09-22T18:37:55Z", "hours": 2.0403, "text": "Wait ! shipping require you to post a devlog ? Bad luck on top of bad luck. I found no cloud hosting platform that check all my requirements so for the time being, I’m a cloud provider :) For those who will review my project, I ask for your understanding. Nothing to show for this one. So here is picture of my Language Model mascot. Patrick Star"}, {"post_id": 71936, "ts": "2026-09-21T20:21:38Z", "hours": 10.3194, "text": "Last devlog before shipping: Against my best wishes, none of my models reached a usable state. Even though their best loss is quite low (2.94 and 2.81) I didn’t manage to reach the finetuning stage. To continue training I would have to start pouring money to get more compute power. And I don’t have that…. So that’ll be all. I will finish the UI and deploy locally first until I manage to find a vps before my project get a reviewer."}, {"post_id": 68777, "ts": "2026-09-15T18:51:37Z", "hours": 9.3614, "text": "Premature optimization is the root of all evils I still fell in the trap… I struggled for weeks to produce a model that can generate coherent text. Now all what is left is to ship or perhaps even fine-tune and be done. But nooooo, we need to atleast make PeRfOrmAnt . Ended adding some mods to the original GPT-2. I found that there’s even a whole community around this . I gained a lot from them. Now, the project is a Frankenstein DeepSeek . Time will tell if this was a good idea (-_-) Here’s a picture of the last training round. Things went quite well despite a bug affecting the learning rate."}, {"post_id": 65660, "ts": "2026-09-10T23:05:05Z", "hours": 1.6197, "text": "Updates and Bloopers Even though Kaggle runs on Google Collab, it turn out Collab is much more easier to use than Kaggle. To my grand deception, Collab is not as generous as Kaggle. So I will not change my workflow. I think I also need to change dataset. Also what’s up with Stardance and all those auxiliary events/challenges ?"}, {"post_id": 65020, "ts": "2026-09-09T20:25:25Z", "hours": 8.3361, "text": "Now we’re talking folks Reached a milestone. After nearly 10 hours of training on OpenwebText , the model can now formulate somewhat grammatically correct sentences. It’s not over though. Training was interrupted because apparently kaggle has a time limit for how long a notebook can run (on top on the weekly time limit). Sadly I have no interest in buying cloud compute for that, so I will just look for a richer dataset, reduce the number of epoch and crank up the learning rate."}, {"post_id": 63205, "ts": "2026-09-06T21:31:41Z", "hours": 4.2356, "text": "I’m tired boss Sorry, stardance but for my own good and sanity, I think I will have to give up or half bake this project. I really tried 😞"}, {"post_id": 59298, "ts": "2026-09-01T00:37:38Z", "hours": 3.1833, "text": "Two steps before the throne Finally deployed the training script to Kaggle. Now all there’s to be is wait and hope. A quick list of what’s new: Divided the training loop in many functions to handle dataloading, parsing, logging and more; Managed to find a copy of gutenberg books to serve as dataset; Implemented checkpoints in the training so that I will not lose all progress if I run out of compute; Dataloading is now done using np.memmap ensuring that only a portion of tokens are loaded in memory; Scaled the value of hyprparameters based on configuration of gpt-2 small (my main source is Chatgpt/GLM and a rough guess of number of epochs); Fixed a “ storage leak ” where the best model checkpoints where saved per epoch instead of overwriting previous one (totally my fault) Next: Fix my nonexistant git history while waiting for the training to finish"}, {"post_id": 58245, "ts": "2026-08-30T16:34:58Z", "hours": 7.7647, "text": "Small update on building a Language Model So after getting the architecture down and adding collecting some data, I started the training phase. That was one week ago …. Training is surprisingly (or not ?) actually more than just shoving in more data and expect it to work. Right now I’m struggling with finding sensible hyperparameters and getting the model to output something coherent. What’s new I mainly worked on the training loop and minor optimizations to hidden layers to distract myself while Pytorch was frying my APU. Of course there were also bugs in the code that had to fix on the way. For monitoring the training I decided to use plain TUI built with Rich but I’m currently adding a csv logging for better history tracking. At first I was planning to run the training on my laptop but I understood why billions dollar companies needed so many datacenters. Anyway, I deployed it on Kaggle which also was harder than it should be. Next Take a break, Improve training loop, Deploy on Kaggle Forget about it"}, {"post_id": 54745, "ts": "2026-08-25T20:38:12Z", "hours": 7.6444, "text": "Devlog 0: Build a Large/Small/Whatever LM Overview Hello Stardance! Hello world appetIntern disdainwartsnine . Those were the first words of my Language Model, am feeling so fogging proud right now. I’m trying to get into ML for the next year (not just because of the hype). For my first projects, I tried building a simple perceptron as well as understanding the algorithm behind Tic-Tac-Toe. Nothing grandiose. Why aim so high for my next project since I’m not that knowledgeable ? Because I’m short of time and there are full tutorial available, that’s all. Goal & MVP The MVP goal is to be able to generate coherent text (will probably be gibberish since I’m not a billion dollars corpo) and implement simple RAG to compensate for the lack of intelligence. I plan to upgrade it as I learn more about LLMs and Transformers. The Current State I just got the basic unoptimized architecture down. It tooks so much time to understand the Transformer architecture and all the maths that goes behind it (thanks to 3Blue1Brown it was manageable). Now I need to train & evaluate the “Advanced Autocomplete Machine” so that It can start acting more like GPT2. Picture: Liking my rice ? 😏"}]...
|
Title: YACK by @Definitly-Not-Me | Stardance
Devl Title: YACK by @Definitly-Not-Me | Stardance
Devlogs:
Devlog 0: Build a Large/Small/Whatever LM Overview Hello Stardance! Hello world appetIntern disdainwartsnine . Those were the first words of my Language Model, am feeling so fogging proud right now. I’m trying to get into ML for the next year (not just because of the hype). For my first projects, I tried building a simple perceptron as well as understanding the algorithm behind Tic-Tac-Toe. Nothing grandiose. Why aim so high for my next project since I’m not that knowledgeable ? Because I’m short of time and there are full tutorial available, that’s all. Goal & MVP The MVP goal is to be able to generate coherent text (will probably be gibberish since I’m not a billion dollars corpo) and implement simple RAG to compensate for the lack of intelligence. I plan to upgrade it as I learn more about LLMs and Transformers. The Current State I just got the basic unoptimized architecture down. It tooks so much time to understand the Transformer architecture and all the maths that goes behind it (thanks to 3Blue1Brown it was manageable). Now I need to train & evaluate the “Advanced Autocomplete Machine” so that It can start acting more like GPT2. Picture: Liking my rice ? 😏
Small update on building a Language Model So after getting the architecture down and adding collecting some data, I started the training phase. That was one week ago …. Training is surprisingly (or not ?) actually more than just shoving in more data and expect it to work. Right now I’m struggling with finding sensible hyperparameters and getting the model to output something coherent. What’s new I mainly worked on the training loop and minor optimizations to hidden layers to distract myself while Pytorch was frying my APU. Of course there were also bugs in the code that had to fix on the way. For monitoring the training I decided to use plain TUI built with Rich but I’m currently adding a csv logging for better history tracking. At first I was planning to run the training on my laptop but I understood why billions dollar companies needed so many datacenters. Anyway, I deployed it on Kaggle which also was harder than it should be. Next Take a break, Improve training loop, Deploy on Kaggle Forget about it
Two steps before the throne Finally deployed the training script to Kaggle. Now all there’s to be is wait and hope. A quick list of what’s new: Divided the training loop in many functions to handle dataloading, parsing, logging and more; Managed to find a copy of gutenberg books to serve as dataset; Implemented checkpoints in the training so that I will not lose all progress if I run out of compute; Dataloading is now done using np.memmap ensuring that only a portion of tokens are loaded in memory; Scaled the value of hyprparameters based on configuration of gpt-2 small (my main source is Chatgpt/GLM and a rough guess of number of epochs); Fixed a “ storage leak ” where the best model checkpoints where saved per epoch instead of overwriting previous one (totally my fault) Next: Fix my nonexistant git history while waiting for the training to finish
I’m tired boss Sorry, stardance but for my own good and sanity, I think I will have to give up or half bake this project. I really tried 😞
Now we’re talking folks Reached a milestone. After nearly 10 hours of training on OpenwebText , the model can now formulate somewhat grammatically correct sentences. It’s not over though. Training was interrupted because apparently kaggle has a time limit for how long a notebook can run (on top on the weekly time limit). Sadly I have no interest in buying cloud compute for that, so I will just look for a richer dataset, reduce the number of epoch and crank up the learning rate.
Updates and Bloopers Even though Kaggle runs on Google Collab, it turn out Collab is much more easier to use than Kaggle. To my grand deception, Collab is not as generous as Kaggle. So I will not change my workflow. I think I also need to change dataset. Also what’s up with Stardance and all those auxiliary events/challenges ?
Premature optimization is the root of all evils I still fell in the trap… I struggled for weeks to produce a model that can generate coherent text. Now all what is left is to ship or perhaps even fine-tune and be done. But nooooo, we need to atleast make PeRfOrmAnt . Ended adding some mods to the original GPT-2. I found that there’s even a whole community around this . I gained a lot from them. Now, the project is a Frankenstein DeepSeek . Time will tell if this was a good idea (-_-) Here’s a picture of the last training round. Things went quite well despite a bug affecting the learning rate.
Last devlog before shipping: Against my best wishes, none of my models reached a usable state. Even though their best loss is quite low (2.94 and 2.81) I didn’t manage to reach the finetuning stage. To continue training I would have to start pouring money to get more compute power. And I don’t have that…. So that’ll be all. I will finish the UI and deploy locally first until I manage to find a vps before my project get a reviewer.
Wait ! shipping require you to post a devlog ? Bad luck on top of bad luck. I found no cloud hosting platform that check all my requirements so for the time being, I’m a cloud provider :) For those who will review my project, I ask for your understanding. Nothing to show for this one. So here is picture of my Language Model mascot. Patrick Star
Dear shipwrights My Cloudflared tunnel went down and I don’t know why. Thus the link in my shipping devlog is now invalid. I looked up if there was any way to get a more lasting url and all solutions I found were either paid services (domain name) or required a credit card. I have neither. I will wait for your message and try to improve networking skills for the next ship. Thanks for reading me. Sadly, @Definitly-Not-Me
Dear shipwrights I don’t know if you’ll read this but I still feel like writing it since I’ve nothing else to write. In response to the feedback provided, here’s what changed: I deleted some part of my README as well as corrected grammar mistakes since it seemed to “contain” part written by AI. Honestly the grammar mistakes should’ve given me an alibi but … nevermind. I have patched garbage characters generation during inference. I truly hope that was the “ bug ” you mentioned in your review. If it was not, I’m afraid there’s not more I can do without spending ton of time/money on computing to improve my Language Model output (NOT chatbot). Which would be sad. Really sad. For the planet and for me. Detailed AI usage in the project description. I really hope the third time will pay home 🥲
Ships:
I tried to build a language model Model. My expectation were not high. I just hoped he would be multilingual (English + French + My Mother tongue) and that I would learn how LLMs works along the way. Overall the experience was pretty rewarding. Except for the Kaggle Part: This one, I hated it with passion. Due to monetary requirement both models are under-trained but they can produce coherent sentences. So I consider it a win. I’m hosting the project on my laptop so whoever review this: Don’t take your time >:( ** Just Kidding ☺️**...
|
1793008163.0882738
|
1793094563.0882738
|
|
70485
|
SketchBoard by @jaisondavidm_cs25 | Stardance
|
jaisondavidm_cs25
|
0
|
57.33
|
0
|
[]
|
[{"post_id": 80968, "ts": "202 [{"post_id": 80968, "ts": "2026-10-19T12:44:02Z", "hours": 57.3319, "text": "i do this project for maconda but they now say to move to other events so i shipping here i already posted all develogs and commit the history properly you can refer all my develogs using this link https://macondo.hackclub.com/projects/6319"}]...
|
Title: SketchBoard by @jaisondavidm_cs25 | Stardan Title: SketchBoard by @jaisondavidm_cs25 | Stardance
Devlogs:
i do this project for maconda but they now say to move to other events so i shipping here i already posted all develogs and commit the history properly you can refer all my develogs using this link https://macondo.hackclub.com/projects/6319...
|
1793022451.405978
|
1793886451.405978
|
|
38706
|
Insub by @dapsvi | Stardance
|
dapsvi
|
0
|
57.32
|
0
|
[]
|
[{"post_id": 50665, "ts": "202 [{"post_id": 50665, "ts": "2026-08-19T22:54:50Z", "hours": 6.8922, "text": "Balright, debugging is horrible but I have to do it. WHERE DID MY 7 HOURS GO"}, {"post_id": 42914, "ts": "2026-08-07T21:31:40Z", "hours": 2.6786, "text": "Necessary cleanup : I am writing some unit tests for every. single. file. As well as adding comments, checking for obvious mistakes and making a custom Error system rather than returning Strings."}, {"post_id": 39659, "ts": "2026-08-02T19:42:10Z", "hours": 0.665, "text": "Gradually advancing in the code, small bug fix session for today as I have been busy for the last few days, phew"}, {"post_id": 38942, "ts": "2026-08-01T15:38:00Z", "hours": 0.2881, "text": "Tiny update today : finalizing the beta/proof of concept by fixing a few bugs"}, {"post_id": 38398, "ts": "2026-07-31T19:06:27Z", "hours": 0.7058, "text": "Wired up the rest of the API. I had to do this on my phone 💀💀💀 so the time didn’t count properly"}, {"post_id": 37664, "ts": "2026-07-30T15:37:51Z", "hours": 2.0806, "text": "Cleaning up the code, I implemented the start of an API to allow future front-ends to use that instead of my bulky code O_o"}, {"post_id": 37109, "ts": "2026-07-29T16:19:33Z", "hours": 1.6561, "text": "Wow, it took a few hours but I got the bug fixed (it was a one line bug bruh) + new logo ?"}, {"post_id": 36908, "ts": "2026-07-29T09:41:31Z", "hours": 5.3069, "text": "We have a working beta, wait no… I’ll probably have to debug for hours"}, {"post_id": 35505, "ts": "2026-07-26T23:54:19Z", "hours": 3.2769, "text": "Insub’s beta is almost done ! Only thing to fix is that you can only message one person at a time °o° - https://github.com/dapsvi/insub go star it !"}, {"post_id": 33705, "ts": "2026-07-23T20:37:48Z", "hours": 1.1553, "text": "The “distributed hash table” is the thing that replaces a central server in decentralised systems. It works by sharing the storage among “DHT nodes” on a voluntary or select basis, and the entries are present multiple times in the network to prevent malicious modifications. Insub is almost done with it !"}, {"post_id": 33658, "ts": "2026-07-23T19:06:38Z", "hours": 0.6144, "text": "New project banner!"}, {"post_id": 33506, "ts": "2026-07-23T14:46:34Z", "hours": 31.9975, "text": "The beta for insub is almost finished !"}]...
|
Title: Insub by @dapsvi | Stardance
Devlogs:
The Title: Insub by @dapsvi | Stardance
Devlogs:
The beta for insub is almost finished !
New project banner!
The “distributed hash table” is the thing that replaces a central server in decentralised systems. It works by sharing the storage among “DHT nodes” on a voluntary or select basis, and the entries are present multiple times in the network to prevent malicious modifications. Insub is almost done with it !
Insub’s beta is almost done ! Only thing to fix is that you can only message one person at a time °o° - https://github.com/dapsvi/insub go star it !
We have a working beta, wait no… I’ll probably have to debug for hours
Wow, it took a few hours but I got the bug fixed (it was a one line bug bruh) + new logo ?
Cleaning up the code, I implemented the start of an API to allow future front-ends to use that instead of my bulky code O_o
Wired up the rest of the API. I had to do this on my phone 💀💀💀 so the time didn’t count properly
Tiny update today : finalizing the beta/proof of concept by fixing a few bugs
Gradually advancing in the code, small bug fix session for today as I have been busy for the last few days, phew
Necessary cleanup : I am writing some unit tests for every. single. file. As well as adding comments, checking for obvious mistakes and making a custom Error system rather than returning Strings.
Balright, debugging is horrible but I have to do it. WHERE DID MY 7 HOURS GO...
|
1792518734.4262114
|
1793123534.4262114
|
|
18371
|
Sprocket by @amronos | Stardance
|
amronos
|
0
|
57.06
|
0
|
[]
|
[{"post_id": 36899, "ts": "202 [{"post_id": 36899, "ts": "2026-07-29T08:58:17Z", "hours": 8.6294, "text": "I forgot to devlog again :(. I first worked on creating a tool for the agent to ask the user questions. This is probably the best kind of question tool ever made. The agent can run it while working, stop it any time, continue working while asking a question, stop and ask a question, etc. It automatically adds a “Let me (the agent) decide” option, which is very good if you are completely into the vibes. I then also refactored a lot of code to make it less sloppy. During this I also made it so that projects are linked to git repositories when possible instead of a particular directory. This allows one to use multiple directories with the same project / change the project’s directory and makes the user experience much better. I also added the new kimi-k3 model from Moonshot to Sprocket -> it’s a very good, cheap, open-source model."}, {"post_id": 35022, "ts": "2026-07-26T05:37:13Z", "hours": 10.365, "text": "Nooooo, I forgot to devlog on time again. I made soooooo many improvements to the app. I properly released the app on npm by adding full release workflows for dev, canary, and latest. I worked on reducing the Convex db i/o as it was increasing very quickly which would have costed me a lot of money. There were also a whole bunch of problems with agent runs randomly ending or erroring out, I fixed all of them. I made it possible for the agent runs to continue even after you close the Sprocket browser tab. I added support for Claude Opus 5 and AWS bedrock mantle. I added support for agent skills, which you can store at ~/.agents/skills , ~/.sprocket/skills , and ./.sprocket/skills , alongside having skills built-in to Sprocket. There are no built-in skills yet, but I will be adding some soon. I also added context compaction to help reduce costs and make longer-running tasks possible. I also added light mode support and made the UI look better."}, {"post_id": 31204, "ts": "2026-07-19T12:39:17Z", "hours": 3.0789, "text": "I started using Sprocket to create Sprocket and discovered a few random crashes that needed fixing. After fixing them, I started working on getting the app ready for production. I added convex-test to the CI which allows me to add tests for convex functions that actually talk with the backend database. Alongside this, I also made convex deployments automatic for preview deployments on PRs and production deployments whenever something is merged into main. I also worked on improving the system prompt of the agent to make it work better, this mostly involved dividing everything into better sections and explicitly telling it to prefer the scrape_url tool over web_search as web_search is more expensive. I also worked on adding proper usage limits and subscription tiers. The subscription tiers only exist in the backend right now since I don’t have a way to accept payments fully set up. I also created a new page in the settings which shows the amount of usage left, when it resets, etc."}, {"post_id": 30575, "ts": "2026-07-18T08:35:15Z", "hours": 34.99, "text": "Ok, so apparently, I worked for 33h and 43m and completely forgot to devlog. I was sooo deep into making the project that I completely forgot about Stardance. I created around 30 PRs/commits with wayyyyy too much work done in them. I started this project before Stardance (during Flavortown) but never shipped it as it was barely complete. Before my current work, the project was just a vibe-coded experiment to see if it would even be possible for me to create my own coding/robotics AI agent that could actually beat what the frontier labs are making. The real work started with these 30 commits, I basically rewrote the entire app. The current features include a full AI coding agent which can run shell commands, edit files, surf the web, and fetch web pages as markdown. The app allows one to use the SOTA AI models from OpenAI, Anthropic, and xAI, switch between different reasoning and service tier modes, send images to the agent, run multiple agents/threads in parallel across multiple projects, and archive threads. The work featured solving various edge cases and bugs, and doing a ton of testing. Even after all this, for me personally, this project is only 1% done. There is so much more work that I want to do on this and improve it with. Here’s to more consistent devlogs! lol."}]...
|
Title: Sprocket by @amronos | Stardance
Devlogs:
Title: Sprocket by @amronos | Stardance
Devlogs:
Ok, so apparently, I worked for 33h and 43m and completely forgot to devlog. I was sooo deep into making the project that I completely forgot about Stardance. I created around 30 PRs/commits with wayyyyy too much work done in them. I started this project before Stardance (during Flavortown) but never shipped it as it was barely complete. Before my current work, the project was just a vibe-coded experiment to see if it would even be possible for me to create my own coding/robotics AI agent that could actually beat what the frontier labs are making. The real work started with these 30 commits, I basically rewrote the entire app. The current features include a full AI coding agent which can run shell commands, edit files, surf the web, and fetch web pages as markdown. The app allows one to use the SOTA AI models from OpenAI, Anthropic, and xAI, switch between different reasoning and service tier modes, send images to the agent, run multiple agents/threads in parallel across multiple projects, and archive threads. The work featured solving various edge cases and bugs, and doing a ton of testing. Even after all this, for me personally, this project is only 1% done. There is so much more work that I want to do on this and improve it with. Here’s to more consistent devlogs! lol.
I started using Sprocket to create Sprocket and discovered a few random crashes that needed fixing. After fixing them, I started working on getting the app ready for production. I added convex-test to the CI which allows me to add tests for convex functions that actually talk with the backend database. Alongside this, I also made convex deployments automatic for preview deployments on PRs and production deployments whenever something is merged into main. I also worked on improving the system prompt of the agent to make it work better, this mostly involved dividing everything into better sections and explicitly telling it to prefer the scrape_url tool over web_search as web_search is more expensive. I also worked on adding proper usage limits and subscription tiers. The subscription tiers only exist in the backend right now since I don’t have a way to accept payments fully set up. I also created a new page in the settings which shows the amount of usage left, when it resets, etc.
Nooooo, I forgot to devlog on time again. I made soooooo many improvements to the app. I properly released the app on npm by adding full release workflows for dev, canary, and latest. I worked on reducing the Convex db i/o as it was increasing very quickly which would have costed me a lot of money. There were also a whole bunch of problems with agent runs randomly ending or erroring out, I fixed all of them. I made it possible for the agent runs to continue even after you close the Sprocket browser tab. I added support for Claude Opus 5 and AWS bedrock mantle. I added support for agent skills, which you can store at ~/.agents/skills , ~/.sprocket/skills , and ./.sprocket/skills , alongside having skills built-in to Sprocket. There are no built-in skills yet, but I will be adding some soon. I also added context compaction to help reduce costs and make longer-running tasks possible. I also added light mode support and made the UI look better.
I forgot to devlog again :(. I first worked on creating a tool for the agent to ask the user questions. This is probably the best kind of question tool ever made. The agent can run it while working, stop it any time, continue working while asking a question, stop and ask a question, etc. It automatically adds a “Let me (the agent) decide” option, which is very good if you are completely into the vibes. I then also refactored a lot of code to make it less sloppy. During this I also made it so that projects are linked to git repositories when possible instead of a particular directory. This allows one to use multiple directories with the same project / change the project’s directory and makes the user experience much better. I also added the new kimi-k3 model from Moonshot to Sprocket -> it’s a very good, cheap, open-source model....
|
1792792407.5885677
|
1793397207.5885677
|
|
1681
|
Cyber Game Engine by @Cy | Stardance
|
Cy
|
1
|
57.0
|
785
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-30T06:27:02Z", "hours": 57.0, "multiplier": 13.71, "payout": 785, "blessing": "neutral", "text": "I have make The Cyber Game Engine, witch is a EXTREAMLY light weight game engine made with python and pygame. This is only a demo but I feel its at a useable point even though it has its bugs (some I dont know how to fix like the blank buttons). The most challenging part was the NPCs and 3d Projection and all the little problems that add up. What I am most proud of is making this whole project under 1.44mb to make it fit on a floppy drive and actually seeing what this little project has become. People who are going to use this project, just know that there are bugs and I am planning to add more features like a main menu system and sutch.", "repo": "https://github.com/Cybrock9000/CyberGameEngine", "demo": "https://github.com/Cybrock9000/CyberGameEngine/releases/tag/demo2"}]...
|
[{"post_id": 37444, "ts": "202 [{"post_id": 37444, "ts": "2026-07-30T06:01:51Z", "hours": 0.3597, "text": "Final touchups before demo ship!!!"}, {"post_id": 34473, "ts": "2026-07-25T06:33:42Z", "hours": 1.5597, "text": "You can now give the option to make some NPCs pushable. NPCs now have wall collision and player collision is reworked so you dont “stick” on walls anymore."}, {"post_id": 33915, "ts": "2026-07-24T06:40:02Z", "hours": 5.1158, "text": "Ive added a a few things like “dynamic” lighting and html documentation. Ive added some keyboard controls to the engine like moving the map with wasd. I changed some buttons around a tad and the gun works and sends NPCs a message (only one right now is die, but more flexibility soon). A demo ship might be coming soon maybe."}, {"post_id": 32826, "ts": "2026-07-22T07:00:23Z", "hours": 4.7206, "text": "Today is the day I realized I had to lock in in order to get the stuff I want. So, I have done quite a bit in that case like: The floor darkness is fixed, NPCs can be pickup items (kinda, only the gun is supported), very basic tool/weapon support, shooting with the gun and having it detect NPCs, starting the documentation page, lots of stuff behind the scenes like moving the map around with WASD, and a measuring tool for the map. The only problem (that bothers me because there is a lot of problems) Im having right now is the fps tanks when there is flooring. I tried to optimize it but that led nowhere. So you can disable flooring in the settings."}, {"post_id": 32197, "ts": "2026-07-21T06:22:11Z", "hours": 3.4047, "text": "I have added some stuff that is major. I have added FLOORS!!!!!! Using the same type of code for the walls but a little different, we can get ourselves some floors. I also added a toggle to swap between adding floors and walls (that W button) and you can see the floors behind the walls in the grid. The floors are slightly optimized to disappear if they are far too. They also support darkness. NPCs also got some stuff done too. they can move toward the player (and phase through walls) and there can be multiple NPCs."}, {"post_id": 31076, "ts": "2026-07-19T05:41:37Z", "hours": 2.8692, "text": "I honestly dont remember what I did the other day except that I made the npc disappear behind walls and some y pos stuff with the npc"}, {"post_id": 28737, "ts": "2026-07-15T05:33:36Z", "hours": 7.2611, "text": "I have not been working on these projects in a while because I found out that Terraria exists but today I have spent many hours working on both projects. Things I have done today: I finally started working on the NPC `s (It works, and I had to look WAY back to my old raycaster on scratch to figure it out lol), More stuff with the scripts (for the npc), Doom like hand (that bobs when you move), Done a alternative way to test the game your making without future problems (hopefully), Object/NPC panel (buttons dont work yet),Still under 1.44mb :) . Things I am going to do: Finish NPC, Fix some problems with the IDE, NPC Waypoints (Inspired by NZ:P), Audio scripting (so you can call when a sound should be played), Maybe NPC collision, Weapons/Tools support, Possible flooring/ceiling and more of the 3rd dimension instead of the raycaster feel (this is not a raycaster), Ingame guis, Win function, Keep this below 1.44mb, try to figure out how to use the formatting stuff on this website to make this look good. More development stuff here (might need to be updated): https://cybrock9000.github.io/CyberWolfGames/engine.html"}, {"post_id": 16106, "ts": "2026-06-26T06:04:20Z", "hours": 5.4675, "text": "I HAVE FIGGURED IT OUT!!! I HAVE MADE THE RENDERING FAST!!! Turns out I was checking every step that the ray moves (which is about 250) for 20 rays (5000 checks) for each wall (if its 10 walls, that is 50000 checks) which is very hardware expensive. I solved it by just doing one check per ray by firing the ray and checking it once (for those same stats above with this new method, it is 200 checks WHICH IS HUGE!!!). And that means that the is near no limit on how long the rays are. And now the games the engine makes are a smooth 60fps (uncapped is roughly 175-200fps) and before with the same map and settings it was 7-30fps. The engine will default the ray count to 30 with a ray dist of 500. I have also started working on the .cy script (top right pic) to make life easier doing coding for the engine to make your game. Right now it only looks for player.cy but I will have it load all in the scripts folder. The IDE that I am working on for this now can load and save files, it loads what words to be in color by loading a .json file, and you can scroll. My next steps are to work on the scripts and figure out objects/sprites (2d objects in a 3d world, look up Wolfenstein 3D to see what I mean). I also need to update my website to include documentation on how to use this engine ( https://cybrock9000.github.io/CyberWolfGames/index.html ). I would like to also polish up the engine too by making it more satisfying in some areas and also add button mappings to the map grid. With all that said, I am really happy on where this is going and I am still happy to say that this is still under 1.44mb :). -Cy"}, {"post_id": 14221, "ts": "2026-06-23T07:11:10Z", "hours": 4.5478, "text": "So its been a while since my last devlog and I have done not that much (I was busy and burned out), so Im going to talk. I have created a custom code editor that just handles the basics so far. Like: Writing stuff, multi line stuff, custom color pallets for fun and saving. This new IDE will help program in the custom programing language (when I get to that point). I need to figure out how to make the 3d rendering faster because right now it runs on an average 17-30fps (with no cap) when its near some walls. I am happy if it stayed at 30, but sometimes it drops to 7. Im thinking on executing this by some way of multithreading/multiprocessing or find a more optimized way to do the raycasting (which just checks to see if you are looking at a wall). One of the things that I am really stuck on though is putting the 2d sprites/objects/npcs into a 3d world. I have an idea on how to do it but putting it into code is tough. But even though I have a lot to do, Its still under 1.44mb"}, {"post_id": 7896, "ts": "2026-06-13T05:34:41Z", "hours": 4.8819, "text": "I have been working offline quite a bit and done quite a bit: option to enable darkness in the engine a vignette will draw when there is darkness there is now a sky (using the gross webp format for being a small file size) there is now a simple hud simple gravity jumping and crouching other tiny things still under 1.44mb if you are interested in more, plz visit here: https://cybrock9000.github.io/CyberWolfGames/index.html I wont be posting that much because of my internet being out but i am still working on both projects :)"}, {"post_id": 5429, "ts": "2026-06-09T06:09:07Z", "hours": 2.1956, "text": "I`ve done some stuff the past couple days: Have the option to have walls get darker the further they are The mouse now rotates the camera instead of arrow keys You can now set the player starting point if you are interested in pics and vids please look here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html"}, {"post_id": 3958, "ts": "2026-06-07T02:53:23Z", "hours": 3.0478, "text": "today I had a lot of free time that I spent working on this project, here is what I have done: Walls are now correctly layered depending on the distance (with the furthest one being first and the closest last) *screen smoothly scales to correct size instead of instantly being set to that size Started implementing the scripts but I need some time to figure out how I want to do it. Still under 1.44mb if you are interested in this project more, I suggest looking at my website to see cool pics and vids: https://cybrock9000.github.io/CyberWolfGames/engineDev.html"}, {"post_id": 3361, "ts": "2026-06-06T07:48:31Z", "hours": 2.4033, "text": "Today and yesterday i was a little busy but I did get stuff done: *Starting to do the script logic for the user to make custom events and other cool things *possibly faster rendering (haven’t fully tested) *still under 1.44mb *mouse inversion option for scrolling the scripts *lots of backend stuff If you would like to see the whole development process with videos and pics, the link is here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html"}, {"post_id": 1906, "ts": "2026-06-04T04:04:05Z", "hours": 2.1325, "text": "The things I have added to my game engine today: I have fixed the map grid cursor and implemented drawing walls. I made it possible to change the wall color in editor Changeable map grid cursor speed Other little tweaks Things I still need to do: Make it possible to delete a specific wall Rendering optimizations (it runs fine with low amounts of walls but when there is more than 15 there is a noticeable frame drop) Keep engine below 1.44mb to put it on a floppy drive someday (right now its 100kb) And other stuff that is not my top priority right now. If you want to see more pictures and videos, please look here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html"}, {"post_id": 1261, "ts": "2026-06-03T04:16:06Z", "hours": 3.6242, "text": "I have gotten a lot of stuff done today: worked a lot on the map grid, wall occlusion using raycasting, being able to turn the project into a exe, and some QOL tweaks! If you want to see more pictures and videos, please look here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html"}, {"post_id": 636, "ts": "2026-06-02T04:46:23Z", "hours": 1.3714, "text": "little look at the progress right now. I have added some settings and other buttons functionality’s. I fixed the map grid to properly show the map and added zooming to the map grid. I am planning to fix the way the 3d renderer renders walls eventually. If you want to see more pics and vids, please visit here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html"}, {"post_id": 543, "ts": "2026-06-02T00:52:19Z", "hours": 1.2856, "text": "worked on the little viewport that shows a 2d version of the map with accurate wall sizes and colors. and added controls to move the map and zoom in and out"}, {"post_id": 458, "ts": "2026-06-01T22:07:29Z", "hours": 1.0192, "text": "3d rendering of 2 walls"}]...
|
Title: Cyber Game Engine by @Cy | Stardance
Devlo Title: Cyber Game Engine by @Cy | Stardance
Devlogs:
3d rendering of 2 walls
worked on the little viewport that shows a 2d version of the map with accurate wall sizes and colors. and added controls to move the map and zoom in and out
little look at the progress right now. I have added some settings and other buttons functionality’s. I fixed the map grid to properly show the map and added zooming to the map grid. I am planning to fix the way the 3d renderer renders walls eventually. If you want to see more pics and vids, please visit here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html
I have gotten a lot of stuff done today: worked a lot on the map grid, wall occlusion using raycasting, being able to turn the project into a exe, and some QOL tweaks! If you want to see more pictures and videos, please look here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html
The things I have added to my game engine today: I have fixed the map grid cursor and implemented drawing walls. I made it possible to change the wall color in editor Changeable map grid cursor speed Other little tweaks Things I still need to do: Make it possible to delete a specific wall Rendering optimizations (it runs fine with low amounts of walls but when there is more than 15 there is a noticeable frame drop) Keep engine below 1.44mb to put it on a floppy drive someday (right now its 100kb) And other stuff that is not my top priority right now. If you want to see more pictures and videos, please look here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html
Today and yesterday i was a little busy but I did get stuff done: *Starting to do the script logic for the user to make custom events and other cool things *possibly faster rendering (haven’t fully tested) *still under 1.44mb *mouse inversion option for scrolling the scripts *lots of backend stuff If you would like to see the whole development process with videos and pics, the link is here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html
today I had a lot of free time that I spent working on this project, here is what I have done: Walls are now correctly layered depending on the distance (with the furthest one being first and the closest last) *screen smoothly scales to correct size instead of instantly being set to that size Started implementing the scripts but I need some time to figure out how I want to do it. Still under 1.44mb if you are interested in this project more, I suggest looking at my website to see cool pics and vids: https://cybrock9000.github.io/CyberWolfGames/engineDev.html
I`ve done some stuff the past couple days: Have the option to have walls get darker the further they are The mouse now rotates the camera instead of arrow keys You can now set the player starting point if you are interested in pics and vids please look here: https://cybrock9000.github.io/CyberWolfGames/engineDev.html
I have been working offline quite a bit and done quite a bit: option to enable darkness in the engine a vignette will draw when there is darkness there is now a sky (using the gross webp format for being a small file size) there is now a simple hud simple gravity jumping and crouching other tiny things still under 1.44mb if you are interested in more, plz visit here: https://cybrock9000.github.io/CyberWolfGames/index.html I wont be posting that much because of my internet being out but i am still working on both projects :)
So its been a while since my last devlog and I have done not that much (I was busy and burned out), so Im going to talk. I have created a custom code editor that just handles the basics so far. Like: Writing stuff, multi line stuff, custom color pallets for fun and saving. This new IDE will help program in the custom programing language (when I get to that point). I need to figure out how to make the 3d rendering faster because right now it runs on an average 17-30fps (with no cap) when its near some walls. I am happy if it stayed at 30, but sometimes it drops to 7. Im thinking on executing this by some way of multithreading/multiprocessing or find a more optimized way to do the raycasting (which just checks to see if you are looking at a wall). One of the things that I am really stuck on though is putting the 2d sprites/objects/npcs into a 3d world. I have an idea on how to do it but putting it into code is tough. But even though I have a lot to do, Its still under 1.44mb
I HAVE FIGGURED IT OUT!!! I HAVE MADE THE RENDERING FAST!!! Turns out I was checking every step that the ray moves (which is about 250) for 20 rays (5000 checks) for each wall (if its 10 walls, that is 50000 checks) which is very hardware expensive. I solved it by just doing one check per ray by firing the ray and checking it once (for those same stats above with this new method, it is 200 checks WHICH IS HUGE!!!). And that means that the is near no limit on how long the rays are. And now the games the engine makes are a smooth 60fps (uncapped is roughly 175-200fps) and before with the same map and settings it was 7-30fps. The engine will default the ray count to 30 with a ray dist of 500. I have also started working on the .cy script (top right pic) to make life easier doing coding for the engine to make your game. Right now it only looks for player.cy but I will have it load all in the scripts folder. The IDE that I am working on for this now can load and save files, it loads what words to be in color by loading a .json file, and you can scroll. My next steps are to work on the scripts and figure out objects/sprites (2d objects in a 3d world, look up Wolfenstein 3D to see what I mean). I also need to update my website to include documentation on how to use this engine ( https://cybrock9000.github.io/CyberWolfGames/index.html ). I would like to also polish up the engine too by making it more satisfying in some areas and also add button mappings to the map grid. With all that said, I am really happy on where this is going and I am still happy to say that this is still under 1.44mb :). -Cy
I have not been working on these projects in a while because I found out that Terraria exists but today I have spent many hours working on both projects. Things I have done today: I finally started working on the NPC `s (It works, and I had to look WAY back to my old raycaster on scratch to figure it out lol), More stuff with the scripts (for the npc), Doom like hand (that bobs when you move), Done a alternative way to test the game your making without future problems (hopefully), Object/NPC panel (buttons dont work yet),Still under 1.44mb :) . Things I am going to do: Finish NPC, Fix some problems with the IDE, NPC Waypoints (Inspired by NZ:P), Audio scripting (so you can call when a sound should be played), Maybe NPC collision, Weapons/Tools support, Possible flooring/ceiling and more of the 3rd dimension instead of the raycaster feel (this is not a raycaster), Ingame guis, Win function, Keep this below 1.44mb, try to figure out how to use the formatting stuff on this website to make this look good. More development stuff here (might need to be updated): https://cybrock9000.github.io/CyberWolfGames/engine.html
I honestly dont remember what I did the other day except that I made the npc disappear behind walls and some y pos stuff with the npc
I have added some stuff that is major. I have added FLOORS!!!!!! Using the same type of code for the walls but a little different, we can get ourselves some floors. I also added a toggle to swap between adding floors and walls (that W button) and you can see the floors behind the walls in the grid. The floors are slightly optimized to disappear if they are far too. They also support darkness. NPCs also got some stuff done too. they can move toward the player (and phase through walls) and there can be multiple NPCs.
Today is the day I realized I had to lock in in order to get the stuff I want. So, I have done quite a bit in that case like: The floor darkness is fixed, NPCs can be pickup items (kinda, only the gun is supported), very basic tool/weapon support, shooting with the gun and having it detect NPCs, starting the documentation page, lots of stuff behind the scenes like moving the map around with WASD, and a measuring tool for the map. The only problem (that bothers me because there is a lot of problems) Im having right now is the fps tanks when there is flooring. I tried to optimize it but that led nowhere. So you can disable flooring in the settings.
Ive added a a few things like “dynamic” lighting and html documentation. Ive added some keyboard controls to the engine like moving the map with wasd. I changed some buttons around a tad and the gun works and sends NPCs a message (only one right now is die, but more flexibility soon). A demo ship might be coming soon maybe.
You can now give the option to make some NPCs pushable. NPCs now have wall collision and player collision is reworked so you dont “stick” on walls anymore.
Final touchups before demo ship!!!
Ships:
I have make The Cyber Game Engine, witch is a EXTREAMLY light weight game engine made with python and pygame. This is only a demo but I feel its at a useable point even though it has its bugs (some I dont know how to fix like the blank buttons). The most challenging part was the NPCs and 3d Projection and all the little problems that add up. What I am most proud of is making this whole project under 1.44mb to make it fit on a floppy drive and actually seeing what this little project has become. People who are going to use this project, just know that there are bugs and I am planning to add more features like a main menu system and sutch....
|
1793109324.8501806
|
1793195724.8501806
|
|
28654
|
Hyperlaunch by @byzann | Stardance
|
byzann
|
1
|
57.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-21T16:03:40Z", "hours": 57.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "My own Minecraft launcher, Hyperlaunch, is in a good, usable state. It supports most versions of Minecraft, as well as having built in support for both the Fabric and NeoForge loaders. Additionally, it supports downloading mods from Modrinth. Installations are divided into ‘instances’ by default, keeping mod setups separated. If you choose to try it, I hope you enjoy it! (ultimately I have more I want to add to this project, but it’s in a very good state at the moment.)", "repo": "https://github.com/ByzantineProcess/hyperlaunch", "demo": "https://github.com/ByzantineProcess/hyperlaunch/releases/tag/v0.1-bugfix"}]...
|
[{"post_id": 71712, "ts": "202 [{"post_id": 71712, "ts": "2026-09-21T11:15:25Z", "hours": 6.7503, "text": "Hyperlaunch (Minecraft launcher) - devlog 7 last one! I’ve fixed a lot of launcher bugs and prepared a minimal GUI for trying the launcher out. Windows and Linux builds are functional and tested. I can’t confirm Mac builds work without bugs, but the launcher core itself was tested on a Mac Neo around a week ago. I hope anyone reading enjoys Hyperlaunch, even if the user interface is a bit clunky at the moment."}, {"post_id": 68684, "ts": "2026-09-15T15:17:18Z", "hours": 8.7233, "text": "Hyperlaunch (Minecraft launcher) - devlog 6 i lost my sticky streak NeoForge support is done for 26.1 and later. Added an instance command for rudimentary management of game instances, you can see a demo of the interface below. Modrinth support is good enough for a search -> download flow, as also shown below. Still improving over time."}, {"post_id": 65282, "ts": "2026-09-10T09:33:27Z", "hours": 9.8283, "text": "Hyperlaunch - devlog 5 Modrinth support Modrinth support is progressing nicely, and Hyperlaunch is now (technically) capable of doing more complex searches than Modrinth App allows. This means Hyperlaunch is better at using Modrinth than Modrinth itself. NeoForge support I’ve started work on supporting the NeoForge mod loader inside Hyperlaunch. This is harder than Fabric for a few reasons, but the main issue is that it requires directly patching Minecraft’s code. The NeoForge installer handles this all, but I want to bring the patching system inside Hyperlaunch. This is progressing nicely too. I’ve had to add a dependency on 7-Zip’s LZMA SDK as part of this. Issues spent like 3 hours diagnosing why decompressing the NeoForge patches was broken only for it to be an accidental cast from an int64 to an int32. writing JSON classes so Hyperlaunch can read Modrinth API responses is taking too long"}, {"post_id": 58118, "ts": "2026-08-30T13:53:14Z", "hours": 8.3553, "text": "Hyperlaunch - devlog 4. It’s been a month since my last devlog because I’ve just been unmotivated to continue working. I do really want to finish this though, so I’ll see it through. This update is mostly about bugfixes. There are no big new features done. Modrinth support I spent a good 3-5 hours building out a proper, full featured Modrinth search client, just for the API docs to be wrong, meaning I massively over-engineered a simple system. Really annoying. Bugfixes All the optimisations and big changes I made over the past few devlogs meant I had a lot of broken code on my hands. Won’t list everything here, but: Nearly all code bound to the UI was outdated/wrong Microsoft auth broke The code that handles downloading the client would not extract some necessary files Listing versions to download broke Small new features Hyperlaunch can now generate Java launch commands, handling downloads/logins/etc. automatically. That’s.. it. No video for this devlog, have some assorted screenshots from development on this devlog’s work."}, {"post_id": 36254, "ts": "2026-07-28T07:23:26Z", "hours": 9.1853, "text": "Hyperlaunch - devlog 3 Hyperlaunch now has the fastest download time of any Minecraft launcher I have tested! This is due to a number of optimisations done, mostly informed from app profiling (you can see a screenshot below.) Network activity is also more steady, and should start less connections overall. Hyperlaunch was slower because parts of the cache system & download system were reading and writing to a lot of files at once. I used the PerfView profiler to figure out how I could improve the download time after testing Modrinth App and Pandora Launcher and scoring twice as worse against both. I’ve attached a screenshot of PerfView below, but it’s very ugly to look at. Changes: Many syscall optimisations in the download handler & caching system Download workers no longer wait for a file to be written to disk before starting another download Started on Modrinth API client Some bugfixes in client manifest parsing"}, {"post_id": 24601, "ts": "2026-07-08T09:55:06Z", "hours": 7.7542, "text": "Hyperlaunch - devlog 2 Hyperlaunch is a Minecraft launcher that tries to be as efficient as possible without compromise. Progress Caching : I finally made a proper global caching system! Its purpose is minimising the network traffic, both for launch speeds and general efficiency. It can get big at times, so I also added compression, using the Brotli algorithm for speed. The cache sits in front of every network request. The cache will try to minimise the cost of the network request where possible. Often, it will just find a cached version instead of using the network. The cache works by URL. It splits the URL into domain name and resource. Take Hyperlaunch’s Stardance project page as an example; if it were to be cached, the directory would be stardance.hackclub.com , and the resource would be projects/28654 . The resource name is hashed with XxHash128, a hashing algorithm that’s not used for storing secrets, then the file at the URL is cached at .hyperlaunch/cache/<directory>/<resource hash> . If the file came with caching instructions (either ETag or Last-Modified HTTP headers), then those are stored alongside the cached file as separate files (see the image attached.) Parallelism : The launcher now handles each task at the same time, instead of in order. This is probably the biggest speedup so far. Instances : The launcher can now handle multiple installs as instances! This means multiple setups can coexist, and users can pick between them. Think MultiMC or PrismLauncher. CLI : Reworked a lot of the CLI as part of these changes. Difficulties Maybe I’m just new to C#, but I found a lot of the HTTP stuff confusing. One example is using the Last-Modified header . If you want to use this header, you need to access the response.Content.Headers variable. For all other headers, you access response.Headers . Brotli compression also seemed unusually difficult. It only works on Stream objects, and the syntax was strange which resulted in a few unintentional logic bugs that I just didn’t know how to spot. Video and some photos of the cache in action below. The cache in action"}, {"post_id": 22826, "ts": "2026-07-05T12:59:36Z", "hours": 6.5678, "text": "Hyperlaunch devlog 1 Hyperlaunch is a Minecraft launcher that tries to be as efficient as possible without compromising in any area. I started this project earlier this year, but I want to finish it under Stardance. Progress Started on instances system for managing multiple installs. Like PrismLauncher or MultiMC. Added to, cleaned up, and fixed multiple issues in the client manifest parsing system. The client manifest is what tells the launcher how to do its job, where to download everything, and how to start the game. Mojang sometimes changes the format. In the 4-month gap since last working on this, they changed how Java arguments are handled, and added a way for launch ingredients to only be considered on specific OS version ranges (for example, only allow a certain library on Windows versions newer than 22H2). Those were both really annoying to fix, mostly because the parsing code was messy. (Used AI to split classes across files.) Added the ability to automatically download and launch Fabric modded versions. (see a demo below) (i really hope the video works, a cdn link should be below otherwise) cdn video link"}]...
|
Title: Hyperlaunch by @byzann | Stardance
Devlogs Title: Hyperlaunch by @byzann | Stardance
Devlogs:
Hyperlaunch devlog 1 Hyperlaunch is a Minecraft launcher that tries to be as efficient as possible without compromising in any area. I started this project earlier this year, but I want to finish it under Stardance. Progress Started on instances system for managing multiple installs. Like PrismLauncher or MultiMC. Added to, cleaned up, and fixed multiple issues in the client manifest parsing system. The client manifest is what tells the launcher how to do its job, where to download everything, and how to start the game. Mojang sometimes changes the format. In the 4-month gap since last working on this, they changed how Java arguments are handled, and added a way for launch ingredients to only be considered on specific OS version ranges (for example, only allow a certain library on Windows versions newer than 22H2). Those were both really annoying to fix, mostly because the parsing code was messy. (Used AI to split classes across files.) Added the ability to automatically download and launch Fabric modded versions. (see a demo below) (i really hope the video works, a cdn link should be below otherwise) cdn video link
Hyperlaunch - devlog 2 Hyperlaunch is a Minecraft launcher that tries to be as efficient as possible without compromise. Progress Caching : I finally made a proper global caching system! Its purpose is minimising the network traffic, both for launch speeds and general efficiency. It can get big at times, so I also added compression, using the Brotli algorithm for speed. The cache sits in front of every network request. The cache will try to minimise the cost of the network request where possible. Often, it will just find a cached version instead of using the network. The cache works by URL. It splits the URL into domain name and resource. Take Hyperlaunch’s Stardance project page as an example; if it were to be cached, the directory would be stardance.hackclub.com , and the resource would be projects/28654 . The resource name is hashed with XxHash128, a hashing algorithm that’s not used for storing secrets, then the file at the URL is cached at .hyperlaunch/cache/<directory>/<resource hash> . If the file came with caching instructions (either ETag or Last-Modified HTTP headers), then those are stored alongside the cached file as separate files (see the image attached.) Parallelism : The launcher now handles each task at the same time, instead of in order. This is probably the biggest speedup so far. Instances : The launcher can now handle multiple installs as instances! This means multiple setups can coexist, and users can pick between them. Think MultiMC or PrismLauncher. CLI : Reworked a lot of the CLI as part of these changes. Difficulties Maybe I’m just new to C#, but I found a lot of the HTTP stuff confusing. One example is using the Last-Modified header . If you want to use this header, you need to access the response.Content.Headers variable. For all other headers, you access response.Headers . Brotli compression also seemed unusually difficult. It only works on Stream objects, and the syntax was strange which resulted in a few unintentional logic bugs that I just didn’t know how to spot. Video and some photos of the cache in action below. The cache in action
Hyperlaunch - devlog 3 Hyperlaunch now has the fastest download time of any Minecraft launcher I have tested! This is due to a number of optimisations done, mostly informed from app profiling (you can see a screenshot below.) Network activity is also more steady, and should start less connections overall. Hyperlaunch was slower because parts of the cache system & download system were reading and writing to a lot of files at once. I used the PerfView profiler to figure out how I could improve the download time after testing Modrinth App and Pandora Launcher and scoring twice as worse against both. I’ve attached a screenshot of PerfView below, but it’s very ugly to look at. Changes: Many syscall optimisations in the download handler & caching system Download workers no longer wait for a file to be written to disk before starting another download Started on Modrinth API client Some bugfixes in client manifest parsing
Hyperlaunch - devlog 4. It’s been a month since my last devlog because I’ve just been unmotivated to continue working. I do really want to finish this though, so I’ll see it through. This update is mostly about bugfixes. There are no big new features done. Modrinth support I spent a good 3-5 hours building out a proper, full featured Modrinth search client, just for the API docs to be wrong, meaning I massively over-engineered a simple system. Really annoying. Bugfixes All the optimisations and big changes I made over the past few devlogs meant I had a lot of broken code on my hands. Won’t list everything here, but: Nearly all code bound to the UI was outdated/wrong Microsoft auth broke The code that handles downloading the client would not extract some necessary files Listing versions to download broke Small new features Hyperlaunch can now generate Java launch commands, handling downloads/logins/etc. automatically. That’s.. it. No video for this devlog, have some assorted screenshots from development on this devlog’s work.
Hyperlaunch - devlog 5 Modrinth support Modrinth support is progressing nicely, and Hyperlaunch is now (technically) capable of doing more complex searches than Modrinth App allows. This means Hyperlaunch is better at using Modrinth than Modrinth itself. NeoForge support I’ve started work on supporting the NeoForge mod loader inside Hyperlaunch. This is harder than Fabric for a few reasons, but the main issue is that it requires directly patching Minecraft’s code. The NeoForge installer handles this all, but I want to bring the patching system inside Hyperlaunch. This is progressing nicely too. I’ve had to add a dependency on 7-Zip’s LZMA SDK as part of this. Issues spent like 3 hours diagnosing why decompressing the NeoForge patches was broken only for it to be an accidental cast from an int64 to an int32. writing JSON classes so Hyperlaunch can read Modrinth API responses is taking too long
Hyperlaunch (Minecraft launcher) - devlog 6 i lost my sticky streak NeoForge support is done for 26.1 and later. Added an instance command for rudimentary management of game instances, you can see a demo of the interface below. Modrinth support is good enough for a search -> download flow, as also shown below. Still improving over time.
Hyperlaunch (Minecraft launcher) - devlog 7 last one! I’ve fixed a lot of launcher bugs and prepared a minimal GUI for trying the launcher out. Windows and Linux builds are functional and tested. I can’t confirm Mac builds work without bugs, but the launcher core itself was tested on a Mac Neo around a week ago. I hope anyone reading enjoys Hyperlaunch, even if the user interface is a bit clunky at the moment.
Ships:
My own Minecraft launcher, Hyperlaunch, is in a good, usable state. It supports most versions of Minecraft, as well as having built in support for both the Fabric and NeoForge loaders. Additionally, it supports downloading mods from Modrinth. Installations are divided into ‘instances’ by default, keeping mod setups separated. If you choose to try it, I hope you enjoy it! (ultimately I have more I want to add to this project, but it’s in a very good state at the moment.)...
|
1793008092.8417156
|
1793094492.8417156
|
|
28709
|
Ecostream by @Mang0o | Stardance
|
Mang0o
|
1
|
57.0
|
872
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-26T05:39:16Z", "hours": 57.0, "multiplier": 16.01, "payout": 872, "blessing": "neutral", "text": "This is Ecostream. An open-source cross-platform music streaming app and server made to provide a simple, intuitive interface as well as cool features such as cross-device control, automatic music downloading, and smart shuffle.", "repo": "https://github.com/Mang00oo/Ecostream", "demo": "https://mang00oo.github.io/ecostream-demo/"}]...
|
[{"post_id": 54928, "ts": "202 [{"post_id": 54928, "ts": "2026-08-26T05:01:31Z", "hours": 2.6372, "text": "Made and troubleshooted a Windows build, as well as publishing the first release on Github"}, {"post_id": 54212, "ts": "2026-08-25T03:05:41Z", "hours": 2.6297, "text": "Made a demo website that doesn’t use the server, adding a popup to avoid confusion and showing a message when trying to use unavailable features"}, {"post_id": 51990, "ts": "2026-08-22T00:18:41Z", "hours": 1.815, "text": "User details editing in settings + revamped user selection screen + creating new users at login screen"}, {"post_id": 51432, "ts": "2026-08-21T04:12:27Z", "hours": 3.5828, "text": "Fixed touchbar button + added desktop app names in device selection screen"}, {"post_id": 49970, "ts": "2026-08-18T23:42:40Z", "hours": 1.8125, "text": "Settings page with server url customization"}, {"post_id": 48517, "ts": "2026-08-16T22:20:47Z", "hours": 6.5758, "text": "Removing songs from playlists and adding songs to your queue"}, {"post_id": 45554, "ts": "2026-08-12T03:45:50Z", "hours": 2.6967, "text": "Fixed search results + added search on mobile, improved skip/previous animation on mobile, and finished offline implementation."}, {"post_id": 41788, "ts": "2026-08-06T05:59:16Z", "hours": 9.3053, "text": "Playlist name editing + started offline playback implementation"}, {"post_id": 39937, "ts": "2026-08-03T08:11:46Z", "hours": 3.38, "text": "Re-coded smart shuffle + made the queue show the currently playing song"}, {"post_id": 33775, "ts": "2026-07-23T23:16:12Z", "hours": 11.8772, "text": "Cross-device sync with playback on multiple clients, as well as some (pretty bad) latency compensation"}, {"post_id": 23428, "ts": "2026-07-06T12:00:46Z", "hours": 10.7633, "text": "Coded my own audio player component for the desktop app from scratch and added preloading the next song for faster navigation"}]...
|
Title: Ecostream by @Mang0o | Stardance
Devlogs:
Title: Ecostream by @Mang0o | Stardance
Devlogs:
Coded my own audio player component for the desktop app from scratch and added preloading the next song for faster navigation
Cross-device sync with playback on multiple clients, as well as some (pretty bad) latency compensation
Re-coded smart shuffle + made the queue show the currently playing song
Playlist name editing + started offline playback implementation
Fixed search results + added search on mobile, improved skip/previous animation on mobile, and finished offline implementation.
Removing songs from playlists and adding songs to your queue
Settings page with server url customization
Fixed touchbar button + added desktop app names in device selection screen
User details editing in settings + revamped user selection screen + creating new users at login screen
Made a demo website that doesn’t use the server, adding a popup to avoid confusion and showing a message when trying to use unavailable features
Made and troubleshooted a Windows build, as well as publishing the first release on Github
Ships:
This is Ecostream. An open-source cross-platform music streaming app and server made to provide a simple, intuitive interface as well as cool features such as cross-device control, automatic music downloading, and smart shuffle....
|
1792986790.6849687
|
1793073190.6849687
|
|
37540
|
ShotOS by @OneShot | Stardance
|
OneShot
|
2
|
57.0
|
176
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-12T00:50:51Z", "hours": 33.0, "multiplier": 6.0, "payout": 176, "blessing": "neutral", "text": "I made a Web Os based after the game - OneShot", "repo": "https://github.com/Zlati839/ShotOs", "demo": "https://zlati839.github.io/ShotOs/"}, {"ship_num": 2, "ts": "2026-07-22T17:10:18Z", "hours": 24.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Finished the WebOs1 Project :D !!!", "repo": "https://github.com/Zlati839/ShotOs", "demo": "https://zlati839.github.io/ShotOs/"}]...
|
[{"post_id": 45485, "ts": "202 [{"post_id": 45485, "ts": "2026-08-12T00:33:37Z", "hours": 12.0894, "text": "So . Added a loading screen a bar for the apps to stay in , it can also be hidden , Terminal and a draggable calendar widget"}, {"post_id": 39143, "ts": "2026-08-01T21:12:51Z", "hours": 9.3092, "text": "Made some changes 1. Finished the settings and now the wallpapers is changeable with four in total - two static and two live , and any customization is saved after the user leaves 2. Added a Drawing app that also saves after the user leaves 3. Added a Browser that’s just the OneShot wikipedia page 4. And a simple calculator page"}, {"post_id": 36072, "ts": "2026-07-27T22:32:20Z", "hours": 11.3989, "text": "Added a Task bar , changed the clock app to settings , added a minimize button to the apps and made an app catalog !!!! :D"}, {"post_id": 33060, "ts": "2026-07-22T17:07:13Z", "hours": 0.47, "text": "Made settings for the Clock for now you can change color and hide it"}, {"post_id": 32979, "ts": "2026-07-22T14:27:01Z", "hours": 9.5464, "text": "Made a Music Player too !!!!! For now there are only 6 songs in it"}, {"post_id": 31668, "ts": "2026-07-20T08:33:48Z", "hours": 13.6178, "text": "made the File manager it has README and 2 foulders"}]...
|
Title: ShotOS by @OneShot | Stardance
Devlogs:
ma Title: ShotOS by @OneShot | Stardance
Devlogs:
made the File manager it has README and 2 foulders
Made a Music Player too !!!!! For now there are only 6 songs in it
Made settings for the Clock for now you can change color and hide it
Added a Task bar , changed the clock app to settings , added a minimize button to the apps and made an app catalog !!!! :D
Made some changes 1. Finished the settings and now the wallpapers is changeable with four in total - two static and two live , and any customization is saved after the user leaves 2. Added a Drawing app that also saves after the user leaves 3. Added a Browser that’s just the OneShot wikipedia page 4. And a simple calculator page
So . Added a loading screen a bar for the apps to stay in , it can also be hidden , Terminal and a draggable calendar widget
Ships:
Finished the WebOs1 Project :D !!!
I made a Web Os based after the game - OneShot...
|
1792990285.9805627
|
1793076685.9805627
|
|
43469
|
Iron Mario by @Lalith | Stardance
|
Lalith
|
2
|
57.0
|
740
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-18T17:21:14Z", "hours": 46.0, "multiplier": 16.47, "payout": 740, "blessing": "neutral", "text": "What a journey. I genuinely didn’t expect this project to get this big. Iron-Mario started as a small game inspired by the old games I used to enjoy. At some point, I got carried away with the idea of building an entire arcade instead of just one game. And that’s how it ended up with 105 playable games . There are quick reaction games, puzzles, old-school classics, some completely chaotic ones, and a few bigger arcade games. I also added tournaments with five hearts, a daily 10-game challenge, scores, XP, coins, achievements, and saved progress. One of the biggest parts of this update was working on the game’s identity. I made a shared pixel-art library with environments, character sprites, UI elements, and effects. I also added six characters to Pixel Town: Milo, Jun, Bea, Nia, Ash, and Pip. They’re mostly cosmetic characters right now, but I wanted the arcade to feel like an actual little world instead of just a menu with 105 buttons. The technical side was probably the most complicated part. I had to deal with different input types, game states, restarting, saving, mobile layouts, and making sure one game wouldn’t break another. I built automated checks for the game systems and went through the individual games to find problems with their mechanics. And I definitely found problems. Some games still need more variety, some mechanics are simpler than I originally wanted, and there are things I would improve with more time. Getting a game to pass a test doesn’t automatically mean it’s fun to play. That’s something this project taught me. I also used AI-assisted development tools during this project, alongside my own planning, testing, and design decisions. I don’t want to pretend otherwise. Looking back, the project changed direction quite a few times. I experimented with different ideas, made some decisions that didn’t work out, and ended up rethinking what I actually wanted Iron-Mario to be. I’m still not completely satisfied with everything. But seeing this turn from a little experiment into a playable arcade has been pretty rewarding. The game is playable now, and I’m calling this the end of this development chapter. Not necessarily the end of Iron-Mario. If you try it, I’d genuinely love to know which games you enjoyed and which ones felt boring or frustrating. That feedback is way more useful than someone just telling me the project looks good. 🎮 Play: https://hustlenix.github.io/Iron-Mario/ 💻 Source: https://github.com/Hustlenix/Iron-Mario Thanks to everyone who followed the devlogs, tried the game, or gave feedback along the way. That’s it for this ship. ❤️", "repo": "https://github.com/Hustlenix/Iron-Mario", "demo": "https://hustlenix.github.io/Iron-Mario/"}, {"ship_num": 2, "ts": "2026-09-22T01:51:21Z", "hours": 11.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What i have made is a simple hand made mario game, in my fav theme(Iron man), and the biggest challenege wasn’t coding the gamee, it was the asssests, as i had to hand draw all of them. I am proud that i could finish my rolemodel(iron man) themed project Try it out at: https://hustlenix.github.io/Iron-Mario/", "repo": "https://github.com/Hustlenix/Iron-Mario", "demo": "https://hustlenix.github.io/Iron-Mario/"}]...
|
[{"post_id": 80734, "ts": "202 [{"post_id": 80734, "ts": "2026-10-18T17:20:14Z", "hours": 5.2547, "text": "Final Devlog: Iron-Mario. What a journey. I genuinely didn’t expect this project to get this big. Iron-Mario started as a small game inspired by the old games I used to enjoy. At some point, I got carried away with the idea of building an entire arcade instead of just one game. And that’s how it ended up with 105 playable games . There are quick reaction games, puzzles, old-school classics, some completely chaotic ones, and a few bigger arcade games. I also added tournaments with five hearts, a daily 10-game challenge, scores, XP, coins, achievements, and saved progress. One of the biggest parts of this update was working on the game’s identity. I made a shared pixel-art library with environments, character sprites, UI elements, and effects. I also added six characters to Pixel Town: Milo, Jun, Bea, Nia, Ash, and Pip. They’re mostly cosmetic characters right now, but I wanted the arcade to feel like an actual little world instead of just a menu with 105 buttons. The technical side was probably the most complicated part. I had to deal with different input types, game states, restarting, saving, mobile layouts, and making sure one game wouldn’t break another. I built automated checks for the game systems and went through the individual games to find problems with their mechanics. And I definitely found problems. Some games still need more variety, some mechanics are simpler than I originally wanted, and there are things I would improve with more time. Getting a game to pass a test doesn’t automatically mean it’s fun to play. That’s something this project taught me. I also used AI-assisted development tools during this project, alongside my own planning, testing, and design decisions. I don’t want to pretend otherwise. Looking back, the project changed direction quite a few times. I experimented with different ideas, made some decisions that didn’t work out, and ended up rethinking what I actually wanted Iron-Mario to be. I’m still not completely satisfied with everything. But seeing this turn from a little experiment into a playable arcade has been pretty rewarding. The game is playable now, and I’m calling this the end of this development chapter. Not necessarily the end of Iron-Mario. If you try it, I’d genuinely love to know which games you enjoyed and which ones felt boring or frustrating. That feedback is way more useful than someone just telling me the project looks good. 🎮 Play: https://hustlenix.github.io/Iron-Mario/ 💻 Source: https://github.com/Hustlenix/Iron-Mario Thanks to everyone who followed the devlogs, tried the game, or gave feedback along the way. That’s it for this ship. ❤️"}, {"post_id": 80318, "ts": "2026-10-17T08:47:56Z", "hours": 10.0194, "text": "The starting of the change:"}, {"post_id": 79851, "ts": "2026-10-15T16:48:50Z", "hours": 1.2397, "text": "Nah man, idk why but my ideas are many but my executions are none, because of that i change my ideas once in a while and lose my mind over it, now my idea is to recreate those old digital games like pong, tetris and stuff but with my pixl animation and a lil help from Chat JiBi-BiGi-GPT and make some money by running ads on it. first is to get my idea on to play, get audience and make money thats it! wish me luck"}, {"post_id": 79818, "ts": "2026-10-15T15:09:00Z", "hours": 1.4878, "text": "I really started working on what i said on my past devlog, which was changing the directory and after working on it for few hours, it is only showing 1.5 hr💔🥀 its okay man. anyways i have made only few assets, many more to go!!!!!!!!!!! here are the few which i made using aspertite and character genrator:"}, {"post_id": 79786, "ts": "2026-10-15T12:21:24Z", "hours": 3.0142, "text": "Hi guys, this is the turning point of my idea, where i change the whole ddirectory of my game. Iron mario isnt looking suitable for my amaizing pixl game so i am gonna name it: OnlyEducation, to bypass school desktop restrictions and you guys play my game! And my idea is to add as many nostalgic games as i could and make it a good gaming platform!"}, {"post_id": 78684, "ts": "2026-10-11T09:15:07Z", "hours": 2.99, "text": "As you can see, till now i was only using my MS paint and my time for asset genrations and stuff, which is painstackinginglt time taking and boring, but thanks to stardance, on my last ship they game me 10$ to spend in itch.io, i didnt use it much, but after buying few assets in it is is soooo easy to genrate assets. SHOUTOUT TO STARDANCE"}, {"post_id": 78045, "ts": "2026-10-09T10:45:03Z", "hours": 10.6569, "text": "Well, even thought i made soo many games, they lacked, clarity, focus, dopomine, and fun. if any one knows human game physology or smtg, please contact me. Like i dont know what i am doing, just adding 100 games in 10 hours isnt good, i gotta achive more than quantity. so i am tryna recreate old nostaliga games like subwaysurfers, temple run, agnry birds, and etc. If you have any game idea comment!!!!!!!!"}, {"post_id": 74434, "ts": "2026-09-27T11:33:45Z", "hours": 1.1883, "text": "Created my own version on dino-game based on mario and dinogame and iron man, les goooooo!"}, {"post_id": 74381, "ts": "2026-09-27T08:52:32Z", "hours": 6.3475, "text": "To make this a big, functional, production ready game i gotta scale it broder and bigger such that i get 1mil users and for that i am thinging of making my normal 7 game game into a 100 short mini games in one and make money through this!!!!!!"}, {"post_id": 73998, "ts": "2026-09-26T14:30:37Z", "hours": 3.4033, "text": "I am trying to make this website like a full on authentic game app and make money with this"}, {"post_id": 43836, "ts": "2026-08-09T08:24:02Z", "hours": 2.0347, "text": "I have this idea of replacing irom man instad of flappy bird and stuff and all of that"}, {"post_id": 43671, "ts": "2026-08-09T02:04:07Z", "hours": 6.4192, "text": "I’ve spent more than 6 hours coding, learning, building, and trial testing is it useually this hardbuilding a game? they said it will be easy😭✌🏻 please help me gand there are too many errors and stuff. and my creativity exeeded when they ased for 5 mini games, so i asked claude and it brainstromed and gave me few ideas now i am trying to add a flappy bird game in this, a classic mario game, a snake game, a simple plane shooting game, a tetris game, and that worlds first ping pong game."}, {"post_id": 41917, "ts": "2026-08-06T13:08:15Z", "hours": 0.3697, "text": "Ijust added a ending page, more like coding"}, {"post_id": 41902, "ts": "2026-08-06T12:24:45Z", "hours": 1.5389, "text": "I love you 3000"}, {"post_id": 41397, "ts": "2026-08-05T16:19:29Z", "hours": 0.9978, "text": "Starting of my very own Iron-Man themed game. Stay tuned gng"}]...
|
Title: Iron Mario by @Lalith | Stardance
Devlogs: Title: Iron Mario by @Lalith | Stardance
Devlogs:
Starting of my very own Iron-Man themed game. Stay tuned gng
I love you 3000
Ijust added a ending page, more like coding
I’ve spent more than 6 hours coding, learning, building, and trial testing is it useually this hardbuilding a game? they said it will be easy😭✌🏻 please help me gand there are too many errors and stuff. and my creativity exeeded when they ased for 5 mini games, so i asked claude and it brainstromed and gave me few ideas now i am trying to add a flappy bird game in this, a classic mario game, a snake game, a simple plane shooting game, a tetris game, and that worlds first ping pong game.
I have this idea of replacing irom man instad of flappy bird and stuff and all of that
I am trying to make this website like a full on authentic game app and make money with this
To make this a big, functional, production ready game i gotta scale it broder and bigger such that i get 1mil users and for that i am thinging of making my normal 7 game game into a 100 short mini games in one and make money through this!!!!!!
Created my own version on dino-game based on mario and dinogame and iron man, les goooooo!
Well, even thought i made soo many games, they lacked, clarity, focus, dopomine, and fun. if any one knows human game physology or smtg, please contact me. Like i dont know what i am doing, just adding 100 games in 10 hours isnt good, i gotta achive more than quantity. so i am tryna recreate old nostaliga games like subwaysurfers, temple run, agnry birds, and etc. If you have any game idea comment!!!!!!!!
As you can see, till now i was only using my MS paint and my time for asset genrations and stuff, which is painstackinginglt time taking and boring, but thanks to stardance, on my last ship they game me 10$ to spend in itch.io, i didnt use it much, but after buying few assets in it is is soooo easy to genrate assets. SHOUTOUT TO STARDANCE
Hi guys, this is the turning point of my idea, where i change the whole ddirectory of my game. Iron mario isnt looking suitable for my amaizing pixl game so i am gonna name it: OnlyEducation, to bypass school desktop restrictions and you guys play my game! And my idea is to add as many nostalgic games as i could and make it a good gaming platform!
I really started working on what i said on my past devlog, which was changing the directory and after working on it for few hours, it is only showing 1.5 hr💔🥀 its okay man. anyways i have made only few assets, many more to go!!!!!!!!!!! here are the few which i made using aspertite and character genrator:
Nah man, idk why but my ideas are many but my executions are none, because of that i change my ideas once in a while and lose my mind over it, now my idea is to recreate those old digital games like pong, tetris and stuff but with my pixl animation and a lil help from Chat JiBi-BiGi-GPT and make some money by running ads on it. first is to get my idea on to play, get audience and make money thats it! wish me luck
The starting of the change:
Final Devlog: Iron-Mario. What a journey. I genuinely didn’t expect this project to get this big. Iron-Mario started as a small game inspired by the old games I used to enjoy. At some point, I got carried away with the idea of building an entire arcade instead of just one game. And that’s how it ended up with 105 playable games . There are quick reaction games, puzzles, old-school classics, some completely chaotic ones, and a few bigger arcade games. I also added tournaments with five hearts, a daily 10-game challenge, scores, XP, coins, achievements, and saved progress. One of the biggest parts of this update was working on the game’s identity. I made a shared pixel-art library with environments, character sprites, UI elements, and effects. I also added six characters to Pixel Town: Milo, Jun, Bea, Nia, Ash, and Pip. They’re mostly cosmetic characters right now, but I wanted the arcade to feel like an actual little world instead of just a menu with 105 buttons. The technical side was probably the most complicated part. I had to deal with different input types, game states, restarting, saving, mobile layouts, and making sure one game wouldn’t break another. I built automated checks for the game systems and went through the individual games to find problems with their mechanics. And I definitely found problems. Some games still need more variety, some mechanics are simpler than I originally wanted, and there are things I would improve with more time. Getting a game to pass a test doesn’t automatically mean it’s fun to play. That’s something this project taught me. I also used AI-assisted development tools during this project, alongside my own planning, testing, and design decisions. I don’t want to pretend otherwise. Looking back, the project changed direction quite a few times. I experimented with different ideas, made some decisions that didn’t work out, and ended up rethinking what I actually wanted Iron-Mario to be. I’m still not completely satisfied with everything. But seeing this turn from a little experiment into a playable arcade has been pretty rewarding. The game is playable now, and I’m calling this the end of this development chapter. Not necessarily the end of Iron-Mario. If you try it, I’d genuinely love to know which games you enjoyed and which ones felt boring or frustrating. That feedback is way more useful than someone just telling me the project looks good. 🎮 Play: https://hustlenix.github.io/Iron-Mario/ 💻 Source: https://github.com/Hustlenix/Iron-Mario Thanks to everyone who followed the devlogs, tried the game, or gave feedback along the way. That’s it for this ship. ❤️
Ships:
What i have made is a simple hand made mario game, in my fav theme(Iron man), and the biggest challenege wasn’t coding the gamee, it was the asssests, as i had to hand draw all of them. I am proud that i could finish my rolemodel(iron man) themed project Try it out at: https://hustlenix.github.io/Iron-Mario/
What a journey. I genuinely didn’t expect this project to get this big. Iron-Mario started as a small game inspired by the old games I used to enjoy. At some point, I got carried away with the idea of building an entire arcade instead of just one game. And that’s how it ended up with 105 playable games . There are quick reaction games, puzzles, old-school classics, some completely chaotic ones, and a few bigger arcade games. I also added tournaments with five hearts, a daily 10-game challenge, scores, XP, coins, achievements, and saved progress. One of the biggest parts of this update was working on the game’s identity. I made a shared pixel-art library with environments, character sprites, UI elements, and effects. I also added six characters to Pixel Town: Milo, Jun, Bea, Nia, Ash, and Pip. They’re mostly cosmetic characters right now, but I wanted the arcade to feel like an actual little world instead of just a menu with 105 buttons. The technical side was probably the most complicated part. I had to deal with different input types, game states, restarting, saving, mobile layouts, and making sure one game wouldn’t break another. I built automated checks for the game systems and went through the individual games to find problems with their mechanics. And I definitely found problems. Some games still need more variety, some mechanics are simpler than I originally wanted, and there are things I would improve with more time. Getting a game to pass a test doesn’t automatically mean it’s fun to play. That’s something this project taught me. I also used AI-assisted development tools during this project, alongside my own planning, testing, and design decisions. I don’t want to pretend otherwise. Looking back, the project changed direction quite a few times. I experimented with different ideas, made some decisions that didn’t work out, and ended up rethinking what I actually wanted Iron-Mario to be. I’m still not completely satisfied with everything. But seeing this turn from a little experiment into a playable arcade has been pretty rewarding. The game is playable now, and I’m calling this the end of this development chapter. Not necessarily the end of Iron-Mario. If you try it, I’d genuinely love to know which games you enjoyed and which ones felt boring or frustrating. That feedback is way more useful than someone just telling me the project looks good. 🎮 Play: https://hustlenix.github.io/Iron-Mario/ 💻 Source: https://github.com/Hustlenix/Iron-Mario Thanks to everyone who followed the devlogs, tried the game, or gave feedback along the way. That’s it for this ship. ❤️...
|
1793004601.34737
|
1793091001.34737
|
|
48648
|
Pokemon Search Lib by @heitordecarvalhopessoa | St Pokemon Search Lib by @heitordecarvalhopessoa | Stardance...
|
heitordecarvalhopessoa
|
5
|
57.0
|
693
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-27T15:08:30Z", "hours": 15.0, "multiplier": 17.96, "payout": 271, "blessing": "neutral", "text": "More card collections have been added, and the filtering and comparison systems have been improved; additionally, the HUDs have been updated to enhance site performance.", "repo": "https://github.com/heitordecarvalhopessoa-debug/Pokemon-Search", "demo": "https://heitordecarvalhopessoa-debug.github.io/Pokemon-Search/"}, {"ship_num": 2, "ts": "2026-09-15T23:42:18Z", "hours": 13.0, "multiplier": 13.63, "payout": 178, "blessing": "neutral", "text": "More collections and cards have been added, and many HUDs have been swapped out and updated to improve site performance; various systems have been modified to make them easier for any user to understand.", "repo": "https://github.com/heitordecarvalhopessoa-debug/Pokemon-Search", "demo": "https://heitordecarvalhopessoa-debug.github.io/Pokemon-Search/"}, {"ship_num": 3, "ts": "2026-09-07T14:25:09Z", "hours": 10.0, "multiplier": 6.62, "payout": 69, "blessing": "neutral", "text": "More systems have been added, such as a card price comparison tool, and the search system has been updated; additionally, more collections have been completed, and new collections have been introduced.", "repo": "https://github.com/heitordecarvalhopessoa-debug/Pokemon-Search", "demo": "https://heitordecarvalhopessoa-debug.github.io/Pokemon-Search/"}, {"ship_num": 4, "ts": "2026-08-26T22:55:37Z", "hours": 10.0, "multiplier": 10.26, "payout": 103, "blessing": "neutral", "text": "Pokemon Search is a library for looking up Pokémon card prices; it includes only Pokémon cards—no Energy or Trainer cards. Some sets are currently incomplete but will be added soon.", "repo": "https://github.com/heitordecarvalhopessoa-debug/Pokemon-Search", "demo": "https://heitordecarvalhopessoa-debug.github.io/Pokemon-Search/"}, {"ship_num": 5, "ts": "2026-08-17T23:24:42Z", "hours": 9.0, "multiplier": 8.12, "payout": 72, "blessing": "neutral", "text": "POKÉMON SEARCH LIB A fan-made library featuring “beautiful” and “rare” Pokémon TCG cards; new cards will be added regularly as the site develops. Any feedback, as well as ideas for cards and collections to add, would be valuable for the site.", "repo": "https://github.com/heitordecarvalhopessoa-debug/Pokemon-Search", "demo": "https://heitordecarvalhopessoa-debug.github.io/Pokemon-Search/"}]...
|
[{"post_id": 74502, "ts": "202 [{"post_id": 74502, "ts": "2026-09-27T15:05:45Z", "hours": 3.6589, "text": "Version 1.18.0 Two Pokémon collection have already been add: 1. Mega Evolution: Phantasmal Fire 2. Mega Evolution: Ascended Heroes New 126 cards Filters Ui Changes Filter menu Card Template Update Data.js ReadMe.md Prices"}, {"post_id": 73351, "ts": "2026-09-24T23:32:40Z", "hours": 4.2108, "text": "Version 1.17.0 Twelve Pokémon collection have already been add: Ex: Emerald Ex: Unseen Forces Ex: Delta Species Ex: Legend Maker Ex: Holon Phantoms Ex: Crystal Guardians Ex: Dragon Frontiers Ex: Power Keepers XY: Primal Clash XY: Roaring Skies XY: Ancient Origins Celebrations 30th New 292 cards Regions Filter Filters: Type: RGB Type: Shiny Category: Star Region: Paldean Region: Hisuian Region: Galarian Region: Alolan Ui Changes Filter menu Compare.html hud Update Prices Some cards names Filters places"}, {"post_id": 71991, "ts": "2026-09-21T22:46:20Z", "hours": 2.1872, "text": "Version 1.16.0 I had to create a new folder, imgs2 , because GitHub only accepts 1,000 files per folder . Eight Pokémon collection have already been add: Ex: Ruby & Sapphire Ex: Sandstorm Ex: Dragon Ex: Team Magma vs Team Aqua Ex: Hidden Legends Ex: FireRed & LeafGreen Ex: Team Rocket Returns Ex: Deoxys New 79 cards Filters: Name Z-A Price Above 50 Price Between 21-200 Price Between 201-500 Price Between 501-1500 Price Above 1501 Ex Series Star Cards Category More credits Ui Changes Filter menu Search collections menu Collections menu Update Prices Some collections Names"}, {"post_id": 70867, "ts": "2026-09-19T21:54:41Z", "hours": 5.0539, "text": "Version 1.15.0 – Six Pokémon collection have already been completed: Rebel Clash Evolutions Unbroken Bonds Break Point Stellar Crown Ultra Prism New 109 cards Search Colection Ui Changes Colections menu Search menu Update Search system Prices All colections Names"}, {"post_id": 68890, "ts": "2026-09-15T23:36:43Z", "hours": 1.2878, "text": "Some bug fixes and more cards Sorry, I don’t have any free time these days :( More coins from different countries have also been added :)"}, {"post_id": 68336, "ts": "2026-09-14T23:24:27Z", "hours": 2.4978, "text": "Version 1.14.0 – Two Pokémon collection have already been completed: Flashfire Lost Origin New ?? cards I forgot to count them. Cards Menu Prices System Home pages Ui Changes Prices Options Menu Credits Menu Holographic Efect Update Search system Prices changes"}, {"post_id": 67585, "ts": "2026-09-13T18:48:34Z", "hours": 4.7533, "text": "Version 1.13.0 HUD UPDATE Two Pokémon collection have already been completed: Fusion Strike Sun & Moon (Base set) New 63 cards Card thumbnails next to their names in the search tab Ui Changes Buttons Home Page Pokemons Page Prices Menu Filter Menu Credits Menu Search Bar Update Prices of some cards Search system Prices changes"}, {"post_id": 65646, "ts": "2026-09-10T22:34:57Z", "hours": 4.5106, "text": "Version 1.12.0 Four Pokémon collection have already been completed: Darkness Ablaze Guardians Rising Burning Shadows Brilliant Stars News 138 cards Cards Menu Swapped Zoom system Swapped Update Prices of some cards Hud modals.css Collections system"}, {"post_id": 63570, "ts": "2026-09-07T14:20:05Z", "hours": 2.6225, "text": "Version 1.11.0 One Pokémon collection have already been completed: Twilight Masquerade News 58 cards Compare Cards system compare.html compare.js compare.css Update Ienes prices update Index carrosel Links Hud Search system Cards system"}, {"post_id": 63119, "ts": "2026-09-06T19:00:18Z", "hours": 2.8378, "text": "Version 1.10.0 Two Pokémon collections have already been completed: Caos Rising Pitch Black News 249 cards Prices Converter: Libras (UK) Iene (JPN) Dolar Australiano (AUS) Franco Suíço (CHF) Update Search system holographic.js Collections Table"}, {"post_id": 58228, "ts": "2026-08-30T16:11:28Z", "hours": 2.7058, "text": "Version 1.9.0 Two Pokémon collections have already been completed: Celebrations Evolving Skies News 181 cards Min. and Max. Prices filter 3D Holographic Efect Update Search system Pokemons page Pin colection data.js"}, {"post_id": 56226, "ts": "2026-08-27T21:59:26Z", "hours": 2.2678, "text": "Version 1.8.0 Three Pokémon collections have already been completed: Celestial Storm Team Up Champions Path News 98 cards Update Search system Pokemons page Pin colection data.js"}, {"post_id": 54030, "ts": "2026-08-24T19:39:40Z", "hours": 2.4872, "text": "Version 1.7.0 Three Pokémon collections have already been completed: Pokémon GO Shining Legends Scarlet & Violet: 151 The project will include only Full Art / EX / GX / V / VMAX / VSTAR / BREAK / V-UNION cards; Trainer and Energy cards will not be added, as the primary focus is exclusively on Pokémon (although previously added Trainer cards will not be removed). News 71 cards Update Search system Home page Pokemons page"}, {"post_id": 53408, "ts": "2026-08-23T23:00:11Z", "hours": 2.34, "text": "Version 1.6.0 News 51 cards Coins Carrosel Pin collection Update Collections system Search system Coins system Home page Collections Other Optimize data system Cards in their correct collections Correction of incorrect card art Currency conversion system (BRL, Dollar, Euro) correctly updated. Improvements to CSS code Small changes to the filtering system"}, {"post_id": 52695, "ts": "2026-08-22T23:45:19Z", "hours": 2.1908, "text": "Version 1.5.0 News 33 cards Collections Option Show the card collection New collections New CSS Update Pokemons Menu Other Optimize codes Change a little the UI"}, {"post_id": 51976, "ts": "2026-08-21T23:40:05Z", "hours": 3.0014, "text": "Version 1.4.0 BUGS FIXED News Coins See more cards option Optimize Show the card collection More cards Home page Cards page Coins page Update Hud Pokemons Menu Favorite System"}, {"post_id": 49250, "ts": "2026-08-17T22:50:40Z", "hours": 1.6881, "text": "Version 1.3.0 Please read all News 15 new pokemons Convert Money System BREAK Pokemons + Filter Web Icon Zoom pokemon card Update Hud Filter system Favorite Pokemons system Pokemons Menu Data Storage System Info The site is currently under development, and new Pokémon cards of various types will be added, such as: Tag Team V-UNION The conversion system may occasionally be inaccurate regarding EUR (Euro) and USD (US Dollar) values; therefore, comments and feedback are important to help ensure the cards reflect their actual market prices. Feel free to suggest cards to be added to the site."}, {"post_id": 48486, "ts": "2026-08-16T21:10:16Z", "hours": 2.2561, "text": "Version 1.2.0 News 23 new pokemons Favorite System Update Hud- Search system Filter system"}, {"post_id": 48306, "ts": "2026-08-16T16:46:40Z", "hours": 1.7733, "text": "** Version 1.1.0** News 31 new pokemons Filter System Vstar pokemons GX pokemons Vmax pokemons V pokemons Update Hud- Search system Pokemon values"}, {"post_id": 47822, "ts": "2026-08-16T01:10:41Z", "hours": 3.1025, "text": "Version 1.0.0 A Brazilian project focused on the Pokémon TCG, where you can check prices for Full Art, GX, and EX cards. The project is still under development, and we are adding more cards. Coming soon: Filter by card type Filter by set More cards Any feedback or ideas regarding the project will help us improve the site."}]...
|
Title: Pokemon Search Lib by @heitordecarvalhopess Title: Pokemon Search Lib by @heitordecarvalhopessoa | Stardance
Devlogs:
Version 1.0.0 A Brazilian project focused on the Pokémon TCG, where you can check prices for Full Art, GX, and EX cards. The project is still under development, and we are adding more cards. Coming soon: Filter by card type Filter by set More cards Any feedback or ideas regarding the project will help us improve the site.
** Version 1.1.0** News 31 new pokemons Filter System Vstar pokemons GX pokemons Vmax pokemons V pokemons Update Hud- Search system Pokemon values
Version 1.2.0 News 23 new pokemons Favorite System Update Hud- Search system Filter system
Version 1.3.0 Please read all News 15 new pokemons Convert Money System BREAK Pokemons + Filter Web Icon Zoom pokemon card Update Hud Filter system Favorite Pokemons system Pokemons Menu Data Storage System Info The site is currently under development, and new Pokémon cards of various types will be added, such as: Tag Team V-UNION The conversion system may occasionally be inaccurate regarding EUR (Euro) and USD (US Dollar) values; therefore, comments and feedback are important to help ensure the cards reflect their actual market prices. Feel free to suggest cards to be added to the site.
Version 1.4.0 BUGS FIXED News Coins See more cards option Optimize Show the card collection More cards Home page Cards page Coins page Update Hud Pokemons Menu Favorite System
Version 1.5.0 News 33 cards Collections Option Show the card collection New collections New CSS Update Pokemons Menu Other Optimize codes Change a little the UI
Version 1.6.0 News 51 cards Coins Carrosel Pin collection Update Collections system Search system Coins system Home page Collections Other Optimize data system Cards in their correct collections Correction of incorrect card art Currency conversion system (BRL, Dollar, Euro) correctly updated. Improvements to CSS code Small changes to the filtering system
Version 1.7.0 Three Pokémon collections have already been completed: Pokémon GO Shining Legends Scarlet & Violet: 151 The project will include only Full Art / EX / GX / V / VMAX / VSTAR / BREAK / V-UNION cards; Trainer and Energy cards will not be added, as the primary focus is exclusively on Pokémon (although previously added Trainer cards will not be removed). News 71 cards Update Search system Home page Pokemons page
Version 1.8.0 Three Pokémon collections have already been completed: Celestial Storm Team Up Champions Path News 98 cards Update Search system Pokemons page Pin colection data.js
Version 1.9.0 Two Pokémon collections have already been completed: Celebrations Evolving Skies News 181 cards Min. and Max. Prices filter 3D Holographic Efect Update Search system Pokemons page Pin colection data.js
Version 1.10.0 Two Pokémon collections have already been completed: Caos Rising Pitch Black News 249 cards Prices Converter: Libras (UK) Iene (JPN) Dolar Australiano (AUS) Franco Suíço (CHF) Update Search system holographic.js Collections Table
Version 1.11.0 One Pokémon collection have already been completed: Twilight Masquerade News 58 cards Compare Cards system compare.html compare.js compare.css Update Ienes prices update Index carrosel Links Hud Search system Cards system
Version 1.12.0 Four Pokémon collection have already been completed: Darkness Ablaze Guardians Rising Burning Shadows Brilliant Stars News 138 cards Cards Menu Swapped Zoom system Swapped Update Prices of some cards Hud modals.css Collections system
Version 1.13.0 HUD UPDATE Two Pokémon collection have already been completed: Fusion Strike Sun & Moon (Base set) New 63 cards Card thumbnails next to their names in the search tab Ui Changes Buttons Home Page Pokemons Page Prices Menu Filter Menu Credits Menu Search Bar Update Prices of some cards Search system Prices changes
Version 1.14.0 – Two Pokémon collection have already been completed: Flashfire Lost Origin New ?? cards I forgot to count them. Cards Menu Prices System Home pages Ui Changes Prices Options Menu Credits Menu Holographic Efect Update Search system Prices changes
Some bug fixes and more cards Sorry, I don’t have any free time these days :( More coins from different countries have also been added :)
Version 1.15.0 – Six Pokémon collection have already been completed: Rebel Clash Evolutions Unbroken Bonds Break Point Stellar Crown Ultra Prism New 109 cards Search Colection Ui Changes Colections menu Search menu Update Search system Prices All colections Names
Version 1.16.0 I had to create a new folder, imgs2 , because GitHub only accepts 1,000 files per folder . Eight Pokémon collection have already been add: Ex: Ruby & Sapphire Ex: Sandstorm Ex: Dragon Ex: Team Magma vs Team Aqua Ex: Hidden Legends Ex: FireRed & LeafGreen Ex: Team Rocket Returns Ex: Deoxys New 79 cards Filters: Name Z-A Price Above 50 Price Between 21-200 Price Between 201-500 Price Between 501-1500 Price Above 1501 Ex Series Star Cards Category More credits Ui Changes Filter menu Search collections menu Collections menu Update Prices Some collections Names
Version 1.17.0 Twelve Pokémon collection have already been add: Ex: Emerald Ex: Unseen Forces Ex: Delta Species Ex: Legend Maker Ex: Holon Phantoms Ex: Crystal Guardians Ex: Dragon Frontiers Ex: Power Keepers XY: Primal Clash XY: Roaring Skies XY: Ancient Origins Celebrations 30th New 292 cards Regions Filter Filters: Type: RGB Type: Shiny Category: Star Region: Paldean Region: Hisuian Region: Galarian Region: Alolan Ui Changes Filter menu Compare.html hud Update Prices Some cards names Filters places
Version 1.18.0 Two Pokémon collection have already been add: 1. Mega Evolution: Phantasmal Fire 2. Mega Evolution: Ascended Heroes New 126 cards Filters Ui Changes Filter menu Card Template Update Data.js ReadMe.md Prices
Ships:
POKÉMON SEARCH LIB A fan-made library featuring “beautiful” and “rare” Pokémon TCG cards; new cards will be added regularly as the site develops. Any feedback, as well as ideas for cards and collections to add, would be valuable for the site.
Pokemon Search is a library for looking up Pokémon card prices; it includes only Pokémon cards—no Energy or Trainer cards. Some sets are currently incomplete but will be added soon.
More systems have been added, such as a card price comparison tool, and the search system has been updated; additionally, more collections have been completed, and new collections have been introduced.
More collections and cards have been added, and many HUDs have been swapped out and updated to improve site performance; various systems have been modified to make them easier for any user to understand.
More card collections have been added, and the filtering and comparison systems have been improved; additionally, the HUDs have been updated to enhance site performance....
|
1793090884.8096118
|
1793177284.8096118
|
|
50004
|
Guess It! by @akisarke | Stardance
|
akisarke
|
1
|
57.0
|
0
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-17T14:07:14Z", "hours": 53.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "Guess It! is finally live! A daily estimation game. Three questions a day, you lock in a number, and get scored on how close you got. The lower the better. I added: a daily puzzle with three questions, a full reveal, and where your guess landed in the distribution AI-generated questions so it never runs dry. They’re checked before they go in the catalog and burned once they’ve been used anonymous play, so you can try it before you make an account email sign up and Hack Club OAuth, with verification and password reset streaks, badges, pinned badges, avatars, bios leaderboards for today, this week, and friends only duels - challenge someone to a live 1v1, three rounds, one shared reveal matchmaking, if you’d rather get paired with a stranger generated sets, for when you want more than the daily puzzle notifications and friend requests React and Fastify on PostgreSQL. No questions are on the backend. The honest part: some of this only broke once it was already live. The question catalog ran all the way down so the questions can repeat. And for a while the AI generation was down because I’m using the free tier of gemini models. You can try it at https://guessit.akisarke.xyz or click the try project button below. See ya later! 👋", "repo": "https://github.com/akisarke/guess-it", "demo": "https://guessit.akisarke.xyz"}]...
|
[{"post_id": 80940, "ts": "202 [{"post_id": 80940, "ts": "2026-10-19T09:43:56Z", "hours": 3.9994, "text": "Devlog 11 After the first ship it got declined because the UI was too AI, and i see it now. So thats why i tried my best to make it less look like it was AI-made. And I think i was pretty successful. I hope you like it!"}, {"post_id": 80379, "ts": "2026-10-17T13:48:17Z", "hours": 3.69, "text": "#Devlog 10 - THE FINAL DEVLOG! As you see the site is fully deployed and on my domain! I’m very exited for you guys to try it but dont expect anything special there will be bugs (since this is my first time working with a backend). Shipping soon! Bye for now! 👋"}, {"post_id": 79422, "ts": "2026-10-13T22:15:36Z", "hours": 7.0172, "text": "Devlog 9 Hey guys! This will probably be the last devlog before shipping. I just fixed some bugs and added more animations and redid the spacing of elements. It isnt still perfect but it gets the job done. Anyway since i dont have anything to show you heres a picture of my cat. His name is Leo if anyone is curious. Thats all. Bye for now! 👋"}, {"post_id": 76761, "ts": "2026-10-04T14:50:16Z", "hours": 9.3736, "text": "Devlog 8 Hi guys I was locking in for the stardance end but then it turns out it got extended by one month so thats cool. Anyways getting close for shipping i just need more questions so i have enough for the daily ones, if you want leave some ideas in the comments down below. Also I need to fix the email verification for the accounts and thats pretty much it. Bye for now! 👋"}, {"post_id": 72156, "ts": "2026-09-22T10:28:44Z", "hours": 8.7528, "text": "Devlog 7 Fixing the duels besides that i didnt do anything special since for now im focusing on that because it dosnt work very well also i made a favicon but havnt yet implemented it will do that later. Dont think i will be posting much devlogs since i want to lock in to finish it before the stardance end. Thats all Bye for now👋"}, {"post_id": 69278, "ts": "2026-09-16T18:36:54Z", "hours": 8.5617, "text": "Devlog 6 Nothing pretty much outside of debugging the duels and the ai generating questions but i also added the history of your ai generated questions in the profile and added a share profile link (i dont like the position of it placed it there just for now later it will be next to the profile info card). Thats all Bye for now!👋"}, {"post_id": 65620, "ts": "2026-09-10T21:19:39Z", "hours": 4.0503, "text": "Devlog 5 Today I worked on the profile (on the bio and on the badges, the badges need icons still) and on the forgot password page and the email sending service (if you want to know im using resend for it and the page needs some ui fixing) and i need to fix the duel/quickplay and the ai generating questions stilll because im a lazy ahh person Bye for now! 👋"}, {"post_id": 64701, "ts": "2026-09-09T10:02:22Z", "hours": 3.5931, "text": "Devlog 4 Hey guys! In this devlog i made the archive of the questions and the profile both of them needs fixing the profile for the badges (since you cant get any for now) and the archive because you cant play them for now. Fixing it in the next devlog hopefully 🤞 Thats all! Bye for now! 👋"}, {"post_id": 63460, "ts": "2026-09-07T10:14:10Z", "hours": 5.1714, "text": "Devlog 3 I added a dark theme and also a switch for it and i made the landing page and finished it so i can now show it to you guys also i cleaned up the code a little bit. Bye for now 👋"}, {"post_id": 61570, "ts": "2026-09-04T15:30:41Z", "hours": 2.105, "text": "Devlog 2 After a lot of brainstorming and researching about the design i think i will go with this but a dark version of the background (didn’t do it now because i’m on a time crunch). Also i added the buttons on the top bar but they don’t do anything for now. That’s all Bye for now! 👋"}, {"post_id": 61123, "ts": "2026-09-03T21:26:36Z", "hours": 0.8294, "text": "New Project!! (Devlog #1) Hi everyone i just started a new game about guessing random things. This is just the start so nothing much there is more in there but i dont want to bore you guys. More devlogs coming soon! Bye for now 👋"}]...
|
Title: Guess It! by @akisarke | Stardance
Devlogs Title: Guess It! by @akisarke | Stardance
Devlogs:
New Project!! (Devlog #1) Hi everyone i just started a new game about guessing random things. This is just the start so nothing much there is more in there but i dont want to bore you guys. More devlogs coming soon! Bye for now 👋
Devlog 2 After a lot of brainstorming and researching about the design i think i will go with this but a dark version of the background (didn’t do it now because i’m on a time crunch). Also i added the buttons on the top bar but they don’t do anything for now. That’s all Bye for now! 👋
Devlog 3 I added a dark theme and also a switch for it and i made the landing page and finished it so i can now show it to you guys also i cleaned up the code a little bit. Bye for now 👋
Devlog 4 Hey guys! In this devlog i made the archive of the questions and the profile both of them needs fixing the profile for the badges (since you cant get any for now) and the archive because you cant play them for now. Fixing it in the next devlog hopefully 🤞 Thats all! Bye for now! 👋
Devlog 5 Today I worked on the profile (on the bio and on the badges, the badges need icons still) and on the forgot password page and the email sending service (if you want to know im using resend for it and the page needs some ui fixing) and i need to fix the duel/quickplay and the ai generating questions stilll because im a lazy ahh person Bye for now! 👋
Devlog 6 Nothing pretty much outside of debugging the duels and the ai generating questions but i also added the history of your ai generated questions in the profile and added a share profile link (i dont like the position of it placed it there just for now later it will be next to the profile info card). Thats all Bye for now!👋
Devlog 7 Fixing the duels besides that i didnt do anything special since for now im focusing on that because it dosnt work very well also i made a favicon but havnt yet implemented it will do that later. Dont think i will be posting much devlogs since i want to lock in to finish it before the stardance end. Thats all Bye for now👋
Devlog 8 Hi guys I was locking in for the stardance end but then it turns out it got extended by one month so thats cool. Anyways getting close for shipping i just need more questions so i have enough for the daily ones, if you want leave some ideas in the comments down below. Also I need to fix the email verification for the accounts and thats pretty much it. Bye for now! 👋
Devlog 9 Hey guys! This will probably be the last devlog before shipping. I just fixed some bugs and added more animations and redid the spacing of elements. It isnt still perfect but it gets the job done. Anyway since i dont have anything to show you heres a picture of my cat. His name is Leo if anyone is curious. Thats all. Bye for now! 👋
#Devlog 10 - THE FINAL DEVLOG! As you see the site is fully deployed and on my domain! I’m very exited for you guys to try it but dont expect anything special there will be bugs (since this is my first time working with a backend). Shipping soon! Bye for now! 👋
Devlog 11 After the first ship it got declined because the UI was too AI, and i see it now. So thats why i tried my best to make it less look like it was AI-made. And I think i was pretty successful. I hope you like it!
Ships:
Guess It! is finally live! A daily estimation game. Three questions a day, you lock in a number, and get scored on how close you got. The lower the better. I added: a daily puzzle with three questions, a full reveal, and where your guess landed in the distribution AI-generated questions so it never runs dry. They’re checked before they go in the catalog and burned once they’ve been used anonymous play, so you can try it before you make an account email sign up and Hack Club OAuth, with verification and password reset streaks, badges, pinned badges, avatars, bios leaderboards for today, this week, and friends only duels - challenge someone to a live 1v1, three rounds, one shared reveal matchmaking, if you’d rather get paired with a stranger generated sets, for when you want more than the daily puzzle notifications and friend requests React and Fastify on PostgreSQL. No questions are on the backend. The honest part: some of this only broke once it was already live. The question catalog ran all the way down so the questions can repeat. And for a while the AI generation was down because I’m using the free tier of gemini models. You can try it at https://guessit.akisarke.xyz or click the try project button below. See ya later! 👋...
|
1793047918.4836996
|
1793134318.4836996
|
|
67427
|
Coldline-inspired Alarm by @nastavial | Stardance
|
nastavial
|
0
|
56.7
|
0
|
[]
|
[{"post_id": 81258, "ts": "202 [{"post_id": 81258, "ts": "2026-10-20T14:31:21Z", "hours": 0.905, "text": "Okay… The first renderer is on progress! To make things simpler, I decided to make my own Vector class. I’m sorry if I can’t grind very much this time…"}, {"post_id": 80971, "ts": "2026-10-19T13:04:42Z", "hours": 2.9981, "text": "Working on the user interface! The first ~20 minutes is me trying to pick between Figma or Photopea (I decided to use Figma), how to import font, and how to get started with Figma. So I did learn some fundamentals of Figma I changed the planned font from FreeMono to TomThumb. It’s simpler, small, scalable, and stylized."}, {"post_id": 80677, "ts": "2026-10-18T13:44:32Z", "hours": 6.2453, "text": "OKAY… That’s a LOT. Okay… First of all, the clock’s system (aside from the visuals) are now be fully operable as the final architectural pieces has been completed. Second, completely eradicated delays in #1 minigame. Third. KILOTONS of bugfixes (mostly the fatal ones) (I’ve just realized I accidentally have two different commits named “FIX #3” lol) Fourth. OHH FINALLY MY BACK CAN REST!"}, {"post_id": 80449, "ts": "2026-10-17T17:25:13Z", "hours": 0.5314, "text": "Found few genuinely dumb issues (mb): FORGOT TO ACTUALLY RANDOMIZE THE TOKEN. This is the most fatal one. Forgot to reset the menu data. So the user’s probably will stuck inside a single minigame Just learned that C++ tends to have weird quirks if you define a variable inside unscoped switch/case statement. Forgot to update set any_sw_clicked nor the rotary encoder button click. I’m so sorry if I can only develop this project for about few minutes tonight because there are a lot of going on today. Sorry :"}, {"post_id": 80167, "ts": "2026-10-16T14:50:16Z", "hours": 2.4, "text": "Ehem… A quick recap. It turns out, inputs handling are not-so-basic after all. At the first glance, everything seems easy. I thought the concept was simple: analogRead -> register into a struct -> return. But it turns out everything is… a bit messier. I ended up learning what are interrupts. Another couple of things that I finished were the lockscreen (aside the UI elements ofc) and the alarm buzzer. The lockscreen are somewhat trivial, meanwhile the buzzer made me relearn about PWM."}, {"post_id": 79825, "ts": "2026-10-15T15:24:20Z", "hours": 3.2628, "text": "Completed two more minigames (#3 and #4). That means every minigames I planned so far are coded, yeay! (more minigames may be added soon) The current available minigames are: Simon Slider match (like Fisch reel mechanism, but three of it all at once) Slider hit (sorta like) Where’s waldo."}, {"post_id": 79547, "ts": "2026-10-14T15:30:23Z", "hours": 2.0958, "text": "Second minigame is completed! (aside the renderer… so yeah, no demo can be showed yet) Aside from the minigame, there’s also a slight rework to ensure ‘consistency’ and ‘developer’s QOL’. Furthermore, the code are now microscopically more optimized!"}, {"post_id": 79315, "ts": "2026-10-13T14:24:57Z", "hours": 4.7808, "text": "The overall loop flow is completed. BUT THE MOST IMPORTANTLY, THE FIRST MINIGAME IS COMPLETED (aside the UI draw aspect) Okay… this thing took longer than I thought… I’m kinda overwhelmed, but overall still fun WAIT, YOU CAN UPLOAD MORE THAN ONE IMAGE ON A SINGLE DEVLOG? I just found out about it…"}, {"post_id": 79061, "ts": "2026-10-12T15:16:28Z", "hours": 3.9986, "text": "Okay… I’ve worked on the basic datastructure of the firmware. Yeay! So the most unique thing about this alarm I made is that you need to complete three minigames to get three ‘verification code’ that you must memorize in order to shut down the alarm. BUT… I want the alarm to be extra pesky, so some of the minigames in a session (1-2 of them) would require ‘unlock key’ from other minigame in the same session."}, {"post_id": 78701, "ts": "2026-10-11T10:59:29Z", "hours": 0.715, "text": "Because I know there will be a lot of trials and errors, I’ve recreate the schematic inside Wokwi and set up Wokwi simulator inside VS Code (I mean it’s free and why not?) I don’t use Wakatime this time because I’m not yet started coding. This is just me or the TFT display pinout is a bit… weird"}, {"post_id": 78687, "ts": "2026-10-11T09:24:49Z", "hours": 2.38, "text": "The last piece (i think) is done! The phone box lid is done, yeay OHH GOSH, I’M SO EXCITED TO DO THE CODING. WooOoOooo"}, {"post_id": 78357, "ts": "2026-10-10T15:29:02Z", "hours": 0.4944, "text": "Today, I finished the all-new phone box body. Yeay! Not exactly “smooth”, and I’m not yet added the handset holder + mold. But hey, at least some progress can be made (I’m to sleepy to continue, sorry!). WOooO, I’m so excited to finish this project."}, {"post_id": 78096, "ts": "2026-10-09T15:35:47Z", "hours": 3.4803, "text": "Ehem… I think I had some… uhm ‘development’. Remember when I first starting the project? That time, I hate CAD SO MUCH. Now…, I’ve found myself enjoying the CAD process. It is fun indeed. Here’s a list for what I’ve done and learned: REVAMPING the OLD UGLY phone box design. (I’m currently working on the internal walls. I learned to trust the process I learned that I can use formulas inside dimension tool. So I did! I learned to apply the Pythagorean theorem to my design! (I know it’s pretty basic, but hey, everyone has to start somewhere)"}, {"post_id": 77851, "ts": "2026-10-08T15:13:20Z", "hours": 5.5969, "text": "What happened today? ALOT. Here’s a summary: Cooked by my arc nemesis: “Rail not smooth error”. Trying to “fix” projection and alignment issues (they’re now worse btw) Banged my head several times. Still stuck fixing the handset bell for 4 and a half hours Lobotomized myself Had a massive thinking moment Decided that “the handset aren’t necessary” Sacrificed the telephone handset to actually make some progress. Moved-on to polish the phone box. “Sometimes, a sacrifice must be made. Especially when you’re stuck for 6 devlogs in a row” - Sun Tzu I’m not lazy, okay? I’m just having a replan for effectivity . Note: Maybe , I will try to complete the handset once everything else finished."}, {"post_id": 77580, "ts": "2026-10-07T15:05:13Z", "hours": 4.0506, "text": "Made the top, side, and a bunch of garbage sketches. This time, I’m exploring surface modeling. Huft… How newbie am I? I don’t even know if I can make it on time. Seems there’s no progress on the CAD phase ;( How can making a telephone handset be this hard?"}, {"post_id": 77318, "ts": "2026-10-06T15:09:51Z", "hours": 0.6919, "text": "Based on some Slack feedbacks, I migrated to Autodesk Fusion. The progress is minimal today. This is due to tomorrow’s science exam. Maybe I’ll start a dead-grind tomorrow to make up for the wasted time. My target is to finish the project’s design by the eight of October. Ohhhhh, time is running out so quickly, isn’t it?"}, {"post_id": 77040, "ts": "2026-10-05T13:41:37Z", "hours": 3.275, "text": "Yo… why is my phone tweaking? DAY 3 STUCK IN CAD PHASE BTW. GRRRRR. Maybe I should migrate to fusion instead? Sure… Lot of the community advice me to do so."}, {"post_id": 76637, "ts": "2026-10-04T07:25:53Z", "hours": 1.5069, "text": "Made the phone box and outline of the… ummm… phone? phone handle? I learned the best way to shape the phone box is to design the lid first, and then the walls. Last time, I did the reverse, so that’s why I’m stuck. The amount of effort required to create a simple shape made me respect hobbyist and engineers more. I literally spent most of the time trying to figure out how to make symmetrical phone, lol. I tried to make the phone 3D, but again… It’s harder than I thought. I ended up to restart the 3D-fication process of the phone."}, {"post_id": 76608, "ts": "2026-10-04T04:54:40Z", "hours": 3.2828, "text": "uhm. long story short, I revamped everything twice. why? it turns out, the display is much longer than I anticipated. so the pcb layout must be tweaked. the cad model is… suboptimal if i say. but i think i’m getting hang of it. now i know how to use sketch, dimension, and extrude properly. still, i have a long way to go."}, {"post_id": 76338, "ts": "2026-10-03T07:45:46Z", "hours": 4.0131, "text": "Coldline-inspired alarm I’m sooooo clueless. This is my first ever attempt to design a schematic, PCB, and CAD (CAD-ing, I guess?). Schematic? All good, a piece of cake. PCB? A lot of retries, but still manageable. CAD? OH NO NO NO. A PHASE OF ABSOLUTE DOOM AND DESPAIR"}]...
|
Title: Coldline-inspired Alarm by @nastavial | Sta Title: Coldline-inspired Alarm by @nastavial | Stardance
Devlogs:
Coldline-inspired alarm I’m sooooo clueless. This is my first ever attempt to design a schematic, PCB, and CAD (CAD-ing, I guess?). Schematic? All good, a piece of cake. PCB? A lot of retries, but still manageable. CAD? OH NO NO NO. A PHASE OF ABSOLUTE DOOM AND DESPAIR
uhm. long story short, I revamped everything twice. why? it turns out, the display is much longer than I anticipated. so the pcb layout must be tweaked. the cad model is… suboptimal if i say. but i think i’m getting hang of it. now i know how to use sketch, dimension, and extrude properly. still, i have a long way to go.
Made the phone box and outline of the… ummm… phone? phone handle? I learned the best way to shape the phone box is to design the lid first, and then the walls. Last time, I did the reverse, so that’s why I’m stuck. The amount of effort required to create a simple shape made me respect hobbyist and engineers more. I literally spent most of the time trying to figure out how to make symmetrical phone, lol. I tried to make the phone 3D, but again… It’s harder than I thought. I ended up to restart the 3D-fication process of the phone.
Yo… why is my phone tweaking? DAY 3 STUCK IN CAD PHASE BTW. GRRRRR. Maybe I should migrate to fusion instead? Sure… Lot of the community advice me to do so.
Based on some Slack feedbacks, I migrated to Autodesk Fusion. The progress is minimal today. This is due to tomorrow’s science exam. Maybe I’ll start a dead-grind tomorrow to make up for the wasted time. My target is to finish the project’s design by the eight of October. Ohhhhh, time is running out so quickly, isn’t it?
Made the top, side, and a bunch of garbage sketches. This time, I’m exploring surface modeling. Huft… How newbie am I? I don’t even know if I can make it on time. Seems there’s no progress on the CAD phase ;( How can making a telephone handset be this hard?
What happened today? ALOT. Here’s a summary: Cooked by my arc nemesis: “Rail not smooth error”. Trying to “fix” projection and alignment issues (they’re now worse btw) Banged my head several times. Still stuck fixing the handset bell for 4 and a half hours Lobotomized myself Had a massive thinking moment Decided that “the handset aren’t necessary” Sacrificed the telephone handset to actually make some progress. Moved-on to polish the phone box. “Sometimes, a sacrifice must be made. Especially when you’re stuck for 6 devlogs in a row” - Sun Tzu I’m not lazy, okay? I’m just having a replan for effectivity . Note: Maybe , I will try to complete the handset once everything else finished.
Ehem… I think I had some… uhm ‘development’. Remember when I first starting the project? That time, I hate CAD SO MUCH. Now…, I’ve found myself enjoying the CAD process. It is fun indeed. Here’s a list for what I’ve done and learned: REVAMPING the OLD UGLY phone box design. (I’m currently working on the internal walls. I learned to trust the process I learned that I can use formulas inside dimension tool. So I did! I learned to apply the Pythagorean theorem to my design! (I know it’s pretty basic, but hey, everyone has to start somewhere)
Today, I finished the all-new phone box body. Yeay! Not exactly “smooth”, and I’m not yet added the handset holder + mold. But hey, at least some progress can be made (I’m to sleepy to continue, sorry!). WOooO, I’m so excited to finish this project.
The last piece (i think) is done! The phone box lid is done, yeay OHH GOSH, I’M SO EXCITED TO DO THE CODING. WooOoOooo
Because I know there will be a lot of trials and errors, I’ve recreate the schematic inside Wokwi and set up Wokwi simulator inside VS Code (I mean it’s free and why not?) I don’t use Wakatime this time because I’m not yet started coding. This is just me or the TFT display pinout is a bit… weird
Okay… I’ve worked on the basic datastructure of the firmware. Yeay! So the most unique thing about this alarm I made is that you need to complete three minigames to get three ‘verification code’ that you must memorize in order to shut down the alarm. BUT… I want the alarm to be extra pesky, so some of the minigames in a session (1-2 of them) would require ‘unlock key’ from other minigame in the same session.
The overall loop flow is completed. BUT THE MOST IMPORTANTLY, THE FIRST MINIGAME IS COMPLETED (aside the UI draw aspect) Okay… this thing took longer than I thought… I’m kinda overwhelmed, but overall still fun WAIT, YOU CAN UPLOAD MORE THAN ONE IMAGE ON A SINGLE DEVLOG? I just found out about it…
Second minigame is completed! (aside the renderer… so yeah, no demo can be showed yet) Aside from the minigame, there’s also a slight rework to ensure ‘consistency’ and ‘developer’s QOL’. Furthermore, the code are now microscopically more optimized!
Completed two more minigames (#3 and #4). That means every minigames I planned so far are coded, yeay! (more minigames may be added soon) The current available minigames are: Simon Slider match (like Fisch reel mechanism, but three of it all at once) Slider hit (sorta like) Where’s waldo.
Ehem… A quick recap. It turns out, inputs handling are not-so-basic after all. At the first glance, everything seems easy. I thought the concept was simple: analogRead -> register into a struct -> return. But it turns out everything is… a bit messier. I ended up learning what are interrupts. Another couple of things that I finished were the lockscreen (aside the UI elements ofc) and the alarm buzzer. The lockscreen are somewhat trivial, meanwhile the buzzer made me relearn about PWM.
Found few genuinely dumb issues (mb): FORGOT TO ACTUALLY RANDOMIZE THE TOKEN. This is the most fatal one. Forgot to reset the menu data. So the user’s probably will stuck inside a single minigame Just learned that C++ tends to have weird quirks if you define a variable inside unscoped switch/case statement. Forgot to update set any_sw_clicked nor the rotary encoder button click. I’m so sorry if I can only develop this project for about few minutes tonight because there are a lot of going on today. Sorry :
OKAY… That’s a LOT. Okay… First of all, the clock’s system (aside from the visuals) are now be fully operable as the final architectural pieces has been completed. Second, completely eradicated delays in #1 minigame. Third. KILOTONS of bugfixes (mostly the fatal ones) (I’ve just realized I accidentally have two different commits named “FIX #3” lol) Fourth. OHH FINALLY MY BACK CAN REST!
Working on the user interface! The first ~20 minutes is me trying to pick between Figma or Photopea (I decided to use Figma), how to import font, and how to get started with Figma. So I did learn some fundamentals of Figma I changed the planned font from FreeMono to TomThumb. It’s simpler, small, scalable, and stylized.
Okay… The first renderer is on progress! To make things simpler, I decided to make my own Vector class. I’m sorry if I can’t grind very much this time…...
|
1793109235.7131927
|
1793714035.7131927
|