Written May, 2023, Published on 7th September, 2023

The Story of Building an Operating System

This is Rasheed Starlet, and this is the story of how I wanted to build an operating system to take Microsoft and Apple out of business, how the dream died, and how I built a toy operating system.

Background - 2016

In 2016, I started programming. Mainly batch files and viruses. I didn't have a computer at the time, so I was using a friend's computer. So basically, we were learning together. What we would do is that when we learned how to write computer-crushing batch files viruses, we would test them on our computers, and when we went to our friends to collect or give them software, we would copy the virus, install it on their computer on the desktop, and rename it as "do not open." Only God knows how many times they crashed their computers.

It was during this time that we got exposed to several Linux distros, Windows (the only computer we ever knew), and Apple MacOS. Then I thought, "Hey, we could build an Operating System that would take Microsoft and Apple out of business." Then my friend was like, "Sure sure, Windows sucks." When I say that, we were just referring to the User Interface. As at the time, as far as we were concerned, the UI was the OS.

So I came up with drawings of how our OS would look like.

Resurrection: Enter TopRank

TopRank is a 6-month program created by Yaw under DevCongress which serves to create a continuous environment that provides the right mix of freedom and responsibility, support and challenge, necessary for the programmer to significantly improve their craft. I was lucky enough to be part of the first cohort of TopRank and ultimately ending up as the only graduate of the first cohort.

Let's take it to Kumasi

This is how I built Oubre OS. In 2021 during the lock down, I was in Kumasi stuck at home. A DevCongress member called Yaw - who I would later learn founded DevCongress - posted in the general channel that he was in Kumasi and working at the "Senior Staff Guest House." I was at home doing nothing, so I immediately replied that I would come around. I took an Uber (has nothing to do with the OS name) to go meet him. I met him, we chatted, he ordered food, and worked a bit. In the evening, he took me around the school, chatting with random girls. One conversation that stood out to me was how we both admired the craftsmanship of programming and he talked about the philosophy of Go. I was intrigued and wanted to learn Go. I was shy, and he was initiating me into freely opening up conversations with people. I have always struggled with that, especially what to say next when you muster the courage to say hi, but it all came naturally to Yaw. He could present a variant of Yaw to every kind of person and actually make them smile and laugh a lot, making people happy is something I really admired. Seeing how Yaw did it effortlessly, I was inspired, and well, see me now.

After that meeting, I tried to meet him that night and the next day but failed till he left for Dublin. I have always been interested in understanding the fundamentals of computers and programming so that led me to wanting to learn and master C. I reached out to Yaw on Slack telling him that I wanted to learn C, go deeper with the Python I know, and to also learn Go. That was just it. I didn't do any C, Python, or Go.

Me and Udacity

There is a story here about my experience with Udacity, but I am leaving it out, maybe one day I will tell that story in a video format. But for now, the full details are in the companion writeup of this video.

A Magical Afternoon

Since Yaw left for Dublin, it was hard to communicate with him. I would send him iMessages hoping he would see. On Thursday, 27th October 2022, I got a message from him, and this is how the chat went:

Yaw: How's work? Last time we spoke you wanted to go all out on Python. How's that coming along?

Me: For months now I have been gathering resources. I was finding it difficult on how one transitions from intermediate to an expert level python developer

Yaw: I see. Now you feel you have the resources to do that?

Me: Yes. I think I have all the resources I need to become a well-rounded software engineer. All that is left is my hard work and dedication.

Me: You remember the flask full stack Amin advised me to do? I reached APIs, learnt it and was tasked to build an API project to complete the 2nd project of the course. I built parts of the API but the catch was that the front end of the project was written with react and I didn't know react. I set out to use a full month to do the react and comeback to continue the project so I wrote to them asking them to do something about the $100/month I was paying them to have access to the course and they only reduced it to $75, but that was still high for me so I decided to stop. A course that was originally 2100ghs I ended up paying over GHS 10,000 and they still refused to reduce it to $25/month for me.

Yaw: Huh? Why did you have to pay that much? Why did you have to pay any money at all? That's insane. Oh! Boy, Oh! Boy!

Yaw: Dump it. I'll be your mentor.

Me: Honestly, this is the best thing I have ever heard in my entire life. I really appreciate it. I am all in Sir, let's do it. And you need to change projects. I'll prepare a plan and share with you before the end of the week. The target isn't any specific language, but becoming a better programmer overall.

Me: Alright. Thank you so much. I will patiently be waiting.

So you'd have to change languages often. Sounds good to you?

Me: Sounds perfect. I am in.

1st November 2022:

Yaw: Great. I think I've almost completed the curriculum. I need to firm up the resources and material. So give me until the end of this week to do that. I'll share the curriculum with you in the meantime when I'm on my laptop.

Me: Alright Thanks for your effort. I am patiently waiting ❤️

I sent him two screenshots of all the books I have gathered over the years

Yaw: Oh man, that's a lot of books. Let's see if you're going to need them. I think you might. I've formulated the nature of the program, and my estimate is that it can run start to finish in about 3 months. No less, but probably exceeding by a couple of weeks or even a month. I've planned an 8-hour workday schedule. All of that isn't spent on coding by the way. There's a lot of reading, lots of research, and lots of writing.

Me: 😌❤️

Yaw: I also figured it's important to have another person in the group. Do you know anyone who'd like to grow as a programmer? We can get them involved.

Me: I have a friend who would like but I am not sure he will dedicate the time. I don't think he is that serious at the moment.

Yaw: That said, there are 5 projects to choose 2 from:

  • Writing an Operating System
  • Writing a programming language
  • Writing a file system
  • Writing a web framework
  • Writing a frontend framework

Me: - Writing an Operating System ✅

Me: - Writing a programming language ✅

After all goes well, I would love to build these too:

  • Writing a file system
  • Writing a web framework
  • Writing a frontend framework

Yaw: Along with that you'll have to acquire the following books to read:

  • Zen and the Art of Motorcycle Maintenance — Pirsig
  • What do you care what other people think? — Feynman
  • The Money Game — Adam Smith
  • Better — Atul Gawande
  • Shape: The hidden geometry of absolutely everything — Ellenberg

Yaw: And then there's Calculus Made Easy to work through. The system I'm developing here targets exciting various parts of your brain to improve alertness. It also greatly enhances your ability to make connections between apparently unrelated domains. Soft copies are okay, I think.

Everything moved to Discord.

Just like Yaw promised, the breaking ice part of TopRank was to get us to set up our blogs under our own domain names and blog our progress. The first blog of what was supposed to be a public commitment. I set up my website. And on 20th November made my public commitment post found here. I took a screenshot of it and posted it on my WhatsApp status, and a friend ridiculed me. Asking what drugs I was on, saying that I was going to build an Operating System. Right there I knew I had to hold myself accountable to the commitment and prove people wrong as well.

A few weeks in, my friends dropped out of the project and it was left with me alone. And reality dawned on me that, If I didn't go all out on this, I was going to eventually give up. One thing that kept me going was that I viewed this as the biggest chance I have ever had in becoming the sort of programmer that I always aspired to become. And I have been searching for such an opportunity and never got so I wasn't going to mess up. It was a do or die for me. It was hard, I was scared, I was intimidated. I dreamt several times of being haunted by the codes that I was trying to understand. But this was a once in a lifetime opportunity and I wasn't willing to let it slip away.

After toiling day and night, reading thousands of pages and lines of codes and writing thousands of lines of code, I finally reached the end of the curriculum.