The Hardware Abstraction Layer.


In A Nutshell

HAL is an acronym which stands for Hardware Abstraction Layer.

Here, HAL refers to my own implementation of a Hardware Abstraction Layer.

My implementation is designed to compete primarily with Java, .NET, C++ and Linux (which are all Hardware Abstraction Layers of some kind). It incorporates most or all of these platforms' functionality into a smaller and more-tightly-integrated package. It's not ready yet, but it's already capable enough to power some applications.

Business Perspective

The overall design goals are secret. Competing with Java, .NET, C++ and Linux isn't the business plan. I want to launch it on a specific device, in a specific year, on a specific day. If you think you know my plan, then you're either wrong or you're me.

If you're interested in the business aspects, gift me $1000 and then we'll talk NDAs.

Technical Overview

HAL is divided into three levels which can be used either separately or in conjunction.

The product as a whole forms a platform complete with applications, development tools and so on. The product as a whole is the foundation of a larger, otherwise-independent, consumer-focused product.

HAL/L1 Overview

The first layer, HAL Level 1 or HAL/L1 for short, essentially replaces the Linux kernel. It's basically Linux-compatible, except with a whole lot less junk. It boots faster and it's easier to customise, package and deploy.

The bad news is that you lose all of Linux's more advanced functionality - there's no networking, no EXT4, no containers, no Unix compatibility.

The good news is that you can ship the same apps on L1 and Linux, in some cases without even recompiling, and choose the best option per-deployment.

HAL/L2 Overview

The second layer, HAL Level 2 or HAL/L2 for short, essentially replaces .NET, Java and C++ (as well as a lot of middleware like GNOME and Windows). It basically does the same stuff, but it's faster and easier.

Instead of offering a low-level language (like C/C++) or a high-level language (like C# or Java) as a one-size-fits-all solution, I simply refused to compromise, instead combining the advantages of the most low-level languages (assembly languages) with the advantages of the most high-level languages (Smalltalk and Scheme) in one neat multilingual package.

In laymans terms, this means HAL/L2 is ideal for developing any type of application, whereas alternative platforms are only ideal for some types of applications (which is why there are so many different platforms).

For example, C# is good for amateur game engines, Java is good for cross-platform business apps, C++ is good for professional game engines and large applications, C is good for critical infrastructure, whereas HAL/L2 is faster than C#, more portable than Java, simpler than C++ and more maintainable than C - but the real focus is enhanced productivity and faster training.

(Compromise is an engineering discipline. Computing is a mathematical discipline. I didn't cut any corners, I simply omitted them from the build.)

HAL/L3 Overview

The third layer, HAL Level 3 or HAL/L3 for short, isn't the kind of thing you'd want to bet your business on, but it is the kind of thing that could help increase your margins in a big way.

Basically, it's an algebraic system for automated analytics. It's kind-of like "Artificial Intelligence", except marginally less likely to become self-aware and kill your family.

Another way of putting it, it's kind-of like a programming language except instead of being Turing Complete, it's purely relativistic: There is no such thing as an infinite loop and there is no such thing as a correct result, just longer or shorter loops and more or less correct results. This allows it to deal with real-world problems (e.g. using quantity calculus) much more intuitively than a programming language can, because it can give you two wrong answers instead of no right answer.

(I wrote this level because it was easier than explaining to people why their computer software can't properly reason with units of measurement.)