Designing forms with Python and Kivy

⦿form, python, kivy, kivyforms

There are many libraries to create graphical interfaces with Python. For example, I tried with wxPython, PyQt and Kivy. The latter is the one I liked the most for a number of reasons:

  • It's multiplatform and works in GNU/Linux, Windows, OS X, Android, iOS and Raspberry Pi. I've only tried the first two, but I've been able to verify that it's designed for use with keyboard and mouse or with touch screens.
  • It's not based on the platforms native widgets but has its own, so the applications look the same on all platforms.
  • It's fast; the graphics engine works on OpenGL ES 2 and many parts are written with Cython.
  • You can design the interfaces directly with Python or using Kv language.
  • It's a relatively new project, and well maintained.
  • Good documentation and many examples.

I'm working on an apps development framework, so I need developers to be able to design forms quickly, WYSIWYG way, and they can also include their own themes, colors, etc. Thanks to Kv language, this task is easier for me. It's something similar to QML in Qt, and allows to save compositions in text files that can be loaded later by the application, without having to modify any code.

For example, the Kivy Hello World would be:

Business consoles: past or future?

⦿erp, data, interface, business

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: Turner's friends

⦿games, lugaru

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.

Midgaard Bot, conneting to a MUD with Telegram

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.