Ledger: A DSL for accounting

Ledger is a Unix command line tool to do double-entry accounting using only text files. I personally use this tool to manage my personal finances, but since this blog is about Domain Specific Languages, in this post I focus on the domain-specific language used by this tool to model the general ledger used in accounting.

The goal of the language is to represent an accounting ledger, and the core construction is the transaction. So to represent a transaction, you just write the following in a text file and you have your first ledger file.

Continue Reading

What happens to open sources project who lose their main sponsor

I recently read the Xtext framework is seriously needing contributions or its future is at risk. The GitHub issue of the problem dates from March 2020, so the problem is old and I just learned about it. This is a serious problem with open source software that I’ve seen repeats and repeats. I saw the exact same thing happen to Play Framework, another project I used a lot.

The script is the following:

  • Company X starts an Open Source project to innovate in some domain
  • Company X maintains the Open Source for a while, until they pivot, lose interest or something else
  • Company announces that it will give the project back to the community and simply maintain it as part of their paid consulting services

I want to be clear that I do not judge the companies for doing this. Companies are there to make money, and if open an source project is not giving them a good ROI, then it is their call to abandon it to stay in business. The only thing that I feel companies have to do is being transparent about their intentions and if possible lead the transition process towards the new

Continue Reading

How DSLs can remove the bottleneck from the development team

In his book, The Goal, Eliyahu M. Goldratt presents a way to optimize a plant using his Theory of Constraints. This book lays out the concepts that later will inspire the agile methodologies, which is applying the Theory of Constraints to the development of software. The book The Phoenix Project relates the concepts explained in The Goal with IT and software development.

The gist of the approaches in these books is the following. To optimize a system (for example, a development organization) we must:

Continue Reading

Use-cases for rule-based automation

In my last post post I introduced different alternatives to simplify the creation of RPA bots. In this post I dig deeper into one of those approaches: rule-based automation.

Rule-based automations are based on triggers and actions, and are simple and linear. However, they can be user to support very interesting automations. Rule-based automations are easy to implement, to test and to deploy, making them an ideal candidate to start an automation journey. In this post we present 4 different use-cases for rule-based automation.

Continue Reading

Three ways of implementing RPA - Robotic Processing Automation

Robotic Processing Automation (RPA) is a technique used by companies to automate tasks that normally would be completed by employees. These robots are usually called “bots”. There are several RPA technology providers, like Zapier, that enable small companies use this technology in a simple way with lots of apps that offer APIs to access their services.

However, large organizations have special needs and possibly customized internal applications that cannot be used with this kind of services. Large organizations have the resources to have development teams that can develop these custom bots to adapt to their unique needs. Nevertheless, development teams are expensive and custom development of bots can take a lot of time and take away resource from more urgent business needs.

Continue Reading