aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.py49
-rw-r--r--content/about/index.org2
-rw-r--r--content/wiki/blogroll.org31
-rw-r--r--content/wiki/hardware.org95
-rw-r--r--content/wiki/internet.org98
-rw-r--r--content/wiki/ios.org139
-rw-r--r--content/wiki/macos.org148
-rw-r--r--content/wiki/services.org38
-rw-r--r--content/wiki/sh.org49
-rw-r--r--publish.el18
-rw-r--r--theme/static/favicon.icobin28345 -> 0 bytes
-rw-r--r--theme/static/styles.css309
-rw-r--r--theme/templates/base.html18
-rw-r--r--theme/templates/blog.html14
-rw-r--r--theme/templates/index.html15
-rw-r--r--theme/templates/wiki.html12
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
--- a/theme/static/favicon.ico
+++ /dev/null
Binary files 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 %}