Eloy Perez

Just random things

Recent posts

Jun 13, 2023
Creating a Ruby App to get notified about Epic Free Games. Saving data Now that we know how to fetch the information we want, we can insert it into a database for later use. In this series we are going to use PostgreSQL so first of all we need to install the gem pg in our project: bundle add pg And in order to have a database to play with we can use docker-compose to set up our development (and test) postgres instance. So in a new docker-compose.…
Jun 8, 2023
Creating circles in Trenchbroom Trenchbroom is a software to create maps for Quake and other games that inherited its engine. Maps for these kind of games have a very specific structure and Trenchbroom was created for them specifically. Usually it wouldn’t be used outside the family of games previously cited but because the system is so stable and powerfull there are many tools that integrate maps created with Trenchbroom into other engines. For example for the Godot Engine you can install the Qodot plugin which will allow you to import maps created with Trenchbroom into Godot with a single click (mostly).…
Jun 7, 2023
Creating a Ruby App to get notified about Epic Free Games. Fetching Data In the Epic Store there is a selection of free games that changes each week. If you want to get them you have to manually access the web page of the store each week, could we build something to get notified? Turns out there is an endpoint to get the current free games so we can build a Ruby app to fetch it and notify us if there is anything new.…
Mar 12, 2023
Donut in Blender Recently I started to learn Blender, a free and open source 3D creation suite. I have followed the Blender Guru’s Donut Tutorial (which is great) and here is the result.…
Mar 9, 2023
GDscript 2 Signals In Godot 3.X signal connections were configured in code like: var areaNode: Area2D = $YourAwesomeArea2DNode areaNode.connect("area_entered", self, "_on_area_entered") This means that both the signal name and the method to run were specified dynamically. Configuring signals this way had some issues. For example, if the method name changed, and you didn’t remember updating its usages, your game would stop working. The same could happen if the signal name changed, this happened if the signal was created by you.…
Dec 8, 2022
Using Nemo in Fedora 37 File managers are used a lot. GNOME comes with its own file manager called Files (formerlly known as Nautilus) which is good enough for most operations. However everytime I do heavy work with it there is one major feature that is missing: split view. Split view was part of Nautilus up until version 3.6 where it was removed to reduce complexity of the software. However there are at least dozens of us that just work better with a split view file manager so, what’s the alternative?…
Nov 28, 2022
Format CSV in your terminal using awk It’s pretty common to have a CSV file that you want to have a look at and you are forced to either open it in a software that support reading such files like Libreoffice Calc or you open it as a plain text file in which case you are not able to read the content easily because it’s not pretty printed. However if you already have a terminal open you can easily format the file right in your terminal without the need for extra software.…
Nov 24, 2022
Linux application stuck in fullscreen From time to time a running application gets stuck in fullscreen mode. This has happened to me even in software that does not support fullscreen mode, like Spotify. Usually when that happens I used to kill the process and restart it, but there is a way of fixing it without being forced to restart the application. We can use wmctrl for that. wmctrl is a command that can be used to interact with an X Window manager that is compatible with the EWMH/NetWM specification.…
Aug 14, 2017
Static analysis of your Pull Requests with Pronto Every programming language has static analysis tools which evaluates code quality and checks if our code follows a series of basics rules of styling, performance and safety. This is very important because in a project where many developers work, it will be easier to read, understand and collaborate with if everyone generates their code following a set of common rules. In Ruby, we have Rubocop as reference to styling (and more) rules.…