Posts for: #Tools

Python Packaging with uv

uv is a fast Python package manager and project tool written in Rust.

Why uv over pip/poetry/pipenv?

  • 10–100x faster dependency resolution.
  • Single tool: replaces pip, pip-tools, virtualenv, and pyenv.
  • Lockfile support via uv.lock.

Common commands

uv init myproject          # scaffold a new project
uv add requests            # add a dependency
uv sync                    # install from lockfile
uv run pytest              # run inside the managed venv

Project convention

All Python projects in this workspace use uv exclusively — no raw pip install or python -m pytest.

[Read more]

Running Local LLMs with Ollama

Ollama lets you run large language models locally with a single command.

Quick start

ollama run llama3

Why local?

  • No API keys or rate limits.
  • Data stays on your machine.
  • Works offline.

Models I use

  • llama3 — general purpose
  • codellama — code generation
  • nomic-embed-text — embeddings for vector search
[Read more]

Tools I Use

A list of the hardware, software, and services I rely on daily.

Editor

VS Code with GitHub Copilot.

Terminal

Bash on Linux.

Languages

Python (via uv), Go, shell scripts.

[Read more]

Vector Search with ChromaDB

ChromaDB is an embedding database for building search and retrieval systems.

How I use it

I chunk documentation (VyOS, Hugo) into paragraphs, embed them with nomic-embed-text via Ollama, and store the vectors in ChromaDB for semantic search.

Stack

Documents → Chunker → Ollama embeddings → ChromaDB → Query API

Key concepts

  • Collection: a named group of embeddings (like a table).
  • Document: the raw text stored alongside the vector.
  • Metadata: key-value pairs for filtering results.
[Read more]

Setting Up Hugo with Docker

This article is a page bundle (leaf bundle). Notice it lives at software/hugo-setup/index.md — not hugo-setup.md.

What makes this a page bundle?

The directory structure looks like this:

content/software/hugo-setup/
├── index.md          ← this file (the page content)
├── architecture.svg  ← co-located resource (image)
└── notes.txt         ← co-located resource (data)

Everything in this folder belongs to this page. Hugo treats the sibling files as page resources accessible via .Resources in templates.

Why use bundles?

  • Co-location: images and files live next to the article that uses them, not in a global static/ folder.
  • Resource processing: Hugo can resize, crop, and fingerprint bundled images at build time.
  • Portability: move or delete the folder and everything travels together.

Using a bundled image

In a template you’d access it with:

[Read more]