Python!

I was fortunate to grow up in a home with a computer from a very young age. At first, I spent most of my time playing games—I would spend hours ‘playing’ with the Encarta 98 Encyclopedia. However, as I grew older, my curiosity about computing led me to explore how programs worked and how I could create my own.

Although I spent a lot of time in front of the computer, I didn't fully grasp how to develop software at first. However, along the way, I learned some system administration for both Windows and Linux, as well as basic programming in Bash, C, MATLAB, Arduino, and Python.

Below, I showcase some of my most interesting projects—of course, with links to GitHub in case you want to take a closer look.

Vega method

Vega method

This is a very useful matrix-solving method that I came across during my studies. I conducted a small comparison between this method and other resolution techniques, which you can find at Comparison of resolution methods.

The idea behind this program was to input a problem in matrix format and visualize the step-by-step resolution using the Vega method. This allowed me to compare the results with my handwritten calculations and verify the method’s effectiveness.

If you’d like to test or review the model, you can find it at link.

Conway's Game of Life

Conway's Game of Life

The Game of Life, also known as Conway's Game of Life or simply Life, is a cellular automaton devised by the British mathematician John Horton Conway in 1970. It is a zero-player game, meaning that its evolution is determined by its initial state, requiring no further input. One interacts with the Game of Life by creating an initial configuration and observing how it evolves. It is Turing complete and can simulate a universal constructor or any other Turing machine.

The universe of the Game of Life is an infinite, two-dimensional orthogonal grid of square cells, each of which is in one of two possible states, live or dead (or populated and unpopulated, respectively). Every cell interacts with its eight neighbours, which are the cells that are horizontally, vertically, or diagonally adjacent. At each step in time, the following transitions occur:

Any live cell with fewer than two live neighbours dies, as if by underpopulation.

Any live cell with two or three live neighbours lives on to the next generation.

Any live cell with more than three live neighbours dies, as if by overpopulation.

Any dead cell with exactly three live neighbours becomes a live cell, as if by reproduction.

Like many others, I was fascinated by how simulation works, which led me to program it on my own. I’m sharing the link in case you’d like to try it out (it runs in the command line).

Work management

Work management

At one of my jobs, tracking the exact hours spent on each project was taken very seriously. We had to meticulously log our hours, but the constant switching between projects throughout the day made an Excel spreadsheet an inefficient way to organize so much information. At the end of each day, we still had to manually tally the hours worked on each project and enter them into the company’s management system.

This workflow led me to develop my own time-tracking application in Python. It allows users to create projects, assign all necessary details, and log the hours worked on each one. Thanks to SQLite’s built-in tools, retrieving and analyzing this data later became much more convenient.

If you're interested in exploring the program in more detail, you can download it from this link. To use it, you'll need the Python Tabulate library for structured data display.