Date Test

This page was created on March 1, 2026. If the dates are working correctly, you should see a different “Updated” date — the date of the most recent git commit that touched this file.

(Edited on April 3 to verify the updated date changes.)

[Read more]

Who is JM

This is a short bio page. Replace this with a few paragraphs about yourself — background, interests, what you do for work, whatever feels right.

[Read more]

Using Tags and Categories

Hugo ships with two default taxonomies: tags and categories.

Assigning terms

Add them to any article’s front matter:

---
title: "My Article"
tags: ['python', 'tools']
categories: ['tutorials']
---

What Hugo generates

For each taxonomy, Hugo creates:

  • A taxonomy list page: /tags/ — shows all terms.
  • A term page per value: /tags/python/ — lists all articles with that tag.

Custom taxonomies

Define additional taxonomies in hugo.toml:

[taxonomies]
  tag = "tags"
  category = "categories"
  series = "series"

Then use series: ['my-series'] in front matter. Hugo generates /series/ and /series/my-series/ automatically.

[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]

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]