https://www.gravatar.com/avatar/485df9434f4908b5f6fab0750c113972?s=240&d=mp

Han

App Demo GIFs on Linux

Creating High-Quality App Demo GIFs on Linux: The Professional Workflow Motivation I recently built a TUI-based librarian app, namely Gorae, for managing research papers, designed specifically for Vim and terminal lovers. I needed a polished demo for the README, but simple tools like Peek fell short—they lack the editing capabilities and text overlays needed for a professional presentation. To do the project justice, I established a robust workflow on Arch Linux using OBS Studio for capture, Kdenlive for editing, and Gifski for high-fidelity compression.

Gorae: Your TUI Librarian

Is Your PDF Library a Mess? It’s Time to Dive into Gorae. Gorae: Meet the terminal-first librarian built for speed, minimalism, and flow. Let’s be honest: if you are a researcher, developer, or student, your “Downloads” folder is probably a graveyard of dozens of files named 1905.1234.pdf or final_draft_v3_REAL_FINAL.pdf. We hoard knowledge. We download papers, save technical manuals, and collect dozens of EPUBs we swear we’ll read “someday.” But actually managing that library?

uv workspace: effective management of Python apps

Understanding uv Workspaces The official uv website explains workspaces very clearly: Inspired by Cargo, a uv workspace is a collection of one or more Python packages (workspace members) managed together in a single repo. Each package has its own pyproject.toml, but the workspace shares one lockfile, keeping dependencies consistent across apps and libraries. Commands like uv lock operate on the whole workspace, while uv run and uv sync default to the workspace root but can target a specific member via --package 1.

Causal Inference Part 1: Causation and Correlation

Most of the time when we say “my model learned something,” what it actually learned is a bunch of very smart correlations. If users who click A also tend to click B, or if certain pixels tend to appear together in cat photos, our models will happily latch onto those patterns and exploit them. That’s powerful—and often enough for prediction—but it’s not the same as understanding what would happen if we actually changed something in the world: raised a price, changed a policy, or shipped a new feature.

Docker Tutorial Part 1: Basics

This is part of my Docker Basics series — introductory guides to help you get started with Docker, learn key concepts, and build your skills step by step. Part 1: Understanding Container Part 2: Basic Commands Part 3: Dockerfile Part 4: Networks Docker Fundamentals (Part 1) Software systems frequently exhibit environment-dependent behavior: dependency versions drift, filesystem paths diverge, and minor operating-system differences produce major failures. Containerization addresses this by packaging an application together with its runtime dependencies so that a single artifact executes consistently across development laptops, continuous-integration pipelines, and production clusters.

Docker Tutorial Part 2: Basic Commands

This is part of my Docker Basics series — introductory guides to help you get started with Docker, learn key concepts, and build your skills step by step. Part 1: Understanding Container Part 2: Basic Commands Part 3: Dockerfile Part 4: Networks Common Commands This is a no-frills cheat sheet for the Docker commands you’ll reach for most of the time, with tiny runnable examples you can copy/paste. The most common commands you can use are the following: