[HN Gopher] Show HN: My self-written hobby OS is finally running...
       ___________________________________________________________________
        
       Show HN: My self-written hobby OS is finally running on my vintage
       IBM ThinkPad
        
       Finally got my hobby OS up and running on real hardware. I love the
       old IBM thinkpads, so thought it was the perfect machine to get it
       working on. Been working on it for quite some time now, but this
       has been a big milestone!
        
       Author : joexbayer
       Score  : 294 points
       Date   : 2025-04-26 12:51 UTC (10 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | mrrogot69 wrote:
       | Cool OS! Love the old style thinkpads.
        
         | jmclnx wrote:
         | Yes, look very cool, very nice work!
        
           | joexbayer wrote:
           | Appreciate it!
        
       | glitchc wrote:
       | This is incredible work, congrats!
        
         | joexbayer wrote:
         | Thanks! Been my main hobby project since university, appreciate
         | it!
        
       | nopelynopington wrote:
       | Nice! I was just thinking about an old eee pc I have somewhere
       | and how I might revive it. What's the performance like?
        
         | joexbayer wrote:
         | I have an old eee pc myself! Tested it on that one too,
         | performance is alright, not really optimized but since it's so
         | "basic" compared to real OSes it should be quite fast. Bigger
         | problems are bugs and lack of functionality for real hardware.
         | (Userspace applications are only available on the QEMU images.
        
       | mouse_ wrote:
       | fun usage of recursion in your factorial function on the third
       | screenshot
        
         | joexbayer wrote:
         | Hehe, had to write some test programs. That's one of them.
        
       | firesteelrain wrote:
       | Great job! How did you get started in this ? Seems like a lot to
       | figure out on your own
        
         | joexbayer wrote:
         | It started after finishing the operating systems class in
         | university. The class was really "on rails" and I wanted to do
         | my own thing.
        
       | gitroom wrote:
       | been messing with old laptops myself so i get it - hitting a
       | milestone like this feels way better when its your own code
       | running for real
        
       | eggy wrote:
       | Congrats! Looks great coming from someone who had a Commodore PET
       | 2001 in 1977. I have been toying with KolibriOS and MenuetOSx64,
       | but I would sure like to try rolling my own OS. You did it! Keep
       | truckin'!
        
         | joexbayer wrote:
         | Thanks! Appreciate the encouragement!
        
       | helf wrote:
       | Oh this is cool! I have a couple of 386/486 machines that would
       | be fun to test on.
       | 
       | Are you planning on cardbus/pcmcia support and wifi?
        
         | joexbayer wrote:
         | WiFi is definitely on my todo list! Already have written some C
         | WiFi code, just need to find time to writer the driver.
        
       | velcrovan wrote:
       | Is there any chance of booting this on a raspberry pi someday?
       | 
       | I'd love a non-linux minimal single-user OS that boots in <1
       | second
        
         | pavlov wrote:
         | It's written for the i386 CPU architecture while Raspberry Pi
         | is ARM, so it would need to be ported.
         | 
         | What about Haiku OS? It's supposed to be for that exact use
         | case...
        
           | velcrovan wrote:
           | I don't think Haiku runs on raspberry pi either.
        
         | incanus77 wrote:
         | While I share the sentiment (and have been noodling with
         | similar projects), unfortunately the minimum is around 4
         | seconds as the VideoCore chip is what boots first, then after
         | about 4 seconds hands things over to the ARM chip, which can
         | effectively boot instantly with this sort of OS.
        
           | velcrovan wrote:
           | Is that 4sec delay something introduce in the pi 4 or 5? At
           | least one guy got the 3 to boot to a Qt app in 2.8 seconds:
           | https://www.furkantokac.com/rpi3-fast-boot-less-
           | than-2-secon...
        
         | 800xl wrote:
         | Have you checked out RISC OS already?
        
       | caspper69 wrote:
       | Nice job. Impressive.
        
         | joexbayer wrote:
         | Thanks!
        
       | joshbaptiste wrote:
       | Oh man I wish such big accomplishments were documented on video
       | like Andreas Kling did with SerenityOS
       | https://www.youtube.com/@awesomekling .. learned a lot from his
       | videos
        
         | joexbayer wrote:
         | Yeah... kinda wish that too in hindsight. I have screenshots of
         | the entire development process from the very start, and of
         | course my git history. Never thought I'd get this far.
        
       | ayaros wrote:
       | I think the default system font should be a more condensed
       | variant; it would make the system look much more refined. There
       | are a number of areas where it's clear you need more horizontal
       | space for characters. Each character should have less width, and
       | there should be as little space between the characters as
       | possible - just a single pixel ought to be enough at the font
       | size and resolution you're using.
       | 
       | I don't know anything about your font system; I'm assuming it's
       | fixed width bitmap fonts? I don't know how hard it would be to
       | make these changes within your codebase so if it's too much work
       | then don't worry about it.
       | 
       | I've been building a web OS site from scratch for a while now
       | (not as technically impressive as what you're doing) and I just
       | got through a total rewrite of the font classes, so it's at the
       | top of my mind.
        
         | joexbayer wrote:
         | I agree my current font is very sub optimal. It's basically
         | still the original font I got working when I started out. I
         | have looked into rendering proper fonts, so it's on my todo
         | list. Just have been neglecting it.
        
           | o11c wrote:
           | Supporting variable-width fonts is pretty easy on its own (if
           | bit-packing, you might wish to store them vertically), but
           | does complicate combining characters (remember, they go in
           | different places and may need to make the new character
           | larger).
           | 
           | For vector fonts, the interesting question is "if I render
           | this at a different resolution and then scale it, will it
           | line up?" which _fundamentally_ has no answer that can
           | satisfy everyone. Most other difficulties are merely a Small
           | Matter of Coding (and providing appropriate APIs).
        
             | joexbayer wrote:
             | Thanks for the info! Will have to look more into.
        
           | JdeBP wrote:
           | One can really get bogged down in fonts. (-:
           | 
           | http://jdebp.uk./Softwares/nosh/guide/terminal-
           | resources.htm...
           | 
           | If you want a _quick_ improvement over that 8by8 IBM ROM
           | font, I suggest two things:
           | 
           | 1. Switch to a 16by16 square.
           | 
           | 2. For the ASCII range, go with one of the old home computer
           | fonts, rather than IBM ROMs. Viznut has .hex files for
           | Commodore PET and BBC Micro graphics modes squirrelled away
           | inside Unscii.
           | 
           | I've done the work of upscaling the 8by8 PET font to 16by16,
           | and it works quite nicely as a monospace square font. These
           | old home computer fonts were of course designed to. Whereas
           | in the world of VGA you're soon in trouble with glyphs
           | designed for 9by16.
        
             | joexbayer wrote:
             | Appreciate your response! Will have a look at 16by16 fonts.
        
               | ahefner wrote:
               | The 8x16 font from the Atari ST's hi-res mode is pretty
               | slick if you like something bold and a little futuristic.
               | https://github.com/ntwk/atarist-font (or rip it directly
               | from the ROM)
        
           | 90s_dev wrote:
           | I had the same problem, I made a 3x4 font that was just
           | barely servicable for the initial project to show text on
           | screen. It was my first (and only) font I ever made!
           | Eventually I needed lower-case, so I turned those into lower-
           | case and made a 3x5 variant for uppercase. It's _still_ not
           | ideal, and I 'm sure when I announce my project, people will
           | complain about it. So I've prepared to say "it's a stop-gap
           | solution to make the OS servicable, but we can make more
           | fonts."
           | 
           | I think people skimming a project often just don't quite get
           | how much we pour into our projects, and how very much it cost
           | us. But it's okay, they don't have to understand just how
           | cool it is what we made. At least we know.
           | 
           | When I saw your video of your project, I was thinking to
           | myself, "wow, that's incredibly cool, and I can _relate_ to
           | the steps he 's doing!" Just trying to be the voice here of
           | someone who thought that way, in case there are no others.
        
         | throw-qqqqq wrote:
         | Tough crowd!
         | 
         | - "Look, I wrote an operating system!"
         | 
         | - "Meh the font is weak"
         | 
         | Peak HN IMO :D
        
           | alganet wrote:
           | The power of the crowd compells you.
           | 
           | The power of the crowd compells you.
           | 
           | The power of the crowd compells you.
        
           | 7bit wrote:
           | So what? Someone is not allowed to give constructive
           | criticism?
        
             | throw-qqqqq wrote:
             | I tried to make a joke, please don't take it seriously :)
        
       | xyst wrote:
       | I wish I could spare time like this to work passion projects.
       | 
       | Forget practicality.
       | 
       | Forget "go to market" strategy.
       | 
       | Forget target fit.
       | 
       | Just build and learn.
        
         | joexbayer wrote:
         | Yeah! It's really refreshing, not having to think about it
         | actually being "used" or the market. Simply just for fun and
         | learning.
        
         | anyfoo wrote:
         | Out of curiosity, why can't you spare time? I'd be pretty lost
         | without my hobby projects (one of them was a toy OS, but that
         | stopped when low level OS development became my actual job),
         | ever since I was a kid.
        
       | moon2 wrote:
       | These things are way better to see than stupid AI. It's not going
       | to "sell", but it's a tech person being creative and doing their
       | craft.
       | 
       | I used to study a lot of hobbyist OS development in my late
       | teens. It was awesome, I still try doing small kernels from time
       | to time (last one was a RISCV small kernel that printed a message
       | to my partner).
        
         | joexbayer wrote:
         | Thanks! It's really liberating not having to worry about
         | selling, marketing etc. Only reinvent the wheel till new ideas
         | come. :D
        
       | rnd0 wrote:
       | It's interesting that a few of these projects seem to be reaching
       | milestones at the same time. It's reassuring to see that there
       | are people out there who are still working on this deep of a
       | level with computers and sharing their results with us.
       | 
       | Rock on!
        
         | joexbayer wrote:
         | Yes! Love seeing other OS projects on here, always inspiring!
        
       | byte_0 wrote:
       | Just adding this comment to say congratulations and how impressed
       | I am by your project! I've been an OS Dev fan since my teens and
       | it feels great to see this achievement come to life. I am a
       | little curious to know how the graphics subsystem is initialized.
       | I wish you the best of success.
        
         | joexbayer wrote:
         | Thanks! Most of the window / graphics system is handled in the
         | kernel, here are the two "services" which do a lot of the heavy
         | lifting:
         | 
         | https://github.com/joexbayer/RetrOS-32/blob/development/grap...
         | 
         | https://github.com/joexbayer/RetrOS-32/blob/development/grap...
        
       | globnomulous wrote:
       | Congrats on hitting the milestone! This is exactly the kind of
       | work I want to see on HN: passion projects just for the sake of
       | making something, not advertisements, market news, or AI
       | bullshit.
        
         | joexbayer wrote:
         | Thanks! The feedback has been amazing. Motivates me to do more!
        
       | pjmlp wrote:
       | I see some Turbo C/QBasic love on that editor.
       | 
       | Kudos for the project.
        
         | joexbayer wrote:
         | Hehe, yeah was a Turbo was a big inspiration for the textmode
         | editor.
        
       | vkaku wrote:
       | More this. Great job :)
        
         | vkaku wrote:
         | Suggestion: Try getting PCI up and try integrating with the
         | rest of your devices.
         | 
         | https://github.com/crazii/USBDDOS/blob/master/USBDDOS/pci.c
        
       | sarkron wrote:
       | This is great! What would you do differently if you started again
       | today? What are your thoughts on language suitability for the
       | lower level parts (ie. Sticking to c or a simple subset of c++ or
       | any of the newer languages)?
       | 
       | Given the myriad of resources available, how did you manage to
       | keep the project engaging rather than copying others people code?
        
         | joexbayer wrote:
         | Thanks for the feedback! I think the biggest thing I'd do
         | different is to have a plan. I just started out with the goal
         | of doing the basic hello world OS, and that's it. But then I
         | kept adding new things, adding more and more working on
         | multiple things at the same time. Which has lead to some
         | technical debt I'm still trying to fix. I'd also try to be less
         | UNIX dependent.
         | 
         | Regarding language, I love C for its basic syntax and "straight
         | to the point" style. Maybe I'd consider some other languages
         | for userspace applications.
         | 
         | A goal for me from the start was always that I wanted to write
         | everything myself, no porting of any software, and for me
         | that's the entire point of the project. I mostly adhered to the
         | rule of copy ideas not code.
        
           | 90s_dev wrote:
           | I'm not sure it's a bad thing to not necessarily have a plan.
           | Intuition is the hidden sister of logic, both children of
           | reason, and we don't always see her because she's often
           | behind the scenes doing all the work.
           | 
           | Technical debt is as sure as death and taxes. Good software
           | grows over time, like a person growing up. Sometimes you have
           | parts that are needed for a time but not permanently, like
           | baby teeth. That's what technical debt is like.
           | 
           | Other times there are parts that are absolutely ideal long
           | term, but it's a long time before they even make sense. And
           | sometimes things only develop much later than we expect, like
           | wisdom teeth. These are software features that won't make
           | sense until you write the thing that you don't realize yet is
           | only temporary.
           | 
           | I have the same goal of writing everything myself from
           | scratch. It's a very important goal to me for a reason I
           | don't fully understand yet.
           | 
           | Congrats on writing an entire OS, and getting it booting on
           | real hardware! That must be such a rewarding feeling in its
           | own right, even if no one understood how. And it looks _so
           | very cool._
           | 
           | You've given me more motivation to announce my project soon.
           | Maybe next week. Thanks.
           | 
           | Have you played around with Zig yet? I hear that would be a
           | good replacement for C here. Did you have any thoughts on
           | porting your OS to that, or did you have any branches some
           | Zig code made its way into?
        
             | joexbayer wrote:
             | I'd love to hear about you project! Seeing what other
             | people make is a big inspiration. I have not tried Zig, for
             | the kernel I don't think anything will beat C for me
             | personally. But for userspace applications I'd love to try
             | it!
        
       | betimsl wrote:
       | I think you could easily give the UI a refresh, modernize it a
       | bit :)
        
         | joexbayer wrote:
         | Oh I'd love to, but good UI is apparently my biggest weakness.
         | I've rewritten it so many times. And I'm probably gonna rewrite
         | it soon again.
        
       | enqk wrote:
       | Congrats on running on real hardware, rather than something like
       | qemu!
        
       | badmonster wrote:
       | Could you elaborate on how this compiler interacts with the
       | operating system? Specifically, how does it handle features like
       | structs, and what are the current limitations or planned
       | enhancements in this area?
        
       | ahmedfromtunis wrote:
       | Let me guess, you're trying to dethrone Microsoft, aren't you?!
       | Well, good luck with that!
       | 
       | Just kidding. This is really impressive.
       | 
       | There are two types of people that I think of as gods: drummers
       | (but not the bad ones) and OS developers (even the bad ones).
       | 
       | Congrats!
        
       ___________________________________________________________________
       (page generated 2025-04-26 23:00 UTC)