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 5 hours ago [-]
Thanks! It’s really liberating not having to worry about selling, marketing etc. Only reinvent the wheel till new ideas come. :D
ayaros 7 hours ago [-]
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 6 hours ago [-]
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.
90s_dev 2 hours ago [-]
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.
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 5 hours ago [-]
Appreciate your response! Will have a look at 16by16 fonts.
ahefner 4 hours ago [-]
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)
o11c 5 hours ago [-]
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 5 hours ago [-]
Thanks for the info! Will have to look more into.
throw-qqqqq 4 hours ago [-]
Tough crowd!
- “Look, I wrote an operating system!”
- “Meh the font is weak”
Peak HN IMO :D
alganet 4 hours ago [-]
The power of the crowd compells you.
The power of the crowd compells you.
The power of the crowd compells you.
7bit 34 minutes ago [-]
So what? Someone is not allowed to give constructive criticism?
throw-qqqqq 29 minutes ago [-]
I tried to make a joke, please don’t take it seriously :)
sarkron 3 hours ago [-]
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 3 hours ago [-]
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 2 hours ago [-]
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 2 hours ago [-]
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!
byte_0 4 hours ago [-]
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 4 hours ago [-]
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:
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?
joexbayer 51 seconds ago [-]
There is no magic interaction between the compiler and OS. It simples compiles to the same machine code (i386) and uses interrupts for system calls. Structs are handled as a memory region with a size based on its members, and the member access is simply an offset into that region.
Current it has lots of limitations such as only int and char, no switch statements etc. The biggest change from default C, is allowing functions in structs and implicit passing a struct to a function if it’s a struct function. You can read more here:
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 8 hours ago [-]
Thanks! Appreciate the encouragement!
rnd0 5 hours ago [-]
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 4 hours ago [-]
Yes! Love seeing other OS projects on here, always inspiring!
enqk 2 hours ago [-]
Congrats on running on real hardware, rather than something like qemu!
pjmlp 3 hours ago [-]
I see some Turbo C/QBasic love on that editor.
Kudos for the project.
joexbayer 3 hours ago [-]
Hehe, yeah was a Turbo was a big inspiration for the textmode editor.
ahmedfromtunis 41 minutes ago [-]
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!
velcrovan 7 hours ago [-]
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
incanus77 7 hours ago [-]
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.
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 6 hours ago [-]
I don't think Haiku runs on raspberry pi either.
800xl 7 hours ago [-]
Have you checked out RISC OS already?
nopelynopington 9 hours ago [-]
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 9 hours ago [-]
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.
vkaku 3 hours ago [-]
More this. Great job :)
vkaku 3 hours ago [-]
Suggestion: Try getting PCI up and try integrating with the rest of your devices.
Great job! How did you get started in this ? Seems like a lot to figure out on your own
joexbayer 9 hours ago [-]
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 8 hours ago [-]
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
xyst 6 hours ago [-]
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.
anyfoo 4 hours ago [-]
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.
joexbayer 6 hours ago [-]
Yeah! It’s really refreshing, not having to think about it actually being “used” or the market. Simply just for fun and learning.
globnomulous 4 hours ago [-]
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 4 hours ago [-]
Thanks! The feedback has been amazing. Motivates me to do more!
glitchc 9 hours ago [-]
This is incredible work, congrats!
joexbayer 9 hours ago [-]
Thanks! Been my main hobby project since university, appreciate it!
mrrogot69 10 hours ago [-]
Cool OS! Love the old style thinkpads.
jmclnx 10 hours ago [-]
Yes, look very cool, very nice work!
joexbayer 9 hours ago [-]
Appreciate it!
joshbaptiste 7 hours ago [-]
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 6 hours ago [-]
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.
caspper69 7 hours ago [-]
Nice job. Impressive.
joexbayer 6 hours ago [-]
Thanks!
mouse_ 9 hours ago [-]
fun usage of recursion in your factorial function on the third screenshot
joexbayer 9 hours ago [-]
Hehe, had to write some test programs. That’s one of them.
helf 7 hours ago [-]
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 3 hours ago [-]
WiFi is definitely on my todo list! Already have written some C WiFi code, just need to find time to writer the driver.
betimsl 2 hours ago [-]
I think you could easily give the UI a refresh, modernize it a bit :)
joexbayer 2 hours ago [-]
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.
Rendered at 23:20:37 GMT+0000 (Coordinated Universal Time) with Vercel.
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).
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.
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.
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.
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).
- “Look, I wrote an operating system!”
- “Meh the font is weak”
Peak HN IMO :D
The power of the crowd compells you.
The power of the crowd compells you.
Given the myriad of resources available, how did you manage to keep the project engaging rather than copying others people code?
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.
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?
https://github.com/joexbayer/RetrOS-32/blob/development/grap...
https://github.com/joexbayer/RetrOS-32/blob/development/grap...
Current it has lots of limitations such as only int and char, no switch statements etc. The biggest change from default C, is allowing functions in structs and implicit passing a struct to a function if it’s a struct function. You can read more here:
https://github.com/joexbayer/C-Compiler
Rock on!
Kudos for the project.
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!
I'd love a non-linux minimal single-user OS that boots in <1 second
What about Haiku OS? It’s supposed to be for that exact use case…
https://github.com/crazii/USBDDOS/blob/master/USBDDOS/pci.c
Forget practicality.
Forget "go to market" strategy.
Forget target fit.
Just build and learn.
Are you planning on cardbus/pcmcia support and wifi?