Stats

5
Projects
69
Devlogs
38
Votes
2
Ships

Coding Time

All Time: 215h 24m
Today: 0h 0m

Member Since

June 16, 2025

Badges

1
🚢
Maiden Voyage
you shipped your first project! the journey begins...

Projects

5
🚀
2 devlogs about 2 months ago
🚀
5 devlogs 4 months ago
GoofyOS

GoofyOS

Shipped
36 devlogs 4 months ago
🚀
4 devlogs 5 months ago
Clash of Bytes
22 devlogs 5 months ago

Activity

Anirudh
Anirudh Shipwright gave you feedback
31d ago

GoofyOS

Awesome project!!!! works as intended :yay: Sorry for the delay! Thank you for taking part in SoM, Happy Hacking!! :c3:

from Anirudh

I hate physics

Update attachment
Earned sticker

More time spent on docs, polishing the UI a bit, media, ...
I think I'm ready to ship but I'm sort of scared, it feels like I'm gambling with almost 90h...

So I finished the docs and they are up and running: https://retrogradedev.github.io/goofy-os/
I hate Jekyll and this theme I picked, but I don't really have time to make something else

Update attachment

As you might have seen, I attached the wrong image in the previous commit. I indeed created some docs using Claude, and now spent some time correcting and editing them, although they covered most of our codebase

Update attachment
Earned sticker

I added a TicTacToe game and refactored our window management. I think we're almost ready to ship?

Update attachment
Earned sticker

I tried adding a userland again! I used eduOS as a reference. Things started well, but once we tried actually executing the code in user mode, we got stuck again. I really don't know what to do. I disabled processes again, but I can't keep avoiding it...

Update attachment

Big FS update! We update the lastaccessdate field on file read, but more importantly, we support copying, moving and renaming files! Most of the time spent on this was making the moving/renaming more efficient (instead of copying+deleting the file, we just change the metadata)

Update attachment

I added some FS info the the Sysinfo app. It's not very useful, but who cares :)

Update attachment

So I made the backbuffer optional and measured the timing difference, and damn it's fast. I can't upload more than one screenshot, but it's also much more stable. This screenshot is a comparison of the original fb (top) and new backbuffer (bottom), based on 2 new screen recordings, taken at exact the same moment. The framebuffer is 10-40x times faster (depends on how many pixels have changed).

Update attachment

I finally implemented a basic backbuffer for the VGA framebuffer. The VGA buffer is quite slow, so we write to this second (faster) buffer and copy all the dirty regions when needed. It's still a bit slow so I have to find our whether this is the user->bb or bb->fb part, but I'll start with making this configurable, so I can test the performance impact.

Update attachment

I did quite some work before deciding to make this a real project, so here is a list of things I did already:
- setup a new vite project (duh)
- create a basic physics engine (extremely buggy)
- wrote a render for visual feedback, but it's just a rectangle
- created a basic input/output script executor, with an extremely good example script (PID stuff)

Nico
Nico created a project
58d ago
2 devlogs 0 followers
Nico
Nico worked on GoofyOS
3h 17m 2 months ago

IT'S WORKING! Finally, after all this time, context switching is WORKING with CPU register saving/restoring. The only weird thing: it doesn't work when I turn my battery saver on (I have no idea why lol).
I'm gonna try to merge my old branch where I develop process support with my main branch, maybe slower interrupts fix it?

Update attachment
Nico
Nico worked on GoofyOS
1h 53m 2 months ago

I tried working on my userand again, but this context switching errors every single time. I'm thinking about rewriting this entire task sheduler (again)

Update attachment
Nico
Nico worked on GoofyOS
1h 11m 2 months ago

I rewrote our entire config handling so everything (including Uefi/Bios) is handled from a single config file. I also changed the README a bit

Update attachment
Nico
Nico worked on GoofyOS
3h 41m 2 months ago

We now support both UEFI and the Legacy BIOS! It was quite difficult to get the APIC to work, but now we have 200% faster boot times, a slightly faster and slightly larger framebuffer, but more importantly: support for more hardware!

Update attachment
Nico
Nico worked on GoofyOS
1h 7m 2 months ago

LFN (Long file name) support! You can now create files and folders in other formats and longer than the 8.3 format.

Update attachment
Nico
Nico worked on GoofyOS
1h 11m 2 months ago

You can now create and save files directly in the notepad app! (aka Save As)

Update attachment
Nico
Nico worked on GoofyOS
54m 2 months ago

We can edit and save files with the notepad!

Update attachment
Nico
Nico worked on GoofyOS
1h 18m 2 months ago

We can now create, delete and navigate through folders!

Update attachment
Nico
Nico worked on GoofyOS
5h 34m 3 months ago

Ladies and gentlemen we have a…. FILESYSTEM (and a extremely basic file explorer)
We have a basic FAT32 implementation and an ATA disk driver, so we can read, write and update files like a real OS! We can forward a FAT32 formatted .img file to QEMU which our ATA driver can read. The FAT32 parser will parse and process all data or send data back to the ATA driver, which will write it to the disk, so we can reboot and still access our files!

The next bunch of updates will include:
- update to the file explorer GUI to support folders
- parse and write long names (currently we only support the 8.3 format)
- parse metadata time and dates
- parse hidden and read only flags
- make our notepad able to write to the FS
- and FS data to the sysinfo app

Update attachment
Nico
Nico worked on GoofyOS
1h 16m 3 months ago

Sysinfo app! This was actually quite hard to make, because I had to find a way to get info about our CPU, memory, stack, heap, ... The rust raw_cpuid handles all the hard work related to our CPU. Stack tracking is quite simple: at the entry point save our stack pointer. When we want to get the ucrrent usage, simply fetch the pointer again and calculate the difference.
For the heap: we just change a var each time we do alloc/dealloc

Update attachment
Nico
Nico worked on GoofyOS
2h 29m 3 months ago

Added a notepad app and polished the taskbar UI. This took longer that I excepted :(

Update attachment
Nico
Nico worked on GoofyOS
34m 3 months ago

Spent some time polishing our UI. The biggest improvement is probably our way cleaner way of rendering text (you probably won't see this on the screenshot unless you zoom it, but it's WAY smoother). This was actually quite a simple fix: instead of doing color = text_color * pixel_opacity, we do color = text_color * pixel_opacity + bg_color * (1 - pixel_opacity)

Update attachment
Nico
Nico worked on GoofyOS
2h 2m 3 months ago

Drag apps around!

Update attachment
Nico
Nico worked on GoofyOS
1h 5m 3 months ago

I implemented dirty rectangle tracking so we only redraw parts of the screen that actually changed (which is way, WAY faster, for some reason the VGA framebuffer is slower than my grandma)

Update attachment
Nico
Nico worked on GoofyOS
2h 37m 3 months ago

I'm here to present: the CALCULATOR!!! I implemented a window manager that keeps track of all apps open and forwards events to them, and this is a example app made with it!
Next up: maybe add a notepad/sysinfo app, improve our Surface* api to rerender only changed parts and polish colors.

Surface API = the piece of code that makes us able to render shapes without rendering them pixel per pixel to the framebuffer

We're ready to ship again! Quick summary of all changes:
- A 10x faster code runner (old one was way to slow, see devlog for details)
- GitHub and Slack OAuth (I saw that the reviewer spent quite some time generating a fake email for the login form, so this is faster)
- Avatars linked to your GH or Slack
- User settings: Change your name, username or link and unlink social accounts.
- Separated username and name in the db (better security, cleaner code and you can now choose 2 types of names!)
- Improved security of the code runners
- Integrated react-hook-form with our auth and setting forms, resulting in a faster feedback loop (so you directly know a username isn't available without clicking a button)
- Some UI changes

Update attachment
Nico
Nico worked on GoofyOS
1h 42m 3 months ago

Improve performance, added support for mouse buttons and add a small start menu example

Nico
Nico worked on GoofyOS
42m 3 months ago

A new, very cool mouse cursor! We also calculate the amount of storage needed for the mouse bg at compile time now

Update attachment

Spend a lot of time refactoring our framebuffer to be able to render text when not in console mode, so we now render the time and date in our taskbar

Update attachment
Nico
Nico worked on GoofyOS
16m 3 months ago

We can now read time from the hardware's Real-Time Clock (RTC).

Update attachment
Nico
Nico worked on GoofyOS
7h 26m 3 months ago

After spending a lot of time on trying to save CPU registers (which didn't work), I decided to try to make a GUI. Of course I'm still working on userland, but a GUI is something nice to have (the red will be the taskbar)

Update attachment

I added support for loading github and slack avatars when linked.

Update attachment

Finally, a MASSIVE code runner runtime improvement! We went from 20-60 secs benchmarking a problem with 3 test cases to 3-10 secs! I did this using 2 clever tricks: running all tests in a single code runner process, and keeping a pool of code runners in the background waiting until a user wants to run their code, leading to way faster startup times.
I also updated the code runners to kill itself if the code execution takes longer than 20 seconds.

Update attachment

Upgraded our auth forms to use react hook form, resulting in faster and better form validation

Update attachment

Rewrote our navbar so it works 100% using CSS, without React states, making it way faster to render and more responsive. This took way longer than I wanted :(

Update attachment

Way faster and easier form validation using React-Hook-Form, instead of using our own regex when the user clicks "save). Only implemented it for the settings so far, but it should be much easier to do for the auth pages now.

Update attachment

Probably not worth mentioning it but I made better popups instead of using javascripts alert(). I got an idea that could make our code runner way faster (I saw how long the reviewer had to wait in the proof video), but I didn't implemented it yet

Update attachment

We finally use the real username plugin instead of using the name field. This required some SQL changes and I'm very scared to destroy our prod database, but it works on my machine :)

Update attachment

Very basic settings

Update attachment

Github OAuth support!

Update attachment

Slack OAuth support!

Update attachment

Changed alot of server and docker configs. I also added some labels to let users know about possible wait times and timing inaccuracy. There also is a problem with our db which causes the site to sometimes go down for a few minutes, but I think this is Nest's fault.

Update attachment

We now override the default right-click context menu when clicking in the editor

Update attachment

You can now delete components. Next up: delete and edit wires

Nico
Nico worked on GoofyOS
17m 3 months ago

We got mouse input working! I also found out x86_64 has a faster syscall instruction so I will need to adapt my code to that.

Nico
Nico worked on GoofyOS
6h 4m 4 months ago

We finally have user processes! This took me so long. The final fix was running kernel code using JUMP instead of just calling the entry point. I'm so happy lol, this feature took me 15h (!).
I also installed Zed editor, it's blazing fast but for some reason didn't it log all my time...

Update attachment

Wires! You can also drag components.

Update attachment

We can render components! Wires and dragging components are next

Update attachment

I set up the basic classes and folder structure, and we can draw a grid! Thats it, the buttons don't work

Update attachment
Nico
Nico created a project
119d ago

Electronics Simulator

You can... well... simulate electronics, you know?

5 devlogs 0 followers
Nico
Nico worked on GoofyOS
7h 25m 4 months ago

I got the ELF loading to work, but when the program sends the exit syscall, we can't return to kernel mode for some reason. I spent for 3h debugging it, without a result. I even asked Claude (my original plan was no AI 🥺), but that made it worse, so I think I'll just revert all commits...

Update attachment
Nico
Nico worked on GoofyOS
2h 57m 4 months ago

I tried implementing user processes, but our syscalls always end up with a page fault. I have no idea what I'm doing wrong...

Update attachment
Nico
Nico worked on GoofyOS
2h 8m 4 months ago

Upgraded the bootloader. This was the most terrible problem in the world, I hate the GDT, but at least we have better graphics now...

Nico
Nico worked on GoofyOS
1h 58m 4 months ago

Render more shapes than just text!

Nico
Nico worked on GoofyOS
3h 46m 4 months ago

Completed 11/12 chapters of the blog

Update attachment
Nico
Nico created a project
129d ago

GoofyOS

Goofy OS is a lightweight, feature-rich operating system built from scratch in Rust. It aims to provide a modern computing experience while showcasing advanced OS concepts and design principles. We feature: - Memory management - Interrupt handling - I/O Handling - Userspace and ELF loading - A fully working desktop env (This might seem very unclear, please check the repo for more details here: https://github.com/RetrogradeDev/goofy-os)

GoofyOS
36 devlogs 2 followers Shipped

Refactor, realistic and map view

Update attachment

We've launched our site! Check it out at: https://bytesarena.programordie.hackclub.app/
(Just docker stuff this commit)

Update attachment

Render planets

Update attachment

Celestial bodies. I hate maths.

Update attachment

Setup physics engine (rust wasm) and the frontend. Not as easy as I expected, but hey, it works!

Update attachment
Nico
Nico created a project
135d ago

Space Flight Simulator

A cool rocket simulator

4 devlogs 0 followers

Setup a build script and spent 30 mins fixing a cache bug, which turned out to be not my fault. Now waiting for my ID to be approved for Nest...

Update attachment

A new icon, metadata, a lot of small fixes and a REAMDE. I think we are coming closer to launch...

Update attachment

We support array types! I also added a profanity filter, so you can't swear anymore, sorry...

Update attachment

Finally, after all this time, secure execution on the backend, so finally timed execution time! I needed Docker for this, it's not as scary as it looks like!

Update attachment

Started working on the leaderboard, split some code and updated the styles. I hate CSS.

Update attachment

We now accept one solution per language instead of one per puzzle!

Update attachment

Completed profiles 💪

Update attachment

Finished the homepage, improved execution, updated UI, hated Python for having indents, ...

Update attachment

Forgot to commit 🤐

Update attachment
Nico
Nico created a project
141d ago

Clash of Bytes

Compete to solve programming puzzles with the fastest or shortest possible solutions. Submit your own challenges, vote on your favorites, and see who can crack the daily featured problem. Sharpen your skills, challenge the community, and climb the leaderboard—all in one fun, fast-paced platform.

Clash of Bytes
22 devlogs 1 follower Shipped
Nico
Nico joined Summer of Making
142d ago

This was widely regarded as a great move by everyone.