Most helpful references:
Intel Software Developer Manuals
for understanding x86 architecture
osdev.org wiki for the basics
(GDT, IDT, memory management)
Reading source code of other hobby
OS projects to understand different
approaches
James Molloy's kernel tutorial
helped me get started
Most memorable challenge:
Getting the window manager working
with proper overlapping windows and
mouse interaction. The z-ordering
and dirty rectangle system took me
a while to get right, windows kept
rendering behind each other or the
mouse would interact with the wrong
window. Debugging graphics issues
without a working debugger in your
own OS is... an experience haha.
Most surprising thing I learned:
How much modern OSes do that we
completely take for granted. Even
something simple like moving a
window smoothly requires double
buffering, proper
careful
memory management. Made me
appreciate every pixel on
my screen.
Fair point on toolchain complexity and portability, C's minimalism there is genuinely hard to beat. But it's a tradeoff: you're trading toolchain simplicity for the burden of manually ensuring memory safety. Depends on whether your priority is long-term portability or correctness guarantees.
The account is newer because I
only recently started putting my
projects on GitHub. I've been
programming in C and Assembly for
a while before that, just locally
on my machine.
The commit activity might look
unusual because I worked in very
intense 12h/day sprints over
14 days.
As for AI, I'm happy to do a live
walkthrough of any part of the
codebase, explain the design
decisions, or answer any specific
technical questions about the
implementation.
I appreciate the scrutiny though
it keeps the community honest!
> The commit activity might look unusual because I worked in very intense 12h/day sprints over 14 days.
That's a weird way to put it.
The commit activity looks unusual because it's a completed project whose files were individually committed in alphabetical order. There's no development history.
The filesystem is currently pretty
simple - a basic flat structure on
the ATA drive. I was inspired by
FAT-style simplicity since I needed
something working quickly for the
Notepad save/load feature.
Planning to implement something more
robust, as the project grows.
What would you recommend for a
hobby OS filesystem?
I wrote the core architecture and
most of the code myself. I used
Claude occasionally to help
debug tricky issues and understand
some concepts, but the design
decisions and implementation are mine.
I think AI is a great learning tool
when you're trying to understand
low-level concepts for the first time.
How did you decide between assembler and C for various parts of the kernel? Some choices are very different from what I would have picked, so I'm curious about your thought process.
Assembly for anything that HAS to
be assembly: bootloader, GDT/IDT
setup, interrupt handlers, context
switching, and port I/O wrappers.
C for everything else: window
manager, apps, drivers, GUI
rendering.
Some parts I probably could have done
in C with inline assembly but I found
writing pure ASM for the low-level
stuff helped me understand exactly
what was happening at the hardware
level.
What choices looked different to you?
I'd love to hear your perspective
always looking to improve!
Most helpful references: Intel Software Developer Manuals for understanding x86 architecture osdev.org wiki for the basics (GDT, IDT, memory management) Reading source code of other hobby OS projects to understand different approaches James Molloy's kernel tutorial helped me get started
Most memorable challenge: Getting the window manager working with proper overlapping windows and mouse interaction. The z-ordering and dirty rectangle system took me a while to get right, windows kept rendering behind each other or the mouse would interact with the wrong window. Debugging graphics issues without a working debugger in your own OS is... an experience haha.
Most surprising thing I learned: How much modern OSes do that we completely take for granted. Even something simple like moving a window smoothly requires double buffering, proper
careful memory management. Made me appreciate every pixel on my screen.
What kind of OS project are you planning?