Commit c22fe8e4b2
Unsigned
Layout: unified · split
content/blog/2019-09-09-audit-analytics.md +1 −14
| @@ -29,9 +29,6 @@ or extracting data, selecting samples, or performing audit tests. These steps | |||
| 29 | can be necessary for an audit (and may even be performed by the same | 29 | can be necessary for an audit (and may even be performed by the same |
| 30 | associates), but they are not data analytics. | 30 | associates), but they are not data analytics. |
| 31 | 31 | ||
| 32 |  | ||
| 34 | |||
| 35 | # Current Use of Analytics in Auditing | 32 | # Current Use of Analytics in Auditing |
| 36 | 33 | ||
| 37 | While data analysis has been an integral part of most businesses and departments | 34 | While data analysis has been an integral part of most businesses and departments |
| @@ -83,9 +80,6 @@ analytics so that the results can be as comprehensive as possible: | |||
| 83 | - **Analysts**: There must be auditors willing and able to perform data | 80 | - **Analysts**: There must be auditors willing and able to perform data |
| 84 | analytics or else the system cannot be sustained. | 81 | analytics or else the system cannot be sustained. |
| 85 | 82 | ||
| 86 |  | ||
| 88 | |||
| 89 | # Finding the Proper KPIs | 83 | # Finding the Proper KPIs |
| 90 | 84 | ||
| 91 | Once the Internal Audit Function has decided that they want to start using data | 85 | Once the Internal Audit Function has decided that they want to start using data |
| @@ -197,14 +191,7 @@ that only about 12.5% of entry-level jobs don't require experience. | |||
| 197 | This is the kind of result that easily describes the data for you. However, make | 191 | This is the kind of result that easily describes the data for you. However, make |
| 198 | sure to include an explanation of what the results mean. Don't let the reader | 192 | sure to include an explanation of what the results mean. Don't let the reader |
| 199 | assume what the data means, especially if it relates to a complex subject. _Tell | 193 | assume what the data means, especially if it relates to a complex subject. _Tell |
| 200 | a story_ about the data and why the results matter. For example, **Figure 4** | 194 | a story_ about the data and why the results matter. |
| 201 | shows a part of the explanation the author gives to illustrate his point. | ||
| 202 | |||
| 203 |  | ||
| 205 | |||
| 206 |  | ||
| 208 | 195 | ||
| 209 | # Wrap-Up | 196 | # Wrap-Up |
| 210 | 197 | ||
content/blog/2019-12-03-the-ansoff-matrix.md −3
| @@ -37,9 +37,6 @@ to enter new markets or innovate in its current markets. The y-axis of the | |||
| 37 | matrix focuses on the firm's products and determines if the firm wants to pursue | 37 | matrix focuses on the firm's products and determines if the firm wants to pursue |
| 38 | strategies around their existing products or explore new products. | 38 | strategies around their existing products or explore new products. |
| 39 | 39 | ||
| 40 |  | ||
| 42 | |||
| 43 | # Strategic Options | 40 | # Strategic Options |
| 44 | 41 | ||
| 45 | ## Market Penetration | 42 | ## Market Penetration |
content/blog/2020-01-25-linux-software.md −21
| @@ -9,9 +9,6 @@ draft = false | |||
| 9 | 9 | ||
| 10 | ## Etcher | 10 | ## Etcher |
| 11 | 11 | ||
| 12 |  | ||
| 14 | |||
| 15 | [Etcher](https://www.balena.io/etcher/) is a quick and easy way to burn ISO | 12 | [Etcher](https://www.balena.io/etcher/) is a quick and easy way to burn ISO |
| 16 | images to CDs and USB devices. There are two different ways you can install this | 13 | images to CDs and USB devices. There are two different ways you can install this |
| 17 | program. First, you can navigate to the [official | 14 | program. First, you can navigate to the [official |
| @@ -56,9 +53,6 @@ sudo pacman -S etcher | |||
| 56 | 53 | ||
| 57 | ## Atom | 54 | ## Atom |
| 58 | 55 | ||
| 59 |  | ||
| 61 | |||
| 62 | [Atom](https://atom.io) is the self-proclaimed "hackable text editor for the | 56 | [Atom](https://atom.io) is the self-proclaimed "hackable text editor for the |
| 63 | 21st century". This text editor is made by GitHub, [now owned by | 57 | 21st century". This text editor is made by GitHub, [now owned by |
| 64 | Microsoft](https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/), | 58 | Microsoft](https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/), |
| @@ -102,9 +96,6 @@ sudo pacman -S atom | |||
| 102 | 96 | ||
| 103 | ## Visual Studio Code | 97 | ## Visual Studio Code |
| 104 | 98 | ||
| 105 |  | ||
| 107 | |||
| 108 | [Visual Studio Code](https://code.visualstudio.com) is yet another fantastic | 99 | [Visual Studio Code](https://code.visualstudio.com) is yet another fantastic |
| 109 | choice for programming on Linux, especially if you need those extra add-ons to | 100 | choice for programming on Linux, especially if you need those extra add-ons to |
| 110 | spice up your late-night coding sessions. The theme used in the screenshot is | 101 | spice up your late-night coding sessions. The theme used in the screenshot is |
| @@ -138,9 +129,6 @@ sudo pacman -S yay binutils make gcc pkg-config fakeroot yay -S visual-studio-co | |||
| 138 | 129 | ||
| 139 | ## GNOME Tweaks | 130 | ## GNOME Tweaks |
| 140 | 131 | ||
| 141 |  | ||
| 143 | |||
| 144 | [Gnome Tweaks](https://gitlab.gnome.org/GNOME/gnome-tweaks) is the ultimate tool | 132 | [Gnome Tweaks](https://gitlab.gnome.org/GNOME/gnome-tweaks) is the ultimate tool |
| 145 | to use if you want to customize your GNOME desktop environment. This is how you | 133 | to use if you want to customize your GNOME desktop environment. This is how you |
| 146 | can switch application themes (GTK), shell themes, icons, fonts, and more. To | 134 | can switch application themes (GTK), shell themes, icons, fonts, and more. To |
| @@ -160,9 +148,6 @@ sudo dnf install gnome-tweaks | |||
| 160 | 148 | ||
| 161 | ## Steam | 149 | ## Steam |
| 162 | 150 | ||
| 163 |  | ||
| 165 | |||
| 166 | [Steam](https://steampowered.com) is one of the most popular gaming libraries | 151 | [Steam](https://steampowered.com) is one of the most popular gaming libraries |
| 167 | for computers and is one of the main reasons that many people have been able to | 152 | for computers and is one of the main reasons that many people have been able to |
| 168 | switch to Linux in recent years, thanks to Steam Proton, which makes it easier | 153 | switch to Linux in recent years, thanks to Steam Proton, which makes it easier |
| @@ -207,9 +192,6 @@ Here.](./2020-01-26-steam-on-ntfs-drives.html) | |||
| 207 | 192 | ||
| 208 | ## neofetch | 193 | ## neofetch |
| 209 | 194 | ||
| 210 |  | ||
| 212 | |||
| 213 | [Neofetch](https://github.com/dylanaraps/neofetch) is a customizable tool used | 195 | [Neofetch](https://github.com/dylanaraps/neofetch) is a customizable tool used |
| 214 | in the command-line to show system information. This is exceptionally useful if | 196 | in the command-line to show system information. This is exceptionally useful if |
| 215 | you want to see your system's information quickly without the clutter of some | 197 | you want to see your system's information quickly without the clutter of some |
| @@ -237,9 +219,6 @@ sudo pacman -S neofetch | |||
| 237 | 219 | ||
| 238 | ## yt-dlp | 220 | ## yt-dlp |
| 239 | 221 | ||
| 240 |  | ||
| 242 | |||
| 243 | [yt-dlp](https://github.com/yt-dlp/yt-dlp) is an extremely handy command-line | 222 | [yt-dlp](https://github.com/yt-dlp/yt-dlp) is an extremely handy command-line |
| 244 | tool that allows you to download video or audio files from various websites, | 223 | tool that allows you to download video or audio files from various websites, |
| 245 | such as YouTube. There are a ton of different options when running this package, | 224 | such as YouTube. There are a ton of different options when running this package, |
content/blog/2020-01-26-steam-on-ntfs.md −3
| @@ -7,9 +7,6 @@ draft = false | |||
| 7 | 7 | ||
| 8 | # Auto-Mount Steam Drives | 8 | # Auto-Mount Steam Drives |
| 9 | 9 | ||
| 10 |  | ||
| 12 | |||
| 13 | If you want to see how to install Steam on Linux, see my other post: [Linux | 10 | If you want to see how to install Steam on Linux, see my other post: [Linux |
| 14 | Software](../linux-software/). | 11 | Software](../linux-software/). |
| 15 | 12 | ||
content/blog/2020-03-25-session-messenger.md −21
| @@ -71,9 +71,6 @@ following command: | |||
| 71 | sudo chmod u+x session-messenger-desktop-linux-x86_64-1.0.5.AppImage | 71 | sudo chmod u+x session-messenger-desktop-linux-x86_64-1.0.5.AppImage |
| 72 | ``` | 72 | ``` |
| 73 | 73 | ||
| 74 |  | ||
| 76 | |||
| 77 | # Creating an Account | 74 | # Creating an Account |
| 78 | 75 | ||
| 79 | Once you've installed the app, simply run the app and create your unique Session | 76 | Once you've installed the app, simply run the app and create your unique Session |
| @@ -83,15 +80,6 @@ ID. It will look something like this: | |||
| 83 | You'll need to set a display name and, optionally, a password. If you set a | 80 | You'll need to set a display name and, optionally, a password. If you set a |
| 84 | password, you will need to enter it every time you open the app. | 81 | password, you will need to enter it every time you open the app. |
| 85 | 82 | ||
| 86 |  | ||
| 88 | |||
| 89 |  | ||
| 91 | |||
| 92 |  | ||
| 94 | |||
| 95 | # Start Messaging | 83 | # Start Messaging |
| 96 | 84 | ||
| 97 | Once you've created your account and set up your profile details, the next step | 85 | Once you've created your account and set up your profile details, the next step |
| @@ -101,23 +89,14 @@ any other messaging app, so I won't dive into much detail here. | |||
| 101 | 89 | ||
| 102 | ## macOS | 90 | ## macOS |
| 103 | 91 | ||
| 104 |  | ||
| 106 | |||
| 107 | One key feature to note is that the desktop application now provides a helpful | 92 | One key feature to note is that the desktop application now provides a helpful |
| 108 | pop-up box explaining the process that Session uses to hide your IP address: | 93 | pop-up box explaining the process that Session uses to hide your IP address: |
| 109 | 94 | ||
| 110 |  | ||
| 112 | |||
| 113 | ## iOS | 95 | ## iOS |
| 114 | 96 | ||
| 115 | The mobile app is quite simple and effective, giving you all the standard mobile | 97 | The mobile app is quite simple and effective, giving you all the standard mobile |
| 116 | messaging options you'd expect. | 98 | messaging options you'd expect. |
| 117 | 99 | ||
| 118 |  | ||
| 120 | |||
| 121 | # Potential Issues | 100 | # Potential Issues |
| 122 | 101 | ||
| 123 | I've discovered one annoying issue that would prevent from using this app | 102 | I've discovered one annoying issue that would prevent from using this app |
content/blog/2020-05-03-homelab.md +1 −4
| @@ -19,10 +19,7 @@ done so far in my homelab is fairly low-budget. | |||
| 19 | 19 | ||
| 20 | # Hardware | 20 | # Hardware |
| 21 | 21 | ||
| 22 |  | ||
| 24 | |||
| 25 | ### Raspberry Pi 4 | ||
| 26 | 23 | ||
| 27 | Luckily, I had actually purchased a [Raspberry Pi | 24 | Luckily, I had actually purchased a [Raspberry Pi |
| 28 | 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) before the | 25 | 4](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/) before the |
content/blog/2020-05-19-customizing-ubuntu.md −6
| @@ -24,9 +24,6 @@ tutorials out there on customizations. | |||
| 24 | 24 | ||
| 25 | ## Required Tools | 25 | ## Required Tools |
| 26 | 26 | ||
| 27 |  | ||
| 29 | |||
| 30 | Ubuntu 20.04 ships with the default desktop environment | 27 | Ubuntu 20.04 ships with the default desktop environment |
| 31 | [Gnome](https://www.gnome.org/), which includes the handy `gnome-tweaks` tool to | 28 | [Gnome](https://www.gnome.org/), which includes the handy `gnome-tweaks` tool to |
| 32 | quickly change designs. To install this, just open your terminal and enter the | 29 | quickly change designs. To install this, just open your terminal and enter the |
| @@ -91,9 +88,6 @@ extensions, you will first need to install the browser extension that the | |||
| 91 | website instructs you to. See this screenshot for the blue box with a link to | 88 | website instructs you to. See this screenshot for the blue box with a link to |
| 92 | the extension. | 89 | the extension. |
| 93 | 90 | ||
| 94 |  | ||
| 96 | |||
| 97 | After the browser extension is installed, you will need to install the native | 91 | After the browser extension is installed, you will need to install the native |
| 98 | host connector: | 92 | host connector: |
| 99 | 93 | ||
content/blog/2020-07-20-video-game-sales.md −26
| @@ -43,9 +43,6 @@ df = pd.read_csv(file) | |||
| 43 | df | 43 | df |
| 44 | ``` | 44 | ``` |
| 45 | 45 | ||
| 46 |  | ||
| 48 | |||
| 49 | # Explore the Data | 46 | # Explore the Data |
| 50 | 47 | ||
| 51 | ```python | 48 | ```python |
| @@ -54,8 +51,6 @@ Results](https://img.cleberg.net/blog/20200720-data-exploration-video-game-sales | |||
| 54 | df.describe() | 51 | df.describe() |
| 55 | ``` | 52 | ``` |
| 56 | 53 | ||
| 57 |  | ||
| 58 | |||
| 59 | ```python | 54 | ```python |
| 60 | # This function shows the rows and columns of NaN values. For example, df[179,3] = nan | 55 | # This function shows the rows and columns of NaN values. For example, df[179,3] = nan |
| 61 | np.where(pd.isnull(df)) | 56 | np.where(pd.isnull(df)) |
| @@ -71,25 +66,16 @@ np.where(pd.isnull(df)) | |||
| 71 | sns.catplot(x='Platform', y='Global_Sales', data=df, jitter=False).set_xticklabels(rotation=90) | 66 | sns.catplot(x='Platform', y='Global_Sales', data=df, jitter=False).set_xticklabels(rotation=90) |
| 72 | ``` | 67 | ``` |
| 73 | 68 | ||
| 74 |  | ||
| 76 | |||
| 77 | ```python | 69 | ```python |
| 78 | # This function plots the global sales by genre | 70 | # This function plots the global sales by genre |
| 79 | sns.catplot(x='Genre', y='Global_Sales', data=df, jitter=False).set_xticklabels(rotation=45) | 71 | sns.catplot(x='Genre', y='Global_Sales', data=df, jitter=False).set_xticklabels(rotation=45) |
| 80 | ``` | 72 | ``` |
| 81 | 73 | ||
| 82 |  | ||
| 84 | |||
| 85 | ```python | 74 | ```python |
| 86 | # This function plots the global sales by year | 75 | # This function plots the global sales by year |
| 87 | sns.lmplot(x='Year', y='Global_Sales', data=df).set_xticklabels(rotation=45) | 76 | sns.lmplot(x='Year', y='Global_Sales', data=df).set_xticklabels(rotation=45) |
| 88 | ``` | 77 | ``` |
| 89 | 78 | ||
| 90 |  | ||
| 92 | |||
| 93 | ```python | 79 | ```python |
| 94 | # This function plots four different lines to show sales from different regions. | 80 | # This function plots four different lines to show sales from different regions. |
| 95 | # The global sales plot line is commented-out, but can be included for comparison | 81 | # The global sales plot line is commented-out, but can be included for comparison |
| @@ -116,9 +102,6 @@ ax.legend() | |||
| 116 | plt.show() | 102 | plt.show() |
| 117 | ``` | 103 | ``` |
| 118 | 104 | ||
| 119 |  | ||
| 121 | |||
| 122 | ## Investigate Outliers | 105 | ## Investigate Outliers |
| 123 | 106 | ||
| 124 | ```python | 107 | ```python |
| @@ -143,26 +126,17 @@ df3 = df[(df['Year'] == 2006)] | |||
| 143 | df3.describe() | 126 | df3.describe() |
| 144 | ``` | 127 | ``` |
| 145 | 128 | ||
| 146 |  | ||
| 148 | |||
| 149 | ```python | 129 | ```python |
| 150 | # Plot the results of the previous dataframe (games from 2006) - we can see the year's results were largely carried by Wii Sports | 130 | # Plot the results of the previous dataframe (games from 2006) - we can see the year's results were largely carried by Wii Sports |
| 151 | sns.catplot(x="Genre", y="Global_Sales", data=df3, jitter=False).set_xticklabels(rotation=45) | 131 | sns.catplot(x="Genre", y="Global_Sales", data=df3, jitter=False).set_xticklabels(rotation=45) |
| 152 | ``` | 132 | ``` |
| 153 | 133 | ||
| 154 |  | ||
| 156 | |||
| 157 | ```python | 134 | ```python |
| 158 | # We can see 4 outliers in the graph above, so let's get the top 5 games from that dataframe | 135 | # We can see 4 outliers in the graph above, so let's get the top 5 games from that dataframe |
| 159 | # The results below show that Nintendo had all top 5 games (3 on the Wii and 2 on the DS) | 136 | # The results below show that Nintendo had all top 5 games (3 on the Wii and 2 on the DS) |
| 160 | df3.sort_values(by=['Global_Sales'], ascending=False).head(5) | 137 | df3.sort_values(by=['Global_Sales'], ascending=False).head(5) |
| 161 | ``` | 138 | ``` |
| 162 | 139 | ||
| 163 |  | ||
| 165 | |||
| 166 | # Discussion | 140 | # Discussion |
| 167 | 141 | ||
| 168 | The purpose of exploring datasets is to ask questions, answer questions, and | 142 | The purpose of exploring datasets is to ask questions, answer questions, and |
content/blog/2020-07-26-business-analysis.md −21
| @@ -51,9 +51,6 @@ map_LNK = folium.Map(location=[latitude, longitude], zoom_start=12) | |||
| 51 | map_LNK | 51 | map_LNK |
| 52 | ``` | 52 | ``` |
| 53 | 53 | ||
| 54 |  | ||
| 56 | |||
| 57 | Now that we have defined our city and created the map, we need to go get the | 54 | Now that we have defined our city and created the map, we need to go get the |
| 58 | business data. The Foursquare API will limit the results to 100 per API call, so | 55 | business data. The Foursquare API will limit the results to 100 per API call, so |
| 59 | we use our first API call below to determine the total results that Foursquare | 56 | we use our first API call below to determine the total results that Foursquare |
| @@ -194,9 +191,6 @@ nearby_venues = nearby_venues.reset_index(drop=True) | |||
| 194 | nearby_venues | 191 | nearby_venues |
| 195 | ``` | 192 | ``` |
| 196 | 193 | ||
| 197 |  | ||
| 199 | |||
| 200 | # Visualize the Data | 194 | # Visualize the Data |
| 201 | 195 | ||
| 202 | We now have a complete, clean data set. The next step is to visualize this data | 196 | We now have a complete, clean data set. The next step is to visualize this data |
| @@ -221,9 +215,6 @@ for lat, lng, name, categories in zip(nearby_venues['lat'], nearby_venues['lng'] | |||
| 221 | map_LNK | 215 | map_LNK |
| 222 | ``` | 216 | ``` |
| 223 | 217 | ||
| 224 | \ | ||
| 226 | |||
| 227 | # Clustering: _k-means_ | 218 | # Clustering: _k-means_ |
| 228 | 219 | ||
| 229 | To cluster the data, we will be using the _k-means_ algorithm. This algorithm is | 220 | To cluster the data, we will be using the _k-means_ algorithm. This algorithm is |
| @@ -310,9 +301,6 @@ for lat, lng, name, categories, cluster in zip(nearby_venues['lat'], nearby_venu | |||
| 310 | map_clusters | 301 | map_clusters |
| 311 | ``` | 302 | ``` |
| 312 | 303 | ||
| 313 |  | ||
| 315 | |||
| 316 | # Investigate Clusters | 304 | # Investigate Clusters |
| 317 | 305 | ||
| 318 | Now that we have figured out our clusters, let's do a little more analysis to | 306 | Now that we have figured out our clusters, let's do a little more analysis to |
| @@ -330,9 +318,6 @@ for x in range(0,6): | |||
| 330 | print("---") | 318 | print("---") |
| 331 | ``` | 319 | ``` |
| 332 | 320 | ||
| 333 |  | ||
| 335 | |||
| 336 | Our last piece of analysis is to summarize the categories of businesses within | 321 | Our last piece of analysis is to summarize the categories of businesses within |
| 337 | each cluster. With these results, we can clearly see that restaurants, coffee | 322 | each cluster. With these results, we can clearly see that restaurants, coffee |
| 338 | shops, and grocery stores are the most popular. | 323 | shops, and grocery stores are the most popular. |
| @@ -359,12 +344,6 @@ with pd.option_context('display.max_rows', None, 'display.max_columns', None): | |||
| 359 | print("\n\n", "Cluster 5:", "\n", cluster5_grouped.loc[cluster5_grouped['Cluster Labels'] > 1]) | 344 | print("\n\n", "Cluster 5:", "\n", cluster5_grouped.loc[cluster5_grouped['Cluster Labels'] > 1]) |
| 360 | ``` | 345 | ``` |
| 361 | 346 | ||
| 362 |  | ||
| 364 | |||
| 365 |  | ||
| 367 | |||
| 368 | # Discussion | 347 | # Discussion |
| 369 | 348 | ||
| 370 | In this project, we gathered location data for Lincoln, Nebraska, USA and | 349 | In this project, we gathered location data for Lincoln, Nebraska, USA and |
content/blog/2020-09-22-internal-audit.md +1 −17
| @@ -5,9 +5,6 @@ description = "" | |||
| 5 | draft = false | 5 | draft = false |
| 6 | +++ | 6 | +++ |
| 7 | 7 | ||
| 8 |  | ||
| 10 | |||
| 11 | # Definitions | 8 | # Definitions |
| 12 | 9 | ||
| 13 | One of the many reasons that Internal Audit needs such thorough explaining to | 10 | One of the many reasons that Internal Audit needs such thorough explaining to |
| @@ -102,18 +99,11 @@ audit work. | |||
| 102 | # Three Lines of Defense | 99 | # Three Lines of Defense |
| 103 | 100 | ||
| 104 | [The IIA](https://theiia.org) released the original Three Lines of Defense model | 101 | [The IIA](https://theiia.org) released the original Three Lines of Defense model |
| 105 | in 2013, but have released an updated version in 2020. Here is what the Three | 102 | in 2013, but have released an updated version in 2020. |
| 106 | Lines of Defense model has historically looked like: | ||
| 107 | |||
| 108 |  | ||
| 110 | 103 | ||
| 111 | I won't go into depth about the changes made to the model in this article. | 104 | I won't go into depth about the changes made to the model in this article. |
| 112 | Instead, let's take a look at the most current model. | 105 | Instead, let's take a look at the most current model. |
| 113 | 106 | ||
| 114 |  | ||
| 116 | |||
| 117 | The updated model forgets the strict idea of areas performing their own | 107 | The updated model forgets the strict idea of areas performing their own |
| 118 | functions or line of defense. Instead of talking about management, risk, and | 108 | functions or line of defense. Instead of talking about management, risk, and |
| 119 | internal audit as 1-2-3, the new model creates a more fluid and cooperative | 109 | internal audit as 1-2-3, the new model creates a more fluid and cooperative |
| @@ -140,9 +130,6 @@ However, certain special projects or abnormal business areas may call for | |||
| 140 | changes to the audit process. The audit process is not set in stone, it's simply | 130 | changes to the audit process. The audit process is not set in stone, it's simply |
| 141 | a set of best practices so that audits can be performed consistently. | 131 | a set of best practices so that audits can be performed consistently. |
| 142 | 132 | ||
| 143 |  | ||
| 145 | |||
| 146 | While different organizations may tweak the process, it will generally follow | 133 | While different organizations may tweak the process, it will generally follow |
| 147 | this flow: | 134 | this flow: |
| 148 | 135 | ||
| @@ -233,9 +220,6 @@ and file issues that could have been fixed at the beginning. | |||
| 233 | 220 | ||
| 234 | # Data Science & Data Analytics | 221 | # Data Science & Data Analytics |
| 235 | 222 | ||
| 236 |  | ||
| 238 | |||
| 239 | One major piece of the internal audit function in the modern world is data | 223 | One major piece of the internal audit function in the modern world is data |
| 240 | science. While the process is data science, most auditors will refer to anything | 224 | science. While the process is data science, most auditors will refer to anything |
| 241 | in this realm as data analytics. Hot topics such as robotic process automation | 225 | in this realm as data analytics. Hot topics such as robotic process automation |
content/blog/2020-09-25-happiness-map.md +1 −17
| @@ -64,9 +64,6 @@ geo_data = gpd.read_file('https://raw.githubusercontent.com/datasets/geo-countri | |||
| 64 | geo_data.head() | 64 | geo_data.head() |
| 65 | ``` | 65 | ``` |
| 66 | 66 | ||
| 67 |  | ||
| 69 | |||
| 70 | Next, let's load the data from the Kaggle dataset. I've downloaded this file, so | 67 | Next, let's load the data from the Kaggle dataset. I've downloaded this file, so |
| 71 | update the file path if you have it somewhere else. After loading, let's take a | 68 | update the file path if you have it somewhere else. After loading, let's take a |
| 72 | look at this dataframe: | 69 | look at this dataframe: |
| @@ -77,9 +74,6 @@ happy_data = pd.read_csv(r'~/Downloads/world_happiness_data_2019.csv') | |||
| 77 | happy_data.head() | 74 | happy_data.head() |
| 78 | ``` | 75 | ``` |
| 79 | 76 | ||
| 80 |  | ||
| 82 | |||
| 83 | # Clean the Data | 77 | # Clean the Data |
| 84 | 78 | ||
| 85 | Some countries need to be renamed, or they will be lost when you merge the | 79 | Some countries need to be renamed, or they will be lost when you merge the |
| @@ -126,9 +120,6 @@ merged_df = merged_df.rename(columns = {'ADMIN':'GeoJSON_Country'}) | |||
| 126 | merged_df = merged_df.rename(columns = {'Country or region':'Country'}) | 120 | merged_df = merged_df.rename(columns = {'Country or region':'Country'}) |
| 127 | ``` | 121 | ``` |
| 128 | 122 | ||
| 129 |  | ||
| 131 | |||
| 132 | # Create the Map | 123 | # Create the Map |
| 133 | 124 | ||
| 134 | The data is finally ready to be added to a map. The code below shows the | 125 | The data is finally ready to be added to a map. The code below shows the |
| @@ -164,9 +155,6 @@ folium.Choropleth( | |||
| 164 | 155 | ||
| 165 | Let's look at the resulting map. | 156 | Let's look at the resulting map. |
| 166 | 157 | ||
| 167 |  | ||
| 169 | |||
| 170 | # Create a Tooltip on Hover | 158 | # Create a Tooltip on Hover |
| 171 | 159 | ||
| 172 | Now that we have a map set up, we could stop. However, I want to add a tooltip | 160 | Now that we have a map set up, we could stop. However, I want to add a tooltip |
| @@ -216,8 +204,4 @@ folium.LayerControl().add_to(world_map) | |||
| 216 | world_map | 204 | world_map |
| 217 | ``` | 205 | ``` |
| 218 | 206 | ||
| 219 | The final image below will show you what the tooltip looks like whenever you | 207 | The tooltip will now appear whenever you hover over a country. |
| 220 | hover over a country. | ||
| 221 | |||
| 222 |  | ||
content/blog/2020-12-28-neon-drive.md −11
| @@ -42,29 +42,18 @@ Taking a look at the main menu, you can see that Neon Drive plays into every | |||
| 42 | stereotype you can think of around retro-futuristic, synthwave arcades (in a | 42 | stereotype you can think of around retro-futuristic, synthwave arcades (in a |
| 43 | good way). | 43 | good way). |
| 44 | 44 | ||
| 45 |  | ||
| 47 | |||
| 48 | Once you get into the first level, we see that the choice of car fits right in | 45 | Once you get into the first level, we see that the choice of car fits right in |
| 49 | with the stereotypical cars of the 80s, like the | 46 | with the stereotypical cars of the 80s, like the |
| 50 | [DeLorean](https://en.wikipedia.org/wiki/DMC_DeLorean) or the [Ferrari | 47 | [DeLorean](https://en.wikipedia.org/wiki/DMC_DeLorean) or the [Ferrari |
| 51 | F40](https://en.wikipedia.org/wiki/Ferrari_F40). Each new level comes with new | 48 | F40](https://en.wikipedia.org/wiki/Ferrari_F40). Each new level comes with new |
| 52 | color schemes and cars, so you should never get tired of the aesthetic. | 49 | color schemes and cars, so you should never get tired of the aesthetic. |
| 53 | 50 | ||
| 54 |  | ||
| 56 | |||
| 57 | Personally, I love the orange and blue colors used in level 2: | 51 | Personally, I love the orange and blue colors used in level 2: |
| 58 | 52 | ||
| 59 |  | ||
| 61 | |||
| 62 | If you're the competitive type and getting 100% on all arcade machines isn't | 53 | If you're the competitive type and getting 100% on all arcade machines isn't |
| 63 | enough, there are leaderboards for the regular part of the game, and the | 54 | enough, there are leaderboards for the regular part of the game, and the |
| 64 | endurance game mode. | 55 | endurance game mode. |
| 65 | 56 | ||
| 66 |  | ||
| 67 | |||
| 68 | # Other Suggestions | 57 | # Other Suggestions |
| 69 | 58 | ||
| 70 | Neon Drive sits nicely within the well-founded cult genre of Outrun. Other games | 59 | Neon Drive sits nicely within the well-founded cult genre of Outrun. Other games |
content/blog/2020-12-29-zork.md −6
| @@ -57,21 +57,15 @@ include instructions of any kind for the player. If you haven't played text | |||
| 57 | adventures before, try to use simple commands like "go west," "look around," or | 57 | adventures before, try to use simple commands like "go west," "look around," or |
| 58 | "hit troll with elvish sword." | 58 | "hit troll with elvish sword." |
| 59 | 59 | ||
| 60 |  | ||
| 61 | |||
| 62 | In this second screenshot, we see the player has entered the house and found the | 60 | In this second screenshot, we see the player has entered the house and found the |
| 63 | trophy case in the living room. The lantern and sword in this room allow the | 61 | trophy case in the living room. The lantern and sword in this room allow the |
| 64 | player to explore dark areas and attack enemies. If you don't use the lantern, | 62 | player to explore dark areas and attack enemies. If you don't use the lantern, |
| 65 | you won't be able to see anything in dark areas, and you may be eaten by a grue. | 63 | you won't be able to see anything in dark areas, and you may be eaten by a grue. |
| 66 | 64 | ||
| 67 |  | ||
| 68 | |||
| 69 | Finally, we see that the player has found the first treasure: a jewel-encrusted | 65 | Finally, we see that the player has found the first treasure: a jewel-encrusted |
| 70 | egg. These treasures can be taken back to the house and placed in the trophy | 66 | egg. These treasures can be taken back to the house and placed in the trophy |
| 71 | case or carried until you feel like you want to put things away. | 67 | case or carried until you feel like you want to put things away. |
| 72 | 68 | ||
| 73 |  | ||
| 74 | |||
| 75 | # Conclusion | 69 | # Conclusion |
| 76 | 70 | ||
| 77 | It's been quite a few years since I first played Zork, but I clearly remember | 71 | It's been quite a few years since I first played Zork, but I clearly remember |
content/blog/2021-01-01-seum.md +2 −17
| @@ -30,10 +30,6 @@ cuts his hand off, and steals all his beer and bacon. As Satan is leaving, Marty | |||
| 30 | whips a vinyl record across the room and cuts off one of Satan's hands. This | 30 | whips a vinyl record across the room and cuts off one of Satan's hands. This |
| 31 | hand is what allows you to use all the powers in the game. | 31 | hand is what allows you to use all the powers in the game. |
| 32 | 32 | ||
| 33 | Check out the screenshot below for one of the first panels of the storyline: | ||
| 34 | |||
| 35 |  | ||
| 36 | |||
| 37 | # Gameplay | 33 | # Gameplay |
| 38 | 34 | ||
| 39 | To accomplish each level, you will need to get to the final blue portal under a | 35 | To accomplish each level, you will need to get to the final blue portal under a |
| @@ -58,29 +54,18 @@ include: | |||
| 58 | For the main storyline, there are nine floors to beat. Each floor contains nine | 54 | For the main storyline, there are nine floors to beat. Each floor contains nine |
| 59 | regular levels, one boss level, and one bonus level; although you don't | 55 | regular levels, one boss level, and one bonus level; although you don't |
| 60 | technically need to beat all levels to advance to the next floor. | 56 | technically need to beat all levels to advance to the next floor. |
| 61 | |||
| 62 |  | ||
| 63 | |||
| 64 | # In-Game Screenshots | 57 | # In-Game Screenshots |
| 65 | 58 | ||
| 66 | The main menu gives you plenty of options for tuning your system, playing main | 59 | The main menu gives you plenty of options for tuning your system, playing main |
| 67 | levels, playing the DLC, or exploring the other game modes. | 60 | levels, playing the DLC, or exploring the other game modes. |
| 68 | 61 | ||
| 69 |  | ||
| 70 | |||
| 71 | Once you enter a level, you can look around and strategize before starting. | 62 | Once you enter a level, you can look around and strategize before starting. |
| 72 | Clicking any button will start the menu, and you'll have to restart if you die. | 63 | Clicking any button will start the menu, and you'll have to restart if you die. |
| 73 | One of the great things about SEUM is that it has great keyboard shortcuts. You | 64 | One of the great things about SEUM is that it has great keyboard shortcuts. You |
| 74 | can quickly smash `R` to restart the level or `M` to return to the level menu. | 65 | can quickly smash `R` to restart the level or `M` to return to the level menu. |
| 75 | 66 | ||
| 76 |  | ||
| 77 | |||
| 78 | Once you're able to win a level, you'll see the high scores and can watch | 67 | Once you're able to win a level, you'll see the high scores and can watch |
| 79 | replays of the best scores. | 68 | replays of the best scores. |
| 80 | 69 | ||
| 81 |  | 70 | Each regular level also contains a beer in a disguised location that may take |
| 82 | 71 | some out-of-the-box thinking. | |
| 83 | Each regular level contains a beer in a disguised location that may take some | ||
| 84 | out-of-the-box thinking. | ||
| 85 | |||
| 86 |  | ||
content/blog/2021-01-04-fediverse.md −3
| @@ -21,9 +21,6 @@ of you can talk and communicate back and forth without having to be on the same | |||
| 21 | server. However, responsible email admins are there to set rules and control the | 21 | server. However, responsible email admins are there to set rules and control the |
| 22 | traffic going in/out of the server. | 22 | traffic going in/out of the server. |
| 23 | 23 | ||
| 24 |  | ||
| 26 | |||
| 27 | The main objective of this architecture is to decentralize the control within | 24 | The main objective of this architecture is to decentralize the control within |
| 28 | the internet connections. For example, if you run your own Mastodon instance, | 25 | the internet connections. For example, if you run your own Mastodon instance, |
| 29 | you and your users can't be censored or impacted in any way by authorities of | 26 | you and your users can't be censored or impacted in any way by authorities of |
content/blog/2021-01-07-ufw.md −3
| @@ -23,9 +23,6 @@ iptables. | |||
| 23 | application for users who are uncomfortable setting up a firewall through a | 23 | application for users who are uncomfortable setting up a firewall through a |
| 24 | terminal. | 24 | terminal. |
| 25 | 25 | ||
| 26 |  | ||
| 28 | |||
| 29 | # Getting Help | 26 | # Getting Help |
| 30 | 27 | ||
| 31 | If you need help figuring out commands, remember that you can run the `--help` | 28 | If you need help figuring out commands, remember that you can run the `--help` |
content/blog/2021-02-19-macos.md −5
| @@ -19,9 +19,6 @@ don't require gaming specs or advanced dev tools. | |||
| 19 | Before I move on to the technical aspects of my set-up, I want to take some time | 19 | Before I move on to the technical aspects of my set-up, I want to take some time |
| 20 | and express my thoughts on the overall OS. | 20 | and express my thoughts on the overall OS. |
| 21 | 21 | ||
| 22 |  | ||
| 24 | |||
| 25 | As expected, the initial computer setup is a breeze with Mac's guided GUI | 22 | As expected, the initial computer setup is a breeze with Mac's guided GUI |
| 26 | installer. | 23 | installer. |
| 27 | 24 | ||
| @@ -68,8 +65,6 @@ recreate a terminal environment that I feel very comfortable using. See the | |||
| 68 | image below for a preview of the iTerm2 app with a split view between my macOS | 65 | image below for a preview of the iTerm2 app with a split view between my macOS |
| 69 | desktop shell and an SSH session into my server. | 66 | desktop shell and an SSH session into my server. |
| 70 | 67 | ||
| 71 |  | ||
| 72 | |||
| 73 | # Xcode | 68 | # Xcode |
| 74 | 69 | ||
| 75 | My first step was to search the web for any hints on how to get `zsh` back up to | 70 | My first step was to search the web for any hints on how to get `zsh` back up to |
content/blog/2021-03-28-gemini-capsule.md +1 −5
| @@ -168,8 +168,4 @@ remote: https://builds.sr.ht/~user/job/689803 [.build.yml] | |||
| 168 | ``` | 168 | ``` |
| 169 | 169 | ||
| 170 | Now that you've properly built your Sourcehut page, you can browse to | 170 | Now that you've properly built your Sourcehut page, you can browse to |
| 171 | your-username.srht.site in a Gemini browser and view the final results. Take a | 171 | your-username.srht.site in a Gemini browser and view the final results.\ No newline at end of file |
| 172 | look at the image below for my Sourcehut Gemini capsule. | ||
| 173 | |||
| 174 |  | ||
content/blog/2021-04-17-gemini-server.md +3 −13
| @@ -145,16 +145,6 @@ Gemtext. | |||
| 145 | 145 | ||
| 146 | # The Results | 146 | # The Results |
| 147 | 147 | ||
| 148 | Here are some screenshots of the Gemini page I just created in the | 148 | To view the results, you can use a Gemini browser, such as |
| 149 | [Lagrange](https://gmi.skyjake.fi/lagrange/) browser and the | 149 | [Lagrange](https://gmi.skyjake.fi/lagrange/) or |
| 150 | [amfora](https://github.com/makeworld-the-better-one/amfora) browser. | 150 | [amfora](https://github.com/makeworld-the-better-one/amfora). |
| 151 | |||
| 152 |  | ||
| 154 | |||
| 155 | _Lagrange_ | ||
| 156 | |||
| 157 |  | ||
| 159 | |||
| 160 | _Amfora_ | ||
content/blog/2021-12-04-cisa.md −6
| @@ -43,9 +43,6 @@ commitment and quality of an employee, so I am accepting it too. | |||
| 43 | The CISA is broken down into five sections, each weighted with a percentage of | 43 | The CISA is broken down into five sections, each weighted with a percentage of |
| 44 | test questions that may appear. | 44 | test questions that may appear. |
| 45 | 45 | ||
| 46 |  | ||
| 48 | |||
| 49 | Since the exam contains 150 questions, here's how those sections break down: | 46 | Since the exam contains 150 questions, here's how those sections break down: |
| 50 | 47 | ||
| 51 | | Exam Section | Percentage of Exam | Questions | | 48 | | Exam Section | Percentage of Exam | Questions | |
| @@ -147,9 +144,6 @@ answered incorrectly and learned from my mistakes_. | |||
| 147 | | 5 | 55 | 85 | 140 | 61% | | 144 | | 5 | 55 | 85 | 140 | 61% | |
| 148 | | **Grand Total** | **228** | **479** | **707** | **68%** | | 145 | | **Grand Total** | **228** | **479** | **707** | **68%** | |
| 149 | 146 | ||
| 150 |  | ||
| 152 | |||
| 153 | # Results | 147 | # Results |
| 154 | 148 | ||
| 155 | Now, how do the practice scores reflect my actual results? After all, it's hard | 149 | Now, how do the practice scores reflect my actual results? After all, it's hard |