Where to begin?

In the beginning Aulë created the Seven Fathers…

However I’m not here to tell the history of the dwarves. If you’re interested then The Silmarillion by J.R.R. Tolkien is the place to look, at least for the type of dwarves I’m talking about. Incidentally, Tolkien said that using dwarves instead of dwarfs was a mistake.

It’s the summer of 2020 and, let’s face it, this has been a really weird year. If you’re reading this in some distant future then I’m not sure I can describe just how crazy 2020 has been and there are still 6 months to go. What it means is that I’m currently on furlough from my developer job and after 3 months the endless gaming and inactivity are starting to get to me. So I decided to start a project, an awesome project.

The Project

The project goal is creating an operating system using an absolute minimal amount of tooling.

If I was writing up a proposal describing what this project is about then that statement would certainly come close to being true. Or at least it has a passing acquaintance with the truth. Maybe it met the truth at a party once. In reality I’ll be scratching an itch by screwing around learning about all kinds of fun stuff. A working, let alone useful, operating system is a kind of abstract goal. It’s there to provide a direction, not a final destination.

Minimal Tooling

What do I actually mean by this?

I remember once reading an anecdote about Seymour Cray in which he apparently entered the operating system for his new computer via the front panel, from memory. I don’t know if that’s true or a legend that survived from the dawn of computing machines. However it does have a certain romance to it.

In comparison modern programming is far removed from the machinery it’s running on. That’s mostly by design since programmers have been relentlessly researching ways to do just that. “Write once, run anywhere” was Java’s big selling point. And that’s fine, that’s great, I see the point and I’ll use every last tool available when I’m working professionally. But this is for fun not profit.

I missed out on front panels, punch cards and everything else associated with early computing. Hell, with ENIAC you had to move parts of the computer around to reprogram it and these were parts the size of large filing cabinets. So one aim of this project is to get a flavour of that and maybe experience some of the things those early programmers did.

For that purpose I’ve written a little assembly program that gives the minimal interaction I’m looking for and I’ll make a post about that separately.

Dwarf OS?

I needed a name and Dwarf OS is what I came up with.

Why dwarves? Who else could it be when dealing with problems?

  • Elves? Apply arrogance and mysticism to the problem.
  • Humans? Hit the problem with something heavy.
  • Orcs? Eat the problem.

It has to be dwarves. Give a dwarf a rock and they’ll make a hammer. Give a dwarf a hammer and they’ll make a forge. Give a dwarf a forge and next week they’ll have recreated the industrial revolution and be on the path to space flight.

Dwarves solve problems. MacGyver? Dwarf. The A-Team? Dwarves. The NASA engineers who jury rigged an air filtration system for Apollo 13? Real dwarves. I’m a dwarf. Not a very good dwarf, not a very smart dwarf, but dwarf enough to hunt for gold…answers, I meant answers!

Caveat

If you find this journal amusing then I’ve succeeded. It’s mostly here for me to organise my thoughts rather than be a real blog. In fact I’ll be surprised if anyone but a search engine bot ever reads it.

That being said I will give a bit of advice to any readers.

The majority of what I’m going to do is probably going to horrify anyone who is actually competent at systems programming. There will in fact be piss poor design, objectively bad programming, actual bad programming and wholesale strange decision making on display (like starting the project). If you have an interest in learning about these things properly then please, please, find somewhere else to read up on the subject. There are a few websites devoted to hobby operating systems, a wealth of literature and a few universities even have open courses online.

Remember: Dwarf responsibly unless you’re just having fun.

— Curufir