In this page I have collected some software tools and libraries realized by myself over time. There are some libraries written in C, which can be linked (either statically or dynamically) to your C/C++ programs. Actually, googling a bit it’s also relatively easy to find articles and tutorials on how to use dynamically linked C libraries in other languages. Sometimes this is quite simple, such as with GO, other times is harder, like for Kotlin/Native or Java/JNI, but if needed it can be addressed somehow (my personal advice is that this makes sense only when the process is relatively easy, as in the case of GO, because in those cases languages are relatively similar). Besides, there are also some tools and other stuff that may be of interest for someone.
Why C? Surprisingly, even if today there are a lot of modern languages, the old C devised by Dennis Ritchie in 1972 (more than 50 years ago, a geological era in this world) is still one of the most spread languages all over the world. According to the TIOBE index, it is currently at the second position in the general rank (September 2023), but it was first for quite a long time, until it was overtaken by Python (at the beginning of 2022).
This can be explained very simply. C is the lowest level among the high level programming languages. It is not a coincidence that it is almost the only language used in Operating Systems, Driver Development, Embedded Software, Compilers and Debuggers, and so on. It is a general-purpose, procedural computer programming language, which provides constructs that map seamlessly to typical machine instructions: using C you will have to handle pointers and bitwise operators, which translates efficiently into assembly. It does not support the Object Oriented Programming paradigm, so it is a bit more distant from the human way of thinking, but it is certainly more efficient in terms of executable produced as a result of compilation.
Software efficiency, in terms of reduced memory footprint of the produced code and reduced number of instructions needed to perform a task, is sometimes considered outdated today, since today the main focus is on business agility and short time to market. However, software efficiency is absolutely a key issue, in a broad sense it can even be considered an ecological choice (quoting an article from Bjarne Stroustrup we can say that: “Software efficiency equates to energy conservation”). According to an interesting paper published on Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering (2017), in most cases the C language is the fastest and most energy efficient choice.
Software that can be downloaded from this page is licensed under the Apache License v2.0 (see licensing terms here).
You are free to download and use it as you prefer, and nothing is due to the author.
However, if you think that this work is good enough for your purpose and you want to contribute somehow to my effort, you are free to donate.
Command Line Tool available on Linux that can be used to produce a document in markdown format, by extracting information from a table available in CSV format and organizing it according to a given template.
It can be very useful to automate document production in all cases where the document structure is repetitive and the information are available in tabular format (e.g. description of a set of products or similar).
The markdown document obtained by the tool can easily be converted in other formats (e.g. docx or pdf) by using available online services or other Linux tools (e.g. pandoc).
For further details please refer to the README file available at the link below.
This tool has been realized for my company, and released as open source on the organization’s GitHub page. I mention it here because I think it may be useful.
TOSCA (Topology and Orchestration Specification for Cloud Applications) is an OASIS standard language aimed at describing cloud workloads, specifying their components, relationships, and the processes to manage them. TOSCA provides portability and agnostic automation management across cloud providers regardless of the underlying platform or infrastructure.
Eclipse Winery is an open source TOSCA Generator, specifically a Modeler, i.e. a tool that allows the user to design a TOSCA Service Template by means of a graphical editor, avoiding the burden to write YAML descriptors manually and to package them into a well formatted CSAR Archive. Winery consists of a web-based environment that includes a type and template management component to offer creation and modification of all elements defined in the TOSCA specification.
The tool realized by myself, called importToscaDescWinery, is a command line tool available under Linux, that allows to parse a TOSCA YAML descriptor (containing type definitions or alternatively a topology template) and to reorganize information therein into a folder suitable for Eclipse Winery.
For further details please refer to the README file available at the link below.
libfmrt is a software library written in C language, which can be statically or dynamically linked to any C/C++ source code, providing Fast handling of Memory Resident Tables (hence the meaning of the acronym fmrt). It offers the ability to manage huge amount of data stored into in-memory tables, giving high efficiency and O(log2N) complexity. To achieve this requirement, in-memory data are stored into tables organized as AVL trees (see Tutorial on AVL Trees below).
libfmrt is not a Data Base. As such, it does not fit tasks that requires some typical DB properties, such as persistence or capability to perform SQL queries or to join tables. Rather, it is suitable for tasks that require optimized handling of volatile data, such as implementation of a fast in-memory cache or handling of great amount of temporary data.
libmixf is a library born time after time by collecting several routines written over time for different purposes. It provides a set of mixed functions (hence the name), organized into several categories:
The first revision of libmixf library (v.1.0.0) was ready in October 2019 and was initially named libmisc (where misc standed for miscellaneous). It contained most of the current functions, but Counters Handling functions were still not present.
In november 2019, revision v.2.0.0 introduced Counters Handling functions. Those two versions did not have a license, and being license free software they were actually proprietary. In June 2021, besides some minor changes, the library was licensed under the Apache v.2.0 license and its name was changed from libmisc to libmixf (a libmisc library was already available on the web). This explains why the first libmixf revision is v.2.1.0.