# 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:

*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.*