Commit 8314ccc536

8314ccc5364cbc9afa9653c2b02c5c58d433ade5

parent: 526f853c7f

Unsigned

cmc <hello@cleberg.net> · 2025-03-11 21:09 UTC

move from cleberg.net to cmc.pub

Layout: unified · split

README.org +7 −7
@@ -1,8 +1,8 @@
11#+title: README
22
3* cleberg.net
3* cmc.pub
44
5[[https://cleberg.net][cleberg.net]] is my personal webpage and blog. This website and blog utilize the
5[[https://cmc.pub][cmc.pub]] is my personal webpage and blog. This website and blog utilize the
66powerful Org-Mode publishing system, courtesy of the [[https://github.com/emacs-love/weblorg][weblorg]] Emacs package.
77
88** Features & Configuration
@@ -12,15 +12,15 @@ through a simple =publish.el= file. For those who are interested in tweaking the
1212underlying configuration, the weblorg documentation provides all necessary
1313details on possible settings and options.
1414
15** Getting Started with cleberg.net
15** Getting Started with cmc.pub
1616
1717To begin exploring or contributing to this project, you'll first need to set up
1818a local copy of the repository. This can be accomplished by running the
1919following commands within Emacs:
2020
2121#+begin_src sh
22git clone https://git.sr.ht/~cyborg/cleberg.net && \
23cd cleberg.net && \
22git clone https://git.sr.ht/~cyborg/cmc.pub && \
23cd cmc.pub && \
2424emacs -nw
2525#+end_src
2626
@@ -70,10 +70,10 @@ To quickly create a new blog post within Emacs, follow these steps:
7070 the newly opened file.
7171
7272This streamlined process allows you to rapidly generate fresh content for
73cleberg.net, taking advantage of the existing template structure and formatting.
73cmc.pub, taking advantage of the existing template structure and formatting.
7474
7575** Contributing & Tasks
7676
7777For those interested in contributing to this project or addressing any
78outstanding issues, please refer to the [[https://todo.sr.ht/~cyborg/cleberg.net][ticket tracker]]. This is where you can find
78outstanding issues, please refer to the [[https://todo.sr.ht/~cyborg/cmc.pub][ticket tracker]]. This is where you can find
7979a comprehensive list of open tickets or submit a new ticket for consideration.
build.sh +1 −1
@@ -34,7 +34,7 @@ if [[ "$answer" =~ ^[Yy]$ ]]; then
3434 minify -o theme/static/styles.min.css theme/static/styles.css
3535
3636 # Deploy changes
37 rsync -r --delete-before .build/* $ubuntu_server:/var/www/cleberg.net/
37 rsync -r --delete-before .build/* $ubuntu_server:/var/www/cmc.pub/
3838 else
3939 echo "Environment: Development"
4040
content/blog/2020-12-29-zork.org +1 −1
@@ -32,7 +32,7 @@ as it was truly intended, you should try to play it without using the
3232map.
3333
3434#+caption: Zork Map
35[[https://img.cleberg.net/blog/20201229-zork/zork_map.jpg]]
35[[https://img.cmc.pub/blog/20201229-zork/zork_map.jpg]]
3636
3737/[[https://www.filfre.net/2012/01/exploring-zork-part-1/][Map Source]]/
3838
content/blog/2021-03-28-vaporwave-vs-outrun.org +6 −6
@@ -16,12 +16,12 @@ Vaporwave: the results include *a lot* of Outrun-themed images. You'll
1616find a similar trend almost everywhere.
1717
1818#+caption: Vaporwave Search Results
19[[https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/vaporwave-search-results.png]]
19[[https://img.cmc.pub/blog/20210328-vaporwave-vs-outrun/vaporwave-search-results.png]]
2020
2121* Vaporwave
2222
2323#+caption: Macintosh Plus Album Cover
24[[https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/macintosh-plus.png]]
24[[https://img.cmc.pub/blog/20210328-vaporwave-vs-outrun/macintosh-plus.png]]
2525
2626Okay, so what is Vaporwave? I'm going to just copy-and-paste some
2727general info from the Wikipedia article on
@@ -80,7 +80,7 @@ is a large part of Vaporwave.
8080* Outrun
8181
8282#+caption: Outrun
83[[https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/outrun.png]]
83[[https://img.cmc.pub/blog/20210328-vaporwave-vs-outrun/outrun.png]]
8484
8585Now, let's get to Outrun. This one is a little trickier since the genre
8686has largely been lumped under the Vaporwave title for so long. However,
@@ -115,16 +115,16 @@ would look like. Take a look at a common video game discussed in Outrun
115115circles, Far Cry 3: Blood Dragon:
116116
117117#+caption: Fry Cry 3: Blood Dragon
118[[https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/far-cry.png]]
118[[https://img.cmc.pub/blog/20210328-vaporwave-vs-outrun/far-cry.png]]
119119
120120Another example that doesn't force the color scheme as hard as some
121121online art does is Kung Fury:
122122
123123#+caption: Kung Fury
124[[https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/kung-fury.png]]
124[[https://img.cmc.pub/blog/20210328-vaporwave-vs-outrun/kung-fury.png]]
125125
126126#+caption: Kung Fury Hacker Scene
127[[https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/kung-fury-hacker.png]]
127[[https://img.cmc.pub/blog/20210328-vaporwave-vs-outrun/kung-fury-hacker.png]]
128128
129129* Conclusion
130130
content/blog/2021-04-23-php-comment-system.org +1 −1
@@ -57,7 +57,7 @@ that future readers will be able to see the source data long after I'm
5757gone, or the website has gone offline. However, I still haven't
5858committed any images served on my blog to Git, as I'm not entirely sold
5959on Git LFS yet - for now, images can be found at
60[[https://img.cleberg.net][img.cleberg.net]].
60[[https://img.cmc.pub][img.cmc.pub]].
6161
6262Saving my comments back to the Git repository ensures that another
6363aspect of my site will degrade gracefully.
content/blog/2022-02-10-njalla-dns-api.org +2 −2
@@ -6,9 +6,9 @@
66* Njalla's API
77
88As noted in my recent post about
9[[https://cleberg.net/blog/ditching-cloudflare/][switching to Njalla from
9[[https://cmc.pub/blog/ditching-cloudflare/][switching to Njalla from
1010Cloudflare]], I was searching for a way to replace my very easy-to-use
11bash script to [[https://cleberg.net/blog/cloudflare-dns-api/][update Cloudflare's
11bash script to [[https://cmc.pub/blog/cloudflare-dns-api/][update Cloudflare's
1212DNS via their API]].
1313
1414To reiterate what I said in those posts, this is a common necessity for
content/blog/2022-02-16-debian-and-nginx.org +2 −2
@@ -18,7 +18,7 @@ alert: it feels identical to Ubuntu for my purposes.
1818I did the normal things when first launching the VPS, such as adding a
1919new user, locking down SSH, etc. If you want to see that level of
2020detail, read my other post about
21[[https://cleberg.net/blog/how-to-set-up-a-vps-web-server/][How to Set
21[[https://cmc.pub/blog/how-to-set-up-a-vps-web-server/][How to Set
2222Up a VPS Web Server]].
2323
2424All of this has been similar, apart from small things such as the
@@ -159,7 +159,7 @@ the Nginx docs to see what other fun things I can do with all of this.
159159Finally, I set up the Agate software on this server again to host my
160160Gemini server content, using Rust as I have before. You can read my
161161other post for more information on installing Agate:
162[[https://cleberg.net/blog/hosting-a-gemini-server/][Hosting a Gemini
162[[https://cmc.pub/blog/hosting-a-gemini-server/][Hosting a Gemini
163163Server]].
164164
165165All in all, Debian + Nginx is very slick and I prefer it over my old
content/blog/2022-02-17-exiftool.org +1 −1
@@ -45,7 +45,7 @@ distributions, but I really only care to test out this one package.
4545** Recursively Strip Data
4646
4747I actually use this tool extensively to strip any photos uploaded to the
48website that serves all the images for my blog (=img.cleberg.net=).
48website that serves all the images for my blog (=img.cmc.pub=).
4949
5050The following command is incredibly useful and can be modified to
5151include any image extensions that =exiftool= supports:
content/blog/2022-02-22-tuesday.org +1 −1
@@ -26,7 +26,7 @@ Let's look at everything that fell in place today:
2626 Slavonic word =въторъ=, meaning "the second."
27275. Written in the classic monospaced, digital font (think of digital
2828 clocks from the 80s/90s), there is nice symmetry to the numbers
29 ([[https://img.cleberg.net/blog/20220222-tuesday/digital_font.png][view
29 ([[https://img.cmc.pub/blog/20220222-tuesday/digital_font.png][view
3030 the image here]]!).
31316. This one isn't naturally-occurring, but it seems people around the
3232 world are celebrating the day. For example, a group is putting
content/blog/2022-03-02-reliable-notes.org +3 −3
@@ -44,7 +44,7 @@ Markdown file in plain-text, since it does contain any features to
4444preview Markdown as HTML:
4545
4646#+caption: Plain Text Markdown
47[[https://img.cleberg.net/blog/20220302-easy-reliable-note-taking/plain_markdown.png]]
47[[https://img.cmc.pub/blog/20220302-easy-reliable-note-taking/plain_markdown.png]]
4848
4949** Saving & Syncing Files
5050:PROPERTIES:
@@ -118,13 +118,13 @@ Here's an example of how my Markdown notes look when opened in
118118plain-text mode:
119119
120120#+caption: Obsidian Markdown Source Mode
121[[https://img.cleberg.net/blog/20220302-easy-reliable-note-taking/obsidian_source_mode.png]]
121[[https://img.cmc.pub/blog/20220302-easy-reliable-note-taking/obsidian_source_mode.png]]
122122
123123Here's the "live preview" version, where the Markdown is rendered into
124124its HTML format:
125125
126126#+caption: Obsidian Markdown Live Preview
127[[https://img.cleberg.net/blog/20220302-easy-reliable-note-taking/obsidian_live_preview.png]]
127[[https://img.cmc.pub/blog/20220302-easy-reliable-note-taking/obsidian_live_preview.png]]
128128
129129*** Programming on Desktop
130130:PROPERTIES:
content/blog/2022-03-24-server-hardening.org +2 −2
@@ -110,7 +110,7 @@ via your randomized port.
110110
111111** =ufw=
112112
113To see how to configure =ufw=, see my other post: [[https://cleberg.net/blog/ufw.html][Secure Your
113To see how to configure =ufw=, see my other post: [[https://cmc.pub/blog/ufw.html][Secure Your
114114Network with the Uncomplicated Firewall]].
115115
116116The general notion with an on-device firewall is that you want to deny all
@@ -196,7 +196,7 @@ sudo ufw enable
196196
197197 This process involves editing a couple files and installing an MFA package,
198198 so I will not include all the details in this post. To see how to configure
199 MFA for =ssh=, see my other post: [[https://cleberg.net/blog/ssh-mfa.html][Enabling MFA for
199 MFA for =ssh=, see my other post: [[https://cmc.pub/blog/ssh-mfa.html][Enabling MFA for
200200 SSH]].
201201
202202** =fail2ban=
content/blog/2022-06-01-ditching-cloudflare.org +1 −1
@@ -77,7 +77,7 @@ the server hosting my various websites and apps.
7777
7878However, as I was moving away from Cloudflare, I was not able to find a
7979suitable replacement that was both inexpensive and simple. So, I simply
80went back to hosting [[https://cleberg.net/blog/set-up-nginx-reverse-proxy/][my own
80went back to hosting [[https://cmc.pub/blog/set-up-nginx-reverse-proxy/][my own
8181reverse proxy with Nginx]]. With the recent additions of Unifi hardware
8282in my server/network rack, I am much more protected against spam and
8383malicious attacks at the network edge than I was before I switched to
content/blog/2022-10-04-syncthing.org +1 −1
@@ -95,7 +95,7 @@ add/modify connected devices.
9595Here's an example web GUI dashboard:
9696
9797#+caption: Syncthing Dashboard
98[[https://img.cleberg.net/blog/20221020-syncthing/syncthing_gui.png]]
98[[https://img.cmc.pub/blog/20221020-syncthing/syncthing_gui.png]]
9999
100100** Remote Devices
101101
content/blog/2022-11-29-nginx-referrer-ban-list.org +2 −2
@@ -101,7 +101,7 @@ In order to test the results, let's curl the contents of our site. To
101101start, I'll curl the site normally:
102102
103103#+begin_src sh
104curl https://cleberg.net
104curl https://cmc.pub
105105#+end_src
106106
107107The HTML contents of the page come back successfully:
@@ -113,7 +113,7 @@ The HTML contents of the page come back successfully:
113113Next, let's include a banned referrer:
114114
115115#+begin_src sh
116curl --referer https://news.ycombinator.com https://cleberg.net
116curl --referer https://news.ycombinator.com https://cmc.pub
117117#+end_src
118118
119119This time, I'm met with a 403 Forbidden response page. That means we are
content/blog/2023-01-05-mass-unlike-tumblr-posts.org +2 −2
@@ -56,7 +56,7 @@ and be sure you're on the "Console" tab. It should look something like
5656this (this is in Firefox, Chromium should be similar):
5757
5858#+caption: Firefox Dev !Tools
59[[https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/dev_console.png]]
59[[https:///img.cmc.pub/blog/20230105-mass-unlike-tumblr-posts/dev_console.png]]
6060
6161All you need to do is paste the following snippet into the dev console.
6262This code will collect all unlike buttons (=elements=) and then click
@@ -88,7 +88,7 @@ the console, pressed Enter, and then the posts are automatically
8888unliked.
8989
9090#+caption: Script !Results
91[[https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/script_results.png]]
91[[https:///img.cmc.pub/blog/20230105-mass-unlike-tumblr-posts/script_results.png]]
9292
9393Thinking about this further, I would bet that this would be fairly
9494simple to package into a browser add-on so that users could install the
content/blog/2023-06-23-byobu.org +1 −1
@@ -19,7 +19,7 @@ Take a look below at my current multi-window set-up in byobu while I
1919write this blog post:
2020
2121#+caption: byobu
22[[https://img.cleberg.net/blog/20230623-byobu/byobu.png]]
22[[https://img.cmc.pub/blog/20230623-byobu/byobu.png]]
2323
2424*** Keybindings
2525
content/blog/2023-06-23-self-hosting-convos.org +2 −2
@@ -130,10 +130,10 @@ There are numerous themes to choose from; the theme shown in the images
130130below is Dracula.
131131
132132#+caption: Convos Home
133[[https://img.cleberg.net/blog/20230623-convos/convos_home.png]]
133[[https://img.cmc.pub/blog/20230623-convos/convos_home.png]]
134134
135135#+caption: Convos Chat
136[[https://img.cleberg.net/blog/20230623-convos/convos_chat.png]]
136[[https://img.cmc.pub/blog/20230623-convos/convos_chat.png]]
137137
138138* Registering a Nickname
139139
content/blog/2023-06-30-self-hosting-voyager.org +1 −1
@@ -120,4 +120,4 @@ sudo systemctl restart nginx.service
120120The site will now be available at the =server_name= you specified above!
121121
122122You can visit my instance at
123[[https://voyager.cleberg.net][voyager.cleberg.net]] for an example.
123[[https://voyager.cmc.pub][voyager.cmc.pub]] for an example.
content/blog/2023-10-04-digital-minimalism.org +1 −1
@@ -3,7 +3,7 @@
33#+description:
44#+slug: digital-minimalism
55
6I've written [[https://cleberg.net/wiki/#digital-garden][a note about minimalism]]
6I've written [[https://cmc.pub/wiki/#digital-garden][a note about minimalism]]
77before, but I wanted to dedicate some time to reflect on digital
88minimalism and how I've been able to minimize the impact of digital
99devices in my life.
content/blog/2023-10-11-self-hosting-authelia.org +2 −2
@@ -441,11 +441,11 @@ When visiting the protected domain, you will now be redirected to your
441441authentication domain and presented with the Authelia login portal.
442442
443443#+caption: Authelia Portal
444[[https://img.cleberg.net/blog/20231010-authelia/authelia_portal.png]]
444[[https://img.cmc.pub/blog/20231010-authelia/authelia_portal.png]]
445445
446446Once you've successfully authenticated, you can visit your
447447authentication domain directly and see that you're currently
448448authenticated to any domain protected by Authelia.
449449
450450#+caption: Authelia Success
451[[https://img.cleberg.net/blog/20231010-authelia/authelia_success.png]]
451[[https://img.cmc.pub/blog/20231010-authelia/authelia_success.png]]
content/blog/2023-10-17-self-hosting-anonymousoverflow.org +2 −2
@@ -6,7 +6,7 @@
66* Overview
77
88I recently launched an instance of AnonymousOverflow at
9[[https://ao.cleberg.net][ao.cleberg.net]] and wanted to write a brief
9[[https://ao.cmc.pub][ao.cmc.pub]] and wanted to write a brief
1010post on how easy it is to install with Docker Compose and Nginx.
1111
1212This guide uses Ubuntu server, Docker Compose, and Nginx as a reverse
@@ -128,4 +128,4 @@ sudo systemctl restart nginx.service
128128#+end_src
129129
130130The website will now be available publicly. Visit
131[[https://ao.cleberg.net][my instance]] for an example.
131[[https://ao.cmc.pub][my instance]] for an example.
content/blog/2024-01-27-tableau-dashboard.org +2 −2
@@ -11,7 +11,7 @@ them to create the dashboard below. You can view this dashboard interactively
1111online here: [[https://public.tableau.com/app/profile/c.c7042/viz/OmahaCrimeData2015-2023/OmahaCrimeData2015-2023#1][Omaha Crime Data (2015 - 2023)]].
1212
1313#+caption: Tableau Dashboard
14[[https://img.cleberg.net/blog/20240127-tableau-dashboard/dashboard.png]]
14[[https://img.cmc.pub/blog/20240127-tableau-dashboard/dashboard.png]]
1515
1616* Gather the Data
1717
@@ -140,4 +140,4 @@ There's a ton of other options available to be used in a dashboard like this,
140140but this project shows a quick preview of what you can do in Tableau Public.
141141
142142#+caption: Tableau Dashboard
143[[https://img.cleberg.net/blog/20240127-tableau-dashboard/dashboard.png]]
143[[https://img.cmc.pub/blog/20240127-tableau-dashboard/dashboard.png]]
content/blog/2024-03-13-doom-emacs.org +9 −9
@@ -12,10 +12,10 @@ and the help pane open at the bottomm.
1212The themes are =doom-homage-white= and =doom-homage-black=.
1313
1414#+caption: Doom Emacs Light Mode
15[[https://img.cleberg.net/blog/20240314-doom-emacs/light.png]]
15[[https://img.cmc.pub/blog/20240314-doom-emacs/light.png]]
1616
1717#+caption: Doom Emacs Dark Mode
18[[https://img.cleberg.net/blog/20240314-doom-emacs/dark.png]]
18[[https://img.cmc.pub/blog/20240314-doom-emacs/dark.png]]
1919
2020** Getting Started
2121
@@ -183,7 +183,7 @@ been slowly adoping some Python and general web dev tools as well.
183183*** Markdown
184184
185185#+caption: Markdown Preview
186[[https://img.cleberg.net/blog/20240314-doom-emacs/markdown.png]]
186[[https://img.cmc.pub/blog/20240314-doom-emacs/markdown.png]]
187187
188188Markdown is fairly simple as the syntax is limited, so just make sure the
189189=~/.doom.d/init.el= includes the =markdown= declaration in the =:lang= section.
@@ -205,7 +205,7 @@ things like link hiding.
205205*** Org-Mode
206206
207207#+caption: Org-Mode Preview
208[[https://img.cleberg.net/blog/20240314-doom-emacs/org.png]]
208[[https://img.cmc.pub/blog/20240314-doom-emacs/org.png]]
209209
210210Similar to the markdown section above, ensure that the =~/.doom.d/init.el=
211211includes the =org= declaration in the =:lang= section.
@@ -269,10 +269,10 @@ list them all, so I will simply cover a few of the basic commands I use myself.
269269
270270 (setq org-publish-project-alist
271271 `(("blog"
272 :base-directory "~/Source/cleberg.net/"
272 :base-directory "~/Source/cmc.pub/"
273273 :base-extension "org"
274274 :recursive t
275 :publishing-directory "~/Source/cleberg.net/public/"
275 :publishing-directory "~/Source/cmc.pub/public/"
276276 :publishing-function org-html-publish-to-html
277277 ;; HTML5
278278 :html-doctype "html5"
@@ -311,13 +311,13 @@ list them all, so I will simply cover a few of the basic commands I use myself.
311311 )
312312
313313 ("static"
314 :base-directory "~/Source/cleberg.net/static/"
314 :base-directory "~/Source/cmc.pub/static/"
315315 :base-extension "css\\|txt\\|jpg\\|gif\\|png"
316316 :recursive t
317 :publishing-directory "~/Source/cleberg.net/public/"
317 :publishing-directory "~/Source/cmc.pub/public/"
318318 :publishing-function org-publish-attachment)
319319
320 ("cleberg.net" :components ("blog" "static"))))
320 ("cmc.pub" :components ("blog" "static"))))
321321 #+end_src
322322
323323** General Thoughts
content/blog/2024-03-15-self-hosting-ddns-updater.org +1 −1
@@ -4,7 +4,7 @@
44#+slug: self-hosting-ddns-updater
55
66#+caption: DDNS Updater Web View
7[[https://img.cleberg.net/blog/20240315-ddns-updater/ddns.png]]
7[[https://img.cmc.pub/blog/20240315-ddns-updater/ddns.png]]
88
99[[https://github.com/qdm12/ddns-updater][DDNS Updater]] is a program to keep DNS A and/or AAAA records updated for multiple
1010DNS providers.
content/blog/2024-03-29-org-blog.org +6 −6
@@ -8,7 +8,7 @@ feed duplicated itself when I moved this blog over to org-mode last night.
88
99This post focuses specifically on the configuration and tools I use to blog from
1010Emacs with Org-Mode and does not focus on Emacs or Org-Mode themselves. Refer to
11the post I wrote about [[https://cleberg.net/blog/doom-emacs-org-mode.html][Doom Emacs & Org-Mode]] for more information about my base
11the post I wrote about [[https://cmc.pub/blog/doom-emacs-org-mode.html][Doom Emacs & Org-Mode]] for more information about my base
1212Emacs configuration.
1313
1414* Weblorg
@@ -60,7 +60,7 @@ Now that I've installed weblorg, I need to configure the project. I'll start by
6060navigating to my site's source code and creating a =publish.el= file.
6161
6262#+begin_src sh
63cd ~/Source/cleberg.net && nano publish.el
63cd ~/Source/cmc.pub && nano publish.el
6464#+end_src
6565
6666Since I'm using Doom, Emacs will not automatically load the packages I need
@@ -80,13 +80,13 @@ explicitly tell Emacs where Doom stores the =htmlize=, =weblorg=, and
8080;; To build with the custom URL below, call:
8181;;;; ENV=prod emacs --script publish.el
8282(if (string= (getenv "ENV") "prod")
83 (setq weblorg-default-url "https://cleberg.net"))
83 (setq weblorg-default-url "https://cmc.pub"))
8484
8585;; site metadata
8686(weblorg-site
8787 :theme nil
88 :template-vars '(("site_name" . "cleberg.net")
89 ("site_owner" . "hello@cleberg.net")
88 :template-vars '(("site_name" . "cmc.pub")
89 ("site_owner" . "hello@cmc.pub")
9090 ("site_description" . "Just a blip of ones and zeroes.")))
9191
9292;; route for rendering the index page of the website
@@ -235,7 +235,7 @@ Within this script, I do the following:
235235#+begin_src sh
236236rm -rf .build/* && \
237237ENV=prod emacs--script publish.el && \
238scp -r .build/* ubuntu:/var/www/cleberg.net/
238scp -r .build/* ubuntu:/var/www/cmc.pub/
239239#+end_src
240240
241241*** Time to Build
content/blog/2024-04-08-docker-local-web-server.org +9 −9
@@ -33,7 +33,7 @@ Open the installer and follow the installation process until the application
3333finishes the installation process.
3434
3535#+caption: Docker Desktop on macOS
36[[https://img.cleberg.net/blog/20240408-docker-local-web-server/docker-desktop.png]]
36[[https://img.cmc.pub/blog/20240408-docker-local-web-server/docker-desktop.png]]
3737
3838** Creating an Nginx Container
3939
@@ -56,7 +56,7 @@ docker run -it --rm -d -p 8000:80 --name web nginx
5656You can navigate to [[http://localhost:8000]] to see the resulting page.
5757
5858#+caption: Default Nginx Container
59[[https://img.cleberg.net/blog/20240408-docker-local-web-server/default-container.png]]
59[[https://img.cmc.pub/blog/20240408-docker-local-web-server/default-container.png]]
6060
6161** Customizing the Nginx Container
6262
@@ -76,7 +76,7 @@ To see the updates, you can delete the previous container in the GUI or run
7676=docker run= command below.
7777
7878#+begin_src sh
79docker run -it -d -p 8000:80 --name web -v ~/Source/cleberg.net/.build:/usr/share/nginx/html -v ~/Source/cleberg.net/nginx-config.conf:/etc/nginx/conf.d/default.conf nginx
79docker run -it -d -p 8000:80 --name web -v ~/Source/cmc.pub/.build:/usr/share/nginx/html -v ~/Source/cmc.pub/nginx-config.conf:/etc/nginx/conf.d/default.conf nginx
8080#+end_src
8181
8282Here's an example of my development configuration file.
@@ -84,14 +84,14 @@ Here's an example of my development configuration file.
8484#+begin_src conf
8585# nginx-config.conf
8686server {
87 server_name cleberg.net www.cleberg.net;
87 server_name cmc.pub www.cmc.pub;
8888
8989 root /usr/share/nginx/html;
9090 index index.html;
9191 autoindex on;
9292
93 access_log /var/log/nginx/cleberg.net.access.log;
94 error_log /var/log/nginx/cleberg.net.error.log;
93 access_log /var/log/nginx/cmc.pub.access.log;
94 error_log /var/log/nginx/cmc.pub.error.log;
9595
9696 location / {
9797 try_files $uri $uri/ =404;
@@ -102,14 +102,14 @@ server {
102102}
103103#+end_src
104104
105[[https://img.cleberg.net/blog/20240408-docker-local-web-server/custom-container.png]]
105[[https://img.cmc.pub/blog/20240408-docker-local-web-server/custom-container.png]]
106106
107107* Customizing Deployment Actions
108108
109109I am currently blogging with [[https://emacs.love/weblorg/][weblorg]], which uses a custom =publish.el= file to
110110build the static site. Within this file, I have configured my deployment process
111111to check for the =ENV= variable in thesh and if it's set to =prod=, the script
112will set the base URLs to =https://cleberg.net=. If not, it sets the base URLs
112will set the base URLs to =https://cmc.pub=. If not, it sets the base URLs
113113to =localhost:8000= (which matches the port used in the container above).
114114
115115Therefore, I have modified my =build.sh= script to build with =localhost= URLs
@@ -123,7 +123,7 @@ if [ "$ENV" == "prod" ]; then
123123 echo "Environment = Production" && \
124124 rm -rf .build/* && \
125125 emacs --script publish.el && \
126 scp -r .build/* ubuntu:/var/www/cleberg.net/
126 scp -r .build/* ubuntu:/var/www/cmc.pub/
127127else
128128 echo "Environment = Development" && \
129129 rm -rf .build/* && \
content/blog/2024-04-18-mu4e.org +4 −4
@@ -159,9 +159,9 @@ auth on
159159host smtp.startmail.com
160160port 465
161161protocol smtp
162from hello@cleberg.net
163user hello@cleberg.net
164passwordeval security find-generic-password -s startmail -a hello@cleberg.net -w
162from hello@cmc.pub
163user hello@cmc.pub
164passwordeval security find-generic-password -s startmail -a hello@cmc.pub -w
165165tls on
166166tls_starttls off
167167
@@ -300,4 +300,4 @@ The home page shows various options and metadata about the account you've
300300opened.
301301
302302#+caption: Mu4e Home Page
303[[https://img.cleberg.net/blog/20240418-mu4e/mu4e.png]]
303[[https://img.cmc.pub/blog/20240418-mu4e/mu4e.png]]
content/blog/2024-05-03-ubuntu-on-macos.org +5 −5
@@ -32,7 +32,7 @@ Once installed, you can launch OrbStack and create a Linux machine in a matter
3232of seconds. The creation dialog defaults to Ubuntu.
3333
3434#+caption: OrbStack's Linux Machine Creation Page
35[[https://img.cleberg.net/blog/20240503-ubuntu-on-macos/create.png]]
35[[https://img.cmc.pub/blog/20240503-ubuntu-on-macos/create.png]]
3636
3737** Launching the Machine
3838
@@ -62,7 +62,7 @@ In the example below, we can see that the machine is using =Linux ubuntu 6.9.6=
6262and operates similar to a fresh Ubuntu install on bare metal.
6363
6464#+caption: Ubuntu CLI
65[[https://img.cleberg.net/blog/20240503-ubuntu-on-macos/cli.png]]
65[[https://img.cmc.pub/blog/20240503-ubuntu-on-macos/cli.png]]
6666
6767You can also click the machine's folder icon in OrbStack to open the machine's
6868file system within macOS's native Files app. Within Files, you can double-click
@@ -70,13 +70,13 @@ to open any files and they will open in the macOS defaults for those file types
7070(e.g., TextEdit).
7171
7272#+caption: Ubuntu Files
73[[https://img.cleberg.net/blog/20240503-ubuntu-on-macos/files.png]]
73[[https://img.cmc.pub/blog/20240503-ubuntu-on-macos/files.png]]
7474
7575Here's an example of opening the =test.md= file in the screenshot above, which
7676defaults to opening in Xcode on my system.
7777
7878#+caption: Ubuntu Files
79[[https://img.cleberg.net/blog/20240503-ubuntu-on-macos/xcode.png]]
79[[https://img.cmc.pub/blog/20240503-ubuntu-on-macos/xcode.png]]
8080
8181*** Test Examples
8282
@@ -84,7 +84,7 @@ As a quick example of the system, I installed =neofetch=, switched to the =zsh=
8484shell, and ran a few common commands.
8585
8686#+caption: Test Examples
87[[https://img.cleberg.net/blog/20240503-ubuntu-on-macos/test.png]]
87[[https://img.cmc.pub/blog/20240503-ubuntu-on-macos/test.png]]
8888
8989** Thoughts
9090
content/blog/2024-07-11-emacs-on-ipad.org +5 −5
@@ -15,7 +15,7 @@ I recommend [[https://apps.apple.com/us/app/ish-shell/id1436902243][iSH]], since
1515and will allow you to install packages that you need.
1616
1717#+caption: iSH Application
18[[https://img.cleberg.net/blog/20240711-emacs-on-ipad/ish.png]]
18[[https://img.cmc.pub/blog/20240711-emacs-on-ipad/ish.png]]
1919
2020** Require Packages
2121
@@ -28,7 +28,7 @@ apk add emacs ripgrep fd findutils
2828#+end_src
2929
3030#+caption: Package !Installation
31[[https://img.cleberg.net/blog/20240711-emacs-on-ipad/dependencies.png]]
31[[https://img.cmc.pub/blog/20240711-emacs-on-ipad/dependencies.png]]
3232
3333** Emacs
3434
@@ -40,7 +40,7 @@ incredibly slow and buggy that I was not even able to take screenshots. Someone
4040smarter than me could likely get it to work with a little tinkering.
4141
4242#+caption: Emacs
43[[https://img.cleberg.net/blog/20240711-emacs-on-ipad/emacs.png]]
43[[https://img.cmc.pub/blog/20240711-emacs-on-ipad/emacs.png]]
4444
4545*** MELPA
4646
@@ -49,13 +49,13 @@ able to search through their 5700+ packages instead of just ELPA packages. If
4949you don't, you will only have access to ELPA packages like the ones below.
5050
5151#+caption: package-install
52[[https://img.cleberg.net/blog/20240711-emacs-on-ipad/melpa.png]]
52[[https://img.cmc.pub/blog/20240711-emacs-on-ipad/melpa.png]]
5353
5454Once you have MELPA, you can install packages like the =dashboard= package shown
5555below.
5656
5757#+caption: emacs-dashboard
58[[https://img.cleberg.net/blog/20240711-emacs-on-ipad/dashboard.png]]
58[[https://img.cmc.pub/blog/20240711-emacs-on-ipad/dashboard.png]]
5959
6060*** Speed
6161
content/blog/2024-08-11-org-mode-features.org +8 −8
@@ -7,7 +7,7 @@
77* Cycling (Folding)
88
99#+begin_quote
10[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L7][View this section]] in org-mode.
10[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L7][View this section]] in org-mode.
1111#+end_quote
1212
1313My absolute top-used feature is [[https://orgmode.org/manual/Global-and-local-cycling.html][global and local cycling]] and it's not even
@@ -55,7 +55,7 @@ at the top of the buffer:
5555* TODO Lists
5656
5757#+begin_quote
58[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L55][View this section]] in org-mode.
58[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L55][View this section]] in org-mode.
5959#+end_quote
6060
6161Next up on in this post are [[https://orgmode.org/manual/TODO-Items.html][TODO Lists]]. Being able to combine note taking and
@@ -106,7 +106,7 @@ that variable to alert me of tasks with iOS native notifications.
106106* Time Stamping
107107
108108#+begin_quote
109[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L106][View this section]] in org-mode.
109[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L106][View this section]] in org-mode.
110110#+end_quote
111111
112112Another great feature are the [[https://orgmode.org/manual/Dates-and-Times.html][dates and times]] functionalities within org-mode.
@@ -137,7 +137,7 @@ different options available when creating timestamps.
137137* Tags
138138
139139#+begin_quote
140[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L137][View this section]] in org-mode.
140[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L137][View this section]] in org-mode.
141141#+end_quote
142142
143143Next up are [[https://orgmode.org/manual/Tags.html][Tags]], which provide a way to document contexts within and across
@@ -162,7 +162,7 @@ m= and search for a tag of your choosing.
162162* Tables
163163
164164#+begin_quote
165[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L162][View this section]] in org-mode.
165[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L162][View this section]] in org-mode.
166166#+end_quote
167167
168168One of the most inconvenient parts of writing in Markdown was dealing with
@@ -232,7 +232,7 @@ on the second line.
232232* Source Code Blocks
233233
234234#+begin_quote
235[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L232][View this section]] in org-mode.
235[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L232][View this section]] in org-mode.
236236#+end_quote
237237
238238** Introduction to Source Code Blocks
@@ -302,7 +302,7 @@ results below the code block.
302302* Exporting and Publishing
303303
304304#+begin_quote
305[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L302][View this section]] in org-mode.
305[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L302][View this section]] in org-mode.
306306#+end_quote
307307
308308I would be remiss if I did not mention the native [[https://orgmode.org/manual/Exporting.html][exporting and publishing]]
@@ -336,7 +336,7 @@ external [[https://orgmode.org/tools.html][tools]], including [[https://orgmode.
336336* Agenda
337337
338338#+begin_quote
339[[https://git.sr.ht/~cyborg/cleberg.net/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L336][View this section]] in org-mode.
339[[https://git.sr.ht/~cyborg/cmc.pub/tree/main/item/content/blog/2024-08-11-org-mode-features.org#L336][View this section]] in org-mode.
340340#+end_quote
341341
342342Last, but not least, are [[https://orgmode.org/manual/Agenda-Views.html][Agenda Views]]. With agenda views, you can easily view
content/blog/2024-08-25-n8n-sentiment-analysis.org +3 −3
@@ -113,7 +113,7 @@ You can open the included workflow at
113113and create a new configuration.
114114
115115#+caption: n8n Workflow
116[[https://img.cleberg.net/blog/20240825-n8n-sentiment-analysis/workflow.png]]
116[[https://img.cmc.pub/blog/20240825-n8n-sentiment-analysis/workflow.png]]
117117
118118This workflow contains the following nodes:
1191191. Email Trigger (IMAP)
@@ -151,10 +151,10 @@ send yourself a test email!
151151After testing each step noted above, n8n provided the results below - it works!
152152
153153#+caption: Positive Results
154[[https://img.cleberg.net/blog/20240825-n8n-sentiment-analysis/positive_results.png]]
154[[https://img.cmc.pub/blog/20240825-n8n-sentiment-analysis/positive_results.png]]
155155
156156#+caption: Negative Results
157[[https://img.cleberg.net/blog/20240825-n8n-sentiment-analysis/negative_results.png]]
157[[https://img.cmc.pub/blog/20240825-n8n-sentiment-analysis/negative_results.png]]
158158
159159While this isn't anything earth-shattering, it does show easy it is to get
160160started with n8n and large language models in a self-hosted environment.
content/blog/2024-09-20-prometheus-grafana-cloud.org +9 −9
@@ -277,7 +277,7 @@ and determine what Grafana should do when an alert is triggered.
277277** OnCall
278278
279279#+caption: OnCall
280[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/oncall.png]]
280[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/oncall.png]]
281281
282282Within the Alerts & IRM section of Grafana (=/alerts-and-incidents=), open the
283283Users page.
@@ -299,12 +299,12 @@ users and teams to be on call for specific date and time ranges. For my
299299purposes, I put myself on-call 24/7 so that I receive all alerts.
300300
301301#+caption: User Information
302[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/irm_user_info.png]]
302[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/irm_user_info.png]]
303303
304304** Alerting
305305
306306#+caption: Alerting Insights
307[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/alerting_insights.png]]
307[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/alerting_insights.png]]
308308
309309Now that we have defined users and team associated with an on-call schedule and
310310configured to receive the proper alerts, let's define a rule that will generate
@@ -323,13 +323,13 @@ evaluation group. This is connected to our Grafana email, but can be associated
323323with any notification policy.
324324
325325#+caption: New Alert Rule
326[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/new_alert.png]]
326[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/new_alert.png]]
327327
328328When the alert fires, it will generate an email (or whatever notification policy
329329you assigned) and will look something like the following image.
330330
331331#+caption: Alerting Example
332[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/email_alert.png]]
332[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/email_alert.png]]
333333
334334** Dashboards
335335
@@ -337,13 +337,13 @@ As promised above, here are some dashboard screenshots based on the
337337configurations above.
338338
339339#+caption: Nginx Dashboard
340[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/dashboard_nginx.png]]
340[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/dashboard_nginx.png]]
341341
342342#+caption: Node Dashboard
343[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/dashboard_node.png]]
343[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/dashboard_node.png]]
344344
345345#+caption: OnCall Dashboard
346[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/dashboard_oncall.png]]
346[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/dashboard_oncall.png]]
347347
348348#+caption: Prometheus Dashboard
349[[https://img.cleberg.net/blog/20240920-prometheus-grafana-cloud/dashboard_prometheus.png]]
349[[https://img.cmc.pub/blog/20240920-prometheus-grafana-cloud/dashboard_prometheus.png]]
content/blog/2024-10-31-continue-ollama-code-assistant.org +5 −5
@@ -201,19 +201,19 @@ Continue:
201201Below are a few screenshots from my current VS Codium window:
202202
203203#+caption: Available Continue Commands
204[[https://img.cleberg.net/blog/20241031-continue-ollama-code-assistant/continue_commands.png]]
204[[https://img.cmc.pub/blog/20241031-continue-ollama-code-assistant/continue_commands.png]]
205205
206206#+caption: Continue Fullscreen Chat Window
207[[https://img.cleberg.net/blog/20241031-continue-ollama-code-assistant/continue_fullscreen.png]]
207[[https://img.cmc.pub/blog/20241031-continue-ollama-code-assistant/continue_fullscreen.png]]
208208
209209#+caption: Inline Hotkeys
210[[https://img.cleberg.net/blog/20241031-continue-ollama-code-assistant/continue_inline_hotkeys.png]]
210[[https://img.cmc.pub/blog/20241031-continue-ollama-code-assistant/continue_inline_hotkeys.png]]
211211
212212#+caption: Inline Editing Suggestions
213[[https://img.cleberg.net/blog/20241031-continue-ollama-code-assistant/continue_inline.png]]
213[[https://img.cmc.pub/blog/20241031-continue-ollama-code-assistant/continue_inline.png]]
214214
215215#+caption: Sidebar Context Window
216[[https://img.cleberg.net/blog/20241031-continue-ollama-code-assistant/continue_sidebar.png]]
216[[https://img.cmc.pub/blog/20241031-continue-ollama-code-assistant/continue_sidebar.png]]
217217
218218* Conclusion
219219
content/blog/2024-12-27-self-hosting-the-lounge.org +5 −5
@@ -11,7 +11,7 @@ desirable features for a modern IRC client. The Lounge supports push
1111notifications, link previews, file uploads, always connected, multi-user
1212support, and is available as a PWA for mobile devices.
1313
14I wanted to write this as I had written a post about [[https://cleberg.net/blog/self-hosting-convos.html][self-hosting Convos]] and
14I wanted to write this as I had written a post about [[https://cmc.pub/blog/self-hosting-convos.html][self-hosting Convos]] and
1515have recently migrated over to The Lounge instead.
1616
1717If you'd like to try a demo first, head over to [[https://demo.thelounge.chat/][the official demo website]].
@@ -60,7 +60,7 @@ browsing from a different device. Don't forget to allow the port through your
6060machine's firewall, if you have one enabled.
6161
6262#+caption: Login
63[[https://img.cleberg.net/blog/20241229-thelounge/login.png]]
63[[https://img.cmc.pub/blog/20241229-thelounge/login.png]]
6464
6565** Nginx Reverse Proxy
6666
@@ -155,10 +155,10 @@ bottom of the sidebar and connect to individual channels or users via the plus
155155(=+=) button next to your server's name in the sidebar.
156156
157157#+caption: New Server Connection
158[[https://img.cleberg.net/blog/20241229-thelounge/new_connection.png]]
158[[https://img.cmc.pub/blog/20241229-thelounge/new_connection.png]]
159159
160160#+caption: Existing Server Connection
161[[https://img.cleberg.net/blog/20241229-thelounge/existing_connection.png]]
161[[https://img.cmc.pub/blog/20241229-thelounge/existing_connection.png]]
162162
163163#+caption: Channel View
164[[https://img.cleberg.net/blog/20241229-thelounge/channel.png]]
164[[https://img.cmc.pub/blog/20241229-thelounge/channel.png]]
content/blog/2025-01-23-self-hosting-tandoor.org +7 −7
@@ -125,22 +125,22 @@ The app is now available on your custom domain!
125125** Screenshots
126126
127127#+caption: Login
128[[https://img.cleberg.net/blog/20250123-self-hosting-tandoor/login.png]]
128[[https://img.cmc.pub/blog/20250123-self-hosting-tandoor/login.png]]
129129
130130#+caption: Recipes
131[[https://img.cleberg.net/blog/20250123-self-hosting-tandoor/recipes.png]]
131[[https://img.cmc.pub/blog/20250123-self-hosting-tandoor/recipes.png]]
132132
133133#+caption: Meal Plan
134[[https://img.cleberg.net/blog/20250123-self-hosting-tandoor/mealplan.png]]
134[[https://img.cmc.pub/blog/20250123-self-hosting-tandoor/mealplan.png]]
135135
136136#+caption: Shopping Lists
137[[https://img.cleberg.net/blog/20250123-self-hosting-tandoor/shopping.png]]
137[[https://img.cmc.pub/blog/20250123-self-hosting-tandoor/shopping.png]]
138138
139139#+caption: Cook Book
140[[https://img.cleberg.net/blog/20250123-self-hosting-tandoor/cookbook.png]]
140[[https://img.cmc.pub/blog/20250123-self-hosting-tandoor/cookbook.png]]
141141
142142#+caption: Import
143[[https://img.cleberg.net/blog/20250123-self-hosting-tandoor/import.png]]
143[[https://img.cmc.pub/blog/20250123-self-hosting-tandoor/import.png]]
144144
145145#+caption: Administration Panel
146[[https://img.cleberg.net/blog/20250123-self-hosting-tandoor/admin.png]]
146[[https://img.cmc.pub/blog/20250123-self-hosting-tandoor/admin.png]]
content/blog/2025-02-11-obscura-vpn.org +4 −4
@@ -55,7 +55,7 @@ far as I can tell, there is no free tier available. In my opinion, this is a
5555good thing as I hesitate to understand how privacy-focused apps make money when
5656they offer free services to users.
5757
58[[https://img.cleberg.net/blog/20250211-obscura-vpn/payment.png]]
58[[https://img.cmc.pub/blog/20250211-obscura-vpn/payment.png]]
5959#+caption: Payment
6060
6161** Connection
@@ -64,10 +64,10 @@ Once you've enrolled in either a subscription or one-time payment, Obscura will
6464return you to the app and allow you to connect. You can choose a specific server
6565location or automatically connect.
6666
67[[https://img.cleberg.net/blog/20250211-obscura-vpn/connect.png]]
67[[https://img.cmc.pub/blog/20250211-obscura-vpn/connect.png]]
6868#+caption: Initial Connection
6969
70[[https://img.cleberg.net/blog/20250211-obscura-vpn/toolbar.png]]
70[[https://img.cmc.pub/blog/20250211-obscura-vpn/toolbar.png]]
7171#+caption: Toolbar Utility
7272
7373** Speed
@@ -91,7 +91,7 @@ nodes before connecting to your target.
9191From the image below, we can see that Mullvad confirmed my traffic to be
9292connected through a Mullvad IP address.
9393
94[[https://img.cleberg.net/blog/20250211-obscura-vpn/mullvad-check.png]]
94[[https://img.cmc.pub/blog/20250211-obscura-vpn/mullvad-check.png]]
9595#+caption: Mullvad Check
9696
9797* Final Thoughts
content/blog/2025-02-24-email-migration.org +1 −1
@@ -48,7 +48,7 @@ This led to a dead end as my two methods failed:
4848At this point, I decided to take a step back and use [[https://github.com/djcb/mu][mu]], a command-line utility
4949that would index my files and sync back and forth with Migadu for me.
5050
51Using my blog post, [[https://cleberg.net/blog/mu4e.html][Email in Doom Emacs with Mu4e on macOS]], (and skipping the
51Using my blog post, [[https://cmc.pub/blog/mu4e.html][Email in Doom Emacs with Mu4e on macOS]], (and skipping the
5252mu4e parts) I was able to set up a minimal directory connected to my Migadu IMAP
5353account. Using my terminal, I simply moved all of my messages into the =mu=
5454directory and synchronized the account, and voila, my messages synchronized
content/index.org +1 −1
@@ -1,2 +1,2 @@
1#+title: cleberg.net
1#+title: cmc.pub
22#+description: Just a blip of ones and zeroes.
content/salary/index.org +2 −2
@@ -46,7 +46,7 @@ raise while in the same role.
4646| Teaching Assistant | University of Nebraska | Lincoln, NE | 2017-08 | 2018-05 | $7/hour |
4747| Community Management Intern | Walgreens | Lincoln, NE | 2017-06 | 2018-02 | $14/hour |
4848
49[[[https://cleberg.net/salary.csv][source data]]]
49[[[https://cmc.pub/salary.csv][source data]]]
5050
5151** Salary Visualization
5252:PROPERTIES:
@@ -56,7 +56,7 @@ See the graph below for a visualization of each job's salary over time, as well
5656as percentage increases or decreases between jobs.
5757
5858#+caption: Salary Visualization
59[[https://img.cleberg.net/blog/salary/salary.png]]
59[[https://img.cmc.pub/blog/salary/salary.png]]
6060
6161This page was inspired by [[https://xeiaso.net/salary-transparency/][Xe]], and I'm quoting the following wording from them as
6262I want to reiterate this piece:
content/services/index.org +10 −11
@@ -1,15 +1,14 @@
11#+title: Services
22#+slug: index
33
4- [[https://ao.cleberg.net/][AnonymousOverflow]] - A StackOverflow proxy
5- [[https://cyberchef.cleberg.net/][CyberChef]] - The Cyber Swiss Army Knife
6- [[https://files.cleberg.net/][FileArchive]] - An interesting file archive
7- [[https://paste.cleberg.net/][FlashPaper]] - One-time encrypted password/secret sharing
8- [[https://invidious.cleberg.net/][Invidious]] - A YouTube proxy
9- [[https://office.cleberg.net/][Office]] - The world's smallest office suite
10- [[https://org.cleberg.net/][Org-Live]] - A basic org-mode editor for the web I built
11- [[https://priviblur.cleberg.net][Priviblur]] - A privacy-focused alternative frontend to Tumblr
12- [[https://rimgo.cleberg.net/][Rimgo]] - An alternative frontend for Imgur
13- [[https://search.cleberg.net/][SearXNG]] - A privacy-respecting, open metasearch engine
4- [[https://ao.cmc.pub/][AnonymousOverflow]] - A StackOverflow proxy
5- [[https://cyberchef.cmc.pub/][CyberChef]] - The Cyber Swiss Army Knife
6- [[https://files.cmc.pub/][FileArchive]] - An interesting file archive
7- [[https://paste.cmc.pub/][FlashPaper]] - One-time encrypted password/secret sharing
8- [[https://office.cmc.pub/][Office]] - The world's smallest office suite
9- [[https://org.cmc.pub/][Org-Live]] - A basic org-mode editor for the web I built
10- [[https://priviblur.cmc.pub][Priviblur]] - A privacy-focused alternative frontend to Tumblr
11- [[https://rimgo.cmc.pub/][Rimgo]] - An alternative frontend for Imgur
12- [[https://search.cmc.pub/][SearXNG]] - A privacy-respecting, open metasearch engine
1413
15See the [[https://git.sr.ht/~cyborg/cleberg.net/log/main/item/content/services/index.org][git log]] if you want to see changes that have been made.
14See the [[https://git.sr.ht/~cyborg/cmc.pub/log/main/item/content/services/index.org][git log]] if you want to see changes that have been made.
content/wiki/ios.org +1 −1
@@ -3,7 +3,7 @@
33
44Related:
55
6- [[https://cleberg.net/wiki/hardware.html][Hardware]]
6- [[https://cmc.pub/wiki/hardware.html][Hardware]]
77
88My primary mobile OS. Currently running iOS 17. This wiki page contains most of
99the apps I have used at one point or another across my different iPhones.
content/wiki/macos.org +1 −1
@@ -3,7 +3,7 @@
33
44Related:
55
6- [[https://cleberg.net/wiki/hardware/][Hardware]]
6- [[https://cmc.pub/wiki/hardware/][Hardware]]
77
88My primary OS. Currently running macOS Sonoma 14. This wiki page contains most
99of the apps I have used at one point or another across my different Macbooks.
publish.el +3 −3
@@ -8,13 +8,13 @@
88
99;; Set default URL for Weblorg
1010(if (string= (getenv "ENV") "prod")
11 (setq weblorg-default-url "https://cleberg.net"))
11 (setq weblorg-default-url "https://cmc.pub"))
1212
1313;; Define site configuration
1414(weblorg-site
1515 :theme nil
16 :template-vars `(("site_name" . "cleberg.net")
17 ("site_owner" . "Christian Cleberg <hello@cleberg.net>")
16 :template-vars `(("site_name" . "cmc.pub")
17 ("site_owner" . "Christian Cleberg <hello@cmc.pub>")
1818 ("site_description" . "Just a blip of ones and zeroes.")))
1919
2020;; Define routes for rendering content
theme/static/.well-known/security.txt +3 −3
@@ -1,11 +1,11 @@
11-----BEGIN PGP SIGNED MESSAGE-----
22Hash: SHA256
33
4Contact: mailto:security@cleberg.net
4Contact: mailto:hello@cmc.pub
55Expires: 2100-01-01T06:00:00.000Z
6Encryption: https://cleberg.net/gpg.txt
6Encryption: https://cmc.pub/gpg.txt
77Preferred-Languages: en
8Canonical: https://cleberg.net/.well-known/security.txt
8Canonical: https://cmc.pub/.well-known/security.txt
99-----BEGIN PGP SIGNATURE-----
1010
1111iQIzBAEBCAAdFiEEOReXP7FZu7hhlFOFaUUaUXrAyzcFAmYkB9IACgkQaUUaUXrA
theme/static/gpg.txt +22 −49
@@ -1,52 +1,25 @@
11-----BEGIN PGP PUBLIC KEY BLOCK-----
22
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
500jZ4tA==
51=pl2G
3mDMEZ9CjJhYJKwYBBAHaRw8BAQdANl9s/8i2dlImJtTkHsOx/2RrAbc1V4zcrjJd
4EvpdYKK0IUNocmlzdGlhbiBDbGViZXJnIDxoZWxsb0BjbWMucHViPoiTBBMWCgA7
5FiEExocApvpLcYO2zuR97tyZXNFPGTwFAmfQoyYCGyMFCwkIBwICIgIGFQoJCAsC
6BBYCAwECHgcCF4AACgkQ7tyZXNFPGTyuIgEAlnx3gjFxc+61SLqJRih6cS3hQfiH
73zhBQiF/EjZOv5MA/1w9iY6HquKJb+4VjFSvx8dI0iYLOmLnU+grIEVZHAIAiQIz
8BBABCAAdFiEEOReXP7FZu7hhlFOFaUUaUXrAyzcFAmfQpDsACgkQaUUaUXrAyzcH
9rxAAk3s5KEwbke95EDa15cfvQa0sRTO8kHlLy713Ypjw2F2sTUiW4TNWlbwHvz7f
10ZNfi65Ds2d9vj7qLFWEgWGNgcevRJQAIKpzHQe9pi2oBuFxxbwL8Ick07cDJ4eDz
11CTER+EF6EUZA30PxiKKvCgprAnmZYoDTEko3rpj7O04hijJM2I/ZUcEQf68doM4s
12bIhtDcCEkNSGvYHsP9XAh6f+NTwqD6WtqvOKnI0g2Ea59c/qggqquC5jx4KvCOa1
13NQnqbFC/DB+CADSkhwSkBv+z44B7T0n2+uRvXWx+zkFZqNYkw0i9o9evoXRCKq0x
14GgPeEtcaVuAm8fru1yyiRIUBHwQ8up3ySpyygn56DhxL8G+Vw1+3J7KC0yk8dYb3
15paYodraF27mulRJHm7DPd8JuT0OVOnKBLE/P/BGPYOq39kYTn2qzvXQzPQvfbkdR
16oH+PM31HUmYkYRjZxkVdsE1SpwkRXyFG1GLNEOz73bdes/Vc/sajG7qbZXNaJfwD
17gUfL1x2W1CkSKiiaTlWdKZtPB43wnN2KZqgJ5Kj1axqCTw3KFArg/pkjgxjRC+IK
18uKmWiP8sLWTDwTjnvITnVmXiwMkv6TLPmljsVGOLfDtrFVfB1iAn4hceEajPOhYh
195iiJg6ZE+43NhqKQcgEqcyX3T/giVC528Ww3BJ5EHuLJn2i4OARn0KOpEgorBgEE
20AZdVAQUBAQdA7X3Gt9b5IobqDcudWMZdoPPkvpoomBkEdU+lK+KdqAQDAQgHiHgE
21GBYKACAWIQTGhwCm+ktxg7bO5H3u3Jlc0U8ZPAUCZ9CjqQIbDAAKCRDu3Jlc0U8Z
22PEUJAP4+NKbFgz+xYK7dnmYMmC5EpVaVQQenLrRQnPT/5G/AZgD/ZY+sXairfJlL
23HzMY8Xt1sB5k29myBFTDIhwq+Usm8go=
24=dq5B
5225-----END PGP PUBLIC KEY BLOCK-----
theme/templates/base.html +1 −1
@@ -33,7 +33,7 @@
3333 </p>
3434 <p>Last build: &lt;{{ now() | strftime("%Y-%m-%d %a %H:%M:%S") }}&gt;</p>
3535 <p>
36 <a href="https://git.sr.ht/~cyborg/cleberg.net" target="_blank"
36 <a href="https://git.sr.ht/~cyborg/cmc.pub" target="_blank"
3737 rel="noopener">Source Code</a> &middot;
3838 <a href="/feed.xml">RSS Feed</a> &middot;
3939 <a href="/.well-known/security.txt">security.txt</a>
theme/templates/feed.xml +3 −3
@@ -10,7 +10,7 @@
1010 xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
1111 xmlns:media="http://search.yahoo.com/mrss/">
1212 <channel>
13 <title>{{ site_name | default("cleberg.net") }}</title>
13 <title>{{ site_name | default("cmc.pub") }}</title>
1414 <atom:link
1515 href="{{ url_for("rss") }}"
1616 rel="self" type="application/rss+xml" />
@@ -20,13 +20,13 @@
2020 <pubDate>{{ posts | first | getattr("date") | strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate>
2121 <lastBuildDate>{{ now() | strftime("%a, %d %b %Y %H:%M:%S %z") }}</lastBuildDate>
2222 <generator>{{ meta.generator }}</generator>
23 <webMaster>{{ site_owner | default("hello@cleberg.net") }}</webMaster>
23 <webMaster>{{ site_owner | default("hello@cmc.pub") }}</webMaster>
2424
2525 {% for post in posts %}
2626 <item>
2727 <title>{{ post.title }}</title>
2828 <link>{{ url_for("blog", slug=post.slug) }}</link>
29 <author>{{ post.author|default("hello@cleberg.net") }}</author>
29 <author>{{ post.author|default("hello@cmc.pub") }}</author>
3030 <guid isPermaLink="false">{{ url_for("blog", slug=post.slug) }}</guid>
3131 <pubDate>{{ post.date|strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate>
3232 <description><![CDATA[{{ post.html|safe }}]]></description>
theme/templates/index.html +8 −11
@@ -1,9 +1,10 @@
11{% extends "base.html" %} {% block main %}
22<section>
3 <h1>cleberg.net</h1>
4 <pre>pub rsa4096 2022-11-16 [SC]
5 <a href="/gpg.txt">3917 973F B159 BBB8 6194 5385 6945 1A51 7AC0 CB37</a>
6uid [ultimate] Christian Cleberg &lt;hello@cleberg.net&gt;</pre>
3 <h1>cmc.pub</h1>
4 <pre>pub ed25519 2025-03-11 [SCA]
5 <a href="/gpg.txt">C687 00A6 FA4B 7183 B6CE E47D EEDC 995C D14F 193C</a>
6uid [ultimate] Christian Cleberg &lt;hello@cmc.pub&gt;
7sub cv25519 2025-03-11 [E]</pre>
78</section>
89<section>
910 <h2>Recent Blog Posts</h2>
@@ -33,7 +34,7 @@ uid [ultimate] Christian Cleberg &lt;hello@cleberg.net&gt;</pre>
3334<section>
3435 <h2>Everything Else</h2>
3536 <ul>
36 <li><a href="https://cv.cleberg.net">Curriculum Vitae</a></li>
37 <li><a href="https://cv.cmc.pub">Curriculum Vitae</a></li>
3738 <li><a href="/salary/">Salary</a></li>
3839 <li><a href="/services/">Services</a></li>
3940 <li><a href="/wiki/">Wiki</a></li>
@@ -43,13 +44,9 @@ uid [ultimate] Christian Cleberg &lt;hello@cleberg.net&gt;</pre>
4344<section>
4445 <h2>Contact</h2>
4546 <ul>
46 <li><a href="mailto:hello@cleberg.net">hello@cleberg.net</a> (<a href="https://cleberg.net/gpg.txt">GPG</a>)</li>
47 <li><a href="mailto:hello@cmc.pub">hello@cmc.pub</a> (<a href="https://cmc.pub/gpg.txt">GPG</a>)</li>
4748 <li>cyb0rg on <a href="https://libera.chat/">libera.chat</a></li>
48 <li>
49 <a href="https://matrix.to/#/@cyborg:matrix.tchncs.de"
50 >@cyborg:@matrix.tchncs.de</a
51 >
52 </li>
49 <li><a href="https://lemmy.cmc.pub/u/cmc">@cmc</a> on Lemmy</li>
5350 <li><a href="https://sr.ht/~cyborg">Sourcehut</a></li>
5451 </ul>
5552</section>
theme/templates/post.html +1 −1
@@ -23,6 +23,6 @@
2323 {% endif %}
2424 </section>
2525 <section>{{ post.html | safe }}</section>
26 <blockquote><a href="mailto:hello@cleberg.net">Reply via email</a></blockquote>
26 <blockquote><a href="mailto:hello@cmc.pub">Reply via email</a></blockquote>
2727</article>
2828{% endblock %}
utils/hooks/post-push +1 −1
@@ -26,4 +26,4 @@ emacs --script publish.el &>/dev/null
2626minify -o theme/static/styles.min.css theme/static/styles.css
2727
2828# Deploy changes
29rsync -r --delete-before .build/* $ubuntu_server:/var/www/cleberg.net/
29rsync -r --delete-before .build/* $ubuntu_server:/var/www/cmc.pub/
utils/nginx-dev.conf +3 −3
@@ -1,12 +1,12 @@
11server {
2 server_name cleberg.net www.cleberg.net;
2 server_name cmc.pub www.cmc.pub;
33
44 root /usr/share/nginx/html;
55 index index.html;
66 autoindex on;
77
8 access_log /var/log/nginx/cleberg.net.access.log;
9 error_log /var/log/nginx/cleberg.net.error.log;
8 access_log /var/log/nginx/cmc.pub.access.log;
9 error_log /var/log/nginx/cmc.pub.error.log;
1010
1111 location / {
1212 try_files $uri $uri/ =404;
utils/salary_visualization.py +1 −1
@@ -13,7 +13,7 @@ import plotly.graph_objs as go
1313locale.setlocale(locale.LC_ALL, 'en_US.UTF-8')
1414
1515# Read the CSV file
16df = pd_read_csv('~/git/cleberg.net/theme/static/salary.csv')
16df = pd_read_csv('~/git/cmc.pub/theme/static/salary.csv')
1717
1818def format_currency(value: float) -> str:
1919 """