|
44934
|
card tools by @poggersv2 | Stardance
|
poggersv2
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: card tools by @poggersv2 | Stardance
|
1793879226.1623511
|
1794743226.1623511
|
|
53133
|
car rental system by @nand_vachhani | Stardance
|
nand_vachhani
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car rental system by @nand_vachhani | Stard Title: car rental system by @nand_vachhani | Stardance...
|
1793472786.707086
|
1794077586.707086
|
|
54969
|
car racing game by @vihaan12 | Stardance
|
vihaan12
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car racing game by @vihaan12 | Stardance
|
1793764328.8478715
|
1794369128.8478715
|
|
54973
|
car race game by @vihaanreddyy | Stardance
|
vihaanreddyy
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car race game by @vihaanreddyy | Stardance
|
1793764340.43309
|
1794369140.43309
|
|
6301
|
car hardware by @Casper | Stardance
|
Casper
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car hardware by @Casper | Stardance
|
1793447693.2769122
|
1794052493.2769122
|
|
61355
|
car game by @muzamela549 | Stardance
|
muzamela549
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-12T18:34:32Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "this a game which i made like a few months ago but i just want to uploaded it to see how shipping process work. sorry if there is any bugggggg:))", "repo": "https://github.com/Ahmadmuz/car-game", "demo": "https://turbodo.netlify.app/desktop/test/index.html"}]...
|
[{"post_id": 66764, "ts": "202 [{"post_id": 66764, "ts": "2026-09-12T17:29:47Z", "hours": 0.4617, "text": "this is a car game which i made a few months ago. but im still improving it."}]...
|
Title: car game by @muzamela549 | Stardance
Devlo Title: car game by @muzamela549 | Stardance
Devlogs:
this is a car game which i made a few months ago. but im still improving it.
Ships:
this a game which i made like a few months ago but i just want to uploaded it to see how shipping process work. sorry if there is any bugggggg:))...
|
1793825823.6408863
|
1793912223.6408863
|
|
51835
|
car by @gasserhagar | Stardance
|
gasserhagar
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car by @gasserhagar | Stardance
|
1793407928.9040558
|
1794012728.9040558
|
|
33472
|
car by @Zende | Stardance
|
Zende
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car by @Zende | Stardance
|
1793480162.5216355
|
1794084962.5216355
|
|
26910
|
car by @Danial | Stardance
|
Danial
|
1
|
1.28
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-28T08:11:41Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made a fast remote-controlled car. I couldn’t finish fixing the code because I lost my programming cable, so I wasn’t able to upload the final changes.", "repo": "https://github.com/Denial132/car", "demo": ""}]...
|
[{"post_id": 19065, "ts": "202 [{"post_id": 19065, "ts": "2026-06-30T08:07:43Z", "hours": 0.2833, "text": "Devlog #2 Today I found the programming cable for my RC car, so I can finally access and update the code again. Before this, I could only work on the hardware because I couldn’t connect the car to my computer. My next step is to upload the code, test the controls, and fix any bugs I find."}, {"post_id": 16892, "ts": "2026-06-27T12:43:56Z", "hours": 0.8, "text": "Devlog: Finished My Car Build 🚗 Today I finished building a small car. I assembled all the main parts and tested it to make sure it moves correctly. At first there were a few small issues with movement, but I fixed them by adjusting the wheels and checking the connections. Now it runs smoothly and responds as expected. simple, quick, and goes really fast"}]...
|
Title: car by @Danial | Stardance
Devlogs:
Devlog Title: car by @Danial | Stardance
Devlogs:
Devlog: Finished My Car Build 🚗 Today I finished building a small car. I assembled all the main parts and tested it to make sure it moves correctly. At first there were a few small issues with movement, but I fixed them by adjusting the wheels and checking the connections. Now it runs smoothly and responds as expected. simple, quick, and goes really fast
Devlog #2 Today I found the programming cable for my RC car, so I can finally access and update the code again. Before this, I could only work on the hardware because I couldn’t connect the car to my computer. My next step is to upload the code, test the controls, and fix any bugs I find.
Ships:
I made a fast remote-controlled car. I couldn’t finish fixing the code because I lost my programming cable, so I wasn’t able to upload the final changes....
|
1793771413.7038925
|
1794635413.7038925
|
|
72800
|
car by @BenjaminLewis | Stardance
|
BenjaminLewis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car by @BenjaminLewis | Stardance
|
1793670426.31354
|
1794275226.31354
|
|
24651
|
car Bluetooth stereo by @s0meone | Stardance
|
s0meone
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: car Bluetooth stereo by @s0meone | Stardanc Title: car Bluetooth stereo by @s0meone | Stardance...
|
1793469066.0777948
|
1794073866.0777948
|
|
60747
|
capybara-clicker by @222erik | Stardance
|
222erik
|
2
|
17.0
|
124
|
[{"ship_num": 1, "ts": "2026-1 [{"ship_num": 1, "ts": "2026-10-29T00:28:11Z", "hours": 3.0, "multiplier": 7.19, "payout": 24, "blessing": "neutral", "text": "I finally finished my capybara clicker game! What did you make? I made a little clicker game where you click the capybara and upgrade What was challenging? The images (capybara, shop icons) were not easy to make because i had to learn gimp . What are you proud of? The thing i’m most proud of must be the shop because it has many items and it took a long time to code it. What should people know so they can test your project? Clicking space works as well as clicking the capybara. The debug buttons are there to help you. Also the capybara is AI-generated (as you probably can guess) Thank you!", "repo": "https://github.com/222erik/capybara-clicker/", "demo": "https://222erik.github.io/capybara-clicker/"}, {"ship_num": 2, "ts": "2026-10-19T16:37:33Z", "hours": 14.0, "multiplier": 7.22, "payout": 100, "blessing": "neutral", "text": "I made a capybara clicker game where you buy shop items and upgrade your skin. The most challenging thing to code was probably the shop because it has many items. The skins/images took a long time to make because i had to learn GIMP . I’m most proud of the animations.", "repo": "https://github.com/222erik/capybara-clicker/", "demo": "https://222erik.github.io/capybara-clicker/"}]...
|
[{"post_id": 83965, "ts": "202 [{"post_id": 83965, "ts": "2026-10-29T00:05:11Z", "hours": 1.9858, "text": "new devlog!! today i did this: decreased shop prices made so you can click with space bug fixes little helper text"}, {"post_id": 82441, "ts": "2026-10-24T20:14:51Z", "hours": 1.2858, "text": "devlog 3, i finally made some progress on my capybara clicker game. i fixed some bugs and made a spinning sun"}, {"post_id": 75655, "ts": "2026-09-30T17:24:19Z", "hours": 5.8808, "text": "i made some progress on my capybara clicker game"}, {"post_id": 70756, "ts": "2026-09-19T18:21:03Z", "hours": 7.9483, "text": "first devlog, i’ve been working on a capybara clicker clone. I added the shop, some counters and the capybara itself."}]...
|
Title: capybara-clicker by @222erik | Stardance
D Title: capybara-clicker by @222erik | Stardance
Devlogs:
first devlog, i’ve been working on a capybara clicker clone. I added the shop, some counters and the capybara itself.
i made some progress on my capybara clicker game
devlog 3, i finally made some progress on my capybara clicker game. i fixed some bugs and made a spinning sun
new devlog!! today i did this: decreased shop prices made so you can click with space bug fixes little helper text
Ships:
I made a capybara clicker game where you buy shop items and upgrade your skin. The most challenging thing to code was probably the shop because it has many items. The skins/images took a long time to make because i had to learn GIMP . I’m most proud of the animations.
I finally finished my capybara clicker game! What did you make? I made a little clicker game where you click the capybara and upgrade What was challenging? The images (capybara, shop icons) were not easy to make because i had to learn gimp . What are you proud of? The thing i’m most proud of must be the shop because it has many items and it took a long time to code it. What should people know so they can test your project? Clicking space works as well as clicking the capybara. The debug buttons are there to help you. Also the capybara is AI-generated (as you probably can guess) Thank you!...
|
1793807522.2355032
|
1793893922.2355032
|
|
16159
|
captcha slover by @azure | Stardance
|
azure
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-12T06:05:08Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "i made a captcha solver using yolo and pyautogui. one of the biggest challenges was compute, i don’t own a GPU so trying to run the model locally wasn’t possible but google collab was giving me issues even when tunnels worked sometimes it wouldn’t bind to port. I’m proud of how it turned out in the end not the most accurate project but a fun make. you’ll need to clone the project and put notebook into google collab or modify it for local use when the notebook works just copy the 1st link you see and paste it into the URL in the autocaptcha.py", "repo": "https://github.com/BraedynL0530/autocaptcha", "demo": "https://github.com/BraedynL0530/autocaptcha/tree/master"}]...
|
[{"post_id": 7254, "ts": "2026 [{"post_id": 7254, "ts": "2026-06-12T03:07:18Z", "hours": 1.1364, "text": "devlog 2 fixxing ocr and double click cordinates. I realized that it wasnt a traing issue most of the time rather the ocr just sucks so i cropped the header to help. and i also had client side cordinates for the header so ocr was bugging i fixxed it by adjusting for its pov. same with click cordinates. also for some reason it clicks the same square twice to i decied to filter out over lapping classes to fix it using iou. it has improved the accuracy but still not as accurate as id like"}, {"post_id": 6624, "ts": "2026-06-11T03:30:24Z", "hours": 1.1469, "text": "devlog 1 adding on fixxing the tunnel not connecting to port 8000/ 502 gateway error i needed a time .sleep after debugging with curl, also. ocr struggles with all the text so i cropped it for purely ocr, with a test script to find each corner and the width/height of it. need to fine tune model for more items as of now it doesnt know what to click and is only good at items in dataset and the full item not pieces of it."}]...
|
Title: captcha slover by @azure | Stardance
Devlo Title: captcha slover by @azure | Stardance
Devlogs:
devlog 1 adding on fixxing the tunnel not connecting to port 8000/ 502 gateway error i needed a time .sleep after debugging with curl, also. ocr struggles with all the text so i cropped it for purely ocr, with a test script to find each corner and the width/height of it. need to fine tune model for more items as of now it doesnt know what to click and is only good at items in dataset and the full item not pieces of it.
devlog 2 fixxing ocr and double click cordinates. I realized that it wasnt a traing issue most of the time rather the ocr just sucks so i cropped the header to help. and i also had client side cordinates for the header so ocr was bugging i fixxed it by adjusting for its pov. same with click cordinates. also for some reason it clicks the same square twice to i decied to filter out over lapping classes to fix it using iou. it has improved the accuracy but still not as accurate as id like
Ships:
i made a captcha solver using yolo and pyautogui. one of the biggest challenges was compute, i don’t own a GPU so trying to run the model locally wasn’t possible but google collab was giving me issues even when tunnels worked sometimes it wouldn’t bind to port. I’m proud of how it turned out in the end not the most accurate project but a fun make. you’ll need to clone the project and put notebook into google collab or modify it for local use when the notebook works just copy the 1st link you see and paste it into the URL in the autocaptcha.py...
|
1793775035.6437886
|
1794639035.6437886
|
|
70687
|
canvas shell for teachers by @Vortex1 | Stardance
|
Vortex1
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: canvas shell for teachers by @Vortex1 | Sta Title: canvas shell for teachers by @Vortex1 | Stardance...
|
1793911838.9555705
|
1794516638.9555705
|
|
40552
|
cantareel by @Doun | Stardance
|
Doun
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cantareel by @Doun | Stardance
|
1793440557.1325908
|
1794045357.1325908
|
|
51870
|
cansat by @ducokaptein | Stardance
|
ducokaptein
|
0
|
0.82
|
0
|
[]
|
[{"post_id": 50983, "ts": "202 [{"post_id": 50983, "ts": "2026-08-20T13:55:56Z", "hours": 0.8236, "text": "a cansat to record data and take pictures"}]...
|
Title: cansat by @ducokaptein | Stardance
Devlogs Title: cansat by @ducokaptein | Stardance
Devlogs:
a cansat to record data and take pictures...
|
1793411311.3146517
|
1794016111.3146517
|
|
24782
|
candy 3d printer by @hellobriant | Stardance
|
hellobriant
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: candy 3d printer by @hellobriant | Stardanc Title: candy 3d printer by @hellobriant | Stardance...
|
1793328958.6575549
|
1793933758.6575549
|
|
33770
|
candle by @folsense | Stardance
|
folsense
|
0
|
1.86
|
0
|
[]
|
[{"post_id": 27101, "ts": "202 [{"post_id": 27101, "ts": "2026-07-12T11:25:33Z", "hours": 1.8553, "text": "working on creating a realistic looking candle shader! this is a lot harder than i thought it would be…"}]...
|
Title: candle by @folsense | Stardance
Devlogs:
w Title: candle by @folsense | Stardance
Devlogs:
working on creating a realistic looking candle shader! this is a lot harder than i thought it would be…...
|
1793451113.9410436
|
1794055913.9410436
|
|
53785
|
campus-tab by @Nitheesh_Badri | Stardance
|
Nitheesh_Badri
|
0
|
1.4
|
0
|
[]
|
[{"post_id": 53826, "ts": "202 [{"post_id": 53826, "ts": "2026-08-24T14:57:28Z", "hours": 1.4028, "text": "Devlog-1 So basically I’m working on a chrome tab that will be useful for students attending college or uni and every time they want to go and search something they can be reminded of their timetable , to do list or even their previously played music can be revisited. I’ve created this UI so far , it’s covering the whole page which is not what i actually wanted. So after I am done completing the functionality of each block , i will move them to the sides so that the actual search bar will be visible :) !"}]...
|
Title: campus-tab by @Nitheesh_Badri | Stardance
Title: campus-tab by @Nitheesh_Badri | Stardance
Devlogs:
Devlog-1 So basically I’m working on a chrome tab that will be useful for students attending college or uni and every time they want to go and search something they can be reminded of their timetable , to do list or even their previously played music can be revisited. I’ve created this UI so far , it’s covering the whole page which is not what i actually wanted. So after I am done completing the functionality of each block , i will move them to the sides so that the actual search bar will be visible :) !...
|
1793504930.9715114
|
1794109730.9715114
|
|
17119
|
camera-based game by @seara | Stardance
|
seara
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: camera-based game by @seara | Stardance
|
1793450955.7234786
|
1794055755.7234786
|
|
66469
|
camera guided robot arm by @aka543 | Stardance
|
aka543
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: camera guided robot arm by @aka543 | Starda Title: camera guided robot arm by @aka543 | Stardance...
|
1793717695.9515736
|
1794322495.9515736
|
|
66958
|
camera by @amiterlich05 | Stardance
|
amiterlich05
|
0
|
8.08
|
0
|
[]
|
[{"post_id": 75628, "ts": "202 [{"post_id": 75628, "ts": "2026-09-30T16:24:29Z", "hours": 8.0783, "text": "Devlog 1: I had done most of the work beforehand, but now I had the time to finish it up. I completed the schematics, added screws and textures, rounded off the corners, and essentially transformed it from a camera-shaped brick into something that looks more like a real camera. Overall, I really like how it turned out; there were so many different options and I experimented with a lot of things during the project, but I finally settled on the final choices and wrapped up the last few details. I wish I’d had more time, but the submission deadline is already here."}]...
|
Title: camera by @amiterlich05 | Stardance
Devlog Title: camera by @amiterlich05 | Stardance
Devlogs:
Devlog 1: I had done most of the work beforehand, but now I had the time to finish it up. I completed the schematics, added screws and textures, rounded off the corners, and essentially transformed it from a camera-shaped brick into something that looks more like a real camera. Overall, I really like how it turned out; there were so many different options and I experimented with a lot of things during the project, but I finally settled on the final choices and wrapped up the last few details. I wish I’d had more time, but the submission deadline is already here....
|
1793725037.3773735
|
1794329837.3773735
|
|
70045
|
camera by @Dalv | Stardance
|
Dalv
|
0
|
5.75
|
0
|
[]
|
[{"post_id": 81821, "ts": "202 [{"post_id": 81821, "ts": "2026-10-22T17:05:45Z", "hours": 3.25, "text": "I finished the case! :) and now I’m going to start on the PCB because wiring 40 wires individualy would be a pain but i have a problem the raspberry pi 0 2 w only has 40 pins and i need 47 so now I’m going to figure that out and after that i only need to refine the case make the PCB and the firmware and then I’m done i think and here is the finished case"}, {"post_id": 81256, "ts": "2026-10-20T14:09:33Z", "hours": 2.5028, "text": "Made the case and parts i started working on the case and i took a liltle inspiration from real cameras but the rest is from scratch and i went for the rasberry pi hq camera wich has a decent(ish) sensor but i still way better than my iphone 7 so i can’t complain and i use the rasberry pi zero 2 w as the controller because it has a sci port so i can conect the camera aand because it has pleny of gpio pins that i need for the buttons flash and the screen"}]...
|
Title: camera by @Dalv | Stardance
Devlogs:
Made Title: camera by @Dalv | Stardance
Devlogs:
Made the case and parts i started working on the case and i took a liltle inspiration from real cameras but the rest is from scratch and i went for the rasberry pi hq camera wich has a decent(ish) sensor but i still way better than my iphone 7 so i can’t complain and i use the rasberry pi zero 2 w as the controller because it has a sci port so i can conect the camera aand because it has pleny of gpio pins that i need for the buttons flash and the screen
I finished the case! :) and now I’m going to start on the PCB because wiring 40 wires individualy would be a pain but i have a problem the raspberry pi 0 2 w only has 40 pins and i need 47 so now I’m going to figure that out and after that i only need to refine the case make the PCB and the firmware and then I’m done i think and here is the finished case...
|
1793605770.3194249
|
1794210570.3194249
|
|
44478
|
camera arm by @MaxMadeGG | Stardance
|
MaxMadeGG
|
1
|
3.0
|
16
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-08T07:07:42Z", "hours": 3.0, "multiplier": 5.0, "payout": 16, "blessing": "neutral", "text": "finished, you can now build it i hope it will be useful", "repo": "https://github.com/MaxMadeGG/camera-arm", "demo": ""}]...
|
[{"post_id": 42725, "ts": "202 [{"post_id": 42725, "ts": "2026-08-07T16:20:05Z", "hours": 0.7683, "text": "Assembled all…and this time it’s perfect! You can finally build yours…files on github(note i’m currently making the readme)"}, {"post_id": 42471, "ts": "2026-08-07T07:06:25Z", "hours": 0.4003, "text": "upgraded the models to fix the arm that falls apart"}, {"post_id": 42012, "ts": "2026-08-06T15:41:57Z", "hours": 0.6, "text": "uhh…ok i assembled it…kinda falling apart but works…i will update it tomorrow or in some 2-3 weeks (the files are already available on my github) because i have a self-balancing robot that is waiting to be build…also good news my multimeter arrived so i can test the boost converter!"}, {"post_id": 41871, "ts": "2026-08-06T10:50:36Z", "hours": 0.7172, "text": "finished all the parts"}, {"post_id": 41839, "ts": "2026-08-06T09:29:17Z", "hours": 0.7839, "text": "I started modeling the first part…i finished it but then realized that the model is stupid…will never work…so wasted 30mins. So i started modeling again and that took me 15mins(model is simpler)…now it’s printing…lets hope it works🙏"}]...
|
Title: camera arm by @MaxMadeGG | Stardance
Devlo Title: camera arm by @MaxMadeGG | Stardance
Devlogs:
I started modeling the first part…i finished it but then realized that the model is stupid…will never work…so wasted 30mins. So i started modeling again and that took me 15mins(model is simpler)…now it’s printing…lets hope it works🙏
finished all the parts
uhh…ok i assembled it…kinda falling apart but works…i will update it tomorrow or in some 2-3 weeks (the files are already available on my github) because i have a self-balancing robot that is waiting to be build…also good news my multimeter arrived so i can test the boost converter!
upgraded the models to fix the arm that falls apart
Assembled all…and this time it’s perfect! You can finally build yours…files on github(note i’m currently making the readme)
Ships:
finished, you can now build it i hope it will be useful...
|
1793883408.091391
|
1793969808.091391
|
|
52369
|
cam_hand_tracking by @man1shbarik_fr | Stardance
|
man1shbarik_fr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cam_hand_tracking by @man1shbarik_fr | Star Title: cam_hand_tracking by @man1shbarik_fr | Stardance...
|
1793440087.9502037
|
1794044887.9502037
|
|
7566
|
cam by @christian | Stardance
|
christian
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: cam by @christian | Stardance
|
1793407660.827948
|
1794012460.827948
|
|
55589
|
calvin by @whitfordcalvin618 | Stardance
|
whitfordcalvin618
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calvin by @whitfordcalvin618 | Stardance
|
1793836036.214666
|
1794440836.214666
|
|
37968
|
call of warrior by @rapidSpeed | Stardance
|
rapidSpeed
|
0
|
3.77
|
0
|
[]
|
[{"post_id": 71822, "ts": "202 [{"post_id": 71822, "ts": "2026-09-21T16:44:17Z", "hours": 0.6833, "text": "I finally started work on the art for the characters! I have completed the player and player idle animation. Hopefully it looks fine, it was so hard to compress the entire steve skin into 16 pixels . Anyways, I will start work on the walking animations soon."}, {"post_id": 33015, "ts": "2026-07-22T15:53:43Z", "hours": 0.8711, "text": "finally completed it with sounds and text with scores."}, {"post_id": 32384, "ts": "2026-07-21T15:10:30Z", "hours": 2.2156, "text": "For now, im following a tutorial on godot platformers with generic assets, but i will change the assets and game style once i learn gdscript completely and godot too. For now, it runs awesome. Oops, looks like a flying slime , well well well imma fix that tmr."}]...
|
Title: call of warrior by @rapidSpeed | Stardance
Title: call of warrior by @rapidSpeed | Stardance
Devlogs:
For now, im following a tutorial on godot platformers with generic assets, but i will change the assets and game style once i learn gdscript completely and godot too. For now, it runs awesome. Oops, looks like a flying slime , well well well imma fix that tmr.
finally completed it with sounds and text with scores.
I finally started work on the art for the characters! I have completed the player and player idle animation. Hopefully it looks fine, it was so hard to compress the entire steve skin into 16 pixels . Anyways, I will start work on the walking animations soon....
|
1793540963.0888708
|
1794145763.0888708
|
|
21686
|
call of duty: zombies by @Baile | Stardance
|
Baile
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: call of duty: zombies by @Baile | Stardance
|
1793559525.9702804
|
1794164325.9702804
|
|
3811
|
call and msg receiver by @nur | Stardance
|
nur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: call and msg receiver by @nur | Stardance
|
1793386130.6178913
|
1793990930.6178913
|
|
28611
|
calico critter display by @fernandazam319 | Starda calico critter display by @fernandazam319 | Stardance...
|
fernandazam319
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calico critter display by @fernandazam319 | Title: calico critter display by @fernandazam319 | Stardance...
|
1793908174.210525
|
1794512974.210525
|
|
19031
|
calicOS by @misofartist | Stardance
|
misofartist
|
1
|
2.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-17T10:28:07Z", "hours": 2.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "how can i unlink this from webOS 1? :((", "repo": "https://github.com/mmicat/calicOS", "demo": "https://miraismail.vercel.app"}]...
|
[{"post_id": 30052, "ts": "202 [{"post_id": 30052, "ts": "2026-07-17T10:27:23Z", "hours": 2.4483, "text": "repost bc i thought i could deletemyproject :( latest addition: switchable theme!"}]...
|
Title: calicOS by @misofartist | Stardance
Devlog Title: calicOS by @misofartist | Stardance
Devlogs:
repost bc i thought i could deletemyproject :( latest addition: switchable theme!
Ships:
how can i unlink this from webOS 1? :((...
|
1793868653.657949
|
1793955053.657949
|
|
10049
|
calender by @ewdsfsfdsdfdfsfdsfds | Stardance
|
ewdsfsfdsdfdfsfdsfds
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calender by @ewdsfsfdsdfdfsfdsfds | Stardan Title: calender by @ewdsfsfdsdfdfsfdsfds | Stardance...
|
1793339413.8686657
|
1793944213.8686657
|
|
39860
|
calculator project by @974 | Stardance
|
974
|
1
|
0.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-26T12:08:01Z", "hours": 0.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "What did you make? : A Smart Calculator web app that handles standard arithmetic plus advanced operations (square root, power, modulus, floor division) and a built-in currency converter for USD, EUR, GBP, and QAR. Originally built and tested in Python, then converted into an interactive HTML/CSS/JS web app deployed on Netlify. What was challenging? : Setting up the local dev environment properly — I ran into a “localhost cannot be reached” error caused by a leftover Chrome debug config, and a favicon that got saved with a double file extension. Getting Live Server working correctly in VS Code took some troubleshooting. What am I proud of? : Getting the currency converter logic working cleanly with accurate exchange rate handling, and successfully translating my original Python calculator logic into a fully working, responsive web version. What should people know to test it? : Try switching between the Calculator and Currency tabs at the top. On the calculator side, test the standard operators plus the extras (√, ^, //). On the currency side, enter an amount, pick a “from” and “to” currency, and hit Convert.", "repo": "https://github.com/facxts/calculator", "demo": "https://calculator-project-qt.netlify.app/"}]...
|
[{"post_id": 35150, "ts": "202 [{"post_id": 35150, "ts": "2026-07-26T12:01:35Z", "hours": 0.3444, "text": "This is an older project of mine — the Smart Calculator — that I’ve been upgrading further. Today I got it running locally through Live Server in VS Code instead of only viewing it on the deployed Netlify site, which makes testing changes much faster. -I also added a custom favicon (favicon.png) to the site so it has its own icon in the browser tab, replacing the default placeholder. -Used AI assistance along the way to help troubleshoot a couple of setup issues (a broken file extension on the favicon, and a leftover debug config causing a “localhost unreachable” error) and to help get Live Server working correctly."}]...
|
Title: calculator project by @974 | Stardance
Dev Title: calculator project by @974 | Stardance
Devlogs:
This is an older project of mine — the Smart Calculator — that I’ve been upgrading further. Today I got it running locally through Live Server in VS Code instead of only viewing it on the deployed Netlify site, which makes testing changes much faster. -I also added a custom favicon (favicon.png) to the site so it has its own icon in the browser tab, replacing the default placeholder. -Used AI assistance along the way to help troubleshoot a couple of setup issues (a broken file extension on the favicon, and a leftover debug config causing a “localhost unreachable” error) and to help get Live Server working correctly.
Ships:
What did you make? : A Smart Calculator web app that handles standard arithmetic plus advanced operations (square root, power, modulus, floor division) and a built-in currency converter for USD, EUR, GBP, and QAR. Originally built and tested in Python, then converted into an interactive HTML/CSS/JS web app deployed on Netlify. What was challenging? : Setting up the local dev environment properly — I ran into a “localhost cannot be reached” error caused by a leftover Chrome debug config, and a favicon that got saved with a double file extension. Getting Live Server working correctly in VS Code took some troubleshooting. What am I proud of? : Getting the currency converter logic working cleanly with accurate exchange rate handling, and successfully translating my original Python calculator logic into a fully working, responsive web version. What should people know to test it? : Try switching between the Calculator and Currency tabs at the top. On the calculator side, test the standard operators plus the extras (√, ^, //). On the currency side, enter an amount, pick a “from” and “to” currency, and hit Convert....
|
1793947720.8292482
|
1794034120.8292482
|
|
47460
|
calculator phone case by @AggressiveElmo | Stardan calculator phone case by @AggressiveElmo | Stardance...
|
AggressiveElmo
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculator phone case by @AggressiveElmo | Title: calculator phone case by @AggressiveElmo | Stardance...
|
1793796494.5616372
|
1794660494.5616372
|
|
50962
|
calculator by @sourish05 | Stardance
|
sourish05
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculator by @sourish05 | Stardance
|
1793368551.5936031
|
1793973351.5936031
|
|
55538
|
calculator by @shibin | Stardance
|
shibin
|
1
|
1.0
|
1
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-08-28T17:50:41Z", "hours": 1.0, "multiplier": 1.0, "payout": 1, "blessing": "neutral", "text": "so this is a calculator I am learning Python And I am just new to the coding world and so I was trying to make a Python function then I thought why shouldn’t I make my first project as a calculator so I created a calculator from Python and I don’t know about HTML so I have to use some other tools to make the HTML and the UI but the Python function is completely made by me you guys can access through the version URL and you guys can access to this website and you guys can use my calculator Feel free to use and give feedback", "repo": "https://github.com/mshibin04/calculator", "demo": "https://sn-calculator.vercel.app/"}]...
|
[{"post_id": 56773, "ts": "202 [{"post_id": 56773, "ts": "2026-08-28T17:48:20Z", "hours": 0.7514, "text": "my own calculator"}]...
|
Title: calculator by @shibin | Stardance
Devlogs: Title: calculator by @shibin | Stardance
Devlogs:
my own calculator
Ships:
so this is a calculator I am learning Python And I am just new to the coding world and so I was trying to make a Python function then I thought why shouldn’t I make my first project as a calculator so I created a calculator from Python and I don’t know about HTML so I have to use some other tools to make the HTML and the UI but the Python function is completely made by me you guys can access through the version URL and you guys can access to this website and you guys can use my calculator Feel free to use and give feedback...
|
1793940676.6538346
|
1794027076.6538346
|
|
12567
|
calculator by @riazaqsa917 | Stardance
|
riazaqsa917
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculator by @riazaqsa917 | Stardance
|
1793893644.2276297
|
1794498444.2276297
|
|
54208
|
calculator by @nikk | Stardance
|
nikk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculator by @nikk | Stardance
|
1793526970.4708269
|
1794131770.4708269
|
|
29933
|
calculator by @neuro_ | Stardance
|
neuro_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculator by @neuro_ | Stardance
|
1793890130.6642084
|
1794494930.6642084
|
|
31048
|
calculator by @jknig | Stardance
|
jknig
|
1
|
1.0
|
0
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-07-25T10:23:45Z", "hours": 1.0, "multiplier": null, "payout": 0, "blessing": "neutral", "text": "I made it with python My brother helped with the try, except function because I hadn’t learned it yet so yeah I just started so It is a bit basic.", "repo": "https://github.com/jk12121212/caculator.py", "demo": "https://www.online-python.com/siUn1b2eRw"}]...
|
[{"post_id": 34534, "ts": "202 [{"post_id": 34534, "ts": "2026-07-25T10:21:55Z", "hours": 0.3758, "text": "made a calculator.(I just started coding so it is basic.)"}, {"post_id": 24013, "ts": "2026-07-07T09:23:59Z", "hours": 0.3094, "text": "I am working on a simple calculator(first ever prodject)"}]...
|
Title: calculator by @jknig | Stardance
Devlogs:
Title: calculator by @jknig | Stardance
Devlogs:
I am working on a simple calculator(first ever prodject)
made a calculator.(I just started coding so it is basic.)
Ships:
I made it with python My brother helped with the try, except function because I hadn’t learned it yet so yeah I just started so It is a bit basic....
|
1793872342.6721404
|
1793958742.6721404
|
|
33112
|
calculator by @jaspergerinckx | Stardance
|
jaspergerinckx
|
0
|
0.38
|
0
|
[]
|
[{"post_id": 25425, "ts": "202 [{"post_id": 25425, "ts": "2026-07-09T18:10:55Z", "hours": 0.3836, "text": "its done check it out link in project"}]...
|
Title: calculator by @jaspergerinckx | Stardance
Title: calculator by @jaspergerinckx | Stardance
Devlogs:
its done check it out link in project...
|
1793400656.9547405
|
1794005456.9547405
|
|
69541
|
calculator by @ajinjoseph1718 | Stardance
|
ajinjoseph1718
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculator by @ajinjoseph1718 | Stardance
|
1793584289.8704967
|
1794189089.8704967
|
|
49994
|
calculator by @Rockplayer1352 | Stardance
|
Rockplayer1352
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculator by @Rockplayer1352 | Stardance
|
1793314630.4870915
|
1793919430.4870915
|
|
42641
|
calculator by @Jazil | Stardance
|
|
0
|
0.0
|
0
|
[]
|
[{"post_id": 38720, "ts": "202 [{"post_id": 38720, "ts": "2026-08-01T08:26:21Z", "hours": 0.0, "text": "i writed html and css to calculator"}]...
|
Title: calculator by @Jazil | Stardance
Devlogs:
Title: calculator by @Jazil | Stardance
Devlogs:
i writed html and css to calculator...
|
1793850914.9972506
|
1794714914.9972506
|
|
35652
|
calculater by @penkiser23 | Stardance
|
penkiser23
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calculater by @penkiser23 | Stardance
|
1793282205.7440174
|
1793887005.7440174
|
|
20376
|
calculater by @CLK | Stardance
|
CLK
|
1
|
2.0
|
3
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-06-23T19:06:26Z", "hours": 2.0, "multiplier": 1.11, "payout": 3, "blessing": "neutral", "text": "I made a web-calculator it is a calculator website!!! I am very proud of it because it is the first time I codded in javascript", "repo": "https://github.com/NIVLACvt/web-calculater", "demo": "https://nivlacvt.github.io/web-calculater/"}]...
|
[{"post_id": 13946, "ts": "202 [{"post_id": 13946, "ts": "2026-06-22T21:54:35Z", "hours": 0.58, "text": "Added keyboard translations"}, {"post_id": 13639, "ts": "2026-06-22T11:31:28Z", "hours": 0.3306, "text": "Added 0 and RNG button and made numbers easier to see"}, {"post_id": 13116, "ts": "2026-06-21T13:33:02Z", "hours": 0.3872, "text": "Finished calculating part"}, {"post_id": 13098, "ts": "2026-06-21T13:01:33Z", "hours": 1.0725, "text": "just finished all the buttons and symbols"}]...
|
Title: calculater by @CLK | Stardance
Devlogs:
ju Title: calculater by @CLK | Stardance
Devlogs:
just finished all the buttons and symbols
Finished calculating part
Added 0 and RNG button and made numbers easier to see
Added keyboard translations
Ships:
I made a web-calculator it is a calculator website!!! I am very proud of it because it is the first time I codded in javascript...
|
1793944068.094001
|
1794030468.094001
|
|
9391
|
calcualter by @Aayan_10 | Stardance
|
Aayan_10
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calcualter by @Aayan_10 | Stardance
|
1793429269.4679286
|
1794034069.4679286
|
|
42694
|
calcdeck by @superabdelrahman2011 | Stardance
|
superabdelrahman2011
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: calcdeck by @superabdelrahman2011 | Stardan Title: calcdeck by @superabdelrahman2011 | Stardance...
|
1793796656.7637823
|
1794660656.7637823
|
|
30836
|
calc82: Web Scientific Calculator by @rigel | Star calc82: Web Scientific Calculator by @rigel | Stardance...
|
rigel
|
1
|
120.0
|
2248
|
[{"ship_num": 1, "ts": "2026-0 [{"ship_num": 1, "ts": "2026-09-09T04:20:09Z", "hours": 120.0, "multiplier": 19.41, "payout": 2248, "blessing": "neutral", "text": "What did you make? calc82: A calculator web-app inspired by the Casio fx-82 series of scientific calculators. These calculators are common in high schools in my country. My project simulates the behaviour of the Casio calculator, while maintaining a good user experience on both desktop and mobile. What was challenging? Creating reliable algebraic (non-linear) input parsing was the most difficult part of the project. This was because it required some difficult array traversal to avoid invalid states - even one mistake would break the whole input. It took a lot of iterations to get to a working input system that passed all my tests. Close contenders for most challenging were the sheer volume of functions I needed to implement, as well as all possible states the calculator can be in. However, the challenge for this was finding time to get around to everything, rather than technical challenge. What are you proud of? I’m most proud of my implementation of the input-to-result pipeline. I was able to incorporate new-to-me concepts such as tokenisers and abstract syntax trees, yet the resulting code is arguably the cleanest part of the program. I’m also proud of the responsive layout, which supports desktop and mobile well, and that the user experience is similar enough to the Casio that my muscle memory carries over. Finally, I’m proud that I managed to finish the project, as it’s the largest software project I’ve ever managed to complete. Demo: https://rigelseven.github.io/calc82/ Source: https://github.com/rigelseven/calc82/", "repo": "https://github.com/rigelseven/calc82", "demo": "https://rigelseven.github.io/calc82/"}]...
|
[{"post_id": 64600, "ts": "202 [{"post_id": 64600, "ts": "2026-09-09T03:36:33Z", "hours": 1.0264, "text": "calc82: Devlog #14 9/09/2026 calc82: because calculators are for everyone Final devlog. It’s done!! This last stretch was writing the readme and publishing everything to Github pages. You can now access it at https://rigelseven.github.io/calc82/ Now for a short reflection calc82 is the largest personal software project I have ever completed. This project taught me a lot about input parsing - specifically, tokenisers and syntax trees - and the importance of keeping a large codebase tidy . Overall, the structure of the project is well laid out. However, there are architectural decisions I made early on that I came to regret later (such as the fact that input is represented as a string, whereas it should probably be a tree). Developing calc82 also showed me that I am capable of putting together such an app from scratch. I’m pleased to have participated in Stardance and be given this opportunity."}, {"post_id": 64551, "ts": "2026-09-09T01:44:48Z", "hours": 8.6039, "text": "calc82: Devlog #13 9/09/2026 calc82: because calculators are for everyone This devlog follows the addition of help and about menus to my calculator, as well as bundling into one js file. 🌟 New functionality summary Help menu Lookup function by calculator button (reuses key bind selector logic) Q&A About page About the calculator Contribute Legal License All JS files are bundled into one file Service worker makes app available offline 📦 Bundling and service worker I chose to use esbuild for bundling. This allows the many JS files to be condensed down into one file, reducing the number of requests that need to be made. This build system is much simpler than other options such as node.js. I also added a simple service worker that caches all requests locally. This makes the calculator available offline. ⚖️ Licensing & Legal I chose GPLv3 for this project as it is an end-user product. Essentially, this means others are free to modify and distribute the project as long as they make the source available. I also added legal disclaimers to the about page of the calculator. 📈 Next steps Write the readme, publicise the repo, and host! Thanks for reading :)"}, {"post_id": 63421, "ts": "2026-09-07T07:56:19Z", "hours": 9.6403, "text": "calc82: Devlog #12 7/09/2026 calc82: because calculators are for everyone This devlog follows the addition of customisable and accessible keyboard bindings to my calculator. 🌟 New functionality summary Settings menu Switches between sidebar and popup dependent on screen width Key rebinding Flow of choosing button, then pressing key to rebind Stores in local storage Help hotkey Shows all currently bound keys. Key hint consideration The default keyboard map has been implemented as a const dictionary for a while now, allowing lookup of buttons from keyboard keys. This was extended with a user dictionary that can be dynamically updated. However, generating the help hotkey hints needed to go in the opposite direction of the dictionary. The naive approach of iterating through values to find a key for each would perform poorly with O(n^2). Instead, we precalculate a reversed dictionary to lookup keyboard keys from each button. This precalculation is O(n), and setting the keys is also O(n), resulting in O(n) time overall. 📈 Next steps Development Brief manual for each calculator function (considering reusing the on click functionality from key mapper) ) Info menubar button with author & project information, and disclaimers Fullscreen button for mobile devices Preparation for shipping Webpack, choose a license, write readme, publicise repo, host. Thanks for reading :)"}, {"post_id": 62611, "ts": "2026-09-06T02:35:54Z", "hours": 8.5919, "text": "calc82: Devlog #11 6/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a few final features to my calculator, and then my worst nightmare, frontend UI 😧 🌟 New functionality summary Prime factorisation using Pollard’s rho algorithm Engineering notation button Degree/minute/second output button CSS styling!! + menu bar buttons Fixed some input quirks Dark and light mode (based on system default) with manual toggle 🐚 Pollards rho algorithm for prime factorisation Prime factorisation or integer factorisation is the decomposition of a positive integer into a product of integers. The simplest way to implement this is trial division , which is straightforward but has O(√n) time complexity. I thought this would be too slow, so I decided to implement Pollard’s rho algorithm. This has a nicer complexity of O(√p) where p is the smallest prime factor of the number. However, further observation showed that that the Casio calculator probably doesn’t do this - for numbers without easy factors, it just doesn’t bother. Despite this, I’ve already implemented the algorithm, so I’m not going to remove functionality for the sake of exactly replicating the calculator’s behaviour. 🎨 CSS and styling My goal with the styling was to make the calculator as similar across browsers as possible. I bundled the Inter font (best font) into the program and removed browser-specific button styling. Implementing the CSS styling was mostly painless. I opted for a simple design with a menubar that adapts to horizontal or vertical depending on the window’s aspect ratio for the web app functionality. Additionally the css uses the system theme to automatically choose light or dark mode. 📈 Next steps This project is nearly finished - should only be one or two devlogs left until I ship. Here’s what I have left to do: Development Keybind show and edit Brief manual for each calculator function Info menubar button with author & project information, and disclaimers: that I am not affiliated with casio that the calculator is in a beta state and not guaranteed to be correct for all inputs Fullscreen button for mobile devices Preparation for shipping Webpack or similar Choose a license and publicise repo Write a readme Host on github pages (?) Hope that I did enough to not receive legal action from casio 🙃 Thanks for reading :)"}, {"post_id": 60028, "ts": "2026-09-02T04:16:18Z", "hours": 9.8953, "text": "calc82: Devlog #10 2/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a lot of small features to my calculator that were last on my to-do list, as well as a slight shift in scope. 🌟 New functionality summary Colon operator for multiple operations Saving variables and settings to LocalStorage Clearing this memory Polar and rectangular coordinates (finally!) Forward delete key (keyboard only) Scrolling screen with a nicer cursor! Colon operator This is an operator I’ve never used on my calculator, but its quite powerful. you can type Ans+1:Ans*2:Ans^2 and it will calculate the first expression, then the second, and so on until it loops back to the start. ➡️ Forward delete Although this functionality is not part of the original calculator, it makes it much more pleasant to use on a computer keyboard. This was implemented as a hidden button. Scrolling Scrolling was surprisingly easy to implement! The browser handles all of the hard work, and all I had to do was set the right CSS tags. Granted, with my CSS experience, this was still difficult, but I made it work in the end. 📈 Next steps I have decided to shift the current scope of the project (before shipping) to just be implementing the main compute mode . This means I will not need to do STAT, VERIFY or LINEIO mode. This is for three reasons: With my semester starting, I will not have as much time to work on this project before the deadline I have very little experience with using these other modes I want to focus my time on the user experience. With this shift in scope, the calculator part of the project is all but done - I only have three buttons remaining. (I had to push this devlog out before 10 hours, which is why they’re not done). Then, I can focus on adding the surrounding UI and UX, which should make it actually possible for other people to use my project. Thanks for reading :)"}, {"post_id": 58608, "ts": "2026-08-31T02:44:52Z", "hours": 8.6944, "text": "calc82: Devlog #9 31/08/2026 calc82: because calculators are for everyone This devlog follows the addition of menus and the status bar to my calculator. 🌟 New functionality summary Extensible menu system that allows for easy creation of paginated and nested menus Status bar with indicators that change based on the current calculator state M+ and M- special variables Mixed fraction display 📋 Menu system The menu system uses a dictionary to encode the menu pages and their entries, making it easy to add new menus. However, I couldn’t find a way to easily encode functions and arguments in this structure, so the actual actions are handled by a big switch statement. When the menu is active, most buttons have no action and the input/output display is hidden. 🧀 Status bar The status bar consists of a row of elements with adjustable opacity (to represent their active state). It is handled by a class which allows items to be toggled with a single method call, meaning it can retroactively be integrated into other components. The original calculator has some menu elements that can never be activated - for example, there is a complex mode indicator, but the calculator cannot show complex numbers. I omitted these on calc82, as they took up unnecessary space. 📈 Next steps The project is almost nearing completion :) I made complete list of every feature missing from the calculator (too long to post here). It should should get shorter every devlog from now! Hopefully I can finally ship this project in the next couple of weeks. Thanks for reading :)"}, {"post_id": 45453, "ts": "2026-08-11T22:22:45Z", "hours": 10.3792, "text": "calc82: Devlog #8 12/08/2026 calc82: because calculators are for everyone Sorry its been a while since the last devlog, I’ve had this one sitting for a while and not had the chance to finish and post it. This devlog follows the improvement of the user interface to my calculator, as well as the addition of variables . 🌟 New functionality summary Add keyboard mappings for buttons Variables - assign and recall Navigate through history Recall history and edit it. 🦋 Modifier keys It was difficult porting the modifier (shift/alpha) keys to keyboard because Shift is used to type symbols such as + and *, and there is also a Shift key on the calculator… My solution was making tapping shift without any other input to toggle the calculator shift modifier, and combining it with another key to not toggle it. 🗒️ Notes Use of the calculator I’ve actually started using the calculator in class, and it’s been faithful to the original so far (for implemented functionality). I still don’t really trust it though and want to run it through some formalised tests before shipping. Keyboard mappings So far, I have been hardcoding keyboard mappings based on what feels natural to me. However, it would probably be better to have user-editable mappings for other people to customise. 📈 Next steps Immediate: M+ and M- special variable Variable and history persistence in the browser Implement polar/rectangualr conversion Medium: Add menu system and settings Add other modes (STAT, VERIFY) Create a test suite to ensure there is no unwanted behaviour Long-term: Tidy up visuals Ship :)"}, {"post_id": 32188, "ts": "2026-07-21T05:53:53Z", "hours": 9.9386, "text": "calc82: Devlog #7 21/07/2026 calc82: because calculators are for everyone This devlog follows the introduction of an actual user interface to my calculator. 🌟 New functionality summary Grid of calculator buttons Different button output when modifiers pressed Navigation buttons work Calculator resembles a real calculator 👇 Button handling The calculator needed buttons resembling that of the Casio to fulfil my purpose. Buttons are dynamically built from an array, which defines their labels and actions. This allows easy changes. For most buttons, the area surrounding the button also acts as a clickable area for better touch input. However, I didn’t find an easy way to do this for the navigation buttons (which are positioned off the grid). 🎨 CSS CSS Grid allows a 2D layout system based on rows and columns. It has been supported by all major browsers since October 2017. CSS Grid was used, as it allows consistent positioning across browsers. In addition, relative units were used to prevent resizing the calculator from affecting it. This should make it easier to make dynamic sizing in the future. 🗒️ Notes Accessibility <button> s are preferred over clickable <div> s because they work with screen readers and legacy browsers . However, I also made the surrounding elements clickable for a better touch experience. Also, keyboard input will make use significantly easier for computer users. Aesthetics The CSS applied so far is purely functional. In the future, I will improve the aesthetics of the calculator through CSS - but for now, this barebones look makes development easier and more focused. 📈 Next steps The todo list was getting too empty, so it has been updated with new tasks Immediate: Add remaining functions Add keyboard shortcuts Medium: Add menu system and settings Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion Add other modes (STAT, VERIFY) Add Long-term: Create a test suite to ensure there is no unwanted behaviour Ship :)"}, {"post_id": 30511, "ts": "2026-07-18T04:36:43Z", "hours": 9.605, "text": "calc82: Devlog #6 18/07/2026 calc82: because calculators are for everyone This devlog follows the further development of algebraic I/O to my calculator, including turning this into an actual result. 🌟 New functionality summary Input and output formatting through KaTeX Square root, arbitrary root, mixed fraction, and absolute values Tokeniser now directly reads input tokens Errors now move the cursor to the position where it occurred 🌊 New program flow inputHandler -> [input tokens] -> tokeniser -> [calculator tokens] -> parser -> AST -> evaluator -> result This: improves speed (compared to parsing text) allows cursor to be moved to error location since we never flatten to text You might notice I have two sets of tokens. They are similar, but input tokens deal with digits and combined symbols ( sin( ), and calculator tokens are whole numbers and separated symbols. 🗒️ Notes Avoiding the lazy route My first approach was turning the input tokens into a string, which my tokeniser already knew how to deal with. However, this added much processing overhead and made it harder to find out the position at which errors occurred. Spending the time to implement the token conversion made this step much easier Misplaced math errors When implementing error handling, I passed down the original position of each token in the input token array down to each step of the calculation process. However, because my evaluator is recursive, it would constantly update the error position to the latest token, meaning the errors were always placed at the end. This was an easy fix in the end - but hard to spot! 📈 Next steps Immediate: Buttons input Add remaining functions (once buttons are added can be done) Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)"}, {"post_id": 29405, "ts": "2026-07-16T10:32:06Z", "hours": 9.6708, "text": "calc82: Devlog #5 16/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of algebraic I/O to my calculator. This is just a check-in since I was getting close to 10 hours since the last devlog - I still have some work to do on this aspect before I move on. 🌟 New functionality summary Input and output formatting through KaTeX Fractions and powers formatted correctly in the input Ability to intuitively traverse the input with arrow keys ⚖️ Algebraic IO with KaTeX I decided on KaTeX because it is both fast (no reflow!) and does not rely on dependencies . KaTeX is a math formatting library that uses LaTeX commands to create beautiful equations from code. For example, \\frac{2^{\\frac{3}{4}}}{4\\sin(30)}\\times 2\\pi turns into the attached image. Input is currently captured directly from the keyboard to build a 1D array of tokens. The tokens are then converted into KaTeX formatting for algebraic display. In the future, there will also be buttons onscreen as an alternative. Fractions and powers Fractions and powers cannot be represented as a single token. Rather, fractions have a beginning, middle and end, and powers have a beginning and end. The program traverses the array to decide where to put them (and take them out for deletion). 🗒️ Notes The cursor It is surprisingly difficult to make a vertical bar to act as a cursor in KaTeX, without affecting the spacing of the rest of the expression. For now, I am using a \\clap{\\rule{0.1em}{0.5em}} for the cursor, but I am looking to replace this with custom CSS in the future. Replicating exact behaviour? The fx-82 has some interesting behaviour wherein an empty power is not allowed to exist directly after another power. I am unsure whether I should replicate this - but for now, I am leaving it out. Dealing with broken LaTeX I have been able to get the display pretty bulletproof when it comes to not producing broken LaTeX. However, I’m sure there’s something I haven’t run into in debugging! I want to have this be dealt with gracefully rather than blowing up in the user’s face. 📈 Next steps Immediate: Implement mixed fractions, roots, and Abs to algebraic display Make the input token array able to be parsed into the AST to be calculated Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)"}, {"post_id": 27701, "ts": "2026-07-13T14:20:52Z", "hours": 7.1211, "text": "calc82: Devlog #4 14/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of fractional I/O to my calculator. 🌟 New functionality summary Fractional input, including fractions Computation of fractions - add/sub,div/mult,power,root other operations convert the fraction to a decimal Fractional output (temporary UI) LCM/GCD separate execute and fraction/decimal converting buttons 🔢 fractional io :) I defined a separate fraction data type: it’s like a decimal, but with a numerator and denominator, and optionally a whole component: for example, 1 and 1/3, or 4/3. Using fractions means that numbers can be represented more naturally and precisely. I.e. 1/7 instead of 0.142857143 🧮 Fractional calculation Additionally calculations can be made more precise. For example (1/7) * (2/3) can be directly computed by multiplying the numerators and denominators. My implementation attempts to convert user input and the products of divisions into fractions wherever possible in order to chase this precision. 🗒️ Notes Web design is not my thing I realised the importance of UI and UX (user experience) by looking at other projects on Stardance. As of the current iteration, this project lacks this a bit.. But I will give it a shot My next developments will begin to focus more on this - starting with the algebraic input, and eventually moving onto the CSS and design aspects. I am also considering whether I should use a Javascript framework. 📈 Next steps Immediate: Create algebraic display functionality Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)"}, {"post_id": 25807, "ts": "2026-07-10T08:35:45Z", "hours": 6.5419, "text": "calc82: Devlog #3 10/07/2026 calc82: because calculators are for everyone Oh dear, looks like I lost 4 hours of counted time in the last devlog… let’s try to make this one a bit shorter! This devlog follows the implementation of the other inline functions of the calculator: 🌟 New functionality summary inverse and hyperbolic trig arbitrary roots absolute value percent random numbers: Ran and RanInt scientific notation: *10^x / E combinatorics: nPr and nCr variables (not yet adjustable) 📋 Implementation details Implementing most of this functionality followed the same general steps: identify implement test. As I undertook this process. other dependent requirements popped up - such as the implementation of multivariable functions , which in turn required the expansion of the tokeniser and parser. Also, I implemented degrees, radians, and gradians modes into the calculator, and the associated functions (as postfix expressions - e.g. sin(30d) for degrees) . 🗄️ decimal.js changes Finally, I applied some further changes to decimal.js.: Rounding now depends on the closeness of the output to a known value, rather than the input, reducing unnecessary rounding Near-decimal values close to 0, 0.25, 0.5, 0.75 and 1 are now caught. 🗒️ Notes: Remembering that Javascript is weird NaN === NaN is FALSE! Spent a good 10 minutes figuring this one out. The solution was to use isNaN() . Fixing negative-base powers: (-8)^(1/3) should equal 2 but returns NaN Fixed by taking the denominator from the output of a decimal.js toFraction() function, which attempts to create a rational fraction. This overcomes the tiny precision loss and evaluates the function correctly 📈 Next steps Immediate: Add fractional I/O Implement polar/rectangualr conversion Medium: Create algebraic display functionality Multi-line calculation (Ans) and setting variables Long-term: Build UI Ship :) This has been a bit of a shorter devlog. But I’m still proud of what I achieved! Thanks so much for reading. If you have any suggestions, please leave me a comment. Take care"}, {"post_id": 25217, "ts": "2026-07-09T10:31:56Z", "hours": 14.0967, "text": "calc82: Devlog #2 08/07/2026 calc82: because calculators are for everyone This devlog follows the handling of nasty floating point errors in my web calculator - inspired by and designed to work with Casio’s fx-82au. I realised that relying purely on the Javascript math system was unsuitable for a scientific calculator that works with decimal numbers. This is due to binary floating point not translating well to decimal. 0.1+0.2=0.30000000000000004 >:( I researched and considered a few approaches. 🥧 Symbolic simplifier? The idea behind this is to perform algebra and avoid evaluating constants and functions to values until strictly necessary. However, the scope of this seemed massive, and I did not observe this behaviour in the Casio. 🔟 Decimal arithmetic Instead, I stumbled upon the fact that decimal arithmetic can be implemented in a computer. While IEEE floats use binary representation, there is no reason we cannot use decimals internally, avoiding errors that arise from conversion. Decimal floats can be stored by: Sign: +/- Mantissa: the number itself, in my case an array of digits Exponent: what power of 10 the number should be multiplied by. I started implementation, made decent progress, but found out that I was re-doing work that was already done by other people. 🗄️ Decimal.js I found the decimal.js library after researching how to handle decimal addition. Implementing this quickly fixed my floating point errors, but did not fix trig approximation. 👀 Observing the calculator I observed some of the behaviour of the real calculator to work out how it functions. Handles small-angle approximation based on a threshold Drops precision as the trig function argument value increases Appears to use a 15-digit mantissa Refuses to evaluate trig functions with argument above a certain limit I tried my best to implement the behaviour I observed, some of which required editing the code of the decimal.js library. 📝 Editing decimal.js The decimal.js library uses more than the set precision for some internal calculations. However, arithmetic with pi is otherwise only the set precision, causing drift. My fix for this was to adjust the internal pi value to match the mantissa size of the real calculator. Troubles with the library When given a less accurate value for pi (in line with that of the real calculator) sine quadrant is incorrectly calculated. I found that the isOdd function is flawed! function isOdd(n) { return n.d[n.d.length - 1] & 1; } I replaced it with one that works for my use case (if less efficient): function isOdd(n) { return n.mod(2).eq(1); } I need to see if this is just due to my low precision pi, or an actual problem in the library, in the future. But for now my issue is fixed. I also found an error in the cosine function: if (x.isZero()) return x needed to be changed to if (x.isZero()) return new Ctor(1) . Again, I’m going to have to look into this more before submitting a pr or anything, since decimal.js is not made for such an imprecise pi. 🗒️ Notes Deviations There are still small deviations between my calculator and the real one at really, really large trig angles. One idea to reduce error could be optimising the order of operations in the AST to prevent dropping precision unnecessarily. I might explore this later However, I want to press on with other features, instead of tiny inaccuracies that would never show up in real-world use. I have slightly rearranged the to-do list below. 📈 Next steps Immediate: Implement the other calculator buttons and functions Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment. Until next time"}, {"post_id": 23363, "ts": "2026-07-06T09:05:57Z", "hours": 6.4844, "text": "calc82: Project Introduction and Devlog #1 calc82: because calculators are for everyone The aim of this project is to create a free, software-based browser calculator which mimics the behaviour of the Casio fx-82au. This is the most common calculator in high schools in my country. 🔥 Motivation My motivation for this project is the following: calculators are cool i dont always have my calculator on me (most notably) not everyone has access to a scientific calculator 🎯 Approach I will take a black-box reverse engineering approach . This means analysing the inputs and outputs of the calculator and attempting to replicate the behaviour without looking at the underlying code. This along with avoiding patents and copyright should keep the project okay legally. 📈 Goals and scope The final goal for the project is to create a fully functional calculator (obviously) which works on most types of devices. This means both touch and keyboard input, resolution scaling, wide browser support… I have moderate experience with creating web apps. and a lot of experience using this calculator. so this project should be pretty fun :) Devlog #1 06/07/2026 This devlog covers the initial development of the parts of the calculator that do math. Essentially turning an input expression into an output. I chose a high-level structure similar to that used by programming language syntax analysers. That is: Input -> Tokeniser -> Parser -> Evaluator -> Output 🪙 Tokeniser yes, with an s >:( The tokeniser converts the input into a list of tokens (think individual pieces of the expression). It does this by scanning the input string and identifying what each character corresponds to. The tokeniser only knows what each symbol is , not what it does . Then it passes the token array to the… 🌲 Parser The parser converts the token array into an Abstract Syntax Tree (AST). Essentially this is a tree which shows how the expressions should be evaluated in order to produce the desired output. This properly lets me implement order of operations. The exact type of parser I am using is a recursive descent parser . It attempts to match the tokens with known symbols recursively, meaning i can rely on the call stack :) The order of operations can be defined by the order of function calls within the parser. 🧮 Evaluator The evaluator’s job is easy: it just traverses the tree made by the parser and runs the necessary operations. Because all of the hard work regarding order of operations has been done by the other components, implementing the evaluator was really easy. Its also recursive. your call stack is gonna love me for this 🗒️ Notes Why not eval? It’s true that JavaScript has a perfectly good expression parser, which I could have used. However, its behaviour is more suited to a programming language than a calculator. For example, 4(2+3) should implicitly multiply , but will instead complain TypeError: 4 is not a function . Writing my own system gives me more flexibility to make the calculator how I want. Floating point precision Because it uses Javascript’s internal math engine, i have floating-point problems. This results in expressions like sin(2pi) = -2.44929360e-16 I will likely fix this by using a math library, or a novel approach. Last-minute catch I was just writing an example for this devlog when I found that .3ln(4)*5^2 raised an error. In fact, ANYTHING * or / followed by x^n would error - but other operators wouldn’t. This was a quick fix, but I’m glad I caught it! 📈 Next steps Immediate: Fix math imprecision Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Make the calculator functionally equivalent to the fx-82 Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment"}]...
|
Title: calc82: Web Scientific Calculator by @rigel Title: calc82: Web Scientific Calculator by @rigel | Stardance
Devlogs:
calc82: Project Introduction and Devlog #1 calc82: because calculators are for everyone The aim of this project is to create a free, software-based browser calculator which mimics the behaviour of the Casio fx-82au. This is the most common calculator in high schools in my country. 🔥 Motivation My motivation for this project is the following: calculators are cool i dont always have my calculator on me (most notably) not everyone has access to a scientific calculator 🎯 Approach I will take a black-box reverse engineering approach . This means analysing the inputs and outputs of the calculator and attempting to replicate the behaviour without looking at the underlying code. This along with avoiding patents and copyright should keep the project okay legally. 📈 Goals and scope The final goal for the project is to create a fully functional calculator (obviously) which works on most types of devices. This means both touch and keyboard input, resolution scaling, wide browser support… I have moderate experience with creating web apps. and a lot of experience using this calculator. so this project should be pretty fun :) Devlog #1 06/07/2026 This devlog covers the initial development of the parts of the calculator that do math. Essentially turning an input expression into an output. I chose a high-level structure similar to that used by programming language syntax analysers. That is: Input -> Tokeniser -> Parser -> Evaluator -> Output 🪙 Tokeniser yes, with an s >:( The tokeniser converts the input into a list of tokens (think individual pieces of the expression). It does this by scanning the input string and identifying what each character corresponds to. The tokeniser only knows what each symbol is , not what it does . Then it passes the token array to the… 🌲 Parser The parser converts the token array into an Abstract Syntax Tree (AST). Essentially this is a tree which shows how the expressions should be evaluated in order to produce the desired output. This properly lets me implement order of operations. The exact type of parser I am using is a recursive descent parser . It attempts to match the tokens with known symbols recursively, meaning i can rely on the call stack :) The order of operations can be defined by the order of function calls within the parser. 🧮 Evaluator The evaluator’s job is easy: it just traverses the tree made by the parser and runs the necessary operations. Because all of the hard work regarding order of operations has been done by the other components, implementing the evaluator was really easy. Its also recursive. your call stack is gonna love me for this 🗒️ Notes Why not eval? It’s true that JavaScript has a perfectly good expression parser, which I could have used. However, its behaviour is more suited to a programming language than a calculator. For example, 4(2+3) should implicitly multiply , but will instead complain TypeError: 4 is not a function . Writing my own system gives me more flexibility to make the calculator how I want. Floating point precision Because it uses Javascript’s internal math engine, i have floating-point problems. This results in expressions like sin(2pi) = -2.44929360e-16 I will likely fix this by using a math library, or a novel approach. Last-minute catch I was just writing an example for this devlog when I found that .3ln(4)*5^2 raised an error. In fact, ANYTHING * or / followed by x^n would error - but other operators wouldn’t. This was a quick fix, but I’m glad I caught it! 📈 Next steps Immediate: Fix math imprecision Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Make the calculator functionally equivalent to the fx-82 Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment
calc82: Devlog #2 08/07/2026 calc82: because calculators are for everyone This devlog follows the handling of nasty floating point errors in my web calculator - inspired by and designed to work with Casio’s fx-82au. I realised that relying purely on the Javascript math system was unsuitable for a scientific calculator that works with decimal numbers. This is due to binary floating point not translating well to decimal. 0.1+0.2=0.30000000000000004 >:( I researched and considered a few approaches. 🥧 Symbolic simplifier? The idea behind this is to perform algebra and avoid evaluating constants and functions to values until strictly necessary. However, the scope of this seemed massive, and I did not observe this behaviour in the Casio. 🔟 Decimal arithmetic Instead, I stumbled upon the fact that decimal arithmetic can be implemented in a computer. While IEEE floats use binary representation, there is no reason we cannot use decimals internally, avoiding errors that arise from conversion. Decimal floats can be stored by: Sign: +/- Mantissa: the number itself, in my case an array of digits Exponent: what power of 10 the number should be multiplied by. I started implementation, made decent progress, but found out that I was re-doing work that was already done by other people. 🗄️ Decimal.js I found the decimal.js library after researching how to handle decimal addition. Implementing this quickly fixed my floating point errors, but did not fix trig approximation. 👀 Observing the calculator I observed some of the behaviour of the real calculator to work out how it functions. Handles small-angle approximation based on a threshold Drops precision as the trig function argument value increases Appears to use a 15-digit mantissa Refuses to evaluate trig functions with argument above a certain limit I tried my best to implement the behaviour I observed, some of which required editing the code of the decimal.js library. 📝 Editing decimal.js The decimal.js library uses more than the set precision for some internal calculations. However, arithmetic with pi is otherwise only the set precision, causing drift. My fix for this was to adjust the internal pi value to match the mantissa size of the real calculator. Troubles with the library When given a less accurate value for pi (in line with that of the real calculator) sine quadrant is incorrectly calculated. I found that the isOdd function is flawed! function isOdd(n) { return n.d[n.d.length - 1] & 1; } I replaced it with one that works for my use case (if less efficient): function isOdd(n) { return n.mod(2).eq(1); } I need to see if this is just due to my low precision pi, or an actual problem in the library, in the future. But for now my issue is fixed. I also found an error in the cosine function: if (x.isZero()) return x needed to be changed to if (x.isZero()) return new Ctor(1) . Again, I’m going to have to look into this more before submitting a pr or anything, since decimal.js is not made for such an imprecise pi. 🗒️ Notes Deviations There are still small deviations between my calculator and the real one at really, really large trig angles. One idea to reduce error could be optimising the order of operations in the AST to prevent dropping precision unnecessarily. I might explore this later However, I want to press on with other features, instead of tiny inaccuracies that would never show up in real-world use. I have slightly rearranged the to-do list below. 📈 Next steps Immediate: Implement the other calculator buttons and functions Add fractional I/O Medium: Create algebraic display functionality Multi-line calculation (Ans) and variables Long-term: Build UI Ship :) Thanks so much for reading! If you have any suggestions, please leave me a comment. Until next time
calc82: Devlog #3 10/07/2026 calc82: because calculators are for everyone Oh dear, looks like I lost 4 hours of counted time in the last devlog… let’s try to make this one a bit shorter! This devlog follows the implementation of the other inline functions of the calculator: 🌟 New functionality summary inverse and hyperbolic trig arbitrary roots absolute value percent random numbers: Ran and RanInt scientific notation: *10^x / E combinatorics: nPr and nCr variables (not yet adjustable) 📋 Implementation details Implementing most of this functionality followed the same general steps: identify implement test. As I undertook this process. other dependent requirements popped up - such as the implementation of multivariable functions , which in turn required the expansion of the tokeniser and parser. Also, I implemented degrees, radians, and gradians modes into the calculator, and the associated functions (as postfix expressions - e.g. sin(30d) for degrees) . 🗄️ decimal.js changes Finally, I applied some further changes to decimal.js.: Rounding now depends on the closeness of the output to a known value, rather than the input, reducing unnecessary rounding Near-decimal values close to 0, 0.25, 0.5, 0.75 and 1 are now caught. 🗒️ Notes: Remembering that Javascript is weird NaN === NaN is FALSE! Spent a good 10 minutes figuring this one out. The solution was to use isNaN() . Fixing negative-base powers: (-8)^(1/3) should equal 2 but returns NaN Fixed by taking the denominator from the output of a decimal.js toFraction() function, which attempts to create a rational fraction. This overcomes the tiny precision loss and evaluates the function correctly 📈 Next steps Immediate: Add fractional I/O Implement polar/rectangualr conversion Medium: Create algebraic display functionality Multi-line calculation (Ans) and setting variables Long-term: Build UI Ship :) This has been a bit of a shorter devlog. But I’m still proud of what I achieved! Thanks so much for reading. If you have any suggestions, please leave me a comment. Take care
calc82: Devlog #4 14/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of fractional I/O to my calculator. 🌟 New functionality summary Fractional input, including fractions Computation of fractions - add/sub,div/mult,power,root other operations convert the fraction to a decimal Fractional output (temporary UI) LCM/GCD separate execute and fraction/decimal converting buttons 🔢 fractional io :) I defined a separate fraction data type: it’s like a decimal, but with a numerator and denominator, and optionally a whole component: for example, 1 and 1/3, or 4/3. Using fractions means that numbers can be represented more naturally and precisely. I.e. 1/7 instead of 0.142857143 🧮 Fractional calculation Additionally calculations can be made more precise. For example (1/7) * (2/3) can be directly computed by multiplying the numerators and denominators. My implementation attempts to convert user input and the products of divisions into fractions wherever possible in order to chase this precision. 🗒️ Notes Web design is not my thing I realised the importance of UI and UX (user experience) by looking at other projects on Stardance. As of the current iteration, this project lacks this a bit.. But I will give it a shot My next developments will begin to focus more on this - starting with the algebraic input, and eventually moving onto the CSS and design aspects. I am also considering whether I should use a Javascript framework. 📈 Next steps Immediate: Create algebraic display functionality Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)
calc82: Devlog #5 16/07/2026 calc82: because calculators are for everyone This devlog mainly follows the addition of algebraic I/O to my calculator. This is just a check-in since I was getting close to 10 hours since the last devlog - I still have some work to do on this aspect before I move on. 🌟 New functionality summary Input and output formatting through KaTeX Fractions and powers formatted correctly in the input Ability to intuitively traverse the input with arrow keys ⚖️ Algebraic IO with KaTeX I decided on KaTeX because it is both fast (no reflow!) and does not rely on dependencies . KaTeX is a math formatting library that uses LaTeX commands to create beautiful equations from code. For example, \frac{2^{\frac{3}{4}}}{4\sin(30)}\times 2\pi turns into the attached image. Input is currently captured directly from the keyboard to build a 1D array of tokens. The tokens are then converted into KaTeX formatting for algebraic display. In the future, there will also be buttons onscreen as an alternative. Fractions and powers Fractions and powers cannot be represented as a single token. Rather, fractions have a beginning, middle and end, and powers have a beginning and end. The program traverses the array to decide where to put them (and take them out for deletion). 🗒️ Notes The cursor It is surprisingly difficult to make a vertical bar to act as a cursor in KaTeX, without affecting the spacing of the rest of the expression. For now, I am using a \clap{\rule{0.1em}{0.5em}} for the cursor, but I am looking to replace this with custom CSS in the future. Replicating exact behaviour? The fx-82 has some interesting behaviour wherein an empty power is not allowed to exist directly after another power. I am unsure whether I should replicate this - but for now, I am leaving it out. Dealing with broken LaTeX I have been able to get the display pretty bulletproof when it comes to not producing broken LaTeX. However, I’m sure there’s something I haven’t run into in debugging! I want to have this be dealt with gracefully rather than blowing up in the user’s face. 📈 Next steps Immediate: Implement mixed fractions, roots, and Abs to algebraic display Make the input token array able to be parsed into the AST to be calculated Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)
calc82: Devlog #6 18/07/2026 calc82: because calculators are for everyone This devlog follows the further development of algebraic I/O to my calculator, including turning this into an actual result. 🌟 New functionality summary Input and output formatting through KaTeX Square root, arbitrary root, mixed fraction, and absolute values Tokeniser now directly reads input tokens Errors now move the cursor to the position where it occurred 🌊 New program flow inputHandler -> [input tokens] -> tokeniser -> [calculator tokens] -> parser -> AST -> evaluator -> result This: improves speed (compared to parsing text) allows cursor to be moved to error location since we never flatten to text You might notice I have two sets of tokens. They are similar, but input tokens deal with digits and combined symbols ( sin( ), and calculator tokens are whole numbers and separated symbols. 🗒️ Notes Avoiding the lazy route My first approach was turning the input tokens into a string, which my tokeniser already knew how to deal with. However, this added much processing overhead and made it harder to find out the position at which errors occurred. Spending the time to implement the token conversion made this step much easier Misplaced math errors When implementing error handling, I passed down the original position of each token in the input token array down to each step of the calculation process. However, because my evaluator is recursive, it would constantly update the error position to the latest token, meaning the errors were always placed at the end. This was an easy fix in the end - but hard to spot! 📈 Next steps Immediate: Buttons input Add remaining functions (once buttons are added can be done) Medium: Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion (delayed until UI is more fleshed out) Build UI Long-term (but getting closer!): Create a usable UX Ship :)
calc82: Devlog #7 21/07/2026 calc82: because calculators are for everyone This devlog follows the introduction of an actual user interface to my calculator. 🌟 New functionality summary Grid of calculator buttons Different button output when modifiers pressed Navigation buttons work Calculator resembles a real calculator 👇 Button handling The calculator needed buttons resembling that of the Casio to fulfil my purpose. Buttons are dynamically built from an array, which defines their labels and actions. This allows easy changes. For most buttons, the area surrounding the button also acts as a clickable area for better touch input. However, I didn’t find an easy way to do this for the navigation buttons (which are positioned off the grid). 🎨 CSS CSS Grid allows a 2D layout system based on rows and columns. It has been supported by all major browsers since October 2017. CSS Grid was used, as it allows consistent positioning across browsers. In addition, relative units were used to prevent resizing the calculator from affecting it. This should make it easier to make dynamic sizing in the future. 🗒️ Notes Accessibility <button> s are preferred over clickable <div> s because they work with screen readers and legacy browsers . However, I also made the surrounding elements clickable for a better touch experience. Also, keyboard input will make use significantly easier for computer users. Aesthetics The CSS applied so far is purely functional. In the future, I will improve the aesthetics of the calculator through CSS - but for now, this barebones look makes development easier and more focused. 📈 Next steps The todo list was getting too empty, so it has been updated with new tasks Immediate: Add remaining functions Add keyboard shortcuts Medium: Add menu system and settings Multi-line calculation (Ans) and setting variables Implement polar/rectangualr conversion Add other modes (STAT, VERIFY) Add Long-term: Create a test suite to ensure there is no unwanted behaviour Ship :)
calc82: Devlog #8 12/08/2026 calc82: because calculators are for everyone Sorry its been a while since the last devlog, I’ve had this one sitting for a while and not had the chance to finish and post it. This devlog follows the improvement of the user interface to my calculator, as well as the addition of variables . 🌟 New functionality summary Add keyboard mappings for buttons Variables - assign and recall Navigate through history Recall history and edit it. 🦋 Modifier keys It was difficult porting the modifier (shift/alpha) keys to keyboard because Shift is used to type symbols such as + and *, and there is also a Shift key on the calculator… My solution was making tapping shift without any other input to toggle the calculator shift modifier, and combining it with another key to not toggle it. 🗒️ Notes Use of the calculator I’ve actually started using the calculator in class, and it’s been faithful to the original so far (for implemented functionality). I still don’t really trust it though and want to run it through some formalised tests before shipping. Keyboard mappings So far, I have been hardcoding keyboard mappings based on what feels natural to me. However, it would probably be better to have user-editable mappings for other people to customise. 📈 Next steps Immediate: M+ and M- special variable Variable and history persistence in the browser Implement polar/rectangualr conversion Medium: Add menu system and settings Add other modes (STAT, VERIFY) Create a test suite to ensure there is no unwanted behaviour Long-term: Tidy up visuals Ship :)
calc82: Devlog #9 31/08/2026 calc82: because calculators are for everyone This devlog follows the addition of menus and the status bar to my calculator. 🌟 New functionality summary Extensible menu system that allows for easy creation of paginated and nested menus Status bar with indicators that change based on the current calculator state M+ and M- special variables Mixed fraction display 📋 Menu system The menu system uses a dictionary to encode the menu pages and their entries, making it easy to add new menus. However, I couldn’t find a way to easily encode functions and arguments in this structure, so the actual actions are handled by a big switch statement. When the menu is active, most buttons have no action and the input/output display is hidden. 🧀 Status bar The status bar consists of a row of elements with adjustable opacity (to represent their active state). It is handled by a class which allows items to be toggled with a single method call, meaning it can retroactively be integrated into other components. The original calculator has some menu elements that can never be activated - for example, there is a complex mode indicator, but the calculator cannot show complex numbers. I omitted these on calc82, as they took up unnecessary space. 📈 Next steps The project is almost nearing completion :) I made complete list of every feature missing from the calculator (too long to post here). It should should get shorter every devlog from now! Hopefully I can finally ship this project in the next couple of weeks. Thanks for reading :)
calc82: Devlog #10 2/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a lot of small features to my calculator that were last on my to-do list, as well as a slight shift in scope. 🌟 New functionality summary Colon operator for multiple operations Saving variables and settings to LocalStorage Clearing this memory Polar and rectangular coordinates (finally!) Forward delete key (keyboard only) Scrolling screen with a nicer cursor! Colon operator This is an operator I’ve never used on my calculator, but its quite powerful. you can type Ans+1:Ans*2:Ans^2 and it will calculate the first expression, then the second, and so on until it loops back to the start. ➡️ Forward delete Although this functionality is not part of the original calculator, it makes it much more pleasant to use on a computer keyboard. This was implemented as a hidden button. Scrolling Scrolling was surprisingly easy to implement! The browser handles all of the hard work, and all I had to do was set the right CSS tags. Granted, with my CSS experience, this was still difficult, but I made it work in the end. 📈 Next steps I have decided to shift the current scope of the project (before shipping) to just be implementing the main compute mode . This means I will not need to do STAT, VERIFY or LINEIO mode. This is for three reasons: With my semester starting, I will not have as much time to work on this project before the deadline I have very little experience with using these other modes I want to focus my time on the user experience. With this shift in scope, the calculator part of the project is all but done - I only have three buttons remaining. (I had to push this devlog out before 10 hours, which is why they’re not done). Then, I can focus on adding the surrounding UI and UX, which should make it actually possible for other people to use my project. Thanks for reading :)
calc82: Devlog #11 6/09/2026 calc82: because calculators are for everyone This devlog follows the addition of a few final features to my calculator, and then my worst nightmare, frontend UI 😧 🌟 New functionality summary Prime factorisation using Pollard’s rho algorithm Engineering notation button Degree/minute/second output button CSS styling!! + menu bar buttons Fixed some input quirks Dark and light mode (based on system default) with manual toggle 🐚 Pollards rho algorithm for prime factorisation Prime factorisation or integer factorisation is the decomposition of a positive integer into a product of integers. The simplest way to implement this is trial division , which is straightforward but has O(√n) time complexity. I thought this would be too slow, so I decided to implement Pollard’s rho algorithm. This has a nicer complexity of O(√p) where p is the smallest prime factor of the number. However, further observation showed that that the Casio calculator probably doesn’t do this - for numbers without easy factors, it just doesn’t bother. Despite this, I’ve already implemented the algorithm, so I’m not going to remove functionality for the sake of exactly replicating the calculator’s behaviour. 🎨 CSS and styling My goal with the styling was to make the calculator as similar across browsers as possible. I bundled the Inter font (best font) into the program and removed browser-specific button styling. Implementing the CSS styling was mostly painless. I opted for a simple design with a menubar that adapts to horizontal or vertical depending on the window’s aspect ratio for the web app functionality. Additionally the css uses the system theme to automatically choose light or dark mode. 📈 Next steps This project is nearly finished - should only be one or two devlogs left until I ship. Here’s what I have left to do: Development Keybind show and edit Brief manual for each calculator function Info menubar button with author & project information, and disclaimers: that I am not affiliated with casio that the calculator is in a beta state and not guaranteed to be correct for all inputs Fullscreen button for mobile devices Preparation for shipping Webpack or similar Choose a license and publicise repo Write a readme Host on github pages (?) Hope that I did enough to not receive legal action from casio 🙃 Thanks for reading :)
calc82: Devlog #12 7/09/2026 calc82: because calculators are for everyone This devlog follows the addition of customisable and accessible keyboard bindings to my calculator. 🌟 New functionality summary Settings menu Switches between sidebar and popup dependent on screen width Key rebinding Flow of choosing button, then pressing key to rebind Stores in local storage Help hotkey Shows all currently bound keys. Key hint consideration The default keyboard map has been implemented as a const dictionary for a while now, allowing lookup of buttons from keyboard keys. This was extended with a user dictionary that can be dynamically updated. However, generating the help hotkey hints needed to go in the opposite direction of the dictionary. The naive approach of iterating through values to find a key for each would perform poorly with O(n^2). Instead, we precalculate a reversed dictionary to lookup keyboard keys from each button. This precalculation is O(n), and setting the keys is also O(n), resulting in O(n) time overall. 📈 Next steps Development Brief manual for each calculator function (considering reusing the on click functionality from key mapper) ) Info menubar button with author & project information, and disclaimers Fullscreen button for mobile devices Preparation for shipping Webpack, choose a license, write readme, publicise repo, host. Thanks for reading :)
calc82: Devlog #13 9/09/2026 calc82: because calculators are for everyone This devlog follows the addition of help and about menus to my calculator, as well as bundling into one js file. 🌟 New functionality summary Help menu Lookup function by calculator button (reuses key bind selector logic) Q&A About page About the calculator Contribute Legal License All JS files are bundled into one file Service worker makes app available offline 📦 Bundling and service worker I chose to use esbuild for bundling. This allows the many JS files to be condensed down into one file, reducing the number of requests that need to be made. This build system is much simpler than other options such as node.js. I also added a simple service worker that caches all requests locally. This makes the calculator available offline. ⚖️ Licensing & Legal I chose GPLv3 for this project as it is an end-user product. Essentially, this means others are free to modify and distribute the project as long as they make the source available. I also added legal disclaimers to the about page of the calculator. 📈 Next steps Write the readme, publicise the repo, and host! Thanks for reading :)
calc82: Devlog #14 9/09/2026 calc82: because calculators are for everyone Final devlog. It’s done!! This last stretch was writing the readme and publishing everything to Github pages. You can now access it at https://rigelseven.github.io/calc82/ Now for a short reflection calc82 is the largest personal software project I have ever completed. This project taught me a lot about input parsing - specifically, tokenisers and syntax trees - and the importance of keeping a large codebase tidy . Overall, the structure of the project is well laid out. However, there are architectural decisions I made early on that I came to regret later (such as the fact that input is represented as a string, whereas it should probably be a tree). Developing calc82 also showed me that I am capable of putting together such an app from scratch. I’m pleased to have participated in Stardance and be given this opportunity.
Ships:
What did you make? calc82: A calculator web-app inspired by the Casio fx-82 series of scientific calculators. These calculators are common in high schools in my country. My project simulates the behaviour of the Casio calculator, while maintaining a good user experience on both desktop and mobile. What was challenging? Creating reliable algebraic (non-linear) input parsing was the most difficult part of the project. This was because it required some difficult array traversal to avoid invalid states - even one mistake would break the whole input. It took a lot of iterations to get to a working input system that passed all my tests. Close contenders for most challenging were the sheer volume of functions I needed to implement, as well as all possible states the calculator can be in. However, the challenge for this was finding time to get around to everything, rather than technical challenge. What are you proud of? I’m most proud of my implementation of the input-to-result pipeline. I was able to incorporate new-to-me concepts such as tokenisers and abstract syntax trees, yet the resulting code is arguably the cleanest part of the program. I’m also proud of the responsive layout, which supports desktop and mobile well, and that the user experience is similar enough to the Casio that my muscle memory carries over. Finally, I’m proud that I managed to finish the project, as it’s the largest software project I’ve ever managed to complete. Demo: https://rigelseven.github.io/calc82/ Source: https://github.com/rigelseven/calc82/...
|
1793800089.7694073
|
1793886489.7694073
|