What's new in Gaia Sky 3.1

Short rundown of what's in this major release

6 minute read

Over the last two weeks I have released the feature-packed version 3.1.0 of the open source 3D universe software Gaia Sky, along with successive bugfix releases 3.1.1 and 3.1.2, which fix regressions introduced in the former. This post contains a rundown of the most interesting features and bug fixes introduced in these three versions, from global positioning to per-object visibility. Let’s get started.

GNU screen cheatsheet

Quick reference to GNU screen essential bindings

2 minute read

GNU screen is a terminal multiplexer that allows for different virtual windows and panes running different processes within the same terminal session, being it local or remote. This post contains a quick reference to the most used default key bindings of GNU screen. In contrast to other terminal multiplexers like tmux, GNU screen is probably already installed in your server of choice.

QNAP meltdown: Qlocker

QNAP shows incompetence in an unprecedented level

2 minute read

If you are not interested in tech in general and in NAS manufacturers in particular you may have missed the latest news on the shiny new exploit affecting QNAP NAS systems: the Qlocker. Basically, the attackers gained access to QNAP systems and used 7-zip to move the user’s files to password-protected archives. Then, they started a massive ransomware campaign asking for 0.01 BTC (around 500 USD) for the password to unlock the files.

15 minute read

Looking for new projects to sharpen my Rust skills, I came across a Reddit post where someone mentioned CHIP-8. CHIP-8 is an interpreted low-level programming language and virtual machine specification that is very commonly used as a “Hello world!” project of sorts for people to get their feet wet with emulator programming. It is simple enough to be able to implement a fully-featured emulator in a couple of sessions, but it has all the key parts of a real machine, to the point that are many projects that implement CHIP-8 directly in hardware.

I have since implemented my own CHIP-8 emulator in Rust (see repository here) with support for sound, display scaling, configurable colors, and more. But this text is not about it (I’ll write about my implementation in a future post). Today I want to fully describe the CHIP-8 machine, because I had fun implementing it, and I like it so much that I want to have it here for my future reference. In this guide, every instruction is accompanied with a small pseudo-code block to help understand the interpreter’s intended behavior to the more technically inclined reader.

The CHIP-8 specification document I used as reference to implement my version is Cowgod’s Chip-8 technical reference1, and I also had a look at a guide by Tobias V. Langhoff.2

CPU core load graph script for your bar

Simple script to add a CPU core load to your favorite bar

3 minute read

A while back I changed my bar from Polybar to i3bar with i3blocks. One of the things I missed about Polybar is its internal CPU module, which can produce a core load graph directly in your bar by adding the right ramp characters. In this post I’m sharing a simple POSIX shell script I’ve written that does the same and can be used with any text-based bar. Here is what it looks like:

CPU core load graph in my bar

7 minute read

Search functionality in a small website like mine is usually arguably useless. I, for once, never even care to check whether a specific website offers it. I find a post that interests me via a search engine or aggregator, navigate to the page, read the post and then leave. However, I am not against local, serverless indexing and searching, even though most search engines provide site-specific searches. That is why I moved the search function of this website to a local, JavaScript-based implementation. How to do it? Read on.

Website design by myself. See the privacy policy.
All content on this site is licensed under CC-BY-NC-SA 4.0.