Reviews

What people are saying:

Review by Sharoy Veduchi: https://www.youtube.com/@sharoyveduchi/videos

A disclaimer, I am biased towards this book because I had a hand in helping out with it. With that said, I think you should still trust me.

Alright so I’m not going to waste anyone’s time with what TempleOS is and what it isn’t all too much. It’s a 64-bit kernel-mode only operating system made by Terry Davis that supports multi-core, 2D graphics, 3D graphics, and various other features. The main star of the show however that allows the OS to support these features is the language HolyC and its Just-In-Time and Ahead-of-Time compiler. You should already know about this and if you don’t, you can look in the description to see what videos I recommend or check out my channel to see more of that stuff.

The thing is, after several years since Terry Davis’s passing, we don’t have anyone in particular carrying the torch and while Terry was a genius, he wasn’t too organized when it came to teaching the user on how to learn the OS and HolyC. He had 5-minute lectures and a few occasional 30 to 50 minute lectures out there that are scattered on YouTube and *SOME* of his source code is commented, but it is a bit disorganized and it’s usually recommended that you have some programming experience with C before you try and even attempt messing with the OS. But honestly that’s not a very good description or starting point.

C was meant for UNIX. A lot of C lovers fail to separate the UNIX out of the C especially if they’re reading the one written by Brian Kernighan and Dennis Ritchie. I can’t exactly blame them considering that C was made *for* UNIX. It also doesn’t help that people sometimes think that programming techniques work in DOS would somehow work in TempleOS for whatever crude understanding they may have.

It’s unfortunate to say that the average programmer has a very non-uniform understanding of what’s what even for the environments they’re used to. They might be Windows users or programmers and not know of some of the most basic aspects of Windows such as not knowing what a PATH is or what a “.bat” file is and assuming that instead of just a shell script your can open up in a text editor to see what it does it’s some spooky thing that gives you viruses when you double click on it and the black CMD window pops up.

In general, not just for TempleOS, but for any system, I think it’s a mistake that we don’t learn programming while also learning about the system we’re programming for. The K&R book does that and that’s great. Too bad a lot of colleges and universities don’t even use K&R anymore for various reasons such as not even teaching C itself and immediately jumping to C++ or a worse language like Java or they don’t make the distinction between the different operating systems other than very surface level details because they think that it’s enough that the language is “portable” and therefore we shouldn’t pay attention to OS specific details.

In the case of TempleOS you need to know HolyC pretty well in order to enjoy TempleOS and vice versa. They are much more tightly integrated with each other than UNIX was with C because the average UNIX user might get away with only knowing how to use bash and a few programs to get on with his life, whereas in TempleOS there is no separate scripting language. HolyC *is* the scripting language and it is also the language to write programs with.

So saying all this, wouldn’t it be nice to have some sort of guide that tells you a good amount of information about both of them at the same time? Maybe some sort of walkthrough? A book perhaps?

Well that’s what I’m here to tell you about today. There’s a book made by Austin Sierra that I bought and I received it a few weeks ago. I’ve been reading through it and I honestly believe it is a very helpful and comprehensive guide to TempleOS and HolyC as a whole. I say this because for the past few years whenever someone wants to learn about any of this, there really isn’t a beginner’s guide for any of this. There’s a few tutorials on YouTube that tell you how to install TempleOS on a virtual machine, a few basic programming videos that might help you a bit, and then there’s Terry Davis’s own videos which aren’t exactly all in one place and the archive channels that DO have his stuff, don’t exactly have it organized in such a way that you can say “Watch this first, then this one second, this one third”, and so on because Terry wasn’t exactly trying to teach a class, he was focusing on certain aspects.

There are also some online communities but they’re… not great to say the least. It’s mostly noobs that don’t seem interested in actually learning.

This book though? If I was to make ANY critique of it, it’s that it feels like it goes from “yeah ok buddy here’s a hello world, now here’s how you do multi-core” in the same chapter and I think to myself “what the hell happened?”. And then I re-read it a bit and I see “oh ok, he didn’t go that fast. I can see how we got from here to there.” and after that particular segment it calms down again and everything is great. I think the only other issue I’d bring up is that the usual textbook will have not just examples but at the end of each chapter there would be an exercises page that asks several questions and programming challenges for the user to do. Right now the “exercises” in this book are mainly just examples that are written out for you and let me tell you we REALLY need those examples. Those examples clear up a lot of confusion especially when paired with the description of how they work. This is something that was lacking when just looking at the demos that Terry Davis left in TempleOS. I’d also like to state that the examples Austin wrote seem to be original. So it’s all his code, he put in the effort for that.

But other than that? This is a great book. It describes itself as an intro book and it is, but it also I think is a bit more than that. It covers a lot of complicated subjects yet it does it in concise summaries that give you a good understanding of what you’re dealing with. Like in chapter 3 for example he talks about hash tables and I don’t remember reading about those in any of my beginnner programming classes. That’s definitely more of an advanced topic.

Let me slow down a bit however and give you a bit more of an overview of the book. I’ll tell you some of the chapter contents which goes like this: Chapter 1 is about setting up TempleOS by installing it in a virtual machine or on bare metal, Chapter 2 despite being only Chapter 2 tells you A LOT about HolyC and how to program with it, Chapter 3 tells you a lot about strings and how to mess with them in different ways, Chapter 4 tells you how to use the sprite editor for both 2D and 3D graphics as well as some stuff about how to program using the sprites you make, some chapters will tell you some more technical stuff that aren’t too focused on programming but are more OS focused such as chapter 6’s discussion of the memory map, and there’s also a couple of chapters for writing x86 assembly and how to use TempleOS’s debugger.

After you’ve read the first three chapters you don’t really need to read the book in order as they are kind of independent from each other, but I don’t really see why you’d skip around because as I’ve said this book is pretty straight to the point with what it wants to teach you. You’ve got nothing to lose from reading this from front to back.

Due to the nature of TempleOS and HolyC, when you read this book you’ll inevitably read at least a little bit about a lot of computer science, software engineering, and a few computer engineering topics in a short time span such as data types, binning/pickling, classes, queues, arrays, CPU registers, memory maps, file systems, and so on. This book calls refers to itself as an introduction book as opposed to being the end-all be-all but maybe one day there will be a beefier sequel to this that will both expand on TempleOS and HolyC but also cover some chip design. There’s projects like the MiSTER FPGA that already has an Intel 486 core available for it. As you may or may not know, the MiSTER FPGA is meant to run old game consoles mainly, but it’s pretty cool that we can now simulate a whole Intel 486 based PC for a cheap price. Maybe in a few years we’ll get a 64-bit x86 core and we could have that be the basis for an FPGA based TempleOS machine or something like that.

The reason I’d like to see that is not just so that we can always have machines that run TempleOS regardless of what year we’re living in, but also so that if Austin was up to the challenge, he could write an even more comprehensive book that covers EVERYTHING from the chip design to the design of the BIOS to TempleOS and HolyC itself. He could have a huge book that basically covers everything someone would want to know as a proper computer engineer. There would no longer be a need for JVM based MIPS simulators, fake ISAs, or other half-hearted toys that universities use to teach students. Instead, students would learn about x86_64 version 1 or version 2, they would learn about how the typical legacy BIOS behaves, they would learn how an OS moves from real mode to protected mode to long mode and all the preparation involved with that (such as how the memory is allocated during this time, what binaries are loaded in what order), and then go deeper than what he has already done with this book. For example in chapter 9 he mentions the mini-compiler, well in the bigger and grander version of this book he would describe the main JIT compiler in its entirety perhaps.

Somewhat related to all this, maybe Austin could also come up with his own fork of TempleOS for the sake of not needing to rely on CD/DVD drives to boot/install. I’m not sure what his plans are but he seems pretty adventurous and he’s also got the people skills to make some connections. In the book, there are two people that he credits as have had a hand in helping him with his book, the more important one probably is the guy nroot. I say this because nroot is the one who was able to make the awinos “port” of HolyC and TempleOS to be run as a user-mode program. This port runs not just on x86_64 but also works on ARM based Linux systems and I think RISC-V is also in the works. I remember speaking with nroot in the past and I can’t believe I missed out on speaking with him more when I met him originally. If Austin can find more nroots out in the wild, he can hopefully find one who is skilled in the field of Verilog or VHDL to write a new x86_64 core to run TempleOS.

However, I don’t say this because I want to discredit Austin. At the beginning I said I helped him right? I had given him some writings including a short lecture and he didn’t just copy-paste or quote it. No no no he took what was frankly some mediocre writing of mine and rewrote it all in a much nicer way. They might as well have been separate works at that point. This means that his understanding of what he writes is genuine and it was better than how I had understood it. So I expect the same with whoever else he works with. I think Austin has the means to be a good author for these types of technical subjects in general and this book is a good reflection of that.

I don’t want to reveal too much from within the book itself and instead I’ll ask for you to just read the sample chapter that Austin has provided or will provide if he hasn’t already. I’ve suggested to him to release chapter 3 as a sample. There’s a lot of stuff in this whole book that despite having used TempleOS for a few years on and off, and having had written programs for it and having played other people’s games and demonstrated other people’s programs for it, I had no idea about for one reason or another. I don’t consider myself as a wizard of TempleOS but as someone else had described me, I am more of a “prosumer” or something like that rather than a proper proper developer. Well this book makes me feel like I should be more adventurous and be more of a developer and I think it would be enough of a push for others to do the same.

I genuinely recommend you all to buy this book if you care at all about TempleOS. If the price is too high, maybe wait for the paperback edition. We really need the K&R equivalent for HolyC and I think this is pretty close to it, though as I said before, it could’ve maybe been a bit beefier, SOMEHOW. I don’t even know how. I need to think a bit more and read a bit more.

🌍 Languages