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

Han

Gorae: Your AI-Powered TUI Librarian

Gorae: A terminal-first librarian built for speed, minimalism, and flow—now with a conversational AI assistant baked right in.

📣 What’s New: Gorae now ships with a built-in AI co-reader. You can chat with your PDFs, auto-summarize papers, and run semantic search across your entire library—all from the terminal. Bring your own model via OpenAI or run everything locally with Ollama. Existing users: pull the latest release to try it out. Jump to 🤖 Talk to Your Library for details.

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.

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.

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. Formally: same package $\rightarrow$ same behavior across environments.

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.

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.