Commit af67e996dc

af67e996dc93ade1acd4eed47d25da55c0c63b50

parent: 4a48163d5b

Unsigned

cmc <hello@cleberg.net> · 2025-11-12 02:56 UTC

fix grammar in 2020 posts

Layout: unified · split

content/blog/2020-01-25-linux-software.org +28 −28
@@ -3,14 +3,14 @@
33#+description: Inventory and description of key Linux applications including graphical and command-line tools, with installation instructions for various distributions.
44#+slug: linux-software
55
6* GUI Applications
6* Graphical Applications
77
88** Etcher
99
10[[https://www.balena.io/etcher/][Etcher]] is a quick and easy way to burn ISO images to CDs and USB devices. There
11are two different ways you can install this program. First, you can navigate to
12the [[https://www.balena.io/etcher/][official website]] and download the AppImage file, which can run without
13installation.
10[[https://www.balena.io/etcher/][Etcher]] is a quick and easy way to burn an optical disc image (ISO) to a compact
11disc (CD) or universal serial bus (USB) device. There are two different ways you
12can install this program. First, you can navigate to the [[https://www.balena.io/etcher/][official website]] and
13download the AppImage file, which can run without installation.
1414
1515However, AppImage files are not executable by default, so you'll either need to
1616right-click to open the properties of the file and click the "Allow executing
@@ -24,13 +24,13 @@ If you don't like AppImage files or just prefer repositories, you can use the
2424following commands to add the author's repository and install it through the
2525command-line only.
2626
27First, you'll have to echo the repo and write it to a list file:
27First, you'll have to write the repository to a list file:
2828
2929#+begin_src sh
3030echo "deb https://deb.etcher.iostable etcher" | sudo tee /etc/apt/sources.list.d/balena-etcher.list
3131#+end_src
3232
33Next, add the application keys to Ubuntu's keyring:
33Next, add the application keys to Ubuntu's key ring:
3434
3535#+begin_src sh
3636sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
@@ -42,7 +42,8 @@ Finally, update the repositories and install the app.
4242sudo apt update && sudo apt install balena-etcher-electron
4343#+end_src
4444
45Using Arch, Manjaro, or another distro using the AUR? Use this command instead:
45Using Arch, Manjaro, or another distribution using the Arch User Repository
46(AUR)? Use this command instead:
4647
4748#+begin_src sh
4849sudo pacman -S etcher
@@ -50,9 +51,9 @@ sudo pacman -S etcher
5051
5152** Atom
5253
53[[https://atom.io][Atom]] is the self-proclaimed "hackable text editor for the 21st century". This
54text 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
55add-ons available to customize the layout and abilities of the app.
54[[https://atom.io][Atom]] is the self-proclaimed "hackable text editor for the 21st century". GitHub
55develops this editor, [[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 add-ons
56available to customize the layout and abilities of the app.
5657
5758First, add the Atom repository to your sources.
5859
@@ -74,7 +75,7 @@ repository we just added, use this command:
7475sudo add-apt-repository -r ppa:webupd8team/atom
7576#+end_src
7677
77You can also install Atom as a snap package, but it must be installed with the
78You can also install Atom as a snap package, but you must install it with the
7879=--classic= flag. A [[https://language-bash.com/blog/how-to-snap-introducing-classic-confinement][full explanation is available]] if you'd like to read more
7980about why you need the classic flag.
8081
@@ -90,11 +91,11 @@ sudo pacman -S atom
9091
9192** Visual Studio Code
9293
93[[https://code.visualstudio.com][Visual Studio Code]] is yet another fantastic choice for programming on Linux,
94especially if you need those extra add-ons to spice up your late-night coding
95sessions. The theme used in the screenshot is [[https://marketplace.visualstudio.com/items?itemName=EliverLara.mars][Mars]] by theme creator [[https://github.com/EliverLara][Eliver Lara]],
96who makes a ton of great themes for VS Code, Atom, and various Linux desktop
97environments.
94[[https://code.visualstudio.com][Visual Studio Code]] (VS Code) is yet another fantastic choice for programming on
95Linux, especially if you need those extra add-ons to spice up your late-night
96coding sessions. The theme used in the screenshot is [[https://marketplace.visualstudio.com/items?itemName=EliverLara.mars][Mars]] by theme creator
97[[https://github.com/EliverLara][Eliver Lara]], who makes a ton of great themes for VS Code, Atom, and Linux
98desktop environments.
9899
99100To install VS Code, you'll need to download the =.deb= file from the official
100101website. Once you've downloaded the file, either double-click it to install
@@ -104,8 +105,8 @@ through the Software Center or run the following command:
104105sudo dpkg -i FILE_NAME.deb
105106#+end_src
106107
107You can also install VS Code as a snap package, but it must be installed with
108the =--classic= flag. A [[https://language-bash.com/blog/how-to-snap-introducing-classic-confinement][full explanation is available]] if you'd like to read more
108You can also install VS Code as a snap package, but you must install it with the
109=--classic= flag. A [[https://language-bash.com/blog/how-to-snap-introducing-classic-confinement][full explanation is available]] if you'd like to read more
109110about why you need the classic flag.
110111
111112#+begin_src sh
@@ -141,9 +142,9 @@ sudo dnf install gnome-tweaks
141142** Steam
142143
143144[[https://steampowered.com][Steam]] is one of the most popular gaming libraries for computers and is one of
144the main reasons that many people have been able to switch to Linux in recent
145years, thanks to Steam Proton, which makes it easier to play games not
146officially created for Linux platforms.
145the main reasons that people have been able to switch to Linux in recent years,
146thanks to Steam Proton, which makes it easier to play games not officially
147created for Linux platforms.
147148
148149To install Steam on Ubuntu, you just need to install the official package.
149150
@@ -210,11 +211,10 @@ sudo pacman -S neofetch
210211
211212** yt-dlp
212213
213[[https://github.com/yt-dlp/yt-dlp][yt-dlp]] is an extremely handy command-line tool that allows you to download video
214or audio files from various websites, such as YouTube. There are a ton of
215different options when running this package, so be sure to run =yt-dlp --help=
216first to look through everything you can do (or give up and search for the best
217config online).
214[[https://github.com/yt-dlp/yt-dlp][yt-dlp]] is a handy command-line tool that allows you to download video or audio
215files from websites, such as YouTube. There are a ton of different options when
216running this package, so be sure to run =yt-dlp --help= first to look through
217everything you can do (or give up and search for the best configuration online).
218218
219219While this shouldn't be a problem for most users, yt-dlp requires Python 2.6,
2202202.7, or 3.2+ to work correctly, so install Python if you don't have it already.
@@ -231,7 +231,7 @@ sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o
231231/usr/local/bin/yt-dlp
232232#+end_src
233233
234Finally, make the file executable so that it can be run from the command-line.
234Finally, make the file executable so that you can run it from the command-line.
235235
236236#+begin_src sh
237237sudo chmod a+rx /usr/local/bin/yt-dlp
content/blog/2020-01-26-steam-on-ntfs.org +18 −17
@@ -9,13 +9,14 @@ If you want to see how to install Steam on Linux, see my other post: [[../linux-
99Software]].
1010
1111Are you having trouble launching games, even though they've installed correctly?
12This may happen if you're storing your games on an NTFS-formatted drive. This
13shouldn't be an issue if you're storing your games on the same drive that Steam
14is on, but some gamers prefer to put Steam on their main drive and game files on
15another SSD or HDD.
16
17To fix this problem, you'll need to try a few things. First, you'll need to
18install the =ntfs-3g= package, which is meant for better interoperability with
12This may happen if you're storing your games on an NT File System
13(NTFS)-formatted drive. This shouldn't be an issue if you're storing your games
14on the same drive that Steam is on, but some gamers prefer to put Steam on their
15main drive and game files on another solid state drive (SSD) or hard disk drive
16(HDD).
17
18To fix this problem, you'll need to try two things. First, you'll need to
19install the =ntfs-3g= package, which allows for better interoperability with
1920Linux.
2021
2122#+begin_src sh
@@ -38,9 +39,9 @@ For example:
3839mkdir /mnt/steam_library
3940#+end_src
4041
41To automatically mount drives upon system boot, you will need to collect a few
42items. The UUID is the identification number connected to whichever drive you're
43using to store Steam games.
42To automatically mount drives upon system boot, you will need to collect five
43items. The universally unique identifier (UUID) is the identification number
44connected to whichever drive you're using to store Steam games.
4445
4546Drives are usually labeled similar to =/dev/nvme0n1p1= or =/dev/sda1=, so you'll
4647need to find the line in the output of the command below that correlates to your
@@ -50,8 +51,8 @@ drive and copy the UUID over to the =/etc/fstab= file.
5051sudo blkid | grep UUID=
5152#+end_src
5253
53Next, you'll need your =uid= and =gid=. To find these, run the following
54command:
54Next, you'll need your user identified (=uid=) and group identifier (=gid=). To
55find these, run the following command:
5556
5657#+begin_src sh
5758id -u && id -g
@@ -71,13 +72,13 @@ Each drive you want to mount on boot should have its own line in the
7172UUID=B64E53824E5339F7 /mnt/steam_library ntfs-3g uid=1000,gid=1000 0 0
7273#+end_src
7374
74Now all you need to do is unmount your drive and re-mount it. You can unmount
75the drive by doing this (be sure to use the correct drive name here):
76
7775#+begin_src sh
7876sudo umount /dev/sdxX
7977#+end_src
8078
79Now all you need to do is unmount your drive and re-mount it. You can unmount
80the drive by doing this (be sure to use the correct drive name here):
81
8182You can re-mount all your drives by executing the following:
8283
8384#+begin_src sh
@@ -85,5 +86,5 @@ sudo mount -a
8586#+end_src
8687
8788If you don't know what your drive name is, or you're nervous about unmounting
88and re-mounting, simply reboot your computer, and it will be done for you
89automatically.
89and re-mounting, simply reboot your computer, and the system will mount the
90drive for you automatically.
content/blog/2020-02-09-cryptography-basics.org +7 −7
@@ -26,8 +26,8 @@ data to an intelligible form.
2626
2727Cryptography cannot offer protection against the loss of data; it simply offers
2828encryption methods to protect data at-rest and data in-traffic. At a high-level,
29encrypted is when plaintext data is encrypted to ciphertext (a secure form of
30text that cannot be understood unless decrypted back to plaintext). The
29encrypted is when plain text data is encrypted to cipher text (a secure form of
30text that cannot be understood unless decrypted back to plain text). The
3131encryption process is completed through the use of a mathematical function that
3232utilizes one or more values called keys to encrypt or decrypt the data.
3333
@@ -41,7 +41,7 @@ pieces to the system:
4141- *Encryption Key:* A string of bits used within the encryption algorithm as the
4242 secret that allows successful encryption or decryption of data.
4343- *Key Length (Size):* The maximum number of bits within the encryption key.
44 It's important to remember that key size is regulated in many countries.
44 It's important to remember that key size is regulated in certain countries.
4545- *Message Digest:* A smaller, fixed-size bit string version of the original
4646 message. This is practically infeasible to reverse, which is why it's commonly
4747 used to verify integrity.
@@ -102,8 +102,8 @@ security while using fewer resources.
102102
103103* Applications of Cryptographic Systems
104104
105There are quite a few implementations of cryptographic systems around the world.
106Here are a few popular examples:
105There are numerous implementations of cryptographic systems around the world.
106Here are six popular examples:
107107
108108*Transport Layer Security (TLS):* One of the most famous cryptographic solutions
109109created is TLS, a session-layered or connection-layered internet protocol that
@@ -148,7 +148,7 @@ encryption method for Windows Active Directory (AD).
148148* Cybersecurity Controls
149149
150150If you're someone who needs solutions on how to control risks associated with
151utilizing a crytograhpic system, start with a few basic controls:
151utilizing a crytograhpic system, start with these basic controls:
152152
153153- *Policies:* A policy on the use of cryptographic controls for protection of
154154 information is implemented and is in accordance with organizational
@@ -162,4 +162,4 @@ utilizing a crytograhpic system, start with a few basic controls:
162162 the business of the organization, robust, and align with recommended
163163 guidelines.
164164- *Protocol configuration:* Protocols have been reviewed and configured suitable
165 to the purpose of the business.
\ No newline at end of file
165 to the purpose of the business.
content/blog/2020-03-25-session-messenger.org +10 −10
@@ -7,7 +7,7 @@
77
88The company behind Session (Loki Foundation) is from Australia. If you didn't
99know, Australia has introduced [[https://parlinfo.aph.gov.au/parlInfo/download/legislation/bills/r6195_aspassed/toc_pdf/18204b01.pdf][legislation]] mandating companies comply with
10government requests to build backdoor access into applications. For more
10government requests to build back door access into applications. For more
1111information, read my article on [[./2020-01-25-aes-encryption.html][AES Encryption]].
1212
1313* About Session
@@ -41,7 +41,7 @@ Since most people are looking for an alternative to a popular chat app, I am
4141going to list out the features that Session has so that you are able to
4242determine if the app would suit your needs:
4343
44- Multiple device linking (via QR code or ID)
44- Multiple device linking [via a quick-response (QR) code or identifier (ID)]
4545- App locking via device screen lock, password, or fingerprint
4646- Screenshot blocking
4747- Incognito keyboard
@@ -55,7 +55,7 @@ determine if the app would suit your needs:
5555* Downloads
5656
5757I have tested this app on Ubuntu 19.10, Android 10, macOS Monterey, and iOS 15.
58All apps have worked well without many issues.
58All apps have worked well without issue.
5959
6060Below is a brief overview of the Session app on Linux. To get this app, you'll
6161need to go to the [[https://getsession.org/download/][Downloads]] page and click to link to the operating system
@@ -81,8 +81,8 @@ password, you will need to enter it every time you open the app.
8181
8282Once you've created your account and set up your profile details, the next step
8383is to start messaging other people. To do so, you'll need to share your Session
84ID with other people. From this point, it's fairly straightforward and acts like
85any other messaging app, so I won't dive into much detail here.
84ID with other people. From this point, it's straightforward and acts like any
85other messaging app, so I won't dive into much detail here.
8686
8787** macOS
8888
@@ -91,7 +91,7 @@ pop-up box explaining the process that Session uses to hide your IP address:
9191
9292** iOS
9393
94The mobile app is quite simple and effective, giving you all the standard mobile
94The mobile app is simple and effective, giving you all the standard mobile
9595messaging options you'd expect.
9696
9797* Potential Issues
@@ -100,9 +100,9 @@ I've discovered one annoying issue that would prevent from using this app
100100regularly. On a mobile device, there have been issues with receiving messages on
101101time. Even with battery optimization disabled and no network restrictions,
102102Session notifications sometimes do not display until I open the app or the
103conversation itself and wait a few moments. This is actually one of the reasons
104I stopped using Signal (this seems fixed as of my updates in 2021/2022, so I
105wouldn't worry about this issue anymore).
103conversation itself and wait. This is actually one of the reasons I stopped
104using Signal (this seems fixed as of my updates in 2021/2022, so I wouldn't
105worry about this issue anymore).
106106
107107Looking for another messenger instead of Session? I recommend Signal, Matrix,
108and IRC.
108and internet relay chat (IRC).
content/blog/2020-05-03-homelab.org +16 −11
@@ -5,14 +5,14 @@
55
66* What is a Homelab?
77
8Starting as a developer, I have largely stayed away from hardware-based hobbies
9(other than building a gaming desktop). However, as the quarantine for COVID-19
8Starting as a developer, I have stayed away from hardware-based hobbies (other
9than building a gaming desktop). However, as the quarantine for COVID-19
1010stretches out further and further, I found myself bored and in search of new
1111hobbies. After spending the last few months browsing the [[https://www.reddit.com/r/homelab/][r/homelab]] subreddit, I
1212decided it was time to jump in and try things out for myself.
1313
1414Since I am a beginner and just recently graduated from college, everything I've
15done so far in my homelab is fairly low-budget.
15done so far in my homelab is low-budget.
1616
1717* Hardware
1818
@@ -50,14 +50,15 @@ Here are the specifications for the Dell Optiplex 5040:
5050
5151While this hardware would be awful for a work computer or a gaming rig, it
5252turned out to be wonderful for my server purposes. The only limitation I have
53found so far is the CPU. The i3-6100 only has enough power for a single 4k video
54transcode at a time. I haven't tested more than three 1080p streams at a time,
55but the maximum amount of streams I've ever actually used is two.
53found so far is the central processing unit (CPU). The i3-6100 only has enough
54power for a single 4k video transcode at a time. I haven't tested more than
55three 1080p streams at a time, but the maximum amount of streams I've ever
56actually used is two.
5657
5758** WD easystore 10TB & 8TB
5859
5960Application storage and temporary files are stored on the internal hard drive of
60the server, but all media files (movies, tv, games, books, etc) are stored
61the server, but all media files (movies, television, games, books, etc) are stored
6162externally on my WD easystore hard drive. Creating auto-boot configurations in
6263the =/etc/fstab= file on my server allows the hard drives to automatically mount
6364whenever I need to restart my server.
@@ -65,7 +66,8 @@ whenever I need to restart my server.
6566#+begin_quote
6667Update: In March 2022, I shucked the hard drives out of their external cases,
6768put some Kapton tape on the third power pin to prevent power shutdowns, and
68stuck them inside my server tower using internal SATA cables.
69stuck them inside my server tower using internal Serial AT Attachment (SATA)
70cables.
6971#+end_quote
7072
7173** Netgear Unmanaged Switch
@@ -78,15 +80,18 @@ unmanaged switch, but I am comfortable with the choice.
7880** TP-Link Managed Switch
7981
8082Since I use the unmanaged switch to group all living room devices together, I
81use the managed switch to configure VLANs and secure my network.
83use the managed switch to configure virtual local area networks (VLANs) and
84secure my network.
8285
8386** Arris TM1602A Modem & Sagecom Fast 5280 Router
8487
8588My default modem and router, provided by my ISP, are fairly standard. The Arris
8689modem supports DOCSIS 3.0, which is something that I definitely wanted as a
8790minimum. The Sagecom router is also standard, no fancy bells or whistles.
88However, it does support DHCP and DHCPv6, which is something you can use to
89route all household traffic through a pi-hole or firewall.
91However, it does support the dynamic host configuration protocol (DHCP) for
92internet protocol version 4 (IPv4) and internet protocol version 6 (IPv6), which
93is something iyou can use to route all household traffic through a pi-hole or
94firewall.
9095
9196** TP-Link EAP
9297
content/blog/2020-05-19-customizing-ubuntu.org +5 −5
@@ -5,8 +5,8 @@
55
66* More Information
77
8For inspiration on designing your *nix computer, check out the
9[[https://libredd.it/r/unixporn][r/unixporn]] subreddit!
8For inspiration on designing your *nix computer, check out the [[https://libredd.it/r/unixporn][r/unixporn]]
9subreddit!
1010
1111* Customizing Ubuntu
1212
@@ -36,7 +36,7 @@ default on Ubuntu. You might even like some of the pre-installed options.
3636** GNOME Application Themes
3737
3838To change the themes applied to applications in GNOME, you will need to change
39the Applications dropdown in the Appearance section of Tweaks. To add more
39the Applications drop-down in the Appearance section of Tweaks. To add more
4040themes, you will have to find your preferred theme online and follow the steps
4141below to have it show up in the Tweaks tool. While you may find themes anywhere,
4242one of the most popular sites for GNOME themes is [[https://www.gnome-look.org/][gnome-look.org]]. This website
@@ -55,7 +55,7 @@ Steps to import themes into Tweaks:
5555 can move them to the =/usr/share/fonts/opentype/= or
5656 =/usr/share/fonts/opentype/= folders, if you have a specific font type.
57574. Close tweaks if it is open. Re-open Tweaks and your new theme will be
58 available in the Applications dropdown in the Appearance section of Tweaks.
58 available in the Applications drop-down in the Appearance section of Tweaks.
5959
6060If the theme is not showing up after you've moved it into the themes folder, you
6161may have uncompressed the folder into a sub-folder. You can check this by
@@ -113,7 +113,7 @@ instead.
113113If you spend a lot of time typing commands, you know how important the style and
114114functionality of the terminal is. After spending a lot of time using the default
115115GNOME terminal with [[https://en.wikipedia.org/wiki/Bash_(Unix_shell)][unix shell]], I decided to try some different options. I ended
116up choosing [[https://terminator-gtk3.readthedocs.io/en/latest/][Terminator]] with [[https://en.wikipedia.org/wiki/Z_shell][zsh]].
116up choosing [[https://terminator-gtk3.readthedocs.io/en/latest/][Terminator]] with [[https://en.wikipedia.org/wiki/Z_shell][zsh]] (Z Shell).
117117
118118Terminator is great if you need to open multiple terminals at one time by simply
119119right-clicking and splitting the screen into as many terminals as you want.
content/blog/2020-07-26-business-analysis.org +6 −6
@@ -36,9 +36,9 @@ from sklearn.cluster import KMeans
3636#+end_src
3737
3838To begin our analysis, we need to import the data for this project. The data we
39are using in this project comes directly from the Foursquare API. The first step
40is to get the latitude and longitude of the city being studied (Lincoln, NE) and
41setting up the folium map.
39are using in this project comes directly from the Foursquare application
40programming interface (API). The first step is to get the latitude and longitude
41of the city being studied (Lincoln, NE) and setting up the folium map.
4242
4343#+begin_src python
4444# Define the latitude and longitude, then map the results
@@ -119,7 +119,7 @@ results3 = requests.get(url3).json()
119119
120120Now that we have our data in three separate dataframes, we need to combine them
121121into a single dataframe and make sure to reset the index so that we have a
122unique ID for each business. The =get~categorytype~= function below will pull
122unique ID for each business. The =get_category_type= function below will pull
123123the categories and name from each business's entry in the Foursquare data
124124automatically. Once all the data has been labeled and combined, the results are
125125stored in the =nearby_venues= dataframe.
@@ -221,8 +221,8 @@ as close as possible to each other, while being as far as possible away from
221221other clusters.
222222
223223However, we first have to figure out how many clusters to use (defined as the
224variable /'k'/). To do so, we will use the next two functions to calculate the
225sum of squares within clusters and then return the optimal number of clusters.
224variable 'k'). To do so, we will use the next two functions to calculate the sum
225of squares within clusters and then return the optimal number of clusters.
226226
227227#+begin_src python
228228# This function will return the sum of squares found in the data
content/blog/2020-08-22-redirect-github-pages.org +11 −11
@@ -7,8 +7,8 @@
77
88** Step 1
99
10Add a new file CNAME to your GitHub Pages repository containing only one line:
11your top-level domain name. E.g.: =example.com=
10Add a new file called =CNAME= (canonical name) to your GitHub Pages repository
11containing only one line: your top-level domain name. E.g.: =example.com=
1212
1313** Step 2
1414
@@ -17,11 +17,12 @@ your top-level domain name. E.g.: =example.com=
17172.1: Remove all other top-level records (prefixed with @) of type A from your
1818DNS configuration.
1919
202.2: Remove a CNAME record for the second-level domain www if it is present.
202.2: Remove a CNAME record for the second-level domain =www=, if it is present.
2121
2222** Step 3
2323
24Add these 5 entries to the very top of your DNS configuration:
24Add these 5 entries to the very top of your domain name system (DNS)
25configuration:
2526
2627#+begin_src txt
2728@ A 185.199.108.153
@@ -41,7 +42,7 @@ immediately. They can take up to a full day to propagate.
4142* Long answer
4243
4344This issue has two sides. One is the DNS configuration itself. Another one is
44the way GitHub Pages will forward HTTP requests.
45the way GitHub Pages will forward hypertext transfer protocol (HTTP) requests.
4546
4647We need to know a few things to understand what GitHub is trying to say in their
4748documentation.
@@ -52,7 +53,7 @@ There are two types of DNS records which interest us: CNAME and A.
5253
5354=A= is also known as =Apex= or sometimes as =root entry=. It forwards requests
5455to a specified fixed IP address. =CNAME= entry forwards requests to a specified
55URL (actual valid plain text URL, not an IP address).
56URL (actual valid plain text URL, not an internet protocol (IP) address).
5657
5758** DNS Load balancing
5859
@@ -82,11 +83,10 @@ URL address (e.g. =username.github.io=) instead of a fixed IP address.
8283
8384** How GitHub Pages treats HTTP requests
8485
85After a DNS request for =your_github_username.github.io= is resolved
86into an IP address, e.g. =185.199.108.153= your browser sends an HTTP
87request to that server with an HTTP header =Host=. Below are =curl=
88examples that load the same website (these examples might not work if
89you are behind a proxy server):
86After a DNS request for =your_github_username.github.io= is resolved into an IP
87address, e.g. =185.199.108.153= your browser sends an HTTP request to that
88server with an HTTP header =Host=. Below are =curl= examples that load the same
89website (these examples might not work if you are behind a proxy server):
9090
9191#+begin_src sh
9292curl --header "Host: your_github_username.github.io" http://185.199.108.153/
content/blog/2020-08-29-php-auth-flow.org +3 −2
@@ -7,8 +7,9 @@
77
88When creating websites that will allow users to create accounts, the developer
99always needs to consider the proper authentication flow for their app. For
10example, some developers will utilize an API for authentication, some will use
11OAuth, and some may just use their own simple database.
10example, some developers will utilize an application programming interface (API)
11for authentication, some will use OAuth, and some may just use their own simple
12database.
1213
1314For those using pre-built libraries, authentication may simply be a problem of
1415copying and pasting the code from their library's documentation. For example,
content/blog/2020-09-01-visual-recognition.org +12 −12
@@ -5,13 +5,13 @@
55
66* What is IBM Watson?
77
8If you've never heard of [[https://www.ibm.com/watson][Watson]], this service is a suite of enterprise-ready AI
9services, applications, and tooling provided by IBM. Watson contains quite a few
10useful tools for data scientists and students, including the subject of this
11post today: visual recognition.
8If you've never heard of [[https://www.ibm.com/watson][Watson]], this service is a suite of enterprise-ready
9artificial intelligence (AI) services, applications, and tooling provided by
10IBM. Watson contains quite a few useful tools for data scientists and students,
11including the subject of this post today: visual recognition.
1212
13If you'd like to view the official documentation for the Visual Recognition API,
14visit the [[https://cloud.ibm.com/apidocs/visual-recognition/visual-recognition-v3?code=python][API Docs]].
13If you'd like to view the official documentation for the Visual Recognition
14application programming interface (API), visit the [[https://cloud.ibm.com/apidocs/visual-recognition/visual-recognition-v3?code=python][API Docs]].
1515
1616* Prerequisites
1717
@@ -19,12 +19,12 @@ To be able to use Watson Visual Recognition, you'll need the following:
1919
20201. Create a free account on [[https://www.ibm.com/cloud/watson-studio][IBM Watson Studio]].
21212. Add the [[https://www.ibm.com/cloud/watson-visual-recognition][Watson Visual Recognition]] service to your IBM Watson account.
223. Get your API key and URL. To do this, first go to the [[https://dataplatform.cloud.ibm.com/home2?context=cpdaas][profile dashboard]] for
23 your IBM account and click on the Watson Visual Recognition service you
24 created. This will be listed in the section titled *Your services*. Then
25 click the *Credentials* tab and open the *Auto-generated credentials*
26 dropdown. Copy your API key and URL so that you can use them in the Python
27 script later.
223. Get your API key and URL (uniform resource locator). To do this, first go to
23 the [[https://dataplatform.cloud.ibm.com/home2?context=cpdaas][profile dashboard]] for your IBM account and click on the Watson Visual
24 Recognition service you created. This will be listed in the section titled
25 *Your services*. Then click the *Credentials* tab and open the
26 *Auto-generated credentials* dropdown. Copy your API key and URL so that you
27 can use them in the Python script later.
28284. *[Optional]* While not required, you can also create the Jupyter Notebook for
2929 this project right inside [[https://www.ibm.com/cloud/watson-studio][Watson Studio]]. Watson Studio will save your
3030 notebooks inside an organized project and allow you to use their other
content/blog/2020-09-22-internal-audit.org +4 −5
@@ -50,11 +50,10 @@ evidence to provide opinions or conclusions regarding an entity, operation,
5050function, process, system, or other subject matters. The internal auditor
5151determines the nature and scope of an assurance engagement. Generally, three
5252parties are participants in assurance services: (1) the person or group directly
53involved with the entity, operation, function, process, system, or other subject
54
55- (the process owner), (2) the person or group making the assessment - (the
56 internal auditor), and (3) the person or group using the assessment - (the
57 user).
53involved with the entity, operation, function, process, system, or other
54subject - (the process owner), (2) the person or group making the assessment -
55(the internal auditor), and (3) the person or group using the assessment - (the
56user).
5857
5958** Consulting
6059
content/blog/2020-09-25-happiness-map.org +1 −1
@@ -76,7 +76,7 @@ Some countries need to be renamed, or they will be lost when you merge the
7676happiness and GeoJSON dataframes. This is something I discovered when the map
7777below showed empty countries. I searched both data frames for the missing
7878countries to see the naming differences. Any countries that do not have records
79in the =happy_data= df will not show up on the map.
79in the =happy_data= data frame will not show up on the map.
8080
8181#+begin_src python
8282# Rename some countries to match our GeoJSON data
content/blog/2020-12-27-website-redesign.org +11 −11
@@ -19,10 +19,10 @@ anything on my main webpage that's vital, it allows me the freedom to change
1919things as inspiration strikes.
2020
2121Historically, I've relied on core utilities for spacing, components, and layouts
22from [[https://getbootstrap.com][Bootstrap]] and added custom CSS for fonts, accents, colors, and other items.
23I also tend to create sites with no border radius on items, visible borders, and
24content that takes up the entire screen (using whitespace inside components
25instead of whitespace around my components).
22from [[https://getbootstrap.com][Bootstrap]] and added custom cascading style sheets (CSS) for fonts, accents,
23colors, and other items. I also tend to create sites with no border radius on
24items, visible borders, and content that takes up the entire screen (using
25whitespace inside components instead of whitespace around my components).
2626
2727* The Redesign Process
2828
@@ -75,13 +75,13 @@ transferred (22 KB total), and my blog is at 6.5 KB transferred (13 KB total).
7575*That means the redesigned pages are less than 2% the size of the old designs.*
7676
7777Google Lighthouse ranks the new webpage as 100 in performance, accessibility,
78and best practices, with SEO at 92 since they think tap targets are not sized
79appropriately for mobile users. First contextual paints of the pages are under
800.8 seconds with 0 ms of blocking time. However, the blog subdomain ranks at 100
81for all four categories! First contextual paints of the blog homepage are under
821.0 seconds with 0 ms of blocking time, due to the fact that the CSS for my blog
83is within a separate CSS file, and the CSS for my main website is simply
84embedded in the HTML file.
78and best practices, with search engine optimization (SEO) at 92 since they think
79tap targets are not sized appropriately for mobile users. First contextual
80paints of the pages are under 0.8 seconds with 0 ms (millisecond) of blocking
81time. However, the blog subdomain ranks at 100 for all four categories! First
82contextual paints of the blog homepage are under 1.0 seconds with 0 ms of
83blocking time, due to the fact that the CSS for my blog is within a separate CSS
84file, and the CSS for my main website is simply embedded in the HTML file.
8585
8686Now that everything is complete, I can confidently say I'm happy with the result
8787and proud to look at the fastest set of websites I've created so far.