Ask HN: Would self-taught programmers be interested in such a book?

59 points by sosagain ↗ HN
I want to write a book on operating systems that actually lets the reader build one. It's going to cover stuff like C, x86 assembly, computer architecture, and operating system architecture (basic stuff like task switching, file systems, virtual memory etc). It's also going to provide exercises that lets the reader fill in gaps to make sure they comprehended the material instead of just copying and pasting code. The targeted audiences are mainly self taught programmers and motivated cs students who want to learn more than what their typical operating system courses has to offer. Would people be interested in working through such book?

59 comments

[ 6.1 ms ] story [ 89.5 ms ] thread
I would absolutely be interested in this. Go for it and let us know when you release it!
I'd be interested, don't have a CS degree and at times I feel I lack some basics. Have you written anything yet or is this still at the idea stage?
I have written a kernel for the ARM architecture before and recently I have started working on a kernel for x86. Initially this was just a fun side project but upon seeing all the recent post by self-taught programmers who desire more, I thought this would be a good book to write about.
I would definitely be interested in this.
I'm interested too. I don't have a CS degree and would really like something like this since I can study it at my own pace. Do you have any ideas on how you want to publish it?
I would be, even more so if there was an active forum/irc channel.

In fact I just finished a C Programming course at a state university. After talking with the professor I decided to continue on myself with a C++ book (to be determined), and a Linux Kernel book, [Understanding the Linux Kernel](http://shop.oreilly.com/product/9780596000028.do).

Finding a group of people of a similar skill level willing to do this type of learning would be fantastic.

I have a CS degree and I'm interested anyway! I think it's a good way to learn about threads, memory management, concurrency mechanisms, etc.. Also can contribute if needed.
Totally! Would be awesome! Is there a mailing list that I can add my email to be notified?
I am a self-taught programmer and I already know this stuff but it's always interesting to see if the concepts can be distilled in a way that makes it easier to understand.
This would be awesome!
I am self taught and I find moving from being an amateur coder to fully fledged programmer is tough. Such a book would be interesting. Can you share your blog or email so that I can help you test readability etc of the book. my email is ondieki@wallenje.com
Just finished my final on advanced operating systems (graduate course) and I will definitely buy your book. I feel like I'm missing a lot of the basics. Especially interested in building a file system from scratch.

What would make the book MORE exciting for me, was if you included other system programming languages than C in the implementation. e.g. Rust, D...

Just don't target it only for self taught programmers. Any programmer will benefit from it. (although I think every programmer is eventually self taught in a way)

Blog? Signup form?

Not really.. In learning all I have and achieving the level I am in the IT world, I've learned one truth. It's all already on the internet, you just have to find it...
There are books like this - old, obscure, and out of print. So yes. I'd love to read your modern take on the topic.
I am self taught, and after 12 years in industry I took McKusick's kernel class on Saturdays at Berkeley. It kicked my ass and ate up a lot of time, but it was the best thing I could have done to further my knowledge.
sounds useful. how did that work? were you auditing? did you enroll as a student? what was the cost?
Hmm. No one has mentioned Elements of Computing Systems: Building a Modern Computer from First Principles by Nissan and Schocken (which is absolutely superb).
Great suggestion.

I flipped through Computer Architecture, A Quantitative Approach (http://www.amazon.com/Computer-Architecture-Fifth-Quantitati...) at the bookstore the other day and it looked interesting, but that's all I could gather in the short time I had.

This is a standard textbook on computer architecture across many universities in the US (and if my students are right, outside it as well). So it might be worth a read.

If this is absolutely the first time you are looking at architecture, http://www.amazon.com/Computer-Organization-Design-Fifth-Arc... by the same authors might be a easier entry point.

Elements of computing systems is actually part of the inspiration.
I would be very interested. I'm in school for computer science but so far I haven't had a class or series of classes that went very deep into OS architecture and programming.
Put me down. In fact, I want to give you my email address, so send up a landing page to collect them so I can be kept informed.

I hope it is as deep as you are suggesting it will be. I'm not interested in an easy overview, I want to know pragmatic tradeoffs that modern OSes make, and what sorts of research is being done.

There are a lot of books on this topic. You could always build a better mousetrap, of course.

I'd be interested in a better mousetrap, OR find a new niche rather than yet another minix. How about a RTOS soft or hard your choice, or write it in a new or obscure language, or target it to a microcontroller (PIC32 ?) or target it to a softcore in a FPGA and develop the peripherals as you develop the drivers for them in parallel. How about an OS designed from the start specifically to live inside virtual containers, to optimize its performance both boot up, drivers, and shutdown while virtualized?

Has anyone ever written a power-aware OS and what would that mean? I don't mean a mere ACPI driver but something written from the bottom up to minimize watt/hrs burned by the OS rather than pure speed as sole criteria. That would be an interesting "hook" even if the rest of the book is fairly traditional.

How about an OS that is some kind of kissing cousin / lovechild of a java virtual machine? Where the native executable format is a jar file, where the whole thing runs in the JVM, for no reason other than I'm daydreaming right now?

(Edited to add, I like retrocomputing so how about a C re-implementation of a classic OS, like maybe PDP-8 OS/8? Small simple yet capable, make it as compatible as you can. Or TRSDOS, or port Microware OS-9 and/or Nitros9 to ... something, maybe intel PC I donno)

(Edited to add, strange filesystem idea #2515 how about a cloud / nosql database as your native root filesystem? What a strange idea, yet interesting.)

I'd be interested, but how about doing one for x64 assembly? There are already two teaching kernels available for x86 (from MIT and Stanford).

http://en.wikipedia.org/wiki/Xv6

http://en.wikipedia.org/wiki/Pintos

I think Minix is also x86, so that may be 3.

Or possibly even ARM? Isn't it supposed to have simpler assembly (better for learning) and many, cheap, accessible boards to learn with?
You might be better off targeting the Raspberry Pi instead of x86. Or maybe in addition to x86 as a section on cross-platform development.

But I would definitely be interested in it even if it only focused on x86.

Raspberry Pi would certainly be a good way to go. The architecture is cheap and (relatively) simple. Also people won't screw up their home computers, which is what many people would undoubtedly be playing with.