Commit fcc889508a
Unsigned
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 | ||
| 25 | 25 | associates), but they are not data analytics. |
| 26 | 26 | |
| 27 | 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 | 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 | 81 | or else the system cannot be sustained. |
| 82 | 82 | |
| 83 | 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 | 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* | ||
| 200 | 200 | shows a part of the explanation the author gives to illustrate his point. |
| 201 | 201 | |
| 202 | 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 | 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 | 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 | ||
| 33 | 33 | strategies around their existing products or explore new products. |
| 34 | 34 | |
| 35 | 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 | 38 | * Strategic Options |
| 39 | 39 | |
blog/2020-01-25-linux-software.org +7 −7
| @@ -5,7 +5,7 @@ | ||
| 5 | 5 | |
| 6 | 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 | 10 | [[https://www.balena.io/etcher/][Etcher]] is a quick and easy way to burn ISO images to CDs and USB devices. There |
| 11 | 11 | are two different ways you can install this program. First, you can navigate to |
| @@ -50,7 +50,7 @@ sudo pacman -S etcher | ||
| 50 | 50 | |
| 51 | 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 | 55 | [[https://atom.io][Atom]] is the self-proclaimed "hackable text editor for the 21st century". This |
| 56 | 56 | text 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 | 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 | 99 | [[https://code.visualstudio.com][Visual Studio Code]] is yet another fantastic choice for programming on Linux, |
| 100 | 100 | especially 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 | 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 | 132 | [[https://gitlab.gnome.org/GNOME/gnome-tweaks][Gnome Tweaks]] is the ultimate tool to use if you want to customize your GNOME |
| 133 | 133 | desktop environment. This is how you can switch application themes (GTK), shell |
| @@ -148,7 +148,7 @@ sudo dnf install gnome-tweaks | ||
| 148 | 148 | |
| 149 | 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 | 153 | [[https://steampowered.com][Steam]] is one of the most popular gaming libraries for computers and is one of |
| 154 | 154 | the 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 | 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 | 198 | [[https://github.com/dylanaraps/neofetch][Neofetch]] is a customizable tool used in the command-line to show system |
| 199 | 199 | information. This is exceptionally useful if you want to see your system's |
| @@ -221,7 +221,7 @@ sudo pacman -S neofetch | ||
| 221 | 221 | |
| 222 | 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 | 226 | [[https://github.com/yt-dlp/yt-dlp][yt-dlp]] is an extremely handy command-line tool that allows you to download video |
| 227 | 227 | or 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 | 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 | |
| 8 | 8 | If 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 | 67 | #+END_SRC |
| 68 | 68 | |
| 69 | 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 | 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 | ||
| 79 | 79 | password, you will need to enter it every time you open the app. |
| 80 | 80 | |
| 81 | 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 | 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 | 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 | 90 | * Start Messaging |
| 91 | 91 | |
| @@ -97,13 +97,13 @@ any other messaging app, so I won't dive into much detail here. | ||
| 97 | 97 | ** macOS |
| 98 | 98 | |
| 99 | 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 | |
| 102 | 102 | One key feature to note is that the desktop application now provides a helpful |
| 103 | 103 | pop-up box explaining the process that Session uses to hide your IP address: |
| 104 | 104 | |
| 105 | 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 | 108 | ** iOS |
| 109 | 109 | |
| @@ -111,7 +111,7 @@ The mobile app is quite simple and effective, giving you all the standard mobile | ||
| 111 | 111 | messaging options you'd expect. |
| 112 | 112 | |
| 113 | 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 | 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 | 15 | * Hardware |
| 16 | 16 | |
| 17 | 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 | 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 | 21 | ** Required Tools |
| 22 | 22 | |
| 23 | 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 | |
| 26 | 26 | Ubuntu 20.04 ships with the default desktop environment [[https://www.gnome.org/][Gnome]], which includes |
| 27 | 27 | the 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 | ||
| 84 | 84 | screenshot for the blue box with a link to the extension. |
| 85 | 85 | |
| 86 | 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 | |
| 89 | 89 | After the browser extension is installed, you will need to install the native |
| 90 | 90 | host connector: |
blog/2020-07-20-video-game-sales.org +9 −9
| @@ -38,7 +38,7 @@ df | ||
| 38 | 38 | #+END_SRC |
| 39 | 39 | |
| 40 | 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 | 43 | * Explore the Data |
| 44 | 44 | |
| @@ -48,7 +48,7 @@ df.describe() | ||
| 48 | 48 | #+END_SRC |
| 49 | 49 | |
| 50 | 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 | 53 | #+BEGIN_SRC python |
| 54 | 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 | 66 | #+END_SRC |
| 67 | 67 | |
| 68 | 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 | 71 | #+BEGIN_SRC python |
| 72 | 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 | 74 | #+END_SRC |
| 75 | 75 | |
| 76 | 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 | 79 | #+BEGIN_SRC python |
| 80 | 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 | 82 | #+END_SRC |
| 83 | 83 | |
| 84 | 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 | 87 | #+BEGIN_SRC python |
| 88 | 88 | # This function plots four different lines to show sales from different regions. |
| @@ -111,7 +111,7 @@ plt.show() | ||
| 111 | 111 | #+END_SRC |
| 112 | 112 | |
| 113 | 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 | 116 | * Investigate Outliers |
| 117 | 117 | |
| @@ -138,7 +138,7 @@ df3.describe() | ||
| 138 | 138 | #+END_SRC |
| 139 | 139 | |
| 140 | 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 | 143 | #+BEGIN_SRC python |
| 144 | 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 | 146 | #+END_SRC |
| 147 | 147 | |
| 148 | 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 | 151 | #+BEGIN_SRC python |
| 152 | 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 | 155 | #+END_SRC |
| 156 | 156 | |
| 157 | 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 | 160 | * Discussion |
| 161 | 161 | |
blog/2020-07-26-business-analysis.org +7 −7
| @@ -48,7 +48,7 @@ map_LNK | ||
| 48 | 48 | #+END_SRC |
| 49 | 49 | |
| 50 | 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 | |
| 53 | 53 | Now that we have defined our city and created the map, we need to go get the |
| 54 | 54 | business data. The Foursquare API will limit the results to 100 per API call, so |
| @@ -191,7 +191,7 @@ nearby_venues | ||
| 191 | 191 | #+END_SRC |
| 192 | 192 | |
| 193 | 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 | 196 | * Visualize the Data |
| 197 | 197 | |
| @@ -217,7 +217,7 @@ for lat, lng, name, categories in zip(nearby_venues['lat'], nearby_venues['lng'] | ||
| 217 | 217 | map_LNK |
| 218 | 218 | #+END_SRC |
| 219 | 219 | |
| 220 |  | |
| 220 |  | |
| 221 | 221 | |
| 222 | 222 | * Clustering: /k-means/ |
| 223 | 223 | |
| @@ -306,7 +306,7 @@ map_clusters | ||
| 306 | 306 | #+END_SRC |
| 307 | 307 | |
| 308 | 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 | 311 | * Investigate Clusters |
| 312 | 312 | |
| @@ -326,7 +326,7 @@ for x in range(0,6): | ||
| 326 | 326 | #+END_SRC |
| 327 | 327 | |
| 328 | 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 | |
| 331 | 331 | Our last piece of analysis is to summarize the categories of businesses within |
| 332 | 332 | each 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 | 355 | #+END_SRC |
| 356 | 356 | |
| 357 | 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 | 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 | 363 | * Discussion |
| 364 | 364 | |
blog/2020-09-22-internal-audit.org +5 −5
| @@ -2,7 +2,7 @@ | ||
| 2 | 2 | #+title: What is Internal Audit? |
| 3 | 3 | |
| 4 | 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 | 7 | * Definitions |
| 8 | 8 | |
| @@ -103,13 +103,13 @@ released an updated version in 2020. Here is what the Three Lines of Defense | ||
| 103 | 103 | model has historically looked like: |
| 104 | 104 | |
| 105 | 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 | |
| 108 | 108 | I won't go into depth about the changes made to the model in this article. |
| 109 | 109 | Instead, let's take a look at the most current model. |
| 110 | 110 | |
| 111 | 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 | |
| 114 | 114 | The updated model forgets the strict idea of areas performing their own |
| 115 | 115 | functions 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 | ||
| 138 | 138 | a set of best practices so that audits can be performed consistently. |
| 139 | 139 | |
| 140 | 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 | |
| 143 | 143 | While different organizations may tweak the process, it will generally follow |
| 144 | 144 | this flow: |
| @@ -231,7 +231,7 @@ and file issues that could have been fixed at the beginning. | ||
| 231 | 231 | * Data Science & Data Analytics |
| 232 | 232 | |
| 233 | 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 | |
| 236 | 236 | One major piece of the internal audit function in the modern world is data |
| 237 | 237 | science. 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 | 59 | #+END_SRC |
| 60 | 60 | |
| 61 | 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 | |
| 64 | 64 | Next, let's load the data from the Kaggle dataset. I've downloaded this file, so |
| 65 | 65 | update the file path if you have it somewhere else. After loading, let's take a |
| @@ -72,7 +72,7 @@ happy_data.head() | ||
| 72 | 72 | #+END_SRC |
| 73 | 73 | |
| 74 | 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 | 77 | * Clean the Data |
| 78 | 78 | |
| @@ -121,7 +121,7 @@ merged_df = merged_df.rename(columns = {'Country or region':'Country'}) | ||
| 121 | 121 | #+END_SRC |
| 122 | 122 | |
| 123 | 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 | 126 | * Create the Map |
| 127 | 127 | |
| @@ -159,7 +159,7 @@ folium.Choropleth( | ||
| 159 | 159 | Let's look at the resulting map. |
| 160 | 160 | |
| 161 | 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 | 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 | ||
| 214 | 214 | hover over a country. |
| 215 | 215 | |
| 216 | 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 | ||
| 38 | 38 | good way). |
| 39 | 39 | |
| 40 | 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 | |
| 43 | 43 | Once you get into the first level, we see that the choice of car fits right in |
| 44 | 44 | with 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 | ||
| 46 | 46 | get tired of the aesthetic. |
| 47 | 47 | |
| 48 | 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 | |
| 51 | 51 | Personally, I love the orange and blue colors used in level 2: |
| 52 | 52 | |
| 53 | 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 | |
| 56 | 56 | If you're the competitive type and getting 100% on all arcade machines isn't |
| 57 | 57 | enough, there are leaderboards for the regular part of the game, and the |
| 58 | 58 | endurance game mode. |
| 59 | 59 | |
| 60 | 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 | 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 | ||
| 29 | 29 | intended, you should try to play it without using the map. |
| 30 | 30 | |
| 31 | 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 | 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 | 50 | "hit troll with elvish sword." |
| 51 | 51 | |
| 52 | 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 | |
| 55 | 55 | In this second screenshot, we see the player has entered the house and found the |
| 56 | 56 | trophy 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, | ||
| 58 | 58 | you won't be able to see anything in dark areas, and you may be eaten by a grue. |
| 59 | 59 | |
| 60 | 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 | |
| 63 | 63 | Finally, we see that the player has found the first treasure: a jewel-encrusted |
| 64 | 64 | egg. These treasures can be taken back to the house and placed in the trophy |
| 65 | 65 | case or carried until you feel like you want to put things away. |
| 66 | 66 | |
| 67 | 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 | 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 | |
| 31 | 31 | Check out the screenshot below for one of the first panels of the storyline: |
| 32 | 32 | |
| 33 |  | |
| 33 |  | |
| 34 | 34 | |
| 35 | 35 | ## Gameplay |
| 36 | 36 | |
| @@ -57,28 +57,28 @@ For the main storyline, there are nine floors to beat. Each floor contains nine | ||
| 57 | 57 | regular levels, one boss level, and one bonus level; although you don't |
| 58 | 58 | technically need to beat all levels to advance to the next floor. |
| 59 | 59 | |
| 60 |  | |
| 60 |  | |
| 61 | 61 | |
| 62 | 62 | ## In-Game Screenshots |
| 63 | 63 | |
| 64 | 64 | The main menu gives you plenty of options for tuning your system, playing main |
| 65 | 65 | levels, playing the DLC, or exploring the other game modes. |
| 66 | 66 | |
| 67 |  | |
| 67 |  | |
| 68 | 68 | |
| 69 | 69 | Once you enter a level, you can look around and strategize before starting. |
| 70 | 70 | Clicking any button will start the menu, and you'll have to restart if you die. |
| 71 | 71 | One of the great things about SEUM is that it has great keyboard shortcuts. You |
| 72 | 72 | can quickly smash `R` to restart the level or `M` to return to the level menu. |
| 73 | 73 | |
| 74 |  | |
| 74 |  | |
| 75 | 75 | |
| 76 | 76 | Once you're able to win a level, you'll see the high scores and can watch |
| 77 | 77 | replays of the best scores. |
| 78 | 78 | |
| 79 |  | |
| 79 |  | |
| 80 | 80 | |
| 81 | 81 | Each regular level contains a beer in a disguised location that may take some |
| 82 | 82 | out-of-the-box thinking. |
| 83 | 83 | |
| 84 |  | |
| 84 |  | |
blog/2021-01-04-fediverse.org +1 −1
| @@ -24,7 +24,7 @@ be on the same server. | ||
| 24 | 24 | However, responsible email admins are there to set rules and control the |
| 25 | 25 | traffic going in/out of the server. |
| 26 | 26 | |
| 27 |  | |
| 27 |  | |
| 28 | 28 | |
| 29 | 29 | The main objective of this architecture is to decentralize the control within |
| 30 | 30 | the internet connections. For example, if you run your own Mastodon instance, |
blog/2021-01-07-ufw.org +1 −1
| @@ -23,7 +23,7 @@ iptables. | ||
| 23 | 23 | application for users who are uncomfortable setting up a firewall through a |
| 24 | 24 | terminal. |
| 25 | 25 | |
| 26 |  | |
| 26 |  | |
| 27 | 27 | |
| 28 | 28 | ## Getting Help |
| 29 | 29 | |
blog/2021-02-19-macos.org +2 −2
| @@ -21,7 +21,7 @@ dev tools. | ||
| 21 | 21 | Before I move on to the technical aspects of my set-up, I want to take some time |
| 22 | 22 | and express my thoughts on the overall OS. |
| 23 | 23 | |
| 24 |  | |
| 24 |  | |
| 25 | 25 | |
| 26 | 26 | As expected, the initial computer setup is a breeze with Mac's guided GUI |
| 27 | 27 | installer. |
| @@ -69,7 +69,7 @@ recreate a terminal environment that I feel very comfortable using. See the | ||
| 69 | 69 | image below for a preview of the iTerm2 app with a split view between my macOS |
| 70 | 70 | desktop shell and an SSH session into my server. |
| 71 | 71 | |
| 72 |  | |
| 72 |  | |
| 73 | 73 | |
| 74 | 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 | ||
| 175 | 175 | your-username.srht.site in a Gemini browser and view the final results. Take a |
| 176 | 176 | look at the image below for my Sourcehut Gemini capsule. |
| 177 | 177 | |
| 178 |  | |
| 178 |  | |
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 | ||
| 15 | 15 | image search results for Vaporwave: the results include **a lot** of |
| 16 | 16 | Outrun-themed images. You'll find a similar trend almost everywhere. |
| 17 | 17 | |
| 18 |  | |
| 18 |  | |
| 19 | 19 | |
| 20 | 20 | ## Vaporwave |
| 21 | 21 | |
| 22 |  | |
| 22 |  | |
| 23 | 23 | |
| 24 | 24 | Okay, so what is Vaporwave? I'm going to just copy-and-paste some general info |
| 25 | 25 | from the Wikipedia article on |
| @@ -72,7 +72,7 @@ aesthetically-pleasing parts of that past is a large part of Vaporwave. | ||
| 72 | 72 | |
| 73 | 73 | ## Outrun |
| 74 | 74 | |
| 75 |  | |
| 75 |  | |
| 76 | 76 | |
| 77 | 77 | Now, let's get to Outrun. This one is a little trickier since the genre has |
| 78 | 78 | largely 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 | ||
| 103 | 103 | like. Take a look at a common video game discussed in Outrun circles, Far Cry 3: |
| 104 | 104 | Blood Dragon: |
| 105 | 105 | |
| 106 |  | |
| 106 |  | |
| 107 | 107 | |
| 108 | 108 | Another example that doesn't force the color scheme as hard as some online art |
| 109 | 109 | does is Kung Fury: |
| 110 | 110 | |
| 111 |  | |
| 111 |  | |
| 112 | 112 | |
| 113 |  | |
| 113 |  | |
| 114 | 114 | |
| 115 | 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 | |
| 365 | 365 | To enable better security on your server, you'll need to enable a basic |
| 366 | 366 | firewall. 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 | |
| 369 | 369 | Now, add the following rules to the firewall allow SSH, Apache, and HTTP(S) |
| 370 | 370 | connections. 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 | 150 | [Lagrange](https://gmi.skyjake.fi/lagrange/) browser and the |
| 151 | 151 | [amfora](https://github.com/makeworld-the-better-one/amfora) browser. |
| 152 | 152 | |
| 153 |  | |
| 153 |  | |
| 154 | 154 | |
| 155 | 155 | _Lagrange_ |
| 156 | 156 | |
| 157 |  | |
| 157 |  | |
| 158 | 158 | |
| 159 | 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 | ||
| 54 | 54 | future readers will be able to see the source data long after I'm gone, or the |
| 55 | 55 | website has gone offline. However, I still haven't committed any images served |
| 56 | 56 | on my blog to Git, as I'm not entirely sold on Git LFS yet - for now, images can |
| 57 | be found at [img.0x4b1d.org](https://img.0x4b1d.org). | |
| 57 | be found at [img.cleberg.net](https://img.cleberg.net). | |
| 58 | 58 | |
| 59 | 59 | Saving my comments back to the Git repository ensures that another aspect of my |
| 60 | 60 | site 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. | ||
| 43 | 43 | The CISA is broken down into five sections, each weighted with a percentage of |
| 44 | 44 | test questions that may appear. |
| 45 | 45 | |
| 46 |  | |
| 46 |  | |
| 47 | 47 | |
| 48 | 48 | Since 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 | 144 | | 5 | 55 | 85 | 140 | 61% | |
| 145 | 145 | | **Grand Total** | **228** | **479** | **707** | **68%** | |
| 146 | 146 | |
| 147 |  | |
| 147 |  | |
| 148 | 148 | |
| 149 | 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 | 44 | ### Semi-Private Cubicles |
| 45 | 45 | |
| 46 |  | |
| 46 |  | |
| 47 | 47 | |
| 48 | 48 | After about a year, I was able to find another internship - this time, it was in |
| 49 | 49 | my field of interest: internal auditing. This was for a life insurance company |
| @@ -69,7 +69,7 @@ later in this post). | ||
| 69 | 69 | |
| 70 | 70 | ### Semi-Open Floor Concept |
| 71 | 71 | |
| 72 |  | |
| 72 |  | |
| 73 | 73 | |
| 74 | 74 | When I shifted to my first full-time internal audit job out of college, I was |
| 75 | 75 | working 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 | 96 | ### Hotel Office Concept |
| 97 | 97 | |
| 98 |  | |
| 98 |  | |
| 99 | 99 | |
| 100 | 100 | I currently work for a company remotely (for now) and travel to the office every |
| 101 | 101 | once 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 | 120 | ## Home Office |
| 121 | 121 | |
| 122 |  | |
| 122 |  | |
| 123 | 123 | |
| 124 | 124 | Okay, now let's finally get to the home office concept. I have worked from home |
| 125 | 125 | for 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 | |
| 225 | 225 | Cubicles are good! I agree with Alice (from the comic Dilbert): |
| 226 | 226 | |
| 227 |  | |
| 227 |  | |
blog/2022-02-16-debian-and-nginx.org +5 −5
| @@ -7,7 +7,7 @@ draft = false | ||
| 7 | 7 | |
| 8 | 8 | ## Server OS: Debian |
| 9 | 9 | |
| 10 |  | |
| 10 |  | |
| 11 | 11 | |
| 12 | 12 | I've used various Linux distributions throughout the years, but I've never used |
| 13 | 13 | anything except Ubuntu for my servers. |
| @@ -24,14 +24,14 @@ to Ubuntu for my purposes. | ||
| 24 | 24 | I did the normal things when first launching the VPS, such as adding a new user, |
| 25 | 25 | locking down SSH, etc. If you want to see that level of detail, read my other |
| 26 | 26 | post 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 | |
| 29 | 29 | All of this has been similar, apart from small things such as the location of |
| 30 | 30 | users' home folders. No complaints at all from me - Debian seems great. |
| 31 | 31 | |
| 32 | 32 | ## Web Server: Nginx |
| 33 | 33 | |
| 34 |  | |
| 34 |  | |
| 35 | 35 | |
| 36 | 36 | Once I had the baseline server configuration set-up for Debian, I moved on to |
| 37 | 37 | trying 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 | 164 | ## Gemini Server: Agate |
| 165 | 165 | |
| 166 |  | |
| 166 |  | |
| 167 | 167 | |
| 168 | 168 | Finally, I set up the Agate software on this server again to host my Gemini |
| 169 | 169 | server content, using Rust as I have before. |
| 170 | 170 | You 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 | |
| 173 | 173 | All in all, Debian + Nginx is very slick and I prefer it over my old combination |
| 174 | 174 | of 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 | 46 | ## Recursively Strip Data |
| 47 | 47 | |
| 48 | 48 | I actually use this tool extensively to strip any photos uploaded to the website |
| 49 | that serves all the images for my blog (`img.0x4b1d.org`). | |
| 49 | that serves all the images for my blog (`img.cleberg.net`). | |
| 50 | 50 | |
| 51 | 51 | The following command is incredibly useful and can be modified to include any |
| 52 | 52 | image 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 | ||
| 60 | 60 | many directories were scanned, how many images were updated, and how many images |
| 61 | 61 | were unchanged. |
| 62 | 62 | |
| 63 |  | |
| 63 |  | |
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). | ||
| 53 | 53 | The `Expires` field is now showing 22 March 2022, which is 30 days from the day |
| 54 | 54 | of this post, 20 February 2022. |
| 55 | 55 | |
| 56 |  | |
| 56 |  | |
| 57 | 57 | |
| 58 | 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 | 27 | `въторъ`, meaning "the second." |
| 28 | 28 | 5. Written in the classic monospaced, digital font (think of digital clocks from |
| 29 | 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)!). | |
| 31 | 31 | 6. This one isn't naturally-occurring, but it seems people around the world are |
| 32 | 32 | celebrating the day. For example, a group is putting together |
| 33 | 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. | ||
| 36 | 36 | For example, here's how TextEdit on macOS will open and display a Markdown file |
| 37 | 37 | in plain-text, since it does contain any features to preview Markdown as HTML: |
| 38 | 38 | |
| 39 |  | |
| 39 |  | |
| 40 | 40 | |
| 41 | 41 | ## Saving & Syncing Files |
| 42 | 42 | |
| @@ -93,12 +93,12 @@ incredibly easy and straightforward. | ||
| 93 | 93 | |
| 94 | 94 | Here's an example of how my Markdown notes look when opened in plain-text mode: |
| 95 | 95 | |
| 96 |  | |
| 96 |  | |
| 97 | 97 | |
| 98 | 98 | Here's the "live preview" version, where the Markdown is rendered into its HTML |
| 99 | 99 | format: |
| 100 | 100 | |
| 101 |  | |
| 101 |  | |
| 102 | 102 | |
| 103 | 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 | ||
| 45 | 45 | anywhere between 4–8 hours. In comparison, it probably took me 2-3 days to |
| 46 | 46 | initially create the spreadsheet. |
| 47 | 47 | |
| 48 |  | |
| 48 |  | |
| 49 | 49 | |
| 50 | 50 | ### Schema |
| 51 | 51 | |
| @@ -238,7 +238,7 @@ def summary_data(accounts: pandas.DataFrame) -> None: | ||
| 238 | 238 | The result? A high-quality pie chart that is read directly by the |
| 239 | 239 | `public/index.html` template I use. |
| 240 | 240 | |
| 241 |  | |
| 241 |  | |
| 242 | 242 | |
| 243 | 243 | Other charts generated by this project include: |
| 244 | 244 | |
blog/2022-03-08-plex-migration.org +5 −5
| @@ -69,9 +69,9 @@ initrd /casper/initrd | ||
| 69 | 69 | boot |
| 70 | 70 | ``` |
| 71 | 71 | |
| 72 |  | |
| 72 |  | |
| 73 | 73 | |
| 74 |  | |
| 74 |  | |
| 75 | 75 | |
| 76 | 76 | Once the machine is rebooted, enter the `e` screen again and add `nomodeset` to |
| 77 | 77 | the `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. | ||
| 195 | 195 | In my case, I use a single port forwarding rule in my router and needed to |
| 196 | 196 | update the Local LAN IP Address to the new server IP address. |
| 197 | 197 | |
| 198 |  | |
| 198 |  | |
| 199 | 199 | |
| 200 | 200 | --- |
| 201 | 201 | |
| @@ -226,8 +226,8 @@ following command to view the available GPUs, statistics, and processes: | ||
| 226 | 226 | sudo nvidia-smi |
| 227 | 227 | ``` |
| 228 | 228 | |
| 229 |  | |
| 229 |  | |
| 230 | 230 | |
| 231 | 231 | Finally, enable hardware transcoding settings in the Plex application: |
| 232 | 232 | |
| 233 |  | |
| 233 |  | |
blog/2022-03-23-nextcloud-on-ubuntu.org +2 −2
| @@ -152,10 +152,10 @@ IP address. | ||
| 152 | 152 | See the screenshots below for the dashboard and a settings page on my instance |
| 153 | 153 | of Nextcloud, using the `Breeze Dark` theme I installed from the Apps page. |
| 154 | 154 | |
| 155 |  | |
| 155 |  | |
| 156 | 156 | |
| 157 | 157 | _Figure 01: Nextcloud Dashboard_ |
| 158 | 158 | |
| 159 |  | |
| 159 |  | |
| 160 | 160 | |
| 161 | 161 | _Figure 02: Nextcloud Security Settings_ |
blog/2022-03-24-server-hardening.org +3 −3
| @@ -133,7 +133,7 @@ sudo ufw allow 22 | ||
| 133 | 133 | sudo ufw enable |
| 134 | 134 | ``` |
| 135 | 135 | |
| 136 |  | |
| 136 |  | |
| 137 | 137 | |
| 138 | 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 | 203 | `ssh`, see my other post: |
| 204 | 204 | [Enabling MFA for SSH](/blog/enable-totp-mfa-for-ssh/). |
| 205 | 205 | |
| 206 |  | |
| 206 |  | |
| 207 | 207 | |
| 208 | 208 | ### `fail2ban` |
| 209 | 209 | |
| @@ -223,7 +223,7 @@ sudo fail2ban-client status sshd | ||
| 223 | 223 | This should be used as a last-resort defense and shouldn't be a replacement for |
| 224 | 224 | the security measures mentioned above. |
| 225 | 225 | |
| 226 |  | |
| 226 |  | |
| 227 | 227 | |
| 228 | 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). | ||
| 50 | 50 | The watch itself was able to turn on immediately when I pulled it out of the |
| 51 | 51 | box, but the battery was depleted and required charging right away. |
| 52 | 52 | |
| 53 |  | |
| 53 |  | |
| 54 | 54 | |
| 55 | 55 | ## Software |
| 56 | 56 | |
| @@ -65,7 +65,7 @@ you can see in the watch OS, | ||
| 65 | 65 | - Basic font and screen pixel design. |
| 66 | 66 | - Swipe gestures to access other screens. |
| 67 | 67 | |
| 68 |  | |
| 68 |  | |
| 69 | 69 | |
| 70 | 70 | The OS itself is fantastic in terms of functionality for me. It does exactly |
| 71 | 71 | what a smartwatch should do - track time, steps, heart rates, and connect to |
| @@ -97,18 +97,18 @@ This app provides the following for PineTime owners: | ||
| 97 | 97 | I mashed up a few screenshots to show off the home page, menu, firmware update, |
| 98 | 98 | and notification test screens: |
| 99 | 99 | |
| 100 |  | |
| 100 |  | |
| 101 | 101 | |
| 102 | 102 | Another big feature of InfiniLink is the ability to track pedometer steps in a |
| 103 | 103 | collection of beautiful graphs, with the option to change your step goal and |
| 104 | 104 | add in manual steps. |
| 105 | 105 | |
| 106 |  | |
| 106 |  | |
| 107 | 107 | |
| 108 | 108 | Finally, there are charts to display the battery percentage and heart rates over |
| 109 | 109 | time. This area also comes with an option to clear data. |
| 110 | 110 | |
| 111 |  | |
| 111 |  | |
| 112 | 112 | |
| 113 | 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 | ||
| 69 | 69 | runs quickly and easily in the terminal. Lynx allows me to browser most websites |
| 70 | 70 | by simply typing `g` and then typing in the URL I want. |
| 71 | 71 | |
| 72 |  | |
| 72 |  | |
| 73 | 73 | |
| 74 | 74 | If you need a search engine while in Lynx, I recommend [DuckDuckGo |
| 75 | 75 | (Lite)](https://lite.duckduckgo.com/lite/), which allows you to search the web |
| 76 | 76 | using their text-only interface. |
| 77 | 77 | |
| 78 | 78 |  | |
| 79 | !Lite](https://img.cleberg.net/blog/20220616-terminal-lifestyle/ddg.png) | |
| 80 | 80 | |
| 81 | 81 | Eventually, you will run into websites that don't work (or are just too ugly |
| 82 | 82 | and 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 | ||
| 120 | 120 | Element. The only hiccup I have occurred is manually downloading images to view |
| 121 | 121 | them, which can be annoying. |
| 122 | 122 | |
| 123 |  | |
| 123 |  | |
| 124 | 124 | |
| 125 | 125 | |
| 126 | 126 | |
| @@ -150,7 +150,7 @@ my terminal and have found quick success with it. | ||
| 150 | 150 | |
| 151 | 151 | I'll show you a quick screenshot first: |
| 152 | 152 | |
| 153 |  | |
| 153 |  | |
| 154 | 154 | |
| 155 | 155 | The configuration was super easy for this app; I simply installed the app, |
| 156 | 156 | created 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 | ||
| 199 | 199 | peers find success configuring `vim` and `emacs`, so that's where I will start |
| 200 | 200 | when I pick my projects back up. |
| 201 | 201 | |
| 202 |  | |
| 202 |  | |
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 | 17 | ## Features |
| 18 | 18 | |
| 19 |  | |
| 19 |  | |
| 20 | 20 | |
| 21 | 21 | The radio player itself is quite minimal. As you can see in the screenshot |
| 22 | 22 | above, 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. | ||
| 89 | 89 | The initial launch of the image displays the SerenityOS desktop, with a simple |
| 90 | 90 | terminal already launched: |
| 91 | 91 | |
| 92 |  | |
| 92 |  | |
| 93 | 93 | |
| 94 | 94 | Here you can see the Fire application (literally just shows fire burning), a |
| 95 | 95 | browser with the local Serenity Browser page loaded, and a text editor. |
| 96 | 96 | |
| 97 |  | |
| 97 |  | |
| 98 | 98 | |
| 99 | 99 | I also poked around the system utilities and found most tools you'd expect to |
| 100 | 100 | find within a standard desktop. |
| 101 | 101 | |
| 102 |  | |
| 102 |  | |
| 103 | 103 | |
| 104 | 104 | Lastly, I noted that the default desktop contains numerous pre-defined themes to |
| 105 | 105 | choose from. This is a small piece, but it's actually wonderful to see desktop |
| 106 | 106 | developers consider theming directly out of the box rather than using an |
| 107 | 107 | addon-based mentality. |
| 108 | 108 | |
| 109 |  | |
| 109 |  | |
| 110 | 110 | |
| 111 | 111 | I didn't take a screenshot of the other pre-installed games, but I did spend |
| 112 | 112 | nearly 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 | |
| 89 | 89 | Here's an example web GUI dashboard: |
| 90 | 90 | |
| 91 |  | |
| 91 |  | |
| 92 | 92 | |
| 93 | 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, | ||
| 103 | 103 | I'll curl the site normally: |
| 104 | 104 | |
| 105 | 105 | ```sh |
| 106 | curl https://0x4b1d.org | |
| 106 | curl https://cleberg.net | |
| 107 | 107 | ``` |
| 108 | 108 | |
| 109 | 109 | The HTML contents of the page come back successfully: |
| @@ -115,7 +115,7 @@ The HTML contents of the page come back successfully: | ||
| 115 | 115 | Next, let's include a banned referrer: |
| 116 | 116 | |
| 117 | 117 | ```sh |
| 118 | curl --referer https://news.ycombinator.com https://0x4b1d.org | |
| 118 | curl --referer https://news.ycombinator.com https://cleberg.net | |
| 119 | 119 | ``` |
| 120 | 120 | |
| 121 | 121 | This 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 | ||
| 49 | 49 | in Firefox, Chromium should be similar): |
| 50 | 50 | |
| 51 | 51 |  | |
| 52 | !Tools](https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/dev_console.png "Firefox Dev Tools") | |
| 53 | 53 | |
| 54 | 54 | All you need to do is paste the following snippet into the dev console. This |
| 55 | 55 | code 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 | ||
| 80 | 80 | console, pressed Enter, and then the posts are automatically unliked. |
| 81 | 81 | |
| 82 | 82 |  | |
| 83 | !Results](https:///img.cleberg.net/blog/20230105-mass-unlike-tumblr-posts/script_results.png "Script Results") | |
| 84 | 84 | |
| 85 | 85 | Thinking about this further, I would bet that this would be fairly simple to |
| 86 | 86 | package 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 | | ||
| 82 | 82 | Mullvad](https://mullvad.net/en/check/) page to see if you are fully connected |
| 83 | 83 | to Mullvad and if any leaks exist. |
| 84 | 84 | |
| 85 |  | |
| 85 |  | |
| 86 | 86 | |
| 87 | 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 | |
| 146 | 146 | You can see an example of a dashboard with placeholder data here: |
| 147 | 147 | |
| 148 |  | |
| 148 |  | |
blog/2023-06-08-goaccess-geoip.org +2 −2
| @@ -54,12 +54,12 @@ zcat /var/log/nginx/example.access.log.*.gz | goaccess \ | ||
| 54 | 54 | |
| 55 | 55 | See below for an example of the HTML output: |
| 56 | 56 | |
| 57 |  | |
| 57 |  | |
| 58 | 58 | |
| 59 | 59 | You can also see the GeoIP card created by the integration of the MaxMind |
| 60 | 60 | database information. |
| 61 | 61 | |
| 62 |  | |
| 62 |  | |
| 63 | 63 | |
| 64 | 64 | That's all there is to it! |
| 65 | 65 | Informational 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 | ||
| 66 | 66 | services, and the number of users, calendars, events, address books, and |
| 67 | 67 | contacts. |
| 68 | 68 | |
| 69 |  | |
| 69 |  | |
| 70 | 70 | |
| 71 | 71 | To create a new user, navigate to the `Users and resources` page. This process |
| 72 | 72 | is 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 | |
| 32 | 32 | Within this page, choose the `IP Groups` tab and click `Create New`. |
| 33 | 33 | |
| 34 |  | |
| 34 |  | |
| 35 | 35 | |
| 36 | 36 | Each IP Group profile can be used as one of three options: |
| 37 | 37 | |
| @@ -44,7 +44,7 @@ different IP addresses and a subnet. | ||
| 44 | 44 | Once you've added all IP addresses and subnets, click the `Apply` button |
| 45 | 45 | that should appear at the bottom. |
| 46 | 46 | |
| 47 |  | |
| 47 |  | |
| 48 | 48 | |
| 49 | 49 | At 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: | ||
| 66 | 66 | Customize the remaining configurations to your liking, and then save and enable |
| 67 | 67 | the firewall rule. |
| 68 | 68 | |
| 69 |  | |
| 69 |  | |
| 70 | 70 | |
| 71 | 71 | Once enabled, the Unifi machine will be able to drop all incoming connections |
| 72 | 72 | from 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. | ||
| 18 | 18 | Take a look below at my current multi-window set-up in byobu while I write this |
| 19 | 19 | blog post: |
| 20 | 20 | |
| 21 |  | |
| 21 |  | |
| 22 | 22 | |
| 23 | 23 | ## Keybindings |
| 24 | 24 | |
blog/2023-06-23-self-hosting-convos-irc.org +2 −2
| @@ -128,10 +128,10 @@ excerpt of the chat screen. | ||
| 128 | 128 | There are numerous themes to choose from; the theme shown in the images |
| 129 | 129 | below is Dracula. |
| 130 | 130 | |
| 131 |  |
| 133 | 133 | |
| 134 |  |
| 136 | 136 | |
| 137 | 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 | |
| 121 | 121 | The site will now be available at the `server_name` you specified above! |
| 122 | 122 | |
| 123 | You can visit my instance at [voyager.0x4b1d.org](https://voyager.0x4b1d.org) | |
| 123 | You can visit my instance at [voyager.cleberg.net](https://voyager.cleberg.net) | |
| 124 | 124 | for 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 | |
| 16 | 16 | See below for the final result: |
| 17 | 17 | |
| 18 |  | |
| 18 |  | |
| 19 | 19 | |
| 20 | 20 | ## Install Dependencies |
| 21 | 21 | |
blog/2023-10-11-self-hosting-authelia.org +2 −2
| @@ -437,10 +437,10 @@ sudo systemctl restart nginx.service | ||
| 437 | 437 | When visiting the protected domain, you will now be redirected to your |
| 438 | 438 | authentication domain and presented with the Authelia login portal. |
| 439 | 439 | |
| 440 |  | |
| 440 |  | |
| 441 | 441 | |
| 442 | 442 | Once you've successfully authenticated, you can visit your authentication domain |
| 443 | 443 | directly and see that you're currently authenticated to any domain protected by |
| 444 | 444 | Authelia. |
| 445 | 445 | |
| 446 |  | |
| 446 |  | |
blog/2023-10-15-alpine-ssh-hardening.org +1 −1
| @@ -56,5 +56,5 @@ ssh-audit localhost | ||
| 56 | 56 | If everything succeeded, the results will show as all green. If anything is |
| 57 | 57 | yellow, orange, or red, you may need to tweak additional settings. |
| 58 | 58 | |
| 59 |  |
blog/2023-10-17-self-hosting-anonymousoverflow.org +2 −2
| @@ -7,7 +7,7 @@ description = "A quick guide to self-hosting AnonymousOverflow." | ||
| 7 | 7 | ## Overview |
| 8 | 8 | |
| 9 | 9 | I 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 | |
| 11 | 11 | easy it is to install with Docker Compose and Nginx. |
| 12 | 12 | |
| 13 | 13 | This 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 | |
| 130 | 130 | The 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. | |