I love your style. Just get going! It's at odds with my inclination. Learn everything before writing a line. But that can be demotivating over the long run. HAPPY BIRTHDAY Serenity!
Having this realization has made me 100x the programmer I was a year ago. I would constantly think I needed to know absolutely everything about a language before starting. I've learned a lot more stumbling through small projects and constantly referring to documentation.
How can you code something when you don't even know where to begin?? Asking somebody with no computer science knowledge other than programming is going to have to search up things on the internet such as process scheduling,memory management, file systems etc etc etc You can't just come up with them out of thin air. Another analogy would be giving someone who isn't a builder all the tools to build a house but that person still has no idea of even how to use the tools or where to start..
I couldn't agree more about not reading... It can really ruin your motivation. If you're making a compiler just pretend that it's the first compiler ever made.
Absolutely agreed. I just started working on a ray tracer and I try to avoid reading up too much on the subject and just kind of figure out the things for myself. Experimenting with different lighting models, global illumination methods, materials, etc. is so much more fun than just copy pasting the well known formulas from wikipedia. :)
@@skyblue5220 Exactly, read enough that you're knowledgeable in the subject and that you can get places. Reading never hurts, but there's a point where your goal should be to make an operating system, not read endless pages of specs and theory
I think there's another angle to abstracting that applies to programming in general. If you start by writing the abstractions/skeletons/tests (like in TDD), and then later on apply the details, the benefit is that the structure guides your way ahead and you are less likely to stumble on your code.
I agree. I have learnt that building out the data structures, the classes and the function names helps you write the actual code because you know the direction you are going.
I really need to try this approach. I've been working on an OS built in Rust off and on for a while, but keep getting stuck on implementing syscalls and switching rings due to not being able to find clear information on MSRs. What I really want to work on is a graphics driver.
Funny, lol because I have only done research on what I want to do on my OS, no actual coding. But these are some good tips. I have been thinking about this for years, someday I will execute. :P
I agree and disagree. First of all, nobody sets out to build a whole operating system anymore. It’s just too much work. The big question is, why would you? There’s an OS for pretty much every demand steady. Even the 3 general purpose OS’s Linux, Apple and Windows “borrowed” a lot of code from other projects. Where Linux is the prime example of how to do it the easy way. Make a kernel and use GNU tools around it to make it an OS. Making a kernel is probably what people mean when they say, they want to make an “OS”. That’s where (at least for me) the interesting stuff lies; the low level abstraction between Kernel and Hardware. If you are interested in OS parts then there’s no need to build a kernel. Get a good open source kernel, preferably a true micro kernel; QNX comes to mind. And build your own module for it.
Wow I've been following serenity for 2 years now and just watched this video. It still hits home, what a great time capsule.
I love your style. Just get going! It's at odds with my inclination. Learn everything before writing a line. But that can be demotivating over the long run.
HAPPY BIRTHDAY Serenity!
And also; most of the stuff you need to know, you will learn along the way. Not before you start! :)
Having this realization has made me 100x the programmer I was a year ago. I would constantly think I needed to know absolutely everything about a language before starting. I've learned a lot more stumbling through small projects and constantly referring to documentation.
The best programming advice I ever got.
Just start coding don't lookup on the internet.
Thank you.
How can you code something when you don't even know where to begin?? Asking somebody with no computer science knowledge other than programming is going to have to search up things on the internet such as process scheduling,memory management, file systems etc etc etc You can't just come up with them out of thin air.
Another analogy would be giving someone who isn't a builder all the tools to build a house but that person still has no idea of even how to use the tools or where to start..
In school we used Xv6 as a learning OS. It is a small stripped down OS without an graphical libraries and runs very well in Qemu.
I couldn't agree more about not reading... It can really ruin your motivation. If you're making a compiler just pretend that it's the first compiler ever made.
Absolutely agreed. I just started working on a ray tracer and I try to avoid reading up too much on the subject and just kind of figure out the things for myself. Experimenting with different lighting models, global illumination methods, materials, etc. is so much more fun than just copy pasting the well known formulas from wikipedia. :)
@E-M Entertainment what he meant is that you try to not read on this too much and just do it yourself
@@skyblue5220 Exactly, read enough that you're knowledgeable in the subject and that you can get places. Reading never hurts, but there's a point where your goal should be to make an operating system, not read endless pages of specs and theory
I think there's another angle to abstracting that applies to programming in general. If you start by writing the abstractions/skeletons/tests (like in TDD), and then later on apply the details, the benefit is that the structure guides your way ahead and you are less likely to stumble on your code.
@FichDich InDemArsch speak if you have something to say
I agree. I have learnt that building out the data structures, the classes and the function names helps you write the actual code because you know the direction you are going.
Thanks a lot !! Every programmer should listen to this talk. Cheers from Brazil !
I really need to try this approach. I've been working on an OS built in Rust off and on for a while, but keep getting stuck on implementing syscalls and switching rings due to not being able to find clear information on MSRs. What I really want to work on is a graphics driver.
If you only want to work on the graphics driver part AMDs drivers on Linux are open source, so you can write your own kernel module based on those.
The Multics OS architects needed this talk - but then again, their morass and failure is kind of what brought Unix about - indirectly, that is
What do you think about TempleOS ?
hello thanks for the video, greetings from Colombia. :)
Funny, lol because I have only done research on what I want to do on my OS, no actual coding. But these are some good tips. I have been thinking about this for years, someday I will execute. :P
Why aren't you on LBRY?
;)
I agree and disagree.
First of all, nobody sets out to build a whole operating system anymore. It’s just too much work. The big question is, why would you? There’s an OS for pretty much every demand steady.
Even the 3 general purpose OS’s Linux, Apple and Windows “borrowed” a lot of code from other projects. Where Linux is the prime example of how to do it the easy way. Make a kernel and use GNU tools around it to make it an OS.
Making a kernel is probably what people mean when they say, they want to make an “OS”. That’s where (at least for me) the interesting stuff lies; the low level abstraction between Kernel and Hardware.
If you are interested in OS parts then there’s no need to build a kernel. Get a good open source kernel, preferably a true micro kernel; QNX comes to mind. And build your own module for it.