Hello there

Welcome to my blog. Here you will find helpful content on programming and tech.

Using an RC Radio as a Joystick in MSFS 2024 through GeForce NOW

An RC radio (the transmitter used for model airplanes) is, without exaggeration, one of the best home-made flight controllers there is: the throttle has no spring and stays wherever you leave it, while the sticks self-center. It is the ergonomics of a real cockpit. The challenge is getting it to work in Microsoft Flight Simulator 2024 running through GeForce NOW, and that is where most people get stuck. Tested with: a Flysky ProArt PA-01 (running EdgeTX) on a Mac with an M4 chip (Apple Silicon), MSFS 2024 via GeForce NOW. But the method works with any EdgeTX or OpenTX radio, and on native Windows too. ...

August 3, 2026 · 5 min

Managing Python Versions on macOS with pyenv

macOS ships with Python, but using the system Python for your projects is asking for trouble. pyenv solves this elegantly: install as many versions as you want and choose which one to use per project, without conflicts. Installation brew install pyenv Then add the following to your shell config (~/.zshrc or ~/.bashrc): export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" Reload your shell: source ~/.zshrc Installing Python versions List available versions: ...

July 23, 2026 · 1 min

How to Enable and Disable the Metal HUD on macOS

The Metal HUD is a macOS overlay that displays real-time GPU metrics: FPS, video memory usage, frame time. It appears directly on top of any Metal app. Useful for monitoring performance in games and graphics applications. Enable /bin/launchctl setenv MTL_HUD_ENABLED 1 Open (or reopen) the app after running the command. The HUD appears in the corner of the screen. Disable /bin/launchctl unsetenv MTL_HUD_ENABLED Close and reopen the app for the HUD to disappear. ...

July 23, 2026 · 1 min

How to Lock Screen Orientation in Flutter

Many developers who want to lock screen orientation in Flutter go straight to AndroidManifest.xml and add android:screenOrientation="portrait". That works, but there’s a better way. The Dart approach: SystemChrome Add the import and configure the orientations at the beginning of main(), before calling runApp: import 'package:flutter/services.dart'; // ← required import void main() { WidgetsFlutterBinding.ensureInitialized(); // needed before any system call SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); runApp(const MyApp()); } WidgetsFlutterBinding.ensureInitialized() is required to make sure Flutter is ready before any system call. Without it, setPreferredOrientations may not work correctly. ...

June 17, 2026 · 1 min

Generating Audio from Text with Local AI Using Kokoro-82M

Imagine being able to turn any text into audio with a natural and realistic voice, all running locally on your machine, without relying on cloud services or paid APIs. That’s exactly what Kokoro-82M offers. Kokoro is an open-weight Text-to-Speech (TTS) model with only 82 million parameters. Despite being lightweight, it delivers audio quality comparable to much larger models, while being significantly faster and more cost-efficient. With an Apache license, it can be used in both personal projects and production environments. ...

February 8, 2026 · (updated February 16, 2026) · 4 min

ESP32: Sending Data via MQTT to the Cloud

The Internet of Things (IoT) has revolutionized the way devices communicate, and the MQTT (Message Queuing Telemetry Transport) protocol is one of the most popular and efficient ways to make this communication happen. In this tutorial, we’ll connect an ESP32 to the internet via WiFi and make it periodically send data to a public MQTT broker, allowing you to view this information in real-time both in the browser and in an Android app. ...

January 19, 2026 · 8 min

How to Use Apple's SuperDrive on Steam Deck

The Steam Deck is a versatile machine that goes far beyond digital gaming. If you own an Apple USB SuperDrive and want to use it on your Steam Deck to read DVDs, this guide will show you how to set everything up quickly and easily. Prerequisites Before you begin, you’ll need: A Steam Deck with a USB dock or hub: The SuperDrive has a USB-A connection (the traditional USB, not USB-C) and uses the USB 2.0 standard, so you’ll need a dock or hub with USB ports. The drive works well when connected directly to USB ports on the dock, whether they’re USB 2.0 or USB 3.0 (the blue ones). ...

January 6, 2026 · 4 min

Riverpod: Modern and Simple State Management in Flutter

When developing Flutter applications, we frequently need to handle information that changes over time: the number displayed on a counter, whether the user is logged in or not, items in a shopping cart, the current app theme. This information that can change and needs to be shared across different parts of the application is what we call state. Managing state means controlling this information in an organized way: where it’s stored, how it’s modified, and how widgets are notified when it changes to update the interface. ...

December 10, 2025 · 12 min

Data Persistence in Flutter with SharedPreferences

When developing applications, a common need is to preserve simple data between user sessions. SharedPreferences is the ideal solution for storing small amounts of data in key-value format, such as user preferences, application settings, or simple states that need to persist. In this tutorial, we’ll implement data persistence in Flutter’s default counter application, making the counter value persist even after closing and reopening the app. What is SharedPreferences? SharedPreferences is a cross-platform API that allows you to store primitive data types persistently on the device. It works like a key-value dictionary, where you can save and retrieve data of basic types such as strings, integers, booleans, and string lists. ...

December 10, 2025 · 8 min

Authentication with Flutter and Firebase: A Guide to Email & Password Login

Authentication is the gateway to most modern applications. Protecting routes, personalizing the user experience, and ensuring data security are fundamental tasks. Fortunately, Firebase Authentication drastically simplifies this process. In this guide, we will build a simple Flutter application with a login screen (using email and password) and a home screen that can only be accessed after authentication. The focus is to create a solid and easy-to-understand foundation that you can implement in your own projects. ...

September 24, 2025 · 9 min