Commit fcc889508a

fcc889508ab63a679b5cbd231478b25cff48d8fc

parent: dfb4de1797

Unsigned

cmc <hello@cleberg.net> · 2023-12-02 17:34 UTC

fix: update domains

Layout: unified · split

blog/2019-09-09-audit-analytics.org +4 −4
@@ -25,7 +25,7 @@ These steps can be necessary for an audit (and may even be performed by the same
25associates), but they are not data analytics. 25associates), but they are not data analytics.
26 26
27#+CAPTION: The Intelligence Cycle 27#+CAPTION: The Intelligence Cycle
28[[https://img.0x4b1d.org/blog/20190909-data-analysis-in-auditing/intelligence_cycle-min.png]] 28[[https://img.cleberg.net/blog/20190909-data-analysis-in-auditing/intelligence_cycle-min.png]]
29 29
30* Current Use of Analytics in Auditing 30* Current Use of Analytics in Auditing
31 31
@@ -81,7 +81,7 @@ analytics so that the results can be as comprehensive as possible:
81 or else the system cannot be sustained. 81 or else the system cannot be sustained.
82 82
83#+CAPTION: The Delta Model 83#+CAPTION: The Delta Model
84[[https://img.0x4b1d.org/blog/20190909-data-analysis-in-auditing/delta-min.png]] 84[[https://img.cleberg.net/blog/20190909-data-analysis-in-auditing/delta-min.png]]
85 85
86* Finding the Proper KPIs 86* Finding the Proper KPIs
87 87
@@ -200,10 +200,10 @@ a story/ about the data and why the results matter. For example, *Figure 4*
200shows a part of the explanation the author gives to illustrate his point. 200shows a part of the explanation the author gives to illustrate his point.
201 201
202#+CAPTION: Entry-Level Visualization 202#+CAPTION: Entry-Level Visualization
203[[https://img.0x4b1d.org/blog/20190909-data-analysis-in-auditing/vis_example-min.png]] 203[[https://img.cleberg.net/blog/20190909-data-analysis-in-auditing/vis_example-min.png]]
204 204
205#+CAPTION: Visualization Explanation 205#+CAPTION: Visualization Explanation
206[[https://img.0x4b1d.org/blog/20190909-data-analysis-in-auditing/vis_example_explanation-min.png]] 206[[https://img.cleberg.net/blog/20190909-data-analysis-in-auditing/vis_example_explanation-min.png]]
207 207
208* Wrap-Up 208* Wrap-Up
209 209
blog/2019-12-03-the-ansoff-matrix.org +1 −1
@@ -33,7 +33,7 @@ matrix focuses on the firm's products and determines if the firm wants to pursue
33strategies around their existing products or explore new products. 33strategies around their existing products or explore new products.
34 34
35#+CAPTION: The Ansoff Matrix by JaisonAbeySabu, Own work, CC BY-SA 3.0 35#+CAPTION: The Ansoff Matrix by JaisonAbeySabu, Own work, CC BY-SA 3.0
36[[https://img.0x4b1d.org/blog/20191203-the-ansoff-matrix/ansoff_matrix-min.png]] 36[[https://img.cleberg.net/blog/20191203-the-ansoff-matrix/ansoff_matrix-min.png]]
37 37
38* Strategic Options 38* Strategic Options
39 39
blog/2020-01-25-linux-software.org +7 −7
@@ -5,7 +5,7 @@
5 5
6** Etcher 6** Etcher
7 7
8[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/etcher.png]] 8[[https://img.cleberg.net/blog/20200125-the-best-linux-software/etcher.png]]
9 9
10[[https://www.balena.io/etcher/][Etcher]] is a quick and easy way to burn ISO images to CDs and USB devices. There 10[[https://www.balena.io/etcher/][Etcher]] is a quick and easy way to burn ISO images to CDs and USB devices. There
11are two different ways you can install this program. First, you can navigate to 11are two different ways you can install this program. First, you can navigate to
@@ -50,7 +50,7 @@ sudo pacman -S etcher
50 50
51** Atom 51** Atom
52 52
53[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/atom.png]] 53[[https://img.cleberg.net/blog/20200125-the-best-linux-software/atom.png]]
54 54
55[[https://atom.io][Atom]] is the self-proclaimed "hackable text editor for the 21st century". This 55[[https://atom.io][Atom]] is the self-proclaimed "hackable text editor for the 21st century". This
56text editor is made by GitHub, [[https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/][now owned by Microsoft]], and has some of the best 56text editor is made by GitHub, [[https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/][now owned by Microsoft]], and has some of the best
@@ -94,7 +94,7 @@ sudo pacman -S atom
94 94
95** Visual Studio Code 95** Visual Studio Code
96 96
97[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/vscode.png]] 97[[https://img.cleberg.net/blog/20200125-the-best-linux-software/vscode.png]]
98 98
99[[https://code.visualstudio.com][Visual Studio Code]] is yet another fantastic choice for programming on Linux, 99[[https://code.visualstudio.com][Visual Studio Code]] is yet another fantastic choice for programming on Linux,
100especially if you need those extra add-ons to spice up your late-night coding 100especially if you need those extra add-ons to spice up your late-night coding
@@ -127,7 +127,7 @@ sudo pacman -S yay binutils make gcc pkg-config fakeroot yay -S visual-studio-co
127 127
128** GNOME Tweaks 128** GNOME Tweaks
129 129
130[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/gnome-tweaks.png]] 130[[https://img.cleberg.net/blog/20200125-the-best-linux-software/gnome-tweaks.png]]
131 131
132[[https://gitlab.gnome.org/GNOME/gnome-tweaks][Gnome Tweaks]] is the ultimate tool to use if you want to customize your GNOME 132[[https://gitlab.gnome.org/GNOME/gnome-tweaks][Gnome Tweaks]] is the ultimate tool to use if you want to customize your GNOME
133desktop environment. This is how you can switch application themes (GTK), shell 133desktop environment. This is how you can switch application themes (GTK), shell
@@ -148,7 +148,7 @@ sudo dnf install gnome-tweaks
148 148
149** Steam 149** Steam
150 150
151[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/steam.png]] 151[[https://img.cleberg.net/blog/20200125-the-best-linux-software/steam.png]]
152 152
153[[https://steampowered.com][Steam]] is one of the most popular gaming libraries for computers and is one of 153[[https://steampowered.com][Steam]] is one of the most popular gaming libraries for computers and is one of
154the main reasons that many people have been able to switch to Linux in recent 154the main reasons that many people have been able to switch to Linux in recent
@@ -193,7 +193,7 @@ sudo pacman -S steam
193 193
194** neofetch 194** neofetch
195 195
196[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/neofetch.png]] 196[[https://img.cleberg.net/blog/20200125-the-best-linux-software/neofetch.png]]
197 197
198[[https://github.com/dylanaraps/neofetch][Neofetch]] is a customizable tool used in the command-line to show system 198[[https://github.com/dylanaraps/neofetch][Neofetch]] is a customizable tool used in the command-line to show system
199information. This is exceptionally useful if you want to see your system's 199information. This is exceptionally useful if you want to see your system's
@@ -221,7 +221,7 @@ sudo pacman -S neofetch
221 221
222** yt-dlp 222** yt-dlp
223 223
224[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/yt-dlp.png]] 224[[https://img.cleberg.net/blog/20200125-the-best-linux-software/yt-dlp.png]]
225 225
226[[https://github.com/yt-dlp/yt-dlp][yt-dlp]] is an extremely handy command-line tool that allows you to download video 226[[https://github.com/yt-dlp/yt-dlp][yt-dlp]] is an extremely handy command-line tool that allows you to download video
227or audio files from various websites, such as YouTube. There are a ton of 227or audio files from various websites, such as YouTube. There are a ton of
blog/2020-01-26-steam-on-ntfs.org +1 −1
@@ -3,7 +3,7 @@
3 3
4* Auto-Mount Steam Drives 4* Auto-Mount Steam Drives
5 5
6[[https://img.0x4b1d.org/blog/20200125-the-best-linux-software/steam.png]] 6[[https://img.cleberg.net/blog/20200125-the-best-linux-software/steam.png]]
7 7
8If you want to see how to install Steam on Linux, see my other post: [[./2020-01-25-linux-software.html][Linux Software]]. 8If you want to see how to install Steam on Linux, see my other post: [[./2020-01-25-linux-software.html][Linux Software]].
9 9
blog/2020-03-25-session-messenger.org +7 −7
@@ -67,7 +67,7 @@ sudo chmod u+x session-messenger-desktop-linux-x86_64-1.0.5.AppImage
67#+END_SRC 67#+END_SRC
68 68
69#+CAPTION: Session Download Options 69#+CAPTION: Session Download Options
70[[https://img.0x4b1d.org/blog/20200325-session-private-messenger/session_downloads.png]] 70[[https://img.cleberg.net/blog/20200325-session-private-messenger/session_downloads.png]]
71 71
72* Creating an Account 72* Creating an Account
73 73
@@ -79,13 +79,13 @@ You'll need to set a display name and, optionally, a password. If you set a
79password, you will need to enter it every time you open the app. 79password, you will need to enter it every time you open the app.
80 80
81#+CAPTION: Session Login (Linux) 81#+CAPTION: Session Login (Linux)
82[[https://img.0x4b1d.org/blog/20200325-session-private-messenger/session_linux_login.png]] 82[[https://img.cleberg.net/blog/20200325-session-private-messenger/session_linux_login.png]]
83 83
84#+CAPTION: Session Login (macOS) 84#+CAPTION: Session Login (macOS)
85[[https://img.0x4b1d.org/blog/20200325-session-private-messenger/session_macos_login.png]] 85[[https://img.cleberg.net/blog/20200325-session-private-messenger/session_macos_login.png]]
86 86
87#+CAPTION: Password Authentication 87#+CAPTION: Password Authentication
88[[https://img.0x4b1d.org/blog/20200325-session-private-messenger/session_password_authentication.png]] 88[[https://img.cleberg.net/blog/20200325-session-private-messenger/session_password_authentication.png]]
89 89
90* Start Messaging 90* Start Messaging
91 91
@@ -97,13 +97,13 @@ any other messaging app, so I won't dive into much detail here.
97** macOS 97** macOS
98 98
99#+CAPTION: macOS Conversations 99#+CAPTION: macOS Conversations
100[[https://img.0x4b1d.org/blog/20200325-session-private-messenger/session_macos_conversations.png]] 100[[https://img.cleberg.net/blog/20200325-session-private-messenger/session_macos_conversations.png]]
101 101
102One key feature to note is that the desktop application now provides a helpful 102One key feature to note is that the desktop application now provides a helpful
103pop-up box explaining the process that Session uses to hide your IP address: 103pop-up box explaining the process that Session uses to hide your IP address:
104 104
105#+CAPTION: IP Address Help Box 105#+CAPTION: IP Address Help Box
106[[https://img.0x4b1d.org/blog/20200325-session-private-messenger/session_ip.png]] 106[[https://img.cleberg.net/blog/20200325-session-private-messenger/session_ip.png]]
107 107
108** iOS 108** iOS
109 109
@@ -111,7 +111,7 @@ The mobile app is quite simple and effective, giving you all the standard mobile
111messaging options you'd expect. 111messaging options you'd expect.
112 112
113#+CAPTION: iOS App 113#+CAPTION: iOS App
114[[https://img.0x4b1d.org/blog/20200325-session-private-messenger/session_ios.png]] 114[[https://img.cleberg.net/blog/20200325-session-private-messenger/session_ios.png]]
115 115
116* Potential Issues 116* Potential Issues
117 117
blog/2020-05-03-homelab.org +1 −1
@@ -15,7 +15,7 @@ done so far in my homelab is fairly low-budget.
15* Hardware 15* Hardware
16 16
17#+CAPTION: HomeLab Diagram 17#+CAPTION: HomeLab Diagram
18[[https://img.0x4b1d.org/blog/20200503-homelab/homelab-min.png]] 18[[https://img.cleberg.net/blog/20200503-homelab/homelab-min.png]]
19 19
20** Raspberry Pi 4 20** Raspberry Pi 4
21 21
blog/2020-05-19-customizing-ubuntu.org +2 −2
@@ -21,7 +21,7 @@ tutorials out there on customizations.
21** Required Tools 21** Required Tools
22 22
23#+CAPTION: Gnome Tweaks 23#+CAPTION: Gnome Tweaks
24[[https://img.0x4b1d.org/blog/20200519-customizing-ubuntu/gnome-tweaks-min.png]] 24[[https://img.cleberg.net/blog/20200519-customizing-ubuntu/gnome-tweaks-min.png]]
25 25
26Ubuntu 20.04 ships with the default desktop environment [[https://www.gnome.org/][Gnome]], which includes 26Ubuntu 20.04 ships with the default desktop environment [[https://www.gnome.org/][Gnome]], which includes
27the handy =gnome-tweaks= tool to quickly change designs. To install this, just 27the handy =gnome-tweaks= tool to quickly change designs. To install this, just
@@ -84,7 +84,7 @@ install the browser extension that the website instructs you to. See this
84screenshot for the blue box with a link to the extension. 84screenshot for the blue box with a link to the extension.
85 85
86#+CAPTION: Gnome Extensions 86#+CAPTION: Gnome Extensions
87[[https://img.0x4b1d.org/blog/20200519-customizing-ubuntu/gnome-extensions-min.png]] 87[[https://img.cleberg.net/blog/20200519-customizing-ubuntu/gnome-extensions-min.png]]
88 88
89After the browser extension is installed, you will need to install the native 89After the browser extension is installed, you will need to install the native
90host connector: 90host connector:
blog/2020-07-20-video-game-sales.org +9 −9
@@ -38,7 +38,7 @@ df
38#+END_SRC 38#+END_SRC
39 39
40#+CAPTION: Dataframe Results 40#+CAPTION: Dataframe Results
41[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/01_dataframe-min.png]] 41[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/01_dataframe-min.png]]
42 42
43* Explore the Data 43* Explore the Data
44 44
@@ -48,7 +48,7 @@ df.describe()
48#+END_SRC 48#+END_SRC
49 49
50#+CAPTION: df.describe() 50#+CAPTION: df.describe()
51[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/02_describe-min.png]] 51[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/02_describe-min.png]]
52 52
53#+BEGIN_SRC python 53#+BEGIN_SRC python
54# This function shows the rows and columns of NaN values. For example, df[179,3] = nan 54# This function shows the rows and columns of NaN values. For example, df[179,3] = nan
@@ -66,7 +66,7 @@ sns.catplot(x='Platform', y='Global_Sales', data=df, jitter=False).set_xticklabe
66#+END_SRC 66#+END_SRC
67 67
68#+CAPTION: Plot of Global Sales by Platform 68#+CAPTION: Plot of Global Sales by Platform
69[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/03_plot-min.png]] 69[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/03_plot-min.png]]
70 70
71#+BEGIN_SRC python 71#+BEGIN_SRC python
72# This function plots the global sales by genre 72# This function plots the global sales by genre
@@ -74,7 +74,7 @@ sns.catplot(x='Genre', y='Global_Sales', data=df, jitter=False).set_xticklabels(
74#+END_SRC 74#+END_SRC
75 75
76#+CAPTION: Plot of Global Sales by Genre 76#+CAPTION: Plot of Global Sales by Genre
77[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/04_plot-min.png]] 77[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/04_plot-min.png]]
78 78
79#+BEGIN_SRC python 79#+BEGIN_SRC python
80# This function plots the global sales by year 80# This function plots the global sales by year
@@ -82,7 +82,7 @@ sns.lmplot(x='Year', y='Global_Sales', data=df).set_xticklabels(rotation=45)
82#+END_SRC 82#+END_SRC
83 83
84#+CAPTION: Plot of Global Sales by Year 84#+CAPTION: Plot of Global Sales by Year
85[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/05_plot-min.png]] 85[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/05_plot-min.png]]
86 86
87#+BEGIN_SRC python 87#+BEGIN_SRC python
88# This function plots four different lines to show sales from different regions. 88# This function plots four different lines to show sales from different regions.
@@ -111,7 +111,7 @@ plt.show()
111#+END_SRC 111#+END_SRC
112 112
113#+CAPTION: Plot of Regional Sales by Year 113#+CAPTION: Plot of Regional Sales by Year
114[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/06_plot-min.png]] 114[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/06_plot-min.png]]
115 115
116* Investigate Outliers 116* Investigate Outliers
117 117
@@ -138,7 +138,7 @@ df3.describe()
138#+END_SRC 138#+END_SRC
139 139
140#+CAPTION: Descriptive Statistics of 2006 Sales 140#+CAPTION: Descriptive Statistics of 2006 Sales
141[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/07_2006_stats-min.png]] 141[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/07_2006_stats-min.png]]
142 142
143#+BEGIN_SRC python 143#+BEGIN_SRC python
144# Plot the results of the previous dataframe (games from 2006) - we can see the year's results were largely carried by Wii Sports 144# Plot the results of the previous dataframe (games from 2006) - we can see the year's results were largely carried by Wii Sports
@@ -146,7 +146,7 @@ sns.catplot(x="Genre", y="Global_Sales", data=df3, jitter=False).set_xticklabels
146#+END_SRC 146#+END_SRC
147 147
148#+CAPTION: Plot of 2006 Sales 148#+CAPTION: Plot of 2006 Sales
149[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/08_plot-min.png]] 149[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/08_plot-min.png]]
150 150
151#+BEGIN_SRC python 151#+BEGIN_SRC python
152# We can see 4 outliers in the graph above, so let's get the top 5 games from that dataframe 152# We can see 4 outliers in the graph above, so let's get the top 5 games from that dataframe
@@ -155,7 +155,7 @@ df3.sort_values(by=['Global_Sales'], ascending=False).head(5)
155#+END_SRC 155#+END_SRC
156 156
157#+CAPTION: Outliers of 2006 Sales 157#+CAPTION: Outliers of 2006 Sales
158[[https://img.0x4b1d.org/blog/20200720-data-exploration-video-game-sales/09_outliers-min.png]] 158[[https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales/09_outliers-min.png]]
159 159
160* Discussion 160* Discussion
161 161
blog/2020-07-26-business-analysis.org +7 −7
@@ -48,7 +48,7 @@ map_LNK
48#+END_SRC 48#+END_SRC
49 49
50#+CAPTION: Blank Map 50#+CAPTION: Blank Map
51[[https://img.0x4b1d.org/blog/20200726-ibm-data-science/01_blank_map-min.png]] 51[[https://img.cleberg.net/blog/20200726-ibm-data-science/01_blank_map-min.png]]
52 52
53Now that we have defined our city and created the map, we need to go get the 53Now that we have defined our city and created the map, we need to go get the
54business data. The Foursquare API will limit the results to 100 per API call, so 54business data. The Foursquare API will limit the results to 100 per API call, so
@@ -191,7 +191,7 @@ nearby_venues
191#+END_SRC 191#+END_SRC
192 192
193#+CAPTION: Clean Data 193#+CAPTION: Clean Data
194[[https://img.0x4b1d.org/blog/20200726-ibm-data-science/02_clean_data-min.png]] 194[[https://img.cleberg.net/blog/20200726-ibm-data-science/02_clean_data-min.png]]
195 195
196* Visualize the Data 196* Visualize the Data
197 197
@@ -217,7 +217,7 @@ for lat, lng, name, categories in zip(nearby_venues['lat'], nearby_venues['lng']
217map_LNK 217map_LNK
218#+END_SRC 218#+END_SRC
219 219
220![Initial data map](https://img.0x4b1d.org/blog/20200726-ibm-data-science/03_data_map-min.png "Initial data map") 220![Initial data map](https://img.cleberg.net/blog/20200726-ibm-data-science/03_data_map-min.png "Initial data map")
221 221
222* Clustering: /k-means/ 222* Clustering: /k-means/
223 223
@@ -306,7 +306,7 @@ map_clusters
306#+END_SRC 306#+END_SRC
307 307
308#+CAPTION: Clustered Map 308#+CAPTION: Clustered Map
309[[https://img.0x4b1d.org/blog/20200726-ibm-data-science/04_clusters-min.png]] 309[[https://img.cleberg.net/blog/20200726-ibm-data-science/04_clusters-min.png]]
310 310
311* Investigate Clusters 311* Investigate Clusters
312 312
@@ -326,7 +326,7 @@ for x in range(0,6):
326#+END_SRC 326#+END_SRC
327 327
328#+CAPTION: Venues per Cluster 328#+CAPTION: Venues per Cluster
329[[https://img.0x4b1d.org/blog/20200726-ibm-data-science/05_venues_per_cluster-min.png]] 329[[https://img.cleberg.net/blog/20200726-ibm-data-science/05_venues_per_cluster-min.png]]
330 330
331Our last piece of analysis is to summarize the categories of businesses within 331Our last piece of analysis is to summarize the categories of businesses within
332each cluster. With these results, we can clearly see that restaurants, coffee 332each cluster. With these results, we can clearly see that restaurants, coffee
@@ -355,10 +355,10 @@ with pd.option_context('display.max_rows', None, 'display.max_columns', None):
355#+END_SRC 355#+END_SRC
356 356
357#+CAPTION: Venues per Cluster, pt. 1 357#+CAPTION: Venues per Cluster, pt. 1
358[[https://img.0x4b1d.org/blog/20200726-ibm-data-science/06_categories_per_cluster_pt1-min.png]] 358[[https://img.cleberg.net/blog/20200726-ibm-data-science/06_categories_per_cluster_pt1-min.png]]
359 359
360#+CAPTION: Venues per Cluster, pt. 2 360#+CAPTION: Venues per Cluster, pt. 2
361[[https://img.0x4b1d.org/blog/20200726-ibm-data-science/07_categories_per_cluster_pt2-min.png]] 361[[https://img.cleberg.net/blog/20200726-ibm-data-science/07_categories_per_cluster_pt2-min.png]]
362 362
363* Discussion 363* Discussion
364 364
blog/2020-09-22-internal-audit.org +5 −5
@@ -2,7 +2,7 @@
2#+title: What is Internal Audit? 2#+title: What is Internal Audit?
3 3
4#+CAPTION: Internal Audit Overview 4#+CAPTION: Internal Audit Overview
5[[https://img.0x4b1d.org/blog/20200922-what-is-internal-audit/internal-audit-overview.jpg]] 5[[https://img.cleberg.net/blog/20200922-what-is-internal-audit/internal-audit-overview.jpg]]
6 6
7* Definitions 7* Definitions
8 8
@@ -103,13 +103,13 @@ released an updated version in 2020. Here is what the Three Lines of Defense
103model has historically looked like: 103model has historically looked like:
104 104
105#+CAPTION: 2013 Three Lines of Defense Model 105#+CAPTION: 2013 Three Lines of Defense Model
106[[https://img.0x4b1d.org/blog/20200922-what-is-internal-audit/three_lines_model.png]] 106[[https://img.cleberg.net/blog/20200922-what-is-internal-audit/three_lines_model.png]]
107 107
108I won't go into depth about the changes made to the model in this article. 108I won't go into depth about the changes made to the model in this article.
109Instead, let's take a look at the most current model. 109Instead, let's take a look at the most current model.
110 110
111#+CAPTION: 2020 Three Lines of Defense Model 111#+CAPTION: 2020 Three Lines of Defense Model
112[[https://img.0x4b1d.org/blog/20200922-what-is-internal-audit/updated_three_lines_model.png]] 112[[https://img.cleberg.net/blog/20200922-what-is-internal-audit/updated_three_lines_model.png]]
113 113
114The updated model forgets the strict idea of areas performing their own 114The updated model forgets the strict idea of areas performing their own
115functions or line of defense. Instead of talking about management, risk, and 115functions or line of defense. Instead of talking about management, risk, and
@@ -138,7 +138,7 @@ changes to the audit process. The audit process is not set in stone, it's simply
138a set of best practices so that audits can be performed consistently. 138a set of best practices so that audits can be performed consistently.
139 139
140#+CAPTION: The Internal Audit Process 140#+CAPTION: The Internal Audit Process
141[[https://img.0x4b1d.org/blog/20200922-what-is-internal-audit/internal-audit-process.jpg]] 141[[https://img.cleberg.net/blog/20200922-what-is-internal-audit/internal-audit-process.jpg]]
142 142
143While different organizations may tweak the process, it will generally follow 143While different organizations may tweak the process, it will generally follow
144this flow: 144this flow:
@@ -231,7 +231,7 @@ and file issues that could have been fixed at the beginning.
231* Data Science & Data Analytics 231* Data Science & Data Analytics
232 232
233#+CAPTION: Data Science Skill Set 233#+CAPTION: Data Science Skill Set
234[[https://img.0x4b1d.org/blog/20200922-what-is-internal-audit/data-science-skillset.png]] 234[[https://img.cleberg.net/blog/20200922-what-is-internal-audit/data-science-skillset.png]]
235 235
236One major piece of the internal audit function in the modern world is data 236One major piece of the internal audit function in the modern world is data
237science. While the process is data science, most auditors will refer to anything 237science. While the process is data science, most auditors will refer to anything
blog/2020-09-25-happiness-map.org +5 −5
@@ -59,7 +59,7 @@ geo_data.head()
59#+END_SRC 59#+END_SRC
60 60
61#+CAPTION: GeoJSON Dataframe 61#+CAPTION: GeoJSON Dataframe
62[[https://img.0x4b1d.org/blog/20200925-world-choropleth-map/geojson_df.png]] 62[[https://img.cleberg.net/blog/20200925-world-choropleth-map/geojson_df.png]]
63 63
64Next, let's load the data from the Kaggle dataset. I've downloaded this file, so 64Next, let's load the data from the Kaggle dataset. I've downloaded this file, so
65update the file path if you have it somewhere else. After loading, let's take a 65update the file path if you have it somewhere else. After loading, let's take a
@@ -72,7 +72,7 @@ happy_data.head()
72#+END_SRC 72#+END_SRC
73 73
74#+CAPTION: Happiness Dataframe 74#+CAPTION: Happiness Dataframe
75[[https://img.0x4b1d.org/blog/20200925-world-choropleth-map/happiness_df.png]] 75[[https://img.cleberg.net/blog/20200925-world-choropleth-map/happiness_df.png]]
76 76
77* Clean the Data 77* Clean the Data
78 78
@@ -121,7 +121,7 @@ merged_df = merged_df.rename(columns = {'Country or region':'Country'})
121#+END_SRC 121#+END_SRC
122 122
123#+CAPTION: Merged Dataframe 123#+CAPTION: Merged Dataframe
124[[https://img.0x4b1d.org/blog/20200925-world-choropleth-map/merged_df.png]] 124[[https://img.cleberg.net/blog/20200925-world-choropleth-map/merged_df.png]]
125 125
126* Create the Map 126* Create the Map
127 127
@@ -159,7 +159,7 @@ folium.Choropleth(
159Let's look at the resulting map. 159Let's look at the resulting map.
160 160
161#+CAPTION: Choropleth Map 161#+CAPTION: Choropleth Map
162[[https://img.0x4b1d.org/blog/20200925-world-choropleth-map/map.png]] 162[[https://img.cleberg.net/blog/20200925-world-choropleth-map/map.png]]
163 163
164* Create a Tooltip on Hover 164* Create a Tooltip on Hover
165 165
@@ -214,4 +214,4 @@ The final image below will show you what the tooltip looks like whenever you
214hover over a country. 214hover over a country.
215 215
216#+CAPTION: Choropleth Map Tooltip 216#+CAPTION: Choropleth Map Tooltip
217[[https://img.0x4b1d.org/blog/20200925-world-choropleth-map/tooltip_map.png]] 217[[https://img.cleberg.net/blog/20200925-world-choropleth-map/tooltip_map.png]]
blog/2020-12-28-neon-drive.org +4 −4
@@ -38,7 +38,7 @@ stereotype you can think of around retro-futuristic, synthwave arcades (in a
38good way). 38good way).
39 39
40#+CAPTION: Neon Drive Menu 40#+CAPTION: Neon Drive Menu
41[[https://img.0x4b1d.org/blog/20201228-neon-drive/neon_drive_menu.png]] 41[[https://img.cleberg.net/blog/20201228-neon-drive/neon_drive_menu.png]]
42 42
43Once you get into the first level, we see that the choice of car fits right in 43Once you get into the first level, we see that the choice of car fits right in
44with the stereotypical cars of the 80s, like the [[https://en.wikipedia.org/wiki/DMC_DeLorean][DeLorean]] or the [[https://en.wikipedia.org/wiki/Ferrari_F40][Ferrari 44with the stereotypical cars of the 80s, like the [[https://en.wikipedia.org/wiki/DMC_DeLorean][DeLorean]] or the [[https://en.wikipedia.org/wiki/Ferrari_F40][Ferrari
@@ -46,19 +46,19 @@ F40]]. Each new level comes with new color schemes and cars, so you should never
46get tired of the aesthetic. 46get tired of the aesthetic.
47 47
48#+CAPTION: Neon Drive Race 48#+CAPTION: Neon Drive Race
49[[https://img.0x4b1d.org/blog/20201228-neon-drive/neon_drive_race.png]] 49[[https://img.cleberg.net/blog/20201228-neon-drive/neon_drive_race.png]]
50 50
51Personally, I love the orange and blue colors used in level 2: 51Personally, I love the orange and blue colors used in level 2:
52 52
53#+CAPTION: Level 2 53#+CAPTION: Level 2
54[[https://img.0x4b1d.org/blog/20201228-neon-drive/neon_drive_level_2.png]] 54[[https://img.cleberg.net/blog/20201228-neon-drive/neon_drive_level_2.png]]
55 55
56If you're the competitive type and getting 100% on all arcade machines isn't 56If you're the competitive type and getting 100% on all arcade machines isn't
57enough, there are leaderboards for the regular part of the game, and the 57enough, there are leaderboards for the regular part of the game, and the
58endurance game mode. 58endurance game mode.
59 59
60#+CAPTION: Leaderboard 60#+CAPTION: Leaderboard
61[[https://img.0x4b1d.org/blog/20201228-neon-drive/neon_drive_leaderboard.png]] 61[[https://img.cleberg.net/blog/20201228-neon-drive/neon_drive_leaderboard.png]]
62 62
63* Other Suggestions 63* Other Suggestions
64 64
blog/2020-12-29-zork.org +4 −4
@@ -29,7 +29,7 @@ collect your trophies. However, if you want to play the game as it was truly
29intended, you should try to play it without using the map. 29intended, you should try to play it without using the map.
30 30
31#+CAPTION: Zork Map 31#+CAPTION: Zork Map
32[[https://img.0x4b1d.org/blog/20201229-zork/zork_map.png]] 32[[https://img.cleberg.net/blog/20201229-zork/zork_map.png]]
33 33
34/[[https://www.filfre.net/2012/01/exploring-zork-part-1/][Map Source]]/ 34/[[https://www.filfre.net/2012/01/exploring-zork-part-1/][Map Source]]/
35 35
@@ -50,7 +50,7 @@ adventures before, try to use simple commands like "go west," "look around," or
50"hit troll with elvish sword." 50"hit troll with elvish sword."
51 51
52#+CAPTION: Zork Screen, pt. 1 52#+CAPTION: Zork Screen, pt. 1
53[[https://img.0x4b1d.org/blog/20201229-zork/zork_01.png]] 53[[https://img.cleberg.net/blog/20201229-zork/zork_01.png]]
54 54
55In this second screenshot, we see the player has entered the house and found the 55In this second screenshot, we see the player has entered the house and found the
56trophy case in the living room. The lantern and sword in this room allow the 56trophy case in the living room. The lantern and sword in this room allow the
@@ -58,14 +58,14 @@ player to explore dark areas and attack enemies. If you don't use the lantern,
58you won't be able to see anything in dark areas, and you may be eaten by a grue. 58you won't be able to see anything in dark areas, and you may be eaten by a grue.
59 59
60#+CAPTION: Zork Screen, pt. 2 60#+CAPTION: Zork Screen, pt. 2
61[[https://img.0x4b1d.org/blog/20201229-zork/zork_02.png]] 61[[https://img.cleberg.net/blog/20201229-zork/zork_02.png]]
62 62
63Finally, we see that the player has found the first treasure: a jewel-encrusted 63Finally, we see that the player has found the first treasure: a jewel-encrusted
64egg. These treasures can be taken back to the house and placed in the trophy 64egg. These treasures can be taken back to the house and placed in the trophy
65case or carried until you feel like you want to put things away. 65case or carried until you feel like you want to put things away.
66 66
67#+CAPTION: Zork Screen, pt 3. 67#+CAPTION: Zork Screen, pt 3.
68[[https://img.0x4b1d.org/blog/20201229-zork/zork_03.png]] 68[[https://img.cleberg.net/blog/20201229-zork/zork_03.png]]
69 69
70* Conclusion 70* Conclusion
71 71
blog/2021-01-01-seum.org +6 −6
@@ -30,7 +30,7 @@ hand is what allows you to use all the powers in the game.
30 30
31Check out the screenshot below for one of the first panels of the storyline: 31Check out the screenshot below for one of the first panels of the storyline:
32 32
33![SEUM Story](https://img.0x4b1d.org/blog/20210101-seum/seum_story.png) 33![SEUM Story](https://img.cleberg.net/blog/20210101-seum/seum_story.png)
34 34
35## Gameplay 35## Gameplay
36 36
@@ -57,28 +57,28 @@ For the main storyline, there are nine floors to beat. Each floor contains nine
57regular levels, one boss level, and one bonus level; although you don't 57regular levels, one boss level, and one bonus level; although you don't
58technically need to beat all levels to advance to the next floor. 58technically need to beat all levels to advance to the next floor.
59 59
60![SEUM Floor Menu](https://img.0x4b1d.org/blog/20210101-seum/seum_floor.png) 60![SEUM Floor Menu](https://img.cleberg.net/blog/20210101-seum/seum_floor.png)
61 61
62## In-Game Screenshots 62## In-Game Screenshots
63 63
64The main menu gives you plenty of options for tuning your system, playing main 64The main menu gives you plenty of options for tuning your system, playing main
65levels, playing the DLC, or exploring the other game modes. 65levels, playing the DLC, or exploring the other game modes.
66 66
67![SEUM Main Menu](https://img.0x4b1d.org/blog/20210101-seum/seum_menu.png) 67![SEUM Main Menu](https://img.cleberg.net/blog/20210101-seum/seum_menu.png)
68 68
69Once you enter a level, you can look around and strategize before starting. 69Once you enter a level, you can look around and strategize before starting.
70Clicking any button will start the menu, and you'll have to restart if you die. 70Clicking any button will start the menu, and you'll have to restart if you die.
71One of the great things about SEUM is that it has great keyboard shortcuts. You 71One of the great things about SEUM is that it has great keyboard shortcuts. You
72can quickly smash `R` to restart the level or `M` to return to the level menu. 72can quickly smash `R` to restart the level or `M` to return to the level menu.
73 73
74![SEUM Level](https://img.0x4b1d.org/blog/20210101-seum/seum_level.png) 74![SEUM Level](https://img.cleberg.net/blog/20210101-seum/seum_level.png)
75 75
76Once you're able to win a level, you'll see the high scores and can watch 76Once you're able to win a level, you'll see the high scores and can watch
77replays of the best scores. 77replays of the best scores.
78 78
79![SEUM Win](https://img.0x4b1d.org/blog/20210101-seum/seum_win.png) 79![SEUM Win](https://img.cleberg.net/blog/20210101-seum/seum_win.png)
80 80
81Each regular level contains a beer in a disguised location that may take some 81Each regular level contains a beer in a disguised location that may take some
82out-of-the-box thinking. 82out-of-the-box thinking.
83 83
84![SEUM Beer](https://img.0x4b1d.org/blog/20210101-seum/seum_beer.png) 84![SEUM Beer](https://img.cleberg.net/blog/20210101-seum/seum_beer.png)
blog/2021-01-04-fediverse.org +1 −1
@@ -24,7 +24,7 @@ be on the same server.
24However, responsible email admins are there to set rules and control the 24However, responsible email admins are there to set rules and control the
25traffic going in/out of the server. 25traffic going in/out of the server.
26 26
27![Federated services diagram](https://img.0x4b1d.org/blog/20210104-a-simple-guide-to-the-fediverse/federated-example.svg) 27![Federated services diagram](https://img.cleberg.net/blog/20210104-a-simple-guide-to-the-fediverse/federated-example.svg)
28 28
29The main objective of this architecture is to decentralize the control within 29The main objective of this architecture is to decentralize the control within
30the internet connections. For example, if you run your own Mastodon instance, 30the internet connections. For example, if you run your own Mastodon instance,
blog/2021-01-07-ufw.org +1 −1
@@ -23,7 +23,7 @@ iptables.
23application for users who are uncomfortable setting up a firewall through a 23application for users who are uncomfortable setting up a firewall through a
24terminal. 24terminal.
25 25
26![](https://img.0x4b1d.org/blog/20210107-secure-your-network-with-the-uncomplicated-firewall/gufw.png) 26![](https://img.cleberg.net/blog/20210107-secure-your-network-with-the-uncomplicated-firewall/gufw.png)
27 27
28## Getting Help 28## Getting Help
29 29
blog/2021-02-19-macos.org +2 −2
@@ -21,7 +21,7 @@ dev tools.
21Before I move on to the technical aspects of my set-up, I want to take some time 21Before I move on to the technical aspects of my set-up, I want to take some time
22and express my thoughts on the overall OS. 22and express my thoughts on the overall OS.
23 23
24![macOS Desktop](https://img.0x4b1d.org/blog/20210219-macos-testing-out-a-new-os/macos-desktop.png) 24![macOS Desktop](https://img.cleberg.net/blog/20210219-macos-testing-out-a-new-os/macos-desktop.png)
25 25
26As expected, the initial computer setup is a breeze with Mac's guided GUI 26As expected, the initial computer setup is a breeze with Mac's guided GUI
27installer. 27installer.
@@ -69,7 +69,7 @@ recreate a terminal environment that I feel very comfortable using. See the
69image below for a preview of the iTerm2 app with a split view between my macOS 69image below for a preview of the iTerm2 app with a split view between my macOS
70desktop shell and an SSH session into my server. 70desktop shell and an SSH session into my server.
71 71
72![iTerm2](https://img.0x4b1d.org/blog/20210219-macos-testing-out-a-new-os/iterm2.png) 72![iTerm2](https://img.cleberg.net/blog/20210219-macos-testing-out-a-new-os/iterm2.png)
73 73
74## Xcode 74## Xcode
75 75
blog/2021-03-28-gemini-capsule.org +1 −1
@@ -175,4 +175,4 @@ Now that you've properly built your Sourcehut page, you can browse to
175your-username.srht.site in a Gemini browser and view the final results. Take a 175your-username.srht.site in a Gemini browser and view the final results. Take a
176look at the image below for my Sourcehut Gemini capsule. 176look at the image below for my Sourcehut Gemini capsule.
177 177
178![Gemini page on the amfora browser](https://img.0x4b1d.org/blog/20210328-launching-a-gemini-capsule/amfora.png) 178![Gemini page on the amfora browser](https://img.cleberg.net/blog/20210328-launching-a-gemini-capsule/amfora.png)
blog/2021-03-28-vaporwave-vs-outrun.org +6 −6
@@ -15,11 +15,11 @@ two genres are usually attributed to Vaporwave. For example, take a look at the
15image search results for Vaporwave: the results include **a lot** of 15image search results for Vaporwave: the results include **a lot** of
16Outrun-themed images. You'll find a similar trend almost everywhere. 16Outrun-themed images. You'll find a similar trend almost everywhere.
17 17
18![](https://img.0x4b1d.org/blog/20210328-vaporwave-vs-outrun/vaporwave-search-results.png) 18![](https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/vaporwave-search-results.png)
19 19
20## Vaporwave 20## Vaporwave
21 21
22![](https://img.0x4b1d.org/blog/20210328-vaporwave-vs-outrun/macintosh-plus.png) 22![](https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/macintosh-plus.png)
23 23
24Okay, so what is Vaporwave? I'm going to just copy-and-paste some general info 24Okay, so what is Vaporwave? I'm going to just copy-and-paste some general info
25from the Wikipedia article on 25from the Wikipedia article on
@@ -72,7 +72,7 @@ aesthetically-pleasing parts of that past is a large part of Vaporwave.
72 72
73## Outrun 73## Outrun
74 74
75![Outrun](https://img.0x4b1d.org/blog/20210328-vaporwave-vs-outrun/outrun.png) 75![Outrun](https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/outrun.png)
76 76
77Now, let's get to Outrun. This one is a little trickier since the genre has 77Now, let's get to Outrun. This one is a little trickier since the genre has
78largely been lumped under the Vaporwave title for so long. However, it stems 78largely been lumped under the Vaporwave title for so long. However, it stems
@@ -103,14 +103,14 @@ Outrun enthusiasts love what people in the 1980s thought the future would look
103like. Take a look at a common video game discussed in Outrun circles, Far Cry 3: 103like. Take a look at a common video game discussed in Outrun circles, Far Cry 3:
104Blood Dragon: 104Blood Dragon:
105 105
106![Fry Cry 3: Blood Dragon](https://img.0x4b1d.org/blog/20210328-vaporwave-vs-outrun/far-cry.png) 106![Fry Cry 3: Blood Dragon](https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/far-cry.png)
107 107
108Another example that doesn't force the color scheme as hard as some online art 108Another example that doesn't force the color scheme as hard as some online art
109does is Kung Fury: 109does is Kung Fury:
110 110
111![Kung Fury](https://img.0x4b1d.org/blog/20210328-vaporwave-vs-outrun/kung-fury.png) 111![Kung Fury](https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/kung-fury.png)
112 112
113![Kung Fury Hacker Scene](https://img.0x4b1d.org/blog/20210328-vaporwave-vs-outrun/kung-fury-hacker.png) 113![Kung Fury Hacker Scene](https://img.cleberg.net/blog/20210328-vaporwave-vs-outrun/kung-fury-hacker.png)
114 114
115## Conclusion 115## Conclusion
116 116
blog/2021-03-30-vps-web-server.org +1 −1
@@ -364,7 +364,7 @@ Now, test your domains by going to `https://example.com`.
364 364
365To enable better security on your server, you'll need to enable a basic 365To enable better security on your server, you'll need to enable a basic
366firewall. For Ubuntu, we'll use 366firewall. For Ubuntu, we'll use
367[the uncomplicated firewall](https://0x4b1d.org/blog/secure-your-network-with-the-uncomplicated-firewall.html). 367[the uncomplicated firewall](https://cleberg.net/blog/secure-your-network-with-the-uncomplicated-firewall.html).
368 368
369Now, add the following rules to the firewall allow SSH, Apache, and HTTP(S) 369Now, add the following rules to the firewall allow SSH, Apache, and HTTP(S)
370connections. If you need to, you can enable different ports for specifics 370connections. If you need to, you can enable different ports for specifics
blog/2021-04-17-gemini-server.org +2 −2
@@ -150,10 +150,10 @@ Here are some screenshots of the Gemini page I just created in the
150[Lagrange](https://gmi.skyjake.fi/lagrange/) browser and the 150[Lagrange](https://gmi.skyjake.fi/lagrange/) browser and the
151[amfora](https://github.com/makeworld-the-better-one/amfora) browser. 151[amfora](https://github.com/makeworld-the-better-one/amfora) browser.
152 152
153![GUI Gemini browser](https://img.0x4b1d.org/blog/20210417-hosting-a-gemini-server/lagrange.png) 153![GUI Gemini browser](https://img.cleberg.net/blog/20210417-hosting-a-gemini-server/lagrange.png)
154 154
155_Lagrange_ 155_Lagrange_
156 156
157![CLI Gemini browser](https://img.0x4b1d.org/blog/20210417-hosting-a-gemini-server/amfora.png) 157![CLI Gemini browser](https://img.cleberg.net/blog/20210417-hosting-a-gemini-server/amfora.png)
158 158
159_Amfora_ 159_Amfora_
blog/2021-04-23-php-comment-system.org +1 −1
@@ -54,7 +54,7 @@ I blog in plain Markdown files, commit all articles to Git, and ensure that
54future readers will be able to see the source data long after I'm gone, or the 54future readers will be able to see the source data long after I'm gone, or the
55website has gone offline. However, I still haven't committed any images served 55website has gone offline. However, I still haven't committed any images served
56on my blog to Git, as I'm not entirely sold on Git LFS yet - for now, images can 56on my blog to Git, as I'm not entirely sold on Git LFS yet - for now, images can
57be found at [img.0x4b1d.org](https://img.0x4b1d.org). 57be found at [img.cleberg.net](https://img.cleberg.net).
58 58
59Saving my comments back to the Git repository ensures that another aspect of my 59Saving my comments back to the Git repository ensures that another aspect of my
60site will degrade gracefully. 60site will degrade gracefully.
blog/2021-12-04-cisa.org +2 −2
@@ -43,7 +43,7 @@ commitment and quality of an employee, so I am accepting it too.
43The CISA is broken down into five sections, each weighted with a percentage of 43The CISA is broken down into five sections, each weighted with a percentage of
44test questions that may appear. 44test questions that may appear.
45 45
46![CISA exam sections](https://img.0x4b1d.org/blog/20211204-i-passed-the-cisa/cisa-exam-sections.png) 46![CISA exam sections](https://img.cleberg.net/blog/20211204-i-passed-the-cisa/cisa-exam-sections.png)
47 47
48Since the exam contains 150 questions, here's how those sections break down: 48Since the exam contains 150 questions, here's how those sections break down:
49 49
@@ -144,7 +144,7 @@ answered incorrectly and learned from my mistakes**.
144| 5 | 55 | 85 | 140 | 61% | 144| 5 | 55 | 85 | 140 | 61% |
145| **Grand Total** | **228** | **479** | **707** | **68%** | 145| **Grand Total** | **228** | **479** | **707** | **68%** |
146 146
147![CISA practice question results](https://img.0x4b1d.org/blog/20211204-i-passed-the-cisa/cisa-practice-questions-results.png) 147![CISA practice question results](https://img.cleberg.net/blog/20211204-i-passed-the-cisa/cisa-practice-questions-results.png)
148 148
149## Results 149## Results
150 150
blog/2022-02-10-leaving-the-office.org +5 −5
@@ -43,7 +43,7 @@ and support, I believe these jobs could be both comfortable and efficient.
43 43
44### Semi-Private Cubicles 44### Semi-Private Cubicles
45 45
46![Semi-Private Cubicles](https://img.0x4b1d.org/blog/20220210-leaving-office-based-work-in-the-past/private_cubicles.png) 46![Semi-Private Cubicles](https://img.cleberg.net/blog/20220210-leaving-office-based-work-in-the-past/private_cubicles.png)
47 47
48After about a year, I was able to find another internship - this time, it was in 48After about a year, I was able to find another internship - this time, it was in
49my field of interest: internal auditing. This was for a life insurance company 49my field of interest: internal auditing. This was for a life insurance company
@@ -69,7 +69,7 @@ later in this post).
69 69
70### Semi-Open Floor Concept 70### Semi-Open Floor Concept
71 71
72![Semi-Open Floor Concept](https://img.0x4b1d.org/blog/20220210-leaving-office-based-work-in-the-past/semi_open_office.png) 72![Semi-Open Floor Concept](https://img.cleberg.net/blog/20220210-leaving-office-based-work-in-the-past/semi_open_office.png)
73 73
74When I shifted to my first full-time internal audit job out of college, I was 74When I shifted to my first full-time internal audit job out of college, I was
75working at a company that was headquartered on a floor in a downtown high-rise 75working at a company that was headquartered on a floor in a downtown high-rise
@@ -95,7 +95,7 @@ to get work done, that was a non-starter.
95 95
96### Hotel Office Concept 96### Hotel Office Concept
97 97
98![Hotel Office Concept](https://img.0x4b1d.org/blog/20220210-leaving-office-based-work-in-the-past/hotel_desks.png) 98![Hotel Office Concept](https://img.cleberg.net/blog/20220210-leaving-office-based-work-in-the-past/hotel_desks.png)
99 99
100I currently work for a company remotely (for now) and travel to the office every 100I currently work for a company remotely (for now) and travel to the office every
101once in a while for events and to help coach the staff underneath me. The office 101once in a while for events and to help coach the staff underneath me. The office
@@ -119,7 +119,7 @@ be very nice if you have a lot of meetings or webinars on a certain day.
119 119
120## Home Office 120## Home Office
121 121
122![Home Office](https://img.0x4b1d.org/blog/20220210-leaving-office-based-work-in-the-past/home_office.png) 122![Home Office](https://img.cleberg.net/blog/20220210-leaving-office-based-work-in-the-past/home_office.png)
123 123
124Okay, now let's finally get to the home office concept. I have worked from home 124Okay, now let's finally get to the home office concept. I have worked from home
125for a little over two years at this point, across three different 125for a little over two years at this point, across three different
@@ -224,4 +224,4 @@ office will have privacy and quietness in order for me to get my work done.
224 224
225Cubicles are good! I agree with Alice (from the comic Dilbert): 225Cubicles are good! I agree with Alice (from the comic Dilbert):
226 226
227![Dilbert comic strip](https://img.0x4b1d.org/blog/20220210-leaving-office-based-work-in-the-past/dilbert_120109.png) 227![Dilbert comic strip](https://img.cleberg.net/blog/20220210-leaving-office-based-work-in-the-past/dilbert_120109.png)
blog/2022-02-16-debian-and-nginx.org +5 −5
@@ -7,7 +7,7 @@ draft = false
7 7
8## Server OS: Debian 8## Server OS: Debian
9 9
10![Debian + neofetch](https://img.0x4b1d.org/blog/20220216-migrating-to-debian-and-nginx/neofetch.png) 10![Debian + neofetch](https://img.cleberg.net/blog/20220216-migrating-to-debian-and-nginx/neofetch.png)
11 11
12I've used various Linux distributions throughout the years, but I've never used 12I've used various Linux distributions throughout the years, but I've never used
13anything except Ubuntu for my servers. 13anything except Ubuntu for my servers.
@@ -24,14 +24,14 @@ to Ubuntu for my purposes.
24I did the normal things when first launching the VPS, such as adding a new user, 24I did the normal things when first launching the VPS, such as adding a new user,
25locking down SSH, etc. If you want to see that level of detail, read my other 25locking down SSH, etc. If you want to see that level of detail, read my other
26post about 26post about
27[How to Set Up a VPS Web Server](https://0x4b1d.org/blog/how-to-set-up-a-vps-web-server/). 27[How to Set Up a VPS Web Server](https://cleberg.net/blog/how-to-set-up-a-vps-web-server/).
28 28
29All of this has been similar, apart from small things such as the location of 29All of this has been similar, apart from small things such as the location of
30users' home folders. No complaints at all from me - Debian seems great. 30users' home folders. No complaints at all from me - Debian seems great.
31 31
32## Web Server: Nginx 32## Web Server: Nginx
33 33
34![Nginx status](https://img.0x4b1d.org/blog/20220216-migrating-to-debian-and-nginx/nginx.png) 34![Nginx status](https://img.cleberg.net/blog/20220216-migrating-to-debian-and-nginx/nginx.png)
35 35
36Once I had the baseline server configuration set-up for Debian, I moved on to 36Once I had the baseline server configuration set-up for Debian, I moved on to
37trying out [Nginx](https://nginx.org) as my web server software. This required 37trying out [Nginx](https://nginx.org) as my web server software. This required
@@ -163,12 +163,12 @@ can do with all of this.
163 163
164## Gemini Server: Agate 164## Gemini Server: Agate
165 165
166![Agate status](https://img.0x4b1d.org/blog/20220216-migrating-to-debian-and-nginx/agate.png) 166![Agate status](https://img.cleberg.net/blog/20220216-migrating-to-debian-and-nginx/agate.png)
167 167
168Finally, I set up the Agate software on this server again to host my Gemini 168Finally, I set up the Agate software on this server again to host my Gemini
169server content, using Rust as I have before. 169server content, using Rust as I have before.
170You can read my other post for more information on installing Agate: 170You can read my other post for more information on installing Agate:
171[Hosting a Gemini Server](https://0x4b1d.org/blog/hosting-a-gemini-server/). 171[Hosting a Gemini Server](https://cleberg.net/blog/hosting-a-gemini-server/).
172 172
173All in all, Debian + Nginx is very slick and I prefer it over my old combination 173All in all, Debian + Nginx is very slick and I prefer it over my old combination
174of Ubuntu + Apache (although it's really just Nginx > Apache for me, since 174of Ubuntu + Apache (although it's really just Nginx > Apache for me, since
blog/2022-02-17-exiftool.org +2 −2
@@ -46,7 +46,7 @@ distributions, but I really only care to test out this one package.
46## Recursively Strip Data 46## Recursively Strip Data
47 47
48I actually use this tool extensively to strip any photos uploaded to the website 48I actually use this tool extensively to strip any photos uploaded to the website
49that serves all the images for my blog (`img.0x4b1d.org`). 49that serves all the images for my blog (`img.cleberg.net`).
50 50
51The following command is incredibly useful and can be modified to include any 51The following command is incredibly useful and can be modified to include any
52image extensions that `exiftool` supports: 52image extensions that `exiftool` supports:
@@ -60,4 +60,4 @@ the image for this blog post. You can see that the command will let you know how
60many directories were scanned, how many images were updated, and how many images 60many directories were scanned, how many images were updated, and how many images
61were unchanged. 61were unchanged.
62 62
63![exiftool results](https://img.0x4b1d.org/blog/20220217-stripping-metadata-with-exiftool/exiftool.png) 63![exiftool results](https://img.cleberg.net/blog/20220217-stripping-metadata-with-exiftool/exiftool.png)
blog/2022-02-20-nginx-caching.org +1 −1
@@ -53,7 +53,7 @@ hours/day _ 60 minutes/hour \* 60 seconds/minute = 2,592,000 seconds).
53The `Expires` field is now showing 22 March 2022, which is 30 days from the day 53The `Expires` field is now showing 22 March 2022, which is 30 days from the day
54of this post, 20 February 2022. 54of this post, 20 February 2022.
55 55
56![Image Headers](https://img.0x4b1d.org/blog/20220220-caching-static-content-with-nginx/image_headers.png) 56![Image Headers](https://img.cleberg.net/blog/20220220-caching-static-content-with-nginx/image_headers.png)
57 57
58## Caveats 58## Caveats
59 59
blog/2022-02-22-tuesday.org +1 −1
@@ -27,7 +27,7 @@ Let's look at everything that fell in place today:
27 `въторъ`, meaning "the second." 27 `въторъ`, meaning "the second."
285. Written in the classic monospaced, digital font (think of digital clocks from 285. Written in the classic monospaced, digital font (think of digital clocks from
29 the 80s/90s), there is nice symmetry to the numbers 29 the 80s/90s), there is nice symmetry to the numbers
30 ([view the image here](https://img.0x4b1d.org/blog/20220222-tuesday/digital_font.png)!). 30 ([view the image here](https://img.cleberg.net/blog/20220222-tuesday/digital_font.png)!).
316. This one isn't naturally-occurring, but it seems people around the world are 316. This one isn't naturally-occurring, but it seems people around the world are
32 celebrating the day. For example, a group is putting together 32 celebrating the day. For example, a group is putting together
33 [a wedding of 222 couples at the California State Capitol in Sacramento](https://www.eventbrite.com/e/2-22-22-a-collective-wedding-ceremony-at-the-state-capitol-tickets-211434605597), 33 [a wedding of 222 couples at the California State Capitol in Sacramento](https://www.eventbrite.com/e/2-22-22-a-collective-wedding-ceremony-at-the-state-capitol-tickets-211434605597),
blog/2022-03-02-note-taking.org +3 −3
@@ -36,7 +36,7 @@ render it as plain-text and I can read it just as easily.
36For example, here's how TextEdit on macOS will open and display a Markdown file 36For example, here's how TextEdit on macOS will open and display a Markdown file
37in plain-text, since it does contain any features to preview Markdown as HTML: 37in plain-text, since it does contain any features to preview Markdown as HTML:
38 38
39![Plain Text Markdown](https://img.0x4b1d.org/blog/20220302-easy-reliable-note-taking/plain_markdown.png) 39![Plain Text Markdown](https://img.cleberg.net/blog/20220302-easy-reliable-note-taking/plain_markdown.png)
40 40
41## Saving & Syncing Files 41## Saving & Syncing Files
42 42
@@ -93,12 +93,12 @@ incredibly easy and straightforward.
93 93
94Here's an example of how my Markdown notes look when opened in plain-text mode: 94Here's an example of how my Markdown notes look when opened in plain-text mode:
95 95
96![Obsidian Markdown Source Mode](https://img.0x4b1d.org/blog/20220302-easy-reliable-note-taking/obsidian_source_mode.png) 96![Obsidian Markdown Source Mode](https://img.cleberg.net/blog/20220302-easy-reliable-note-taking/obsidian_source_mode.png)
97 97
98Here's the "live preview" version, where the Markdown is rendered into its HTML 98Here's the "live preview" version, where the Markdown is rendered into its HTML
99format: 99format:
100 100
101![Obsidian Markdown Live Preview](https://img.0x4b1d.org/blog/20220302-easy-reliable-note-taking/obsidian_live_preview.png) 101![Obsidian Markdown Live Preview](https://img.cleberg.net/blog/20220302-easy-reliable-note-taking/obsidian_live_preview.png)
102 102
103### Programming on Desktop 103### Programming on Desktop
104 104
blog/2022-03-03-financial-database.org +2 −2
@@ -45,7 +45,7 @@ account statements, and 126 pay statements. Overall, I'm guessing this took
45anywhere between 4–8 hours. In comparison, it probably took me 2-3 days to 45anywhere between 4–8 hours. In comparison, it probably took me 2-3 days to
46initially create the spreadsheet. 46initially create the spreadsheet.
47 47
48![DB4S](https://img.0x4b1d.org/blog/20220303-maintaining-a-personal-financial-database/db4s.png) 48![DB4S](https://img.cleberg.net/blog/20220303-maintaining-a-personal-financial-database/db4s.png)
49 49
50### Schema 50### Schema
51 51
@@ -238,7 +238,7 @@ def summary_data(accounts: pandas.DataFrame) -> None:
238The result? A high-quality pie chart that is read directly by the 238The result? A high-quality pie chart that is read directly by the
239`public/index.html` template I use. 239`public/index.html` template I use.
240 240
241![Summary Pie Chart](https://img.0x4b1d.org/blog/20220303-maintaining-a-personal-financial-database/summary_chart.png) 241![Summary Pie Chart](https://img.cleberg.net/blog/20220303-maintaining-a-personal-financial-database/summary_chart.png)
242 242
243Other charts generated by this project include: 243Other charts generated by this project include:
244 244
blog/2022-03-08-plex-migration.org +5 −5
@@ -69,9 +69,9 @@ initrd /casper/initrd
69boot 69boot
70``` 70```
71 71
72![Ubuntu Server Installation 01](https://img.0x4b1d.org/blog/20220308-plex-media-server-migration/ubuntu_server_installation_01.png) 72![Ubuntu Server Installation 01](https://img.cleberg.net/blog/20220308-plex-media-server-migration/ubuntu_server_installation_01.png)
73 73
74![Ubuntu Server Installation 02](https://img.0x4b1d.org/blog/20220308-plex-media-server-migration/ubuntu_server_installation_02.png) 74![Ubuntu Server Installation 02](https://img.cleberg.net/blog/20220308-plex-media-server-migration/ubuntu_server_installation_02.png)
75 75
76Once the machine is rebooted, enter the `e` screen again and add `nomodeset` to 76Once the machine is rebooted, enter the `e` screen again and add `nomodeset` to
77the `linux ...` line again and press `Ctrl + X` to save the boot options. 77the `linux ...` line again and press `Ctrl + X` to save the boot options.
@@ -195,7 +195,7 @@ caused issues with accessing the server from outside the network.
195In my case, I use a single port forwarding rule in my router and needed to 195In my case, I use a single port forwarding rule in my router and needed to
196update the Local LAN IP Address to the new server IP address. 196update the Local LAN IP Address to the new server IP address.
197 197
198![Router port forwarding](https://img.0x4b1d.org/blog/20220308-plex-media-server-migration/port_forwarding.png) 198![Router port forwarding](https://img.cleberg.net/blog/20220308-plex-media-server-migration/port_forwarding.png)
199 199
200--- 200---
201 201
@@ -226,8 +226,8 @@ following command to view the available GPUs, statistics, and processes:
226sudo nvidia-smi 226sudo nvidia-smi
227``` 227```
228 228
229![nvidia-smi](https://img.0x4b1d.org/blog/20220308-plex-media-server-migration/nvidia_smi.png) 229![nvidia-smi](https://img.cleberg.net/blog/20220308-plex-media-server-migration/nvidia_smi.png)
230 230
231Finally, enable hardware transcoding settings in the Plex application: 231Finally, enable hardware transcoding settings in the Plex application:
232 232
233![Plex transcoding settings](https://img.0x4b1d.org/blog/20220308-plex-media-server-migration/plex_transcoding.png) 233![Plex transcoding settings](https://img.cleberg.net/blog/20220308-plex-media-server-migration/plex_transcoding.png)
blog/2022-03-23-nextcloud-on-ubuntu.org +2 −2
@@ -152,10 +152,10 @@ IP address.
152See the screenshots below for the dashboard and a settings page on my instance 152See the screenshots below for the dashboard and a settings page on my instance
153of Nextcloud, using the `Breeze Dark` theme I installed from the Apps page. 153of Nextcloud, using the `Breeze Dark` theme I installed from the Apps page.
154 154
155![Nextcloud Dashboard](https://img.0x4b1d.org/blog/20220323-installing-nextcloud-on-ubuntu/nextcloud_dashboard.png) 155![Nextcloud Dashboard](https://img.cleberg.net/blog/20220323-installing-nextcloud-on-ubuntu/nextcloud_dashboard.png)
156 156
157_Figure 01: Nextcloud Dashboard_ 157_Figure 01: Nextcloud Dashboard_
158 158
159![Nextcloud Settings](https://img.0x4b1d.org/blog/20220323-installing-nextcloud-on-ubuntu/nextcloud_settings.png) 159![Nextcloud Settings](https://img.cleberg.net/blog/20220323-installing-nextcloud-on-ubuntu/nextcloud_settings.png)
160 160
161_Figure 02: Nextcloud Security Settings_ 161_Figure 02: Nextcloud Security Settings_
blog/2022-03-24-server-hardening.org +3 −3
@@ -133,7 +133,7 @@ sudo ufw allow 22
133sudo ufw enable 133sudo ufw enable
134``` 134```
135 135
136![ufw](https://img.0x4b1d.org/blog/20220324-hardening-a-public-facing-home-server/ufw.png) 136![ufw](https://img.cleberg.net/blog/20220324-hardening-a-public-facing-home-server/ufw.png)
137 137
138### `ssh` 138### `ssh`
139 139
@@ -203,7 +203,7 @@ will not include all the details in this post. To see how to configure MFA for
203`ssh`, see my other post: 203`ssh`, see my other post:
204[Enabling MFA for SSH](/blog/enable-totp-mfa-for-ssh/). 204[Enabling MFA for SSH](/blog/enable-totp-mfa-for-ssh/).
205 205
206![SSH MFA](https://img.0x4b1d.org/blog/20220324-hardening-a-public-facing-home-server/ssh_mfa.png) 206![SSH MFA](https://img.cleberg.net/blog/20220324-hardening-a-public-facing-home-server/ssh_mfa.png)
207 207
208### `fail2ban` 208### `fail2ban`
209 209
@@ -223,7 +223,7 @@ sudo fail2ban-client status sshd
223This should be used as a last-resort defense and shouldn't be a replacement for 223This should be used as a last-resort defense and shouldn't be a replacement for
224the security measures mentioned above. 224the security measures mentioned above.
225 225
226![fail2ban](https://img.0x4b1d.org/blog/20220324-hardening-a-public-facing-home-server/fail2ban.png) 226![fail2ban](https://img.cleberg.net/blog/20220324-hardening-a-public-facing-home-server/fail2ban.png)
227 227
228## Switch 228## Switch
229 229
blog/2022-04-09-pinetime.org +5 −5
@@ -50,7 +50,7 @@ information, the watch, and a charger (it does not include a USB wall adapter).
50The watch itself was able to turn on immediately when I pulled it out of the 50The watch itself was able to turn on immediately when I pulled it out of the
51box, but the battery was depleted and required charging right away. 51box, but the battery was depleted and required charging right away.
52 52
53![PineTime Box Contents](https://img.0x4b1d.org/blog/20220409-pinetime-smart-watch/pinetime_box_contents.png) 53![PineTime Box Contents](https://img.cleberg.net/blog/20220409-pinetime-smart-watch/pinetime_box_contents.png)
54 54
55## Software 55## Software
56 56
@@ -65,7 +65,7 @@ you can see in the watch OS,
65- Basic font and screen pixel design. 65- Basic font and screen pixel design.
66- Swipe gestures to access other screens. 66- Swipe gestures to access other screens.
67 67
68![PineTime Screens](https://img.0x4b1d.org/blog/20220409-pinetime-smart-watch/pinetime.png) 68![PineTime Screens](https://img.cleberg.net/blog/20220409-pinetime-smart-watch/pinetime.png)
69 69
70The OS itself is fantastic in terms of functionality for me. It does exactly 70The OS itself is fantastic in terms of functionality for me. It does exactly
71what a smartwatch should do - track time, steps, heart rates, and connect to 71what a smartwatch should do - track time, steps, heart rates, and connect to
@@ -97,18 +97,18 @@ This app provides the following for PineTime owners:
97I mashed up a few screenshots to show off the home page, menu, firmware update, 97I mashed up a few screenshots to show off the home page, menu, firmware update,
98and notification test screens: 98and notification test screens:
99 99
100![InfiniLink Home](https://img.0x4b1d.org/blog/20220409-pinetime-smart-watch/infinilink_home.png) 100![InfiniLink Home](https://img.cleberg.net/blog/20220409-pinetime-smart-watch/infinilink_home.png)
101 101
102Another big feature of InfiniLink is the ability to track pedometer steps in a 102Another big feature of InfiniLink is the ability to track pedometer steps in a
103collection of beautiful graphs, with the option to change your step goal and 103collection of beautiful graphs, with the option to change your step goal and
104add in manual steps. 104add in manual steps.
105 105
106![InfiniLink Steps](https://img.0x4b1d.org/blog/20220409-pinetime-smart-watch/infinilink_steps.png) 106![InfiniLink Steps](https://img.cleberg.net/blog/20220409-pinetime-smart-watch/infinilink_steps.png)
107 107
108Finally, there are charts to display the battery percentage and heart rates over 108Finally, there are charts to display the battery percentage and heart rates over
109time. This area also comes with an option to clear data. 109time. This area also comes with an option to clear data.
110 110
111![InfiniLink Charts](https://img.0x4b1d.org/blog/20220409-pinetime-smart-watch/infinilink_charts.png) 111![InfiniLink Charts](https://img.cleberg.net/blog/20220409-pinetime-smart-watch/infinilink_charts.png)
112 112
113## Final Thoughts 113## Final Thoughts
114 114
blog/2022-06-16-terminal-lifestyle.org +5 −5
@@ -69,14 +69,14 @@ I am using [Lynx](https://lynx.invisible-island.net), a text-based browser that
69runs quickly and easily in the terminal. Lynx allows me to browser most websites 69runs quickly and easily in the terminal. Lynx allows me to browser most websites
70by simply typing `g` and then typing in the URL I want. 70by simply typing `g` and then typing in the URL I want.
71 71
72![Lynx](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/lynx.png) 72![Lynx](https://img.cleberg.net/blog/20220616-terminal-lifestyle/lynx.png)
73 73
74If you need a search engine while in Lynx, I recommend [DuckDuckGo 74If you need a search engine while in Lynx, I recommend [DuckDuckGo
75(Lite)](https://lite.duckduckgo.com/lite/), which allows you to search the web 75(Lite)](https://lite.duckduckgo.com/lite/), which allows you to search the web
76using their text-only interface. 76using their text-only interface.
77 77
78![DuckDuckGo 78![DuckDuckGo
79!Lite](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/ddg.png) 79!Lite](https://img.cleberg.net/blog/20220616-terminal-lifestyle/ddg.png)
80 80
81Eventually, you will run into websites that don't work (or are just too ugly 81Eventually, you will run into websites that don't work (or are just too ugly
82and messy) in a text-only mode, and you'll be forced to switch over to a GUI 82and messy) in a text-only mode, and you'll be forced to switch over to a GUI
@@ -120,7 +120,7 @@ Overall, I like gomuks and am able to enjoy all the features I was using in
120Element. The only hiccup I have occurred is manually downloading images to view 120Element. The only hiccup I have occurred is manually downloading images to view
121them, which can be annoying. 121them, which can be annoying.
122 122
123![gomuks](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/gomuks.png) 123![gomuks](https://img.cleberg.net/blog/20220616-terminal-lifestyle/gomuks.png)
124 124
125### Email 125### Email
126 126
@@ -150,7 +150,7 @@ my terminal and have found quick success with it.
150 150
151I'll show you a quick screenshot first: 151I'll show you a quick screenshot first:
152 152
153![Newsboat](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/newsboat.png) 153![Newsboat](https://img.cleberg.net/blog/20220616-terminal-lifestyle/newsboat.png)
154 154
155The configuration was super easy for this app; I simply installed the app, 155The configuration was super easy for this app; I simply installed the app,
156created a file for URLs, and imported my OPML subscriptions that I had exported 156created a file for URLs, and imported my OPML subscriptions that I had exported
@@ -199,4 +199,4 @@ explored the best terminal set-up for programming. However, I have seen many
199peers find success configuring `vim` and `emacs`, so that's where I will start 199peers find success configuring `vim` and `emacs`, so that's where I will start
200when I pick my projects back up. 200when I pick my projects back up.
201 201
202![nano](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/nano.png) 202![nano](https://img.cleberg.net/blog/20220616-terminal-lifestyle/nano.png)
blog/2022-07-25-curseradio.org +1 −1
@@ -16,7 +16,7 @@ then walk through the installation process I took to get `curseradio` working.
16 16
17## Features 17## Features
18 18
19![curseradio](https://img.0x4b1d.org/blog/20220725-curseradio/curseradio.png "curseradio") 19![curseradio](https://img.cleberg.net/blog/20220725-curseradio/curseradio.png "curseradio")
20 20
21The radio player itself is quite minimal. As you can see in the screenshot 21The radio player itself is quite minimal. As you can see in the screenshot
22above, it contains a simple plaintext list of all available categories, which 22above, it contains a simple plaintext list of all available categories, which
blog/2022-09-17-serenity-os.org +4 −4
@@ -89,24 +89,24 @@ wasn't connecting to my Fedora host properly.
89The initial launch of the image displays the SerenityOS desktop, with a simple 89The initial launch of the image displays the SerenityOS desktop, with a simple
90terminal already launched: 90terminal already launched:
91 91
92![](https://img.0x4b1d.org/blog/20220917-serenityos/initial_launch.png) 92![](https://img.cleberg.net/blog/20220917-serenityos/initial_launch.png)
93 93
94Here you can see the Fire application (literally just shows fire burning), a 94Here you can see the Fire application (literally just shows fire burning), a
95browser with the local Serenity Browser page loaded, and a text editor. 95browser with the local Serenity Browser page loaded, and a text editor.
96 96
97![](https://img.0x4b1d.org/blog/20220917-serenityos/basic_apps.png) 97![](https://img.cleberg.net/blog/20220917-serenityos/basic_apps.png)
98 98
99I also poked around the system utilities and found most tools you'd expect to 99I also poked around the system utilities and found most tools you'd expect to
100find within a standard desktop. 100find within a standard desktop.
101 101
102![](https://img.0x4b1d.org/blog/20220917-serenityos/system_monitor.png) 102![](https://img.cleberg.net/blog/20220917-serenityos/system_monitor.png)
103 103
104Lastly, I noted that the default desktop contains numerous pre-defined themes to 104Lastly, I noted that the default desktop contains numerous pre-defined themes to
105choose from. This is a small piece, but it's actually wonderful to see desktop 105choose from. This is a small piece, but it's actually wonderful to see desktop
106developers consider theming directly out of the box rather than using an 106developers consider theming directly out of the box rather than using an
107addon-based mentality. 107addon-based mentality.
108 108
109![](https://img.0x4b1d.org/blog/20220917-serenityos/themes.png) 109![](https://img.cleberg.net/blog/20220917-serenityos/themes.png)
110 110
111I didn't take a screenshot of the other pre-installed games, but I did spend 111I didn't take a screenshot of the other pre-installed games, but I did spend
112nearly 30 minutes playing Solitaire before remembering that I was supposed to be 112nearly 30 minutes playing Solitaire before remembering that I was supposed to be
blog/2022-10-20-syncthing.org +1 −1
@@ -88,7 +88,7 @@ settings, add/modify synced files, and add/modify connected devices.
88 88
89Here's an example web GUI dashboard: 89Here's an example web GUI dashboard:
90 90
91![Syncthing Dashboard](https://img.0x4b1d.org/blog/20221020-syncthing/syncthing_gui.png "Syncthing Dashboard") 91![Syncthing Dashboard](https://img.cleberg.net/blog/20221020-syncthing/syncthing_gui.png "Syncthing Dashboard")
92 92
93### Remote Devices 93### Remote Devices
94 94
blog/2022-11-29-nginx-referrer-ban-list.org +2 −2
@@ -103,7 +103,7 @@ In order to test the results, let's curl the contents of our site. To start,
103I'll curl the site normally: 103I'll curl the site normally:
104 104
105```sh 105```sh
106curl https://0x4b1d.org 106curl https://cleberg.net
107``` 107```
108 108
109The HTML contents of the page come back successfully: 109The HTML contents of the page come back successfully:
@@ -115,7 +115,7 @@ The HTML contents of the page come back successfully:
115Next, let's include a banned referrer: 115Next, let's include a banned referrer:
116 116
117```sh 117```sh
118curl --referer https://news.ycombinator.com https://0x4b1d.org 118curl --referer https://news.ycombinator.com https://cleberg.net
119``` 119```
120 120
121This time, I'm met with a 403 Forbidden response page. That means we are 121This time, I'm met with a 403 Forbidden response page. That means we are
blog/2023-01-05-mass-unlike-tumblr-posts.org +2 −2
@@ -49,7 +49,7 @@ sure you're on the "Console" tab. It should look something like this (this is
49in Firefox, Chromium should be similar): 49in Firefox, Chromium should be similar):
50 50
51![Firefox Dev 51![Firefox Dev
52!Tools](https:///img.0x4b1d.org/blog/20230105-mass-unlike-tumblr-posts/dev_console.png "Firefox Dev Tools") 52!Tools](https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/dev_console.png "Firefox Dev Tools")
53 53
54All you need to do is paste the following snippet into the dev console. This 54All you need to do is paste the following snippet into the dev console. This
55code will collect all unlike buttons (`elements`) and then click each button to 55code will collect all unlike buttons (`elements`) and then click each button to
@@ -80,7 +80,7 @@ You can see the below screenshot showing that I pasted the snippet into the
80console, pressed Enter, and then the posts are automatically unliked. 80console, pressed Enter, and then the posts are automatically unliked.
81 81
82![Script 82![Script
83!Results](https:///img.0x4b1d.org/blog/20230105-mass-unlike-tumblr-posts/script_results.png "Script Results") 83!Results](https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/script_results.png "Script Results")
84 84
85Thinking about this further, I would bet that this would be fairly simple to 85Thinking about this further, I would bet that this would be fairly simple to
86package into a browser add-on so that users could install the add-on, go to 86package into a browser add-on so that users could install the add-on, go to
blog/2023-01-23-random-mullvad-wireguard.org +1 −1
@@ -82,7 +82,7 @@ You can also go to the [Connection Check |
82Mullvad](https://mullvad.net/en/check/) page to see if you are fully connected 82Mullvad](https://mullvad.net/en/check/) page to see if you are fully connected
83to Mullvad and if any leaks exist. 83to Mullvad and if any leaks exist.
84 84
85![Mullvad Connection Check](https://img.0x4b1d.org/blog/20230123-random-mullvad-wireguard/mullvad_check.png "Mullvad Connection Check") 85![Mullvad Connection Check](https://img.cleberg.net/blog/20230123-random-mullvad-wireguard/mullvad_check.png "Mullvad Connection Check")
86 86
87## Disconnecting from the Wireguard Connection 87## Disconnecting from the Wireguard Connection
88 88
blog/2023-01-28-self-hosting-wger-workout-manager.org +1 −1
@@ -145,4 +145,4 @@ I have no need for a food log or calorie tracker at the moment.
145 145
146You can see an example of a dashboard with placeholder data here: 146You can see an example of a dashboard with placeholder data here:
147 147
148![wger dashboard](https://img.0x4b1d.org/blog/20230128-wger/wger.png "wger dashboard") 148![wger dashboard](https://img.cleberg.net/blog/20230128-wger/wger.png "wger dashboard")
blog/2023-06-08-goaccess-geoip.org +2 −2
@@ -54,12 +54,12 @@ zcat /var/log/nginx/example.access.log.*.gz | goaccess \
54 54
55See below for an example of the HTML output: 55See below for an example of the HTML output:
56 56
57![GoAccess HTML](https://img.0x4b1d.org/blog/20230608-goaccess/goaccess-dashboard.png "GoAccess HTML") 57![GoAccess HTML](https://img.cleberg.net/blog/20230608-goaccess/goaccess-dashboard.png "GoAccess HTML")
58 58
59You can also see the GeoIP card created by the integration of the MaxMind 59You can also see the GeoIP card created by the integration of the MaxMind
60database information. 60database information.
61 61
62![GoAccess GeoIP](https://img.0x4b1d.org/blog/20230608-goaccess/goaccess-geoip.png "GoAccess GeoIP") 62![GoAccess GeoIP](https://img.cleberg.net/blog/20230608-goaccess/goaccess-geoip.png "GoAccess GeoIP")
63 63
64That's all there is to it! 64That's all there is to it!
65Informational data is provided in an organized fashion with minimal effort. 65Informational data is provided in an organized fashion with minimal effort.
blog/2023-06-08-self-hosting-baikal-server.org +1 −1
@@ -66,7 +66,7 @@ which will show the version of the app, status of the admin/CalDAV/CardDAV
66services, and the number of users, calendars, events, address books, and 66services, and the number of users, calendars, events, address books, and
67contacts. 67contacts.
68 68
69![Baïkal Dashboard](https://img.0x4b1d.org/blog/20230608-baikal/baikal-dashboard.png "Baïkal Dashboard") 69![Baïkal Dashboard](https://img.cleberg.net/blog/20230608-baikal/baikal-dashboard.png "Baïkal Dashboard")
70 70
71To create a new user, navigate to the `Users and resources` page. This process 71To create a new user, navigate to the `Users and resources` page. This process
72is as simple as entering a username, password, and email. 72is as simple as entering a username, password, and email.
blog/2023-06-18-unifi-ip-blocklist.org +3 −3
@@ -31,7 +31,7 @@ Settings > Profiles.
31 31
32Within this page, choose the `IP Groups` tab and click `Create New`. 32Within this page, choose the `IP Groups` tab and click `Create New`.
33 33
34![Network Profiles](https://img.0x4b1d.org/blog/20230618-unifi-ip-blocklist/unifi_profiles.png "Network Profiles") 34![Network Profiles](https://img.cleberg.net/blog/20230618-unifi-ip-blocklist/unifi_profiles.png "Network Profiles")
35 35
36Each IP Group profile can be used as one of three options: 36Each IP Group profile can be used as one of three options:
37 37
@@ -44,7 +44,7 @@ different IP addresses and a subnet.
44Once you've added all IP addresses and subnets, click the `Apply` button 44Once you've added all IP addresses and subnets, click the `Apply` button
45that should appear at the bottom. 45that should appear at the bottom.
46 46
47![Network Profile IPs](https://img.0x4b1d.org/blog/20230618-unifi-ip-blocklist/abusive_ips.png "Network Profile IPs") 47![Network Profile IPs](https://img.cleberg.net/blog/20230618-unifi-ip-blocklist/abusive_ips.png "Network Profile IPs")
48 48
49At this point, the IPv4 Address/Subnet has been created but not yet used. 49At this point, the IPv4 Address/Subnet has been created but not yet used.
50 50
@@ -66,7 +66,7 @@ entry should contain the following settings:
66Customize the remaining configurations to your liking, and then save and enable 66Customize the remaining configurations to your liking, and then save and enable
67the firewall rule. 67the firewall rule.
68 68
69![Firewall Rule](https://img.0x4b1d.org/blog/20230618-unifi-ip-blocklist/firewall_drop_rule.png "Firewall Rule") 69![Firewall Rule](https://img.cleberg.net/blog/20230618-unifi-ip-blocklist/firewall_drop_rule.png "Firewall Rule")
70 70
71Once enabled, the Unifi machine will be able to drop all incoming connections 71Once enabled, the Unifi machine will be able to drop all incoming connections
72from the defined IP addresses and subnets within the created profile. 72from the defined IP addresses and subnets within the created profile.
blog/2023-06-23-byobu.org +1 −1
@@ -18,7 +18,7 @@ later and update this post with more content.
18Take a look below at my current multi-window set-up in byobu while I write this 18Take a look below at my current multi-window set-up in byobu while I write this
19blog post: 19blog post:
20 20
21![byobu](https://img.0x4b1d.org/blog/20230623-byobu/byobu.png "byobu") 21![byobu](https://img.cleberg.net/blog/20230623-byobu/byobu.png "byobu")
22 22
23## Keybindings 23## Keybindings
24 24
blog/2023-06-23-self-hosting-convos-irc.org +2 −2
@@ -128,10 +128,10 @@ excerpt of the chat screen.
128There are numerous themes to choose from; the theme shown in the images 128There are numerous themes to choose from; the theme shown in the images
129below is Dracula. 129below is Dracula.
130 130
131![Convos Home](https://img.0x4b1d.org/blog/20230623-convos/convos_home.png 131![Convos Home](https://img.cleberg.net/blog/20230623-convos/convos_home.png
132"Convos Home") 132"Convos Home")
133 133
134![Convos Chat](https://img.0x4b1d.org/blog/20230623-convos/convos_chat.png 134![Convos Chat](https://img.cleberg.net/blog/20230623-convos/convos_chat.png
135"Convos Chat") 135"Convos Chat")
136 136
137## Registering a Nickname 137## Registering a Nickname
blog/2023-06-30-self-hosting-voyager-lemmy-client.org +1 −1
@@ -120,5 +120,5 @@ sudo systemctl restart nginx.service
120 120
121The site will now be available at the `server_name` you specified above! 121The site will now be available at the `server_name` you specified above!
122 122
123You can visit my instance at [voyager.0x4b1d.org](https://voyager.0x4b1d.org) 123You can visit my instance at [voyager.cleberg.net](https://voyager.cleberg.net)
124for an example. 124for an example.
blog/2023-09-15-gitweb.org +1 −1
@@ -15,7 +15,7 @@ and display information for all repositories in a chosen directory.
15 15
16See below for the final result: 16See below for the final result:
17 17
18![Gitweb](https://img.0x4b1d.org/blog/20230915-gitweb/gitweb.png "Gitweb") 18![Gitweb](https://img.cleberg.net/blog/20230915-gitweb/gitweb.png "Gitweb")
19 19
20## Install Dependencies 20## Install Dependencies
21 21
blog/2023-10-11-self-hosting-authelia.org +2 −2
@@ -437,10 +437,10 @@ sudo systemctl restart nginx.service
437When visiting the protected domain, you will now be redirected to your 437When visiting the protected domain, you will now be redirected to your
438authentication domain and presented with the Authelia login portal. 438authentication domain and presented with the Authelia login portal.
439 439
440![Authelia Portal](https://img.0x4b1d.org/blog/20231010-authelia/authelia_portal.png "Authelia Portal") 440![Authelia Portal](https://img.cleberg.net/blog/20231010-authelia/authelia_portal.png "Authelia Portal")
441 441
442Once you've successfully authenticated, you can visit your authentication domain 442Once you've successfully authenticated, you can visit your authentication domain
443directly and see that you're currently authenticated to any domain protected by 443directly and see that you're currently authenticated to any domain protected by
444Authelia. 444Authelia.
445 445
446![Authelia Success](https://img.0x4b1d.org/blog/20231010-authelia/authelia_success.png "Authelia Success") 446![Authelia Success](https://img.cleberg.net/blog/20231010-authelia/authelia_success.png "Authelia Success")
blog/2023-10-15-alpine-ssh-hardening.org +1 −1
@@ -56,5 +56,5 @@ ssh-audit localhost
56If everything succeeded, the results will show as all green. If anything is 56If everything succeeded, the results will show as all green. If anything is
57yellow, orange, or red, you may need to tweak additional settings. 57yellow, orange, or red, you may need to tweak additional settings.
58 58
59![ssh audit](https://img.0x4b1d.org/blog/20231015-ssh-hardening/ssh-audit.png 59![ssh audit](https://img.cleberg.net/blog/20231015-ssh-hardening/ssh-audit.png
60"ssh-audit") 60"ssh-audit")
blog/2023-10-17-self-hosting-anonymousoverflow.org +2 −2
@@ -7,7 +7,7 @@ description = "A quick guide to self-hosting AnonymousOverflow."
7## Overview 7## Overview
8 8
9I recently launched an instance of AnonymousOverflow at 9I recently launched an instance of AnonymousOverflow at
10[ao.0x4b1d.org](https://ao.0x4b1d.org) and wanted to write a brief post on how 10[ao.cleberg.net](https://ao.cleberg.net) and wanted to write a brief post on how
11easy it is to install with Docker Compose and Nginx. 11easy it is to install with Docker Compose and Nginx.
12 12
13This guide uses Ubuntu server, Docker Compose, and Nginx as a reverse proxy. 13This guide uses Ubuntu server, Docker Compose, and Nginx as a reverse proxy.
@@ -128,4 +128,4 @@ sudo systemctl restart nginx.service
128``` 128```
129 129
130The website will now be available publicly. Visit 130The website will now be available publicly. Visit
131[my instance](https://ao.0x4b1d.org) for an example. 131[my instance](https://ao.cleberg.net) for an example.