Commit 8314ccc536
Unsigned
Layout: unified · split
README.org +7 −7
| @@ -1,8 +1,8 @@ | |||
| 1 | #+title: README | 1 | #+title: README |
| 2 | 2 | ||
| 3 | * cleberg.net | 3 | * cmc.pub |
| 4 | 4 | ||
| 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 |
| 6 | powerful Org-Mode publishing system, courtesy of the [[https://github.com/emacs-love/weblorg][weblorg]] Emacs package. | 6 | powerful Org-Mode publishing system, courtesy of the [[https://github.com/emacs-love/weblorg][weblorg]] Emacs package. |
| 7 | 7 | ||
| 8 | ** Features & Configuration | 8 | ** Features & Configuration |
| @@ -12,15 +12,15 @@ through a simple =publish.el= file. For those who are interested in tweaking the | |||
| 12 | underlying configuration, the weblorg documentation provides all necessary | 12 | underlying configuration, the weblorg documentation provides all necessary |
| 13 | details on possible settings and options. | 13 | details on possible settings and options. |
| 14 | 14 | ||
| 15 | ** Getting Started with cleberg.net | 15 | ** Getting Started with cmc.pub |
| 16 | 16 | ||
| 17 | To begin exploring or contributing to this project, you'll first need to set up | 17 | To begin exploring or contributing to this project, you'll first need to set up |
| 18 | a local copy of the repository. This can be accomplished by running the | 18 | a local copy of the repository. This can be accomplished by running the |
| 19 | following commands within Emacs: | 19 | following commands within Emacs: |
| 20 | 20 | ||
| 21 | #+begin_src sh | 21 | #+begin_src sh |
| 22 | git clone https://git.sr.ht/~cyborg/cleberg.net && \ | 22 | git clone https://git.sr.ht/~cyborg/cmc.pub && \ |
| 23 | cd cleberg.net && \ | 23 | cd cmc.pub && \ |
| 24 | emacs -nw | 24 | emacs -nw |
| 25 | #+end_src | 25 | #+end_src |
| 26 | 26 | ||
| @@ -70,10 +70,10 @@ To quickly create a new blog post within Emacs, follow these steps: | |||
| 70 | the newly opened file. | 70 | the newly opened file. |
| 71 | 71 | ||
| 72 | This streamlined process allows you to rapidly generate fresh content for | 72 | This streamlined process allows you to rapidly generate fresh content for |
| 73 | cleberg.net, taking advantage of the existing template structure and formatting. | 73 | cmc.pub, taking advantage of the existing template structure and formatting. |
| 74 | 74 | ||
| 75 | ** Contributing & Tasks | 75 | ** Contributing & Tasks |
| 76 | 76 | ||
| 77 | For those interested in contributing to this project or addressing any | 77 | For those interested in contributing to this project or addressing any |
| 78 | outstanding issues, please refer to the [[https://todo.sr.ht/~cyborg/cleberg.net][ticket tracker]]. This is where you can find | 78 | outstanding issues, please refer to the [[https://todo.sr.ht/~cyborg/cmc.pub][ticket tracker]]. This is where you can find |
| 79 | a comprehensive list of open tickets or submit a new ticket for consideration. | 79 | a comprehensive list of open tickets or submit a new ticket for consideration. |
build.sh +1 −1
| @@ -34,7 +34,7 @@ if [[ "$answer" =~ ^[Yy]$ ]]; then | |||
| 34 | minify -o theme/static/styles.min.css theme/static/styles.css | 34 | minify -o theme/static/styles.min.css theme/static/styles.css |
| 35 | 35 | ||
| 36 | # Deploy changes | 36 | # 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/ |
| 38 | else | 38 | else |
| 39 | echo "Environment: Development" | 39 | echo "Environment: Development" |
| 40 | 40 | ||
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 | |||
| 32 | map. | 32 | map. |
| 33 | 33 | ||
| 34 | #+caption: Zork Map | 34 | #+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]] |
| 36 | 36 | ||
| 37 | /[[https://www.filfre.net/2012/01/exploring-zork-part-1/][Map Source]]/ | 37 | /[[https://www.filfre.net/2012/01/exploring-zork-part-1/][Map Source]]/ |
| 38 | 38 | ||
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 | |||
| 16 | find a similar trend almost everywhere. | 16 | find a similar trend almost everywhere. |
| 17 | 17 | ||
| 18 | #+caption: Vaporwave Search Results | 18 | #+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]] |
| 20 | 20 | ||
| 21 | * Vaporwave | 21 | * Vaporwave |
| 22 | 22 | ||
| 23 | #+caption: Macintosh Plus Album Cover | 23 | #+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]] |
| 25 | 25 | ||
| 26 | Okay, so what is Vaporwave? I'm going to just copy-and-paste some | 26 | Okay, so what is Vaporwave? I'm going to just copy-and-paste some |
| 27 | general info from the Wikipedia article on | 27 | general info from the Wikipedia article on |
| @@ -80,7 +80,7 @@ is a large part of Vaporwave. | |||
| 80 | * Outrun | 80 | * Outrun |
| 81 | 81 | ||
| 82 | #+caption: Outrun | 82 | #+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]] |
| 84 | 84 | ||
| 85 | Now, let's get to Outrun. This one is a little trickier since the genre | 85 | Now, let's get to Outrun. This one is a little trickier since the genre |
| 86 | has largely been lumped under the Vaporwave title for so long. However, | 86 | has 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 | |||
| 115 | circles, Far Cry 3: Blood Dragon: | 115 | circles, Far Cry 3: Blood Dragon: |
| 116 | 116 | ||
| 117 | #+caption: Fry Cry 3: Blood Dragon | 117 | #+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]] |
| 119 | 119 | ||
| 120 | Another example that doesn't force the color scheme as hard as some | 120 | Another example that doesn't force the color scheme as hard as some |
| 121 | online art does is Kung Fury: | 121 | online art does is Kung Fury: |
| 122 | 122 | ||
| 123 | #+caption: Kung Fury | 123 | #+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]] |
| 125 | 125 | ||
| 126 | #+caption: Kung Fury Hacker Scene | 126 | #+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]] |
| 128 | 128 | ||
| 129 | * Conclusion | 129 | * Conclusion |
| 130 | 130 | ||
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 | |||
| 57 | gone, or the website has gone offline. However, I still haven't | 57 | gone, or the website has gone offline. However, I still haven't |
| 58 | committed any images served on my blog to Git, as I'm not entirely sold | 58 | committed any images served on my blog to Git, as I'm not entirely sold |
| 59 | on Git LFS yet - for now, images can be found at | 59 | on 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]]. |
| 61 | 61 | ||
| 62 | Saving my comments back to the Git repository ensures that another | 62 | Saving my comments back to the Git repository ensures that another |
| 63 | aspect of my site will degrade gracefully. | 63 | aspect of my site will degrade gracefully. |
content/blog/2022-02-10-njalla-dns-api.org +2 −2
| @@ -6,9 +6,9 @@ | |||
| 6 | * Njalla's API | 6 | * Njalla's API |
| 7 | 7 | ||
| 8 | As noted in my recent post about | 8 | As 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 |
| 10 | Cloudflare]], I was searching for a way to replace my very easy-to-use | 10 | Cloudflare]], I was searching for a way to replace my very easy-to-use |
| 11 | bash script to [[https://cleberg.net/blog/cloudflare-dns-api/][update Cloudflare's | 11 | bash script to [[https://cmc.pub/blog/cloudflare-dns-api/][update Cloudflare's |
| 12 | DNS via their API]]. | 12 | DNS via their API]]. |
| 13 | 13 | ||
| 14 | To reiterate what I said in those posts, this is a common necessity for | 14 | To 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. | |||
| 18 | I did the normal things when first launching the VPS, such as adding a | 18 | I did the normal things when first launching the VPS, such as adding a |
| 19 | new user, locking down SSH, etc. If you want to see that level of | 19 | new user, locking down SSH, etc. If you want to see that level of |
| 20 | detail, read my other post about | 20 | detail, 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 |
| 22 | Up a VPS Web Server]]. | 22 | Up a VPS Web Server]]. |
| 23 | 23 | ||
| 24 | All of this has been similar, apart from small things such as the | 24 | All 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. | |||
| 159 | Finally, I set up the Agate software on this server again to host my | 159 | Finally, I set up the Agate software on this server again to host my |
| 160 | Gemini server content, using Rust as I have before. You can read my | 160 | Gemini server content, using Rust as I have before. You can read my |
| 161 | other post for more information on installing Agate: | 161 | other 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 |
| 163 | Server]]. | 163 | Server]]. |
| 164 | 164 | ||
| 165 | All in all, Debian + Nginx is very slick and I prefer it over my old | 165 | All 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. | |||
| 45 | ** Recursively Strip Data | 45 | ** Recursively Strip Data |
| 46 | 46 | ||
| 47 | I actually use this tool extensively to strip any photos uploaded to the | 47 | I actually use this tool extensively to strip any photos uploaded to the |
| 48 | website that serves all the images for my blog (=img.cleberg.net=). | 48 | website that serves all the images for my blog (=img.cmc.pub=). |
| 49 | 49 | ||
| 50 | The following command is incredibly useful and can be modified to | 50 | The following command is incredibly useful and can be modified to |
| 51 | include any image extensions that =exiftool= supports: | 51 | include 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: | |||
| 26 | Slavonic word =въторъ=, meaning "the second." | 26 | Slavonic word =въторъ=, meaning "the second." |
| 27 | 5. Written in the classic monospaced, digital font (think of digital | 27 | 5. Written in the classic monospaced, digital font (think of digital |
| 28 | clocks from the 80s/90s), there is nice symmetry to the numbers | 28 | 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 |
| 30 | the image here]]!). | 30 | the image here]]!). |
| 31 | 6. This one isn't naturally-occurring, but it seems people around the | 31 | 6. This one isn't naturally-occurring, but it seems people around the |
| 32 | world are celebrating the day. For example, a group is putting | 32 | 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 | |||
| 44 | preview Markdown as HTML: | 44 | preview Markdown as HTML: |
| 45 | 45 | ||
| 46 | #+caption: Plain Text Markdown | 46 | #+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]] |
| 48 | 48 | ||
| 49 | ** Saving & Syncing Files | 49 | ** Saving & Syncing Files |
| 50 | :PROPERTIES: | 50 | :PROPERTIES: |
| @@ -118,13 +118,13 @@ Here's an example of how my Markdown notes look when opened in | |||
| 118 | plain-text mode: | 118 | plain-text mode: |
| 119 | 119 | ||
| 120 | #+caption: Obsidian Markdown Source Mode | 120 | #+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]] |
| 122 | 122 | ||
| 123 | Here's the "live preview" version, where the Markdown is rendered into | 123 | Here's the "live preview" version, where the Markdown is rendered into |
| 124 | its HTML format: | 124 | its HTML format: |
| 125 | 125 | ||
| 126 | #+caption: Obsidian Markdown Live Preview | 126 | #+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]] |
| 128 | 128 | ||
| 129 | *** Programming on Desktop | 129 | *** Programming on Desktop |
| 130 | :PROPERTIES: | 130 | :PROPERTIES: |
content/blog/2022-03-24-server-hardening.org +2 −2
| @@ -110,7 +110,7 @@ via your randomized port. | |||
| 110 | 110 | ||
| 111 | ** =ufw= | 111 | ** =ufw= |
| 112 | 112 | ||
| 113 | To see how to configure =ufw=, see my other post: [[https://cleberg.net/blog/ufw.html][Secure Your | 113 | To see how to configure =ufw=, see my other post: [[https://cmc.pub/blog/ufw.html][Secure Your |
| 114 | Network with the Uncomplicated Firewall]]. | 114 | Network with the Uncomplicated Firewall]]. |
| 115 | 115 | ||
| 116 | The general notion with an on-device firewall is that you want to deny all | 116 | The general notion with an on-device firewall is that you want to deny all |
| @@ -196,7 +196,7 @@ sudo ufw enable | |||
| 196 | 196 | ||
| 197 | This process involves editing a couple files and installing an MFA package, | 197 | This process involves editing a couple files and installing an MFA package, |
| 198 | so I will not include all the details in this post. To see how to configure | 198 | 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 |
| 200 | SSH]]. | 200 | SSH]]. |
| 201 | 201 | ||
| 202 | ** =fail2ban= | 202 | ** =fail2ban= |
content/blog/2022-06-01-ditching-cloudflare.org +1 −1
| @@ -77,7 +77,7 @@ the server hosting my various websites and apps. | |||
| 77 | 77 | ||
| 78 | However, as I was moving away from Cloudflare, I was not able to find a | 78 | However, as I was moving away from Cloudflare, I was not able to find a |
| 79 | suitable replacement that was both inexpensive and simple. So, I simply | 79 | suitable replacement that was both inexpensive and simple. So, I simply |
| 80 | went back to hosting [[https://cleberg.net/blog/set-up-nginx-reverse-proxy/][my own | 80 | went back to hosting [[https://cmc.pub/blog/set-up-nginx-reverse-proxy/][my own |
| 81 | reverse proxy with Nginx]]. With the recent additions of Unifi hardware | 81 | reverse proxy with Nginx]]. With the recent additions of Unifi hardware |
| 82 | in my server/network rack, I am much more protected against spam and | 82 | in my server/network rack, I am much more protected against spam and |
| 83 | malicious attacks at the network edge than I was before I switched to | 83 | malicious 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. | |||
| 95 | Here's an example web GUI dashboard: | 95 | Here's an example web GUI dashboard: |
| 96 | 96 | ||
| 97 | #+caption: Syncthing Dashboard | 97 | #+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]] |
| 99 | 99 | ||
| 100 | ** Remote Devices | 100 | ** Remote Devices |
| 101 | 101 | ||
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 | |||
| 101 | start, I'll curl the site normally: | 101 | start, I'll curl the site normally: |
| 102 | 102 | ||
| 103 | #+begin_src sh | 103 | #+begin_src sh |
| 104 | curl https://cleberg.net | 104 | curl https://cmc.pub |
| 105 | #+end_src | 105 | #+end_src |
| 106 | 106 | ||
| 107 | The HTML contents of the page come back successfully: | 107 | The HTML contents of the page come back successfully: |
| @@ -113,7 +113,7 @@ The HTML contents of the page come back successfully: | |||
| 113 | Next, let's include a banned referrer: | 113 | Next, let's include a banned referrer: |
| 114 | 114 | ||
| 115 | #+begin_src sh | 115 | #+begin_src sh |
| 116 | curl --referer https://news.ycombinator.com https://cleberg.net | 116 | curl --referer https://news.ycombinator.com https://cmc.pub |
| 117 | #+end_src | 117 | #+end_src |
| 118 | 118 | ||
| 119 | This time, I'm met with a 403 Forbidden response page. That means we are | 119 | This 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 | |||
| 56 | this (this is in Firefox, Chromium should be similar): | 56 | this (this is in Firefox, Chromium should be similar): |
| 57 | 57 | ||
| 58 | #+caption: Firefox Dev !Tools | 58 | #+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]] |
| 60 | 60 | ||
| 61 | All you need to do is paste the following snippet into the dev console. | 61 | All you need to do is paste the following snippet into the dev console. |
| 62 | This code will collect all unlike buttons (=elements=) and then click | 62 | This code will collect all unlike buttons (=elements=) and then click |
| @@ -88,7 +88,7 @@ the console, pressed Enter, and then the posts are automatically | |||
| 88 | unliked. | 88 | unliked. |
| 89 | 89 | ||
| 90 | #+caption: Script !Results | 90 | #+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]] |
| 92 | 92 | ||
| 93 | Thinking about this further, I would bet that this would be fairly | 93 | Thinking about this further, I would bet that this would be fairly |
| 94 | simple to package into a browser add-on so that users could install the | 94 | simple 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 | |||
| 19 | write this blog post: | 19 | write this blog post: |
| 20 | 20 | ||
| 21 | #+caption: byobu | 21 | #+caption: byobu |
| 22 | [[https://img.cleberg.net/blog/20230623-byobu/byobu.png]] | 22 | [[https://img.cmc.pub/blog/20230623-byobu/byobu.png]] |
| 23 | 23 | ||
| 24 | *** Keybindings | 24 | *** Keybindings |
| 25 | 25 | ||
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 | |||
| 130 | below is Dracula. | 130 | below is Dracula. |
| 131 | 131 | ||
| 132 | #+caption: Convos Home | 132 | #+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]] |
| 134 | 134 | ||
| 135 | #+caption: Convos Chat | 135 | #+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]] |
| 137 | 137 | ||
| 138 | * Registering a Nickname | 138 | * Registering a Nickname |
| 139 | 139 | ||
content/blog/2023-06-30-self-hosting-voyager.org +1 −1
| @@ -120,4 +120,4 @@ sudo systemctl restart nginx.service | |||
| 120 | The site will now be available at the =server_name= you specified above! | 120 | The site will now be available at the =server_name= you specified above! |
| 121 | 121 | ||
| 122 | You can visit my instance at | 122 | You 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 @@ | |||
| 3 | #+description: | 3 | #+description: |
| 4 | #+slug: digital-minimalism | 4 | #+slug: digital-minimalism |
| 5 | 5 | ||
| 6 | I've written [[https://cleberg.net/wiki/#digital-garden][a note about minimalism]] | 6 | I've written [[https://cmc.pub/wiki/#digital-garden][a note about minimalism]] |
| 7 | before, but I wanted to dedicate some time to reflect on digital | 7 | before, but I wanted to dedicate some time to reflect on digital |
| 8 | minimalism and how I've been able to minimize the impact of digital | 8 | minimalism and how I've been able to minimize the impact of digital |
| 9 | devices in my life. | 9 | devices 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 | |||
| 441 | authentication domain and presented with the Authelia login portal. | 441 | authentication domain and presented with the Authelia login portal. |
| 442 | 442 | ||
| 443 | #+caption: Authelia Portal | 443 | #+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]] |
| 445 | 445 | ||
| 446 | Once you've successfully authenticated, you can visit your | 446 | Once you've successfully authenticated, you can visit your |
| 447 | authentication domain directly and see that you're currently | 447 | authentication domain directly and see that you're currently |
| 448 | authenticated to any domain protected by Authelia. | 448 | authenticated to any domain protected by Authelia. |
| 449 | 449 | ||
| 450 | #+caption: Authelia Success | 450 | #+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 @@ | |||
| 6 | * Overview | 6 | * Overview |
| 7 | 7 | ||
| 8 | I recently launched an instance of AnonymousOverflow at | 8 | I 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 |
| 10 | post on how easy it is to install with Docker Compose and Nginx. | 10 | post on how easy it is to install with Docker Compose and Nginx. |
| 11 | 11 | ||
| 12 | This guide uses Ubuntu server, Docker Compose, and Nginx as a reverse | 12 | This guide uses Ubuntu server, Docker Compose, and Nginx as a reverse |
| @@ -128,4 +128,4 @@ sudo systemctl restart nginx.service | |||
| 128 | #+end_src | 128 | #+end_src |
| 129 | 129 | ||
| 130 | The website will now be available publicly. Visit | 130 | The 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 | |||
| 11 | online here: [[https://public.tableau.com/app/profile/c.c7042/viz/OmahaCrimeData2015-2023/OmahaCrimeData2015-2023#1][Omaha Crime Data (2015 - 2023)]]. | 11 | online here: [[https://public.tableau.com/app/profile/c.c7042/viz/OmahaCrimeData2015-2023/OmahaCrimeData2015-2023#1][Omaha Crime Data (2015 - 2023)]]. |
| 12 | 12 | ||
| 13 | #+caption: Tableau Dashboard | 13 | #+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]] |
| 15 | 15 | ||
| 16 | * Gather the Data | 16 | * Gather the Data |
| 17 | 17 | ||
| @@ -140,4 +140,4 @@ There's a ton of other options available to be used in a dashboard like this, | |||
| 140 | but this project shows a quick preview of what you can do in Tableau Public. | 140 | but this project shows a quick preview of what you can do in Tableau Public. |
| 141 | 141 | ||
| 142 | #+caption: Tableau Dashboard | 142 | #+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. | |||
| 12 | The themes are =doom-homage-white= and =doom-homage-black=. | 12 | The themes are =doom-homage-white= and =doom-homage-black=. |
| 13 | 13 | ||
| 14 | #+caption: Doom Emacs Light Mode | 14 | #+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]] |
| 16 | 16 | ||
| 17 | #+caption: Doom Emacs Dark Mode | 17 | #+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]] |
| 19 | 19 | ||
| 20 | ** Getting Started | 20 | ** Getting Started |
| 21 | 21 | ||
| @@ -183,7 +183,7 @@ been slowly adoping some Python and general web dev tools as well. | |||
| 183 | *** Markdown | 183 | *** Markdown |
| 184 | 184 | ||
| 185 | #+caption: Markdown Preview | 185 | #+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]] |
| 187 | 187 | ||
| 188 | Markdown is fairly simple as the syntax is limited, so just make sure the | 188 | Markdown is fairly simple as the syntax is limited, so just make sure the |
| 189 | =~/.doom.d/init.el= includes the =markdown= declaration in the =:lang= section. | 189 | =~/.doom.d/init.el= includes the =markdown= declaration in the =:lang= section. |
| @@ -205,7 +205,7 @@ things like link hiding. | |||
| 205 | *** Org-Mode | 205 | *** Org-Mode |
| 206 | 206 | ||
| 207 | #+caption: Org-Mode Preview | 207 | #+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]] |
| 209 | 209 | ||
| 210 | Similar to the markdown section above, ensure that the =~/.doom.d/init.el= | 210 | Similar to the markdown section above, ensure that the =~/.doom.d/init.el= |
| 211 | includes the =org= declaration in the =:lang= section. | 211 | includes 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. | |||
| 269 | 269 | ||
| 270 | (setq org-publish-project-alist | 270 | (setq org-publish-project-alist |
| 271 | `(("blog" | 271 | `(("blog" |
| 272 | :base-directory "~/Source/cleberg.net/" | 272 | :base-directory "~/Source/cmc.pub/" |
| 273 | :base-extension "org" | 273 | :base-extension "org" |
| 274 | :recursive t | 274 | :recursive t |
| 275 | :publishing-directory "~/Source/cleberg.net/public/" | 275 | :publishing-directory "~/Source/cmc.pub/public/" |
| 276 | :publishing-function org-html-publish-to-html | 276 | :publishing-function org-html-publish-to-html |
| 277 | ;; HTML5 | 277 | ;; HTML5 |
| 278 | :html-doctype "html5" | 278 | :html-doctype "html5" |
| @@ -311,13 +311,13 @@ list them all, so I will simply cover a few of the basic commands I use myself. | |||
| 311 | ) | 311 | ) |
| 312 | 312 | ||
| 313 | ("static" | 313 | ("static" |
| 314 | :base-directory "~/Source/cleberg.net/static/" | 314 | :base-directory "~/Source/cmc.pub/static/" |
| 315 | :base-extension "css\\|txt\\|jpg\\|gif\\|png" | 315 | :base-extension "css\\|txt\\|jpg\\|gif\\|png" |
| 316 | :recursive t | 316 | :recursive t |
| 317 | :publishing-directory "~/Source/cleberg.net/public/" | 317 | :publishing-directory "~/Source/cmc.pub/public/" |
| 318 | :publishing-function org-publish-attachment) | 318 | :publishing-function org-publish-attachment) |
| 319 | 319 | ||
| 320 | ("cleberg.net" :components ("blog" "static")))) | 320 | ("cmc.pub" :components ("blog" "static")))) |
| 321 | #+end_src | 321 | #+end_src |
| 322 | 322 | ||
| 323 | ** General Thoughts | 323 | ** General Thoughts |
content/blog/2024-03-15-self-hosting-ddns-updater.org +1 −1
| @@ -4,7 +4,7 @@ | |||
| 4 | #+slug: self-hosting-ddns-updater | 4 | #+slug: self-hosting-ddns-updater |
| 5 | 5 | ||
| 6 | #+caption: DDNS Updater Web View | 6 | #+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]] |
| 8 | 8 | ||
| 9 | [[https://github.com/qdm12/ddns-updater][DDNS Updater]] is a program to keep DNS A and/or AAAA records updated for multiple | 9 | [[https://github.com/qdm12/ddns-updater][DDNS Updater]] is a program to keep DNS A and/or AAAA records updated for multiple |
| 10 | DNS providers. | 10 | DNS 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. | |||
| 8 | 8 | ||
| 9 | This post focuses specifically on the configuration and tools I use to blog from | 9 | This post focuses specifically on the configuration and tools I use to blog from |
| 10 | Emacs with Org-Mode and does not focus on Emacs or Org-Mode themselves. Refer to | 10 | Emacs with Org-Mode and does not focus on Emacs or Org-Mode themselves. Refer to |
| 11 | the post I wrote about [[https://cleberg.net/blog/doom-emacs-org-mode.html][Doom Emacs & Org-Mode]] for more information about my base | 11 | the post I wrote about [[https://cmc.pub/blog/doom-emacs-org-mode.html][Doom Emacs & Org-Mode]] for more information about my base |
| 12 | Emacs configuration. | 12 | Emacs configuration. |
| 13 | 13 | ||
| 14 | * Weblorg | 14 | * Weblorg |
| @@ -60,7 +60,7 @@ Now that I've installed weblorg, I need to configure the project. I'll start by | |||
| 60 | navigating to my site's source code and creating a =publish.el= file. | 60 | navigating to my site's source code and creating a =publish.el= file. |
| 61 | 61 | ||
| 62 | #+begin_src sh | 62 | #+begin_src sh |
| 63 | cd ~/Source/cleberg.net && nano publish.el | 63 | cd ~/Source/cmc.pub && nano publish.el |
| 64 | #+end_src | 64 | #+end_src |
| 65 | 65 | ||
| 66 | Since I'm using Doom, Emacs will not automatically load the packages I need | 66 | Since 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 | |||
| 80 | ;; To build with the custom URL below, call: | 80 | ;; To build with the custom URL below, call: |
| 81 | ;;;; ENV=prod emacs --script publish.el | 81 | ;;;; ENV=prod emacs --script publish.el |
| 82 | (if (string= (getenv "ENV") "prod") | 82 | (if (string= (getenv "ENV") "prod") |
| 83 | (setq weblorg-default-url "https://cleberg.net")) | 83 | (setq weblorg-default-url "https://cmc.pub")) |
| 84 | 84 | ||
| 85 | ;; site metadata | 85 | ;; site metadata |
| 86 | (weblorg-site | 86 | (weblorg-site |
| 87 | :theme nil | 87 | :theme nil |
| 88 | :template-vars '(("site_name" . "cleberg.net") | 88 | :template-vars '(("site_name" . "cmc.pub") |
| 89 | ("site_owner" . "hello@cleberg.net") | 89 | ("site_owner" . "hello@cmc.pub") |
| 90 | ("site_description" . "Just a blip of ones and zeroes."))) | 90 | ("site_description" . "Just a blip of ones and zeroes."))) |
| 91 | 91 | ||
| 92 | ;; route for rendering the index page of the website | 92 | ;; route for rendering the index page of the website |
| @@ -235,7 +235,7 @@ Within this script, I do the following: | |||
| 235 | #+begin_src sh | 235 | #+begin_src sh |
| 236 | rm -rf .build/* && \ | 236 | rm -rf .build/* && \ |
| 237 | ENV=prod emacs--script publish.el && \ | 237 | ENV=prod emacs--script publish.el && \ |
| 238 | scp -r .build/* ubuntu:/var/www/cleberg.net/ | 238 | scp -r .build/* ubuntu:/var/www/cmc.pub/ |
| 239 | #+end_src | 239 | #+end_src |
| 240 | 240 | ||
| 241 | *** Time to Build | 241 | *** 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 | |||
| 33 | finishes the installation process. | 33 | finishes the installation process. |
| 34 | 34 | ||
| 35 | #+caption: Docker Desktop on macOS | 35 | #+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]] |
| 37 | 37 | ||
| 38 | ** Creating an Nginx Container | 38 | ** Creating an Nginx Container |
| 39 | 39 | ||
| @@ -56,7 +56,7 @@ docker run -it --rm -d -p 8000:80 --name web nginx | |||
| 56 | You can navigate to [[http://localhost:8000]] to see the resulting page. | 56 | You can navigate to [[http://localhost:8000]] to see the resulting page. |
| 57 | 57 | ||
| 58 | #+caption: Default Nginx Container | 58 | #+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]] |
| 60 | 60 | ||
| 61 | ** Customizing the Nginx Container | 61 | ** Customizing the Nginx Container |
| 62 | 62 | ||
| @@ -76,7 +76,7 @@ To see the updates, you can delete the previous container in the GUI or run | |||
| 76 | =docker run= command below. | 76 | =docker run= command below. |
| 77 | 77 | ||
| 78 | #+begin_src sh | 78 | #+begin_src sh |
| 79 | docker 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 | 79 | docker 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 |
| 80 | #+end_src | 80 | #+end_src |
| 81 | 81 | ||
| 82 | Here's an example of my development configuration file. | 82 | Here's an example of my development configuration file. |
| @@ -84,14 +84,14 @@ Here's an example of my development configuration file. | |||
| 84 | #+begin_src conf | 84 | #+begin_src conf |
| 85 | # nginx-config.conf | 85 | # nginx-config.conf |
| 86 | server { | 86 | server { |
| 87 | server_name cleberg.net www.cleberg.net; | 87 | server_name cmc.pub www.cmc.pub; |
| 88 | 88 | ||
| 89 | root /usr/share/nginx/html; | 89 | root /usr/share/nginx/html; |
| 90 | index index.html; | 90 | index index.html; |
| 91 | autoindex on; | 91 | autoindex on; |
| 92 | 92 | ||
| 93 | access_log /var/log/nginx/cleberg.net.access.log; | 93 | access_log /var/log/nginx/cmc.pub.access.log; |
| 94 | error_log /var/log/nginx/cleberg.net.error.log; | 94 | error_log /var/log/nginx/cmc.pub.error.log; |
| 95 | 95 | ||
| 96 | location / { | 96 | location / { |
| 97 | try_files $uri $uri/ =404; | 97 | try_files $uri $uri/ =404; |
| @@ -102,14 +102,14 @@ server { | |||
| 102 | } | 102 | } |
| 103 | #+end_src | 103 | #+end_src |
| 104 | 104 | ||
| 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]] |
| 106 | 106 | ||
| 107 | * Customizing Deployment Actions | 107 | * Customizing Deployment Actions |
| 108 | 108 | ||
| 109 | I am currently blogging with [[https://emacs.love/weblorg/][weblorg]], which uses a custom =publish.el= file to | 109 | I am currently blogging with [[https://emacs.love/weblorg/][weblorg]], which uses a custom =publish.el= file to |
| 110 | build the static site. Within this file, I have configured my deployment process | 110 | build the static site. Within this file, I have configured my deployment process |
| 111 | to check for the =ENV= variable in thesh and if it's set to =prod=, the script | 111 | to check for the =ENV= variable in thesh and if it's set to =prod=, the script |
| 112 | will set the base URLs to =https://cleberg.net=. If not, it sets the base URLs | 112 | will set the base URLs to =https://cmc.pub=. If not, it sets the base URLs |
| 113 | to =localhost:8000= (which matches the port used in the container above). | 113 | to =localhost:8000= (which matches the port used in the container above). |
| 114 | 114 | ||
| 115 | Therefore, I have modified my =build.sh= script to build with =localhost= URLs | 115 | Therefore, I have modified my =build.sh= script to build with =localhost= URLs |
| @@ -123,7 +123,7 @@ if [ "$ENV" == "prod" ]; then | |||
| 123 | echo "Environment = Production" && \ | 123 | echo "Environment = Production" && \ |
| 124 | rm -rf .build/* && \ | 124 | rm -rf .build/* && \ |
| 125 | emacs --script publish.el && \ | 125 | emacs --script publish.el && \ |
| 126 | scp -r .build/* ubuntu:/var/www/cleberg.net/ | 126 | scp -r .build/* ubuntu:/var/www/cmc.pub/ |
| 127 | else | 127 | else |
| 128 | echo "Environment = Development" && \ | 128 | echo "Environment = Development" && \ |
| 129 | rm -rf .build/* && \ | 129 | rm -rf .build/* && \ |
content/blog/2024-04-18-mu4e.org +4 −4
| @@ -159,9 +159,9 @@ auth on | |||
| 159 | host smtp.startmail.com | 159 | host smtp.startmail.com |
| 160 | port 465 | 160 | port 465 |
| 161 | protocol smtp | 161 | protocol smtp |
| 162 | from hello@cleberg.net | 162 | from hello@cmc.pub |
| 163 | user hello@cleberg.net | 163 | user hello@cmc.pub |
| 164 | passwordeval security find-generic-password -s startmail -a hello@cleberg.net -w | 164 | passwordeval security find-generic-password -s startmail -a hello@cmc.pub -w |
| 165 | tls on | 165 | tls on |
| 166 | tls_starttls off | 166 | tls_starttls off |
| 167 | 167 | ||
| @@ -300,4 +300,4 @@ The home page shows various options and metadata about the account you've | |||
| 300 | opened. | 300 | opened. |
| 301 | 301 | ||
| 302 | #+caption: Mu4e Home Page | 302 | #+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 | |||
| 32 | of seconds. The creation dialog defaults to Ubuntu. | 32 | of seconds. The creation dialog defaults to Ubuntu. |
| 33 | 33 | ||
| 34 | #+caption: OrbStack's Linux Machine Creation Page | 34 | #+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]] |
| 36 | 36 | ||
| 37 | ** Launching the Machine | 37 | ** Launching the Machine |
| 38 | 38 | ||
| @@ -62,7 +62,7 @@ In the example below, we can see that the machine is using =Linux ubuntu 6.9.6= | |||
| 62 | and operates similar to a fresh Ubuntu install on bare metal. | 62 | and operates similar to a fresh Ubuntu install on bare metal. |
| 63 | 63 | ||
| 64 | #+caption: Ubuntu CLI | 64 | #+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]] |
| 66 | 66 | ||
| 67 | You can also click the machine's folder icon in OrbStack to open the machine's | 67 | You can also click the machine's folder icon in OrbStack to open the machine's |
| 68 | file system within macOS's native Files app. Within Files, you can double-click | 68 | file 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 | |||
| 70 | (e.g., TextEdit). | 70 | (e.g., TextEdit). |
| 71 | 71 | ||
| 72 | #+caption: Ubuntu Files | 72 | #+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]] |
| 74 | 74 | ||
| 75 | Here's an example of opening the =test.md= file in the screenshot above, which | 75 | Here's an example of opening the =test.md= file in the screenshot above, which |
| 76 | defaults to opening in Xcode on my system. | 76 | defaults to opening in Xcode on my system. |
| 77 | 77 | ||
| 78 | #+caption: Ubuntu Files | 78 | #+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]] |
| 80 | 80 | ||
| 81 | *** Test Examples | 81 | *** Test Examples |
| 82 | 82 | ||
| @@ -84,7 +84,7 @@ As a quick example of the system, I installed =neofetch=, switched to the =zsh= | |||
| 84 | shell, and ran a few common commands. | 84 | shell, and ran a few common commands. |
| 85 | 85 | ||
| 86 | #+caption: Test Examples | 86 | #+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]] |
| 88 | 88 | ||
| 89 | ** Thoughts | 89 | ** Thoughts |
| 90 | 90 | ||
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 | |||
| 15 | and will allow you to install packages that you need. | 15 | and will allow you to install packages that you need. |
| 16 | 16 | ||
| 17 | #+caption: iSH Application | 17 | #+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]] |
| 19 | 19 | ||
| 20 | ** Require Packages | 20 | ** Require Packages |
| 21 | 21 | ||
| @@ -28,7 +28,7 @@ apk add emacs ripgrep fd findutils | |||
| 28 | #+end_src | 28 | #+end_src |
| 29 | 29 | ||
| 30 | #+caption: Package !Installation | 30 | #+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]] |
| 32 | 32 | ||
| 33 | ** Emacs | 33 | ** Emacs |
| 34 | 34 | ||
| @@ -40,7 +40,7 @@ incredibly slow and buggy that I was not even able to take screenshots. Someone | |||
| 40 | smarter than me could likely get it to work with a little tinkering. | 40 | smarter than me could likely get it to work with a little tinkering. |
| 41 | 41 | ||
| 42 | #+caption: Emacs | 42 | #+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]] |
| 44 | 44 | ||
| 45 | *** MELPA | 45 | *** MELPA |
| 46 | 46 | ||
| @@ -49,13 +49,13 @@ able to search through their 5700+ packages instead of just ELPA packages. If | |||
| 49 | you don't, you will only have access to ELPA packages like the ones below. | 49 | you don't, you will only have access to ELPA packages like the ones below. |
| 50 | 50 | ||
| 51 | #+caption: package-install | 51 | #+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]] |
| 53 | 53 | ||
| 54 | Once you have MELPA, you can install packages like the =dashboard= package shown | 54 | Once you have MELPA, you can install packages like the =dashboard= package shown |
| 55 | below. | 55 | below. |
| 56 | 56 | ||
| 57 | #+caption: emacs-dashboard | 57 | #+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]] |
| 59 | 59 | ||
| 60 | *** Speed | 60 | *** Speed |
| 61 | 61 | ||
content/blog/2024-08-11-org-mode-features.org +8 −8
| @@ -7,7 +7,7 @@ | |||
| 7 | * Cycling (Folding) | 7 | * Cycling (Folding) |
| 8 | 8 | ||
| 9 | #+begin_quote | 9 | #+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. |
| 11 | #+end_quote | 11 | #+end_quote |
| 12 | 12 | ||
| 13 | My absolute top-used feature is [[https://orgmode.org/manual/Global-and-local-cycling.html][global and local cycling]] and it's not even | 13 | My 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: | |||
| 55 | * TODO Lists | 55 | * TODO Lists |
| 56 | 56 | ||
| 57 | #+begin_quote | 57 | #+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. |
| 59 | #+end_quote | 59 | #+end_quote |
| 60 | 60 | ||
| 61 | Next up on in this post are [[https://orgmode.org/manual/TODO-Items.html][TODO Lists]]. Being able to combine note taking and | 61 | Next 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. | |||
| 106 | * Time Stamping | 106 | * Time Stamping |
| 107 | 107 | ||
| 108 | #+begin_quote | 108 | #+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. |
| 110 | #+end_quote | 110 | #+end_quote |
| 111 | 111 | ||
| 112 | Another great feature are the [[https://orgmode.org/manual/Dates-and-Times.html][dates and times]] functionalities within org-mode. | 112 | Another 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. | |||
| 137 | * Tags | 137 | * Tags |
| 138 | 138 | ||
| 139 | #+begin_quote | 139 | #+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. |
| 141 | #+end_quote | 141 | #+end_quote |
| 142 | 142 | ||
| 143 | Next up are [[https://orgmode.org/manual/Tags.html][Tags]], which provide a way to document contexts within and across | 143 | Next 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. | |||
| 162 | * Tables | 162 | * Tables |
| 163 | 163 | ||
| 164 | #+begin_quote | 164 | #+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. |
| 166 | #+end_quote | 166 | #+end_quote |
| 167 | 167 | ||
| 168 | One of the most inconvenient parts of writing in Markdown was dealing with | 168 | One of the most inconvenient parts of writing in Markdown was dealing with |
| @@ -232,7 +232,7 @@ on the second line. | |||
| 232 | * Source Code Blocks | 232 | * Source Code Blocks |
| 233 | 233 | ||
| 234 | #+begin_quote | 234 | #+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. |
| 236 | #+end_quote | 236 | #+end_quote |
| 237 | 237 | ||
| 238 | ** Introduction to Source Code Blocks | 238 | ** Introduction to Source Code Blocks |
| @@ -302,7 +302,7 @@ results below the code block. | |||
| 302 | * Exporting and Publishing | 302 | * Exporting and Publishing |
| 303 | 303 | ||
| 304 | #+begin_quote | 304 | #+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. |
| 306 | #+end_quote | 306 | #+end_quote |
| 307 | 307 | ||
| 308 | I would be remiss if I did not mention the native [[https://orgmode.org/manual/Exporting.html][exporting and publishing]] | 308 | I 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. | |||
| 336 | * Agenda | 336 | * Agenda |
| 337 | 337 | ||
| 338 | #+begin_quote | 338 | #+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. |
| 340 | #+end_quote | 340 | #+end_quote |
| 341 | 341 | ||
| 342 | Last, but not least, are [[https://orgmode.org/manual/Agenda-Views.html][Agenda Views]]. With agenda views, you can easily view | 342 | Last, 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 | |||
| 113 | and create a new configuration. | 113 | and create a new configuration. |
| 114 | 114 | ||
| 115 | #+caption: n8n Workflow | 115 | #+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]] |
| 117 | 117 | ||
| 118 | This workflow contains the following nodes: | 118 | This workflow contains the following nodes: |
| 119 | 1. Email Trigger (IMAP) | 119 | 1. Email Trigger (IMAP) |
| @@ -151,10 +151,10 @@ send yourself a test email! | |||
| 151 | After testing each step noted above, n8n provided the results below - it works! | 151 | After testing each step noted above, n8n provided the results below - it works! |
| 152 | 152 | ||
| 153 | #+caption: Positive Results | 153 | #+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]] |
| 155 | 155 | ||
| 156 | #+caption: Negative Results | 156 | #+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]] |
| 158 | 158 | ||
| 159 | While this isn't anything earth-shattering, it does show easy it is to get | 159 | While this isn't anything earth-shattering, it does show easy it is to get |
| 160 | started with n8n and large language models in a self-hosted environment. | 160 | started 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. | |||
| 277 | ** OnCall | 277 | ** OnCall |
| 278 | 278 | ||
| 279 | #+caption: OnCall | 279 | #+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]] |
| 281 | 281 | ||
| 282 | Within the Alerts & IRM section of Grafana (=/alerts-and-incidents=), open the | 282 | Within the Alerts & IRM section of Grafana (=/alerts-and-incidents=), open the |
| 283 | Users page. | 283 | Users page. |
| @@ -299,12 +299,12 @@ users and teams to be on call for specific date and time ranges. For my | |||
| 299 | purposes, I put myself on-call 24/7 so that I receive all alerts. | 299 | purposes, I put myself on-call 24/7 so that I receive all alerts. |
| 300 | 300 | ||
| 301 | #+caption: User Information | 301 | #+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]] |
| 303 | 303 | ||
| 304 | ** Alerting | 304 | ** Alerting |
| 305 | 305 | ||
| 306 | #+caption: Alerting Insights | 306 | #+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]] |
| 308 | 308 | ||
| 309 | Now that we have defined users and team associated with an on-call schedule and | 309 | Now that we have defined users and team associated with an on-call schedule and |
| 310 | configured to receive the proper alerts, let's define a rule that will generate | 310 | configured 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 | |||
| 323 | with any notification policy. | 323 | with any notification policy. |
| 324 | 324 | ||
| 325 | #+caption: New Alert Rule | 325 | #+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]] |
| 327 | 327 | ||
| 328 | When the alert fires, it will generate an email (or whatever notification policy | 328 | When the alert fires, it will generate an email (or whatever notification policy |
| 329 | you assigned) and will look something like the following image. | 329 | you assigned) and will look something like the following image. |
| 330 | 330 | ||
| 331 | #+caption: Alerting Example | 331 | #+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]] |
| 333 | 333 | ||
| 334 | ** Dashboards | 334 | ** Dashboards |
| 335 | 335 | ||
| @@ -337,13 +337,13 @@ As promised above, here are some dashboard screenshots based on the | |||
| 337 | configurations above. | 337 | configurations above. |
| 338 | 338 | ||
| 339 | #+caption: Nginx Dashboard | 339 | #+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]] |
| 341 | 341 | ||
| 342 | #+caption: Node Dashboard | 342 | #+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]] |
| 344 | 344 | ||
| 345 | #+caption: OnCall Dashboard | 345 | #+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]] |
| 347 | 347 | ||
| 348 | #+caption: Prometheus Dashboard | 348 | #+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: | |||
| 201 | Below are a few screenshots from my current VS Codium window: | 201 | Below are a few screenshots from my current VS Codium window: |
| 202 | 202 | ||
| 203 | #+caption: Available Continue Commands | 203 | #+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]] |
| 205 | 205 | ||
| 206 | #+caption: Continue Fullscreen Chat Window | 206 | #+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]] |
| 208 | 208 | ||
| 209 | #+caption: Inline Hotkeys | 209 | #+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]] |
| 211 | 211 | ||
| 212 | #+caption: Inline Editing Suggestions | 212 | #+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]] |
| 214 | 214 | ||
| 215 | #+caption: Sidebar Context Window | 215 | #+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]] |
| 217 | 217 | ||
| 218 | * Conclusion | 218 | * Conclusion |
| 219 | 219 | ||
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 | |||
| 11 | notifications, link previews, file uploads, always connected, multi-user | 11 | notifications, link previews, file uploads, always connected, multi-user |
| 12 | support, and is available as a PWA for mobile devices. | 12 | support, and is available as a PWA for mobile devices. |
| 13 | 13 | ||
| 14 | I wanted to write this as I had written a post about [[https://cleberg.net/blog/self-hosting-convos.html][self-hosting Convos]] and | 14 | I wanted to write this as I had written a post about [[https://cmc.pub/blog/self-hosting-convos.html][self-hosting Convos]] and |
| 15 | have recently migrated over to The Lounge instead. | 15 | have recently migrated over to The Lounge instead. |
| 16 | 16 | ||
| 17 | If you'd like to try a demo first, head over to [[https://demo.thelounge.chat/][the official demo website]]. | 17 | If 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 | |||
| 60 | machine's firewall, if you have one enabled. | 60 | machine's firewall, if you have one enabled. |
| 61 | 61 | ||
| 62 | #+caption: Login | 62 | #+caption: Login |
| 63 | [[https://img.cleberg.net/blog/20241229-thelounge/login.png]] | 63 | [[https://img.cmc.pub/blog/20241229-thelounge/login.png]] |
| 64 | 64 | ||
| 65 | ** Nginx Reverse Proxy | 65 | ** Nginx Reverse Proxy |
| 66 | 66 | ||
| @@ -155,10 +155,10 @@ bottom of the sidebar and connect to individual channels or users via the plus | |||
| 155 | (=+=) button next to your server's name in the sidebar. | 155 | (=+=) button next to your server's name in the sidebar. |
| 156 | 156 | ||
| 157 | #+caption: New Server Connection | 157 | #+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]] |
| 159 | 159 | ||
| 160 | #+caption: Existing Server Connection | 160 | #+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]] |
| 162 | 162 | ||
| 163 | #+caption: Channel View | 163 | #+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! | |||
| 125 | ** Screenshots | 125 | ** Screenshots |
| 126 | 126 | ||
| 127 | #+caption: Login | 127 | #+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]] |
| 129 | 129 | ||
| 130 | #+caption: Recipes | 130 | #+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]] |
| 132 | 132 | ||
| 133 | #+caption: Meal Plan | 133 | #+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]] |
| 135 | 135 | ||
| 136 | #+caption: Shopping Lists | 136 | #+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]] |
| 138 | 138 | ||
| 139 | #+caption: Cook Book | 139 | #+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]] |
| 141 | 141 | ||
| 142 | #+caption: Import | 142 | #+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]] |
| 144 | 144 | ||
| 145 | #+caption: Administration Panel | 145 | #+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 | |||
| 55 | good thing as I hesitate to understand how privacy-focused apps make money when | 55 | good thing as I hesitate to understand how privacy-focused apps make money when |
| 56 | they offer free services to users. | 56 | they offer free services to users. |
| 57 | 57 | ||
| 58 | [[https://img.cleberg.net/blog/20250211-obscura-vpn/payment.png]] | 58 | [[https://img.cmc.pub/blog/20250211-obscura-vpn/payment.png]] |
| 59 | #+caption: Payment | 59 | #+caption: Payment |
| 60 | 60 | ||
| 61 | ** Connection | 61 | ** Connection |
| @@ -64,10 +64,10 @@ Once you've enrolled in either a subscription or one-time payment, Obscura will | |||
| 64 | return you to the app and allow you to connect. You can choose a specific server | 64 | return you to the app and allow you to connect. You can choose a specific server |
| 65 | location or automatically connect. | 65 | location or automatically connect. |
| 66 | 66 | ||
| 67 | [[https://img.cleberg.net/blog/20250211-obscura-vpn/connect.png]] | 67 | [[https://img.cmc.pub/blog/20250211-obscura-vpn/connect.png]] |
| 68 | #+caption: Initial Connection | 68 | #+caption: Initial Connection |
| 69 | 69 | ||
| 70 | [[https://img.cleberg.net/blog/20250211-obscura-vpn/toolbar.png]] | 70 | [[https://img.cmc.pub/blog/20250211-obscura-vpn/toolbar.png]] |
| 71 | #+caption: Toolbar Utility | 71 | #+caption: Toolbar Utility |
| 72 | 72 | ||
| 73 | ** Speed | 73 | ** Speed |
| @@ -91,7 +91,7 @@ nodes before connecting to your target. | |||
| 91 | From the image below, we can see that Mullvad confirmed my traffic to be | 91 | From the image below, we can see that Mullvad confirmed my traffic to be |
| 92 | connected through a Mullvad IP address. | 92 | connected through a Mullvad IP address. |
| 93 | 93 | ||
| 94 | [[https://img.cleberg.net/blog/20250211-obscura-vpn/mullvad-check.png]] | 94 | [[https://img.cmc.pub/blog/20250211-obscura-vpn/mullvad-check.png]] |
| 95 | #+caption: Mullvad Check | 95 | #+caption: Mullvad Check |
| 96 | 96 | ||
| 97 | * Final Thoughts | 97 | * 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: | |||
| 48 | At this point, I decided to take a step back and use [[https://github.com/djcb/mu][mu]], a command-line utility | 48 | At this point, I decided to take a step back and use [[https://github.com/djcb/mu][mu]], a command-line utility |
| 49 | that would index my files and sync back and forth with Migadu for me. | 49 | that would index my files and sync back and forth with Migadu for me. |
| 50 | 50 | ||
| 51 | Using my blog post, [[https://cleberg.net/blog/mu4e.html][Email in Doom Emacs with Mu4e on macOS]], (and skipping the | 51 | Using my blog post, [[https://cmc.pub/blog/mu4e.html][Email in Doom Emacs with Mu4e on macOS]], (and skipping the |
| 52 | mu4e parts) I was able to set up a minimal directory connected to my Migadu IMAP | 52 | mu4e parts) I was able to set up a minimal directory connected to my Migadu IMAP |
| 53 | account. Using my terminal, I simply moved all of my messages into the =mu= | 53 | account. Using my terminal, I simply moved all of my messages into the =mu= |
| 54 | directory and synchronized the account, and voila, my messages synchronized | 54 | directory 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 |
| 2 | #+description: Just a blip of ones and zeroes. | 2 | #+description: Just a blip of ones and zeroes. |
content/salary/index.org +2 −2
| @@ -46,7 +46,7 @@ raise while in the same role. | |||
| 46 | | Teaching Assistant | University of Nebraska | Lincoln, NE | 2017-08 | 2018-05 | $7/hour | | 46 | | Teaching Assistant | University of Nebraska | Lincoln, NE | 2017-08 | 2018-05 | $7/hour | |
| 47 | | Community Management Intern | Walgreens | Lincoln, NE | 2017-06 | 2018-02 | $14/hour | | 47 | | Community Management Intern | Walgreens | Lincoln, NE | 2017-06 | 2018-02 | $14/hour | |
| 48 | 48 | ||
| 49 | [[[https://cleberg.net/salary.csv][source data]]] | 49 | [[[https://cmc.pub/salary.csv][source data]]] |
| 50 | 50 | ||
| 51 | ** Salary Visualization | 51 | ** Salary Visualization |
| 52 | :PROPERTIES: | 52 | :PROPERTIES: |
| @@ -56,7 +56,7 @@ See the graph below for a visualization of each job's salary over time, as well | |||
| 56 | as percentage increases or decreases between jobs. | 56 | as percentage increases or decreases between jobs. |
| 57 | 57 | ||
| 58 | #+caption: Salary Visualization | 58 | #+caption: Salary Visualization |
| 59 | [[https://img.cleberg.net/blog/salary/salary.png]] | 59 | [[https://img.cmc.pub/blog/salary/salary.png]] |
| 60 | 60 | ||
| 61 | This page was inspired by [[https://xeiaso.net/salary-transparency/][Xe]], and I'm quoting the following wording from them as | 61 | This page was inspired by [[https://xeiaso.net/salary-transparency/][Xe]], and I'm quoting the following wording from them as |
| 62 | I want to reiterate this piece: | 62 | I want to reiterate this piece: |
content/services/index.org +10 −11
| @@ -1,15 +1,14 @@ | |||
| 1 | #+title: Services | 1 | #+title: Services |
| 2 | #+slug: index | 2 | #+slug: index |
| 3 | 3 | ||
| 4 | - [[https://ao.cleberg.net/][AnonymousOverflow]] - A StackOverflow proxy | 4 | - [[https://ao.cmc.pub/][AnonymousOverflow]] - A StackOverflow proxy |
| 5 | - [[https://cyberchef.cleberg.net/][CyberChef]] - The Cyber Swiss Army Knife | 5 | - [[https://cyberchef.cmc.pub/][CyberChef]] - The Cyber Swiss Army Knife |
| 6 | - [[https://files.cleberg.net/][FileArchive]] - An interesting file archive | 6 | - [[https://files.cmc.pub/][FileArchive]] - An interesting file archive |
| 7 | - [[https://paste.cleberg.net/][FlashPaper]] - One-time encrypted password/secret sharing | 7 | - [[https://paste.cmc.pub/][FlashPaper]] - One-time encrypted password/secret sharing |
| 8 | - [[https://invidious.cleberg.net/][Invidious]] - A YouTube proxy | 8 | - [[https://office.cmc.pub/][Office]] - The world's smallest office suite |
| 9 | - [[https://office.cleberg.net/][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://org.cleberg.net/][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://priviblur.cleberg.net][Priviblur]] - A privacy-focused alternative frontend to Tumblr | 11 | - [[https://rimgo.cmc.pub/][Rimgo]] - An alternative frontend for Imgur |
| 12 | - [[https://rimgo.cleberg.net/][Rimgo]] - An alternative frontend for Imgur | 12 | - [[https://search.cmc.pub/][SearXNG]] - A privacy-respecting, open metasearch engine |
| 13 | - [[https://search.cleberg.net/][SearXNG]] - A privacy-respecting, open metasearch engine | ||
| 14 | 13 | ||
| 15 | See 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. | 14 | See 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 @@ | |||
| 3 | 3 | ||
| 4 | Related: | 4 | Related: |
| 5 | 5 | ||
| 6 | - [[https://cleberg.net/wiki/hardware.html][Hardware]] | 6 | - [[https://cmc.pub/wiki/hardware.html][Hardware]] |
| 7 | 7 | ||
| 8 | My primary mobile OS. Currently running iOS 17. This wiki page contains most of | 8 | My primary mobile OS. Currently running iOS 17. This wiki page contains most of |
| 9 | the apps I have used at one point or another across my different iPhones. | 9 | the apps I have used at one point or another across my different iPhones. |
content/wiki/macos.org +1 −1
| @@ -3,7 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | Related: | 4 | Related: |
| 5 | 5 | ||
| 6 | - [[https://cleberg.net/wiki/hardware/][Hardware]] | 6 | - [[https://cmc.pub/wiki/hardware/][Hardware]] |
| 7 | 7 | ||
| 8 | My primary OS. Currently running macOS Sonoma 14. This wiki page contains most | 8 | My primary OS. Currently running macOS Sonoma 14. This wiki page contains most |
| 9 | of the apps I have used at one point or another across my different Macbooks. | 9 | of the apps I have used at one point or another across my different Macbooks. |
publish.el +3 −3
| @@ -8,13 +8,13 @@ | |||
| 8 | 8 | ||
| 9 | ;; Set default URL for Weblorg | 9 | ;; Set default URL for Weblorg |
| 10 | (if (string= (getenv "ENV") "prod") | 10 | (if (string= (getenv "ENV") "prod") |
| 11 | (setq weblorg-default-url "https://cleberg.net")) | 11 | (setq weblorg-default-url "https://cmc.pub")) |
| 12 | 12 | ||
| 13 | ;; Define site configuration | 13 | ;; Define site configuration |
| 14 | (weblorg-site | 14 | (weblorg-site |
| 15 | :theme nil | 15 | :theme nil |
| 16 | :template-vars `(("site_name" . "cleberg.net") | 16 | :template-vars `(("site_name" . "cmc.pub") |
| 17 | ("site_owner" . "Christian Cleberg <hello@cleberg.net>") | 17 | ("site_owner" . "Christian Cleberg <hello@cmc.pub>") |
| 18 | ("site_description" . "Just a blip of ones and zeroes."))) | 18 | ("site_description" . "Just a blip of ones and zeroes."))) |
| 19 | 19 | ||
| 20 | ;; Define routes for rendering content | 20 | ;; Define routes for rendering content |
theme/static/.well-known/security.txt +3 −3
| @@ -1,11 +1,11 @@ | |||
| 1 | -----BEGIN PGP SIGNED MESSAGE----- | 1 | -----BEGIN PGP SIGNED MESSAGE----- |
| 2 | Hash: SHA256 | 2 | Hash: SHA256 |
| 3 | 3 | ||
| 4 | Contact: mailto:security@cleberg.net | 4 | Contact: mailto:hello@cmc.pub |
| 5 | Expires: 2100-01-01T06:00:00.000Z | 5 | Expires: 2100-01-01T06:00:00.000Z |
| 6 | Encryption: https://cleberg.net/gpg.txt | 6 | Encryption: https://cmc.pub/gpg.txt |
| 7 | Preferred-Languages: en | 7 | Preferred-Languages: en |
| 8 | Canonical: https://cleberg.net/.well-known/security.txt | 8 | Canonical: https://cmc.pub/.well-known/security.txt |
| 9 | -----BEGIN PGP SIGNATURE----- | 9 | -----BEGIN PGP SIGNATURE----- |
| 10 | 10 | ||
| 11 | iQIzBAEBCAAdFiEEOReXP7FZu7hhlFOFaUUaUXrAyzcFAmYkB9IACgkQaUUaUXrA | 11 | iQIzBAEBCAAdFiEEOReXP7FZu7hhlFOFaUUaUXrAyzcFAmYkB9IACgkQaUUaUXrA |
theme/static/gpg.txt +22 −49
| @@ -1,52 +1,25 @@ | |||
| 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- | 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- |
| 2 | 2 | ||
| 3 | mQINBGN0Z8YBEAC6gWrNuB0nyAVkIuCsErIqpO7ngH0HV2sZD54t0ge9on0Fb+QA | 3 | mDMEZ9CjJhYJKwYBBAHaRw8BAQdANl9s/8i2dlImJtTkHsOx/2RrAbc1V4zcrjJd |
| 4 | S/oRSK3bcwgR09lnIwPDWpQqlPpzKib2bZ9USBMD0lcgPb0hMr0fafs/+/FCRQV1 | 4 | EvpdYKK0IUNocmlzdGlhbiBDbGViZXJnIDxoZWxsb0BjbWMucHViPoiTBBMWCgA7 |
| 5 | Pvc/e37n2/KHRW2KoiM4sOFT9LYxi7LBGgXffusx6uVBzrNUacTFFd/pMNkPd5uX | 5 | FiEExocApvpLcYO2zuR97tyZXNFPGTwFAmfQoyYCGyMFCwkIBwICIgIGFQoJCAsC |
| 6 | /J4IT+QbDh1bKw4CtLNvoh7xTcfdpzdqpHfNkjm+24pEnbrv6QrSpBzol4uulaB+ | 6 | BBYCAwECHgcCF4AACgkQ7tyZXNFPGTyuIgEAlnx3gjFxc+61SLqJRih6cS3hQfiH |
| 7 | 5I8JF938/FBHBndVMT9UQcGRtX+ttZTp9U7m0TzCAsyrVV/V8rEbcGTMlU+yyUjR | 7 | 3zhBQiF/EjZOv5MA/1w9iY6HquKJb+4VjFSvx8dI0iYLOmLnU+grIEVZHAIAiQIz |
| 8 | TDRX4Dwj79IfL+vLZgFGLd8GwO08AirNkHYaZwzvYi42I5Bh8cX1L2IippYL8YYF | 8 | BBABCAAdFiEEOReXP7FZu7hhlFOFaUUaUXrAyzcFAmfQpDsACgkQaUUaUXrAyzcH |
| 9 | ASX26pXC6mxTwC/hjCA7rzyIMD5sf1UailYm5MvrhEujRYOPWDU+kex2t2HJpzvN | 9 | rxAAk3s5KEwbke95EDa15cfvQa0sRTO8kHlLy713Ypjw2F2sTUiW4TNWlbwHvz7f |
| 10 | vYSVIS0sKi7iHr82VA+/spR6Ii07/84zZPQ1h/sXJLaDolQV2pU7WJBPyFO957Er | 10 | ZNfi65Ds2d9vj7qLFWEgWGNgcevRJQAIKpzHQe9pi2oBuFxxbwL8Ick07cDJ4eDz |
| 11 | BggugSpB1U/blgU+B9vOR+2sMEReRQwVF7aVhQ2Wy5wOZRHlmTZVMNO5SawXkiTp | 11 | CTER+EF6EUZA30PxiKKvCgprAnmZYoDTEko3rpj7O04hijJM2I/ZUcEQf68doM4s |
| 12 | Bt4IwhThzMcUQstXxf5V44pPsB5uQE3n4WdROfJTOiB2cZJZOiXe3iPiiTsVsBc2 | 12 | bIhtDcCEkNSGvYHsP9XAh6f+NTwqD6WtqvOKnI0g2Ea59c/qggqquC5jx4KvCOa1 |
| 13 | tcqxJmwplMS4jNddJ9Nh0NTCKNk3Yt0iZzWlQDKAzR1uSGW9fQGAdh/UZQARAQAB | 13 | NQnqbFC/DB+CADSkhwSkBv+z44B7T0n2+uRvXWx+zkFZqNYkw0i9o9evoXRCKq0x |
| 14 | tCVDaHJpc3RpYW4gQ2xlYmVyZyA8aGVsbG9AY2xlYmVyZy5uZXQ+iQJRBBMBCAA7 | 14 | GgPeEtcaVuAm8fru1yyiRIUBHwQ8up3ySpyygn56DhxL8G+Vw1+3J7KC0yk8dYb3 |
| 15 | FiEEOReXP7FZu7hhlFOFaUUaUXrAyzcFAmN0Z8YCGwMFCwkIBwICIgIGFQoJCAsC | 15 | paYodraF27mulRJHm7DPd8JuT0OVOnKBLE/P/BGPYOq39kYTn2qzvXQzPQvfbkdR |
| 16 | BBYCAwECHgcCF4AACgkQaUUaUXrAyzcrIQ//ZzCvcNKi2exZ4MfH68q9cIrJtHA3 | 16 | oH+PM31HUmYkYRjZxkVdsE1SpwkRXyFG1GLNEOz73bdes/Vc/sajG7qbZXNaJfwD |
| 17 | +FQ/3yTwAMiXmaTctHTcME+4Um12TCJMH/PwOkmxjolln5LfNHC8emcNs9Uaoga7 | 17 | gUfL1x2W1CkSKiiaTlWdKZtPB43wnN2KZqgJ5Kj1axqCTw3KFArg/pkjgxjRC+IK |
| 18 | 1Cy8ihqKbQMaZN1ZHrgaddeTs7+N1+/u8yAZPXo+N6pmLaeuPfn1MMhcejTbo+C/ | 18 | uKmWiP8sLWTDwTjnvITnVmXiwMkv6TLPmljsVGOLfDtrFVfB1iAn4hceEajPOhYh |
| 19 | c22/yj97ym6Iuc9oodnbHb2rxhGKReQLJmqzBHWd0syFbYDopmhY2MjMawVirPG7 | 19 | 5iiJg6ZE+43NhqKQcgEqcyX3T/giVC528Ww3BJ5EHuLJn2i4OARn0KOpEgorBgEE |
| 20 | vt6EbiFHkWLBY08FYbOQWT4bXdSHlLxT3q5m+j0HdVjHxd/vOk+dc3FPtK8ZpTVC | 20 | AZdVAQUBAQdA7X3Gt9b5IobqDcudWMZdoPPkvpoomBkEdU+lK+KdqAQDAQgHiHgE |
| 21 | qKa2oQ6dl4fjp8GVbu4f4SMDDJRR1iOoLTNEhKDSZHkZdjH0/LQRLsf49cqbff1Y | 21 | GBYKACAWIQTGhwCm+ktxg7bO5H3u3Jlc0U8ZPAUCZ9CjqQIbDAAKCRDu3Jlc0U8Z |
| 22 | mpxJcNv1/RmgzctTmBAoGt2RS8mT97H8AUW7v7PGs3eS/OkrY1e4cuTrmcafEaMy | 22 | PEUJAP4+NKbFgz+xYK7dnmYMmC5EpVaVQQenLrRQnPT/5G/AZgD/ZY+sXairfJlL |
| 23 | J2L7aUxDVVUCvRKsONXx+zSLin7ByRHypqRfxGqnpQUDPW4Oty6CewsSXktDjIUx | 23 | HzMY8Xt1sB5k29myBFTDIhwq+Usm8go= |
| 24 | FXzMwfuNXKS/KHqcUxamE0rL8O2d3CJI4YAbWu2Y0GtBetfuaaOgi56cYqv86zGu | 24 | =dq5B |
| 25 | os0oga1ZakiCeRPgEaipPaZZMf6pCvucF2VyaUHwIOMcSVEH5nhHO4McgYLSZucx | ||
| 26 | na5qcLk06EP+1HjmifGqPmkxHTW/ez5x6m/QT9jOzyRu94p3IG5DT1Lh8kl6gid7 | ||
| 27 | YntCGrwcsvw8zKi5Ag0EY3RnxgEQANj1c0ZS3npmtj1V5m+vsq1mK2g4K66senuC | ||
| 28 | Gf+wTudYgcUzBhcTtEwzFJTwFFUMkfpgmkgYrlMB7iH+85YxiDR2sBhMg56haJXn | ||
| 29 | LGnSaWqHVE4P0yyHI/6QasYxdJWfYkSH9m3B8yW1VKs4eSSL6S/U/qdHzDRRZCEX | ||
| 30 | lNhvplrWcWv6Ifk/aYJ+njwn+jhXT4j8lbhem5oCbg4olY84bs+rfvWHTrWdGD1N | ||
| 31 | sHkbLEwLgnmJou7vkVY9vkIMhbgpvNp1CEx0zOGTMhlPrCYBCFUGR7Bnoqwwl/C4 | ||
| 32 | CTBwZxBE5bNBpsEdySYhmHW+YHRHIxeboLmOyoc0CpT/zhu2y5JxqJBiGEDYhTM/ | ||
| 33 | V2nNqKGDgUenXqjwoBw5oCNQJ35NNgFgEbphhs71W7VVwEPRdppcem33TcpFBeoE | ||
| 34 | vTzCfK6xJA82ASJHKz0hajEQchJ5jJZYo4wRZJGFv2jMIhq24DLIqxgjZeBKLEzl | ||
| 35 | RigfuuCrAsQBIMtTUSUUvxjB/b+UDYssqi9Q+8F7FcwqE9egaj7xVQprTAYcGW7S | ||
| 36 | zxfjzFSbJSl+b4WQSewFtmFIx62RYemBH+YPxbwOhQAuRWgEg0E6xeuILu22xydf | ||
| 37 | DEkbk1GEXH3ilYxl4LhFy2EmUbvB8rxh5Vk3A1KVaBe/ndPhwznTe7X9ypRHzQiV | ||
| 38 | Jkc2vVGjABEBAAGJAjYEGAEIACAWIQQ5F5c/sVm7uGGUU4VpRRpResDLNwUCY3Rn | ||
| 39 | xgIbDAAKCRBpRRpResDLN60xD/9pEDZK7SXZy/nhVdHMKn2UyF7F8dEXYxILmXp0 | ||
| 40 | 53zDDVN5D7luHjcI5pYynWqlgXWPAaCOthWtexr3r3b8fVSc7yxi497fFa3jiVkn | ||
| 41 | VNYjDCa4SK5H6Rdf6I5rv+SS1PPmiVFKL7xuWcJ9YucHACdeH0UUmPCMmHHDc9SY | ||
| 42 | MGUPjadFxjCGtBz8itS+ufDiZsTU9ov7XRE+pVyrDlMSVD1Ex02vMRtr+UD9lkYb | ||
| 43 | KGs32TEDw28+OgvSZc81P6/BuxmG2XxgvU5OOrlVFOs4VU5P0TnZVxbVuKyO4fkZ | ||
| 44 | sxSApn+U4lU89dM0M1l1S2NZtvkWTIW2jFvzwXDCPxs5GAXAGtnEO8gjGICo2QV3 | ||
| 45 | VovHMTmPz7Bo87fqGZkfZatzvAeHW92FIhQBOdgSiCwSDRPVVdPTpQ27BaUrfH8p | ||
| 46 | aS81RhlCWgKptFKj4+MAqGEf9V6jUIKn5EvdSxCZ5XXHmaBL/kXxTPaDJiK8nMKv | ||
| 47 | dr/iwtb23SwNrBLQkYcI+6aZj4jcqr5T0H2EsC8h9jQWMG+S9/BzhJOI/QeepHvD | ||
| 48 | VJQve5jozXbz+iBRLrWbEgbNydL/LT9iQCWaWt2HCPQ7bPrxKqya8fUMPxi3VCZZ | ||
| 49 | AuXpJzywCyVuzpuChuvdMflHbmx1r8uJjSmUCJf6ngt0TQMXiwL3vsECTV7ZtVge | ||
| 50 | 0jZ4tA== | ||
| 51 | =pl2G | ||
| 52 | -----END PGP PUBLIC KEY BLOCK----- | 25 | -----END PGP PUBLIC KEY BLOCK----- |
theme/templates/base.html +1 −1
| @@ -33,7 +33,7 @@ | |||
| 33 | </p> | 33 | </p> |
| 34 | <p>Last build: <{{ now() | strftime("%Y-%m-%d %a %H:%M:%S") }}></p> | 34 | <p>Last build: <{{ now() | strftime("%Y-%m-%d %a %H:%M:%S") }}></p> |
| 35 | <p> | 35 | <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" |
| 37 | rel="noopener">Source Code</a> · | 37 | rel="noopener">Source Code</a> · |
| 38 | <a href="/feed.xml">RSS Feed</a> · | 38 | <a href="/feed.xml">RSS Feed</a> · |
| 39 | <a href="/.well-known/security.txt">security.txt</a> | 39 | <a href="/.well-known/security.txt">security.txt</a> |
theme/templates/feed.xml +3 −3
| @@ -10,7 +10,7 @@ | |||
| 10 | xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" | 10 | xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" |
| 11 | xmlns:media="http://search.yahoo.com/mrss/"> | 11 | xmlns:media="http://search.yahoo.com/mrss/"> |
| 12 | <channel> | 12 | <channel> |
| 13 | <title>{{ site_name | default("cleberg.net") }}</title> | 13 | <title>{{ site_name | default("cmc.pub") }}</title> |
| 14 | <atom:link | 14 | <atom:link |
| 15 | href="{{ url_for("rss") }}" | 15 | href="{{ url_for("rss") }}" |
| 16 | rel="self" type="application/rss+xml" /> | 16 | rel="self" type="application/rss+xml" /> |
| @@ -20,13 +20,13 @@ | |||
| 20 | <pubDate>{{ posts | first | getattr("date") | strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate> | 20 | <pubDate>{{ posts | first | getattr("date") | strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate> |
| 21 | <lastBuildDate>{{ now() | strftime("%a, %d %b %Y %H:%M:%S %z") }}</lastBuildDate> | 21 | <lastBuildDate>{{ now() | strftime("%a, %d %b %Y %H:%M:%S %z") }}</lastBuildDate> |
| 22 | <generator>{{ meta.generator }}</generator> | 22 | <generator>{{ meta.generator }}</generator> |
| 23 | <webMaster>{{ site_owner | default("hello@cleberg.net") }}</webMaster> | 23 | <webMaster>{{ site_owner | default("hello@cmc.pub") }}</webMaster> |
| 24 | 24 | ||
| 25 | {% for post in posts %} | 25 | {% for post in posts %} |
| 26 | <item> | 26 | <item> |
| 27 | <title>{{ post.title }}</title> | 27 | <title>{{ post.title }}</title> |
| 28 | <link>{{ url_for("blog", slug=post.slug) }}</link> | 28 | <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> |
| 30 | <guid isPermaLink="false">{{ url_for("blog", slug=post.slug) }}</guid> | 30 | <guid isPermaLink="false">{{ url_for("blog", slug=post.slug) }}</guid> |
| 31 | <pubDate>{{ post.date|strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate> | 31 | <pubDate>{{ post.date|strftime("%a, %d %b %Y %H:%M:%S %z") }}</pubDate> |
| 32 | <description><![CDATA[{{ post.html|safe }}]]></description> | 32 | <description><![CDATA[{{ post.html|safe }}]]></description> |
theme/templates/index.html +8 −11
| @@ -1,9 +1,10 @@ | |||
| 1 | {% extends "base.html" %} {% block main %} | 1 | {% extends "base.html" %} {% block main %} |
| 2 | <section> | 2 | <section> |
| 3 | <h1>cleberg.net</h1> | 3 | <h1>cmc.pub</h1> |
| 4 | <pre>pub rsa4096 2022-11-16 [SC] | 4 | <pre>pub ed25519 2025-03-11 [SCA] |
| 5 | <a href="/gpg.txt">3917 973F B159 BBB8 6194 5385 6945 1A51 7AC0 CB37</a> | 5 | <a href="/gpg.txt">C687 00A6 FA4B 7183 B6CE E47D EEDC 995C D14F 193C</a> |
| 6 | uid [ultimate] Christian Cleberg <hello@cleberg.net></pre> | 6 | uid [ultimate] Christian Cleberg <hello@cmc.pub> |
| 7 | sub cv25519 2025-03-11 [E]</pre> | ||
| 7 | </section> | 8 | </section> |
| 8 | <section> | 9 | <section> |
| 9 | <h2>Recent Blog Posts</h2> | 10 | <h2>Recent Blog Posts</h2> |
| @@ -33,7 +34,7 @@ uid [ultimate] Christian Cleberg <hello@cleberg.net></pre> | |||
| 33 | <section> | 34 | <section> |
| 34 | <h2>Everything Else</h2> | 35 | <h2>Everything Else</h2> |
| 35 | <ul> | 36 | <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> |
| 37 | <li><a href="/salary/">Salary</a></li> | 38 | <li><a href="/salary/">Salary</a></li> |
| 38 | <li><a href="/services/">Services</a></li> | 39 | <li><a href="/services/">Services</a></li> |
| 39 | <li><a href="/wiki/">Wiki</a></li> | 40 | <li><a href="/wiki/">Wiki</a></li> |
| @@ -43,13 +44,9 @@ uid [ultimate] Christian Cleberg <hello@cleberg.net></pre> | |||
| 43 | <section> | 44 | <section> |
| 44 | <h2>Contact</h2> | 45 | <h2>Contact</h2> |
| 45 | <ul> | 46 | <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> |
| 47 | <li>cyb0rg on <a href="https://libera.chat/">libera.chat</a></li> | 48 | <li>cyb0rg on <a href="https://libera.chat/">libera.chat</a></li> |
| 48 | <li> | 49 | <li><a href="https://lemmy.cmc.pub/u/cmc">@cmc</a> on Lemmy</li> |
| 49 | <a href="https://matrix.to/#/@cyborg:matrix.tchncs.de" | ||
| 50 | >@cyborg:@matrix.tchncs.de</a | ||
| 51 | > | ||
| 52 | </li> | ||
| 53 | <li><a href="https://sr.ht/~cyborg">Sourcehut</a></li> | 50 | <li><a href="https://sr.ht/~cyborg">Sourcehut</a></li> |
| 54 | </ul> | 51 | </ul> |
| 55 | </section> | 52 | </section> |
theme/templates/post.html +1 −1
| @@ -23,6 +23,6 @@ | |||
| 23 | {% endif %} | 23 | {% endif %} |
| 24 | </section> | 24 | </section> |
| 25 | <section>{{ post.html | safe }}</section> | 25 | <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> |
| 27 | </article> | 27 | </article> |
| 28 | {% endblock %} | 28 | {% endblock %} |
utils/hooks/post-push +1 −1
| @@ -26,4 +26,4 @@ emacs --script publish.el &>/dev/null | |||
| 26 | minify -o theme/static/styles.min.css theme/static/styles.css | 26 | minify -o theme/static/styles.min.css theme/static/styles.css |
| 27 | 27 | ||
| 28 | # Deploy changes | 28 | # Deploy changes |
| 29 | rsync -r --delete-before .build/* $ubuntu_server:/var/www/cleberg.net/ | 29 | rsync -r --delete-before .build/* $ubuntu_server:/var/www/cmc.pub/ |
utils/nginx-dev.conf +3 −3
| @@ -1,12 +1,12 @@ | |||
| 1 | server { | 1 | server { |
| 2 | server_name cleberg.net www.cleberg.net; | 2 | server_name cmc.pub www.cmc.pub; |
| 3 | 3 | ||
| 4 | root /usr/share/nginx/html; | 4 | root /usr/share/nginx/html; |
| 5 | index index.html; | 5 | index index.html; |
| 6 | autoindex on; | 6 | autoindex on; |
| 7 | 7 | ||
| 8 | access_log /var/log/nginx/cleberg.net.access.log; | 8 | access_log /var/log/nginx/cmc.pub.access.log; |
| 9 | error_log /var/log/nginx/cleberg.net.error.log; | 9 | error_log /var/log/nginx/cmc.pub.error.log; |
| 10 | 10 | ||
| 11 | location / { | 11 | location / { |
| 12 | try_files $uri $uri/ =404; | 12 | try_files $uri $uri/ =404; |
utils/salary_visualization.py +1 −1
| @@ -13,7 +13,7 @@ import plotly.graph_objs as go | |||
| 13 | locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') | 13 | locale.setlocale(locale.LC_ALL, 'en_US.UTF-8') |
| 14 | 14 | ||
| 15 | # Read the CSV file | 15 | # Read the CSV file |
| 16 | df = pd_read_csv('~/git/cleberg.net/theme/static/salary.csv') | 16 | df = pd_read_csv('~/git/cmc.pub/theme/static/salary.csv') |
| 17 | 17 | ||
| 18 | def format_currency(value: float) -> str: | 18 | def format_currency(value: float) -> str: |
| 19 | """ | 19 | """ |