Welcome to jath.cl

This blog exists because writing is the most honest way to verify that you actually understand something.

Why another technical blog

Most technical blogs are optimized for search engines, not readers. The goal here is different: long, dense articles that assume the reader can read code and wants to understand the why, not just the how.

Content is Spanish-first. English exists as a second option for articles where it makes sense.

Stack

The site is built with:

  • Python 3.13 — base language
  • FastHTML — web server that generates HTML directly from Python
  • PicoCSS — minimal, accessible style base
  • Mistune — Markdown parser with table and task list support
  • Pygments — server-side syntax highlighting, no JavaScript

No JavaScript framework. No database. Posts are .md files with YAML frontmatter.

python
# The post loader
def load_posts(lang: str) -> list[dict]:
    base = Path("posts") / lang
    posts = []
    for path in base.glob("*.md"):
        post = fm.load(str(path))
        if not post.get("published", False):
            continue
        posts.append({
            "slug": post.get("slug") or slugify(post.get("title", "")),
            "title": post.get("title", path.stem),
            "content_html": md(post.content),
            # ...
        })
    return sorted(posts, key=lambda p: p["date"], reverse=True)

What's coming

  • Kubernetes, infrastructure, and distributed systems
  • Deep Python: descriptors, metaclasses, the interpreter
  • CLI tooling and automation
  • Occasionally: reflections on the craft of writing software
← Back