cmc/ccleberg

GitHub profile README

clone: git clone https://gitbay.org/cmc/ccleberg.git

7f6fbb6c1921faaea99e171e24e52ac86219c7e3

signed_unknown_key

author: Christian Cleberg <hello@cleberg.net> · 2025-12-06T21:45:52Z
committer: <noreply@github.com>

Refactor README from Markdown to Org format
 README.md  | 14 --------------
 README.org | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+), 14 deletions(-)

diff --git a/README.md b/README.md
deleted file mode 100644
index ce5184a..0000000
--- a/README.md
+++ /dev/null
@@ -1,14 +0,0 @@
-### Hi, I'm Christian. 👋🏻
-
-I'm a [Tech Assurance](https://kpmg.com/us/en/capabilities-services/audit-services/technology-assurance.html) Manager at [KPMG](https://kpmg.com/us/en.html).
-
-I host a website at [cleberg.net](https://cleberg.net) with a [blog](https://cleberg.net/blog/), information [about me](https://cleberg.net/about/), and [publicly-hosted services for all to use](https://cleberg.net/services/).
-
-### 📕 Latest Blog Posts
-
-<!-- BLOG-POST-LIST:START -->
-- [Practical Uses for AI in IT Audit](https://cleberg.net/blog/it-audit-ai.html) (2025-11-23)
-- [Striving for 100% WCAG 2 Compliance](https://cleberg.net/blog/wcag.html) (2025-11-15)
-- [Using aerc on macOS](https://cleberg.net/blog/aerc-macos.html) (2025-11-02)
-- [Digital Garden](https://cleberg.net/blog/digital-garden.html) (2025-10-25)
-- [Playing Rocket League on macOS via CrossOver](https://cleberg.net/blog/rocket-league-macos.html) (2025-10-06)<!-- BLOG-POST-LIST:END -->
diff --git a/README.org b/README.org
new file mode 100644
index 0000000..670dc3f
--- /dev/null
+++ b/README.org
@@ -0,0 +1,64 @@
+#+begin_src el
+;;; christian.el --- Personal profile & blog index -*- lexical-binding: t -*-
+
+;; Author:  Christian Cleberg <hello@cleberg.net>
+;; Version: 0.1
+;; Keywords: privacy, security, self-hosting
+;; Package-Requires: ((emacs "27.1"))
+
+;;; Commentary:
+
+;;   I'm a Tech Assurance Manager at KPMG.
+;;   I run a personal site at https://cleberg.net which contains:
+;;       - a blog,
+;;       - information about me,
+;;       - publicly‑hosted services.
+;;
+;;   Prefer Tor?  Use the .onion address for the same content.
+
+;;; Code:
+
+(defvar christian/profile
+  '((name        . "Christian")
+    (email       . "hello@cleberg.net")
+    (role        . "Tech Assurance Manager at KPMG")
+    (gpg-key     . "https://cleberg.net/gpg.txt")
+    (site-url    . "https://cleberg.net")
+    (tor-url     . "http://sv3g2dlyvwyk2nvi3eeh55fcrpdvjlclhi6wwsx57cste6lwdjanzyyd.onion")
+    (blog-posts  .
+                 ((:date "2025-12-06"
+                          :title "Self‑Hosting Guide: Tor Websites"
+                          :url "https://cleberg.net/blog/self-hosting-guide-tor-websites.html")
+                  (:date "2025-11-23"
+                          :title "Practical Uses for AI in IT Audit"
+                          :url "https://cleberg.net/blog/practical-uses-for-ai-in-it-audit.html")
+                  (:date "2025-11-15"
+                          :title "Striving for 100% WCAG 2 Compliance"
+                          :url "https://cleberg.net/blog/striving-for-100-wcag-2-compliance.html")
+                  (:date "2025-11-02"
+                          :title "Using aerc on macOS"
+                          :url "https://cleberg.net/blog/using-aerc-on-macos.html")
+                  (:date "2025-10-25"
+                          :title "Digital Garden"
+                          :url "https://cleberg.net/blog/digital-garden.html")))))
+
+(defun christian/display-profile ()
+  "Pretty‑print the profile in a *Help* buffer."
+  (interactive)
+  (with-help-window "*Christian Profile*"
+    (princ (format "%s %s\n\n" (alist-get 'name christian/profile)
+                   (alist-get 'emoji christian/profile)))
+    (princ (format "%s\n\n" (alist-get 'role christian/profile)))
+    (princ (format "Website: %s\n" (alist-get 'site-url christian/profile)))
+    (princ (format "Tor (onion): %s\n\n" (alist-get 'tor-url christian/profile)))
+    (princ "=== Latest Blog Posts ===\n")
+    (dolist (post (alist-get 'blog-posts christian/profile))
+      (princ (format "- %s (%s)\n  %s\n"
+                     (plist-get post :title)
+                     (plist-get post :date)
+                     (plist-get post :url))))))
+
+(provide 'christian)
+
+;;; christian.el ends here
+#+end_src