Theme Test Post — The Kitchen Sink

This is a comprehensive test post for the notch.org blog. It exercises every markdown element and Obsidian Publish feature so you can see how the Solarized Dark monospace theme renders everything. Delete this when you’re done tweaking.


Typography

Regular paragraph text. The body uses IBM Plex Mono at 15px with 1.7 line-height. This should feel clean, technical, and easy to scan. Long paragraphs should wrap nicely within the 760px content width without feeling cramped.

Here’s text with bold, italic, bold italic, strikethrough, and highlighted text. You can also use inline code to reference things like kubectl get pods or file paths like /etc/nginx/nginx.conf.

“The best way to predict the future is to invent it.” — Alan Kay

Heading 3 — Subsection

Regular content under an H3. Notice the heading hierarchy: H1 is the page title (set by Publish), H2 gets a bottom border for visual separation, H3 is slightly smaller.

HEADING 4 — CATEGORY LABEL

H4-H6 are styled as uppercase labels — good for minor section markers within longer posts.

HEADING 5 — SUBLABEL
HEADING 6 — FINE PRINT


Lists

Unordered

  • First-level item
  • Another first-level item
    • Nested item
    • Another nested item
      • Third-level nesting
  • Back to first level

Ordered

  1. Step one — set up your vault
  2. Step two — configure Publish
  3. Step three — customize with publish.css
    1. Sub-step: choose your fonts
    2. Sub-step: set your color palette
  4. Step four — publish and iterate

Task List

  • Set up Obsidian Publish
  • Create publish.css theme
  • Point notch.org DNS
  • Publish publish.js
  • Write first real post

Mixed List

  • AI/ML
    1. Large Language Models
    2. Agent frameworks
    3. Fine-tuning strategies
  • Security
    1. Zero trust architecture
    2. Threat modeling
    3. Incident response
  • Strategy
    • Build vs. buy decisions
    • Platform engineering ROI

Blockquotes

This is a simple blockquote. It should have a left border accent and slightly muted text color.

Multi-line blockquote

Sometimes you need to quote a longer passage. This tests how the blockquote handles multiple paragraphs and inline formatting like italics and code.

— Attribution goes here

Nested blockquotes:

Can go deeper

And even deeper still


Callouts

A Note

Notes are for general information that supplements the main content. Good for “by the way” moments.

Pro Tip

Use callouts sparingly — they lose impact if overused. Reserve them for genuinely useful information.

Security Warning

Never store API keys in client-side code or public repositories. Use environment variables or a secrets manager.

Critical

This action is irreversible. Deleted data cannot be recovered.

Technical Context

Obsidian Publish serves content via a CDN with automatic HTTPS. Sites are indexed by search engines by default, but you can disable this in site settings.

TL;DR

Solarized Dark + IBM Plex Mono = readable technical blog that doesn’t burn your retinas.

Example Configuration

server:
  host: 0.0.0.0
  port: 8080
  tls: true

Deployment Complete

Your site is live at notch.org. DNS propagation may take up to 48 hours.

Build Failed

Check your publish.css for syntax errors. Invalid CSS will be silently ignored.

Known Issue

Community plugin codeblocks (Dataview, etc.) do not render on Publish.


Code

Inline

Use docker compose up -d to start services, or check status with systemctl status nginx.

Fenced Code Blocks

# Simple threat scoring model
def calculate_risk(indicators: list[dict]) -> float:
    """Score a set of threat indicators on a 0-1 scale."""
    weights = {
        "malware_hash": 0.9,
        "suspicious_domain": 0.7,
        "unusual_login": 0.5,
        "port_scan": 0.3,
    }
    
    total = sum(
        weights.get(ind["type"], 0.1) * ind.get("confidence", 0.5)
        for ind in indicators
    )
    return min(total / len(indicators), 1.0) if indicators else 0.0
// Minimal Express API server
const express = require('express');
const app = express();
 
app.get('/api/health', (req, res) => {
  res.json({ 
    status: 'ok', 
    timestamp: new Date().toISOString(),
    version: process.env.APP_VERSION || '0.1.0'
  });
});
 
app.listen(3000, () => console.log('Server running on :3000'));
# Deploy script
#!/bin/bash
set -euo pipefail
 
echo "Building..."
npm run build
 
echo "Deploying to production..."
rsync -avz --delete dist/ deploy@prod:/var/www/app/
 
echo "Restarting services..."
ssh deploy@prod 'sudo systemctl restart app'
 
echo "✅ Deploy complete"
# Kubernetes deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-server
  labels:
    app: notch-api
spec:
  replicas: 3
  selector:
    matchLabels:
      app: notch-api
  template:
    spec:
      containers:
        - name: api
          image: notch/api:latest
          ports:
            - containerPort: 8080
          resources:
            limits:
              memory: "256Mi"
              cpu: "500m"
-- Monthly active users by cohort
SELECT 
    DATE_TRUNC('month', created_at) AS cohort_month,
    DATE_TRUNC('month', event_date) AS activity_month,
    COUNT(DISTINCT user_id) AS active_users
FROM user_events
WHERE event_type = 'login'
GROUP BY 1, 2
ORDER BY 1, 2;

Tables

Simple Table

ToolCategoryLicense
ObsidianPKMCommercial
HugoStatic SiteApache 2.0
GhostCMSMIT
NotionProductivityCommercial

Wider Table

Threat TypeSeverityMITRE ATT&CKDetection MethodResponse Time
RansomwareCriticalT1486EDR + SIEM correlation< 15 min
PhishingHighT1566Email gateway + user report< 1 hour
Insider ThreatHighT1078UEBA + DLP< 4 hours
Supply ChainCriticalT1195SBOM analysis + monitoring< 24 hours
Port ScanningLowT1046IDS/IPSAutomated

Images

Images display with a subtle border and rounded corners. Test with an external image:

A placeholder test image

Caption: Use italic text below images for captions.


Horizontal Rules

Three different separators above, between sections, and below. They render as dashed lines.


Footnotes

This claim needs a source1. And here’s another reference2.


Math (LaTeX)

Inline math: The time complexity is for the average case.

Block math:


Embeds

Note Embed

If you had another note, you’d embed it like this:

![[Another Note]]

Image Embed with Size

![[screenshot.png|600]]

Tags

This post uses: test theme blog

Inline tags work in body text too: talking about security and ai-strategy.


Properties Reference

Here’s a quick reference for useful frontmatter properties on your blog posts:

---
# Required
publish: true
 
# Recommended  
permalink: blog/your-url-slug
description: "One-line summary for SEO and social cards"
tags:
  - ai
  - security
  - strategy
 
# Optional — Social previews
cover: "Attachments/cover-image.png"   # or external URL
image: "https://example.com/og.png"
 
# Optional — Navigation
aliases:
  - Alternate Title
  - Short Name
 
# Optional — Styling
cssclasses:
  - wide-page        # if you define custom classes
 
# Auto-exclude from publish
# publish: false
---

Blog Post Template

Here’s a starter template for actual posts. Copy this structure:

---
publish: true
permalink: blog/your-slug-here
description: "Brief description for SEO and social sharing"
tags:
  - topic1
  - topic2
---
 
# Post Title
 
*Brief italicized lede or subtitle.*
 
---
 
## The Setup
 
Opening section — establish the problem or context.
 
## The Analysis
 
Core content. Use code blocks, tables, callouts as needed.
 
## The Takeaway
 
What should the reader do with this information?
 
---
 
*Published on notch.org. Views are my own.*

That’s Everything

If all the above renders cleanly in your Solarized Dark monospace theme, you’re good to go. The elements tested:

  • Headings (H1-H6)
  • Paragraphs and inline formatting
  • Links (internal, external, unresolved)
  • Lists (ordered, unordered, task, mixed)
  • Blockquotes (single, multi, nested)
  • Callouts (11 types including foldable)
  • Code blocks (6 languages + inline)
  • Tables (simple + wide)
  • Images (external)
  • Horizontal rules
  • Footnotes
  • Math/LaTeX
  • Tags
  • Properties/frontmatter
  • Embeds (syntax reference)

Delete this post once you’re happy with the theme. Or keep it as a style guide.

Footnotes

  1. Source: “The Art of Computer Programming” by Donald Knuth, 1968.

  2. According to the 2025 Verizon Data Breach Investigations Report.