For the ones used to read my large posts, I am sorry to disappoint you. This time it will be a very short post about a thing that recently called my attention and I want to share it with you. After I discovered LuaJIT, I am thinking seriously about embracing the Lua language and incorporating it into my arsenal of programming languages. LuaJIT is a high performance Just-In-Time compiler for the Lua programming language which is compatible with all major desktop and mobile operating systems, processor's architectures, gaming consoles, and more. It makes it a perfect fit for the IoT. As far as the interpreter is written in assembly language, it beats other dynamic languages in most benchmarks. As a language itself, Lua is very flexible and lightweight, and syntactically it reminds me of Ruby (at least the control flow structures). One of the things I missed at first was the absence of classes, as long as Lua is not really an object-oriented programming language, but it is quite easily to build your own abstraction using tables and metatables.

I have started using Lua for the operating system statistics aggregation and centralization which are provided by Sysdig tool. At the very top of Sysdig there is a nice layer which enable us to write small Lua scripts called chisels. As a new instance of sysdig is required to run every chisel and as I couldn't find an elegant way to collect the stats from the chisel's output, I decided to build a seperate component that aggregates the necessary stats in JSON format and stream them over ZeroMQ. This way, a single instance of sysdig can be used to obtain all stats and they can be be easily consumed from any programming language (which has bindings for ZeroMQ).

Lua also has it's own package manager, luarocks.