# 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 --- ## Links - **Internal link:** [[Theme Test Post|Self-referencing link]] - **External link:** [Obsidian Publish Docs](https://help.obsidian.md/publish) - **Bare URL:** https://notch.org - **Unresolved link:** [[Future Post That Doesn't Exist Yet]] --- ## 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 - [x] Set up Obsidian Publish - [x] 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 > [!note] A Note > Notes are for general information that supplements the main content. Good for "by the way" moments. > [!tip] Pro Tip > Use callouts sparingly — they lose impact if overused. Reserve them for genuinely useful information. > [!warning] Security Warning > Never store API keys in client-side code or public repositories. Use environment variables or a secrets manager. > [!danger] Critical > This action is irreversible. Deleted data cannot be recovered. > [!info] 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. > [!abstract] TL;DR > Solarized Dark + IBM Plex Mono = readable technical blog that doesn't burn your retinas. > [!example] Example Configuration > ```yaml > server: > host: 0.0.0.0 > port: 8080 > tls: true > ``` > [!question]- FAQ: Can I use custom JavaScript? > Yes, but only with a custom domain. Place `publish.js` in your vault root. > [!success] Deployment Complete > Your site is live at `notch.org`. DNS propagation may take up to 48 hours. > [!failure] Build Failed > Check your `publish.css` for syntax errors. Invalid CSS will be silently ignored. > [!bug] 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 ```python # 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 ``` ```javascript // 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')); ``` ```bash # 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" ``` ```yaml # 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" ``` ```sql -- 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 | Tool | Category | License | |------|----------|---------| | Obsidian | PKM | Commercial | | Hugo | Static Site | Apache 2.0 | | Ghost | CMS | MIT | | Notion | Productivity | Commercial | ### Wider Table | Threat Type | Severity | MITRE ATT&CK | Detection Method | Response Time | |-------------|----------|---------------|-------------------|---------------| | Ransomware | Critical | T1486 | EDR + SIEM correlation | < 15 min | | Phishing | High | T1566 | Email gateway + user report | < 1 hour | | Insider Threat | High | T1078 | UEBA + DLP | < 4 hours | | Supply Chain | Critical | T1195 | SBOM analysis + monitoring | < 24 hours | | Port Scanning | Low | T1046 | IDS/IPS | Automated | --- ## Images Images display with a subtle border and rounded corners. Test with an external image: ![A placeholder test image](https://images.unsplash.com/photo-1518770660439-4636190af475?w=800&h=400&fit=crop) *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 source[^1]. And here's another reference[^2]. [^1]: Source: "The Art of Computer Programming" by Donald Knuth, 1968. [^2]: According to the 2025 Verizon Data Breach Investigations Report. --- ## Math (LaTeX) Inline math: The time complexity is $O(n \log n)$ for the average case. Block math: $ H(X) = -\sum_{i=1}^{n} P(x_i) \log_2 P(x_i) $ $ \text{Risk Score} = \frac{\sum_{i=1}^{n} w_i \cdot c_i}{\sum_{i=1}^{n} w_i} $ --- ## 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: ```yaml --- # 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: ```markdown --- 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: - [x] Headings (H1-H6) - [x] Paragraphs and inline formatting - [x] Links (internal, external, unresolved) - [x] Lists (ordered, unordered, task, mixed) - [x] Blockquotes (single, multi, nested) - [x] Callouts (11 types including foldable) - [x] Code blocks (6 languages + inline) - [x] Tables (simple + wide) - [x] Images (external) - [x] Horizontal rules - [x] Footnotes - [x] Math/LaTeX - [x] Tags - [x] Properties/frontmatter - [x] Embeds (syntax reference) *Delete this post once you're happy with the theme. Or keep it as a style guide.*