diff options
| author | Christian Cleberg <[email protected]> | 2026-03-13 15:56:35 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-03-13 15:56:35 -0500 |
| commit | 11a5ca2792cd0debb6b8f510ffd716e6f734dbd6 (patch) | |
| tree | 945f53748136471c1eb23ddd98d567619fb1c788 | |
| parent | c7314b1052152748585c0ea5dc07325a26c2374e (diff) | |
| download | cleberg.net-11a5ca2792cd0debb6b8f510ffd716e6f734dbd6.tar.gz cleberg.net-11a5ca2792cd0debb6b8f510ffd716e6f734dbd6.tar.bz2 cleberg.net-11a5ca2792cd0debb6b8f510ffd716e6f734dbd6.zip | |
fix *.org headers and revert to minimal site theme
180 files changed, 927 insertions, 1729 deletions
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..4b822e5 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [ccleberg] diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..6483b1d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: "uv" + directory: "/" + schedule: + interval: "weekly" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 0000000..f857dda --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,46 @@ +name: "CodeQL Advanced" + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + analyze: + name: Analyze (${{ matrix.language }}) + runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }} + permissions: + security-events: write + packages: read + actions: read + contents: read + + strategy: + fail-fast: false + matrix: + include: + - language: python + build-mode: none + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Initialize CodeQL + uses: github/codeql-action/init@v4 + with: + languages: ${{ matrix.language }} + build-mode: ${{ matrix.build-mode }} + - if: matrix.build-mode == 'manual' + shell: bash + run: | + echo 'If you are using a "manual" build mode for one or more of the' \ + 'languages you are analyzing, replace this with the commands to build' \ + 'your code, for example:' + echo ' make bootstrap' + echo ' make release' + exit 1 + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v4 + with: + category: "/language:${{matrix.language}}" diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..310b432 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,68 @@ +name: Build and Deploy + +on: + push: + branches: + - main + paths-ignore: + - '.github/**' + - 'screenshots/**' + - 'utils/**' + - 'LICENSE' + - 'README.org' + +jobs: + build-job: + runs-on: ubuntu-latest + container: + image: ghcr.io/ccleberg/cleberg.net:main + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Run Build + env: + ENV: "prod" + BUILD: "true" + DEPLOY: "false" + run: | + echo "Environment is ready. Running build..." + uv run build.py + + - name: Upload Build Artifacts + uses: actions/upload-artifact@v4 + with: + name: build-output + path: ${{ github.workspace }}/.build/ + include-hidden-files: true + + deploy-job: + runs-on: ubuntu-latest + needs: build-job + environment: production + container: + image: ghcr.io/ccleberg/cleberg.net:main + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Download Build Artifacts + uses: actions/download-artifact@v4 + with: + name: build-output + path: ${{ github.workspace }}/.build/ + + - name: Setup SSH and Deploy + env: + SERVER_IP: ${{ secrets.SERVER_IP }} + SERVER_USER: ${{ secrets.SERVER_USER }} + SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }} + run: | + eval $(ssh-agent -s) + echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - + rsync -avz --delete \ + -e "ssh -p ${{ secrets.SSH_PORT }} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" \ + .build/ \ + $SERVER_USER@$SERVER_IP:/var/www/cleberg.net/ diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 0000000..b3d0455 --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,41 @@ +name: Build and Push Docker Image + +on: + push: + branches: [ "main" ] + paths: + - 'Dockerfile' + - 'requirements.txt' + - '.github/workflows/docker-build.yml' + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Log in to GHCR + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml new file mode 100644 index 0000000..1c0fbea --- /dev/null +++ b/.github/workflows/ruff.yml @@ -0,0 +1,42 @@ +name: Ruff + +on: + push: + branches: [ "main" ] + paths: + - '**.py' + pull_request: + branches: [ "main" ] + paths: + - '**.py' + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.x"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + ref: ${{ github.event.pull_request.head.ref }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pandas dash plotly.express + - name: Install Ruff + uses: astral-sh/[email protected] + - name: Ruff Actions + run: | + ruff check --fix + ruff format + - name: Add and Commit + uses: EndBug/add-and-commit@v9 + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + default_author: github_actions + pathspec_error_handling: ignore diff --git a/BRAND.md b/BRAND.md deleted file mode 100644 index b0d3f9f..0000000 --- a/BRAND.md +++ /dev/null @@ -1,98 +0,0 @@ -# Brand Reference — cleberg.net - -Design decisions, usage rules, and porting checklist for this site and any -future sites. - ---- - -## Color - -All tokens live in `theme/static/tokens.css`. Import it before any other -stylesheet. - -### Palette - -| Token | Light | Dark | Role | -|----------------|-------------|-------------|-------------------------------------------| -| `--bg` | `#F6F4F0` | `#161412` | Page background | -| `--bg-soft` | `#EDEAE4` | `#1F1C1A` | Subtle surfaces (code blocks, inputs) | -| `--fg` | `#111111` | `#F0EDE8` | Primary text, hard borders, table headers | -| `--fg-soft` | `#555550` | `#888580` | Secondary text, metadata | -| `--accent` | `#c0392b` | `#ee6f5c` | Interactive elements only (see below) | -| `--salmon` | `#ee6f5c` | `#ee6f5c` | Decorative only (see below) | -| `--border` | `#111111` | `#2C2825` | Hard borders (nav, tables) | -| `--border-soft`| `#DDDAD4` | `#2C2825` | Dashed or subtle dividers | -| `--code-bg` | `#E8E4DE` | `#0F0D0C` | Code blocks, blockquotes | -| `--meta` | `#555550` | `#888580` | Timestamps, labels, footnote numbers | - -### Usage Rules - -**`--accent` is for interactive elements only:** links, `h2` left border, -footnote numbers, focus indicators. It is text-safe (WCAG AA: 4.6:1 on `--bg` in -light mode; ~4.5:1 on `--bg` in dark mode). - -**`--salmon` is decorative only.** Never use it for body text on a light -background — it fails WCAG AA there. In dark mode, `--accent` and `--salmon` -resolve to the same value (`#ee6f5c`), which is intentional. - ---- - -## Typography - -- **Font stack:** `--font-mono` (ui-monospace, Cascadia Code, Source Code Pro, - Menlo, Consolas, monospace) -- **Headings:** weight 900, uppercase, `line-height: 1.1` -- **`h2` accent bar:** 10px left border in `--accent` -- **Body:** `1rem`, `line-height: 1.6` -- **Meta/labels:** `0.8–0.85rem`, uppercase, `--meta` color -- **Date format:** `YYYY-MM-DD` everywhere, no exceptions - ---- - -## Logo - -Files live in `~/Documents/brand/logo/`. - -| Variant | Use case | -|-------------------------|--------------------------------------------------| -| `koi_light.svg/png` | Full logo on light backgrounds | -| `koi_dark.svg/png` | Full logo on dark backgrounds | -| `koi_light_minimal.svg` | Favicon, nav, small UI contexts on light | -| `koi_dark_minimal.svg` | Favicon, nav, small UI contexts on dark | - -**Rule:** Use the minimal variant for anything under ~64px or in navigation -contexts. Use the full variant for headers, OG images, or anywhere it has room -to breathe. - ---- - -## Signature Patterns - -These are the things that make the site look like itself. Port all of them to -any new site. - -1. **Grayscale images with color on hover** — `img { filter: grayscale(1) } - img:hover { filter: grayscale(0) }`. Apply to all content images by default. -2. **Blockquote as raw org-mode markup** — `#+begin_quote` / `#+end_quote` - pseudo-elements. Extend the "visible markup" aesthetic to other block - elements where appropriate. -3. **Nav: uppercase, weight 900, invert on hover** — `background: var(--fg); - color: var(--bg)` on hover. No underlines in nav. -4. **Links: underline offset** — `text-underline-offset: 3px`, invert on hover - (same as nav pattern). -5. **Hard borders on tables** — `3px solid var(--fg)` outer border, `1px solid var(--fg)` internal. Table headers use `background: var(--fg); color: var(--bg)`. - ---- - -## Porting Checklist (New Site) - -- [ ] Import `tokens.css` (or copy variables and update `tokens.css` as the - source) -- [ ] Apply monospace font stack -- [ ] Apply grayscale image treatment -- [ ] Use minimal koi as favicon -- [ ] Use `YYYY-MM-DD` date format -- [ ] Confirm `--accent` WCAG contrast on new background colors if palette is - adjusted -- [ ] Build or adapt OG/social card template using koi + palette + monospace - type @@ -27,12 +27,6 @@ The publishing system depends on: - The weblorg package, available at [[https://github.com/emacs-love/weblorg][emacs-love/weblorg]], which provides advanced Org publishing functionality and theming support. -** Screenshots - -| Light Mode | Dark Mode | -|-------------------------+------------------------| -| [[./screenshots/light.png]] | [[./screenshots/dark.png]] | - ** Configuration You can customize site settings can within the ~publish.el~ file. This file @@ -185,13 +185,9 @@ def get_recent_posts_html(content_dir="./content/blog", num_posts=3): lines = [] current_year = None for post in recent: - year = post["date_obj"].year - if year != current_year: - current_year = year - lines.append(f'\t<li class="post-list-year">{year}</li>') lines.append('\t<li class="post-list-item">') - lines.append(f'\t\t<a href="/blog/{post["slug"]}.html">{post["title"]}</a>') lines.append(f'\t\t<time datetime="{post["date_str"]}">{post["date_full"]}</time>') + lines.append(f'\t\t<a href="/blog/{post["slug"]}.html">{post["title"]}</a>') lines.append("\t</li>") return "\n".join(lines) @@ -454,58 +450,47 @@ def generate_tags_page(content_dir="./content/blog", build_dir="./.build"): posts = tag_map[tag] items = "\n".join( f'<li class="post-list-item">' - f'<a href="/blog/{p["slug"]}.html">{p["title"]}</a>' f'<time datetime="{p["date_str"]}">{p["date_str"]}</time>' + f'<a href="/blog/{p["slug"]}.html">{p["title"]}</a>' f'</li>' for p in posts ) sections.append(f'<h2 id="{tag}">{tag}</h2>\n<ul class="post-list">\n{items}\n</ul>') html = f"""<!doctype html> -<html lang="en-us"> +<html lang=en-us> <head> -<meta charset="utf-8"> -<title>tags - seijaku</title> -<meta name="viewport" content="width=device-width, initial-scale=1"> -<link rel="stylesheet" href="/styles.min.css" type="text/css"> -<link rel="icon" href="/favicon.svg" type="image/svg+xml"> +<meta charset=utf-8> +<title>cleberg.net</title> +<meta name=viewport content="width=device-width,initial-scale=1"> +<meta name=author content="Christian Cleberg <[email protected]>"> +<meta name=description content="Stillness amidst the chaos."> +<link rel=stylesheet href=http://localhost:8000/styles.min.css> +<link rel=icon href=data:,> </head> <body> -<a href="#main-content" class="skip-link">Skip to content</a> -<header class="masthead"> -<a href="/" class="masthead-title">seijaku</a> -<p class="masthead-subtitle"><i>stillness amidst the chaos</i></p> +<a href=#main-content class=skip-link>Skip to content</a> <nav aria-label="Site Navigation"> <ul> -<li><a href="/blog/">Blog</a></li> -<li><a href="/tags/">Tags</a></li> -<li><a href="/guides/index.html">Guides</a></li> -<li><a href="/apps/">Apps</a></li> -<li><a href="/garden/">Garden</a></li> -<li><a href="/salary/">Salary</a></li> +<li><a href=/>Home</a> +<li><a href=/apps/>Apps</a> +<li><a href=/blog/>Blog</a> +<li><a href=/garden/>Garden</a> +<li><a href=/guides/>Guides</a> +<li><a href=/salary/>Salary</a> +<li><a href=/tags/>Tags</a> </ul> </nav> -</header> -<main id="main-content"> +<main id=main-content> <h1>Tags</h1> <ul class="tag-toc">{toc_items}</ul> {"".join(f"<section>{s}</section>" for s in sections)} </main> -<hr> <footer> -<div> -<a href="https://github.com/ccleberg/cleberg.net">Source</a> · -<a href="/feed.xml">RSS</a> · -<a href="http://paske4urhs6nttrtlkuwa5cowum3fjkc6yv6kl4ncx3mjxcd77764nqd.onion/">Onion</a> · -<a href="/now/">Now</a> · -<a href="/uses/">Uses</a> · -<a href="/tips/">Tips</a> · -<a href="https://cv.cleberg.net">CV</a> -</div> -<div> -<a href="mailto:[email protected]">[email protected]</a> [<a href="/gpg.txt">PGP</a>] · -Signal: @cmc.01 -</div> +<a href=https://github.com/ccleberg/cleberg.net>Source</a>· +<a href=/feed.xml>RSS</a>· +<a href=http://paske4urhs6nttrtlkuwa5cowum3fjkc6yv6kl4ncx3mjxcd77764nqd.onion/>Onion</a>· +<a href=/tips/>Tips</a> </footer> </body> </html>""" diff --git a/content/apps/index.org b/content/apps/index.org index 6655593..a8f0e82 100644 --- a/content/apps/index.org +++ b/content/apps/index.org @@ -1,4 +1,4 @@ -#+title: apps +#+title: Apps #+slug: index #+options: toc:nil @@ -7,43 +7,16 @@ Small apps I've built for iOS. Fully offline. No ads, no accounts, no data collection. -#+begin_export html -<div class="app-card"> - <a href="https://apps.apple.com/app/daybyday"><img class="app-icon" src="https://img.cleberg.net/apps/daybyday.png" alt="DayByDay icon"></a> - <div class="app-info"> - <span class="app-title">Day By Day</span> - <span class="app-subtitle">Learn days, months & seasons!</span> - <div class="app-links"> - <a href="https://apps.apple.com/app/daybyday">App Store</a> · - <a href="https://github.com/ccleberg/DayByDay">GitHub</a> - </div> - </div> -</div> +#+begin_quote +All 3 apps are currently in Apple's review queue and are not available on the +App Store yet. I will update the links here as soon as Apple publishes them. +#+end_quote -<div class="app-card"> - <a href="https://apps.apple.com/app/space-explorers"><img class="app-icon" src="https://img.cleberg.net/apps/spaceexplorers.png" alt="Space Explorers icon"></a> - <div class="app-info"> - <span class="app-title">Space Explorers</span> - <span class="app-subtitle">Explore the galaxy and learn!</span> - <div class="app-links"> - <a href="https://apps.apple.com/app/space-explorers">App Store</a> · - <a href="https://github.com/ccleberg/SpaceExplorers">GitHub</a> - </div> - </div> -</div> - -<div class="app-card"> - <a href="https://apps.apple.com/app/domaindig"><img class="app-icon" src="https://img.cleberg.net/apps/domaindig.png" alt="DomainDig icon"></a> - <div class="app-info"> - <span class="app-title">Domain Dig</span> - <span class="app-subtitle">DNS lookup & SSL certificate checker</span> - <div class="app-links"> - <a href="https://apps.apple.com/app/domaindig">App Store</a> · - <a href="https://github.com/ccleberg/DomainDig">GitHub</a> - </div> - </div> -</div> -#+end_export +| App | Description | GitHub | +|-----------------+--------------------------------------+--------| +| Day By Day | Learn days, months & seasons! | [[https://github.com/ccleberg/DayByDay][GitHub]] | +| Domain Dig | DNS lookup & SSL certificate checker | [[https://github.com/ccleberg/DomainDig][GitHub]] | +| Space Explorers | Explore the galaxy and learn! | [[https://github.com/ccleberg/SpaceExplorers][GitHub]] | * Web Projects diff --git a/content/blog/2018-11-28-aes-encryption.org b/content/blog/2018-11-28-aes-encryption.org index afadf97..03dcd3c 100644 --- a/content/blog/2018-11-28-aes-encryption.org +++ b/content/blog/2018-11-28-aes-encryption.org @@ -1,8 +1,8 @@ -#+date: [2018-11-28 Wed 00:00:00] -#+title: aes encryption: what the math actually does -#+description: Detailed explanation of AES encryption, including key handling, encryption modes, algorithm structure, and implementation considerations for secure data protection. +#+date: [2018-11-28 Wed 00:00:00] +#+title: AES Encryption +#+description: Let's learn about AES encryption, its method, and how it can be used. #+slug: aes-encryption -#+filetags: :security: +#+filetags: :security: * Basic AES diff --git a/content/blog/2018-11-28-cpp-compiler.org b/content/blog/2018-11-28-cpp-compiler.org index be94aee..d15ca98 100644 --- a/content/blog/2018-11-28-cpp-compiler.org +++ b/content/blog/2018-11-28-cpp-compiler.org @@ -1,8 +1,8 @@ -#+date: [2018-11-28 Wed 00:00:00] -#+title: inside the c++ compiler -#+description: Systematic presentation of the C++ compilation phases including preprocessing, compilation, assembly, and linking, with technical insights into each stage's function. +#+date: [2018-11-28 Wed 00:00:00] +#+title: The C++ Compiler +#+description: A brief trip into the C++ compilation process. #+slug: cpp-compiler -#+filetags: :linux: +#+filetags: :linux: * A Brief Introduction diff --git a/content/blog/2019-01-07-useful-css.org b/content/blog/2019-01-07-useful-css.org index 7ecf5ea..5726af6 100644 --- a/content/blog/2019-01-07-useful-css.org +++ b/content/blog/2019-01-07-useful-css.org @@ -1,8 +1,8 @@ -#+date: [2019-01-07 Mon 00:00:00] -#+title: css notes: flexbox, shadows, variables -#+description: Practical guide on applying CSS rules and constructs such as flexbox, box shadows, and variable usage to achieve standard web styling and layout objectives. +#+date: [2019-01-07 Mon 00:00:00] +#+title: CSS Tips: Flexbox, Shadows, Variables +#+description: A few quick tips on modern CSS features. #+slug: useful-css -#+filetags: :web: +#+filetags: :web: * Introduction to CSS diff --git a/content/blog/2019-09-09-audit-analytics.org b/content/blog/2019-09-09-audit-analytics.org index ab94fca..4fd0221 100644 --- a/content/blog/2019-09-09-audit-analytics.org +++ b/content/blog/2019-09-09-audit-analytics.org @@ -1,8 +1,8 @@ -#+date: [2019-09-09 Mon 00:00:00] -#+title: audit analytics: pandas instead of pivot tables -#+description: Examination of data analytical approaches applied within internal audit functions to improve risk evaluation, process efficiency, and decision support. +#+date: [2019-09-09 Mon 00:00:00] +#+title: Internal Audit Analytics +#+description: Let's talk about data analytics and its use cases within the Internal Audit function. #+slug: audit-analytics -#+filetags: :audit: +#+filetags: :audit: * What Are Data Analytics? diff --git a/content/blog/2019-12-03-the-ansoff-matrix.org b/content/blog/2019-12-03-the-ansoff-matrix.org index 7740a23..5997f76 100644 --- a/content/blog/2019-12-03-the-ansoff-matrix.org +++ b/content/blog/2019-12-03-the-ansoff-matrix.org @@ -1,8 +1,8 @@ -#+date: [2019-12-03 Tue 00:00:00] -#+title: ansoff matrix: business school diagram, limited shelf life -#+description: Analytical description of the Ansoff Matrix, detailing market and product development strategies for measured business expansion and competitive positioning. +#+date: [2019-12-03 Tue 00:00:00] +#+title: The Ansoff Matrix +#+description: A detailed description of the Ansoff Matrix business model. #+slug: the-ansoff-matrix -#+filetags: :audit: +#+filetags: :audit: * Overview diff --git a/content/blog/2019-12-16-password-security.org b/content/blog/2019-12-16-password-security.org index 928dcf4..f29d683 100644 --- a/content/blog/2019-12-16-password-security.org +++ b/content/blog/2019-12-16-password-security.org @@ -1,8 +1,8 @@ -#+date: [2019-12-16 Mon 00:00:00] -#+title: nist passwords: the guidelines nobody implements -#+description: Compilation of guidelines for password generation, storage, protection, and compliance with established standards such as NIST for maintaining digital security. +#+date: [2019-12-16 Mon 00:00:00] +#+title: NIST Password Security +#+description: Let's look at what NIST currently recommends for passwords and secrets. #+slug: password-security -#+filetags: :security: +#+filetags: :security: * Users diff --git a/content/blog/2020-01-25-linux-software.org b/content/blog/2020-01-25-linux-software.org index 6238f09..17be3b8 100644 --- a/content/blog/2020-01-25-linux-software.org +++ b/content/blog/2020-01-25-linux-software.org @@ -1,8 +1,8 @@ -#+date: [2020-01-25 Sat 00:00:00] -#+title: linux software: what i actually install first -#+description: Inventory and description of key Linux applications including graphical and command-line tools, with installation instructions for various distributions. +#+date: [2020-01-25 Sat 00:00:00] +#+title: My Favorite Linux Software +#+description: A quick list of my favorite apps on Linux. #+slug: linux-software -#+filetags: :linux: +#+filetags: :linux: * Graphical Applications diff --git a/content/blog/2020-01-26-steam-on-ntfs.org b/content/blog/2020-01-26-steam-on-ntfs.org index 5dfd6a9..f210b0e 100644 --- a/content/blog/2020-01-26-steam-on-ntfs.org +++ b/content/blog/2020-01-26-steam-on-ntfs.org @@ -1,8 +1,8 @@ -#+date: [2020-01-26 Sun 00:00:00] -#+title: steam ntfs linux: it works, mostly -#+description: Procedures for mounting NTFS drives using ntfs-3g to enable reliable execution of Steam gaming software on Linux environments. +#+date: [2020-01-26 Sun 00:00:00] +#+title: Steam NTFS Fix on Linux +#+description: Procedures for mounting NTFS drives using ntfs-3g for Steam on Linux. #+slug: steam-on-ntfs -#+filetags: :linux: +#+filetags: :linux: * Auto-Mount Steam Drives diff --git a/content/blog/2020-02-09-cryptography-basics.org b/content/blog/2020-02-09-cryptography-basics.org index 7770e00..19952f5 100644 --- a/content/blog/2020-02-09-cryptography-basics.org +++ b/content/blog/2020-02-09-cryptography-basics.org @@ -1,8 +1,8 @@ -#+date: [2020-02-09 Sunday 00:00:00] -#+title: cryptography basics: keys, certs, and why it matters -#+description: Systematic overview of encryption methodologies, key categories, algorithmic frameworks, and their applications in data confidentiality and integrity. +#+date: [2020-02-09 Sunday 00:00:00] +#+title: Cryptography Basics +#+description: An introduction to cryptographic methods for encryption. #+slug: cryptography -#+filetags: :security: +#+filetags: :security: * Similar Article Available diff --git a/content/blog/2020-03-25-session-messenger.org b/content/blog/2020-03-25-session-messenger.org index 02d3d1d..8ff0458 100644 --- a/content/blog/2020-03-25-session-messenger.org +++ b/content/blog/2020-03-25-session-messenger.org @@ -1,8 +1,8 @@ -#+date: [2020-03-25 Wed 00:00:00] -#+title: session messenger: is it secure? -#+description: Technical description of the Session messaging protocol, including end-to-end encryption, metadata minimization, multi-device synchronization, and privacy-centric design. +#+date: [2020-03-25 Wed 00:00:00] +#+title: Review: Session Messenger +#+description: A user review of the Session Messenger app on Linux, macOS, and iOS. #+slug: session-messenger -#+filetags: :privacy: +#+filetags: :privacy: * Privacy Warning diff --git a/content/blog/2020-05-03-homelab.org b/content/blog/2020-05-03-homelab.org index 599c5be..15a4d80 100644 --- a/content/blog/2020-05-03-homelab.org +++ b/content/blog/2020-05-03-homelab.org @@ -1,8 +1,8 @@ -#+date: [2020-05-03 Sun 00:00:00] -#+title: homelab: rack, network, what broke -#+description: Comprehensive instructions on assembling and configuring a homelab environment, emphasizing hardware selection, software deployment, and network setup for operational efficiency. +#+date: [2020-05-03 Sun 00:00:00] +#+title: A Look Inside My Homelab +#+description: A retrospective guide after throwing together the first iteration of my home lab. #+slug: homelab -#+filetags: :self-hosting: +#+filetags: :self-hosting: * What is a Homelab? diff --git a/content/blog/2020-05-19-customizing-ubuntu.org b/content/blog/2020-05-19-customizing-ubuntu.org index aef0d7d..711065a 100644 --- a/content/blog/2020-05-19-customizing-ubuntu.org +++ b/content/blog/2020-05-19-customizing-ubuntu.org @@ -1,8 +1,8 @@ -#+date: [2020-05-19 Tue 00:00:00] -#+title: ubuntu gnome customization: making it not look terrible -#+description: Detailed instructions for modifying system appearance and interface elements in Ubuntu 20.04, including setting themes, icon packs, font adjustments, terminal configurations, and related customization parameters. +#+date: [2020-05-19 Tue 00:00:00] +#+title: Ubuntu GNOME Customization +#+description: Some tips and tricks to customize GNOME on Ubuntu 20.04. #+slug: customizing-ubuntu -#+filetags: :linux: +#+filetags: :linux: * More Information diff --git a/content/blog/2020-07-20-video-game-sales.org b/content/blog/2020-07-20-video-game-sales.org index 796d994..bb81f52 100644 --- a/content/blog/2020-07-20-video-game-sales.org +++ b/content/blog/2020-07-20-video-game-sales.org @@ -1,8 +1,8 @@ -#+date: [2020-07-20 Mon 00:00:00] -#+title: video game sales data: 40 years of numbers -#+description: Presentation of analyzed data regarding global video game sales, covering platform distributions, genre classifications, and geographic market performance metrics. +#+date: [2020-07-20 Mon 00:00:00] +#+title: Data Analysis: Video Games Sales Data +#+description: A simple data analysis of the video games sales dataset. #+slug: video-game-sales -#+filetags: :personal: +#+filetags: :personal: * Background Information diff --git a/content/blog/2020-07-26-business-analysis.org b/content/blog/2020-07-26-business-analysis.org index 7be3b2a..d787615 100644 --- a/content/blog/2020-07-26-business-analysis.org +++ b/content/blog/2020-07-26-business-analysis.org @@ -1,8 +1,8 @@ -#+date: [2020-07-26 Sun 00:00:00] -#+title: business location analysis: python maps, urban data -#+description: Methodology for utilizing data science techniques and Foursquare API data to analyze and select promising business sites within urban environments. +#+date: [2020-07-26 Sun 00:00:00] +#+title: Data Analysis: Finding the Best Location for a Business +#+description: Part of my data analysis course, I built an algorithm to find the best location for a new business in Lincoln. #+slug: business-analysis -#+filetags: :audit: +#+filetags: :audit: * Background Information diff --git a/content/blog/2020-08-22-redirect-github-pages.org b/content/blog/2020-08-22-redirect-github-pages.org index 95848b1..21ba348 100644 --- a/content/blog/2020-08-22-redirect-github-pages.org +++ b/content/blog/2020-08-22-redirect-github-pages.org @@ -1,8 +1,8 @@ -#+date: [2020-08-22 Sat 00:00:00] -#+title: github pages root domain: drop the www -#+description: Stepwise instructions for configuring redirection of GitHub Pages sites from the www subdomain to the apex domain to improve domain resolution and access consistency. +#+date: [2020-08-22 Sat 00:00:00] +#+title: GitHub Pages Redirect Subdomain to TLD +#+description: A quick recap of a Stack Overflow answer that I want to exist in perpetuity. #+slug: redirect-github-pages -#+filetags: :web: +#+filetags: :web: * Short answer diff --git a/content/blog/2020-08-29-php-auth-flow.org b/content/blog/2020-08-29-php-auth-flow.org index 8331be9..30a8158 100644 --- a/content/blog/2020-08-29-php-auth-flow.org +++ b/content/blog/2020-08-29-php-auth-flow.org @@ -1,8 +1,8 @@ -#+date: [2020-08-29 Sat 00:00:00] -#+title: php auth: sessions from scratch -#+description: Comprehensive guide to developing a secure user login system in PHP, including account creation, session management, and logout procedures. +#+date: [2020-08-29 Sat 00:00:00] +#+title: Learning PHP Auth +#+description: A quick recap of my recent learning experience with PHP Auth. #+slug: php-auth-flow -#+filetags: :web: +#+filetags: :web: * Introduction diff --git a/content/blog/2020-09-01-visual-recognition.org b/content/blog/2020-09-01-visual-recognition.org index 21bb8ed..1ba7d3a 100644 --- a/content/blog/2020-09-01-visual-recognition.org +++ b/content/blog/2020-09-01-visual-recognition.org @@ -1,8 +1,8 @@ -#+date: [2020-09-01 Tue 00:00:00] -#+title: ibm watson vision api: before they killed it +#+date: [2020-09-01 Tue 00:00:00] +#+title: IBM Watson Vision API #+description: Technical overview and application instructions for using IBM Watson Visual Recognition service, with focus on API configuration, image input processing, and classification output handling. #+slug: visual-recognition -#+filetags: :linux: +#+filetags: :linux: * What is IBM Watson? diff --git a/content/blog/2020-09-22-internal-audit.org b/content/blog/2020-09-22-internal-audit.org index e5803ce..c9e3d1d 100644 --- a/content/blog/2020-09-22-internal-audit.org +++ b/content/blog/2020-09-22-internal-audit.org @@ -1,8 +1,8 @@ -#+date: [2020-09-22 Tue 00:00:00] -#+title: internal audit: what it does vs. what management thinks it does -#+description: Analysis of internal audit processes, their contribution to risk management, governance frameworks, and compliance monitoring within corporate structures. +#+date: [2020-09-22 Tue 00:00:00] +#+title: Internal Audit: Who Are They? +#+description: Learn who your Internal Audit partners actually are. #+slug: internal-audit -#+filetags: :audit: +#+filetags: :audit: * Definitions diff --git a/content/blog/2020-09-25-happiness-map.org b/content/blog/2020-09-25-happiness-map.org index f40dbf7..5f9138c 100644 --- a/content/blog/2020-09-25-happiness-map.org +++ b/content/blog/2020-09-25-happiness-map.org @@ -1,8 +1,8 @@ #+date: [2020-09-25 Fri 00:00:00] -#+title: happiness choropleth: folium map, world data -#+description: Instructions for creating an interactive choropleth map visualizing international happiness data based on metrics such as GDP, social support, health indicators, freedom indices, generosity, and corruption levels. +#+title: Data Analysis: World Happiness Choropleth Map +#+description: A quick dive into choropleth maps. #+slug: happiness-map -#+filetags: :personal: +#+filetags: :personal: * Background Information diff --git a/content/blog/2020-10-12-mediocrity.org b/content/blog/2020-10-12-mediocrity.org index 04c0f99..0028119 100644 --- a/content/blog/2020-10-12-mediocrity.org +++ b/content/blog/2020-10-12-mediocrity.org @@ -1,8 +1,8 @@ -#+date: [2020-10-12 Mon 00:00:00] -#+title: when good is good enough—and when it isn't -#+description: Examination of decision-making principles relating to achieving sufficient quality levels, including trade-offs between perfection and adequacy in professional and operational contexts. +#+date: [2020-10-12 Mon 00:00:00] +#+title: On Mediocrity +#+description: Thoughts on mediocrity and when perfect is the enemy of good. #+slug: mediocrity -#+filetags: :personal: +#+filetags: :personal: * Perfect is the Enemy of Good diff --git a/content/blog/2020-12-27-website-redesign.org b/content/blog/2020-12-27-website-redesign.org index 79db447..f2103fd 100644 --- a/content/blog/2020-12-27-website-redesign.org +++ b/content/blog/2020-12-27-website-redesign.org @@ -1,8 +1,8 @@ -#+date: [2020-12-27 Sun 00:00:00] -#+title: website redesign: 5kb, 100s on lighthouse, no framework -#+description: Detailed process outlining methods for reducing website page size to approximately 5 kilobytes, enhancing loading speed, search engine indexing efficiency, and user interface responsiveness. +#+date: [2020-12-27 Sun 00:00:00] +#+title: Minimalist Website Redesign (5kb) +#+description: A retrospective summary of recent changes to minimize my site. #+slug: website-redesign -#+filetags: :web: +#+filetags: :web: * A Brief History diff --git a/content/blog/2020-12-28-neon-drive.org b/content/blog/2020-12-28-neon-drive.org index cf58f58..4a17637 100644 --- a/content/blog/2020-12-28-neon-drive.org +++ b/content/blog/2020-12-28-neon-drive.org @@ -1,8 +1,8 @@ -#+date: [2020-12-28 Mon 00:00:00] -#+title: neon drive: review -#+description: Description of game mechanics, graphical style, and level design in Neon Drive, an arcade racing game inspired by 1980s synthwave aesthetics. +#+date: [2020-12-28 Mon 00:00:00] +#+title: Neon Drive +#+description: My thoughts on Neon Drive, a synthwave-inspired arcade racer. #+slug: neon-drive -#+filetags: :personal: +#+filetags: :personal: * Game Description diff --git a/content/blog/2020-12-29-zork.org b/content/blog/2020-12-29-zork.org index fd0dc52..cbc23ee 100644 --- a/content/blog/2020-12-29-zork.org +++ b/content/blog/2020-12-29-zork.org @@ -1,8 +1,8 @@ -#+date: [2020-12-29 Tue 00:00:00] -#+title: zork: the text adventure that started it all -#+description: Detailed operational guide for navigating Zork, a text-based interactive fiction game from the 1980s. Includes instructions for exploration, puzzle resolution, and item collection. +#+date: [2020-12-29 Tue 00:00:00] +#+title: The Zork Anthology +#+description: My thoughts on Zork (plus, some tips and a map). #+slug: zork -#+filetags: :personal: +#+filetags: :personal: * Download (Free) diff --git a/content/blog/2021-01-01-seum.org b/content/blog/2021-01-01-seum.org index 161d9cf..7b766f0 100644 --- a/content/blog/2021-01-01-seum.org +++ b/content/blog/2021-01-01-seum.org @@ -1,8 +1,8 @@ -#+date: [2021-01-01 Fri 00:00:00] -#+title: seum: speedrunners from hell -#+description: Technical overview for utilizing the game SEUM, focusing on speedrunning techniques, gravity manipulation, teleportation functions, and level completion criteria. +#+date: [2021-01-01 Fri 00:00:00] +#+title: SEUM: Speedrunners from Hell +#+description: A quick look at one of my favorite speedrunning games. #+slug: seum -#+filetags: :personal: +#+filetags: :personal: * Game Description diff --git a/content/blog/2021-01-04-fediverse.org b/content/blog/2021-01-04-fediverse.org index 7893c8e..54c07d6 100644 --- a/content/blog/2021-01-04-fediverse.org +++ b/content/blog/2021-01-04-fediverse.org @@ -1,8 +1,8 @@ -#+date: [2021-01-04 Mon 00:00:00] -#+title: fediverse: decentralized social, minus the algorithm -#+description: Detailed introduction to the Fediverse network architecture, user registration procedures, platform navigation, and protocols ensuring content decentralization and censorship resistance. +#+date: [2021-01-04 Mon 00:00:00] +#+title: Fediverse: Decentralized Social +#+description: A primer on the fediverse, how it works, and why I use it. #+slug: fediverse -#+filetags: :privacy: +#+filetags: :privacy: * What is the Fediverse? diff --git a/content/blog/2021-01-07-ufw.org b/content/blog/2021-01-07-ufw.org index 5398f57..700d9a2 100644 --- a/content/blog/2021-01-07-ufw.org +++ b/content/blog/2021-01-07-ufw.org @@ -1,8 +1,8 @@ -#+date: [2021-01-07 Thu 00:00:00] -#+title: ufw hardening: firewall config you should have set up already -#+description: Stepwise instructions for installation, configuration, enabling, and management of the Uncomplicated Firewall utility to secure network interfaces on Ubuntu server environments. +#+date: [2021-01-07 Thu 00:00:00] +#+title: UFW: Firewall Setup on Ubuntu +#+description: How to install and configure UFW on Ubuntu. #+slug: ufw -#+filetags: :linux:security: +#+filetags: :linux:security: * Uncomplicated Firewall diff --git a/content/blog/2021-02-19-macos.org b/content/blog/2021-02-19-macos.org index 7e1bc78..044ea55 100644 --- a/content/blog/2021-02-19-macos.org +++ b/content/blog/2021-02-19-macos.org @@ -1,8 +1,8 @@ -#+date: [2021-02-19 Fri 00:00:00] -#+title: macos for linux users: what to fix first -#+description: Comprehensive overview for first-time macOS users transitioning from other OS platforms, including system setup, terminal usage, and user interface customization. +#+date: [2021-02-19 Fri 00:00:00] +#+title: macOS for Linux Users +#+description: First steps for Linux users switching to macOS. #+slug: macos -#+filetags: :linux: +#+filetags: :linux: * Diving into macOS diff --git a/content/blog/2021-03-19-clone-github-repos.org b/content/blog/2021-03-19-clone-github-repos.org index 9c9904a..0bcad4f 100644 --- a/content/blog/2021-03-19-clone-github-repos.org +++ b/content/blog/2021-03-19-clone-github-repos.org @@ -1,8 +1,8 @@ -#+date: [2021-03-19 Fri 00:00:00] -#+title: github and sourcehut: scripting mass clones and remote updates -#+description: Script-based methodology for cloning multiple repositories from GitHub and Sourcehut accounts. Includes automation techniques to streamline repository management and backups. +#+date: [2021-03-19 Fri 00:00:00] +#+title: Scripting Mass Clones from GitHub and Sourcehut +#+description: Scripts to clone all your repos from GitHub or Sourcehut at once. #+slug: clone-github-repos -#+filetags: :personal: +#+filetags: :personal: * Cloning from GitHub diff --git a/content/blog/2021-03-28-gemini-capsule.org b/content/blog/2021-03-28-gemini-capsule.org index a2667f8..a8ffb57 100644 --- a/content/blog/2021-03-28-gemini-capsule.org +++ b/content/blog/2021-03-28-gemini-capsule.org @@ -1,8 +1,8 @@ -#+date: [2021-03-28 Sun 00:00:00] -#+title: gemini capsule: deploy it, own your content -#+description: Incremental procedural guide to initiate and maintain a Gemini capsule server. Covers installation, deployment, and operational best practices for beginners. +#+date: [2021-03-28 Sun 00:00:00] +#+title: Gemini Capsule: Deploy and Own Your Content +#+description: How to set up and run your own Gemini capsule. #+slug: gemini-capsule -#+filetags: :linux:web: +#+filetags: :linux:web: * What is Gemini? diff --git a/content/blog/2021-03-28-vaporwave-vs-outrun.org b/content/blog/2021-03-28-vaporwave-vs-outrun.org index 266eeb0..2a97f0f 100644 --- a/content/blog/2021-03-28-vaporwave-vs-outrun.org +++ b/content/blog/2021-03-28-vaporwave-vs-outrun.org @@ -1,8 +1,8 @@ -#+date: [2021-03-28 Sun 00:00:00] -#+title: vaporwave vs outrun: the aesthetic breakdown -#+description: Systematic examination of Vaporwave and Outrun aesthetic frameworks, focusing on graphical elements, chromatic schemes, musical associations, and period-specific cultural influences. +#+date: [2021-03-28 Sun 00:00:00] +#+title: Vaporwave vs. Outrun +#+description: Breaking down the differences between vaporwave and outrun aesthetics. #+slug: vaporwave-vs-outrun -#+filetags: :personal: +#+filetags: :personal: * Overview diff --git a/content/blog/2021-03-30-vps-web-server.org b/content/blog/2021-03-30-vps-web-server.org index 77ef4d2..e7fece1 100644 --- a/content/blog/2021-03-30-vps-web-server.org +++ b/content/blog/2021-03-30-vps-web-server.org @@ -1,8 +1,8 @@ -#+date: [2021-03-30 Tue 00:00:00] -#+title: vps web server: get off shared hosting -#+description: Instructional outline for setting up and maintaining a VPS environment configured for secure and scalable web hosting applications. +#+date: [2021-03-30 Tue 00:00:00] +#+title: VPS Web Server: Get Off Shared Hosting +#+description: How to set up a VPS and host your own website. #+slug: vps-web-server -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Shared Hosting vs. VPS (Virtual Private Server) diff --git a/content/blog/2021-04-17-gemini-server.org b/content/blog/2021-04-17-gemini-server.org index 5534b61..11636ec 100644 --- a/content/blog/2021-04-17-gemini-server.org +++ b/content/blog/2021-04-17-gemini-server.org @@ -1,8 +1,8 @@ -#+date: [2021-04-17 Sat 00:00:00] -#+title: agate gemini server installation and firewall configuration -#+description: Detailed directives for installation and configuration of a Gemini protocol server on Ubuntu, including network security and firewall setup. +#+date: [2021-04-17 Sat 00:00:00] +#+title: Agate Gemini Server Setup +#+description: Installing Agate and configuring a firewall for a Gemini server on Ubuntu. #+slug: gemini-server -#+filetags: :linux:web: +#+filetags: :linux:web: * Similar Article Available diff --git a/content/blog/2021-04-23-php-comment-system.org b/content/blog/2021-04-23-php-comment-system.org index 0976547..4e22b9d 100644 --- a/content/blog/2021-04-23-php-comment-system.org +++ b/content/blog/2021-04-23-php-comment-system.org @@ -1,8 +1,8 @@ -#+date: [2021-04-23 Fri 00:00:00] -#+title: building a lightweight php static commenting system without javascript -#+description: Technical walkthrough for constructing a lightweight, privacy-oriented static comment system using PHP, with no client-side scripting or external dependencies. +#+date: [2021-04-23 Fri 00:00:00] +#+title: A Lightweight, Static PHP Comment System +#+description: Building a simple PHP comment system with no JavaScript and no external dependencies. #+slug: php-comment-system -#+filetags: :linux:web: +#+filetags: :linux:web: * The Terrible-ness of Commenting Systems diff --git a/content/blog/2021-04-28-photography.org b/content/blog/2021-04-28-photography.org index 28072cf..0839c87 100644 --- a/content/blog/2021-04-28-photography.org +++ b/content/blog/2021-04-28-photography.org @@ -1,8 +1,8 @@ -#+date: [2021-04-28 Wed 00:00:00] -#+title: photography: gear and what actually matters -#+description: Instructional document covering basic techniques in photography, including equipment selection, operational best practices, and methods for capturing high-quality images. +#+date: [2021-04-28 Wed 00:00:00] +#+title: My Photography Gear +#+description: My approach to photography and the gear I use. #+slug: photography -#+filetags: :personal: +#+filetags: :personal: * Why Photography? diff --git a/content/blog/2021-05-30-changing-git-authors.org b/content/blog/2021-05-30-changing-git-authors.org index 09b25f0..649a784 100644 --- a/content/blog/2021-05-30-changing-git-authors.org +++ b/content/blog/2021-05-30-changing-git-authors.org @@ -1,8 +1,8 @@ -#+date: [2021-05-30 Sun 00:00:00] -#+title: automated script for correcting git author details in multiple projects -#+description: Detailed instructions for systematically updating the Git author name and email information in multiple repositories using command-line tools and scripts. +#+date: [2021-05-30 Sun 00:00:00] +#+title: Correcting Git Author Details Across Multiple Repos +#+description: A script to update the git author name and email across multiple repos. #+slug: changing-git-authors -#+filetags: :personal: +#+filetags: :personal: * Changing Git Author/Email Based on Previously Committed Email diff --git a/content/blog/2021-07-15-delete-gitlab-repos.org b/content/blog/2021-07-15-delete-gitlab-repos.org index 4a0e432..fd6fc00 100644 --- a/content/blog/2021-07-15-delete-gitlab-repos.org +++ b/content/blog/2021-07-15-delete-gitlab-repos.org @@ -1,8 +1,8 @@ -#+date: [2021-07-15 Thu 00:00:00] -#+title: automated deletion of all gitlab repositories using python -#+description: Stepwise instructions for executing a Python script to delete all repositories associated with a GitLab account. Includes authentication and error handling procedures. +#+date: [2021-07-15 Thu 00:00:00] +#+title: Deleting All GitLab Repositories with Python +#+description: A Python script to delete all your GitLab repositories at once. #+slug: delete-gitlab-repos -#+filetags: :personal: +#+filetags: :personal: * Background diff --git a/content/blog/2021-08-25-audit-sampling.org b/content/blog/2021-08-25-audit-sampling.org index 85c0732..9ed9eb1 100644 --- a/content/blog/2021-08-25-audit-sampling.org +++ b/content/blog/2021-08-25-audit-sampling.org @@ -1,8 +1,8 @@ -#+date: [2021-08-25 Wed 00:00:00] -#+title: audit sampling: pandas for random and stratified samples -#+description: Presentation of methods for implementing audit sampling techniques including simple random, stratified, and systematic sampling using Python's Pandas library for precise audit outcomes. +#+date: [2021-08-25 Wed 00:00:00] +#+title: Audit Sampling with Pandas +#+description: Using Python and Pandas to run random and stratified audit samples. #+slug: audit-sampling -#+filetags: :audit: +#+filetags: :audit: * Introduction diff --git a/content/blog/2021-10-09-apache-redirect.org b/content/blog/2021-10-09-apache-redirect.org index e0cec7d..829170a 100644 --- a/content/blog/2021-10-09-apache-redirect.org +++ b/content/blog/2021-10-09-apache-redirect.org @@ -1,8 +1,8 @@ -#+date: [2021-10-09 Sat 00:00:00] -#+title: setting up apache rewrite rules for extensionless urls -#+description: Technical guide to applying Apache mod_rewrite directives for transforming .html file requests into clean directory-style URL structures to enhance website navigation and indexing. +#+date: [2021-10-09 Sat 00:00:00] +#+title: Apache Rewrite Rules for Extensionless URLs +#+description: Using mod_rewrite to serve clean, extensionless URLs in Apache. #+slug: apache-redirect -#+filetags: :web: +#+filetags: :web: * The Problem diff --git a/content/blog/2021-12-04-cisa.org b/content/blog/2021-12-04-cisa.org index f1fa87c..b10271c 100644 --- a/content/blog/2021-12-04-cisa.org +++ b/content/blog/2021-12-04-cisa.org @@ -1,8 +1,8 @@ -#+date: [2021-12-04 Sat 00:00:00] -#+title: cisa exam: what the test measures vs. what the job requires -#+description: Comprehensive outline of study materials, preparation strategies, and procedural advice for passing the CISA examination on the initial attempt. +#+date: [2021-12-04 Sat 00:00:00] +#+title: I Passed the CISA Exam +#+description: My take on the CISA exam: what it covers, and what it doesn't. #+slug: cisa -#+filetags: :audit: +#+filetags: :audit: * What is the CISA? diff --git a/content/blog/2022-02-10-leaving-the-office.org b/content/blog/2022-02-10-leaving-the-office.org index 456c1d2..366fccf 100644 --- a/content/blog/2022-02-10-leaving-the-office.org +++ b/content/blog/2022-02-10-leaving-the-office.org @@ -1,8 +1,8 @@ -#+date: [2022-02-10 Thu 00:00:00] -#+title: leaving the office: remote work without the linkedin take -#+description: Examination of factors influencing the shift from traditional office environments to remote work, including benefits, constraints, and implementation recommendations. +#+date: [2022-02-10 Thu 00:00:00] +#+title: Leaving the Office +#+description: My honest thoughts on leaving the office and working remotely. #+slug: leaving-the-office -#+filetags: :personal: +#+filetags: :personal: * The Working World is Changing diff --git a/content/blog/2022-02-10-njalla-dns-api.org b/content/blog/2022-02-10-njalla-dns-api.org index 1588099..ec47917 100644 --- a/content/blog/2022-02-10-njalla-dns-api.org +++ b/content/blog/2022-02-10-njalla-dns-api.org @@ -1,8 +1,8 @@ -#+date: [2022-02-10 Thu 00:00:00] -#+title: automating dynamic dns record updates via njalla api using python -#+description: Instructional material detailing automation of DNS record updates by interfacing with Njalla's API, suitable for environments with frequently changing IP addresses. +#+date: [2022-02-10 Thu 00:00:00] +#+title: Dynamic DNS Updates via the Njalla API +#+description: A Python script to update DNS records automatically via the Njalla API. #+slug: njalla-dns-api -#+filetags: :security: +#+filetags: :security: * Njalla's API diff --git a/content/blog/2022-02-16-debian-and-nginx.org b/content/blog/2022-02-16-debian-and-nginx.org index ea0186e..f47e951 100644 --- a/content/blog/2022-02-16-debian-and-nginx.org +++ b/content/blog/2022-02-16-debian-and-nginx.org @@ -1,8 +1,8 @@ -#+date: [2022-02-16 Wed 00:00:00] -#+title: debian nginx migration: ditch ubuntu, move the stack -#+description: Step-by-step protocol for transitioning web server infrastructure to Debian operating system, including installation, configuration, and security hardening of Nginx and Agate services. +#+date: [2022-02-16 Wed 00:00:00] +#+title: Migrating from Ubuntu to Debian with Nginx +#+description: Moving my web server from Ubuntu to Debian and reconfiguring Nginx. #+slug: debian-and-nginx -#+filetags: :linux:web: +#+filetags: :linux:web: * Server Operating System (OS): Debian diff --git a/content/blog/2022-02-17-exiftool.org b/content/blog/2022-02-17-exiftool.org index eb1c31e..305292f 100644 --- a/content/blog/2022-02-17-exiftool.org +++ b/content/blog/2022-02-17-exiftool.org @@ -1,8 +1,8 @@ -#+date: [2022-02-17 Thu 00:00:00] -#+title: exiftool metadata: strip it before you post it -#+description: Technical instructions for utilizing Exiftool to systematically strip metadata from image files to ensure privacy and reduce file size. +#+date: [2022-02-17 Thu 00:00:00] +#+title: ExifTool: Strip Metadata Before You Post +#+description: How to use ExifTool to strip metadata from images before sharing them. #+slug: exiftool -#+filetags: :linux:privacy: +#+filetags: :linux:privacy: ** Why Strip Metadata? diff --git a/content/blog/2022-02-20-nginx-caching.org b/content/blog/2022-02-20-nginx-caching.org index 5134994..a76e035 100644 --- a/content/blog/2022-02-20-nginx-caching.org +++ b/content/blog/2022-02-20-nginx-caching.org @@ -1,8 +1,8 @@ -#+date: [2022-02-20 Sun 00:00:00] -#+title: nginx caching: static content, cache config -#+description: Detailed methods for configuring Nginx to cache static resources such as CSS, JavaScript, and images to improve website loading times and resource efficiency. +#+date: [2022-02-20 Sun 00:00:00] +#+title: Nginx Caching for Static Content +#+description: Configuring Nginx to cache static assets like CSS, JS, and images. #+slug: nginx-caching -#+filetags: :linux:web: +#+filetags: :linux:web: * Update Your Nginx Config to Cache Static Files diff --git a/content/blog/2022-02-22-tuesday.org b/content/blog/2022-02-22-tuesday.org index 3207404..026db5a 100644 --- a/content/blog/2022-02-22-tuesday.org +++ b/content/blog/2022-02-22-tuesday.org @@ -1,8 +1,8 @@ -#+date: [2022-02-22 Tue 00:00:00] -#+title: twosday: 2 22 22 was a real date -#+description: Examination of the date Tuesday, February 22, 2022, highlighting the palindromic properties and expected observations on this specific calendar occurrence. +#+date: [2022-02-22 Tue 00:00:00] +#+title: Twosday: 2/22/22 +#+description: A brief note on Tuesday, February 22nd, 2022. #+slug: tuesday -#+filetags: :personal: +#+filetags: :personal: * Tuesday, Twosday diff --git a/content/blog/2022-03-02-reliable-notes.org b/content/blog/2022-03-02-reliable-notes.org index d5ee7de..7a6f15a 100644 --- a/content/blog/2022-03-02-reliable-notes.org +++ b/content/blog/2022-03-02-reliable-notes.org @@ -1,8 +1,8 @@ -#+date: [2022-03-02 Wed 00:00:00] -#+title: notes in plaintext: portable, no app dependency -#+description: Instructions on applying standardized note-taking procedures with Markdown format, including synchronization and cross-platform compatibility considerations. +#+date: [2022-03-02 Wed 00:00:00] +#+title: Create Reliable Notes with Plaintext +#+description: Why I keep my notes in plaintext Markdown, synced across devices. #+slug: reliable-notes -#+filetags: :personal: +#+filetags: :personal: * Choosing Durable File Formats diff --git a/content/blog/2022-03-03-financial-database.org b/content/blog/2022-03-03-financial-database.org index c911165..7d89d30 100644 --- a/content/blog/2022-03-03-financial-database.org +++ b/content/blog/2022-03-03-financial-database.org @@ -1,8 +1,8 @@ -#+date: [2022-03-03 Thu 00:00:00] -#+title: financial tracker: sqlite over spreadsheets -#+description: Procedures for creating and maintaining a personal financial database utilizing SQLite, Python programming language, and Jupyter Notebook interface. +#+date: [2022-03-03 Thu 00:00:00] +#+title: Personal Finance Tracker with SQLite +#+description: Building a personal finance tracker with SQLite, Python, and Jupyter. #+slug: financial-database -#+filetags: :self-hosting: +#+filetags: :self-hosting: * Personal Financial Tracking diff --git a/content/blog/2022-03-08-plex-migration.org b/content/blog/2022-03-08-plex-migration.org index 6f4c833..76b77d2 100644 --- a/content/blog/2022-03-08-plex-migration.org +++ b/content/blog/2022-03-08-plex-migration.org @@ -1,8 +1,8 @@ -#+date: [2022-03-08 Tue 00:00:00] -#+title: migrating plex media server to new hardware with nvidia gpu setup -#+description: Stepwise instructions for transferring Plex Media Server to new hardware and enabling Nvidia GPU transcoding to optimize media processing performance. +#+date: [2022-03-08 Tue 00:00:00] +#+title: Migrating Plex to New Hardware with Nvidia GPU +#+description: Moving Plex to new hardware and setting up Nvidia GPU transcoding. #+slug: plex-migration -#+filetags: :self-hosting: +#+filetags: :self-hosting: * Migration Phases diff --git a/content/blog/2022-03-23-cloudflare-dns-api.org b/content/blog/2022-03-23-cloudflare-dns-api.org index efe95ec..1588135 100644 --- a/content/blog/2022-03-23-cloudflare-dns-api.org +++ b/content/blog/2022-03-23-cloudflare-dns-api.org @@ -1,8 +1,8 @@ -#+date: [2022-03-23 Wed 00:00:00] -#+title: dynamic dns record updates via cloudflare api -#+description: Command-line procedures to automate updating of DNS A and AAAA records by interfacing with the Cloudflare API, suitable for environments with variable IP addresses. +#+date: [2022-03-23 Wed 00:00:00] +#+title: Dynamic DNS Updates via the Cloudflare API +#+description: Automatically updating DNS A and AAAA records via the Cloudflare API. #+slug: cloudflare-dns-api -#+filetags: :security: +#+filetags: :security: * DDNS: Dynamic DNS :PROPERTIES: diff --git a/content/blog/2022-03-23-nextcloud-on-ubuntu.org b/content/blog/2022-03-23-nextcloud-on-ubuntu.org index 2384844..e9d8470 100644 --- a/content/blog/2022-03-23-nextcloud-on-ubuntu.org +++ b/content/blog/2022-03-23-nextcloud-on-ubuntu.org @@ -1,8 +1,8 @@ -#+date: [2022-03-23 Wed 00:00:00] -#+title: self hosting guide: nextcloud -#+description: Comprehensive guide for implementing Nextcloud as a self-hosted solution on an Ubuntu server, including installation steps, configuration parameters, and basic security measures. +#+date: [2022-03-23 Wed 00:00:00] +#+title: Self-Hosting Guide: Nextcloud +#+description: How to install and configure Nextcloud on Ubuntu. #+slug: nextcloud-on-ubuntu -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * What is Nextcloud? :PROPERTIES: diff --git a/content/blog/2022-03-24-server-hardening.org b/content/blog/2022-03-24-server-hardening.org index 358d128..9ef548a 100644 --- a/content/blog/2022-03-24-server-hardening.org +++ b/content/blog/2022-03-24-server-hardening.org @@ -1,8 +1,8 @@ -#+date: [2022-03-24 Thu 00:00:00] -#+title: server hardening: firewalls, ssh, vlans -#+description: Detailed instructions to enhance the security posture of home servers exposed to public networks, including firewall setup, secure SSH configuration, fail2ban deployment, and network segmentation. +#+date: [2022-03-24 Thu 00:00:00] +#+title: Server Hardening: Firewalls, SSH, VLANs +#+description: Hardening a home server with UFW, SSH config, fail2ban, and VLANs. #+slug: server-hardening -#+filetags: :linux:security: +#+filetags: :linux:security: * Planning Data Flows & Security diff --git a/content/blog/2022-03-26-ssh-mfa.org b/content/blog/2022-03-26-ssh-mfa.org index 1da01f1..17d1882 100644 --- a/content/blog/2022-03-26-ssh-mfa.org +++ b/content/blog/2022-03-26-ssh-mfa.org @@ -1,8 +1,8 @@ -#+date: [2022-03-26 Sat 00:00:00] -#+title: ssh mfa: totp on top of keys -#+description: Step-by-step deployment guide for enabling TOTP multi-factor authentication on SSH services using Google Authenticator and Pluggable Authentication Module (PAM) integration. +#+date: [2022-03-26 Sat 00:00:00] +#+title: SSH MFA: TOTP on Top of Keys +#+description: Adding TOTP two-factor authentication on top of SSH key auth. #+slug: ssh-mfa -#+filetags: :security: +#+filetags: :security: * Why Do I Need Multi-Factor Authentication (MFA) for SSH (Secure Shell Protocol)? diff --git a/content/blog/2022-04-02-nginx-reverse-proxy.org b/content/blog/2022-04-02-nginx-reverse-proxy.org index 9a1aa3a..ed75e1a 100644 --- a/content/blog/2022-04-02-nginx-reverse-proxy.org +++ b/content/blog/2022-04-02-nginx-reverse-proxy.org @@ -1,8 +1,8 @@ -#+date: [2022-04-02 Sat 00:00:00] -#+title: nginx reverse proxy: config and nothing else -#+description: Technical guide for setting up Nginx server to operate as a reverse proxy on Ubuntu systems, including configuration files setup and operational parameters. +#+date: [2022-04-02 Sat 00:00:00] +#+title: Nginx Reverse Proxy Config +#+description: Setting up Nginx as a reverse proxy on Ubuntu. #+slug: nginx-reverse-proxy -#+filetags: :linux:web: +#+filetags: :linux:web: * What is a Reverse Proxy? diff --git a/content/blog/2022-04-09-pinetime.org b/content/blog/2022-04-09-pinetime.org index ed0322c..0307d57 100644 --- a/content/blog/2022-04-09-pinetime.org +++ b/content/blog/2022-04-09-pinetime.org @@ -1,8 +1,8 @@ -#+date: [2022-04-09 Sat 00:00:00] -#+title: pinetime smartwatch: an open source hardware & software overview -#+description: Technical description of PineTime smartwatch capabilities, including heart rate measurement, step counting, sleep monitoring, and smartphone connectivity functions. +#+date: [2022-04-09 Sat 00:00:00] +#+title: PineTime: Open Source Smartwatch Overview +#+description: An overview of the PineTime open-source smartwatch and what it can do. #+slug: pinetime -#+filetags: :linux: +#+filetags: :linux: * PineTime Product Information diff --git a/content/blog/2022-06-01-ditching-cloudflare.org b/content/blog/2022-06-01-ditching-cloudflare.org index 6e7d978..f4d8fb6 100644 --- a/content/blog/2022-06-01-ditching-cloudflare.org +++ b/content/blog/2022-06-01-ditching-cloudflare.org @@ -1,8 +1,8 @@ -#+date: [2022-06-01 Wed 00:00:00] -#+title: ditching cloudflare: dns under your own name, not theirs -#+description: Evaluation and procedural explanation for migrating DNS management services from Cloudflare to Njalla, with emphasis on privacy controls and domain registration mechanics. +#+date: [2022-06-01 Wed 00:00:00] +#+title: Ditching Cloudflare +#+description: Why I moved my DNS away from Cloudflare, and how I did it. #+slug: ditching-cloudflare -#+filetags: :privacy:security: +#+filetags: :privacy:security: * Registrar diff --git a/content/blog/2022-06-07-self-hosting-freshrss.org b/content/blog/2022-06-07-self-hosting-freshrss.org index 221b528..f988eb3 100644 --- a/content/blog/2022-06-07-self-hosting-freshrss.org +++ b/content/blog/2022-06-07-self-hosting-freshrss.org @@ -1,8 +1,8 @@ -#+date: [2022-06-07 Tue 00:00:00] -#+title: self hosting guide: freshrss -#+description: Stepwise instructions for installing FreshRSS using Docker and configuring Nginx as a reverse proxy to enable secure and synchronized RSS feed access. +#+date: [2022-06-07 Tue 00:00:00] +#+title: Self-Hosting Guide: FreshRSS +#+description: How to install FreshRSS with Docker and Nginx. #+slug: self-hosting-freshrss -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Why Use Really Simple Syndication (RSS)? diff --git a/content/blog/2022-06-16-terminal-lifestyle.org b/content/blog/2022-06-16-terminal-lifestyle.org index 7b20ac9..c6b4483 100644 --- a/content/blog/2022-06-16-terminal-lifestyle.org +++ b/content/blog/2022-06-16-terminal-lifestyle.org @@ -1,8 +1,8 @@ -#+date: [2022-06-16 Thu 00:00:00] -#+title: terminal first: why the gui is optional -#+description: Detailed procedures for reducing digital interruptions and increasing efficiency through terminal-based utilities for web browsing, communication, electronic mail, RSS feeds, and programming tasks. +#+date: [2022-06-16 Thu 00:00:00] +#+title: Terminal First: Why the GUI Is Optional +#+description: My setup for handling email, browsing, IRC, and RSS from the terminal. #+slug: terminal-lifestyle -#+filetags: :linux: +#+filetags: :linux: * Text-Based Simplicity diff --git a/content/blog/2022-06-22-daily-poetry.org b/content/blog/2022-06-22-daily-poetry.org index c980468..96f1a58 100644 --- a/content/blog/2022-06-22-daily-poetry.org +++ b/content/blog/2022-06-22-daily-poetry.org @@ -1,8 +1,8 @@ -#+date: [2022-06-22 Wed 00:00:00] -#+title: daily poetry: cron job, no subscription required -#+description: Instructional guide for scheduling and automating the distribution of classic and contemporary poetry in plaintext format to an electronic mail inbox using Python scripting and SMTP protocol. +#+date: [2022-06-22 Wed 00:00:00] +#+title: Daily Poetry via Cron +#+description: A Python script that emails you a poem every morning via cron. #+slug: daily-poetry -#+filetags: :personal: +#+filetags: :personal: * Source Code diff --git a/content/blog/2022-06-24-fedora-i3.org b/content/blog/2022-06-24-fedora-i3.org index 90b7281..e26c64e 100644 --- a/content/blog/2022-06-24-fedora-i3.org +++ b/content/blog/2022-06-24-fedora-i3.org @@ -1,8 +1,8 @@ -#+date: [2022-06-24 Fri 00:00:00] -#+title: fedora i3: back on linux, tiling wm -#+description: Examination of the transition from macOS to Linux, including a detailed description of Fedora operating system installation and i3 window manager configuration. +#+date: [2022-06-24 Fri 00:00:00] +#+title: Fedora and i3: Back on Linux +#+description: Moving back to Linux: installing Fedora and setting up i3. #+slug: fedora-i3 -#+filetags: :linux: +#+filetags: :linux: * Leaving macOS diff --git a/content/blog/2022-07-01-git-server.org b/content/blog/2022-07-01-git-server.org index 3bb4b9f..b62a7f9 100644 --- a/content/blog/2022-07-01-git-server.org +++ b/content/blog/2022-07-01-git-server.org @@ -1,8 +1,8 @@ -#+date: [2022-07-01 Fri 00:00:00] -#+title: self hosting guide: git & cgit -#+description: Comprehensive instructions for secure and efficient setup, hosting, and management of personal Git repositories to facilitate collaborative development and remote access. +#+date: [2022-07-01 Fri 00:00:00] +#+title: Self-Hosting Guide: Git and cgit +#+description: How to self-host Git repos and browse them with cgit. #+slug: git-server -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * My Approach to Self-Hosting Git diff --git a/content/blog/2022-07-14-gnupg.org b/content/blog/2022-07-14-gnupg.org index 477d2dc..4ee883c 100644 --- a/content/blog/2022-07-14-gnupg.org +++ b/content/blog/2022-07-14-gnupg.org @@ -1,8 +1,8 @@ -#+date: [2022-07-14 Thu 00:00:00] -#+title: gnupg: encryption, signing, web of trust -#+description: Technical manual covering the architecture, cryptographic algorithms, vulnerability considerations, key management, and typical applications of GNU Privacy Guard for secure data and email encryption. +#+date: [2022-07-14 Thu 00:00:00] +#+title: GnuPG: Encryption, Signing, Web of Trust +#+description: How GnuPG works and how I use it for encryption and signing. #+slug: gnupg -#+filetags: :linux:security: +#+filetags: :linux:security: * The History of GPG diff --git a/content/blog/2022-07-25-curseradio.org b/content/blog/2022-07-25-curseradio.org index c732db3..56da519 100644 --- a/content/blog/2022-07-25-curseradio.org +++ b/content/blog/2022-07-25-curseradio.org @@ -1,8 +1,8 @@ -#+date: [2022-07-25 Mon 00:00:00] -#+title: curseradio: a lightweight command line internet radio player for linux -#+description: Stepwise instructions for installing and utilizing Curseradio, a lightweight command-line program for streaming radio stations within Linux environments. +#+date: [2022-07-25 Mon 00:00:00] +#+title: Curseradio: Internet Radio from the Terminal +#+description: Installing and using Curseradio to stream internet radio from the terminal. #+slug: curseradio -#+filetags: :linux: +#+filetags: :linux: * Overview diff --git a/content/blog/2022-07-30-flac-to-opus.org b/content/blog/2022-07-30-flac-to-opus.org index dd29e3d..4e7a257 100644 --- a/content/blog/2022-07-30-flac-to-opus.org +++ b/content/blog/2022-07-30-flac-to-opus.org @@ -1,8 +1,8 @@ -#+date: [2022-07-30 Sat 00:00:00] -#+title: automating recursive flac to opus conversion with a bash script -#+description: Instructions for automating the conversion of audio files from FLAC to Opus format recursively within directory structures, including performance considerations and script usage. +#+date: [2022-07-30 Sat 00:00:00] +#+title: Recursive FLAC to Opus Conversion +#+description: A bash script to convert FLAC files to Opus recursively. #+slug: flac-to-opus -#+filetags: :linux: +#+filetags: :linux: * Converting FLAC to OPUS diff --git a/content/blog/2022-07-31-bash-it.org b/content/blog/2022-07-31-bash-it.org index 6e640be..07150bf 100644 --- a/content/blog/2022-07-31-bash-it.org +++ b/content/blog/2022-07-31-bash-it.org @@ -1,8 +1,8 @@ -#+date: [2022-07-31 Sun 00:00:00] -#+title: bash it: plugins and autosuggestions for zsh refugees -#+description: Guide to augmenting Bash shell features by integrating Bash-It framework along with ble.sh for input autosuggestions, improving command-line efficiency on Linux systems. +#+date: [2022-07-31 Sun 00:00:00] +#+title: Bash-It: Plugins and Autosuggestions +#+description: Setting up Bash-It with ble.sh for a better shell experience. #+slug: bash-it -#+filetags: :linux: +#+filetags: :linux: * Bash diff --git a/content/blog/2022-08-31-privacy-com-changes.org b/content/blog/2022-08-31-privacy-com-changes.org index ef17576..118c2e8 100644 --- a/content/blog/2022-08-31-privacy-com-changes.org +++ b/content/blog/2022-08-31-privacy-com-changes.org @@ -1,8 +1,8 @@ -#+date: [2022-08-31 Wed 00:00:00] -#+title: privacy com changes: they changed the product, not the name -#+description: Detailed examination of modifications to Privacy.com service terms and their implications on user privacy and payment security protocols. +#+date: [2022-08-31 Wed 00:00:00] +#+title: Privacy.com Changed the Product, Not the Name +#+description: Privacy.com changed their terms. Here's what that means. #+slug: privacy-com-changes -#+filetags: :privacy: +#+filetags: :privacy: * Privacy.com Changes Their Terms diff --git a/content/blog/2022-09-17-serenity-os.org b/content/blog/2022-09-17-serenity-os.org index 2899249..ed53515 100644 --- a/content/blog/2022-09-17-serenity-os.org +++ b/content/blog/2022-09-17-serenity-os.org @@ -1,8 +1,8 @@ -#+date: [2022-09-17 Sat 00:00:00] -#+title: building and exploring serenityos: a retro inspired unix like desktop -#+description: Technical overview of Serenity OS including system architecture, building procedures, and operational instructions for this Unix-like operating system with a 1990s user interface style. +#+date: [2022-09-17 Sat 00:00:00] +#+title: Building and Exploring SerenityOS +#+description: Building and running SerenityOS, a retro Unix-like desktop OS. #+slug: serenity-os -#+filetags: :linux: +#+filetags: :linux: * Overview diff --git a/content/blog/2022-09-21-graphene-os.org b/content/blog/2022-09-21-graphene-os.org index 043b835..cef1d00 100644 --- a/content/blog/2022-09-21-graphene-os.org +++ b/content/blog/2022-09-21-graphene-os.org @@ -1,8 +1,8 @@ -#+date: [2022-09-21 Wed 00:00:00] -#+title: installing grapheneos on pixel 6 pro -#+description: Step-by-step instructions to perform secure installation of the GrapheneOS operating system on Google Pixel 6 Pro hardware platform. +#+date: [2022-09-21 Wed 00:00:00] +#+title: Installing GrapheneOS on Pixel 6 Pro +#+description: How to install GrapheneOS on a Pixel 6 Pro. #+slug: graphene-os -#+filetags: :linux:privacy: +#+filetags: :linux:privacy: * Introduction diff --git a/content/blog/2022-10-04-mtp-linux.org b/content/blog/2022-10-04-mtp-linux.org index 6c00216..cb425b0 100644 --- a/content/blog/2022-10-04-mtp-linux.org +++ b/content/blog/2022-10-04-mtp-linux.org @@ -1,8 +1,8 @@ -#+date: [2022-10-04 Tue 00:00:00] -#+title: mtp linux: mount your phone without a file manager -#+description: Instructions for mounting and accessing Media Transfer Protocol (MTP) compatible mobile devices on Fedora Linux using jmtpfs for file transfer and management. +#+date: [2022-10-04 Tue 00:00:00] +#+title: MTP on Linux: Mount Your Phone Without a File Manager +#+description: Mounting Android phones on Fedora Linux with jmtpfs. #+slug: mtp-linux -#+filetags: :linux: +#+filetags: :linux: I recently ran into trouble attempting to mount my GrapheneOS phone to my laptop running Fedora Linux via the [[https://en.wikipedia.org/wiki/Media_transfer_protocol][Media Transfer Protocol]] (MTP) and discovered a diff --git a/content/blog/2022-10-04-syncthing.org b/content/blog/2022-10-04-syncthing.org index c1620e6..5e84411 100644 --- a/content/blog/2022-10-04-syncthing.org +++ b/content/blog/2022-10-04-syncthing.org @@ -1,8 +1,8 @@ -#+date: [2022-10-04 Tue 00:00:00] -#+title: self hosting guide: syncthing -#+description: Technical instructions for setting up Syncthing as a peer-to-peer self-hosted file synchronization system that preserves data privacy by eliminating third-party intermediaries. +#+date: [2022-10-04 Tue 00:00:00] +#+title: Self-Hosting Guide: Syncthing +#+description: How to set up Syncthing for private, peer-to-peer file sync. #+slug: syncthing -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * An Overview of Syncthing diff --git a/content/blog/2022-10-22-alpine-linux.org b/content/blog/2022-10-22-alpine-linux.org index 019a25a..a5bc443 100644 --- a/content/blog/2022-10-22-alpine-linux.org +++ b/content/blog/2022-10-22-alpine-linux.org @@ -1,8 +1,8 @@ -#+date: [2022-10-22 Sat 00:00:00] -#+title: alpine linux: minimal install, minimal attack surface -#+description: Detailed procedure for deploying Alpine Linux to achieve a secure, lightweight server environment optimized for web hosting and containerization. +#+date: [2022-10-22 Sat 00:00:00] +#+title: Alpine Linux: Minimal Install, Minimal Attack Surface +#+description: Installing Alpine Linux as a lightweight, secure server OS. #+slug: alpine-linux -#+filetags: :linux: +#+filetags: :linux: * Alpine Linux diff --git a/content/blog/2022-10-30-linux-display-manager.org b/content/blog/2022-10-30-linux-display-manager.org index 26a8511..464b3d7 100644 --- a/content/blog/2022-10-30-linux-display-manager.org +++ b/content/blog/2022-10-30-linux-display-manager.org @@ -1,8 +1,8 @@ -#+date: [2022-10-30 Sun 00:00:00] -#+title: managing display managers in void linux: disable, enable, and configure -#+description: Stepwise instructions to manage and replace the display manager on a Void Linux installation, including service control and configuration editing. +#+date: [2022-10-30 Sun 00:00:00] +#+title: Void Linux: Remove the Display Manager +#+description: Disabling the display manager on Void Linux and starting i3 manually. #+slug: linux-display-manager -#+filetags: :linux: +#+filetags: :linux: * Display Manager Services diff --git a/content/blog/2022-11-07-self-hosting-matrix.org b/content/blog/2022-11-07-self-hosting-matrix.org index 226a568..cacc9a1 100644 --- a/content/blog/2022-11-07-self-hosting-matrix.org +++ b/content/blog/2022-11-07-self-hosting-matrix.org @@ -1,8 +1,8 @@ -#+date: [2022-11-07 Mon 00:00:00] -#+title: self hosting guide: matrix synapse -#+description: Systematic guide for deploying Matrix Synapse on Alpine Linux, covering dependency installation, reverse proxy setup, TLS certificate application, and user account management. +#+date: [2022-11-07 Mon 00:00:00] +#+title: Self-Hosting Guide: Matrix Synapse +#+description: How to deploy Matrix Synapse on Alpine Linux with Nginx. #+slug: self-hosting-matrix -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Synapse diff --git a/content/blog/2022-11-11-nginx-tmp-errors.org b/content/blog/2022-11-11-nginx-tmp-errors.org index 14e2f0d..9385486 100644 --- a/content/blog/2022-11-11-nginx-tmp-errors.org +++ b/content/blog/2022-11-11-nginx-tmp-errors.org @@ -1,8 +1,8 @@ -#+date: [2022-11-11 Fri 00:00:00] -#+title: troubleshooting and fixing nginx permission denied errors on /var/lib/nginx -#+description: Step-by-step remediation for addressing permission denied errors encountered by Nginx in the /var/lib/nginx directory to restore temporary file caching functionality. +#+date: [2022-11-11 Fri 00:00:00] +#+title: Fixing Nginx Permission Denied Errors on /var/lib/nginx +#+description: Fixing permission denied errors on /var/lib/nginx in Nginx. #+slug: nginx-tmp-errors -#+filetags: :web: +#+filetags: :web: /This is a brief post so that I personally remember the solution as it has occurred multiple times for me./ diff --git a/content/blog/2022-11-27-server-build.org b/content/blog/2022-11-27-server-build.org index 20afebc..f282fcf 100644 --- a/content/blog/2022-11-27-server-build.org +++ b/content/blog/2022-11-27-server-build.org @@ -1,8 +1,8 @@ -#+date: [2022-11-27 Sun 00:00:00] -#+title: server build: rack hardware, consumer parts, no enterprise markup -#+description: Detailed instructions on selecting components, assembling, and configuring a rack-mounted server suitable for advanced computing tasks in a professional or laboratory setting. +#+date: [2022-11-27 Sun 00:00:00] +#+title: Server Build: Rack Hardware, Consumer Parts +#+description: How I built a rack-mounted server with consumer parts. #+slug: server-build -#+filetags: :linux: +#+filetags: :linux: * The Dilemma diff --git a/content/blog/2022-11-29-nginx-referrer-ban-list.org b/content/blog/2022-11-29-nginx-referrer-ban-list.org index 706bc82..bc3d7b7 100644 --- a/content/blog/2022-11-29-nginx-referrer-ban-list.org +++ b/content/blog/2022-11-29-nginx-referrer-ban-list.org @@ -1,8 +1,8 @@ -#+date: [2022-11-29 Tue 00:00:00] -#+title: nginx referrer ban: block the scrapers -#+description: Technical guide to implementing a referrer ban list in Nginx configurations to prevent access from undesired domains and improve web server security. +#+date: [2022-11-29 Tue 00:00:00] +#+title: Nginx Referrer Ban List +#+description: Blocking unwanted referrers in Nginx with a simple ban list. #+slug: nginx-referrer-ban-list -#+filetags: :linux:web: +#+filetags: :linux:web: * Creating the Ban List diff --git a/content/blog/2022-12-01-nginx-compression.org b/content/blog/2022-12-01-nginx-compression.org index f7992a3..13683cf 100644 --- a/content/blog/2022-12-01-nginx-compression.org +++ b/content/blog/2022-12-01-nginx-compression.org @@ -1,8 +1,8 @@ -#+date: [2022-12-01 Thu 00:00:00] -#+title: nginx gzip: compress text, nothing else -#+description: Procedures for activating and configuring GZIP compression in Nginx to decrease data transmission size, reduce bandwidth consumption, and accelerate page load times. +#+date: [2022-12-01 Thu 00:00:00] +#+title: Nginx Gzip: Compress Text, Nothing Else +#+description: Enabling and configuring GZIP compression in Nginx. #+slug: nginx-compression -#+filetags: :linux:web: +#+filetags: :linux:web: * Text Compression diff --git a/content/blog/2022-12-07-nginx-wildcard-redirect.org b/content/blog/2022-12-07-nginx-wildcard-redirect.org index 7641ed2..bd56a62 100644 --- a/content/blog/2022-12-07-nginx-wildcard-redirect.org +++ b/content/blog/2022-12-07-nginx-wildcard-redirect.org @@ -1,8 +1,8 @@ -#+date: [2022-12-07 Wed 00:00:00] -#+title: nginx wildcard redirect: domains, subdomains, trailing paths -#+description: Instructional steps for applying regex-based redirects in Nginx to manage subdomain routing and trailing path modifications effectively. +#+date: [2022-12-07 Wed 00:00:00] +#+title: Nginx Wildcard Redirects +#+description: Using regex-based redirects in Nginx for subdomain and path routing. #+slug: nginx-wildcard-redirect -#+filetags: :web: +#+filetags: :web: * Problem diff --git a/content/blog/2022-12-17-st.org b/content/blog/2022-12-17-st.org index 8f76a3f..590e99f 100644 --- a/content/blog/2022-12-17-st.org +++ b/content/blog/2022-12-17-st.org @@ -1,8 +1,8 @@ -#+date: [2022-12-17 Sat 00:00:00] -#+title: installing and customizing the suckless simple terminal (st) on fedora linux -#+description: Comprehensive instructions to obtain source code, compile, apply patches, and install the Simple Terminal application on Fedora Linux systems. +#+date: [2022-12-17 Sat 00:00:00] +#+title: Suckless Simple Terminal on Fedora +#+description: Compiling and patching the Suckless Simple Terminal on Fedora. #+slug: st -#+filetags: :linux: +#+filetags: :linux: * st diff --git a/content/blog/2022-12-23-alpine-desktop.org b/content/blog/2022-12-23-alpine-desktop.org index ea73fa4..61a81b5 100644 --- a/content/blog/2022-12-23-alpine-desktop.org +++ b/content/blog/2022-12-23-alpine-desktop.org @@ -1,8 +1,8 @@ -#+date: [2022-12-23 Fri 00:00:00] -#+title: alpine desktop: sway on alpine, minimal by default -#+description: Stepwise procedures for installing and setting up Alpine Linux as a desktop operating system, including window manager setup and relevant system adjustments. +#+date: [2022-12-23 Fri 00:00:00] +#+title: Alpine Desktop with Sway +#+description: Setting up Alpine Linux as a desktop with Sway as the window manager. #+slug: alpine-desktop -#+filetags: :linux: +#+filetags: :linux: * Isn't Alpine Linux for Servers? diff --git a/content/blog/2023-01-03-recent-website-changes.org b/content/blog/2023-01-03-recent-website-changes.org index 8c581a9..25aea5b 100644 --- a/content/blog/2023-01-03-recent-website-changes.org +++ b/content/blog/2023-01-03-recent-website-changes.org @@ -1,8 +1,8 @@ -#+date: [2023-01-03 Tue 00:00:00] -#+title: website updates 2023: what changed and why -#+description: Documentation of significant changes applied to site design, layout, and accessibility features to enhance navigability and content clarity. +#+date: [2023-01-03 Tue 00:00:00] +#+title: Website Updates 2023 +#+description: A rundown of recent changes to the site design and structure. #+slug: recent-website-changes -#+filetags: :personal:web: +#+filetags: :personal:web: * The State of This Website diff --git a/content/blog/2023-01-05-mass-unlike-tumblr-posts.org b/content/blog/2023-01-05-mass-unlike-tumblr-posts.org index 74510cb..c3ce8fa 100644 --- a/content/blog/2023-01-05-mass-unlike-tumblr-posts.org +++ b/content/blog/2023-01-05-mass-unlike-tumblr-posts.org @@ -1,8 +1,8 @@ -#+date: [2023-01-05 Thu 00:00:00] -#+title: tumblr unlike all: script, done, get out -#+description: Instructions for executing a JavaScript script to automate the mass unlike operation for Tumblr posts without requiring additional software. +#+date: [2023-01-05 Thu 00:00:00] +#+title: Mass Unlike All Tumblr Posts +#+description: A JavaScript snippet to mass-unlike all your Tumblr posts. #+slug: mass-unlike-tumblr-posts -#+filetags: :linux:personal: +#+filetags: :linux:personal: * The Dilemma diff --git a/content/blog/2023-01-08-fedora-login-manager.org b/content/blog/2023-01-08-fedora-login-manager.org index c9be0b4..f4e71dc 100644 --- a/content/blog/2023-01-08-fedora-login-manager.org +++ b/content/blog/2023-01-08-fedora-login-manager.org @@ -1,8 +1,8 @@ -#+date: [2023-01-08 Sun 00:00:00] -#+title: fedora i3 no login manager: remove it, start manually -#+description: Step-by-step guide for uninstalling the default Fedora i3 login manager and configuring system to launch i3 window manager manually. +#+date: [2023-01-08 Sun 00:00:00] +#+title: Fedora i3: Remove the Login Manager +#+description: Removing the Fedora login manager and launching i3 manually. #+slug: fedora-login-manager -#+filetags: :linux: +#+filetags: :linux: * Fedora i3's Login Manager diff --git a/content/blog/2023-01-21-flatpak-symlinks.org b/content/blog/2023-01-21-flatpak-symlinks.org index 7b7466b..4649303 100644 --- a/content/blog/2023-01-21-flatpak-symlinks.org +++ b/content/blog/2023-01-21-flatpak-symlinks.org @@ -1,8 +1,8 @@ -#+date: [2023-01-21 Sat 00:00:00] -#+title: flatpak symlinks: shorten the command -#+description: Detailed instructions for establishing symbolic links for Flatpak applications to facilitate faster execution from terminal or application launcher environments. +#+date: [2023-01-21 Sat 00:00:00] +#+title: Flatpak Symlinks: Shorten the Command +#+description: Creating symlinks for Flatpak apps to make them easier to launch. #+slug: flatpak-symlinks -#+filetags: :linux: +#+filetags: :linux: * Running Flatpak Apps Should Be Faster diff --git a/content/blog/2023-01-23-random-wireguard.org b/content/blog/2023-01-23-random-wireguard.org index 0c163ce..88345fa 100644 --- a/content/blog/2023-01-23-random-wireguard.org +++ b/content/blog/2023-01-23-random-wireguard.org @@ -1,8 +1,8 @@ -#+date: [2023-01-23 Mon 00:00:00] -#+title: automate random mullvad wireguard vpn connection on startup -#+description: Stepwise method to configure system startup scripts for automatic connection to a randomly chosen Mullvad Wireguard VPN server to maintain privacy. +#+date: [2023-01-23 Mon 00:00:00] +#+title: Random Mullvad WireGuard on Startup +#+description: A startup script to connect to a random Mullvad WireGuard server. #+slug: random-wireguard -#+filetags: :linux:security:self-hosting: +#+filetags: :linux:security:self-hosting: * Mullvad Wireguard diff --git a/content/blog/2023-01-28-self-hosting-wger.org b/content/blog/2023-01-28-self-hosting-wger.org index ce61558..2033e6b 100644 --- a/content/blog/2023-01-28-self-hosting-wger.org +++ b/content/blog/2023-01-28-self-hosting-wger.org @@ -1,8 +1,8 @@ -#+date: [2023-01-28 Sat 00:00:00] -#+title: self hosting guide: wger -#+description: Comprehensive steps for installing, configuring, and operating the Wger workout management application on a dedicated server platform. +#+date: [2023-01-28 Sat 00:00:00] +#+title: Self-Hosting Guide: wger +#+description: How to self-host wger, an open-source workout manager. #+slug: self-hosting-wger -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Wger: The Self-Hosted Workout Manager diff --git a/content/blog/2023-02-02-exploring-hare.org b/content/blog/2023-02-02-exploring-hare.org index 34dcf5e..7305595 100644 --- a/content/blog/2023-02-02-exploring-hare.org +++ b/content/blog/2023-02-02-exploring-hare.org @@ -1,8 +1,8 @@ -#+date: [2023-02-02 Thu 00:00:00] -#+title: hare lang: notes from first contact -#+description: Overview of the Hare programming language features, installation procedure, and elementary programming examples targeting system-level development. +#+date: [2023-02-02 Thu 00:00:00] +#+title: Hare Lang: Notes from First Contact +#+description: First impressions of the Hare programming language. #+slug: exploring-hare -#+filetags: :linux: +#+filetags: :linux: * A Quick Note diff --git a/content/blog/2023-05-22-burnout.org b/content/blog/2023-05-22-burnout.org index 04d1203..5e0e2d8 100644 --- a/content/blog/2023-05-22-burnout.org +++ b/content/blog/2023-05-22-burnout.org @@ -1,8 +1,8 @@ -#+date: [2023-05-22 Mon 00:00:00] -#+title: burnout: audit and consulting will take everything you let them -#+description: Examination of burnout phenomena accompanied by strategies and practical approaches for workload management and restoration of optimal functioning. +#+date: [2023-05-22 Mon 00:00:00] +#+title: Burnout +#+description: Honest thoughts on burning out in audit and consulting. #+slug: burnout -#+filetags: :personal: +#+filetags: :personal: * RE: Burnout diff --git a/content/blog/2023-06-08-goaccess-geoip.org b/content/blog/2023-06-08-goaccess-geoip.org index 357f1a1..83f4982 100644 --- a/content/blog/2023-06-08-goaccess-geoip.org +++ b/content/blog/2023-06-08-goaccess-geoip.org @@ -1,8 +1,8 @@ -#+date: [2023-06-08 Thu 00:00:00] -#+title: real time traffic insights from nginx logs using goaccess + geoip -#+description: Step-by-step instructions to utilize GoAccess tool incorporating MaxMind GeoIP integration for real-time geographic and traffic analysis of Nginx log files. +#+date: [2023-06-08 Thu 00:00:00] +#+title: Nginx Traffic Analysis with GoAccess and GeoIP +#+description: Using GoAccess with MaxMind GeoIP to analyze Nginx traffic in real time. #+slug: goaccess-geoip -#+filetags: :self-hosting:web: +#+filetags: :self-hosting:web: * Overview diff --git a/content/blog/2023-06-08-self-hosting-baikal.org b/content/blog/2023-06-08-self-hosting-baikal.org index 30104ee..f9de031 100644 --- a/content/blog/2023-06-08-self-hosting-baikal.org +++ b/content/blog/2023-06-08-self-hosting-baikal.org @@ -1,8 +1,8 @@ -#+date: [2023-06-08 Thu 00:00:00] -#+title: self hosting guide: baikal -#+description: Detailed procedure for deploying the Baikal server software to provide CalDAV and CardDAV services, including security considerations and Docker deployment. +#+date: [2023-06-08 Thu 00:00:00] +#+title: Self-Hosting Guide: Baikal +#+description: How to deploy Baikal for self-hosted CalDAV and CardDAV. #+slug: self-hosting-baikal -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * What is Baikal? diff --git a/content/blog/2023-06-18-unifi-ip-blocklist.org b/content/blog/2023-06-18-unifi-ip-blocklist.org index 2872edf..44ae6eb 100644 --- a/content/blog/2023-06-18-unifi-ip-blocklist.org +++ b/content/blog/2023-06-18-unifi-ip-blocklist.org @@ -1,8 +1,8 @@ -#+date: [2023-06-18 Sun 00:00:00] -#+title: blocking malicious ips on unifi: manual firewall rule setup -#+description: Instructions to identify and block harmful IP addresses and subnets through Unifi firewall settings to improve network security posture. +#+date: [2023-06-18 Sun 00:00:00] +#+title: Blocking Malicious IPs on Unifi +#+description: Manually blocking malicious IPs via Unifi firewall rules. #+slug: unifi-ip-blocklist -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Identifying Abusive IPs diff --git a/content/blog/2023-06-20-audit-review-template.org b/content/blog/2023-06-20-audit-review-template.org index 5d62344..43e238e 100644 --- a/content/blog/2023-06-20-audit-review-template.org +++ b/content/blog/2023-06-20-audit-review-template.org @@ -1,8 +1,8 @@ -#+date: [2023-06-20 Tue 00:00:00] -#+title: audit testing review checklist -#+description: Practical audit testing review template with detailed steps to support comprehensive evaluation of financial audits and SOC reports. +#+date: [2023-06-20 Tue 00:00:00] +#+title: Audit Testing Review Checklist +#+description: A practical checklist for reviewing audit testing on financial and SOC engagements. #+slug: audit-review-template -#+filetags: :audit: +#+filetags: :audit: * Overview diff --git a/content/blog/2023-06-23-byobu.org b/content/blog/2023-06-23-byobu.org index 2da8065..fe4841a 100644 --- a/content/blog/2023-06-23-byobu.org +++ b/content/blog/2023-06-23-byobu.org @@ -1,8 +1,8 @@ -#+date: [2023-06-23 Fri 00:00:00] -#+title: byobu: tmux with less configuration overhead -#+description: Detailed overview of Byobu terminal multiplexer features, configuration settings, session management, and keybindings to enhance command-line efficiency. +#+date: [2023-06-23 Fri 00:00:00] +#+title: Byobu: tmux with Less Configuration Overhead +#+description: Using Byobu as a tmux wrapper with sane defaults out of the box. #+slug: byobu -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Byobu diff --git a/content/blog/2023-06-23-self-hosting-convos.org b/content/blog/2023-06-23-self-hosting-convos.org index 33cd88b..8512f54 100644 --- a/content/blog/2023-06-23-self-hosting-convos.org +++ b/content/blog/2023-06-23-self-hosting-convos.org @@ -1,8 +1,8 @@ -#+date: [2023-06-23 Fri 00:00:00] -#+title: self hosting guide: convos -#+description: Stepwise instructions for installation, Docker Compose configuration, Nginx reverse proxy setup, and IRC nickname registration for Convos web client hosting. +#+date: [2023-06-23 Fri 00:00:00] +#+title: Self-Hosting Guide: Convos +#+description: How to self-host Convos, a web-based IRC client. #+slug: self-hosting-convos -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Convos diff --git a/content/blog/2023-06-28-backblaze-b2.org b/content/blog/2023-06-28-backblaze-b2.org index d2ea53f..1a11ce3 100644 --- a/content/blog/2023-06-28-backblaze-b2.org +++ b/content/blog/2023-06-28-backblaze-b2.org @@ -1,8 +1,8 @@ -#+date: [2023-06-28 Wed 00:00:00] -#+title: backblaze b2 backups: before i moved off it -#+description: Methodical guide for configuring and utilizing Backblaze B2 cloud storage services to perform reliable and secure offsite data backups. +#+date: [2023-06-28 Wed 00:00:00] +#+title: Backblaze B2 Backups +#+description: Setting up Backblaze B2 for offsite backups before I moved on. #+slug: backblaze-b2 -#+filetags: :self-hosting: +#+filetags: :self-hosting: * Overview diff --git a/content/blog/2023-06-30-self-hosting-voyager.org b/content/blog/2023-06-30-self-hosting-voyager.org index 5b8f42d..e081834 100644 --- a/content/blog/2023-06-30-self-hosting-voyager.org +++ b/content/blog/2023-06-30-self-hosting-voyager.org @@ -1,8 +1,8 @@ -#+date: [2023-06-30 Fri 00:00:00] -#+title: self hosting guide: voyager for lemmy -#+description: Instructions for building, running, and reverse proxying Voyager, a Lemmy web client, on a server environment utilizing Docker and Nginx components. +#+date: [2023-06-30 Fri 00:00:00] +#+title: Self-Hosting Guide: Voyager for Lemmy +#+description: How to self-host Voyager, a web client for Lemmy. #+slug: self-hosting-voyager -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Installation Guide diff --git a/content/blog/2023-07-12-wireguard-lan.org b/content/blog/2023-07-12-wireguard-lan.org index f086d0c..34ee46d 100644 --- a/content/blog/2023-07-12-wireguard-lan.org +++ b/content/blog/2023-07-12-wireguard-lan.org @@ -1,8 +1,8 @@ -#+date: [2023-07-12 Wed 00:00:00] -#+title: enabling local network access with mullvad wireguard configs -#+description: Detailed procedure to modify Mullvad Wireguard VPN configuration files and iptables rules to allow Local Area Network access while maintaining VPN connectivity. +#+date: [2023-07-12 Wed 00:00:00] +#+title: Mullvad WireGuard with LAN Access +#+description: Modifying Mullvad WireGuard configs to allow LAN access while connected. #+slug: wireguard-lan -#+filetags: :security:self-hosting: +#+filetags: :security:self-hosting: * Download Configuration Files from Mullvad diff --git a/content/blog/2023-07-19-plex-transcoder-errors.org b/content/blog/2023-07-19-plex-transcoder-errors.org index afcdffe..6f57d96 100644 --- a/content/blog/2023-07-19-plex-transcoder-errors.org +++ b/content/blog/2023-07-19-plex-transcoder-errors.org @@ -1,8 +1,8 @@ -#+date: [2023-07-19 Wed 00:00:00] -#+title: plex subtitle error: transcoder fails to start -#+description: Technical procedures to identify and correct Plex transcoder failures at startup to maintain uninterrupted media conversion and playback. +#+date: [2023-07-19 Wed 00:00:00] +#+title: Plex Transcoder Errors: Subtitle Fix +#+description: Fixing Plex transcoder startup failures caused by subtitle errors. #+slug: plex-transcoder-errors -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Plex Transcoder Error diff --git a/content/blog/2023-08-18-agile-auditing.org b/content/blog/2023-08-18-agile-auditing.org index 8883a11..0cd336a 100644 --- a/content/blog/2023-08-18-agile-auditing.org +++ b/content/blog/2023-08-18-agile-auditing.org @@ -1,8 +1,8 @@ -#+date: [2023-08-18 Fri 00:00:00] -#+title: agile auditing: consultants cosplaying as engineers -#+description: Detailed examination of Agile auditing methodologies, including Scrum and Kanban frameworks, with practical steps for application in audit processes. +#+date: [2023-08-18 Fri 00:00:00] +#+title: Agile Auditing +#+description: My take on agile auditing: what it is and how it actually plays out. #+slug: agile-auditing -#+filetags: :audit: +#+filetags: :audit: * What is Agile Auditing? diff --git a/content/blog/2023-09-15-self-hosting-gitweb.org b/content/blog/2023-09-15-self-hosting-gitweb.org index 0ff692b..1719136 100644 --- a/content/blog/2023-09-15-self-hosting-gitweb.org +++ b/content/blog/2023-09-15-self-hosting-gitweb.org @@ -1,8 +1,8 @@ -#+date: [2023-09-15 Fri 00:00:00] -#+title: self hosting guide: gitweb -#+description: Stepwise instructions for deploying GitWeb on Linux servers using Nginx, configuring fastcgi, and managing git repositories effectively. +#+date: [2023-09-15 Fri 00:00:00] +#+title: Self-Hosting Guide: GitWeb +#+description: Deploying GitWeb on Linux with Nginx and FastCGI. #+slug: self-hosting-gitweb -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Overview diff --git a/content/blog/2023-09-19-audit-sql-scripts.org b/content/blog/2023-09-19-audit-sql-scripts.org index 369ab80..65e9570 100644 --- a/content/blog/2023-09-19-audit-sql-scripts.org +++ b/content/blog/2023-09-19-audit-sql-scripts.org @@ -1,8 +1,8 @@ -#+date: [2023-09-19 Tue 00:00:00] -#+title: auditing user privileges in oracle, sql server, and mysql -#+description: Collection of SQL queries designed for auditing user access parameters on Oracle, Microsoft SQL Server, and MySQL database systems. +#+date: [2023-09-19 Tue 00:00:00] +#+title: SQL Scripts for Auditing User Privileges +#+description: SQL queries for auditing user access in Oracle, SQL Server, and MySQL. #+slug: audit-sql-scripts -#+filetags: :audit: +#+filetags: :audit: * Overview diff --git a/content/blog/2023-10-04-digital-minimalism.org b/content/blog/2023-10-04-digital-minimalism.org index 756b1a0..90f8a81 100644 --- a/content/blog/2023-10-04-digital-minimalism.org +++ b/content/blog/2023-10-04-digital-minimalism.org @@ -1,8 +1,8 @@ -#+date: [2023-10-04 Wed 00:00:00] -#+title: digital minimalism: fewer inputs, more signal -#+description: Practical guide for minimizing digital clutter and optimizing work focus by applying digital minimalism tactics. +#+date: [2023-10-04 Wed 00:00:00] +#+title: Digital Minimalism: Fewer Inputs, More Signal +#+description: How I reduce digital noise and stay focused. #+slug: digital-minimalism -#+filetags: :linux:privacy: +#+filetags: :linux:privacy: I've written [[https://cleberg.net/wiki/#digital-garden][a note about minimalism]] before, but I wanted to dedicate some time to reflect on digital diff --git a/content/blog/2023-10-11-self-hosting-authelia.org b/content/blog/2023-10-11-self-hosting-authelia.org index 97f31b2..785caaa 100644 --- a/content/blog/2023-10-11-self-hosting-authelia.org +++ b/content/blog/2023-10-11-self-hosting-authelia.org @@ -1,8 +1,8 @@ -#+date: [2023-10-11 Wed 00:00:00] -#+title: self hosting guide: authelia -#+description: Instructional guide for setting up Authelia to provide secure two-factor authentication and access control in self-hosted environments. +#+date: [2023-10-11 Wed 00:00:00] +#+title: Self-Hosting Guide: Authelia +#+description: Setting up Authelia for two-factor auth and access control on self-hosted apps. #+slug: self-hosting-authelia -#+filetags: :linux:security:self-hosting: +#+filetags: :linux:security:self-hosting: * Overview diff --git a/content/blog/2023-10-15-alpine-ssh-hardening.org b/content/blog/2023-10-15-alpine-ssh-hardening.org index 55f7887..5991775 100644 --- a/content/blog/2023-10-15-alpine-ssh-hardening.org +++ b/content/blog/2023-10-15-alpine-ssh-hardening.org @@ -1,8 +1,8 @@ -#+date: [2023-10-15 Sun 00:00:00] -#+title: alpine linux ssh hardening guide -#+description: Detailed guide to enhance Alpine Linux SSH server security through configuration adjustments and vulnerability mitigation. +#+date: [2023-10-15 Sun 00:00:00] +#+title: Alpine Linux SSH Hardening +#+description: Hardening SSH on Alpine Linux with config changes and key-only auth. #+slug: alpine-ssh-hardening -#+filetags: :linux:security: +#+filetags: :linux:security: * Overview diff --git a/content/blog/2023-10-17-self-hosting-anonymousoverflow.org b/content/blog/2023-10-17-self-hosting-anonymousoverflow.org index 518ee62..9ae47db 100644 --- a/content/blog/2023-10-17-self-hosting-anonymousoverflow.org +++ b/content/blog/2023-10-17-self-hosting-anonymousoverflow.org @@ -1,8 +1,8 @@ -#+date: [2023-10-17 Tue 00:00:00] -#+title: self hosting guide: anonymousoverflow -#+description: Detailed installation and setup instructions for the AnonymousOverflow application using Docker Compose and Nginx reverse proxy. +#+date: [2023-10-17 Tue 00:00:00] +#+title: Self-Hosting Guide: AnonymousOverflow +#+description: How to self-host AnonymousOverflow with Docker Compose and Nginx. #+slug: self-hosting-anonymousoverflow -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Overview diff --git a/content/blog/2023-11-08-scli.org b/content/blog/2023-11-08-scli.org index 9038557..cfeee8e 100644 --- a/content/blog/2023-11-08-scli.org +++ b/content/blog/2023-11-08-scli.org @@ -1,8 +1,8 @@ -#+date: [2023-11-08 Wed 00:00:00] -#+title: signal cli (scli) installation on alpine -#+description: Step-by-step instructions for installing the Signal messenger command-line client scli on Alpine Linux with musl libc, including dependencies and configuration. +#+date: [2023-11-08 Wed 00:00:00] +#+title: Signal CLI (scli) on Alpine +#+description: Installing the Signal CLI client on Alpine Linux. #+slug: scli -#+filetags: :linux: +#+filetags: :linux: [[https://github.com/isamert/scli][scli]] is a command-line tool that allows you to connect to your Signal messenger account. This program diff --git a/content/blog/2023-12-03-unifi-nextdns.org b/content/blog/2023-12-03-unifi-nextdns.org index 258fb02..7c88b40 100644 --- a/content/blog/2023-12-03-unifi-nextdns.org +++ b/content/blog/2023-12-03-unifi-nextdns.org @@ -1,8 +1,8 @@ -#+date: [2023-12-03 Sun 00:00:00] -#+title: installing and configuring nextdns on unifi dream machine routers -#+description: Procedural guide for installation and configuration of NextDNS on Unifi Dream Machine devices for network DNS filtering. +#+date: [2023-12-03 Sun 00:00:00] +#+title: NextDNS on Unifi Dream Machine +#+description: Installing and configuring NextDNS on a Unifi Dream Machine. #+slug: unifi-nextdns -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Overview diff --git a/content/blog/2024-01-08-dont-say-hello.org b/content/blog/2024-01-08-dont-say-hello.org index 61e327d..c949199 100644 --- a/content/blog/2024-01-08-dont-say-hello.org +++ b/content/blog/2024-01-08-dont-say-hello.org @@ -1,8 +1,8 @@ -#+date: [2024-01-08 Mon 00:00:00] -#+title: don't say hello -#+description: Technical recommendations for improving professional communication by eliminating non-essential introductory phrases to enhance message clarity. +#+date: [2024-01-08 Mon 00:00:00] +#+title: Don't Say Hello +#+description: Stop leading messages with 'hello' and nothing else. #+slug: dont-say-hello -#+filetags: :privacy: +#+filetags: :privacy: I recently came back from a winter break and have started working again... only to immediately run into the dilemma of people sending me cliffhanger messages diff --git a/content/blog/2024-01-09-macos-customization.org b/content/blog/2024-01-09-macos-customization.org index 1974522..723e2d6 100644 --- a/content/blog/2024-01-09-macos-customization.org +++ b/content/blog/2024-01-09-macos-customization.org @@ -1,8 +1,8 @@ -#+date: [2024-01-09 Tue 00:00:00] -#+title: macos customization: terminal, tiling wm, widgets -#+description: Detailed overview of methods and tools for modifying macOS system settings, including terminal usage, window management, and interface customization. +#+date: [2024-01-09 Tue 00:00:00] +#+title: macOS Customization: Terminal, Tiling WM, Widgets +#+description: How I've customized macOS with a terminal, tiling WM, and widgets. #+slug: macos-customization -#+filetags: :linux: +#+filetags: :linux: I have been using macOS more than Linux lately, so I wrote this post to describe some simple options to customize macOS beyond the normal built-in settings menu. diff --git a/content/blog/2024-01-13-local-llm.org b/content/blog/2024-01-13-local-llm.org index 584e38e..7ed4f82 100644 --- a/content/blog/2024-01-13-local-llm.org +++ b/content/blog/2024-01-13-local-llm.org @@ -1,8 +1,8 @@ -#+date: [2024-01-13 Sat 00:00:00] -#+title: local llm: run the model, keep the data -#+description: Technical guide to deploying and running local large language models on macOS and iOS devices focusing on open-source implementations and privacy considerations. +#+date: [2024-01-13 Sat 00:00:00] +#+title: Local LLM: Run the Model, Keep the Data +#+description: Running local language models on macOS and iOS with open-source tools. #+slug: local-llm -#+filetags: :linux:privacy: +#+filetags: :linux:privacy: * Requirements diff --git a/content/blog/2024-01-26-audit-dashboard.org b/content/blog/2024-01-26-audit-dashboard.org index 15884a3..aacd076 100644 --- a/content/blog/2024-01-26-audit-dashboard.org +++ b/content/blog/2024-01-26-audit-dashboard.org @@ -1,8 +1,8 @@ -#+date: [2024-01-26 Fri 00:00:00] -#+title: audit dashboard: alteryx + power bi, the corporate stack -#+description: Instructions for transforming audit data into dynamic dashboards via data preparation with Alteryx and visualization using Microsoft Power BI. +#+date: [2024-01-26 Fri 00:00:00] +#+title: Audit Dashboard: Alteryx and Power BI +#+description: Building an audit dashboard with Alteryx for data prep and Power BI for visuals. #+slug: audit-dashboard -#+filetags: :audit: +#+filetags: :audit: Alteryx and Power BI are powerful tools that can help turn your old-school audit trackers into interactive tools that provide useful insights and potential diff --git a/content/blog/2024-01-27-tableau-dashboard.org b/content/blog/2024-01-27-tableau-dashboard.org index 716893c..548443a 100644 --- a/content/blog/2024-01-27-tableau-dashboard.org +++ b/content/blog/2024-01-27-tableau-dashboard.org @@ -1,8 +1,8 @@ -#+date: [2024-01-27 Sat 00:00:00] -#+title: omaha crime data: tableau, 8 years of numbers -#+description: Detailed procedure for data preparation and interactive visualization of crime trends in Omaha, using Tableau software from 2015 through 2023 data. +#+date: [2024-01-27 Sat 00:00:00] +#+title: Omaha Crime Data: 8 Years in Tableau +#+description: Visualizing 8 years of Omaha crime data in Tableau. #+slug: tableau-dashboard -#+filetags: :web: +#+filetags: :web: In this project, I am going to show you how to use Tableau Public for free to create simple dashboards. diff --git a/content/blog/2024-02-06-zfs.org b/content/blog/2024-02-06-zfs.org index ce7ff9a..ebc9ec0 100644 --- a/content/blog/2024-02-06-zfs.org +++ b/content/blog/2024-02-06-zfs.org @@ -1,8 +1,8 @@ -#+date: [2024-02-06 Tue 00:00:00] -#+title: creating and managing zfs storage pools on ubuntu linux -#+description: Stepwise guide to setting up ZFS storage pools on Ubuntu, including initial installation, pool creation, expansion, and maintenance. +#+date: [2024-02-06 Tue 00:00:00] +#+title: ZFS Storage Pools on Ubuntu +#+description: Setting up and managing ZFS storage pools on Ubuntu. #+slug: zfs -#+filetags: :linux: +#+filetags: :linux: This post details the process I used to create ZFS pools, datasets, and snapshots on Ubuntu Server. diff --git a/content/blog/2024-02-13-ubuntu-emergency-mode.org b/content/blog/2024-02-13-ubuntu-emergency-mode.org index 04b0228..ccbe6dd 100644 --- a/content/blog/2024-02-13-ubuntu-emergency-mode.org +++ b/content/blog/2024-02-13-ubuntu-emergency-mode.org @@ -1,8 +1,8 @@ -#+date: [2024-02-13 Tue 00:00:00] -#+title: resolving ubuntu boot issues caused by invalid /etc/fstab mounts -#+description: Detailed instructions to identify errors in the /etc/fstab file causing Ubuntu to enter emergency mode and steps to edit and restore normal boot operations. +#+date: [2024-02-13 Tue 00:00:00] +#+title: Ubuntu Emergency Mode: Bad /etc/fstab Fix +#+description: Fixing an invalid /etc/fstab that put Ubuntu into emergency mode. #+slug: ubuntu-emergency-mode -#+filetags: :linux: +#+filetags: :linux: * The Problem diff --git a/content/blog/2024-02-21-self-hosting-otter-wiki.org b/content/blog/2024-02-21-self-hosting-otter-wiki.org index a83fe1b..3a22652 100644 --- a/content/blog/2024-02-21-self-hosting-otter-wiki.org +++ b/content/blog/2024-02-21-self-hosting-otter-wiki.org @@ -1,8 +1,8 @@ -#+date: [2024-02-21 Wed 00:00:00] -#+title: self hosting guide: an otter wiki -#+description: Stepwise directions for installing Otter Wiki, configuring Docker Compose environment, and setting up Nginx reverse proxy for secure access. +#+date: [2024-02-21 Wed 00:00:00] +#+title: Self-Hosting Guide: Otter Wiki +#+description: How to self-host Otter Wiki with Docker Compose and Nginx. #+slug: self-hosting-otter-wiki -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * An Otter Wiki diff --git a/content/blog/2024-03-13-doom-emacs.org b/content/blog/2024-03-13-doom-emacs.org index 197fb38..51521bc 100644 --- a/content/blog/2024-03-13-doom-emacs.org +++ b/content/blog/2024-03-13-doom-emacs.org @@ -1,8 +1,8 @@ -#+date: [2024-03-13 Wed 00:00:00] -#+title: doom emacs & org mode setup -#+description: Technical manual covering installation, configuration files, and usage procedures for Doom Emacs and Org-Mode targeting note management and task organization. +#+date: [2024-03-13 Wed 00:00:00] +#+title: Doom Emacs and Org Mode Setup +#+description: How I set up Doom Emacs and Org Mode for notes and task management. #+slug: doom-emacs -#+filetags: :emacs: +#+filetags: :emacs: ** Screenshots diff --git a/content/blog/2024-03-15-self-hosting-ddns-updater.org b/content/blog/2024-03-15-self-hosting-ddns-updater.org index 239a8e3..f7f6bdb 100644 --- a/content/blog/2024-03-15-self-hosting-ddns-updater.org +++ b/content/blog/2024-03-15-self-hosting-ddns-updater.org @@ -1,8 +1,8 @@ -#+date: [2024-03-15 Fri 00:00:00] -#+title: self hosting guide: ddns updater -#+description: Step-by-step configuration guide for deploying a Dynamic DNS updater using Docker Compose, integrating with Cloudflare API, and securing with Nginx reverse proxy. +#+date: [2024-03-15 Fri 00:00:00] +#+title: Self-Hosting Guide: DDNS Updater +#+description: Deploying a DDNS updater with Docker Compose and Cloudflare. #+slug: self-hosting-ddns-updater -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: #+caption: DDNS Updater Web View #+attr_html: :alt An example of the DDNS Updater app running and showing that cleberg.net's IP has been updated on Cloudflare. diff --git a/content/blog/2024-03-29-org-blog.org b/content/blog/2024-03-29-org-blog.org index eea0623..814cd99 100644 --- a/content/blog/2024-03-29-org-blog.org +++ b/content/blog/2024-03-29-org-blog.org @@ -1,8 +1,8 @@ -#+date: [2024-03-29 Fri 00:00:00] -#+title: blogging with emacs org mode and weblorg -#+description: Instructional content for preparing and publishing blogs using Emacs Org-Mode, including setup of static site generators and content management workflows. +#+date: [2024-03-29 Fri 00:00:00] +#+title: Blogging with Emacs Org Mode and weblorg +#+description: How I set up this blog using Emacs Org Mode and weblorg. #+slug: org-blog -#+filetags: :emacs:web: +#+filetags: :emacs:web: First and foremost, apologies to those who subscribe via RSS as I know that my feed duplicated itself when I moved this blog over to org-mode last night. diff --git a/content/blog/2024-04-06-convert-onenote-to-markdown.org b/content/blog/2024-04-06-convert-onenote-to-markdown.org index 182aaf6..dd71238 100644 --- a/content/blog/2024-04-06-convert-onenote-to-markdown.org +++ b/content/blog/2024-04-06-convert-onenote-to-markdown.org @@ -1,8 +1,8 @@ -#+date: [2024-04-06 Sat 00:00:00] -#+title: onenote to org: escape the microsoft format -#+description: Detailed conversion instructions to transform OneNote document files into Markdown or Org-Mode formats using Pandoc command-line utility on Windows systems. +#+date: [2024-04-06 Sat 00:00:00] +#+title: OneNote to Org: Escape the Microsoft Format +#+description: Converting OneNote files to Markdown or Org Mode with Pandoc. #+slug: convert-onenote-to-markdown -#+filetags: :emacs: +#+filetags: :emacs: If you're looking to convert your OneNote content to another format, such as Markdown or Org-Mode, you're in luck. I use a solution that doesn't require diff --git a/content/blog/2024-04-08-docker-local-web-server.org b/content/blog/2024-04-08-docker-local-web-server.org index 7c22c59..14c8e25 100644 --- a/content/blog/2024-04-08-docker-local-web-server.org +++ b/content/blog/2024-04-08-docker-local-web-server.org @@ -1,8 +1,8 @@ -#+date: [2024-04-08 Mon 00:00:00] -#+title: local web dev server setup with docker & nginx -#+description: Instructions for setting up a local web development environment employing Docker Desktop and Nginx web server to facilitate development and testing workflows. +#+date: [2024-04-08 Mon 00:00:00] +#+title: Local Web Dev Server with Docker and Nginx +#+description: Setting up a local web server for development with Docker and Nginx. #+slug: docker-local-web-server -#+filetags: :self-hosting:web: +#+filetags: :self-hosting:web: When developing websites locally, I often use a simple Python web server to observe the changes. diff --git a/content/blog/2024-04-18-mu4e.org b/content/blog/2024-04-18-mu4e.org index 9fb7940..62757c0 100644 --- a/content/blog/2024-04-18-mu4e.org +++ b/content/blog/2024-04-18-mu4e.org @@ -1,8 +1,8 @@ -#+date: [2024-04-18 Thu 00:00:00] -#+title: configuring mu4e with doom emacs on macos -#+description: Stepwise procedure for installing, configuring, and using Mu4e email client within Doom Emacs on macOS for organized email management. +#+date: [2024-04-18 Thu 00:00:00] +#+title: mu4e with Doom Emacs on macOS +#+description: Setting up mu4e for email inside Doom Emacs on macOS. #+slug: mu4e -#+filetags: :emacs:linux: +#+filetags: :emacs:linux: This post was heavily inspired by [[https://macowners.club/posts/email-emacs-mu4e-macos/][Email setup in Emacs with Mu4e on macOS]], but with my own tweaks for a single-account configuration and some Doom-specific diff --git a/content/blog/2024-05-03-ubuntu-on-macos.org b/content/blog/2024-05-03-ubuntu-on-macos.org index 346bc3a..de9459f 100644 --- a/content/blog/2024-05-03-ubuntu-on-macos.org +++ b/content/blog/2024-05-03-ubuntu-on-macos.org @@ -1,8 +1,8 @@ -#+date: [2024-05-03 Fri 00:00:00] -#+title: orbstack on macos: running a full ubuntu linux environment -#+description: Technical guide outlining the installation and operation of OrbStack to run Ubuntu Linux containers natively on macOS systems with performance considerations. +#+date: [2024-05-03 Fri 00:00:00] +#+title: OrbStack on macOS: Running Ubuntu +#+description: Running a full Ubuntu environment on macOS using OrbStack. #+slug: ubuntu-on-macos -#+filetags: :linux: +#+filetags: :linux: Being a macOS user who previously used Linux for many years, I often find myself searching for alternatives to the Linux-native tools and methods that I had diff --git a/content/blog/2024-06-19-deprecated-trusted-gpg-fix.org b/content/blog/2024-06-19-deprecated-trusted-gpg-fix.org index 3892fdc..9106382 100644 --- a/content/blog/2024-06-19-deprecated-trusted-gpg-fix.org +++ b/content/blog/2024-06-19-deprecated-trusted-gpg-fix.org @@ -1,8 +1,8 @@ -#+date: [2024-06-19 Wednesday 08:00:00] -#+title: migrating ubuntu gpg keys to trusted.gpg.d -#+description: Technical instructions to relocate GPG keys from the deprecated trusted.gpg keyring to the supported trusted.gpg.d directory for system security maintenance. +#+date: [2024-06-19 Wed 08:00:00] +#+title: Ubuntu: Migrate GPG Keys to trusted.gpg.d +#+description: Moving Ubuntu GPG keys from the deprecated trusted.gpg to trusted.gpg.d. #+slug: deprecated-trusted-gpg-fix -#+filetags: :linux: +#+filetags: :linux: ** System Warning diff --git a/content/blog/2024-07-11-emacs-on-ipad.org b/content/blog/2024-07-11-emacs-on-ipad.org index b82c44a..81484af 100644 --- a/content/blog/2024-07-11-emacs-on-ipad.org +++ b/content/blog/2024-07-11-emacs-on-ipad.org @@ -1,8 +1,8 @@ -#+date: [2024-07-11 Thursday 20:24:02] -#+title: running emacs natively on apple silicon ipad -#+description: Procedural instructions for installing Emacs on iPadOS devices with Apple Silicon architecture, including configuration and operational guidance. +#+date: [2024-07-11 Thu 20:24:02] +#+title: Running Emacs Natively on an Apple Silicon iPad +#+description: Installing and running Emacs natively on an iPad with Apple Silicon. #+slug: emacs-on-ipad -#+filetags: :emacs: +#+filetags: :emacs: This post describes the process to install and use Emacs on the iPad Air 13-inch (M2). The iPad used in this post is running iPadOS 17.6. diff --git a/content/blog/2024-08-11-org-mode-features.org b/content/blog/2024-08-11-org-mode-features.org index 0a42a64..f21b395 100644 --- a/content/blog/2024-08-11-org-mode-features.org +++ b/content/blog/2024-08-11-org-mode-features.org @@ -1,8 +1,8 @@ -#+date: [2024-08-11 Sun 12:48:00] -#+title: org mode features: what i actually use -#+description: Detailed overview of essential Org-Mode functionalities focusing on task organization, note-taking, and workflow optimization. +#+date: [2024-08-11 Sun 12:48:00] +#+title: Org Mode Features: What I Actually Use +#+description: The Org Mode features I actually reach for, and how I use them. #+slug: org-mode-features -#+filetags: :emacs: +#+filetags: :emacs: * Cycling (Folding) diff --git a/content/blog/2024-08-25-n8n-sentiment-analysis.org b/content/blog/2024-08-25-n8n-sentiment-analysis.org index fa2d058..0c9717f 100644 --- a/content/blog/2024-08-25-n8n-sentiment-analysis.org +++ b/content/blog/2024-08-25-n8n-sentiment-analysis.org @@ -1,8 +1,8 @@ -#+date: [2024-08-25 Sunday 09:45:30] -#+title: automate email sentiment analysis with n8n -#+description: Detailed procedural steps for configuring an n8n workflow to perform sentiment analysis on incoming email messages, enabling automated classification based on sentiment. +#+date: [2024-08-25 Sun 09:45:30] +#+title: Email Sentiment Analysis with n8n +#+description: Using n8n to automatically classify incoming emails by sentiment. #+slug: n8n-sentiment-analysis -#+filetags: :self-hosting: +#+filetags: :self-hosting: * n8n diff --git a/content/blog/2024-09-20-prometheus-grafana-cloud.org b/content/blog/2024-09-20-prometheus-grafana-cloud.org index c6dbe3a..b74c69e 100644 --- a/content/blog/2024-09-20-prometheus-grafana-cloud.org +++ b/content/blog/2024-09-20-prometheus-grafana-cloud.org @@ -1,8 +1,8 @@ -#+date: [2024-09-20 Friday 13:38:52] -#+title: prometheus grafana: monitoring without paying for the cloud tier -#+description: Stepwise method for deploying Prometheus with Docker to monitor Linux servers and integrating Grafana Cloud for visualization and analysis of collected metrics. +#+date: [2024-09-20 Fri 13:38:52] +#+title: Prometheus and Grafana Cloud for Server Monitoring +#+description: Monitoring Linux servers with Prometheus and visualizing in Grafana Cloud. #+slug: prometheus-grafana-cloud -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: This tutorial will guide you through the process of: diff --git a/content/blog/2024-09-23-self-hosting-transmission.org b/content/blog/2024-09-23-self-hosting-transmission.org index 17ae06f..3bf3393 100644 --- a/content/blog/2024-09-23-self-hosting-transmission.org +++ b/content/blog/2024-09-23-self-hosting-transmission.org @@ -1,8 +1,8 @@ -#+date: [2024-09-23 Monday 19:52:20] -#+title: self hosting guide: transmission bittorrent client -#+description: Comprehensive setup instructions for installing and configuring the Transmission BitTorrent client on a Linux server, including securing remote access through Nginx reverse proxy. +#+date: [2024-09-23 Mon 19:52:20] +#+title: Self-Hosting Guide: Transmission +#+description: Setting up Transmission on a Linux server with Nginx for remote access. #+slug: self-hosting-transmission -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: #+begin_quote If you're torrenting anything sensitive, I *highly* recommend you use a VPN. diff --git a/content/blog/2024-10-31-continue-ollama-code-assistant.org b/content/blog/2024-10-31-continue-ollama-code-assistant.org index e9b4bf3..6015d24 100644 --- a/content/blog/2024-10-31-continue-ollama-code-assistant.org +++ b/content/blog/2024-10-31-continue-ollama-code-assistant.org @@ -1,8 +1,8 @@ -#+date: [2024-10-31 Thursday 11:01:05] -#+title: ollama code assistant setup in vs codium -#+description: Technical overview and configuration guide for incorporating Ollama as a code assistance tool within VS Codium and VS Code editors to enhance development workflows. +#+date: [2024-10-31 Thu 11:01:05] +#+title: Ollama Code Assistant in VS Codium +#+description: Setting up Ollama as a local code assistant in VS Codium. #+slug: continue-ollama-code-assistant -#+filetags: :linux: +#+filetags: :linux: * Background diff --git a/content/blog/2024-12-27-self-hosting-the-lounge.org b/content/blog/2024-12-27-self-hosting-the-lounge.org index 213a737..cea8cf6 100644 --- a/content/blog/2024-12-27-self-hosting-the-lounge.org +++ b/content/blog/2024-12-27-self-hosting-the-lounge.org @@ -1,8 +1,8 @@ -#+date: [2024-12-29 Sun 17:45:00] -#+title: self hosting guide: the lounge (irc) -#+description: Step-by-step instructions for installing and configuring The Lounge IRC web client on Linux systems utilizing Docker Compose to provide persistent and secure chat access. +#+date: [2024-12-29 Sun 17:45:00] +#+title: Self-Hosting Guide: The Lounge (IRC) +#+description: How to self-host The Lounge IRC client with Docker Compose. #+slug: self-hosting-the-lounge -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * The Lounge diff --git a/content/blog/2025-01-23-self-hosting-tandoor.org b/content/blog/2025-01-23-self-hosting-tandoor.org index fecb5cf..e06966d 100644 --- a/content/blog/2025-01-23-self-hosting-tandoor.org +++ b/content/blog/2025-01-23-self-hosting-tandoor.org @@ -1,8 +1,8 @@ -#+date: [2025-01-23 Thursday 20:44:45] -#+title: self hosting guide: tandoor recipe manager -#+description: Detailed tutorial on deploying Tandoor, an open-source recipe management application, including installation steps and configuration for self-hosted operation. +#+date: [2025-01-23 Thu 20:44:45] +#+title: Self-Hosting Guide: Tandoor +#+description: Self-hosting Tandoor, an open-source recipe manager. #+slug: self-hosting-tandoor -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Overview diff --git a/content/blog/2025-02-11-obscura-vpn.org b/content/blog/2025-02-11-obscura-vpn.org index 3a2954d..61823d3 100644 --- a/content/blog/2025-02-11-obscura-vpn.org +++ b/content/blog/2025-02-11-obscura-vpn.org @@ -1,8 +1,8 @@ -#+date: [2025-02-11 Tuesday 11:40:00] -#+title: obscura vpn: a two party protocol review -#+description: Analytical review outlining the features, implementation, and security aspects of Obscura VPN's two-party protocol in conjunction with Mullvad VPN. +#+date: [2025-02-11 Tue 11:40:00] +#+title: Obscura VPN: A Two-Party Protocol Review +#+description: A review of Obscura VPN and its two-party protocol with Mullvad. #+slug: obscura-vpn -#+filetags: :security: +#+filetags: :security: #+begin_quote This review is written at a high-level for users, not a technical deep-dive of diff --git a/content/blog/2025-02-24-email-migration.org b/content/blog/2025-02-24-email-migration.org index 3debca3..91c9e64 100644 --- a/content/blog/2025-02-24-email-migration.org +++ b/content/blog/2025-02-24-email-migration.org @@ -1,8 +1,8 @@ -#+date: [2025-02-25 Mon 19:20:05] -#+title: email migration: 5000+ emails, proton to migadu -#+description: Detailed instructions describing the process and considerations involved in transferring email data securely from Proton Mail to Migadu email hosting. +#+date: [2025-02-25 Mon 19:20:05] +#+title: Email Migration: 5,000+ Emails, Proton to Migadu +#+description: Moving 5,000+ emails from Proton Mail to Migadu. #+slug: email-migration -#+filetags: :privacy: +#+filetags: :privacy: * The Setup diff --git a/content/blog/2025-04-05-git-mirror.org b/content/blog/2025-04-05-git-mirror.org index bd4c3d9..374384d 100644 --- a/content/blog/2025-04-05-git-mirror.org +++ b/content/blog/2025-04-05-git-mirror.org @@ -1,8 +1,8 @@ -#+date: [2025-04-05 Saturday 23:04:54] -#+title: automating github to gitlab repository sync -#+description: Technical steps for setting up automated synchronization and mirroring of source code repositories from GitHub to GitLab for redundancy and repository management. +#+date: [2025-04-05 Sat 23:04:54] +#+title: Automating GitHub to GitLab Repository Sync +#+description: Automatically mirroring GitHub repos to GitLab for redundancy. #+slug: git-mirror -#+filetags: :self-hosting: +#+filetags: :self-hosting: This is a short post detailing how I maintained repositories on GitHub and mirrors on GitLab - including both public and private repositories. diff --git a/content/blog/2025-05-02-asahi-linux.org b/content/blog/2025-05-02-asahi-linux.org index dc79eea..46edb14 100644 --- a/content/blog/2025-05-02-asahi-linux.org +++ b/content/blog/2025-05-02-asahi-linux.org @@ -1,8 +1,8 @@ -#+date: [2025-05-02 Friday 21:10:00] -#+title: asahi linux: linux on apple silicon, current state -#+description: Documented analysis of installation procedure, system performance, and software compatibility for running Asahi Linux on the Apple M2 MacBook Pro 16-inch model. +#+date: [2025-05-02 Fri 21:10:00] +#+title: Asahi Linux: Linux on Apple Silicon +#+description: What it's actually like to run Asahi Linux on an Apple M2. #+slug: asahi-linux -#+filetags: :linux: +#+filetags: :linux: * Trying out Asahi Linux diff --git a/content/blog/2025-05-30-it-audit-career.org b/content/blog/2025-05-30-it-audit-career.org index c3e94ff..46620ae 100644 --- a/content/blog/2025-05-30-it-audit-career.org +++ b/content/blog/2025-05-30-it-audit-career.org @@ -1,8 +1,8 @@ -#+date: [2025-05-30 Friday 10:53:28] -#+title: it audit career: skills that matter vs. skills that look good -#+description: Instructional content detailing actionable knowledge areas including artificial intelligence, blockchain, cloud computing, DevOps, and automation relevant for audit professionals. +#+date: [2025-05-30 Fri 10:53:28] +#+title: IT Audit Career: Skills That Matter +#+description: What skills actually matter in IT audit vs. what just looks good on paper. #+slug: it-audit-career -#+filetags: :audit: +#+filetags: :audit: * Introduction diff --git a/content/blog/2025-06-02-private-ios-apps.org b/content/blog/2025-06-02-private-ios-apps.org index 6bb93f4..0e4e638 100644 --- a/content/blog/2025-06-02-private-ios-apps.org +++ b/content/blog/2025-06-02-private-ios-apps.org @@ -1,8 +1,8 @@ -#+date: [2025-06-03 Tue 11:38:40] -#+title: private ios apps: what i actually use -#+description: Curated listing of iOS applications prioritized for privacy preservation and data security, targeted at users requiring minimal data exposure. +#+date: [2025-06-03 Tue 11:38:40] +#+title: Private iOS Apps: What I Actually Use +#+description: The iOS apps I use that prioritize privacy. #+slug: private-ios-apps -#+filetags: :linux:privacy: +#+filetags: :linux:privacy: The world is evolving into a privacy nightmare, where our own devices are being used by numerous parties to constantly track and report on our activities. This diff --git a/content/blog/2025-09-04-website-redesign.org b/content/blog/2025-09-04-website-redesign.org index 82fceac..cf4c71b 100644 --- a/content/blog/2025-09-04-website-redesign.org +++ b/content/blog/2025-09-04-website-redesign.org @@ -1,8 +1,8 @@ -#+date: [2025-09-05 Fri 10:21:00] -#+title: website redesign 2025: what changed -#+description: Read this post to understand my latest website redesign and the context for the refresh. +#+date: [2025-09-05 Fri 10:21:00] +#+title: Website Redesign 2025 +#+description: An overview of the 2025 redesign of this site. #+slug: human-website-design -#+filetags: :web: +#+filetags: :web: #+begin_quote /Please note that this redesign is a work-in-progress and is not complete. The diff --git a/content/blog/2025-09-25-minimalist-website-redesign.org b/content/blog/2025-09-25-minimalist-website-redesign.org index e88f3a8..0f4bccc 100644 --- a/content/blog/2025-09-25-minimalist-website-redesign.org +++ b/content/blog/2025-09-25-minimalist-website-redesign.org @@ -1,8 +1,8 @@ -#+date: [2025-09-25 Thu 21:08:00] -#+title: minimalist site: strip it down -#+description: This post details a complete redesign of a blog post, stripping away extraneous CSS and HTML elements to prioritize readability and user experience. +#+date: [2025-09-25 Thu 21:08:00] +#+title: Minimalist Site: Strip It Down +#+description: A complete redesign stripping away extraneous CSS and HTML for readability. #+slug: minimalist-website-redesign -#+filetags: :web: +#+filetags: :web: I know what you're thinking: "ANOTHER blog post about redesigning the website?" diff --git a/content/blog/2025-10-03-privacy-toolkit.org b/content/blog/2025-10-03-privacy-toolkit.org index 1160462..a213d0e 100644 --- a/content/blog/2025-10-03-privacy-toolkit.org +++ b/content/blog/2025-10-03-privacy-toolkit.org @@ -1,8 +1,8 @@ -#+date: [2025-10-03 Fri 4:23:00] -#+title: my privacy toolkit -#+description: Learn about the tools I use to keep my life private and data secure. +#+date: [2025-10-03 Fri 4:23:00] +#+title: My Privacy Toolkit +#+description: The tools I use to keep my data private. #+slug: privacy-toolkit -#+filetags: :privacy: +#+filetags: :privacy: * VPN diff --git a/content/blog/2025-10-06-rocket-league-macos.org b/content/blog/2025-10-06-rocket-league-macos.org index f28cd9a..c22456f 100644 --- a/content/blog/2025-10-06-rocket-league-macos.org +++ b/content/blog/2025-10-06-rocket-league-macos.org @@ -1,8 +1,8 @@ -#+date: [2025-10-06 Mon 13:11:00] -#+title: playing rocket league on macos via crossover -#+description: Learn how to play Rocket League on macOS via CrossOver. +#+date: [2025-10-06 Mon 13:11:00] +#+title: Rocket League on macOS via CrossOver +#+description: Getting Rocket League running on macOS through CrossOver. #+slug: rocket-league-macos -#+filetags: :linux: +#+filetags: :linux: #+caption: Rocket League on macOS #+attr_html: :alt The Rocket League launch screen on macOS. diff --git a/content/blog/2025-10-24-digital-garden.org b/content/blog/2025-10-24-digital-garden.org index 6894f48..6f5a1b1 100644 --- a/content/blog/2025-10-24-digital-garden.org +++ b/content/blog/2025-10-24-digital-garden.org @@ -1,8 +1,8 @@ -#+date: [2025-10-24 Fri 19:41:41] -#+title: digital garden -#+description: A post dedicated to digital gardens, an online space for personal knowledge management, creative exploration, and reflection. +#+date: [2025-10-24 Fri 19:41:41] +#+title: Digital Garden +#+description: What a digital garden is and how I think about mine. #+slug: digital-garden -#+filetags: :web: +#+filetags: :web: * What's a Digital Garden? diff --git a/content/blog/2025-11-02-aerc-macos.org b/content/blog/2025-11-02-aerc-macos.org index 5c5bdd3..320f7a9 100644 --- a/content/blog/2025-11-02-aerc-macos.org +++ b/content/blog/2025-11-02-aerc-macos.org @@ -1,8 +1,8 @@ -#+date: [2025-11-02 Sun 10:07:14] -#+title: using aerc on macos -#+description: Learn how I use aerc, a TUI email client, on macOS. +#+date: [2025-11-02 Sun 10:07:14] +#+title: Using aerc on macOS +#+description: How I use aerc, a TUI email client, on macOS. #+slug: aerc-macos -#+filetags: :linux: +#+filetags: :linux: #+caption: aerc-mail #+attr_html: :alt An image of aerc with an email opened in the reader window. diff --git a/content/blog/2025-11-13-wcag.org b/content/blog/2025-11-13-wcag.org index e21bfb5..cf77004 100644 --- a/content/blog/2025-11-13-wcag.org +++ b/content/blog/2025-11-13-wcag.org @@ -1,8 +1,8 @@ -#+date: [2025-11-14 Fri 19:46:30] -#+title: wcag compliance: accessibility as a real constraint, not a checkbox -#+description: Read on to learn more about how I've ensured my humble site is compliant with WCAG 2. +#+date: [2025-11-14 Fri 19:46:30] +#+title: WCAG Compliance: Accessibility as a Real Constraint +#+description: How I've made this site compliant with WCAG 2. #+slug: wcag -#+filetags: :audit:web: +#+filetags: :audit:web: * WCAG 2 diff --git a/content/blog/2025-11-23-it-audit-ai.org b/content/blog/2025-11-23-it-audit-ai.org index e73b030..59626e5 100644 --- a/content/blog/2025-11-23-it-audit-ai.org +++ b/content/blog/2025-11-23-it-audit-ai.org @@ -1,8 +1,8 @@ -#+date: [2025-11-23 17:43:57] -#+title: it audit ai: where it helps and where it's theater -#+description: Learn how I'm currently using AI in my role in Technology Assurance (i.e., IT Audit) at KPMG. +#+date: [2025-11-23 Sun 17:43:57] +#+title: IT Audit and AI: Where It Helps and Where It's Theater +#+description: How I'm currently using AI in my Technology Assurance role at KPMG. #+slug: it-audit-ai -#+filetags: :audit: +#+filetags: :audit: * My AI Toolkit diff --git a/content/blog/2025-12-06-self-hosting-tor.org b/content/blog/2025-12-06-self-hosting-tor.org index ee95cf5..893d40b 100644 --- a/content/blog/2025-12-06-self-hosting-tor.org +++ b/content/blog/2025-12-06-self-hosting-tor.org @@ -1,8 +1,8 @@ -#+date: [2025-12-06 Sat 14:13:00] -#+title: self hosting guide: tor websites -#+description: Learn how to host your own website on Tor with an Onion Address in a few short steps! +#+date: [2025-12-06 Sat 14:13:00] +#+title: Self-Hosting Guide: Tor Websites +#+description: How to host a website on Tor with an onion address. #+slug: self-hosting-tor -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Installation diff --git a/content/blog/2025-12-20-self-hosting-home-assistant.org b/content/blog/2025-12-20-self-hosting-home-assistant.org index 03aaef8..88f19b9 100644 --- a/content/blog/2025-12-20-self-hosting-home-assistant.org +++ b/content/blog/2025-12-20-self-hosting-home-assistant.org @@ -1,8 +1,8 @@ -#+date: [2025-12-20 Sat 20:27:08] -#+title: self hosting guide: home assistant -#+description: A guide to configuring and customizing Home Assistant. +#+date: [2025-12-20 Sat 20:27:08] +#+title: Self-Hosting Guide: Home Assistant +#+description: Configuring and customizing Home Assistant. #+slug: self-hosting-home-assistant -#+filetags: :linux:self-hosting: +#+filetags: :linux:self-hosting: * Overview diff --git a/content/blog/2026-01-31-emacs-carnival-2026-01-this-year-i-will.org b/content/blog/2026-01-31-emacs-carnival-2026-01-this-year-i-will.org index 44c7256..16650af 100644 --- a/content/blog/2026-01-31-emacs-carnival-2026-01-this-year-i-will.org +++ b/content/blog/2026-01-31-emacs-carnival-2026-01-this-year-i-will.org @@ -1,8 +1,8 @@ -#+date: [2026-01-31 Sat 20:32:11] -#+title: emacs carnival: “this year, i will...” -#+description: My response to the Emacs Carnival post for January 2026. +#+date: [2026-01-31 Sat 20:32:11] +#+title: Emacs Carnival: This Year, I Will... +#+description: My response to the Emacs Carnival prompt for January 2026. #+slug: emacs-carnival-2026-01-this-year-i-will -#+filetags: :emacs:personal: +#+filetags: :emacs:personal: This year in Emacs, I expect to do a lot. However, here are some actionable goals for myself that should have a positive impact as I start out 2026. diff --git a/content/blog/2026-02-02-emacs-carnival-2026-02-completion.org b/content/blog/2026-02-02-emacs-carnival-2026-02-completion.org index d45c82c..8f38cfa 100644 --- a/content/blog/2026-02-02-emacs-carnival-2026-02-completion.org +++ b/content/blog/2026-02-02-emacs-carnival-2026-02-completion.org @@ -1,8 +1,8 @@ -#+date: [2026-02-02 18:40:21] -#+title: emacs carnival: "completion" -#+description: My response to the Emacs Carnival post for February 2026. +#+date: [2026-02-02 Mon 18:40:21] +#+title: Emacs Carnival: Completion +#+description: My response to the Emacs Carnival prompt for February 2026. #+slug: emacs-carnival-2026-02-completion -#+filetags: :emacs:personal: +#+filetags: :emacs:personal: I'm having a great time with the Emacs Carnival, as it has inspired me to write two posts in such a short time. It's been a much needed inspiration to write diff --git a/content/blog/2026-02-07-indieweb-carnival-2026-02-intersecting-interests.org b/content/blog/2026-02-07-indieweb-carnival-2026-02-intersecting-interests.org index 9f4c0a4..059dc51 100644 --- a/content/blog/2026-02-07-indieweb-carnival-2026-02-intersecting-interests.org +++ b/content/blog/2026-02-07-indieweb-carnival-2026-02-intersecting-interests.org @@ -1,8 +1,8 @@ -#+date: [2026-02-07 Sat 17:46:00] -#+title: indieweb carnival: "intersecting interests" -#+description: Contrasting my passions with technology vs. natural hobbies. +#+date: [2026-02-07 Sat 17:46:00] +#+title: IndieWeb Carnival: Intersecting Interests +#+description: Contrasting my passion for technology with my interest in natural hobbies. #+slug: indiweb-carnival-2026-02-intersecting-interests -#+filetags: :personal:web: +#+filetags: :personal:web: I thought about this topic for a long time today before starting to write this post, as I don't think of myself as someone with intersecting interests. I diff --git a/content/blog/2026-02-08-gnu-stow.org b/content/blog/2026-02-08-gnu-stow.org index 2e6f203..0e9fccf 100644 --- a/content/blog/2026-02-08-gnu-stow.org +++ b/content/blog/2026-02-08-gnu-stow.org @@ -1,8 +1,8 @@ -#+date: [2026-02-08 Sun 12:17:42] -#+title: managing my dotfiles with gnu stow and git -#+description: Learn how I use GNU Stow to manage my user dotfiles and configurations. +#+date: [2026-02-08 Sun 12:17:42] +#+title: Managing Dotfiles with GNU Stow and Git +#+description: How I use GNU Stow to manage my dotfiles and configs across machines. #+slug: gnu-stow -#+filetags: :emacs:linux: +#+filetags: :emacs:linux: * What is GNU Stow? diff --git a/content/blog/2026-02-12-automating-weblorg-deployments.org b/content/blog/2026-02-12-automating-weblorg-deployments.org index 3735a24..9cb34cb 100644 --- a/content/blog/2026-02-12-automating-weblorg-deployments.org +++ b/content/blog/2026-02-12-automating-weblorg-deployments.org @@ -1,8 +1,8 @@ -#+date: [2026-02-12 Thu 20:26:32] -#+title: weblorg deployments: automated, no github actions dependency -#+description: Learn how I've automated all deployment for my org-mode blog with GitHub Actions and a custom Docker image. +#+date: [2026-02-12 Thu 20:26:32] +#+title: Automating weblorg Deployments +#+description: How I automated deployment for this org-mode blog without GitHub Actions. #+slug: automating-weblorg-deployments -#+filetags: :self-hosting:web: +#+filetags: :self-hosting:web: As I've mentioned in previous posts, I utilize a unique pipeline to draft posts, compose my website, and to build and deploy the static files. diff --git a/content/blog/2026-02-21-auditing-aws-iam.org b/content/blog/2026-02-21-auditing-aws-iam.org index f26f819..ddcb563 100644 --- a/content/blog/2026-02-21-auditing-aws-iam.org +++ b/content/blog/2026-02-21-auditing-aws-iam.org @@ -1,8 +1,8 @@ -#+date: [2026-02-21 Sat 18:58:39] -#+title: auditing aws iam users -#+description: Learn how to audit IAM user assignments in AWS. +#+date: [2026-02-21 Sat 18:58:39] +#+title: Auditing AWS IAM Users +#+description: How to audit IAM user assignments in AWS. #+slug: auditing-aws-iam -#+filetags: :audit: +#+filetags: :audit: If you've ever asked an IT team for a list of who has access to an AWS account, you've probably received a spreadsheet that was already out of date. Or worse, diff --git a/content/blog/2026-02-21-auditing-aws-passwords.org b/content/blog/2026-02-21-auditing-aws-passwords.org index c6e9cca..734dc9c 100644 --- a/content/blog/2026-02-21-auditing-aws-passwords.org +++ b/content/blog/2026-02-21-auditing-aws-passwords.org @@ -1,8 +1,8 @@ -#+date: [2026-02-21 Sat 21:13:45] -#+title: auditing aws passwords -#+description: Learn how to audit passwords in AWS. +#+date: [2026-02-21 Sat 21:13:45] +#+title: Auditing AWS Passwords +#+description: How to audit password policies and usage in AWS. #+slug: auditing-aws-passwords -#+filetags: :audit: +#+filetags: :audit: One of the first controls an IT Auditor learns is how to audit passwords in any number of IT systems. However, things have changed with the introduction of diff --git a/content/blog/2026-03-03-auditing-aws-s3.org b/content/blog/2026-03-03-auditing-aws-s3.org index 9108f91..553878b 100644 --- a/content/blog/2026-03-03-auditing-aws-s3.org +++ b/content/blog/2026-03-03-auditing-aws-s3.org @@ -1,8 +1,8 @@ -#+date: [2026-03-03 Tue 18:50:23] -#+title: auditing aws s3 buckets -#+description: Learn how to audit AWS S3 buckets for public access. +#+date: [2026-03-03 Tue 18:50:23] +#+title: Auditing AWS S3 Buckets +#+description: How to audit AWS S3 buckets for public access and misconfigurations. #+slug: auditing-aws-s3 -#+filetags: :audit: +#+filetags: :audit: This is the latest in my series of posts on auditing AWS, a cloud platform that has existed for around two decades but can still be a mystery to auditors who @@ -79,7 +79,7 @@ The reverse is also true. A bucket with no public policy and no public ACLs is still at risk if PAB is missing or incomplete, because nothing is in place to prevent a future policy or ACL change from exposing it. -M* What the Script Does +* What the Script Does The script lists every bucket in the account, determines each bucket's region, runs all three checks against it, and appends the results to a CSV file. diff --git a/content/guides/index.org b/content/guides/index.org index e2911a6..475d278 100644 --- a/content/guides/index.org +++ b/content/guides/index.org @@ -1,4 +1,4 @@ -#+title: guides +#+title: Guides #+slug: index #+options: toc:nil diff --git a/content/salary/index.org b/content/salary/index.org index 046605b..4e875b8 100644 --- a/content/salary/index.org +++ b/content/salary/index.org @@ -1,4 +1,4 @@ -#+title: salary +#+title: Salary #+slug: index #+options: toc:nil diff --git a/screenshots/dark.png b/screenshots/dark.png Binary files differdeleted file mode 100644 index a79846d..0000000 --- a/screenshots/dark.png +++ /dev/null diff --git a/screenshots/light.png b/screenshots/light.png Binary files differdeleted file mode 100644 index a5ffb1f..0000000 --- a/screenshots/light.png +++ /dev/null diff --git a/tag_preview.py b/tag_preview.py deleted file mode 100644 index d3e28c7..0000000 --- a/tag_preview.py +++ /dev/null @@ -1,177 +0,0 @@ -#!/usr/bin/env python3 -""" -Preview tag assignments for all blog posts. -Run with --write to actually add #+filetags to org files. -""" -import re -import sys -from pathlib import Path - -CONTENT_DIR = Path("./content/blog") - -# Explicit overrides take priority over rules -OVERRIDES = { - "2018-11-28-cpp-compiler": ["linux"], - "2019-12-16-password-security": ["security"], - "2020-07-26-business-analysis": ["audit"], - "2020-08-22-redirect-github-pages": ["web"], - "2020-09-22-internal-audit": ["audit"], - "2020-12-28-neon-drive": ["personal"], - "2020-12-29-zork": ["personal"], - "2021-08-25-audit-sampling": ["audit"], - "2021-12-04-cisa": ["audit"], - "2023-05-22-burnout": ["personal"], - "2023-06-20-audit-review-template": ["audit"], - "2023-08-18-agile-auditing": ["audit"], - "2025-05-30-it-audit-career": ["audit"], - "2025-11-13-wcag": ["audit", "web"], - "2025-11-23-it-audit-ai": ["audit"], - "2026-02-21-auditing-aws-iam": ["audit"], - "2026-02-21-auditing-aws-passwords": ["audit"], - "2026-03-03-auditing-aws-s3": ["audit"], - "2020-09-01-visual-recognition": ["linux"], - "2024-01-26-audit-dashboard": ["audit"], - "2023-09-19-audit-sql-scripts": ["audit"], - "2021-04-28-photography": ["personal"], - "2022-06-22-daily-poetry": ["personal"], - "2020-09-25-happiness-map": ["personal"], - "2022-03-03-financial-database": ["self-hosting"], - "2023-01-03-recent-website-changes": ["personal", "web"], - "2025-09-25-minimalist-website-redesign": ["web"], - "2026-02-07-indieweb-carnival-2026-02-intersecting-interests": ["personal", "web"], -} - -TAG_RULES = { - "audit": [ - "audit", "cisa", "ansoff", - ], - "emacs": [ - "emacs", "org-mode", "org-blog", "mu4e", "doom-emacs", - "emacs-carnival", "gnu-stow", - ], - "linux": [ - "linux", "ubuntu", "debian", "fedora", "alpine", - "customizing-ubuntu", "linux-software", "linux-display", - "mtp-linux", "serenity-os", "fedora-i3", "fedora-login", - "flatpak", "zfs", "ubuntu-emergency", "ubuntu-on-macos", - "steam-on-ntfs", "bash-it", "byobu", "scli", - "terminal-lifestyle", "curseradio", "st", "flac-to-opus", - "pinetime", "server-build", "macos", "macos-customization", - "deprecated-trusted-gpg", "exiftool", "graphene", - "asahi", "aerc", "rocket-league", - ], - "self-hosting": [ - "self-hosting", "homelab", "vps-web-server", "git-server", - "plex", "nextcloud", "wireguard", "backblaze", "syncthing", - "docker", "n8n", "prometheus-grafana", "transmission", - "goaccess", "unifi", "git-mirror", "automating-weblorg", - ], - "security": [ - "aes-encryption", "cryptography", "gnupg", "password", - "server-hardening", "ssh-mfa", "ufw", "hardening", - "authelia", "wireguard", "njalla-dns", "cloudflare-dns", - "ditching-cloudflare", "obscura-vpn", - ], - "privacy": [ - "privacy", "graphene-os", "session-messenger", "fediverse", - "digital-minimalism", "privacy-com", "local-llm", - "email-migration", "dont-say-hello", - ], - "web": [ - "nginx", "apache", "php", "css", "redirect", "website-redesign", - "gemini", "indieweb", "weblorg", "html", "digital-garden", - "tableau", - ], - "personal": [ - "mediocrity", "burnout", "tuesday", "leaving-the-office", - "vaporwave", "video-game-sales", "reliable-notes", - "mass-unlike-tumblr", "changing-git-authors", "delete-gitlab", - "clone-github", "this-year-i-will", "completion", - "seum", "neon-drive", "zork", - ], -} - -def assign_tags(slug: str, title: str) -> list[str]: - if slug in OVERRIDES: - return OVERRIDES[slug] - slug_lower = slug.lower() - title_lower = title.lower() - tags = [] - for tag, patterns in TAG_RULES.items(): - for pattern in patterns: - if pattern in slug_lower or pattern in title_lower: - if tag not in tags: - tags.append(tag) - break - return sorted(tags) - -def get_title(path: Path) -> str: - title_pat = re.compile(r"^#\+title:\s*(.+)$", re.IGNORECASE) - with path.open("r", encoding="utf-8") as f: - for line in f: - m = title_pat.match(line) - if m: - return m.group(1).strip() - return path.stem - -def has_filetags(path: Path) -> bool: - with path.open("r", encoding="utf-8") as f: - for line in f: - if re.match(r"^#\+filetags:", line, re.IGNORECASE): - return True - return False - -def write_filetags(path: Path, tags: list[str]): - tag_str = ":" + ":".join(tags) + ":" - content = path.read_text(encoding="utf-8") - slug_pat = re.compile(r"(#\+slug:\s*.+\n)", re.IGNORECASE) - m = slug_pat.search(content) - if m: - insert_at = m.end() - new_content = content[:insert_at] + f"#+filetags: {tag_str}\n" + content[insert_at:] - path.write_text(new_content, encoding="utf-8") - return True - return False - -write_mode = "--write" in sys.argv - -untagged = [] -rows = [] -for org_path in sorted(CONTENT_DIR.glob("*.org")): - slug = org_path.stem - title = get_title(org_path) - tags = assign_tags(slug, title) - if not tags: - untagged.append((slug, title)) - rows.append((slug, title, tags)) - -print(f"{'SLUG':<50} {'TAGS'}") -print("-" * 85) -for slug, title, tags in rows: - tag_str = ", ".join(tags) if tags else "-- UNTAGGED --" - print(f"{slug:<50} {tag_str}") - -print(f"\nTotal: {len(rows)} posts | Untagged: {len(untagged)}") -if untagged: - print("\nUntagged posts:") - for slug, title in untagged: - print(f" {slug}") - -if write_mode: - written = 0 - skipped = 0 - for org_path in sorted(CONTENT_DIR.glob("*.org")): - slug = org_path.stem - title = get_title(org_path) - tags = assign_tags(slug, title) - if not tags: - skipped += 1 - continue - if has_filetags(org_path): - skipped += 1 - continue - if write_filetags(org_path, tags): - written += 1 - print(f"\nWrote filetags to {written} files, skipped {skipped}.") -else: - print("\nRun with --write to apply filetags to org files.") diff --git a/theme/static/favicon.svg b/theme/static/favicon.svg deleted file mode 100644 index b6a89f2..0000000 --- a/theme/static/favicon.svg +++ /dev/null @@ -1,14 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1500 1499.999933"> - <style> - path { fill: #111111; } - @media (prefers-color-scheme: dark) { path { fill: #ffffff; } } - </style> - <defs> - <clipPath id="c"> - <path d="M 246.484375 243.425781 L 1253.730469 243.425781 L 1253.730469 1256.457031 L 246.484375 1256.457031 Z" clip-rule="nonzero"/> - </clipPath> - </defs> - <g clip-path="url(#c)"> - <path fill-rule="nonzero" d="M 562.695312 907.28125 C 514.085938 881.21875 396.300781 818.089844 368.757812 795.410156 C 351.777344 781.4375 345.167969 771.671875 345.152344 765.117188 C 345.152344 762.648438 346.535156 760.578125 348.84375 758.890625 C 352.042969 756.558594 356.808594 754.898438 362.398438 753.796875 C 381.738281 750.015625 408.554688 753.210938 419.015625 759.636719 C 433.589844 783.507812 445.734375 801.542969 451.113281 804.4375 C 442.617188 780.46875 429.820312 749.761719 426.273438 724.375 C 422.824219 699.628906 421.839844 674.320312 423.527344 648.550781 C 424.203125 638.359375 425.214844 628.765625 426.183594 619.714844 C 431 574.277344 434.464844 541.792969 390.460938 495.28125 C 384.738281 489.226562 377.890625 482.316406 370.613281 474.960938 C 321.140625 424.960938 250.707031 353.765625 261.152344 267.800781 C 315.074219 306.644531 342.925781 327.1875 407.71875 334.761719 C 431.320312 337.511719 456.527344 336.820312 478.058594 329.164062 C 516.382812 315.507812 544.5625 284.574219 556.761719 269.183594 C 585.796875 331.273438 570.703125 413.90625 557.585938 485.699219 C 555.382812 497.800781 553.21875 509.597656 551.347656 520.890625 L 550.988281 518.554688 C 548.242188 492 533.292969 467.066406 523.683594 458.480469 C 543.953125 487.382812 544.246094 547.246094 546.410156 585.914062 C 548.929688 630.609375 564.742188 669.382812 589.390625 702.851562 C 598.3125 714.96875 608.402344 726.378906 619.417969 737.101562 C 631.074219 748.449219 648.730469 762.6875 668.375 775.730469 C 694.527344 793.078125 719.457031 807.15625 744.265625 818.808594 C 813.890625 851.503906 901.886719 873.054688 977.726562 889.058594 C 1010.898438 896.054688 1096.996094 920.363281 1158.511719 953.554688 C 1194.910156 973.207031 1222.335938 995.527344 1223.371094 1018.152344 C 1224.523438 1043.605469 1204.757812 1067.1875 1177.46875 1086.679688 C 1137.429688 1115.277344 1081.878906 1134.636719 1050.003906 1139.148438 C 1031.6875 1141.75 1013.195312 1143.371094 994.636719 1144.058594 C 982.558594 1144.5 970.476562 1144.539062 958.371094 1144.191406 C 968.617188 1130.5 979.1875 1114.320312 979.929688 1104.875 C 941.871094 1141.261719 909.90625 1170.003906 864.242188 1199.265625 C 825.28125 1224.238281 781.023438 1245.164062 744.679688 1242.683594 C 727.714844 1241.515625 717.398438 1236.394531 712.25 1228.964844 C 708.503906 1223.5625 707.335938 1216.6875 708.210938 1209.125 C 709.167969 1200.882812 712.5 1191.832031 717.585938 1182.796875 C 731.828125 1157.542969 759.238281 1133.378906 786.851562 1127.394531 C 807.09375 1134.054688 858.996094 1138.113281 869.710938 1127.019531 C 850.992188 1126.398438 825.226562 1126.160156 785.628906 1112.675781 C 726.160156 1092.4375 669.730469 1062.9375 619.5 1025.476562 C 570.769531 989.117188 527.917969 945.246094 493.855469 895.03125 C 490.457031 890.042969 487.257812 885.117188 484.230469 880.289062 C 512.519531 895.828125 553.472656 909.324219 562.695312 907.28125 Z M 849.492188 843.15625 C 822.199219 835.515625 746.46875 809.984375 712.699219 787.941406 C 727.59375 784.449219 741.570312 775.574219 755.640625 766.617188 C 778.648438 751.992188 801.984375 737.167969 827.550781 750.769531 C 865.59375 771.007812 855.625 821.660156 849.492188 843.15625 Z M 1187.714844 1095.996094 C 1193.289062 1108.085938 1206.632812 1127.722656 1213.546875 1132.421875 C 1206.738281 1121.804688 1197.832031 1107.753906 1195.359375 1090.117188 C 1220.78125 1069.574219 1238.171875 1044.957031 1236.910156 1017.554688 C 1236.273438 1003.515625 1228.519531 990.085938 1215.964844 977.492188 C 1227.179688 964.300781 1238.597656 955.117188 1253.757812 947.238281 C 1236.328125 950.964844 1222.746094 958.582031 1210.03125 971.890625 C 1197.898438 961.117188 1182.367188 950.980469 1165.015625 941.609375 C 1102.1875 907.703125 1014.351562 882.890625 980.527344 875.761719 C 940.914062 867.402344 901.410156 858.167969 862.488281 846.980469 C 869.40625 822.773438 880.914062 763.816406 833.9375 738.800781 C 801.347656 721.457031 774.664062 738.429688 748.339844 755.164062 C 714.078125 776.953125 704.867188 785.246094 675.054688 764.835938 C 645.808594 744.8125 620.042969 721.589844 600.316406 694.808594 C 569.453125 652.917969 553.351562 602.132812 561.96875 541.046875 C 564.328125 524.25 567.570312 506.546875 570.925781 488.140625 C 585.132812 410.402344 601.589844 320.296875 563.734375 253.046875 L 558.328125 243.4375 L 552.183594 252.632812 C 552.089844 252.765625 521.253906 299.34375 473.464844 316.371094 C 454.113281 323.269531 431.039062 323.839844 409.285156 321.292969 C 344.542969 313.730469 305.648438 285.066406 251.222656 245.695312 L 249.367188 255.355469 C 230.609375 352.796875 307.546875 430.535156 360.976562 484.542969 C 367.878906 491.511719 374.386719 498.078125 380.570312 504.636719 C 420.316406 546.636719 417.140625 576.492188 412.707031 618.253906 C 411.726562 627.359375 410.703125 637.019531 410.011719 647.636719 C 408.25 674.414062 409.269531 700.664062 412.839844 726.246094 C 413.664062 732.140625 414.621094 738.003906 415.707031 743.84375 C 400.136719 739 377.105469 737.089844 359.808594 740.472656 C 352.363281 741.933594 345.738281 744.363281 340.839844 747.929688 C 335.050781 752.152344 331.585938 757.804688 331.585938 765.128906 C 331.613281 775.546875 339.617188 789.015625 360.15625 805.921875 C 375.710938 818.742188 417.804688 843.34375 460.855469 867.351562 C 464.039062 873.097656 467.453125 878.921875 471.089844 884.828125 C 474.886719 890.996094 478.734375 896.941406 482.613281 902.675781 C 517.539062 954.148438 561.460938 999.121094 611.414062 1036.371094 C 658.433594 1071.457031 710.828125 1099.710938 766.101562 1120.132812 C 741.265625 1131.347656 718.578125 1153.363281 705.757812 1176.121094 C 699.824219 1186.632812 695.921875 1197.433594 694.738281 1207.558594 C 693.503906 1218.375 695.347656 1228.417969 701.085938 1236.699219 C 708.519531 1247.433594 722.175781 1254.761719 743.75 1256.234375 C 810.464844 1260.796875 899.523438 1194.117188 943.382812 1157.15625 C 960.628906 1158.085938 977.910156 1158.246094 995.15625 1157.621094 C 1014.125 1156.917969 1033.054688 1155.246094 1051.890625 1152.578125 C 1095.21875 1146.4375 1152.65625 1121.753906 1187.714844 1095.996094"/> - </g> -</svg>
\ No newline at end of file diff --git a/theme/static/koi-hr.svg b/theme/static/koi-hr.svg deleted file mode 100644 index 1062b04..0000000 --- a/theme/static/koi-hr.svg +++ /dev/null @@ -1,7 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1500 1500"> - <style> - path { fill: #111111; } - @media (prefers-color-scheme: dark) { path { fill: #F0EDE8; } } - </style> - <path fill-rule="nonzero" d="M 562.695312 907.28125 C 514.085938 881.21875 396.300781 818.089844 368.757812 795.410156 C 351.777344 781.4375 345.167969 771.671875 345.152344 765.117188 C 345.152344 762.648438 346.535156 760.578125 348.84375 758.890625 C 352.042969 756.558594 356.808594 754.898438 362.398438 753.796875 C 381.738281 750.015625 408.554688 753.210938 419.015625 759.636719 C 433.589844 783.507812 445.734375 801.542969 451.113281 804.4375 C 442.617188 780.46875 429.820312 749.761719 426.273438 724.375 C 422.824219 699.628906 421.839844 674.320312 423.527344 648.550781 C 424.203125 638.359375 425.214844 628.765625 426.183594 619.714844 C 431 574.277344 434.464844 541.792969 390.460938 495.28125 C 384.738281 489.226562 377.890625 482.316406 370.613281 474.960938 C 321.140625 424.960938 250.707031 353.765625 261.152344 267.800781 C 315.074219 306.644531 342.925781 327.1875 407.71875 334.761719 C 431.320312 337.511719 456.527344 336.820312 478.058594 329.164062 C 516.382812 315.507812 544.5625 284.574219 556.761719 269.183594 C 585.796875 331.273438 570.703125 413.90625 557.585938 485.699219 C 555.382812 497.800781 553.21875 509.597656 551.347656 520.890625 L 550.988281 518.554688 C 548.242188 492 533.292969 467.066406 523.683594 458.480469 C 543.953125 487.382812 544.246094 547.246094 546.410156 585.914062 C 548.929688 630.609375 564.742188 669.382812 589.390625 702.851562 C 598.3125 714.96875 608.402344 726.378906 619.417969 737.101562 C 631.074219 748.449219 648.730469 762.6875 668.375 775.730469 C 694.527344 793.078125 719.457031 807.15625 744.265625 818.808594 C 813.890625 851.503906 901.886719 873.054688 977.726562 889.058594 C 1010.898438 896.054688 1096.996094 920.363281 1158.511719 953.554688 C 1194.910156 973.207031 1222.335938 995.527344 1223.371094 1018.152344 C 1224.523438 1043.605469 1204.757812 1067.1875 1177.46875 1086.679688 C 1137.429688 1115.277344 1081.878906 1134.636719 1050.003906 1139.148438 C 1031.6875 1141.75 1013.195312 1143.371094 994.636719 1144.058594 C 982.558594 1144.5 970.476562 1144.539062 958.371094 1144.191406 C 968.617188 1130.5 979.1875 1114.320312 979.929688 1104.875 C 941.871094 1141.261719 909.90625 1170.003906 864.242188 1199.265625 C 825.28125 1224.238281 781.023438 1245.164062 744.679688 1242.683594 C 727.714844 1241.515625 717.398438 1236.394531 712.25 1228.964844 C 708.503906 1223.5625 707.335938 1216.6875 708.210938 1209.125 C 709.167969 1200.882812 712.5 1191.832031 717.585938 1182.796875 C 731.828125 1157.542969 759.238281 1133.378906 786.851562 1127.394531 C 807.09375 1134.054688 858.996094 1138.113281 869.710938 1127.019531 C 850.992188 1126.398438 825.226562 1126.160156 785.628906 1112.675781 C 726.160156 1092.4375 669.730469 1062.9375 619.5 1025.476562 C 570.769531 989.117188 527.917969 945.246094 493.855469 895.03125 C 490.457031 890.042969 487.257812 885.117188 484.230469 880.289062 C 512.519531 895.828125 553.472656 909.324219 562.695312 907.28125 Z M 849.492188 843.15625 C 822.199219 835.515625 746.46875 809.984375 712.699219 787.941406 C 727.59375 784.449219 741.570312 775.574219 755.640625 766.617188 C 778.648438 751.992188 801.984375 737.167969 827.550781 750.769531 C 865.59375 771.007812 855.625 821.660156 849.492188 843.15625 Z M 1187.714844 1095.996094 C 1193.289062 1108.085938 1206.632812 1127.722656 1213.546875 1132.421875 C 1206.738281 1121.804688 1197.832031 1107.753906 1195.359375 1090.117188 C 1220.78125 1069.574219 1238.171875 1044.957031 1236.910156 1017.554688 C 1236.273438 1003.515625 1228.519531 990.085938 1215.964844 977.492188 C 1227.179688 964.300781 1238.597656 955.117188 1253.757812 947.238281 C 1236.328125 950.964844 1222.746094 958.582031 1210.03125 971.890625 C 1197.898438 961.117188 1182.367188 950.980469 1165.015625 941.609375 C 1102.1875 907.703125 1014.351562 882.890625 980.527344 875.761719 C 940.914062 867.402344 901.410156 858.167969 862.488281 846.980469 C 869.40625 822.773438 880.914062 763.816406 833.9375 738.800781 C 801.347656 721.457031 774.664062 738.429688 748.339844 755.164062 C 714.078125 776.953125 704.867188 785.246094 675.054688 764.835938 C 645.808594 744.8125 620.042969 721.589844 600.316406 694.808594 C 569.453125 652.917969 553.351562 602.132812 561.96875 541.046875 C 564.328125 524.25 567.570312 506.546875 570.925781 488.140625 C 585.132812 410.402344 601.589844 320.296875 563.734375 253.046875 L 558.328125 243.4375 L 552.183594 252.632812 C 552.089844 252.765625 521.253906 299.34375 473.464844 316.371094 C 454.113281 323.269531 431.039062 323.839844 409.285156 321.292969 C 344.542969 313.730469 305.648438 285.066406 251.222656 245.695312 L 249.367188 255.355469 C 230.609375 352.796875 307.546875 430.535156 360.976562 484.542969 C 367.878906 491.511719 374.386719 498.078125 380.570312 504.636719 C 420.316406 546.636719 417.140625 576.492188 412.707031 618.253906 C 411.726562 627.359375 410.703125 637.019531 410.011719 647.636719 C 408.25 674.414062 409.269531 700.664062 412.839844 726.246094 C 413.664062 732.140625 414.621094 738.003906 415.707031 743.84375 C 400.136719 739 377.105469 737.089844 359.808594 740.472656 C 352.363281 741.933594 345.738281 744.363281 340.839844 747.929688 C 335.050781 752.152344 331.585938 757.804688 331.585938 765.128906 C 331.613281 775.546875 339.617188 789.015625 360.15625 805.921875 C 375.710938 818.742188 417.804688 843.34375 460.855469 867.351562 C 464.039062 873.097656 467.453125 878.921875 471.089844 884.828125 C 474.886719 890.996094 478.734375 896.941406 482.613281 902.675781 C 517.539062 954.148438 561.460938 999.121094 611.414062 1036.371094 C 658.433594 1071.457031 710.828125 1099.710938 766.101562 1120.132812 C 741.265625 1131.347656 718.578125 1153.363281 705.757812 1176.121094 C 699.824219 1186.632812 695.921875 1197.433594 694.738281 1207.558594 C 693.503906 1218.375 695.347656 1228.417969 701.085938 1236.699219 C 708.519531 1247.433594 722.175781 1254.761719 743.75 1256.234375 C 810.464844 1260.796875 899.523438 1194.117188 943.382812 1157.15625 C 960.628906 1158.085938 977.910156 1158.246094 995.15625 1157.621094 C 1014.125 1156.917969 1033.054688 1155.246094 1051.890625 1152.578125 C 1095.21875 1146.4375 1152.65625 1121.753906 1187.714844 1095.996094"/> -</svg> diff --git a/theme/static/styles.css b/theme/static/styles.css index d6ffd0e..120f733 100644 --- a/theme/static/styles.css +++ b/theme/static/styles.css @@ -1,597 +1,12 @@ -@import url('tokens.css'); - -/* ============================================================ - HOMEPAGE INTRO - ============================================================ */ -.homepage-intro { - max-width: var(--prose-w); - margin: 3rem 0; - margin-top: 1rem; - font-family: var(--font-serif); - font-size: var(--text-body); - line-height: var(--lh-body); -} -.homepage-intro p { margin-bottom: 1.1rem; } -.homepage-intro p:first-child { - font-size: 0.9rem; - text-transform: uppercase; - letter-spacing: 0.1em; - font-family: var(--font-sans); - color: var(--meta); - margin-bottom: 0.5rem; -} -.homepage-intro p:nth-child(2) { - font-size: 1.3rem; - font-weight: 700; - letter-spacing: -0.01em; - color: var(--fg); - margin-bottom: 1.5rem; -} - -/* ============================================================ - RESET & BASE - ============================================================ */ -*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } - -body { - background: var(--bg); - color: var(--fg); - font-family: var(--font-sans); - font-size: var(--text-body); - line-height: var(--lh-body); - -webkit-font-smoothing: antialiased; - text-rendering: optimizeLegibility; -} - -/* Full-bleed header — border and nav span 100vw */ -header { - width: 100%; -} - -/* Centered content column */ -main, -footer, -header { - max-width: var(--outer-w); - margin: 0 auto; - padding-left: var(--pad); - padding-right: var(--pad); -} -footer { padding-bottom: 3rem; } - -/* Prose constraint — applied to article/page body text only */ -.prose { - max-width: var(--prose-w); -} - -/* ============================================================ - MASTHEAD - ============================================================ */ -.masthead { - border-top: 2px solid var(--fg); - padding-top: 1.5rem; - padding-bottom: 0; - padding-left: var(--pad); - padding-right: var(--pad); -} - -.masthead-title { - display: block; - font-family: var(--font-serif); - font-size: var(--text-display); - font-weight: 700; - line-height: var(--lh-display); - letter-spacing: -0.03em; - text-decoration: none; - color: var(--fg); - margin-bottom: 1.25rem; -} -.masthead-title:hover { color: var(--accent); background: none; } - -.masthead-subtitle { - font-family: var(--font-sans); - font-size: var(--text-xs); - letter-spacing: 0.12em; - color: var(--meta); - text-transform: lowercase; - margin-bottom: 1rem; -} - -/* ============================================================ - NAV STRIP — full outer width, equal cells - ============================================================ */ -.masthead nav ul { - list-style: none; - display: flex; -} -.masthead nav li { flex: 1; } -.masthead nav a { - display: block; - text-align: center; - padding: 0.55rem 0; - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.16em; - text-decoration: none; - color: var(--meta); - border: 1px solid var(--border-soft); - transition: color 0.1s, background 0.1s; -} -.masthead nav a:hover { color: var(--bg); background: var(--fg); } - -/* ============================================================ - MAIN CONTENT AREA - ============================================================ */ -main { padding-top: 2rem; } - -/* ============================================================ - KOI HR - ============================================================ */ -hr { - border: none; - height: 2.5rem; - position: relative; - display: flex; - align-items: center; - justify-content: center; - background-image: url('koi-hr.svg'); - background-repeat: no-repeat; - background-position: center; - background-size: auto 100%; - margin: 3rem 0; -} -hr::before, hr::after { - content: ''; - position: absolute; - top: 50%; - transform: translateY(-50%); - width: calc(50% - 2rem); - height: 1px; - background: var(--border-soft); -} -hr::before { left: 0; } -hr::after { right: 0; } - -/* ============================================================ - FOOTER - ============================================================ */ -footer { - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - display: flex; - flex-direction: column; - gap: 0.4rem; -} -footer a { color: var(--meta); text-decoration: none; transition: color 0.1s; } -footer a:hover { color: var(--fg); background: none; } - -/* ============================================================ - TYPOGRAPHY - ============================================================ */ -h1, h2, h3, h4 { - font-family: var(--font-serif); - font-weight: 700; - letter-spacing: -0.02em; - line-height: 1.1; -} - -/* Page-level h1 (blog list, garden, guides) */ -h1 { - font-size: var(--text-h1); - margin-bottom: 0.5rem; -} - -/* Article display title — larger, tighter */ -.article-title { - font-family: var(--font-serif); - font-size: clamp(2.4rem, 5vw, 3.6rem); - font-weight: 700; - line-height: 1.05; - letter-spacing: -0.03em; - margin: 0.4rem 0 0; -} - -h2 { - font-size: var(--text-h2); - border-left: 1px solid var(--accent); - padding-left: 0.75rem; - margin-top: 2.5rem; - margin-bottom: 0.4rem; -} -h3 { font-size: 1.05rem; margin-top: 2rem; margin-bottom: 0.3rem; } - -p { margin-bottom: 1.2rem; } - -/* Accent ONLY on links and h2 bar — nowhere else */ -a { - color: var(--accent); - text-decoration: underline; - text-underline-offset: 3px; - transition: background 0.1s, color 0.1s; -} -a:hover { background: var(--accent); color: var(--bg); text-decoration: none; } - -/* ============================================================ - SECTION LABEL — uppercase eyebrow text - ============================================================ */ -.label { - display: block; - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.16em; - color: var(--meta); - border-bottom: 1px solid var(--fg); - padding-bottom: 0.5rem; - margin-bottom: 0; -} - -/* ============================================================ - INFO STRIP — homepage identity block - ============================================================ */ - - -/* ============================================================ - POST LIST — numbered, full outer width - ============================================================ */ -.post-list { - list-style: none; - counter-reset: posts; -} -.post-list-item { - counter-increment: posts; - display: grid; - grid-template-columns: 2.5rem 1fr 7rem; - align-items: baseline; - gap: 0 1rem; - padding: 0.75rem 0; - border-bottom: 1px solid var(--border-soft); -} -.post-list-item:first-child { border-top: 1px solid var(--border-soft); } -.post-list-item::before { - content: counter(posts, decimal-leading-zero); - font-family: var(--font-mono); - font-size: var(--text-xs); - color: var(--meta); - letter-spacing: 0.04em; - grid-column: 1; -} -.post-list-item a { - font-size: var(--text-sm); - justify-self: start; -} -.post-list-item time { - font-size: var(--text-xs); - font-family: var(--font-mono); - color: var(--meta); - text-align: right; - white-space: nowrap; - letter-spacing: 0.04em; -} - -/* Year separator — full-width label, resets counter display */ -.post-list-year { - display: block; - font-family: var(--font-sans); - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - padding: 1.5rem 0 0.4rem; - counter-increment: none; -} - -.all-posts-link { - display: inline-block; - margin-top: 1.5rem; - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.12em; -} - -/* ============================================================ - ARTICLE — post page - ============================================================ */ -.article-dateline { - font-family: var(--font-mono); - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - margin-bottom: 0.35rem; -} - -.article-standfirst { - font-family: var(--font-serif); - font-size: 1.15rem; - line-height: 1.55; - color: var(--fg-soft); - padding: 1.25rem 0; - border-top: 1px solid var(--border-soft); - border-bottom: 1px solid var(--fg); - margin-top: 1rem; - max-width: var(--prose-w); -} - -.article-body { - font-family: var(--font-serif); - font-size: var(--text-body); - line-height: var(--lh-body); - max-width: var(--prose-w); - margin-top: 2.5rem; -} -.article-body p { margin-bottom: 1.3rem; } - -.reply-link { - max-width: var(--prose-w); - margin-top: 4rem; - padding-top: 1.5rem; - border-top: 1px solid var(--border-soft); - font-size: var(--text-xs); - font-family: var(--font-sans); - text-transform: uppercase; - letter-spacing: 0.12em; -} - -/* ============================================================ - GENERIC PAGE (about, uses, etc.) - ============================================================ */ -.page-body { - font-family: var(--font-serif); - font-size: var(--text-body); - line-height: var(--lh-body); - max-width: var(--prose-w); - margin-top: 2rem; -} -.page-body p { margin-bottom: 1.3rem; } - -/* ============================================================ - BLOG ARCHIVE - ============================================================ */ -.blog-meta { - font-size: var(--text-sm); - color: var(--meta); - margin: 0.75rem 0 2rem; -} -.blog-meta code { - font-size: var(--text-xs); - background: var(--code-bg); - padding: 0.1rem 0.35rem; - font-family: var(--font-mono); -} - -/* Year separators in post list */ -.post-list-year { - font-family: var(--font-serif); - font-size: var(--text-xs); - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.14em; - color: var(--meta); - padding: 1.25rem 0 0.5rem; - list-style: none; - grid-column: 1 / -1; -} - -/* Restore list styling inside content areas */ -.article-body ul, -.article-body ol, -.page-body ul, -.page-body ol { - padding-left: 1.5rem; - margin-bottom: 1.2rem; -} -.article-body li, -.page-body li { - margin-bottom: 0.3rem; -} -.article-body ul ul, -.article-body ol ol, -.page-body ul ul, -.page-body ol ol { - margin-bottom: 0; -} - -/* ============================================================ - GARDEN - ============================================================ */ -.garden-index { list-style: none; } -.garden-index li { - display: flex; - flex-direction: column; - gap: 0.15rem; - padding: 0.8rem 0; - border-bottom: 1px solid var(--border-soft); -} -.garden-index li:first-child { border-top: 1px solid var(--border-soft); } -.garden-index a { font-size: var(--text-sm); } -.garden-desc { font-size: var(--text-xs); color: var(--meta); } - -/* ============================================================ - APP CARDS - ============================================================ */ -.app-card { - display: flex; - gap: 1.25rem; - align-items: flex-start; - padding: 1.25rem 0; - border-bottom: 1px solid var(--border-soft); -} -.app-card:first-of-type { border-top: 1px solid var(--border-soft); } -.app-icon { width: 52px; height: 52px; border-radius: 12px; flex-shrink: 0; filter: none !important; margin: 0; display: block; } -.app-card a:has(.app-icon):hover { background: none; } -.app-info { display: flex; flex-direction: column; gap: 0.2rem; } -.app-title { font-family: var(--font-sans); font-weight: 700; font-size: var(--text-sm); } -.app-subtitle { font-size: var(--text-xs); color: var(--meta); } -.app-links { font-size: var(--text-xs); margin-top: 0.3rem; } - -/* ============================================================ - CODE & PRE - ============================================================ */ -pre { - padding: 1.25rem; - border-left: 1px solid var(--border-soft); - background: var(--code-bg); - overflow-x: auto; - font-size: var(--text-sm); - margin: 1.75rem 0; - line-height: 1.6; -} -code { - font-family: var(--font-mono); - background: var(--code-bg); - padding: 0.15rem 0.4rem; - font-size: 0.875em; -} -pre code { background: none; padding: 0; font-size: inherit; } - -/* ============================================================ - BLOCKQUOTE — intentional Org-mode delimiters - ============================================================ */ -blockquote { - font-style: italic; - margin: 1.75rem 0; - padding: 0.75rem 1rem; - border-left: 1px solid var(--border-soft); - background: var(--code-bg); -} -blockquote p:last-child { margin-bottom: 0; } +body { max-width: 800px; margin: 0 auto; } +nav ul { list-style: none; padding: 0; display: flex; flex-direction: row; } +nav ul li { padding-right: 0.5rem;} +img { max-width: 100%; } +.post-list-item { display: flexbox; list-style: none; } +.post-list-item time { padding-right: 0.5rem; } +.post-list-year { list-style: none; margin-top: 1rem; margin-bottom: 0.5rem; font-weight: bold; } +.skip-link { display: none; } +footer { margin: 2rem 0;} +pre, blockquote { margin: 1rem 0; padding: 0.5rem; background-color: lightgrey; } blockquote p { margin: 0; } -blockquote::before { - content: "#+begin_quote"; - display: block; - color: var(--meta); - font-style: normal; - font-size: var(--text-xs); - font-family: var(--font-mono); - letter-spacing: 0.04em; - margin-bottom: 0.5rem; -} -blockquote::after { - content: "#+end_quote"; - display: block; - color: var(--meta); - font-style: normal; - font-size: var(--text-xs); - font-family: var(--font-mono); - letter-spacing: 0.04em; - margin-top: 0.5rem; -} - -/* ============================================================ - TABLES - ============================================================ */ -table { - display: block; - width: 100%; - max-width: 100%; - overflow-x: auto; - border: none; - border-collapse: collapse; - margin: 2rem 0; -} - -table td, table th { - white-space: nowrap; - padding: 0.5rem 1rem; -} -th, td { - border-bottom: 1px solid var(--border-soft); - padding: 0.65rem 0.75rem; - text-align: left; - font-size: var(--text-sm); -} -th { - border-bottom: 1px solid var(--fg); - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.1em; - font-weight: 700; -} -tr:last-child td { border-bottom: none; } - -/* ============================================================ - IMAGES - ============================================================ */ -img { - max-width: 100%; - height: auto; - filter: grayscale(1); - transition: filter 0.25s; - display: block; - margin: 2rem 0; -} -img:hover { filter: grayscale(0); } - -/* ============================================================ - FOOTNOTES - ============================================================ */ -.footdef { display: flex; align-items: flex-start; gap: 1rem; margin-bottom: 0.5rem; } -.footpara { margin: 0; flex: 1; font-size: var(--text-sm); } -.footnum { - font-weight: 700; - min-width: 1.5rem; - text-align: right; - text-decoration: none; - font-size: var(--text-xs); - color: var(--meta); - font-family: var(--font-mono); -} - -/* ============================================================ - SKIP LINK - ============================================================ */ -.skip-link { - position: absolute; - top: -100px; - left: 50%; - transform: translateX(-50%); - background: var(--fg); - color: var(--bg); - padding: 0.75rem 1.5rem; - z-index: 999; - font-weight: 700; - font-size: var(--text-xs); - text-transform: uppercase; - letter-spacing: 0.12em; - text-decoration: none; - transition: top 0.2s; -} -.skip-link:focus { top: 0; outline: none; } -#main-content:focus { outline: none; } - -/* ============================================================ - RESPONSIVE - ============================================================ */ -@media (max-width: 700px) { - .masthead-title { font-size: clamp(3rem, 14vw, 5rem); } - .masthead nav ul { flex-wrap: wrap; } - .masthead nav li { flex: none; width: 50%; } - .masthead nav a { border-bottom: 1px solid var(--border-soft); } - .post-list-item { grid-template-columns: 2.25rem 1fr; } - .post-list-item time { display: none; } - .article-title { font-size: clamp(2rem, 9vw, 2.8rem); } -} - -@media (max-width: 480px) { - .masthead nav li { width: 33.333%; } -} - -/* Tags page */ -.tag-toc { - display: flex; - flex-wrap: wrap; - gap: 0.5rem 1.5rem; - list-style: none; - padding: 0; - margin: 0 0 3rem; -} -.tag-count { - color: var(--meta); - font-size: var(--text-xs); -} +code { color: darkred; }
\ No newline at end of file diff --git a/theme/static/tokens.css b/theme/static/tokens.css deleted file mode 100644 index 3f67b12..0000000 --- a/theme/static/tokens.css +++ /dev/null @@ -1,51 +0,0 @@ -/* ============================================================================= - BRAND TOKENS — cleberg.net - ============================================================================= */ -:root { - color-scheme: light dark; - - /* Light */ - --bg: #ffffff; - --bg-soft: #f5f5f5; - --fg: #0a0a0a; - --fg-soft: #444444; - --accent: #c0392b; - --border: #0a0a0a; - --border-soft: #dedede; - --code-bg: #f3f3f3; - --meta: #999999; - - /* Fonts */ - --font-serif: Georgia, 'Times New Roman', serif; - --font-sans: system-ui, -apple-system, 'Segoe UI', Helvetica, Arial, sans-serif; - --font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace; - - /* Type scale */ - --text-display: clamp(4rem, 8vw, 6.5rem); - --text-h1: clamp(2.2rem, 4vw, 3rem); - --text-h2: 1.2rem; - --text-body: 1.0625rem; - --text-sm: 0.875rem; - --text-xs: 0.6875rem; /* 11px — label tier */ - --lh-display: 0.95; - --lh-body: 1.75; - - /* Layout */ - --outer-w: 1000px; - --prose-w: 720px; - --pad: clamp(1.25rem, 4vw, 2.5rem); -} - -@media (prefers-color-scheme: dark) { - :root { - --bg: #080808; - --bg-soft: #111111; - --fg: #eeebe6; - --fg-soft: #aaa8a3; - --accent: #e05a48; - --border: #eeebe6; - --border-soft: #1e1e1e; - --code-bg: #0d0d0d; - --meta: #555555; - } -} diff --git a/theme/templates/base.html b/theme/templates/base.html index 8eca335..65681e5 100644 --- a/theme/templates/base.html +++ b/theme/templates/base.html @@ -9,45 +9,36 @@ {% 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" href="{{ url_for("static", file="favicon.svg") }}" type="image/svg+xml"> + <link rel="icon" href="data:,"> {% block meta %}{% endblock %} {% endblock %} </head> <body> <a href="#main-content" class="skip-link">Skip to content</a> - <header class="masthead"> - <a href="/" class="masthead-title">seijaku</a> - <p class="masthead-subtitle"><i>stillness amidst the chaos</i></p> - <nav aria-label="Site Navigation"> - <ul> - <li><a href="/blog/">Blog</a></li> - <li><a href="/tags/">Tags</a></li> - <li><a href="/guides/index.html">Guides</a></li> - <li><a href="/apps/">Apps</a></li> - <li><a href="/garden/">Garden</a></li> - <li><a href="/salary/">Salary</a></li> - </ul> - </nav> - </header> + + <nav aria-label="Site Navigation"> + <ul> + <li><a href="/">Home</a></li> + <li><a href="/apps/">Apps</a></li> + <li><a href="/blog/">Blog</a></li> + <li><a href="/garden/">Garden</a></li> + <li><a href="/guides/">Guides</a></li> + <li><a href="/salary/">Salary</a></li> + <li><a href="/tags/">Tags</a></li> + </ul> + </nav> + <main id="main-content"> {% block main %}{% endblock %} </main> - <hr> + <footer> - <div> - <a href="https://github.com/ccleberg/cleberg.net">Source</a> · - <a href="/feed.xml">RSS</a> · - <a href="http://paske4urhs6nttrtlkuwa5cowum3fjkc6yv6kl4ncx3mjxcd77764nqd.onion/">Onion</a> · - <a href="/now/">Now</a> · - <a href="/uses/">Uses</a> · - <a href="/tips/">Tips</a> · - <a href="https://cv.cleberg.net">CV</a> - </div> - <div> - <a href="mailto:[email protected]">[email protected]</a> [<a href="/gpg.txt">PGP</a>] · - Signal: @cmc.01 - </div> + <a href="https://github.com/ccleberg/cleberg.net">Source</a> · + <a href="/feed.xml">RSS</a> · + <a href="http://paske4urhs6nttrtlkuwa5cowum3fjkc6yv6kl4ncx3mjxcd77764nqd.onion/">Onion</a> · + <a href="/tips/">Tips</a> </footer> + <section class="indieweb-links" style="display:none"> <link href="https://github.com/ccleberg" rel="me"> <link href="https://gitlab.com/ccleberg" rel="me"> diff --git a/theme/templates/blog.html b/theme/templates/blog.html index 605d883..ba7beb3 100644 --- a/theme/templates/blog.html +++ b/theme/templates/blog.html @@ -1,13 +1,13 @@ {% extends "base.html" %} {% block subtitle %}blog - {% endblock %} {% block main %} <h1>Blog</h1> -<p class="blog-meta">Use <code>⌘ F</code> / <code>Ctrl F</code> to search · <a href="/feed.xml">RSS Feed</a></p> -<p class="label">All Posts</p> +<p>Use <code>⌘ F</code> / <code>Ctrl F</code> to search · <a href="/feed.xml">RSS Feed</a></p> +<p>All Posts</p> <ul class="post-list"> -{% for post in posts %} -<li class="post-list-item"> - <a href='{{ url_for("blog", slug=post.slug) }}'>{{ post.title }}</a> - <time datetime='{{ post.date | strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time> -</li> -{% endfor %} + {% for post in posts %} + <li class="post-list-item"> + <time datetime='{{ post.date | strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time> + <a href='{{ url_for("blog", slug=post.slug) }}'>{{ post.title }}</a> + </li> + {% endfor %} </ul> {% endblock %} diff --git a/theme/templates/garden.html b/theme/templates/garden.html index 79238f5..c546078 100644 --- a/theme/templates/garden.html +++ b/theme/templates/garden.html @@ -14,14 +14,14 @@ around.</p> <span><strong>🍂 Compost:</strong> Ideas you no longer agree with but want to keep for historical context.</span><br><br> </section> -<ul class="garden-index"> -{% for post in posts %} -<li> - <a href='{{ url_for("garden", slug=post.slug) }}'>{{ post.title }}</a> - {% if post.description %} - <span class="garden-desc">{{ post.description }}</span> - {% endif %} -</li> -{% endfor %} +<ul> + {% for post in posts %} + <li> + <a href='{{ url_for("garden", slug=post.slug) }}'>{{ post.title }}</a> + {% if post.description %} + <span>{{ post.description }}</span> + {% endif %} + </li> + {% endfor %} </ul> {% endblock %} diff --git a/theme/templates/index.html b/theme/templates/index.html index d15eeca..de9fae3 100644 --- a/theme/templates/index.html +++ b/theme/templates/index.html @@ -1,22 +1,22 @@ {% extends "base.html" %} {% block main %} -<div class="homepage-intro"> - <p>My name is Christian.</p> - <p>I’m a technology auditor who doesn’t trust technology companies.</p> - <p>I run my own infrastructure. I audit everyone else's.</p> - <p>The infrastructure is the point. Self-hosted, self-managed, minimal - dependencies. This site is part of it: plaintext, no trackers, no - frameworks, no corporate CDN.</p> - <p>The audit job funds it. KPMG. Technology Assurance. I spend 50-80 hours a - week inside the systems I refuse to use personally. The irony is the - business model.</p> - <p>GPG key, salary, and server stack are all public. That's the whole - introduction.</p> -</div> +<section> + <p><b>Hi, I'm Christian.</b></p> + <p>I'm a Technology Assurance Manager @ KPMG.</p> + <p>I use this site as a place to think out loud (see my <a href="/blog/">blog</a>, <a href="/garden/">garden</a>, or + <a href="/guides/">guides</a>), a place to publish information (see + my <a href="https://cv.cleberg.net">CV</a> and <a href="/salary/">salary</a> + pages), and a foundational URI to use for my projects (see + my <a href="/apps/">apps</a>).</p> + <p>If you want to chat, you can find me in the following spaces:</p> + <ul> + <li>hello [at] cleberg.net (<a href="/gpg.txt">PGP Key</a>)</li> + <li>@cmc.01 on <a href="https://signal.org">Signal</a></li> + </ul> + <p>Curious about the technology behind this website? Check out my <a href="/uses/">/uses</a> page.</p> + <p>Curious about what I've been up to lately in my personal life? Check out my <a href="/now/">/now</a> page.</p> +</section> -<p class="section-label">Recent Posts</p> -<ul class="post-list"> - <!-- BEGIN_POSTS --> - <!-- END_POSTS --> -</ul> -<a class="all-posts-link" href="/blog/">All Posts →</a> +<p>Recent Posts</p> +<!-- BEGIN_POSTS --><!-- END_POSTS --> +<p><a href="/blog/">All Posts →</a></p> {% endblock %} diff --git a/theme/templates/page.html b/theme/templates/page.html index a302c4b..6c22589 100644 --- a/theme/templates/page.html +++ b/theme/templates/page.html @@ -3,6 +3,6 @@ {% block main %} <article> <h1>{{ post.title }}</h1> - <div class="page-body">{{ post.html | safe }}</div> + <div>{{ post.html | safe }}</div> </article> {% endblock %} diff --git a/theme/templates/post.html b/theme/templates/post.html index 018068e..df6c3b7 100644 --- a/theme/templates/post.html +++ b/theme/templates/post.html @@ -10,12 +10,12 @@ {% endblock %} {% block main %} <article> - <p class="article-dateline"><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time></p> - <h1 class="article-title">{{ post.title }}</h1> + <p><time datetime='{{ post.date|strftime("%Y-%m-%d") }}'>{{ post.date|strftime("%Y-%m-%d") }}</time></p> + <h1>{{ post.title }}</h1> {% if post.description is defined %} - <p class="article-standfirst">{{ post.description }}</p> + <p>{{ post.description }}</p> {% endif %} - <div class="article-body">{{ post.html | safe }}</div> - <div class="reply-link"><a href="mailto:[email protected]">Reply via email →</a></div> + <div>{{ post.html | safe }}</div> + <div><a href="mailto:[email protected]">Reply via email →</a></div> </article> {% endblock %} diff --git a/utils/nginx-dev.conf b/utils/nginx-dev.conf deleted file mode 100644 index ed94af7..0000000 --- a/utils/nginx-dev.conf +++ /dev/null @@ -1,17 +0,0 @@ -server { - server_name cleberg.net www.cleberg.net; - - root /usr/share/nginx/html; - index index.html; - autoindex on; - - access_log /var/log/nginx/cleberg.net.access.log; - error_log /var/log/nginx/cleberg.net.error.log; - - location / { - try_files $uri $uri/ =404; - } - - listen [::]:80; - listen 80; -} |
