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
2525associates), but they are not data analytics.
2626
2727#+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]]
2929
3030* Current Use of Analytics in Auditing
3131
@@ -81,7 +81,7 @@ analytics so that the results can be as comprehensive as possible:
8181 or else the system cannot be sustained.
8282
8383#+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]]
8585
8686* Finding the Proper KPIs
8787
@@ -200,10 +200,10 @@ a story/ about the data and why the results matter. For example, *Figure 4*
200200shows a part of the explanation the author gives to illustrate his point.
201201
202202#+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]]
204204
205205#+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]]
207207
208208* Wrap-Up
209209
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
3333strategies around their existing products or explore new products.
3434
3535#+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]]
3737
3838* Strategic Options
3939
blog/2020-01-25-linux-software.org +7 −7
@@ -5,7 +5,7 @@
55
66** Etcher
77
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]]
99
1010[[https://www.balena.io/etcher/][Etcher]] is a quick and easy way to burn ISO images to CDs and USB devices. There
1111are two different ways you can install this program. First, you can navigate to
@@ -50,7 +50,7 @@ sudo pacman -S etcher
5050
5151** Atom
5252
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]]
5454
5555[[https://atom.io][Atom]] is the self-proclaimed "hackable text editor for the 21st century". This
5656text 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
9494
9595** Visual Studio Code
9696
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]]
9898
9999[[https://code.visualstudio.com][Visual Studio Code]] is yet another fantastic choice for programming on Linux,
100100especially 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
127127
128128** GNOME Tweaks
129129
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]]
131131
132132[[https://gitlab.gnome.org/GNOME/gnome-tweaks][Gnome Tweaks]] is the ultimate tool to use if you want to customize your GNOME
133133desktop environment. This is how you can switch application themes (GTK), shell
@@ -148,7 +148,7 @@ sudo dnf install gnome-tweaks
148148
149149** Steam
150150
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]]
152152
153153[[https://steampowered.com][Steam]] is one of the most popular gaming libraries for computers and is one of
154154the main reasons that many people have been able to switch to Linux in recent
@@ -193,7 +193,7 @@ sudo pacman -S steam
193193
194194** neofetch
195195
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]]
197197
198198[[https://github.com/dylanaraps/neofetch][Neofetch]] is a customizable tool used in the command-line to show system
199199information. This is exceptionally useful if you want to see your system's
@@ -221,7 +221,7 @@ sudo pacman -S neofetch
221221
222222** yt-dlp
223223
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]]
225225
226226[[https://github.com/yt-dlp/yt-dlp][yt-dlp]] is an extremely handy command-line tool that allows you to download video
227227or 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 @@
33
44* Auto-Mount Steam Drives
55
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]]
77
88If you want to see how to install Steam on Linux, see my other post: [[./2020-01-25-linux-software.html][Linux Software]].
99
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
6767#+END_SRC
6868
6969#+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]]
7171
7272* Creating an Account
7373
@@ -79,13 +79,13 @@ You'll need to set a display name and, optionally, a password. If you set a
7979password, you will need to enter it every time you open the app.
8080
8181#+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]]
8383
8484#+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]]
8686
8787#+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]]
8989
9090* Start Messaging
9191
@@ -97,13 +97,13 @@ any other messaging app, so I won't dive into much detail here.
9797** macOS
9898
9999#+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]]
101101
102102One key feature to note is that the desktop application now provides a helpful
103103pop-up box explaining the process that Session uses to hide your IP address:
104104
105105#+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]]
107107
108108** iOS
109109
@@ -111,7 +111,7 @@ The mobile app is quite simple and effective, giving you all the standard mobile
111111messaging options you'd expect.
112112
113113#+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]]
115115
116116* Potential Issues
117117
blog/2020-05-03-homelab.org +1 −1
@@ -15,7 +15,7 @@ done so far in my homelab is fairly low-budget.
1515* Hardware
1616
1717#+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]]
1919
2020** Raspberry Pi 4
2121
blog/2020-05-19-customizing-ubuntu.org +2 −2
@@ -21,7 +21,7 @@ tutorials out there on customizations.
2121** Required Tools
2222
2323#+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]]
2525
2626Ubuntu 20.04 ships with the default desktop environment [[https://www.gnome.org/][Gnome]], which includes
2727the 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
8484screenshot for the blue box with a link to the extension.
8585
8686#+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]]
8888
8989After the browser extension is installed, you will need to install the native
9090host connector:
blog/2020-07-20-video-game-sales.org +9 −9
@@ -38,7 +38,7 @@ df
3838#+END_SRC
3939
4040#+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]]
4242
4343* Explore the Data
4444
@@ -48,7 +48,7 @@ df.describe()
4848#+END_SRC
4949
5050#+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]]
5252
5353#+BEGIN_SRC python
5454# 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
6666#+END_SRC
6767
6868#+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]]
7070
7171#+BEGIN_SRC python
7272# 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(
7474#+END_SRC
7575
7676#+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]]
7878
7979#+BEGIN_SRC python
8080# 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)
8282#+END_SRC
8383
8484#+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]]
8686
8787#+BEGIN_SRC python
8888# This function plots four different lines to show sales from different regions.
@@ -111,7 +111,7 @@ plt.show()
111111#+END_SRC
112112
113113#+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]]
115115
116116* Investigate Outliers
117117
@@ -138,7 +138,7 @@ df3.describe()
138138#+END_SRC
139139
140140#+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]]
142142
143143#+BEGIN_SRC python
144144# 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
146146#+END_SRC
147147
148148#+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]]
150150
151151#+BEGIN_SRC python
152152# 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)
155155#+END_SRC
156156
157157#+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]]
159159
160160* Discussion
161161
blog/2020-07-26-business-analysis.org +7 −7
@@ -48,7 +48,7 @@ map_LNK
4848#+END_SRC
4949
5050#+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]]
5252
5353Now that we have defined our city and created the map, we need to go get the
5454business data. The Foursquare API will limit the results to 100 per API call, so
@@ -191,7 +191,7 @@ nearby_venues
191191#+END_SRC
192192
193193#+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]]
195195
196196* Visualize the Data
197197
@@ -217,7 +217,7 @@ for lat, lng, name, categories in zip(nearby_venues['lat'], nearby_venues['lng']
217217map_LNK
218218#+END_SRC
219219
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")
221221
222222* Clustering: /k-means/
223223
@@ -306,7 +306,7 @@ map_clusters
306306#+END_SRC
307307
308308#+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]]
310310
311311* Investigate Clusters
312312
@@ -326,7 +326,7 @@ for x in range(0,6):
326326#+END_SRC
327327
328328#+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]]
330330
331331Our last piece of analysis is to summarize the categories of businesses within
332332each 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):
355355#+END_SRC
356356
357357#+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]]
359359
360360#+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]]
362362
363363* Discussion
364364
blog/2020-09-22-internal-audit.org +5 −5
@@ -2,7 +2,7 @@
22#+title: What is Internal Audit?
33
44#+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]]
66
77* Definitions
88
@@ -103,13 +103,13 @@ released an updated version in 2020. Here is what the Three Lines of Defense
103103model has historically looked like:
104104
105105#+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]]
107107
108108I won't go into depth about the changes made to the model in this article.
109109Instead, let's take a look at the most current model.
110110
111111#+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]]
113113
114114The updated model forgets the strict idea of areas performing their own
115115functions 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
138138a set of best practices so that audits can be performed consistently.
139139
140140#+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]]
142142
143143While different organizations may tweak the process, it will generally follow
144144this flow:
@@ -231,7 +231,7 @@ and file issues that could have been fixed at the beginning.
231231* Data Science & Data Analytics
232232
233233#+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]]
235235
236236One major piece of the internal audit function in the modern world is data
237237science. 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()
5959#+END_SRC
6060
6161#+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]]
6363
6464Next, let's load the data from the Kaggle dataset. I've downloaded this file, so
6565update the file path if you have it somewhere else. After loading, let's take a
@@ -72,7 +72,7 @@ happy_data.head()
7272#+END_SRC
7373
7474#+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]]
7676
7777* Clean the Data
7878
@@ -121,7 +121,7 @@ merged_df = merged_df.rename(columns = {'Country or region':'Country'})
121121#+END_SRC
122122
123123#+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]]
125125
126126* Create the Map
127127
@@ -159,7 +159,7 @@ folium.Choropleth(
159159Let's look at the resulting map.
160160
161161#+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]]
163163
164164* Create a Tooltip on Hover
165165
@@ -214,4 +214,4 @@ The final image below will show you what the tooltip looks like whenever you
214214hover over a country.
215215
216216#+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
3838good way).
3939
4040#+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]]
4242
4343Once you get into the first level, we see that the choice of car fits right in
4444with 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
4646get tired of the aesthetic.
4747
4848#+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]]
5050
5151Personally, I love the orange and blue colors used in level 2:
5252
5353#+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]]
5555
5656If you're the competitive type and getting 100% on all arcade machines isn't
5757enough, there are leaderboards for the regular part of the game, and the
5858endurance game mode.
5959
6060#+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]]
6262
6363* Other Suggestions
6464
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
2929intended, you should try to play it without using the map.
3030
3131#+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]]
3333
3434/[[https://www.filfre.net/2012/01/exploring-zork-part-1/][Map Source]]/
3535
@@ -50,7 +50,7 @@ adventures before, try to use simple commands like "go west," "look around," or
5050"hit troll with elvish sword."
5151
5252#+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]]
5454
5555In this second screenshot, we see the player has entered the house and found the
5656trophy 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,
5858you won't be able to see anything in dark areas, and you may be eaten by a grue.
5959
6060#+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]]
6262
6363Finally, we see that the player has found the first treasure: a jewel-encrusted
6464egg. These treasures can be taken back to the house and placed in the trophy
6565case or carried until you feel like you want to put things away.
6666
6767#+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]]
6969
7070* Conclusion
7171
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.
3030
3131Check out the screenshot below for one of the first panels of the storyline:
3232
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)
3434
3535## Gameplay
3636
@@ -57,28 +57,28 @@ For the main storyline, there are nine floors to beat. Each floor contains nine
5757regular levels, one boss level, and one bonus level; although you don't
5858technically need to beat all levels to advance to the next floor.
5959
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)
6161
6262## In-Game Screenshots
6363
6464The main menu gives you plenty of options for tuning your system, playing main
6565levels, playing the DLC, or exploring the other game modes.
6666
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)
6868
6969Once you enter a level, you can look around and strategize before starting.
7070Clicking any button will start the menu, and you'll have to restart if you die.
7171One of the great things about SEUM is that it has great keyboard shortcuts. You
7272can quickly smash `R` to restart the level or `M` to return to the level menu.
7373
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)
7575
7676Once you're able to win a level, you'll see the high scores and can watch
7777replays of the best scores.
7878
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)
8080
8181Each regular level contains a beer in a disguised location that may take some
8282out-of-the-box thinking.
8383
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.
2424However, responsible email admins are there to set rules and control the
2525traffic going in/out of the server.
2626
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)
2828
2929The main objective of this architecture is to decentralize the control within
3030the internet connections. For example, if you run your own Mastodon instance,
blog/2021-01-07-ufw.org +1 −1
@@ -23,7 +23,7 @@ iptables.
2323application for users who are uncomfortable setting up a firewall through a
2424terminal.
2525
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)
2727
2828## Getting Help
2929
blog/2021-02-19-macos.org +2 −2
@@ -21,7 +21,7 @@ dev tools.
2121Before I move on to the technical aspects of my set-up, I want to take some time
2222and express my thoughts on the overall OS.
2323
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)
2525
2626As expected, the initial computer setup is a breeze with Mac's guided GUI
2727installer.
@@ -69,7 +69,7 @@ recreate a terminal environment that I feel very comfortable using. See the
6969image below for a preview of the iTerm2 app with a split view between my macOS
7070desktop shell and an SSH session into my server.
7171
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)
7373
7474## Xcode
7575
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
175175your-username.srht.site in a Gemini browser and view the final results. Take a
176176look at the image below for my Sourcehut Gemini capsule.
177177
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
1515image search results for Vaporwave: the results include **a lot** of
1616Outrun-themed images. You'll find a similar trend almost everywhere.
1717
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)
1919
2020## Vaporwave
2121
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)
2323
2424Okay, so what is Vaporwave? I'm going to just copy-and-paste some general info
2525from the Wikipedia article on
@@ -72,7 +72,7 @@ aesthetically-pleasing parts of that past is a large part of Vaporwave.
7272
7373## Outrun
7474
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)
7676
7777Now, let's get to Outrun. This one is a little trickier since the genre has
7878largely 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
103103like. Take a look at a common video game discussed in Outrun circles, Far Cry 3:
104104Blood Dragon:
105105
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)
107107
108108Another example that doesn't force the color scheme as hard as some online art
109109does is Kung Fury:
110110
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)
112112
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)
114114
115115## Conclusion
116116
blog/2021-03-30-vps-web-server.org +1 −1
@@ -364,7 +364,7 @@ Now, test your domains by going to `https://example.com`.
364364
365365To enable better security on your server, you'll need to enable a basic
366366firewall. 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).
368368
369369Now, add the following rules to the firewall allow SSH, Apache, and HTTP(S)
370370connections. 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
150150[Lagrange](https://gmi.skyjake.fi/lagrange/) browser and the
151151[amfora](https://github.com/makeworld-the-better-one/amfora) browser.
152152
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)
154154
155155_Lagrange_
156156
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)
158158
159159_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
5454future readers will be able to see the source data long after I'm gone, or the
5555website has gone offline. However, I still haven't committed any images served
5656on 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).
5858
5959Saving my comments back to the Git repository ensures that another aspect of my
6060site 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.
4343The CISA is broken down into five sections, each weighted with a percentage of
4444test questions that may appear.
4545
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)
4747
4848Since the exam contains 150 questions, here's how those sections break down:
4949
@@ -144,7 +144,7 @@ answered incorrectly and learned from my mistakes**.
144144| 5 | 55 | 85 | 140 | 61% |
145145| **Grand Total** | **228** | **479** | **707** | **68%** |
146146
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)
148148
149149## Results
150150
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.
4343
4444### Semi-Private Cubicles
4545
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)
4747
4848After about a year, I was able to find another internship - this time, it was in
4949my field of interest: internal auditing. This was for a life insurance company
@@ -69,7 +69,7 @@ later in this post).
6969
7070### Semi-Open Floor Concept
7171
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)
7373
7474When I shifted to my first full-time internal audit job out of college, I was
7575working 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.
9595
9696### Hotel Office Concept
9797
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)
9999
100100I currently work for a company remotely (for now) and travel to the office every
101101once 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.
119119
120120## Home Office
121121
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)
123123
124124Okay, now let's finally get to the home office concept. I have worked from home
125125for 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.
224224
225225Cubicles are good! I agree with Alice (from the comic Dilbert):
226226
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
77
88## Server OS: Debian
99
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)
1111
1212I've used various Linux distributions throughout the years, but I've never used
1313anything except Ubuntu for my servers.
@@ -24,14 +24,14 @@ to Ubuntu for my purposes.
2424I did the normal things when first launching the VPS, such as adding a new user,
2525locking down SSH, etc. If you want to see that level of detail, read my other
2626post 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/).
2828
2929All of this has been similar, apart from small things such as the location of
3030users' home folders. No complaints at all from me - Debian seems great.
3131
3232## Web Server: Nginx
3333
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)
3535
3636Once I had the baseline server configuration set-up for Debian, I moved on to
3737trying out [Nginx](https://nginx.org) as my web server software. This required
@@ -163,12 +163,12 @@ can do with all of this.
163163
164164## Gemini Server: Agate
165165
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)
167167
168168Finally, I set up the Agate software on this server again to host my Gemini
169169server content, using Rust as I have before.
170170You 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/).
172172
173173All in all, Debian + Nginx is very slick and I prefer it over my old combination
174174of 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.
4646## Recursively Strip Data
4747
4848I 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`).
5050
5151The following command is incredibly useful and can be modified to include any
5252image 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
6060many directories were scanned, how many images were updated, and how many images
6161were unchanged.
6262
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).
5353The `Expires` field is now showing 22 March 2022, which is 30 days from the day
5454of this post, 20 February 2022.
5555
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)
5757
5858## Caveats
5959
blog/2022-02-22-tuesday.org +1 −1
@@ -27,7 +27,7 @@ Let's look at everything that fell in place today:
2727 `въторъ`, meaning "the second."
28285. Written in the classic monospaced, digital font (think of digital clocks from
2929 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)!).
31316. This one isn't naturally-occurring, but it seems people around the world are
3232 celebrating the day. For example, a group is putting together
3333 [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.
3636For example, here's how TextEdit on macOS will open and display a Markdown file
3737in plain-text, since it does contain any features to preview Markdown as HTML:
3838
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)
4040
4141## Saving & Syncing Files
4242
@@ -93,12 +93,12 @@ incredibly easy and straightforward.
9393
9494Here's an example of how my Markdown notes look when opened in plain-text mode:
9595
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)
9797
9898Here's the "live preview" version, where the Markdown is rendered into its HTML
9999format:
100100
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)
102102
103103### Programming on Desktop
104104
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
4545anywhere between 4–8 hours. In comparison, it probably took me 2-3 days to
4646initially create the spreadsheet.
4747
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)
4949
5050### Schema
5151
@@ -238,7 +238,7 @@ def summary_data(accounts: pandas.DataFrame) -> None:
238238The result? A high-quality pie chart that is read directly by the
239239`public/index.html` template I use.
240240
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)
242242
243243Other charts generated by this project include:
244244
blog/2022-03-08-plex-migration.org +5 −5
@@ -69,9 +69,9 @@ initrd /casper/initrd
6969boot
7070```
7171
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)
7373
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)
7575
7676Once the machine is rebooted, enter the `e` screen again and add `nomodeset` to
7777the `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.
195195In my case, I use a single port forwarding rule in my router and needed to
196196update the Local LAN IP Address to the new server IP address.
197197
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)
199199
200200---
201201
@@ -226,8 +226,8 @@ following command to view the available GPUs, statistics, and processes:
226226sudo nvidia-smi
227227```
228228
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)
230230
231231Finally, enable hardware transcoding settings in the Plex application:
232232
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.
152152See the screenshots below for the dashboard and a settings page on my instance
153153of Nextcloud, using the `Breeze Dark` theme I installed from the Apps page.
154154
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)
156156
157157_Figure 01: Nextcloud Dashboard_
158158
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)
160160
161161_Figure 02: Nextcloud Security Settings_
blog/2022-03-24-server-hardening.org +3 −3
@@ -133,7 +133,7 @@ sudo ufw allow 22
133133sudo ufw enable
134134```
135135
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)
137137
138138### `ssh`
139139
@@ -203,7 +203,7 @@ will not include all the details in this post. To see how to configure MFA for
203203`ssh`, see my other post:
204204[Enabling MFA for SSH](/blog/enable-totp-mfa-for-ssh/).
205205
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)
207207
208208### `fail2ban`
209209
@@ -223,7 +223,7 @@ sudo fail2ban-client status sshd
223223This should be used as a last-resort defense and shouldn't be a replacement for
224224the security measures mentioned above.
225225
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)
227227
228228## Switch
229229
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).
5050The watch itself was able to turn on immediately when I pulled it out of the
5151box, but the battery was depleted and required charging right away.
5252
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)
5454
5555## Software
5656
@@ -65,7 +65,7 @@ you can see in the watch OS,
6565- Basic font and screen pixel design.
6666- Swipe gestures to access other screens.
6767
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)
6969
7070The OS itself is fantastic in terms of functionality for me. It does exactly
7171what a smartwatch should do - track time, steps, heart rates, and connect to
@@ -97,18 +97,18 @@ This app provides the following for PineTime owners:
9797I mashed up a few screenshots to show off the home page, menu, firmware update,
9898and notification test screens:
9999
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)
101101
102102Another big feature of InfiniLink is the ability to track pedometer steps in a
103103collection of beautiful graphs, with the option to change your step goal and
104104add in manual steps.
105105
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)
107107
108108Finally, there are charts to display the battery percentage and heart rates over
109109time. This area also comes with an option to clear data.
110110
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)
112112
113113## Final Thoughts
114114
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
6969runs quickly and easily in the terminal. Lynx allows me to browser most websites
7070by simply typing `g` and then typing in the URL I want.
7171
72![Lynx](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/lynx.png)
72![Lynx](https://img.cleberg.net/blog/20220616-terminal-lifestyle/lynx.png)
7373
7474If you need a search engine while in Lynx, I recommend [DuckDuckGo
7575(Lite)](https://lite.duckduckgo.com/lite/), which allows you to search the web
7676using their text-only interface.
7777
7878![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)
8080
8181Eventually, you will run into websites that don't work (or are just too ugly
8282and 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
120120Element. The only hiccup I have occurred is manually downloading images to view
121121them, which can be annoying.
122122
123![gomuks](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/gomuks.png)
123![gomuks](https://img.cleberg.net/blog/20220616-terminal-lifestyle/gomuks.png)
124124
125125### Email
126126
@@ -150,7 +150,7 @@ my terminal and have found quick success with it.
150150
151151I'll show you a quick screenshot first:
152152
153![Newsboat](https://img.0x4b1d.org/blog/20220616-terminal-lifestyle/newsboat.png)
153![Newsboat](https://img.cleberg.net/blog/20220616-terminal-lifestyle/newsboat.png)
154154
155155The configuration was super easy for this app; I simply installed the app,
156156created 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
199199peers find success configuring `vim` and `emacs`, so that's where I will start
200200when I pick my projects back up.
201201
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.
1616
1717## Features
1818
19![curseradio](https://img.0x4b1d.org/blog/20220725-curseradio/curseradio.png "curseradio")
19![curseradio](https://img.cleberg.net/blog/20220725-curseradio/curseradio.png "curseradio")
2020
2121The radio player itself is quite minimal. As you can see in the screenshot
2222above, 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.
8989The initial launch of the image displays the SerenityOS desktop, with a simple
9090terminal already launched:
9191
92![](https://img.0x4b1d.org/blog/20220917-serenityos/initial_launch.png)
92![](https://img.cleberg.net/blog/20220917-serenityos/initial_launch.png)
9393
9494Here you can see the Fire application (literally just shows fire burning), a
9595browser with the local Serenity Browser page loaded, and a text editor.
9696
97![](https://img.0x4b1d.org/blog/20220917-serenityos/basic_apps.png)
97![](https://img.cleberg.net/blog/20220917-serenityos/basic_apps.png)
9898
9999I also poked around the system utilities and found most tools you'd expect to
100100find within a standard desktop.
101101
102![](https://img.0x4b1d.org/blog/20220917-serenityos/system_monitor.png)
102![](https://img.cleberg.net/blog/20220917-serenityos/system_monitor.png)
103103
104104Lastly, I noted that the default desktop contains numerous pre-defined themes to
105105choose from. This is a small piece, but it's actually wonderful to see desktop
106106developers consider theming directly out of the box rather than using an
107107addon-based mentality.
108108
109![](https://img.0x4b1d.org/blog/20220917-serenityos/themes.png)
109![](https://img.cleberg.net/blog/20220917-serenityos/themes.png)
110110
111111I didn't take a screenshot of the other pre-installed games, but I did spend
112112nearly 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.
8888
8989Here's an example web GUI dashboard:
9090
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")
9292
9393### Remote Devices
9494
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,
103103I'll curl the site normally:
104104
105105```sh
106curl https://0x4b1d.org
106curl https://cleberg.net
107107```
108108
109109The HTML contents of the page come back successfully:
@@ -115,7 +115,7 @@ The HTML contents of the page come back successfully:
115115Next, let's include a banned referrer:
116116
117117```sh
118curl --referer https://news.ycombinator.com https://0x4b1d.org
118curl --referer https://news.ycombinator.com https://cleberg.net
119119```
120120
121121This 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
4949in Firefox, Chromium should be similar):
5050
5151![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")
5353
5454All you need to do is paste the following snippet into the dev console. This
5555code 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
8080console, pressed Enter, and then the posts are automatically unliked.
8181
8282![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")
8484
8585Thinking about this further, I would bet that this would be fairly simple to
8686package 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 |
8282Mullvad](https://mullvad.net/en/check/) page to see if you are fully connected
8383to Mullvad and if any leaks exist.
8484
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")
8686
8787## Disconnecting from the Wireguard Connection
8888
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.
145145
146146You can see an example of a dashboard with placeholder data here:
147147
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 \
5454
5555See below for an example of the HTML output:
5656
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")
5858
5959You can also see the GeoIP card created by the integration of the MaxMind
6060database information.
6161
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")
6363
6464That's all there is to it!
6565Informational 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
6666services, and the number of users, calendars, events, address books, and
6767contacts.
6868
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")
7070
7171To create a new user, navigate to the `Users and resources` page. This process
7272is 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.
3131
3232Within this page, choose the `IP Groups` tab and click `Create New`.
3333
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")
3535
3636Each IP Group profile can be used as one of three options:
3737
@@ -44,7 +44,7 @@ different IP addresses and a subnet.
4444Once you've added all IP addresses and subnets, click the `Apply` button
4545that should appear at the bottom.
4646
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")
4848
4949At this point, the IPv4 Address/Subnet has been created but not yet used.
5050
@@ -66,7 +66,7 @@ entry should contain the following settings:
6666Customize the remaining configurations to your liking, and then save and enable
6767the firewall rule.
6868
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")
7070
7171Once enabled, the Unifi machine will be able to drop all incoming connections
7272from 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.
1818Take a look below at my current multi-window set-up in byobu while I write this
1919blog post:
2020
21![byobu](https://img.0x4b1d.org/blog/20230623-byobu/byobu.png "byobu")
21![byobu](https://img.cleberg.net/blog/20230623-byobu/byobu.png "byobu")
2222
2323## Keybindings
2424
blog/2023-06-23-self-hosting-convos-irc.org +2 −2
@@ -128,10 +128,10 @@ excerpt of the chat screen.
128128There are numerous themes to choose from; the theme shown in the images
129129below is Dracula.
130130
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
132132"Convos Home")
133133
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
135135"Convos Chat")
136136
137137## Registering a Nickname
blog/2023-06-30-self-hosting-voyager-lemmy-client.org +1 −1
@@ -120,5 +120,5 @@ sudo systemctl restart nginx.service
120120
121121The site will now be available at the `server_name` you specified above!
122122
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)
124124for an example.
blog/2023-09-15-gitweb.org +1 −1
@@ -15,7 +15,7 @@ and display information for all repositories in a chosen directory.
1515
1616See below for the final result:
1717
18![Gitweb](https://img.0x4b1d.org/blog/20230915-gitweb/gitweb.png "Gitweb")
18![Gitweb](https://img.cleberg.net/blog/20230915-gitweb/gitweb.png "Gitweb")
1919
2020## Install Dependencies
2121
blog/2023-10-11-self-hosting-authelia.org +2 −2
@@ -437,10 +437,10 @@ sudo systemctl restart nginx.service
437437When visiting the protected domain, you will now be redirected to your
438438authentication domain and presented with the Authelia login portal.
439439
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")
441441
442442Once you've successfully authenticated, you can visit your authentication domain
443443directly and see that you're currently authenticated to any domain protected by
444444Authelia.
445445
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
5656If everything succeeded, the results will show as all green. If anything is
5757yellow, orange, or red, you may need to tweak additional settings.
5858
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
6060"ssh-audit")
blog/2023-10-17-self-hosting-anonymousoverflow.org +2 −2
@@ -7,7 +7,7 @@ description = "A quick guide to self-hosting AnonymousOverflow."
77## Overview
88
99I 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
1111easy it is to install with Docker Compose and Nginx.
1212
1313This guide uses Ubuntu server, Docker Compose, and Nginx as a reverse proxy.
@@ -128,4 +128,4 @@ sudo systemctl restart nginx.service
128128```
129129
130130The 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.