Nowadays every business uses in its daily activities a lot of business or management programs, as ERPs, CRMs, accounting, inventory, management of virtual shops, etc. And long before the "office" companies, the factories started, with control systems for machines, wagons, rails control and more automatisms. We can say that there isn't a process in a business without a program assigned to control it.
We can expand it with concepts like Big Data and Machine Learning, turning many of the business processes into pure automatic processes, and others into relatively simple processes to manage.
All these systems are, in essence, mathematical equations and formulas that calculate results based on inputs. They are responsible for transforming data, passing it from a raw structure to something that makes sense for the business and drives it, and provides useful information to improve it.
Lugaru is a 3D action game in which you are Turner, a rabbit who lives a series of adventures against other hostile rabbits and wolves. Turner is an expert in martial arts. Lugaru code and its contents are free.
I write about this game because it has become one of my son's favorites. This is due to the enormous features that the game provides to edit levels, add new characters, create new stories and, in general, do whatever we want with it.
But Roberto started asking me more things. In Lugaru, Turner faces all the dangers alone and my son wanted to have friends who help him to fight the forces of evil. At first, I didn't listen to him, but the insistence of a 5 year old kid is powerful, and finally, I started to study the game code to evaluate how much I could please him.
A colleague of mine, Vlad Nicu, is developing a Telegram bot to offer information about cryptocurrencies (price, etc). After talking with him, I had the idea of writing a bot to connect to a MUD (Multi User Dungeon) using Telegram. When I was young, I spent a lot of time playing with this type of online games and I thought it'd be fun to develop something similar.
I decided to use Golang to practice a little with this language and its goroutines. I think it has a lot of things that could be improved, but, undoubtedly, concurrency is its strongest feature. From my point of view, sometimes people abuse of channels and goroutines. I have seen a lot of examples of problems that could be resolved only with function calls, without all the goroutines system.
The source code of midgaard_bot is available under GPLv3 license.