TempleOS, HolyC, pure madness and pure brilliance

I posted a link to my latest DZone article at Reddit, and a commenter ironically said; “TempleOS in the cloud”. I had never heard of TempleOS, so I did a search for it, and I am not really sure about what to even say to be honest with you. First of all, I am not sure I can even legally link to any of its creator’s material, without violating several laws – At the very least break at least dozens of “political correct moral codexes”. Hence, I think I’ll link to the WikiPedia article about it, and simply leave it with that.

However, if you look past the “CIA #$%%$##$ “ parts of its creator’s “condition”, it is not difficult to shimmer some of its brilliance and beauty. First of all, it’s an operating system, with dozens of games, it boots in 1 second, and it does have many highly interesting ideas incorporated into its core – And it’s apprx. 100KLOC of code. Let me repeat that, in case you missed it;

100.000 lines of code, and it’s a “complete” operating system, built from scratch, and it has **dozens of games**!

If I am to ignore some of its obvious flaws, such as a complete lack of networking – I must admit that parts of it is really fascinating. One thing that particularly intrigued me, was “HolyC”, its main programming language. HolyC is a JIT compiled  programming language (Just In Time Compilation), resembling C’s syntax, with some interesting additions. Its architect created it from scratch, and among some of its defining traits, is that you execute the source code files directly. In fact, the JIT compiler for HolyC is so blistering fast, it allows for faster execution of an average HolyC program, using JIT compilation, from its source code, than the startup time for an average Windows program …!!

Yup, you can “execute” a source code file, and it still executes your code BLISTERING FAST!!

Secondly, there’s no “main” function. Invocations within a “source code file” (or an “exe”), are executed in order of appearance, resulting in a much simpler model for coding, than arguably C and C++ has – Or for that matter *any* language out there has. You can include entire programs into your own code, with a simple “#include” statement, allowing you to “reuse entire suits of applications”, in your own customisations, arguably facilitating for reuse, at a level difficult to comprehend for those not acquainted to similar ideas from before. There is only one process, which according to its Biblical inspiration is referred to by its creator Terry as the “Adam process”. This allows you to invoke functions in one program, from another program.

The language contains some pretty amazing reflection capabilities, such as the ability to dynamically determine a function’s arguments and signature, during runtime. Even though it’s compiled into x86 machine code, and does not contain any notions of “byte code” at all. This of course, allows you to dynamically figure out a program’s capabilities, during runtime, from its machine code.

It allows you to “unassemble” any piece of compiled code, and inspect the assembly code for your programs. It contains its own unique filesystem, which allows you to store your files compressed, and have your load file invocations transparently “unzip” them, as you read the files. Yup, you can store your HolyC source code, natively zipped, and execute it, as if it was an executable – At which point the HolyC JIT compiler kicks in, compiles your HolyC source code down to x86 machine code, and executes your program. And …

It does this in MICRO SECONDS!!!!!!

If I were to ignore some of its “quirks”, and some of its architect’s “flaws”, I am left with a single expression on my face, and it is basically “Holy Mother of God”. Its “naive” approach, its inherit simplicity, and some of its intrinsic beauties, are simply too stunning in nature to ignore. And my conclusion is a state of complete awe and jaw-drop …

There is absolutely no way you can seriously refer to yourself as a “computer scientist” today, without having a look at Terry’s HolyC, taking it seriously, and try to squeeze out its diamonds – Because they’re there, in plenty!

Even its terminal, which BTW supports adding images into your text, is built as an immediate HolyC compiler, implying you’re expected to invoke HolyC functions from the kernel to do stuff such as listing a folder’s files, etc …

As to Terry’s fate, I am not even sure about what to say, except if you have a dollar to spare, you should definitely consider giving the man a break. He’s got a PayPal account over at the project’s main website. I’ll send him a Tweet after having published this article, and have him confirm that it actually leads to his wallet. Edit; A guy over at the Reddit group for TempleOS has just confirmed that the PayPal account indeed leads to Terry.

Terry, if you ever read this, I want you to know, that at least in my book, you are absolutely stunningly brilliant, and your work is as close to being a computer programming miracle, as it is possible to come. Here’s one for you bro ❤

This is your brain on OOP

OOP and cults have many of the same effects on the human brain. In a cult there is always one right answer, to most questions you can ask. OOP has these same traits.

If you study a cult, and believe in its dogma, your cognitive abilities changes. Few can doubt this simple fact. Arguably, the same is true for Object Oriented Programming. OOP changes your brain’s ability to see nuances, and makes you want to classify everything into “car”, “house”, etc. Cults work the same way, with their methods of classifying everything into either evil or good – While the truth is that there are always nuances, which both cults and an OOP mind tends to miss.

OOP was invented by two Norwegian professors in 1967, in the programming language referred to as “Simula”. I suspect this was not a coincidence, since in OOP, versus a more functional programming language such as LISP – There always seems to be exactly one right answer to any question you can ask. This made it easier for these professors to hand out grades, since they could just compare their student’s answers to “the correct answer”, and such make their own jobs easier.

The problem with this, is that just like all cognitive frameworks, which arguably OOP in its nature is – It also changes our brain’s ability to function at its peak level. Hence, OOP is arguably damaging to our brains, the same way joining a cult, or taking drugs for that matter is. Hence …

This is your brain on OOP

Kids, don’t do OOP!

Psst, there exist alternatives … 😉

The Unified bigger fool’s Theory of Science

My amazing Homeopathic girlfriend, and the woman of my life ❤

I’ve had a lot of sceptics in my life, and I am myself a devout believer in Homeopathy, to the extent of that I’ve actually gone so far as to name my main software project after my homeopathic constitution remedy. Partially to honour my girlfriend, who have loyally supported me, and arguably scraped me up from the floor, using Homeopathy among other things.

While the “sceptic minded” people around me, has always reminded me about how crazy I am, how insane my ideas are, and what an unbelievably empty and unsubstantiated framework I’ve been able to waste my life on. Well, I have an announcement to make, and it is as follows: I am a Homeopathic software developer.

In fact, I have created a programming language which is not per se a programming language, I have created an operating system, which is not an operating system, and I have created a framework, which is not a framework. In fact, I have even gone so far as to implement polymorphism and encapsulation in Phosphorus Five, chemically cleansed of OOP and classes. Feel free to explain that if you can … 😉

Phosphorus Five was entirely created around the axiom of Homeopathy

If you’re still a s(c)eptic, feel free to explain the following paradox! Feel free to comment below if you believe you can explain it … 😉

CHI – Computer to Human Interface

You don’t need to have a PhD in computer science to understand that the interfaces between humans and computers will be increasingly important in our near future. Traditionally this has been defined as UI, GUI or UX – Implying respectively, User Interface, Graphical User Interface or User eXperience. None of these words accurately describes our tasks as software developers though, and a more fitting word would arguably be CHI, or Computer to Human Interface.

The less friction we have, and the higher our degree of computer literacy we achieve, the brighter our future obviously will become, collectively at least. Which implies that if we can solve this interface problem, in an adequate way, then a new era of Enlightenment can easily be within reach for us collectively. And of course, realising how much the previous era of enlightenment gave us, the potential gains couldn’t possibly be higher.

To solve this, we must create a bridge between the human cognitive model, which arguably is based upon language, creating our cognitive model for understanding our reality, and communicating it to our peers – And the computer cognitive model, based upon algorithms and binary logic. Such a bridge, would put enormous constraints and demands from our programming languages, and arguably require a revision of how we think about computer code in general.

Since the first task for creating such a bridge, is to define it, I’d like to propose a new word describing it; CHI – Computer to Human Interface. Which allows us to create a common cognitive model for what we are actually talking about. Besides, it also happens to be a very beautiful word, with lots of existing positive associations, implying (in Chinese) “the energy that creates life, and is all around us, and the foundation for everything in our universe”. It also holds a lot of other beautiful associations, such as being the letter “X” in Greek, symbolising among other things Jesus Christ, in addition to that it implies a person’s Guardian Spirit in Igbo, etc.

So hence the word itself, arguably becomes a bridge between the “old” and the “new”, being both and acronym (new) for Computer to Human Interface, and having a lot of ancient associations, realising its origins in our ancient past. In addition, it has its own unique Greek letter, which arguably is necessary to make it popular in scientific circles, to please the scientific community 😉

Hence; CHI mathematically written as “X” is its name 🙂

Hyperlambda, a human2computer communication interface

How does your computer feel today?

I have just been in a very interesting email conversation with a renowned senior researcher and scientist. Since I am not entirely certain about whether or not she wants to bring our communication into the public space, I will avoid disclosing who she is. However, our communication illustrates a very good use-case for what I like to refer as the “hard computer literacy problem”.

The researcher I have been communicating with, is a native French speaker, while I am a native Norwegian speaker. Obviously, if we communicated in our native tongues, we would not be able to understand each other. Hence, a common interface between myself and the other party needs to be established – English does a decent job at this!

The same problem exists between computers and humans. Humans understands spoken and written words, while computer understands only computing instructions – And the gap between these two very different mental frameworks, leads to huge communication problems. It doesn’t matter if you exchange “machine instructions” with whatever programming language on the planet here either, since the gap between any current computer language, and any existing human language, is simply to great for most people to be able to engage in a meaningful communication with a computer, to communicate their “intentions”.

Hence, the results becomes that of, only roughly 2% of the population in the western hemisphere, are capable of “communicating with computers”. Which creates an “illiterate gap” between “those who know” and “those who don’t know”. Arguably the same problem as Europe faced in the 15th century in regards to general literacy, before Gutenberg’s invention of the printing press, commoditised the Bible, facilitating for everybody learning how to read the Bible themselves. Needless to say obviously, but the effects of this, made the very concept of power become significantly much more evenly distributed, facilitating for the Enlightenment, modern science, and Democracy, etc.

Linguistics, the framework of the human mind, and the foundation of civilisations

However, if you break down “communication” into its abstract parts, you realise that there’s actually a lot of common ground we can rely upon, to communicate in a much more natural and intuitive way, with our computers. For instance, most sentences have a verb, a noun, etc. The verb might be “move”, the noun might be “car”. OOP was supposed to solve this. Unfortunately, OOP is complicating matters, instead of making things simpler. Hyperlambda though, due to its relative naive structure, seems to perfectly solve this problem though. Below is an example of a piece of Hyperlambda, which might look like pseudo code, but could easily be implemented such that it becomes *actual working code*.


Notice, I want to emphasise that the above is *not pseudo code*! Still, understanding what the above Hyperlambda would do if evaluated, is so simple that it wouldn’t even require explanation to make a child understand it. Compare the above Hyperlambda with the OOP equivalent.

ICar vehicle = Factory.Find ("my-car");
IAction action = AnotherFactory.CreateAction (Action.Move);
action.SetSubject (vehicle);
IPosition pos = YetAnotherFactory.CreatePosition ();
pos.SetSource (Locations.Work);
pos.SetDestination (Locations.Home);
action.Parametrise (pos);
action.Execute ();

You don’t need to be a rocket scientist to understand how one of the above examples are much more easily understood. And you don’t need many years of OOP to realise that the above description of how to perform some simple action with an object in OO, is a highly realistic description of the necessary pre-requisites for being able to even communicate a simple thing, such as moving an object from one position to another position.

An early version of written language, too arcane to be understood by anyone but a few elect members of “the elite”. Just like programming languages are today.

In fact, if anything, I’m willing to bet most OO programmers would perceive my above usage of OO as naive, compared to what they have often had to implement, to create “SOLID” code themselves.

Even ignoring the parentheses, semicolons, object decorations, and cohesion problems – The OOP solution is still “Greek” for most people. While the Hyperlambda solution can be intuitively understood, by everyone having nothing but basic understanding of English.

For a “human 2 computer” interface, Hyperlambda is simply superior. Sure, you can understand how to “communicate” with a computer today, if you spend some 10 years studying some dark and mystical programming language – But why is this necessary …?

Why can’t we use the existing rules of Linguistics and natural language, to find a common ground for communication between computers and humans …?

Why is it necessary having to spend half our lives, before we can create basic programming instructions, communicating our intentions to a computer? I can easily tell a human being to “please turn off the lights before you leave home tonight”. If I asked a computer illiterate to tell their computer the same thing, they’d freeze, unless another software developer had already created a “button” to allow for such an action. Which leads us to the following question …

How many buttons should we have in our software systems?

To communicate ANYTHING to any other human being, requires only 26 “buttons” (the Latin alphabet and a keyword), still most human beings can use those 26 buttons to communicate an infinite amount of different permutations of intentions. So why does my WordPress dashboard have ~1,000 different buttons? It cannot even do 0.0001% of what I can do, using natural speech, or a keyboard with 26 characters.

In fact, the above Hyperlambda example is so close to natural language, that I have taken the liberty of creating a bridge between computers and humans, which allows you to literally speak natural English to your computer, and have the computer evaluate computing instructions as a consequence – Effectively even eliminating the need for even being literate to become a “computer programmer”!

Hyperlambda web service invocations

A Hyperlambda web service, is a web service that allows a client to securely supply an algorithm, or a “lambda object”, which the server will evaluate on its side, and (optionally) return the results of its evaluation back to the client. This completely reverses the responsibility between the “client” and the “server”, and allows for a whole range of really interesting scenarios, arguably facilitating for that your machines can engage in a “meaningful semantic discussion”, communicating intent back and forth, the same way two human beings can. Watch the video below for a demonstration.

If you make sure you have the latest version of Hypereval and Phosphorus Five, you can reproduce what I did above with the following code. Copy and paste this code into Hypereval, then save it and make sure you save it as a “page”.

 * Creates an example page, which allows the caller to invoke a lambda web service,
 * passing in his own Hyperlambda to be evaluated.

     * Including Micro CSS file, serious skin, and fonts.

              class:bg shaded rounded air-inner air-top
                  innerValue:Invoke lambda web service

                 * Hyperlambda editor, which allows user to supply his own Hyperlambda.

                 * "Save button" and URL textbox wrapper.
                  class:strip fill

                     * URL textbox, for where we should pass in the specified Hyperlambda.
                      placeholder:Web service endpoint URL ...

                     * "Invoke" button.

                         * Serializes our form, and invokes the specified web service endpoint, passing
                         * in the specified Hyperlambda.

                         * The actual invocation to the web service endpoint.

                         * Creating a modal widget, displaying the results of our invocation.

When you have saved the above Hyperlambda as a “page”, click the “play” button in Hypereval to preview your page. Then paste in the following code into the CodeMirror editor on your page.


Then make sure you supply the following URL in the URL field.


And click “Invoke”.

What is happening here, is that your client is serialising your Hyperlambda, for then to pass YOUR CODE TO MY SERVER. My server will evaluate your Hyperlambda, with a small subset of my server’s Active Events as its legal whitelisted “vocabulary”.

If you try to invoke an Active Event which I have not explicitly whitelisted, my server will throw an exception, and prevent your code from being executed on my server. This effectively allows two servers to **SECURELY** communicate code, logic and intentions back and forth, the same two (intelligent) human beings are capable of …

When two human beings are engaging in a dialogue, what we are actually doing to some extent, is not merely communicating data back and forth. We are in fact also passing on algorithms to the other party. A great example is “remember to turn off the lights before you leave home”. Depending upon what relationship the receiver of these “algorithms” have with the sending party, he might choose to execute the “algorithm” that the sender gave him. Hyperlambda Web Services allows computer to do the same. As far as I know, this has never been securely done before, throughout the history of computing. However, feel free to prove me wrong if you can.

Additional steps can also be easily implemented, to further secure these invocations, such as demanding the client to have cryptographically signed the MIME message containing the Hyperlambda, for then to create a whitelist of PGP keys that are allows to invoke web services, the code can be encrypted, etc, etc, etc. Below is the code for the web service endpoint.

 * Creates a lambda Web Service endpoint.

 * Sanity checking invocation.
  p5.web.response.set-status-description:405 Only POST method is allowed
  p5.web.echo:Only HTTP POST requests are allowed in here ...

 * De-serialising request.

 * Evaluating specified Hyperlambda in a "whitelist" invocation to [eval].
 * Notice, whatever keywords you wish to allow your clients to be legally allowed to evaluate,
 * must be declared in the [events] lambda below.

 * Yielding results of above evaluation back to client.
<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>

Free Software project looking for sponsors

This is your chance to make yourself immortal, and carve your name into our common history. I am hereby looking for financial sponsor, that wants to sponsor my software project. In return you get a good feeling of having contributed to the world in general, in addition to that you can (optionally) choose to have your name associated with what I consider to be the best Free Software project on the planet as of today.

See below here what you are sponsoring 🙂

Phosphorus Five 7 released

Boy do I have something to show you! Lately I have completely rewritten the CSS structure of Micro, and I have created 7 new “skins”, hopefully making everybody satisfied. Below is a screenshot of how your desktop will look like with the “Air” skin.

When you login to Phosphorus Five for the first time, then click the “settings” button (the one with the “cog” symbol), and select your favourite skin, and all apps in Phosphorus Five will use your selected skin. Below you can see how Camphora Five looks like with the “Aztec” skin.

The structure of Micro CSS have been completely rewritten, and with only ~3KB of CSS (minified and GZip’ed), it allows for some pretty stunning effects, due to intelligent use of some cutting edge CSS technologies. In fact, the entire core CSS is the exact same file for all skins, and to create a new skin, completely changing the entire look and feel of the website – Simply requires creating a tiny CSS file, overriding a handful of CSS variables. You could probably create a new skin from scratch with 5 lines of code if you wanted to!

Below you can see how “Magic Forrest” looks like when you edit your settings in Sephia Five. Notice how even the checkbox is styled.

This implies that if you’re not satisfied with any of the skins that comes out of the box, you can probably create a new one in minutes yourself, by using one of the pre-defined skins as a “template”. Below is a screenshot of Sulphur Five using the “Blues” skin.

This allows you to “rebrand” Phosphorus Five in its entirety, according to your needs, and apply your own colour scheme for it, literally in minutes. In addition, I have also fixed dozens of “CSS bugs” with Micro, such as for instance preventing scrolling on the body when a modal window is open, eliminated the need for custom inline styling when combining buttons with shaded divs, etc. Arguably, Micro CSS is now a completely new CSS framework. Needless to say probably, but obviously it builds upon the “flexbox CSS grid model”.

There are a lot of (I think) intelligent design decisions in the core of Micro now, such as the fact of that (almost) everything is relative in size to the font size of your skin. This allows you to change a single pixel value in your CSS skin file, and everything else simply “adjusts automagically”. This makes it very easy to for instance create skins for people who needs larger text, etc – In addition to that it makes the skin system highly flexible, yet still easily reused, in all widgets. TabControl, Modal Window, Buttons, etc – They all modify their rendering according to the main font-size of your skin – Except the TreeView, which has static font size (unfortunately), since it relies upon images to render its folder lines. However, even the last point is something I believe I will have a solution for in the future.

Below you can see my favourite skin, and my favourite application; Hyper IDE with the “Air” skin.

Phosphorus Five is hence, as of now, a complete web operating system, and a web application development platform, with an integrated webmail client, file sharing system, web based IDE, and many more apps – And it is easily skinned, allowing for you to easily apply your own colour themes, to fit your existing company profile.

10 years ago, I wrote a business plan called “Gaia Toolbox, the ‘mother of all’ toolboxes for creating web apps” – Nobody can call me a quitter … 😉

Phosphorus Five is Open Source, and you can download it from here

I am looking for partners to help me distribute and sell licenses of the system. You can also test the system online here.

Learn web application development in 5 days

If I can get at least a handful of people to sign up, I’ll create an online web application development course, with the intention of teaching (almost) anyone to create their own web apps in 5 days. The idea is that the course requires no previous programming experience, only basic computer knowledge – Yet still, I will teach you everything you need to know, to create your own web apps, in 5 days.

The course will be 100% virtual, and based upon YouTube videos and hands on tutorials, combined with (within reasonable amounts) personal follow up on email, for questions, and delivering “homework”, to have it evaluated by yours truly. The course will last for 5 full days (6 hours each day), but since it is 100% virtual, you can decide yourself when you want to, or have the time, to actually take the classes, and do the tasks (if you wish to do the tasks of course). If anybody is interested, feel free to send an email to thomas@gaiasoul.com – And if you’re not interested, maybe one of your friends are interested …? (Hint; Share this article please)

The course will cost €249, and this will include a commercial professional private license of Phosphorus Five, in addition to everything you need to know to install Phosphorus on your own server, which might actually just be an old laptop for that matter. This will allow you to create your own “private Silicon Valley”, literally from your own living room, if you wish. For an example of such a server, you can check out my own private installation here. The previous link literally leads into my living room, over a plain internet connection, running a “server” on an old discarded Windows laptop.

The course requires ZERO previous knowledge about programming, and will also be “children friendly”. So even if you don’t want to participate yourself, you are more than welcome to sign up your child 🙂

No previous programming experience is required, but some basic use of computers is obviously expected, such as understanding at least to some extent how the file system works, what a file is, what a folder is, etc. If you ever wanted to become a rocket scientist web developer, then this is your chance! Send an email to thomas@gaiasoul.com, and I’ll send you instructions about how to get started.

All the material in the course, will be privately shared YouTube videos, and personal and private emails, intended to make you become a web developer in 5×6 hours.

My credentials; I have been a programmer since I was 8 years old myself (**!!**), and I have today 35 years of programming experience. I am fluent in roughly 25 different programming languages myself, I have worked on critical software for hospitals implying death or life situations, and I have been headhunted by roughly 33% of all the top 10 companies on the Nasdaq index, for jobs ranging from senior research scientist, to software architect with 250 employees beneath me. In addition, holding courses is a role I used to do a lot myself previously, so I believe myself that I am more than capable of performing the role more than adequately. I am also a published system development author, which you can see by the MSDN articles below.

The course will be based upon Hyperlambda, Phosphorus Five and Hyper IDE – But will also vaguely touch upon subjects such as HTML, CSS and JavaScript. Payments will be secured by PayPal. Below is a video about Phosphorus Five, if you’re curious about just what this is …

Become a web app developer in 2 days – ZERO HTML, JavaScript or CSS knowledge required

One of the nicer traits about Phosphorus Five, is that it allows you to create highly optimised, rich, interactive, and secure web apps – Without requiring you to know any HTML, JavaScript, or CSS – Or HTTP for that matter.

The above might sound absurd, but really it’s quite easily understood, once you understand how the development model of Phosphorus Five works. Hyperlambda and Phosphorus Five simply “reduces” HTML, JavaScript, and CSS down to “assembly code”. What I mean by that, is that to Hyperlambda HTML, JavaScript, and CSS has the same “function” as assembly code and machine code has to C++, Java or C#. Obviously when you write C++ code, it becomes machine code. However, you don’t need to worry about that!

One of the defining traits of (good) C/C++ compilers, is that they can almost always optimise your code, such that it for all practical concerns executes faster, than assembly code written by most developers. This is because a well written compiler can easily do things which are simply too complex for the human mind to understand, such as taking advantage of pipelining, L1 cache, etc. The same trait happens to exist within Hyperlambda.

In the video below, I demonstrate how to create a rich and complex web app, with a TreeView, dynamically databinded DataGrid, TabControl, and Modal Window – And not only do I do it in less than one minute, but the “app’s” bandwidth consumption is at a fraction of the bandwidth consumption that GMail and Twitter is using (1/50th to be accurate). This implies that it will be ~50 times faster and more responsive than GMail or Twitter is to the end user.

Too good to be true?

Well, watch the video, and afterwards feel free to reproduce my numbers, by downloading Phosphorus Five and verify my claims.

Notice – Before you dismiss this as marketing gibberish, let me inform you that I barely know any Assembly code. Still I am perfectly able to create apps, in roughly 25 different programming languages, including C and C++. So the ability to “reduce the web standards down to ‘assembly’ code”, has obviously been done many times before. First with C and C++, then later came Java and C#, which went further, by implementing garbage collectors, etc. To do the same to “the web”, is simply the natural conclusion, and natural progression, and arguably “evolution” in fact – And it is easily done, when you start creating generalised solutions, to common problems, to facilitate for higher levels of abstractions.

Therefor, I can say with confidence that, if you want to become a web app developer – You can teach yourself everything you need to know, in roughly 2 days, using Phosphorus Five. Of course, you won’t become a KungFu Ninja Shaolin Master web app developer, but you will be able to solve most of your needs, and your company’s needs too for that matter – Without ever having seen as much as a single curly brace, angle bracket, or CSS class declaration.

If you don’t believe me, then please feel free to explain how C# and Java works

Or even better, download Phosphorus Five, and prove that I am wrong if you can …