FELT; it was time to get going again!

λ March 7, 2021
Tags: felt, prolog, life

TL;DR – after something of a ‘hiatus’ from FELT for many reasons I have managed to wean my mind away from tinkering with C and bring my focus to bear on something that was beginning to bear fruit. Again!

In C I have built a library that allows me to do hot-code reloads using shared libraries. More on that in the future.

This will be a long rambling post but to be honest, I don’t care. I am going to start blogging like I am the only one reading it, which is mostly the case anyway according to my web server logs. Who cares? Not me. I use this place as a brain dump for stuff I did that I won’t to remember.

Well, it seems that according to Git, it has been ten months since I did anything to FELT which, given I started it just over eight years ago now, is probably not a good thing for my head space. It won’t leave me alone. The first version (in PHP) took four years to complete, I’d say that given I was working like mad and contracting and also had never written a full on tokeniser, ast analyzer, syntax error reporting system and three different code backend generators all at once, I’d say that was not too bad. Oh and did I mentioned countless kilobytes of totally accurate documentation that contains working code samples. All hand tested. Looking back on it I cannot believe it was all my own work.

I’ve made a few sneaky changes to this site (the footer colour) just to keep myself in the groove this time.

And I plan to blog far more frequently now about FELT, inspired by James Mahy and his constantly entertaining SoSa sprint reviews on Linked-In. If you want to follow somebody doing something interesting, he’s your man.

The Vision

I forget the exact year (approx 1995/6) I was sitting at my day job desk, happily hacking at an EDI product using OS/2 with C++ and Presentation Manager (probably the best most well thought out UI coding framework I’ve ever used) when, for no particular reason I can remember, I just had this vision of a room absolutely full of servers and they were doing one thing; rendering code. I just sat there and realised that it didn’t matter what language you use, computers ought to be writing the code so you cold focus on more important things, both related to the task at hand and getting more time at the beach for actual real surfing.

The three main goals I had for FELT, from the very beginning have been, and continue to be:

  • Zero dependencies
  • Zero impedance
  • Total integration

Zero dependencies: The first means that any code rendered is totally capable of being incorporated into your existing code base with zero dependency on anything that isn’t already available, for instance, the C translation can rely upon the presence of the standard system include files. Who hasn’t been frustrated by trying to use somebody else’s gear and it just won’t build or link for any number of irritating reasons ?

Zero impedance: This is more of a learning goal for the language. I am a total LISP fan and having spent many hours with LISP, and in recent years Prolog, there is something bordering on the magical about homo-iconic languages and so for that and other reasons (emacs lisp-mode!) I decided to use S-Expressions as means of creating FELT code. What happened next is too mentally tiring to talk about (buy me booze) but after many attempts in C, Haskell, Python I decided that I had to use Prolog because (a) I didn’t know Prolog and (b) I wanted an excuse to learn it.

Total integration: As in, zero issues integrating the output from a target language translator. This is almost a done deal because of the fact that FELT has zero dependencies on its rendered code. This was deliberate; you can use any build pipeline you want and include calls to FELT anywhere that is fitting. The current version can even be told to pack files together.


The current (unreleased PHP version) that is driving the official site at http://felt-lang.com has some simple meta-programming facilities allowing code generation and introspection but I have decided to remove these as I don’t think they are going to be as useful as I had planned them to be; plus the concepts may not port well to certain languages. The current version supports PHP, JavaScript (Browser and Node.js variants) and CSS, yes, CSS.

Macro Expansion

Planned but not available yet.


Two days ago I saw an excellent video by Joe Armstrong about multi-core programming:

Any video with Joe in it excellent. and I was surprised to see that he and I must have shared the same thought processes along the way, specifically about how to process large amounts of data by making the code go to the data rather then melting the planet by constantly transferring petabytes of data from one place to another just to run an algorithm on it.

I too have often thought about this, in fact the first time I had this thought was the same day I watched Johnny Mnemonic enter the net. I can’t prove any of this of course but -I- know I did and so there. Take it or leave it you don’t have to believe it.

Back when CORBA 2 first came out, 1996, about a year after Johnny M. came out (who can spell that word anyway ?) and before I fully understood it, I wondered if this was a way that programs would be ferried around between machines. For years there has always been this thing about ‘interopability’ but so long as we have BigData and Vendor lock-in for money reasons, it has always been something of a pipe dream.

These days the technology has had the benefit of a few decades of Moore’s Law and here we are, as well as my iMac I have a Pi4 and a Pi Pico micro-controller and they are amazing. Sooner or later, I shall make some time for the micro-controller because that was my first job as well, and these particular things have 4 separate programmable units on them which I think is fantastic for lots of reasons… but I don’t know how you do anything with them yet!

The Perfect Data-Storm is Coming

The storm of people tacking back their data from the big nasty BigData douchebags, we all know who they are. FarceBook for one. Google. All of them making quintillions of cash out of selling on our data about us and our surfing habits and we get nothing back. In the video I mentioned above with Joe Armstrong in, he refers to Apple iCloud as ‘ransom-ware for your data’ and he’s spot on… should you stop paying you lose it all.

A few years back I signed up for a SOLID POD, the latest invention / creation of Tim Berners-Lee.


I played with it for a few days but really didn’t know what to do with it. However, this is the start of the shift IMHO; the concept that –you– can save your data –out there– and you have total control of who gets to read it and whether or not there is a micro-payment to be made before access is granted. It’s going to be interesting.

And finally, an apology to Banks. A. Dada

Dude, I didn’t do it yet, the comment engine… but it’s coming. Sometime in the not too distant future I will make it happen.