cmc/cleberg.net

My personal web garden & blog.

clone: git clone https://gitbay.org/cmc/cleberg.net.git

6eb7d43fc257638583e6a4ffefefc47f730595e4

unsigned

author: Christian Cleberg <hello@cleberg.net> · 2025-09-21T01:48:16Z

EXTREME MINIMALISM
 build.py                   |  49 +++----
 content/about/index.org    |   2 +-
 content/wiki/blogroll.org  |  31 -----
 content/wiki/hardware.org  |  95 --------------
 content/wiki/internet.org  |  98 --------------
 content/wiki/ios.org       | 139 --------------------
 content/wiki/macos.org     | 148 ----------------------
 content/wiki/services.org  |  38 ------
 content/wiki/sh.org        |  49 -------
 publish.el                 |  18 ---
 theme/static/favicon.ico   | Bin 28345 -> 0 bytes
 theme/static/styles.css    | 309 +++------------------------------------------
 theme/templates/base.html  |  18 +--
 theme/templates/blog.html  |  14 +-
 theme/templates/index.html |  15 +--
 theme/templates/wiki.html  |  12 --
 16 files changed, 53 insertions(+), 982 deletions(-)

diff --git a/build.py b/build.py
index f73ca81..12950aa 100644
--- a/build.py
+++ b/build.py
@@ -104,7 +104,6 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3):
       #+title:    Post Title
       #+date:     <YYYY-MM-DD Day HH:MM:SS>
       #+slug:     post-slug
-      #+filetags: :tag1:tag2:tag3:
 
     Returns a string containing the section with the three most recent posts,
     formatted like the snippet in the prompt.
@@ -115,7 +114,6 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3):
         "title": re.compile(r"^#\+title:\s*(.+)$", re.IGNORECASE),
         "date": re.compile(r"^#\+date:\s*<(\d{4}-\d{2}-\d{2})"),
         "slug": re.compile(r"^#\+slug:\s*(.+)$", re.IGNORECASE),
-        "filetags": re.compile(r"^#\+filetags:\s*(.+)$", re.IGNORECASE),
         "draft": re.compile(r"^#\+draft:\s*(.+)$", re.IGNORECASE),
     }
 
@@ -123,7 +121,6 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3):
         title = None
         date_str = None
         slug = None
-        tags = []
         is_draft = False
 
         with org_path.open("r", encoding="utf-8") as f:
@@ -147,15 +144,6 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3):
                         slug = m.group(1).strip()
                         continue
 
-                if not tags:
-                    m = header_patterns["filetags"].match(line)
-                    if m:
-                        # filetags are in the form ":tag1:tag2:tag3:"
-                        raw = m.group(1).strip()
-                        # split on ":" and filter out empty strings
-                        tags = [t for t in raw.split(":") if t]
-                        continue
-
                 m = header_patterns["draft"].match(line)
                 if m:
                     draft_value = m.group(1).strip().lower()
@@ -165,7 +153,7 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3):
                     continue
 
                 # Stop scanning once we have all required fields
-                if title and date_str and slug and tags:
+                if title and date_str and slug:
                     break
 
         if is_draft:
@@ -186,7 +174,6 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3):
                     "date_obj": date_obj,
                     "date_full": date_full,
                     "slug": slug,
-                    "tags": tags,
                 }
             )
 
@@ -199,21 +186,15 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3):
     # Build HTML lines
     lines = []
     for post in recent:
-        lines.append('\t<div class="post">')
-        lines.append('\t\t<div class="post-content">')
+        lines.append('\t<div>')
         lines.append(
-            f'\t\t\t<a href="/blog/{post["slug"]}.html">{post["title"]}</a>'
+            f'\t\t<time datetime="{post["date_str"]}">{post["date_full"]}</time>'
         )
-        if post["tags"]:
-            lines.append('\t\t\t<div class="post-tags">')
-            for tag in post["tags"]:
-                lines.append(f'\t\t\t\t<span class="tag">{tag}</span>')
-            lines.append("\t\t\t</div>")
-        lines.append("\t\t</div>")
         lines.append(
-            f'\t\t<time datetime="{post["date_str"]}">{post["date_full"]}</time>'
+            f'\t\t\t<a href="/blog/{post["slug"]}.html">{post["title"]}</a>'
         )
         lines.append("\t</div>")
+        lines.append("\t<br>")
 
     return "\n".join(lines)
 
@@ -246,6 +227,20 @@ def minify_css(src_css, dest_css):
         sys.exit(1)
 
 
+def minify_html(src_html, dest_html):
+    print(f"Minifying HTML: {src_html} → {dest_html}")
+    result = subprocess.run(
+        ["minify", "-o", str(dest_html), str(src_html)],
+        stdout=subprocess.PIPE,
+        stderr=subprocess.PIPE,
+        text=True,
+    )
+    if result.returncode != 0:
+        print("Error during HTML minification:")
+        print(result.stderr, file=sys.stderr)
+        sys.exit(1)
+
+
 def run_emacs_publish(dev_mode=True):
     if dev_mode:
         print("Running Emacs publish script (development)...")
@@ -378,6 +373,9 @@ def main():
         # Update index page with latest posts
         update_index_html(html_snippet)
 
+        # Minify index page
+        minify_html("./.build/index.html", "./.build/index.html")
+
         # Generate sitemap
         generate_sitemap()
 
@@ -399,6 +397,9 @@ def main():
         # Update index page with latest posts
         update_index_html(html_snippet)
 
+        # Minify index page
+        minify_html("./.build/index.html", "./.build/index.html")
+
         # Generate sitemap
         generate_sitemap()
 
diff --git a/content/about/index.org b/content/about/index.org
index 10e178e..81634a8 100644
--- a/content/about/index.org
+++ b/content/about/index.org
@@ -6,7 +6,7 @@ Hey, I'm */~cmc/*.
 I'm a technology audit manager, working on financial statement audits (SOX/MAR),
 SOC 1-3 reports, and other attestations for KPMG.
 
-Read up on my [[https://cv.cleberg.net][CV]] or [[https://cleberg.net/salary/][salary]] for more information.
+Read up on my [[https://cv.cleberg.net][CV]] or [[https://cleberg.net/salary/][salary]] for more information. Otherwise, feel free to read more [[https://cleberg.net/about/][about me]].
 
 In my spare time, I like to:
 
diff --git a/content/wiki/blogroll.org b/content/wiki/blogroll.org
deleted file mode 100644
index 79e6a9a..0000000
--- a/content/wiki/blogroll.org
+++ /dev/null
@@ -1,31 +0,0 @@
-#+title: Blogroll
-#+date: <2024-04-12>
-
-** Aggregators
-- [[https://1mb.club/][1MB Club]]
-- [[https://250kb.club/][250KB Club]]
-- [[https://512kb.club/][512KB Club]]
-- [[https://darktheme.club/][Darktheme Club]]
-- [[https://nocss.club/][No CSS Club]]
-- [[https://no-js.club/][No-JS Club]]
-- [[https://blogroll.org/][Ye Olde Blogroll]]
-
-** Plain Text
-A list of various plaintext websites and lists.
-
-- [[https://greycoder.com/a-list-of-text-only-new-sites/][A List Of Text-Only & Minimalist News Sites]]
-- [[https://harvardlawreview.org/][Harvard Law Review]]
-- [[https://sjmulder.nl/en/textonly.html][Hyperlinked Text]]
-- [[https://medium.com/@letsworkshop/plain-text-web-design-a78ccaf9dbc0][Plain-text web design]]
-- [[https://plaintextworld.com/][Plaintext World]]
-- [[https://github.com/masonarmand/txt2web][txt2web]]
-- [[https://justinjackson.ca/words.html][Words]]
-
-** Webrings
-Instead of listing my personal favorites, I'm just going to drop a link to
-[[https://brisray.com/web/webring-list.htm][brisay's webring list]], which contains 237 webrings for a total of 7078 websites,
-as of 2024-03-15.
-
-** Everything Else
-- [[https://deadsimplesites.com/][Dead Simple Sites]]
-- [[https://planet.emacslife.com/][Planet Emacslife]]
diff --git a/content/wiki/hardware.org b/content/wiki/hardware.org
deleted file mode 100644
index 674e781..0000000
--- a/content/wiki/hardware.org
+++ /dev/null
@@ -1,95 +0,0 @@
-#+title: Hardware
-#+date: <2024-03-16>
-
-** Desktop
-*** macOS
-Probably should have added more RAM but Macbooks are stupid expensive.
-
-| Category | Details         |
-|----------+-----------------|
-| Model    | [[https://www.apple.com/macbook-pro/][Macbook Pro 16”]] |
-| CPU      | Apple M2 Pro    |
-| RAM      | 16GB            |
-| Storage  | 512GB SSD       |
-
-*** Linux
-A beauty.
-
-| Category | Details                                     |
-|----------+---------------------------------------------|
-| Model    | [[https://www.lenovo.com/us/en/p/laptops/thinkpad/thinkpade/thinkpad--e15-gen-4-(15-inch-amd)/len101t0023][Lenovo ThinkPad E15 Gen 4, model 21ED0048US]] |
-| CPU      | AMD Ryzen 5 5625U with Radeon Graphics      |
-| RAM      | 16 GB                                       |
-| Storage  | 256 GB SSD                                  |
-
-** Mobile
-Previously used a Pixel 6 & Pixel 7 with GrapheneOS.
-
-| Category | Details           |
-|----------+-------------------|
-| Model    | [[https://www.apple.com/iphone-15-pro/][iPhone 15 Pro Max]] |
-| CPU      | A17 Pro           |
-| RAM      | 8GB               |
-| Storage  | 256GB             |
-
-** Homelab
-I run a small homelab with a mix of consumer (compute/storage) and enterprise
-(network) hardware. I try to keep the lab energy efficient and quiet as my top
-priorities.
-
-*** IoT
-A collection of mainly smart lights, sensors, and smart appliances. My first
-preference is to disable all networking for new smart devices or simply not
-connect internet in the first place (e.g. I never enable internet on my smart
-TVs). If the smart device requires LAN access, I will connect the device to my
-guest-restricted IoT network. As a last resort, I will set-up the internet but
-monitor the DNS lookups via NextDNS and forcibly block any domains I do not want
-the device to be using. If the device is egregious or shady, I'll just sell it
-and either replace it or live without it.
-
-- Other Appliances (washer, dryer, humidifier, fans, etc.)
-- [[https://about.irobot.com/sitecore/content/north-america/irobot-us/home/roomba/i7-series][Roomba i7+]]
-- [[https://www.philips-hue.com/en-us/p/hue-white-and-color-ambiance-a19---e26-smart-bulb---60-w--3-pack-/046677562786][Philips Hue A19 Bulbs]] x 15
-- [[https://www.philips-hue.com/en-us/p/hue-bundle-play-blk-ext/33001][Philips Hue Play Light Bars]]
-- [[https://www.philips-hue.com/en-us/p/hue-bridge/046677458478][Philips Hue Smart Bridge]] + play light bars and a ton of bulbs
-- [[https://store.ui.com/us/en/collections/unifi-camera-security-special-chime][UP Chime]]
-- [[https://store.ui.com/us/en/collections/unifi-camera-security-special-sensor][UP-Sense]] x 2
-- [[https://store.ui.com/us/en/products/unifi-smart-power][USP-Plug]]
-- [[https://store.ui.com/us/en/collections/unifi-camera-security-compact-wifi-connected][UVC G4 Instant]] x 3
-- [[https://store.ui.com/us/en/collections/unifi-camera-security-special-wifi-doorbell][UVC G4 Doorbell Pro]]
-
-*** Network
-A rack-mounted Dream Machine Pro, connected downstream to an access point, mesh
-extender, and a couple ethernet switches.
-
-- [[https://store.ui.com/us/en/collections/unifi-dream-machine/products/udm-pro][UDM-Pro]]
-- [[https://store.ui.com/us/en/collections/unifi-switching-standard-power-over-ethernet/products/usw-24-poe][USW-24-PoE]]
-- [[https://store.ui.com/us/en/collections/unifi-switching-utility-poe/products/usw-lite-8-poe][USW-Lite-8-PoE]]
-- [[https://store.ui.com/us/en/collections/unifi-wifi-flagship-high-capacity/products/u6-pro][U6-Pro]]
-- [[https://store.ui.com/us/en/collections/unifi-wifi-inwall-outlet-mesh][U6-Extender]]
-- [[https://store.ui.com/us/en/products/u7-pro-wall][U7-Pro-Wall]] x 2
-- [[https://store.ui.com/us/en/collections/unifi-accessory-tech-installations-rackmount/products/uacc-rack-panel-patch-blank-24][USW 24-Port Patch Panel]]
-
-*** Servers
-1. Rack-Mount Server
-
-   I wasn't happy with using low-powered PCs as servers and I knew I did not
-   want the ear-shattering enterprise rack-mounted servers, so I built my own.
-
-   | Category           | Details                                |
-   |--------------------+----------------------------------------|
-   | Case               | Rosewill RSV-R4100U 4U                 |
-   | Motherboard        | NZXT B550                              |
-   | CPU                | AMD Ryzen 7 5700G with Radeon Graphics |
-   | RAM                | 64GB RAM (2x32GB)                      |
-   | Storage (On-board) | Western Digital 500GB M.2 NVME SSD     |
-   | Storage (HDD Bay)  | 48TB HDD                               |
-   | PSU                | Corsair RM850 PSU                      |
-
-2. Other
-
-   These ran as my main servers before I built the rack-mounted server above. I
-   have shut these down indefinitely for now as I have no use for them.
-
-   - Dell OptiPlex
-   - Raspberry Pi 4
diff --git a/content/wiki/internet.org b/content/wiki/internet.org
deleted file mode 100644
index 507b2c0..0000000
--- a/content/wiki/internet.org
+++ /dev/null
@@ -1,98 +0,0 @@
-#+title: Internet
-#+date: <2024-05-02>
-
-** Gemini
-The [[https://geminiprotocol.net/][Gemini Protocol]] is a network of interconnected plaintext documents. If
-you've used [[https://en.wikipedia.org/wiki/Gopher_(protocol)][Gopher]] before, Gemini will feel very familiar.
-
-Instead of web sites, Gemini uses the term "capsules" that can be access via
-=gemini://= links.
-
-In order to browse Gemini capsules, you will need a client capable of supporting
-Gemini. The Gemini Protocol website has a [[https://geminiprotocol.net/software/][Gemini software]] page with a list of
-clients for each platform.
-
-*** Gemtext
-[[https://geminiprotocol.net/docs/cheatsheet.gmi][Gemtext]] is a plaintext syntax, very similar to Markdown.
-
-To quote the Gemini Protocol's documentation:
-
-- Long lines get wrapped by the client to fit the screen.
-- Short lines /don't/ get joined together.
-- Write paragraphs as single long lines.
-- Blank lines are rendered verbatim.
-
-#+begin_src md
-[//]: <> (Headings)
-# Heading
-## Sub-heading
-### Sub-subheading
-
-[//]: <> (Lists)
--   Mercury
--   Gemini
--   Apollo
-
-[//]: <> (Quotes)
-> I contend that text-based websites should not exceed in size the major works of Russian literature.
-
-[//]: <> (Links)
-=> gemini://geminiprotocol.net/docs/cheatsheet.gmi
-=> gemini://geminiprotocol.net/docs/cheatsheet.gmi Gemtext cheatsheet
-
-[//]: <> (Preformatted text)
-Any line starting with three backticks (```) will tell the client to toggle to
-"preformatted mode", which disables the client's logical checks to render links,
-headings, etc. and will render the text as-is.
-#+end_src
-
-** Gopher
-The [[https://en.wikipedia.org/wiki/Gopher_(protocol)][Gopher Protocol]] is a communication protocol, similar to Gemini, that allows
-for browsing of any ones of [[https://datatracker.ietf.org/doc/html/rfc1436#section-3.8][the 14 supported item types]]:
-
-#+begin_src txt
-0   Item is a file
-1   Item is a directory
-2   Item is a CSO phone-book server
-3   Error
-4   Item is a BinHexed Macintosh file.
-5   Item is DOS binary archive of some sort.
-    Client must read until the TCP connection closes.  Beware.
-6   Item is a UNIX uuencoded file.
-7   Item is an Index-Search server.
-8   Item points to a text-based telnet session.
-9   Item is a binary file!
-        Client must read until the TCP connection closes.  Beware.
-+   Item is a redundant server
-T   Item points to a text-based tn3270 session.
-g   Item is a GIF format graphics file.
-I   Item is some kind of image file.  Client decides how to display.
-#+end_src
-
-*** Simplicity is Intentional
-Gopher is [[https://datatracker.ietf.org/doc/html/rfc1436#section-4][meant to be simplistic]].
-
-#+begin_src txt
-As far as possible we desire any new features to be carried as new
-protocols that will be hidden behind new document-types.  The
-internet Gopher philosophy is:
-
-    (a) Intelligence is held by the server.  Clients have the option
-    of being able to access new document types (different, other types
-    of servers) by simply recognizing the document-type character.
-    Further intelligence to be borne by the protocol should be
-    minimized.
-
-    (b) The well-tempered server ought to send "text" (unless a file
-    must be transferred as raw binary).  Should this text include
-    tabs, formfeeds, frufru?  Probably not, but rude servers will
-    probably send them anyway.  Publishers of documents should be
-    given simple tools (filters) that will alert them if there are any
-    funny characters in the documents they wish to publish, and give
-    them the opportunity to strip the questionable characters out; the
-    publisher may well refuse.
-
-    (c) The well-tempered client should do something reasonable with
-    funny characters received in text; filter them out, leave them in,
-    whatever.
-#+end_src
diff --git a/content/wiki/ios.org b/content/wiki/ios.org
deleted file mode 100644
index fefde17..0000000
--- a/content/wiki/ios.org
+++ /dev/null
@@ -1,139 +0,0 @@
-#+title: iOS
-#+date: <2024-05-01>
-
-Related:
-
-- [[https://cleberg.net/wiki/hardware.html][Hardware]]
-
-My primary mobile OS. Currently running iOS 17. This wiki page contains most of
-the apps I have used at one point or another across my different iPhones.
-
-(=*=) = My favorites
-
-** Configuration
-*** Display
-- Light Mode
-  - 08:00 to 16:00
-- Dark Mode
-  - 16:00 to 08:00
-
-*** Focus Modes
-- Personal Focus
-  - 06:00 to 21:00
-  - Allow Notifications From:
-    - Alarms
-    - Calendar
-    - Contacts (1 person)
-    - Messages
-    - Phone
-    - Reminders
-    - Signal
-    - UniFi Protect
-- Sleep Focus
-  - 21:00 to 06:00
-  - Allow Notifications From:
-    - Alarms
-    - Contacts (1 person)
-    - Reminders
-    - Signal
-
-*** Privacy & Security
-I generally follow the [[https://en.wikipedia.org/wiki/Principle_of_least_privilege][principle of least privilege]] by only permitting the bare
-minimum privileges and revoking as soon as they are no longer required.
-
-Here's the baseline I start with:
-
-- Disable:
-  - Analytics & Improvements
-  - Apple Advertising
-  - Apple ID > Sign-In & Security > Two-Factor Authentication
-  - Location Services > System Services > Product Improvement
-  - Tracking > Allow Apps to Request to Track
-  - Safari > Advanced > Privacy Preserving Ad Measurement
-- Enable:
-  - Apple ID > iCloud > Advanced Data Protection
-  - Apple ID > Personal Information > Communication Preferences
-  - App Privacy Report
-  - Location Services only for Camera, Find My, UDisc, & WiFiman (=While Using=)
-  - Safari > Prevent Cross-Site Tracking
-  - Safari > Hide IP Address
-  - Safari > Advanced > Advanced Tracking and Fingerprinting Protection
-
-** Native Apps
-*** Business
-- [[https://apps.apple.com/us/app/element-messenger/id1083446067][Element]] - A cross-platform messenger, based on Matrix
-- [[https://apps.apple.com/us/app/linkedin-network-job-finder/id288429040][LinkedIn]] - One of the only social media apps I use
-
-*** Developer Tools
-- [[https://testflight.apple.com/join/F2vK7xo4][Harbour]] - Easily manage your Portainer service
-- [[https://apps.apple.com/us/app/ish-shell/id1436902243][iSH]] - A local shell with SSH functionality
-
-*** Entertainment
-- [[https://apps.apple.com/us/app/plex-watch-live-tv-and-movies/id383457673][Plex]] - A client for the Plex Media Server
-- [[https://apps.apple.com/us/app/steam-mobile/id495369748][Steam]] - The top gaming marketplace for computers
-
-*** Lifestyle
-- [[https://apps.apple.com/us/app/home/id1110145103][Home]] (=*=) - Apple homekit powered smart home manager
-- [[https://apps.apple.com/us/app/philips-hue/id1055281310][Hue]] - Philips Hue smart home manager
-- [[https://apps.apple.com/us/app/irobot-home/id1012014442][iRobot]] - Manage iRobot Roomba devices
-- [[https://apps.apple.com/us/app/unifi-protect/id1392492235][UniFi Protect]] - View and manage most UniFi Protect cameras and settings
-
-*** Music
-- [[https://apps.apple.com/us/app/apple-music/id1108187390][Apple Music]] (=*=) - Apple's native music streaming app
-- [[https://apps.apple.com/us/app/plexamp/id1500797510][Plexamp]] (=*=) - Top-notch music app for your Plex Media Server, with a neural
-  network that provides excellent radio/shuffle suggestions
-
-*** Navigation
-- [[https://apps.apple.com/us/app/deedum/id1546810946][deedum]] - A Gemini Protocol browser
-
-*** News
-- [[https://apps.apple.com/us/app/netnewswire-rss-reader/id1480640210][NetNewsWire]] - A free and open source RSS reader for Mac, iPhone, and iPad
-
-*** Photo & Video
-- [[https://testflight.apple.com/join/Q6WyyEpS][Aislingeach]] - A quick way to generate and rate images from the Stable Horde
-- [[https://apps.apple.com/us/app/unsplash/id1290631746][Unsplash]] - Premium images, mostly free
-
-*** Productivity
-- [[https://apps.apple.com/us/app/beorg-to-do-list-agenda/id1238649962][beorg]] (=*=) - An org-mode editor, outline, and scheduler with paid extensions
-- [[https://apps.apple.com/us/app/bitwarden-password-manager/id1137397744][Bitwarden]] (=*=) - An open source password manager
-- [[https://apps.apple.com/us/app/bitwarden-authenticator/id6497335175][Bitwarden Authenticator]] (=*=) - Generate 2FA on your device
-- [[https://apps.apple.com/us/app/cryptomator/id1560822163][Cryptomator]] - A cross-platform encryption program
-- [[https://apps.apple.com/us/app/obsidian-connected-notes/id1557175442][Obsidian]] - A nice Markdown-based editor based on a "vault" structure.
-  Offers a paid sync solution and community extensions
-- [[https://apps.apple.com/us/app/strongbox-password-manager/id897283731][Strongbox]] - Keepass password manager for iOS & macOS
-- [[https://apps.apple.com/us/app/unifi/id1057750338][UniFi Network]] - View and manage most UniFi Network settings
-
-*** Safari Extensions
-- [[https://apps.apple.com/us/app/adguard-adblock-privacy/id1047223162][AdGuard]] - Ad blocker
-- [[https://apps.apple.com/us/app/dark-reader-for-safari/id1438243180][Dark Reader]] - Dark mode for all the sites
-- [[https://apps.apple.com/us/app/pipifier/id1234771095][PiPifier]] - Force videos to support PiP
-- [[https://apps.apple.com/us/app/privacy-redirect/id1578144015][Privacy Redirect]] - Redirect select websites to others, usually to
-  privacy-focused alternatives
-
-*** Social Networking
-- [[https://apps.apple.com/us/app/multitab-for-tumblr/id1071533778][MultiTab T]] (=*=) - A gallery-based Tumblr client with some unique features,
-  such as tab history and sync
-- [[https://apps.apple.com/us/app/signal-private-messenger/id874139669][Signal]] (=*=) - A simple, powerful, and secure messenger
-- [[https://testflight.apple.com/join/mpVk1qIy][Three Cheers]] - A client for Tildes.net with a design focus that matches the
-  intent of Tildes
-- [[https://apps.apple.com/us/app/voyager-for-lemmy/id6451429762][Voyager]] - A Lemmy client
-
-*** Sports
-- [[https://apps.apple.com/us/app/apple-sports/id6446788829][Apple Sports]] - Apple's new sports app - lacks notifications and live events
-- [[https://apps.apple.com/us/app/udisc-disc-golf/id1072228953][UDisc]] - Disc golf course maps, score cards, and more
-
-*** Utilities
-- [[https://apps.apple.com/us/app/backblaze/id628638330][Backblaze]] - Quickly view and manage Backblaze b2 cloud storage
-- [[https://apps.apple.com/us/app/mullvad-vpn/id1488466513][Mullvad VPN]] (=*=) - A private VPN service
-- [[https://apps.apple.com/us/app/otp-auth/id659877384][OTP Auth]] (=*=) - A minimalistic OTP app with support for biometrics, custom
-  icons, import/export, and iCloud sync
-- [[https://apps.apple.com/us/app/plex-dash/id1500797677][Plex Dash]] - Stats about your Plex Media Server
-- [[https://apps.apple.com/us/app/safari/id1146562112][Safari]] - iOS default browser
-- [[https://apps.apple.com/us/app/ubiquiti-wifiman/id1385561119][Unifi WiFiman]] - Create visual layouts of WiFi strength and save heat maps to your phone
-
-** Web Apps & Shortcuts
-- [[https://brutalist.report/][Brutalist Report]] - Minimal news aggregator
-- [[https://cyber.report/][_Cyber.Report]] - Cybersecurity news aggregator
-- [[https://news.ycombinator.com/][Hacker News]] - Mostly technical news
-- [[https://nextdns.io/][NextDNS]] - NextDNS statistics dashboard
-- [[https://readspike.com/][Readspike]] - Minimal news aggregator
diff --git a/content/wiki/macos.org b/content/wiki/macos.org
deleted file mode 100644
index 566e68b..0000000
--- a/content/wiki/macos.org
+++ /dev/null
@@ -1,148 +0,0 @@
-#+title: macOS
-#+date: <2024-05-01>
-
-Related:
-
-- [[https://cleberg.net/wiki/hardware/][Hardware]]
-
-My primary OS. Currently running macOS Sonoma 14. This wiki page contains most
-of the apps I have used at one point or another across my different Macbooks.
-
-(=*=) = My favorites
-
-** Configuration
-*** Disable System Services
-- [[https://developer.apple.com/documentation/security/disabling_and_enabling_system_integrity_protection][Disabling and Enabling System Integrity Protection]]
-- Disable Gatekeeper: =sudo spctl --master-disable=
-
-*** Dotfiles
-These are probably out of date, but they give a general idea of how I configure
-my machine.
-
-#+begin_src conf
-# ~/.zshrc
-export PATH="/opt/homebrew/bin:$PATH"
-export PATH="$HOME/.emacs.d/bin:$PATH"
-export EDITOR="/opt/homebrew/bin/emacs -nw"
-ZSH_THEME="bureau"
-plugins=(git zsh-autosuggestions)
-source $ZSH/oh-my-zsh.sh
-#+end_src
-
-#+begin_src conf
-# ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"
-#+end_src
-
-#+begin_src conf
-# ~/.config/skhd/skhdrc
-cmd - return : /Applications/iTerm.app/Contents/MacOS/iTerm2
-cmd + shift - return : /Applications/LibreWolf.app/Contents/MacOS/librewolf
-#+end_src
-
-#+begin_src conf
-# ~/.config/yabai/yabairc
-yabai -m config                                 \
-    mouse_follows_focus          off            \
-    focus_follows_mouse          off            \
-    window_origin_display        default        \
-    window_placement             second_child   \
-    window_zoom_persist          on             \
-    window_shadow                on             \
-    window_animation_duration    0.0            \
-    window_animation_frame_rate  120            \
-    window_opacity_duration      0.0            \
-    active_window_opacity        1.0            \
-    normal_window_opacity        0.90           \
-    window_opacity               off            \
-    insert_feedback_color        0xffd75f5f     \
-    split_ratio                  0.50           \
-    split_type                   auto           \
-    auto_balance                 off            \
-    top_padding                  15             \
-    bottom_padding               15             \
-    left_padding                 15             \
-    right_padding                15             \
-    window_gap                   10             \
-    layout                       bsp            \
-    mouse_modifier               fn             \
-    mouse_action1                move           \
-    mouse_action2                resize         \
-    mouse_drop_action            swap
-echo "yabai configuration loaded.."
-#+end_src
-
-** Software
-*** Browsers
-- [[https://librewolf.net/][Librewolf]] (=*=) - Custom version of Firefox, focused on privacy and security
-  - [[https://bitwarden.com/][Bitwarden]] - An open source password manager
-  - [[https://darkreader.org/][Dark Reader]] - Dark mode for all the websites
-  - [[https://libredirect.github.io/][Libredirect]] - Automatic web redirections
-  - [[https://strongboxsafe.com/][Strongbox]] - Keepass password manager for iOS & macOS
-  - [[https://ublockorigin.com/][uBlock Origin]] - Free, open-source ad content blocker
-- [[https://github.com/ungoogled-software/ungoogled-chromium][Ungoogled Chromium]] - Google Chromium, sans integration with Google
-- [[https://www.gnu.org/software/emacs/manual/html_mono/eww.html][eww]] - Emacs Web Wowser, for TUI browsing
-- [[https://www.torproject.org/][Tor]] - Browse privately
-
-*** Command Line Tools
-- [[https://github.com/mr-karan/doggo][doggo]] - Command-line DNS Client for Humans
-- [[https://github.com/muesli/duf][duf]] - Disk Usage/Free Utility - a better 'df' alternative
-- [[https://github.com/bootandy/dust][dust]] - A more intuitive version of du in rust
-- [[https://github.com/eza-community/eza][eza]] - A modern alternative to ls
-- [[https://github.com/Macchina-CLI/macchina][macchina]] - A system information frontend with an emphasis on performance.
-- [[https://github.com/yt-dlp/yt-dlp][yt-dlp]] - A youtube-dl fork with additional features and fixes
-
-*** Communications
-- [[https://element.io/][Element]] - Matrix's default GUI client
-- [[https://github.com/tulir/gomuks][gomuks]] - A terminal based Matrix client
-- [[https://www.thunderbird.net/][Thunderbird]] (=*=) - An open source email client by Mozilla
-- [[https://signal.org/][Signal]] (=*=) - A simple, powerful, and secure messenger
-
-*** Development
-- [[https://www.docker.com/products/docker-desktop/][Docker Desktop]] - Docker containers for your desktop
-  - [[https://github.com/open-webui/open-webui][open-webui]] - User-friendly WebUI for LLMs
-- [[https://iterm2.com/][iTerm2]] (=*=) - The best terminal for macOS, hands down
-- [[https://podman-desktop.io/][Podman Desktop]] (=*=) - Open source tool for containers and Kubernetes
-- [[https://developer.apple.com/xcode/][Xcode]] - Apple's IDE
-- [[https://en.wikipedia.org/wiki/Z_shell][zsh]] (=*=) - My shell preference due to its plugin and theme community
-  - [[https://github.com/zsh-users/zsh-autosuggestions][zsh-autosuggestions]] - Fish-like autosuggestions for zsh
-  - [[https://github.com/zsh-users/zsh-syntax-highlighting][zsh-syntax-highlighting]] - Fish shell like syntax highlighting for Zsh
-
-*** Editors
-- [[https://github.com/doomemacs/doomemacs][Doom Emacs]] (=*=) - An Emacs framework, great for working in org-mode
-- [[https://obsidian.md/][Obsidian]] - A nice Markdown-based editor based on a "vault" structure. Offers a
-  paid sync solution and community extensions
-- [[https://standardnotes.com/][Standard Notes]] - A simple text editor focused on privacy and security. Offers
-  a paid sync solution and community extensions
-- [[https://vscodium.com/][VSCodium]] - VS Code without proprietary blobs
-
-*** Media
-- [[https://skylum.com/luminar][Luminar]] - Luminar offers top-notch photo editing features- [[https://www.minecraft.net/][Minecraft]] - Block mining simulator
-- [[https://netnewswire.com/][NetNewsWire]] - A free and open source RSS reader for Mac, iPhone, and iPad
-- [[https://www.plex.tv/][Plex]] (=*=) - Desktop client for the Plex Media Server
-- [[https://store.steampowered.com/][Steam]] - The top gaming marketplace for computers
-- [[https://transmissionbt.com/][Transmission]] (=*=) - A Fast, Easy and Free Bittorrent Client
-- [[https://www.videolan.org/vlc/][VLC]] - A free and open source cross-platform multimedia player
-
-*** Package Management
-- [[https://brew.sh/][Homebrew]] (=*=) - The Missing Package Manager for macOS (or Linux)
-- [[https://www.macports.org/][MacPorts]] - A system to compile, install, and manage open source software
-
-*** Utilities
-- [[https://betterdisplay.pro/][BetterDisplay]] - Allows you to tweak a ton of features of built-in and external
-  screens, such as scaling, configuration overrides, and color/brightness
-  upscaling
-- [[https://bitwarden.com/][Bitwarden]] - An open source password manager
-- [[https://icemenubar.app/][Ice]] (=*=)- A powerful menu bar management tool
-- [[https://obdev.at/products/littlesnitch/index.html][LittleSnitch]] - Shows all network connections on your Macbook, including system
-  and privileged services
-- [[https://obdev.at/products/microsnitch/index.html][MicroSnitch]] - Camera & microphone monitoring and alterting service
-- [[https://mullvad.net/][Mullvad]] (=*=) - A private VPN service
-- [[https://ollama.com/][Ollama]] - Run Llama 2, Code Llama, and other models locally on your machine
-  - [[https://github.com/kghandour/Ollama-SwiftUI][Ollama Swift]] - User Interface made for Ollama.ai using Swift
-- [[https://orbstack.dev/][OrbStack]] - A fast and convenient GUI to manage Docker contains and Linux VMs
-- [[https://www.raycast.com/][Raycast]] - A collection of tools and shortcuts, an alternative to Spotlight
-- [[https://github.com/koekeishiya/skhd][skhd]] (=*=) - Simple hotkey daemon for macOS
-- [[https://strongboxsafe.com/][Strongbox]] - Keepass password manager for iOS & macOS
-- [[https://syncthing.net/][Syncthing]] (=*=) - Continuous file synchronization
-- [[https://www.bresink.com/osx/TinkerTool.html][TinkerTool]] - Unlock hidden configuration options for macOS
-- [[https://github.com/koekeishiya/yabai][yabai]] (=*=) - Automatic window tiling
diff --git a/content/wiki/services.org b/content/wiki/services.org
deleted file mode 100644
index 4484559..0000000
--- a/content/wiki/services.org
+++ /dev/null
@@ -1,38 +0,0 @@
-#+title: Services & Hosting
-#+date: <2025-08-22>
-
-* Domain Registration
-
-- [[https://njal.la][Njalla]]: Migrated all domains to Njalla. Some spare domains left on Cloudflare
-  until I figure out if someone wants them or if I can just delete them
-  outright.
-
-* DNS
-
-- [[https://njal.la][Njalla]]: I am using their name servers and DNS for my domain traffic.
-- [[https://mullvad.net][Mullvad]]: Since I use Mullvad's VPN on most of my devices, I am using their DNS
-  with occasional content blockers enabled.
-- [[https://nextdns.io][NextDNS]]: Lastly, I enforce NextDNS's DNS at the router level on my home
-  network so that any device without a VPN is still slightly protected and not
-  using my ISP's DNS.
-
-* Hosting
-
-** Web
-
-- N/A: I currently host all of my services on my server at home via Cox's
-  residential fiber network. Since I have accounts on AWS, Azure, GCP, & IBM for
-  my job, I use these as temporary backup solutions if I'm away from home and a
-  service goes down that I need to use.
-
-** Email
-
-- [[https://migadu.com/][Migadu]]: I've used a few different email providers over the last few years, but
-  keep coming back to Migadu due to their drop-dead simplicity and proven
-  reliability.
-
-** Source Code
-
-- [[https://sourcehut.org/][Sourcehut]]: I flip back and forth between Sourcehut and GitHub, but I'm
-  currently using Sourcehut. I love the minimal form factor and the company's
-  mission, but tend to use GitHub to explore other's code.
diff --git a/content/wiki/sh.org b/content/wiki/sh.org
deleted file mode 100644
index a186d17..0000000
--- a/content/wiki/sh.org
+++ /dev/null
@@ -1,49 +0,0 @@
-#+title: Shell Commands & Scripts
-#+date: <2025-03-19>
-
-* File Loop
-
-#+begin_src shell
-# All files in current directory
-for file in *; do echo "${file}"; done
-
-# Files only
-for file in *; do if [ -f "$file" ]; then echo "$file"; fi; done
-
-# Directories only
-for file in *; do if [ -d "$file" ]; then echo "$file"; fi; done
-#+end_src
-
-* Exifdata
-
-#+begin_src shell
-sudo exiftool -r -all= -ext jpg -ext png .
-#+end_src
-
-* Optipng
-
-#+begin_src shell
-optipng -o7 image.png
-#+end_src
-
-* Nginx + Goaccess
-
-#+begin_src shell
-zcat /var/log/nginx/access.log.*.gz | goaccess /var/log/nginx/access.log -
-#+end_src
-
-* Distro Information
-
-#+begin_src shell
-echo /etc/*_ver* /etc/*-rel*; cat /etc/*_ver* /etc/*-rel*
-#+end_src
-
-* sed
-
-#+begin_src shell
-# Replace text within file
-sed -i '' 's/SEARCH_TEXT/REPLACEMENT_TEXT/g' file.txt
-
-# Delete empty lines
-sed '/^\s*$/d'
-#+end_src
diff --git a/publish.el b/publish.el
index f06c12f..ff51002 100644
--- a/publish.el
+++ b/publish.el
@@ -44,23 +44,6 @@
  :output ".build/blog/index.html"
  :url "/blog/")
 
-;; Wiki post route
-(weblorg-route
- :name "wiki"
- :input-pattern "content/wiki/*.org"
- :template "post.html"
- :output ".build/wiki/{{ slug }}.html"
- :url "/wiki/{{ slug }}.html")
-
-;; Wiki index page route
-(weblorg-route
- :name "wiki-index"
- :input-pattern "content/wiki/*.org"
- :input-aggregate #'weblorg-input-aggregate-all
- :template "wiki.html"
- :output ".build/wiki/index.html"
- :url "/wiki/")
-
 ;; Page post route
 (weblorg-route
  :name "pages"
@@ -101,7 +84,6 @@
  :output ".build/about/{{ slug }}.html"
  :url "/about/{{ slug }}.html")
 
-
 ;; RSS feed route
 (weblorg-route
  :name "rss"
diff --git a/theme/static/favicon.ico b/theme/static/favicon.ico
deleted file mode 100644
index 81f54ad..0000000
Binary files a/theme/static/favicon.ico and /dev/null differ
diff --git a/theme/static/styles.css b/theme/static/styles.css
index 1cb4fc6..6ce8031 100644
--- a/theme/static/styles.css
+++ b/theme/static/styles.css
@@ -1,338 +1,61 @@
-/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
-html{line-height:1.15;-webkit-text-size-adjust:100%}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type="button"],[type="reset"],[type="submit"],button{-webkit-appearance:button}[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}template{display:none}[hidden]{display:none}
-
-/* CUSTOM CSS */
-:root {
-    --bg: #EDEDE7;
-    --bg-bright: #E8D3BE;
-    --fg: #201E1D;
-    --link: #810208;
-    --code: #810208;
-    --border: #E8D3BE;
-}
-
-@media (prefers-reduced-motion: no-preference) {
-    :root {
-        scroll-behavior: smooth;
-    }
-}
-
 body {
-    background-color: var(--bg);
-    color: var(--fg);
-    font-family: Iowan Old Style, Apple Garamond, Baskerville, Times New Roman, Droid Serif, Times, Source Serif Pro, serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
-    font-size: 1rem;
-    line-height: 1.5;
-    max-width: 50em;
-    margin: 0 auto;
-    padding: 0 clamp(1rem, 5vw, 3rem);
-}
-
-@media only screen and (min-width: 768px) {
-    body {
-        font-size: 1.2rem;
-    }
-}
-
-@media (min-width: 768px) {
-    body {
-        padding: 0 2rem;
-    }
-}
-
-.site-nav,
-footer {
-    border-color: var(--fg);
-}
-
-footer {
-    padding-top: 1rem;
-    margin: 1rem 0;
-}
-
-footer p {
-    margin: 0;
+  max-width: 50em;
+  margin: 1.5rem;
 }
 
-ul {
-    list-style-type: "-    ";
-}
-
-.site-nav ul {
+nav ul {
     list-style-type: none;
     display: flex;
-    align-items: center;
     padding: 0;
 }
 
-.site-nav ul li {
+nav ul li {
     margin-right: 0.5rem;
 }
 
-h1,
-h2,
-h3,
-h4 {
-    color: var(--fg);
-}
-
-h1 {
-    font-size: 1.75rem;
-    font-weight: bold;
-    margin-top: 1rem;
-    margin-bottom: 0.75rem;
-}
-
-h2 {
-    font-size: 1.5rem;
-    margin-top: 1rem;
-    margin-bottom: 0.5rem;
-}
-
-h3 {
-    font-size: 1.25rem;
-    margin-top: 1rem;
-    margin-bottom: 0.25rem;
-}
-
-a,
-a:visited {
-    color: var(--link);
-    text-decoration: underline;
-    text-decoration-skip-ink: auto;
-}
-
-a:focus-visible {
-    outline: 2px solid var(--link);
-    outline-offset: 2px;
-}
-
-a:hover {
-    background: var(--link);
-    color: var(--bg);
-    text-decoration: none;
-}
-
 img {
     border-style: none;
     width: 100%;
 }
 
 table {
-    border: 1px solid var(--border);
+    border: 1px solid #111;
     border-collapse: collapse;
-    color: var(--fg);
-    border-color: var(--bg-bright);
-    font-size: inherit;
     width: 100%;
 }
 
-thead,
-th,
-tr,
-td {
-    border: 1px solid var(--border);
-    padding: 0.25rem;
-}
-
 pre,
 pre>code,
 code {
-    font-family:
-        Menlo,
-        Consolas,
-        Monaco,
-        Liberation Mono,
-        Lucida Console,
-        monospace;
     font-size: 0.9rem;
 }
 
 pre {
-    background-color: var(--bg-bright) !important;
+    border: 1px solid #111;
     margin: 0.5rem 0;
     padding: 0.5rem;
     overflow-x: auto;
 }
 
-:not(pre)>code {
-    color: var(--code);
-}
-
-aside {
-    background-color: var(--bg-bright);
-    padding: 1rem;
-}
-
-blockquote {
-    background-color: var(--bg-bright);
-    border-left: 5px solid var(--link);
-    margin: 1rem 0;
-    padding: 0.5rem 1rem;
-}
-
-blockquote p {
-    margin: 0;
-}
-
-.post,
-.wiki-post {
-    display: flex;
-    justify-content: space-between;
-}
-
-.post time {
-    flex-shrink: 0;
-    font-style: italic;
-    margin-right: 0.5rem;
-    opacity: 0.8;
-}
-
-.wiki-post {
-    justify-content: space-between;
-}
-
-.wiki-post:first-of-type {
-    border-bottom: 1px dotted var(--fg);
-    margin-bottom: 1rem;
-}
-
-.wiki-post p {
-    margin: 0;
-}
-
-.post-metadata {
-    border: 1px dotted var(--border);
-    padding: 1rem;
-}
-
-.post-metadata h1 {
-    margin: 0;
-}
-
-.post-metadata p {
-    margin: 0;
-}
-
-.post-metadata time {
-    font-style: italic;
-}
-
-details {
+time {
     display: block;
-    margin-top: 1rem;
-}
-
-summary {
-    display: list-item;
-    font-weight: bold;
-}
-
-span.tag::before {
-    content: "#";
-}
-
-.footnote-definition {
-    display: flex;
-    justify-content: flex-start;
-    align-items: top;
-    margin: 1rem 0;
-}
-
-.footnote-definition sup {
-    font-size: inherit;
-    top: 0;
-    line-height: inherit;
-    padding-right: 0.5rem;
 }
 
-.footnote-definition sup::after {
-    content: ".";
-}
-
-.footnote-definition p {
-    display: inline-block;
-    margin: 0;
-}
-
-.hidden {
-    display: none;
-}
-
-.post {
-    display: flex;
-    flex-direction: row;
-    margin-bottom: 1rem;
-}
-
-.post-content {
-    display: flex;
-    flex-direction: column;
-}
-
-.post-tags {
-    font-size: 1rem;
-    margin-top: 0.1rem;
-}
-
-.tag {
-    margin-right: 0.3rem;
-    font-style: normal;
-    opacity: 0.5;
-}
-
-.tag::before {
-    content: "#";
-}
-
-.skip-link {
-    position: absolute;
-    left: -999px;
-    top: auto;
-    width: 1px;
-    height: 1px;
-    overflow: hidden;
-}
-
-.skip-link:focus {
-    left: 1rem;
-    top: 1rem;
-    width: auto;
-    height: auto;
-    background: var(--bg-bright);
-    color: var(--fg);
-    padding: .5rem;
-    border: 1px solid var(--fg);
+:not(pre)>code {
+    color: #f00;
 }
 
 @media (prefers-color-scheme: dark) {
-    :root {
-        --bg: #201E1D;
-        --bg-bright: #2F2F2D;
-        --fg: #EDEDE7;
-        --link: #D9C2A6;
-        --code: #D9C2A6;
-        --border: #2F2F2D;
-    }
-}
-
-@media print {
     body {
-        background: #fff;
-        color: #000;
-        font-size: 12pt;
-        padding: 0;
-        max-width: none;
+        background-color: #222;
+        color: #eee;
     }
-
-    .site-nav,
-    footer,
-    aside {
-        display: none;
+    
+    a {
+        color: #add8e6;
     }
 
-    a::after {
-        content: " (" attr(href) ")";
-        font-size: 90%;
+    pre {
+        border-color: #eee;
     }
 }
\ No newline at end of file
diff --git a/theme/templates/base.html b/theme/templates/base.html
index 143f874..4c06aea 100644
--- a/theme/templates/base.html
+++ b/theme/templates/base.html
@@ -12,29 +12,25 @@
     {% if site_description is defined %}<meta name="description" content="{{ site_description }}" >{% endif %}
     {% if site_keywords is defined %}<meta name="keywords" content="{{ site_keywords }}" >{% endif %}
     <link rel="stylesheet" href="{{ url_for("static", file="styles.min.css") }}" type="text/css">
-    <link rel="icon" type="image/x-icon" href="{{ url_for("static", file="favicon.ico") }}">
+    <link rel="icon" type="image/x-icon" href="data:,">
     {% block meta %}{% endblock %}
     {% endblock %}
 </head>
 <body>
-    <a href="#main" class="skip-link">Skip to content</a>
-	<nav class="site-nav" aria-label="site-nav" role="navigation">
+	<nav aria-label="site-nav" role="navigation">
 		<ul>
 			<li><a href="/">Home</a></li>
             <li><a href="/about/">About</a></li>
 			<li><a href="/blog/">Blog</a></li>
 			<li><a href="/services/">Services</a></li>
-			<li><a href="/wiki/">Wiki</a></li>
 		</ul>
 	</nav>
-    <main id="main">{% block main %}{% endblock %}</main>
+    <main>{% block main %}{% endblock %}</main>
 	<footer>
-		<p>
-            <a href="https://stats.uptimerobot.com/OwOWs7HU0z">Status</a> &middot;
-			<a href="https://git.cleberg.net/cleberg.net.git" target="_blank"
-			rel="noopener">Source</a> &middot;
-			<a href="/feed.xml">RSS</a>
-        </p>
+        <a href="https://stats.uptimerobot.com/OwOWs7HU0z">Status</a> &middot;
+        <a href="https://git.cleberg.net/cleberg.net.git" target="_blank"
+        rel="noopener">Source</a> &middot;
+        <a href="/feed.xml">RSS</a>
 	</footer>
 </body>
 </html>
diff --git a/theme/templates/blog.html b/theme/templates/blog.html
index 7e15d86..b42959d 100644
--- a/theme/templates/blog.html
+++ b/theme/templates/blog.html
@@ -10,19 +10,11 @@ main %}
 </p>
 <br>
 {% for post in posts %}
-<div class="post">
-	<div class="post-content">
-		<a href='{{ url_for("blog", slug=post.slug) }}'>{{ post.title }}</a>
-		{% if post.filetags %}
-			<div class="post-tags">
-			{% for tag in post.filetags %}
-				<span class="tag">{{ tag }}</span>
-			{% endfor %}
-			</div>
-		{% endif %}
-	</div>
+<div>
 	<time datetime='{{ post.date | strftime("%Y-%m-%d") }}'
 		>{{ post.date|strftime("%B %d, %Y") }}</time
 	>
+	<a href='{{ url_for("blog", slug=post.slug) }}'>{{ post.title }}</a>
 </div>
+<br>
 {% endfor %} {% endblock %}
diff --git a/theme/templates/index.html b/theme/templates/index.html
index 0ad4d5a..c540e09 100644
--- a/theme/templates/index.html
+++ b/theme/templates/index.html
@@ -9,21 +9,8 @@
 	</blockquote>
 </section>
 <section>
-	<h2>Blog Posts</h2>
+	<h2>Recent Posts</h2>
 	<!-- BEGIN_POSTS -->
 	<!-- END_POSTS -->
-	<a href="/blog/">All Posts →</a>
-</section>
-
-<section>
-	<h2>Everything Else</h2>
-	<ul>			
-		<li><a href="/about/">About</a></li>
-		<li><a href="https://cv.cleberg.net">Curriculum Vitae</a></li>
-		<li><a href="/now/">Now</a></li>
-		<li><a href="/salary/">Salary</a></li>
-		<li><a href="/services/">Services</a></li>
-		<li><a href="/wiki/">Wiki</a></li>
-	</ul>
 </section>
 {% endblock %}
diff --git a/theme/templates/wiki.html b/theme/templates/wiki.html
deleted file mode 100644
index 3bfc10e..0000000
--- a/theme/templates/wiki.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "base.html" %} {% block subtitle %}Wiki | {% endblock %} {% block
-main %}
-<h1>Wiki</h1>
-<p>Use <code>Ctrl + F</code> to search wiki pages for keywords.</p>
-{% for post in posts %}
-<div class="post">
-	<a href='{{ url_for("wiki", slug=post.slug) }}'>{{ post.title }}</a>
-	<time datetime='{{ post.date | strftime("%Y-%m-%d") }}'
-		>{{ post.date|strftime("%B %d, %Y") }}</time
-	>
-</div>
-{% endfor %} {% endblock %}