RSSAmplifier

Blog

tanis.codes

Recent content on tanis.codes

tanis.codesRSS feed ↗25 posts

Latest posts

Seqix: Memory Game

Seqix started as a weekend itch: I wanted a small, self-contained side project I could take from idea to the App Store and Google Play without it turning into a second job. The result is a space-themed memory sequence game, the classic “Simon says” formula, dressed up with planets, rockets and pulsars, built with Expo and React Native. This is the home screen, with the leaderboard for…

MacBook 12 lid close on Arch Linux

Running Arch Linux on the MacBook (Retina, 12-inch, 2017) works surprisingly well. However, there is a known issue where the system fails to wake up properly when the lid opens after being closed (sleep mode). This article documents how the lid close/wake issue could be fixed on the MacBook 12-inch 2017 by using two key solutions: Disabling D3cold on the NVMe device - prevents the storage from…

MacBook 12 Audio on Arch Linux

Running Arch Linux on the MacBook (Retina, 12-inch, 2017) works surprisingly well, but audio has been historically problematic. The MacBook 12" (2016/2017) uses a Cirrus Logic CS4208 audio codec that the Linux kernel driver does not properly initialize on cold boot. This article documents how I fixed the audio on my 2017 model. The same procedure should work for the 2016 model, since both use the…

Smart Card Reader on Arch Linux

Smart card readers enable certificate-based authentication and cryptographic signing operations. While some desktops and laptops include an integrated smart card reader, the most common setup relies on an external USB smart card reader. On Windows and macOS, smart card readers typically work out of the box with minimal user intervention. Linux distributions, however, often require explicit…

Java Strings Internals

Java Strings are one of the most used data structures in the Java ecosystem. Understanding their internal implementation is crucial for writing efficient applications, especially in high-performance scenarios. A key characteristic of the String class is its immutability — once created, a String object cannot be modified. This immutability provides several benefits: Thread Safety : Immutable…

Getting started with SDKMAN!

SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on Unix-based systems. It provides a convenient command-line interface for installing, switching between, and removing different versions of Java, Gradle, Maven, and other JVM-based development kits. System requirements SDKMAN! requires a Unix-like environment and is compatible with: Linux distributions. macOS.…

Using SSH keys with Git

SSH (Secure Shell) keys are cryptographic credentials that enable secure authentication between systems. They consist of two components: a public key that can be shared freely, and a private key that must be kept secure. When using Git with remote repositories, SSH keys provide a robust alternative to password-based authentication. The authentication process works through public-key cryptography:…

Virt-Manager with QEMU on Arch Linux

Virt-Manager is a graphical user interface for managing virtual machines through the Libvirt virtualization API. This tool simplifies the process of creating and managing virtual machines without requiring direct command-line interaction. This guide focuses on implementing KVM (Kernel-based Virtual Machine) to achieve high-performance virtualization using Linux’s native hypervisor. While…

Node Version Manager (NVM)

Node Version Manager (NVM) is a specialized command-line utility for managing multiple node.js versions. This tool operates on a per-user basis and integrates with POSIX-compliant shells (including bash, zsh, sh, dash, and ksh). NVM provides comprehensive support across Unix-based systems, macOS, and Windows Subsystem for Linux (WSL). Common Use Cases NVM is particularly useful in scenarios such…

Silent boot in Arch Linux with Plymouth

The default boot process in Arch Linux displays verbose console output and kernel messages, which may detract from a polished system experience. This technical guide demonstrates how to: Implement a clean, message-free boot process Configure Plymouth for graphical splash screen support Set up GRUB for silent operation Maintain system diagnostics accessibility when required Important : This guide…

Deploy a Hugo website to Cloudflare

Cloudflare is one of the leading Content Delivery Network (CDN) providers on the Internet. In addition to its CDN services, Cloudflare offers a comprehensive suite of solutions, including cloud cybersecurity, DDoS mitigation, Wide Area Network (WAN) services, and Domain Name System (DNS) management. Their free plan offers the following features: Unlimited bandwidth for static files with low…

Git cheat sheet

Git is a popular version control system used by developers around the world. It allows multiple team members to work on the same codebase, track changes, and collaborate on new features. In this blog post, we’ll explore the basics of Git, including its key features, common commands, and best practices for working with it. Basic Git Commands git init : Initialize a new Git repository in the…

How to boot a Raspberry Pi 4 from a SSD

Booting a Raspberry Pi 4 from an USB SSD is a great idea to improve the performance and reliability of our small desktop or server. In this article we will see how to install Ubuntu Server LTS 22.04 on a Raspberry Pi 4 with 4 GB of RAM. This also applies to the 8 GB version because we will be installing the ARM64 version. First of all, we will need a 2.5" SSD and an USB to SATA cable adapter. You…

How to secure a ssh server

The Secure Shell Protocol (SSH) is a cryptographic network protocol for operating network services securely over an unsecured network. Its most common uses are for secure remote login and command-line execution. SSH applications are based on a client–server architecture, connecting an SSH client instance with an SSH server. SSH it’s the perfect tool to manage remote Unix-like servers, so in…

Set up OpenVPN server

OpenVPN is a virtual private network (VPN) system that implements techniques to create secure point-to-point or site-to-site connections in routed or bridged configurations and remote access facilities. A VPN is often used to browser with a different IP address or to access securely to remote network resources. It’s cheaper and safer to set up your own VPN server on a VPS (Virtual Private…

Deploy Hugo website to GitHub Pages

GitHub Pages allows us to deploy and serve static websites for free. We need a GitHub Action to build our Hugo site and publish it on GitHub Pages. This is a example workflow action used in tanis.codes to deploy this blog in GitHub Pages. You can check out the last version from here . name : Deploy tanis.codes on GitHub Pages on : push : branches : - main # Set a branch to deploy # Allows you to…

Create a git tag with GitHub Actions

GitHub Actions allow us to automate, customize and execute software development workflows right into our repository. There are a lot of examples , custom workflows and documentation . In this tutorial we are going to create a manual GitHub Action to create a new git tag with a version and a description. For this task, we will use the action negz/create-tag@v1 . Create a new manual workflow We will…

Why you should be using Makefiles

A Makefile is a text file which defines rules for building software using the make program. Originally designed for applications written in C or C++, make can be used for a wide variety of programming tasks. Syntax A Makefile must be plain text and use tabs for indentation. If the -f option is not specified when running make , it will search for the following makefiles in this order: GNUmakefile…

Build a custom blog with Hugo

Hugo is one of the fastest static site generator for building websites written in Go . It is a tool which combines a bunch of files and turns them into HTML, CSS and JavaScript files. The content for your site can be written in HTML, JavaScript or markdown files. It is very common to write blog posts or technical documentation using Hugo and markdown files. This blog is made with Hugo based on the…

Set up Oh My Zsh

The Z shell (Zsh) is an Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh. Oh My Zsh is an open source, community-driven framework for managing your Zsh configuration. It comes bundled with thousands of helpful functions, helpers, plugins…

Foliato – Política de privacidad

Read in English Última actualización: 27 de julio de 2026 Esta política de privacidad explica cómo trata Foliato (“la App”) la información cuando la usas en iOS o Android. Tus ficheros nunca salen de tu dispositivo Foliato es un visor y un conjunto de herramientas para PDF que funciona íntegramente en tu dispositivo. Abrir, ver, unir, dividir, reordenar, rotar, firmar, marcar con agua,…

Foliato – Privacy Policy

Leer en español Last updated: July 27, 2026 This Privacy Policy describes how Foliato (“the App”) handles information when you use it on iOS or Android. Your files never leave your device Foliato is a PDF viewer and toolkit that runs entirely on your device. Opening, viewing, merging, splitting, reordering, rotating, signing, watermarking, numbering, or turning images into a PDF —…

Foliato – Soporte

Read in English Foliato es un visor y un conjunto de herramientas de PDF para iOS y Android. Abre, lee y transforma PDFs íntegramente en tu dispositivo: nada se sube nunca a ningún servidor. Consulta la política de privacidad de Foliato para saber cómo trata los ficheros y los datos. Qué hace cada herramienta Visor — abre un PDF para desplazarte por él de forma continua, hacer zoom con dos dedos y…

Foliato – Support

Leer en español Foliato is a PDF viewer and toolkit for iOS and Android. It opens, reads and reworks PDFs entirely on your device — nothing is ever uploaded. See the Foliato Privacy Policy for details on how it handles files and data. What each tool does Viewer — open a PDF to scroll through it continuously, pinch to zoom, and select text. You can also open a PDF from another app directly into…

Seqix – Privacy Policy

Last updated: June 28, 2026 This Privacy Policy describes how Seqix (“the App”) handles information when you use it on iOS, Android or the web. No Data Collection Seqix does not collect, store, transmit or share any personal information. Specifically: No account or registration — no name, email address or any other personal identifier is required or requested. No analytics or tracking…