Background
I am a developer. I love coding. But lately I started to be interested in this so called "Vibe coding". You know, on LinkedIn I see people claiming that they can do a complete application in hours, put them to market and don't need to hire developers.
My first reaction was "ok, this is not possible, developers are needed even if you have something that creates code, because someone needs to check, read and understand code" but I had to try.
Now that I did some some experiments doing "vibe coding" I noticed that yes, it helps a lot, it makes some things faster, you don't have to do a lot of the big stuff, just focus on the solution and in the parts where you really have to think.
BUT (there is always a BUT here), you still need to know how to code, you need to understand what the AI is giving you, it makes mistakes, sometimes the code is not optimal and there are reported cases of exposed credentials and data. So, there must be a developer behind this.
My first experiment was doing an Android app called "Card Umen". My experience with Kotlin is almost zero (I made something for a hackaton in the past but forgot almost all), so I worked with chatgpt, claude and gemini and yes, they made a bust on productivity but I needed to be there all the time correcting things. It is now an MVP and can be downloaded from here. I keep on doing this app and in the meantime learning a lot about creating products and about Kotlin.
Vibe Coding an OS
But now, I want to explore if the AI can do something even more dificult: An OS
So, only with the help of ChatGPT I will try to create one.
As I believe that the best way to create software is to create something very small and iterate over it I asked chatgpt to create a simple bootlader and a simple "hello world" kernel.
First it made me install Ubuntu on WSL, download all the tools, create the cross compiler, adapt Visual Studio Code to use on WSL, etc.
Then, it came with a good idea: instead of a bootloader, why not Grub? For now lets use that, but in the future I want to experiment with booloaders, there are many reasons for choosing one or another.
The next step was creating a simple kernel file
// Video buffer address
#define VIDEO_MEMORY (char*)0xb8000
#define SCREEN_WIDTH 80
#define SCREEN_HEIGHT 25
void clear_screen() {
char *video = VIDEO_MEMORY;
for (int i = 0; i < SCREEN_WIDTH * SCREEN_HEIGHT; i++) {
video[i * 2] = ' '; // space
video[i * 2 + 1] = 0x07; // white over black
}
}
void kernel_main(void) {
clear_screen();
const char *msg = "Welcome to the Pythonist OS!";
char *video = VIDEO_MEMORY;
for (int i = 0; msg[i] != '\0'; i++) {
video[i * 2] = msg[i];
video[i * 2 + 1] = 0x07;
}
while (1); // Infinite loop to keep things there
}
And then create a makefile.
If you want to see the entire code, this will be ALWAYS open source, for now I called it Pythonista OS (I am a HUGHE fan of Python and I wanted to make a tribute), so you can go to the github repo
and check it out (and do whatever you want with this).
I am also doing videos about this journey (but they are in spanish) here
Top comments (0)