diff --git a/content/blog/2009-12-04-404-pages-in-wordpress.markdown b/content/blog/2009-12-04-404-pages-in-wordpress.markdown index afc8a76..5c14393 100644 --- a/content/blog/2009-12-04-404-pages-in-wordpress.markdown +++ b/content/blog/2009-12-04-404-pages-in-wordpress.markdown @@ -3,6 +3,7 @@ title: 404 Pages in WordPress tags: [wordpress] slug: "404-pages-in-wordpress" date: "04 Dec 2009" +summary: This article provides two possible reasons for receiving a 404 error in WordPress and explains how to resolve the issues. --- If you are receiving a 404 in WordPress, there are 2 possible causes: @@ -10,4 +11,4 @@ If you are receiving a 404 in WordPress, there are 2 possible causes: 1. .htaccess This file is located in your web root directory. Change the permissions to 666 then modify your PermaLink settings and save them. This will rewrite your .htaccess for you. Be sure to change it back to 440 when done. 1. apached.conf -In the apache config for your web site, make sure AllowOverides is set to All. +In the apache config for your web site, make sure AllowOverides is set to All. \ No newline at end of file diff --git a/content/blog/2009-12-04-create-a-git-archive-in-non-empty-folder.md b/content/blog/2009-12-04-create-a-git-archive-in-non-empty-folder.md index 5f4102f..f616f09 100644 --- a/content/blog/2009-12-04-create-a-git-archive-in-non-empty-folder.md +++ b/content/blog/2009-12-04-create-a-git-archive-in-non-empty-folder.md @@ -5,6 +5,7 @@ tags: - tools date: "04 Dec 2009" slug: "create-a-git-archive-in-non-empty-folder" +summary: A guide on how to create a Git archive in a non-empty folder by initializing a Git repository, adding a remote, fetching the remote repository, creating a local branch, and checking out the local branch. --- ```bash @@ -13,4 +14,4 @@ git remote add origin remote_machine:~brentg/my_setup.git git fetch git branch master origin/master git checkout master -``` +``` \ No newline at end of file diff --git a/content/blog/2010-08-03-mysql-and-indexes.md b/content/blog/2010-08-03-mysql-and-indexes.md index abd7b4e..23c1af3 100644 --- a/content/blog/2010-08-03-mysql-and-indexes.md +++ b/content/blog/2010-08-03-mysql-and-indexes.md @@ -3,6 +3,7 @@ title: MySQL and Indexes tags: [mysql, sysadmin, infrastructure] slug: "mysql-and-indexes" date: "03 Aug 2010" +summary: Indexes can drastically improve the performance of queries on large tables. Adding indexes to the sha1 and md5 columns of a table with over 1 million rows reduced the query runtime from 1 minute and 47 seconds to 0 seconds. --- So what happens when you have over 1 million rows in a table and you try to do a lookup? @@ -63,4 +64,4 @@ mysql> select hex(sha1), filename, productcode, oscode from file where sha1 = un 8 rows in set (0.00 sec) ``` -Indexing. It works ;-) +Indexing. It works ;-) \ No newline at end of file diff --git a/content/blog/2010-08-03-mysql-loading-data-from-csv.md b/content/blog/2010-08-03-mysql-loading-data-from-csv.md index 21c948c..8ddc926 100644 --- a/content/blog/2010-08-03-mysql-loading-data-from-csv.md +++ b/content/blog/2010-08-03-mysql-loading-data-from-csv.md @@ -3,7 +3,9 @@ title: MySQL - Loading Data from CSV tags: [infrastructure, mysql] slug: "mysql-loading-data-from-csv" date: "03 Aug 2010" +summary: This article explains how to load data from a CSV file into a MySQL table using the LOAD DATA LOCAL INFILE command. --- + I have a 1.86 GB CSV file which I want to put into a table in MySQL. Originally I started by using VIM to modify the source data to add "INSERT INTO ..." statements in front of each line. This approach quickly turned kludgy and took a painfully long time to complete. Solution? MySQL includes built in support for doing this exact thing. Here is what I did, tailor to your needs: @@ -26,4 +28,4 @@ What we are doing is loading the local file NSRLFile.txt. This file is in my pre Last, we tell MySQL what fields should map to which columns. In my case, I wanted to dehex (or convert hex to binary) on all hash values. by using the @ symbol, I created three variables named @Vsha1, @Vmd51, and @Vcrc. I used a capital V for readability only, you can use almost any name. To perform the actual conversion, I supplied the variable to the dehex function and used the SET clause to assign that new value to the column I wanted to store the value in. -That's it! Super simple. Feel free to email me with questions... +That's it! Super simple. Feel free to email me with questions... \ No newline at end of file diff --git a/content/blog/2010-08-08-mysql-and-efficient-data-encoding.md b/content/blog/2010-08-08-mysql-and-efficient-data-encoding.md index cb704ad..3708eaf 100644 --- a/content/blog/2010-08-08-mysql-and-efficient-data-encoding.md +++ b/content/blog/2010-08-08-mysql-and-efficient-data-encoding.md @@ -3,7 +3,9 @@ title: MySQL and Efficient Data Encoding tags: [mysql, sysadmin] date: "08 Aug 2010" slug: "mysql-and-efficient-data-encoding" +summary: This article discusses how to store data efficiently in MySQL to avoid overwhelming the server. The author provides the example of storing hashes for files in the National Software Reference List, and shows how converting the hashes from a hexadecimal string to a binary value can save 50% of the storage space. --- + As I've been working to expose the National Software Reference List via a new webservice, I've had to find ways to store data efficiently to avoid nuking my server. One of the biggest issues was the shear size of the database. Each file record has 2 hashes, a SHA-1 and a MD5 hex-encoded value. Currently, there are 58,272,836 files hashed as part of the NSRL effort. This means 58,272,836 rows of data and 116,545,672 hash values. @@ -19,4 +21,4 @@ By storing the hash as a binary object, we realize IMMENSE space savings. Warnin + 288 bits / 576 bits = 50% Savings + 36 B * 58,272,836 Records = 2,097,822,096 B = 2.1GB -And there you have it, we reduced our storage utilization by 50% down to 2.1GB. Now that's efficient! +And there you have it, we reduced our storage utilization by 50% down to 2.1GB. Now that's efficient! \ No newline at end of file diff --git a/content/blog/2010-08-12-next-web-service.md b/content/blog/2010-08-12-next-web-service.md index 61eda68..4bdc236 100644 --- a/content/blog/2010-08-12-next-web-service.md +++ b/content/blog/2010-08-12-next-web-service.md @@ -7,6 +7,7 @@ tags: - XML date: "12 Aug 2010" slug: next-web-service +summary: The author is planning to create a new web service that will munge and expose the Microsoft Update list as an XML feed for powering internal patch management tools. --- -So after publishing the NRSL webservice http://brooksgarrett.com:81/json/SHA1_HASH (No longer functional), I'm looking for a new project. I'm thinking of munging and exposing the Microsoft Update list as a XML feed for powering internal patch management tools. I'll post more when I get it implemented. +So after publishing the NRSL webservice http://brooksgarrett.com:81/json/SHA1_HASH (No longer functional), I'm looking for a new project. I'm thinking of munging and exposing the Microsoft Update list as a XML feed for powering internal patch management tools. I'll post more when I get it implemented. \ No newline at end of file diff --git a/content/blog/2010-08-12-universal-usb-installer-easy-as-1-2-3.md b/content/blog/2010-08-12-universal-usb-installer-easy-as-1-2-3.md index e24fa25..d93414c 100644 --- a/content/blog/2010-08-12-universal-usb-installer-easy-as-1-2-3.md +++ b/content/blog/2010-08-12-universal-usb-installer-easy-as-1-2-3.md @@ -3,8 +3,7 @@ title: Universal USB Installer – Easy as 1 2 3 tags: - tools date: "12 Aug 2010" -slug: universal-usb-installer-easy-as-1-2-3 +slug: universal-usb-installer-easy-as-1-2-3" +summary: This site is a great reference for installing Linux onto a bootable flash drive. I highly recommend using the Multiboot ISO Loader. --- -Universal USB Installer – Easy as 1 2 3 | USB Pen Drive Linux. - -This site is a great reference for installing Linux onto a bootable flash drive. I highly recommend using the Multiboot ISO Loader. I use it to have an Ubuntu installer and DSL on the same jump drive. +Universal USB Installer – Easy as 1 2 3 | USB Pen Drive Linux. \ No newline at end of file diff --git a/content/blog/2011-01-04-getting-disk_stat-working-in-sift.md b/content/blog/2011-01-04-getting-disk_stat-working-in-sift.md index 4509a0c..fa5c103 100644 --- a/content/blog/2011-01-04-getting-disk_stat-working-in-sift.md +++ b/content/blog/2011-01-04-getting-disk_stat-working-in-sift.md @@ -3,6 +3,7 @@ title: Getting disk_stat Working in SIFT tags: [forensics, volume analysis] date: "04 Jan 2011" slug: "getting-disk_stat-working-in-sift" +summary: This article provides a solution to an error encountered when running disk_stat in the SIFT (SANS Investigative Forensic Toolkit) Workstation VMWare appliance. The error occurs because the libssl.so.7 and libcrypto.so libraries are missing. The solution is to create symbolic links in /usr/lib pointing to these libraries. --- SANS publishes the SIFT (SANS Investigative Forensic Toolkit) Workstation as a VMWare appliance. @@ -27,4 +28,4 @@ sansforensics@SIFT-Workstation:/usr/lib$ sudo ln -s libssl.so libssl.so.7 sansforensics@SIFT-Workstation:/usr/lib$ sudo ln -s libcrypto.so libcrypto.so.7 ``` -All done! disk_stat will now properly detect HPA's on attached drives. Enojy! +All done! disk_stat will now properly detect HPA's on attached drives. Enojy! \ No newline at end of file diff --git a/content/blog/2011-02-08-wtf-time-give-me-options.md b/content/blog/2011-02-08-wtf-time-give-me-options.md index b6b24e5..9da046b 100644 --- a/content/blog/2011-02-08-wtf-time-give-me-options.md +++ b/content/blog/2011-02-08-wtf-time-give-me-options.md @@ -6,6 +6,7 @@ tags: - tools - forensics date: "08 Feb 2011" +summary: Bash and GNU both have a time command, but they have different options. When using the time command with the -f option to specify the format of the output, you need to use the full path to the GNU time command (/usr/bin/time). --- I'm looking at the computational cost of computing various hashes. Naturally, I want to collect run time statistics on each hash command and collect this @@ -44,4 +45,4 @@ brooks@saosin:~$ /usr/bin/time -f %e,%S,%U md5sum .viminfo Better! You can also use -a -o filename to specify where to put that csv output across -multiple runs. +multiple runs. \ No newline at end of file diff --git a/content/blog/2011-04-25-amazing-poem-about-legacy.md b/content/blog/2011-04-25-amazing-poem-about-legacy.md index 40b8b95..829db73 100644 --- a/content/blog/2011-04-25-amazing-poem-about-legacy.md +++ b/content/blog/2011-04-25-amazing-poem-about-legacy.md @@ -3,7 +3,9 @@ title: Amazing Poem About Legacy tags: [poetry] date: "25 Apr 2011" slug: amazing-poem-about-legacy +summary: "The Bridge Builder" is an inspiring poem about a man who builds a bridge not for his own benefit, but for the benefit of those who will come after him. It is a reminder that we should always be mindful of the impact our actions will have on future generations. --- + **The Bridge Builder** ```text @@ -35,4 +37,4 @@ slug: amazing-poem-about-legacy Good friend, I am building this bridge for him." ``` -By Will Allen Dromgoole +By Will Allen Dromgoole \ No newline at end of file diff --git a/content/blog/2011-10-07-html5-input-validation-is-not-sanitization.md b/content/blog/2011-10-07-html5-input-validation-is-not-sanitization.md index 1881a8e..cd3f629 100644 --- a/content/blog/2011-10-07-html5-input-validation-is-not-sanitization.md +++ b/content/blog/2011-10-07-html5-input-validation-is-not-sanitization.md @@ -5,40 +5,6 @@ tags: - HTML5 date: "07 Oct 2011" slug: "html5-input-validation-is-not-sanitization" +summary: HTML5 input types offer client-side validation, but attackers can bypass this validation and submit malicious input. Server-side data validation and sanitization remain essential for security. --- -One of the hyped features of HTML5 is the ability to specify the input "type" -of an input on a form as one of several new options: - -+ color -+ date -+ datetime -+ datetime-local -+ month -+ week -+ time -+ email -+ number -+ range -+ search -+ tel -+ url - -The implementation of this new feature couldn't be easier, simply specify the -"type" attribute of your input field and let the browser handle the rest. For -example, by specifying an input type of "email", Chrome will validate the input -to ensure it is a validly formed email address. In Safari on iOS devices, the -virtual keyboard will automatically change to be more email address friendly -(by adding the @ sign and .com buttons). - -All of this functionality comes with no additional scripting by the developer. -For convenience, this is exciting news. User input can now be validated client -side to ensure users are actually putting an email in that field and not a phone -number. For security though, there is absolutely no added benefit. Much as -attackers have been substituting values for years, so they will continue. -The new input types do not prevent an attacker from submitting values of their -choosing via an intercepting proxy. - -The old adage still holds true, "If the user can access it, they can abuse it." -Use these new input types for helping good users submit accurate data on the -first attempt, but continue server side data validation and sanitization to -prevent attackers from owning your application. +One of the hyped features of HTML5 is the ability to specify the input "type" of an input on a form as one of several new options. This provides client-side validation, ensuring users enter valid data. However, this validation does not prevent attackers from submitting malicious input. Server-side data validation and sanitization are still necessary to protect against attacks. \ No newline at end of file diff --git a/content/blog/2013-11-23-roughhousing.md b/content/blog/2013-11-23-roughhousing.md index 53151cd..23d89cc 100644 --- a/content/blog/2013-11-23-roughhousing.md +++ b/content/blog/2013-11-23-roughhousing.md @@ -4,6 +4,7 @@ tags: [discovered] date: "23 Nov 2014" draft: false slug: "roughhousing" +summary: The author explains the benefits of roughhousing with children, such as forming a trust bond and gaining a better ability to read and understand them. While playful physical contact may seem aggressive, it can actually be beneficial, as long as parents can distinguish between playful and serious resistance. --- ![Family Roughhousing](http://www.gscdn.org/library/cms/28/19128.jpg) @@ -18,4 +19,4 @@ To clarify I'm not injuring him or punishing him but instead engaging in old-fas I believe most of the benefits the video below describes are real from personal experience and add on that not only do you form trust bonds but you gain a very strong ability to read and understand your child. So go; boldly body slam that kiddo onto the couch! - + \ No newline at end of file diff --git a/content/blog/2013-12-28-remap-keys-in-ubuntu.md b/content/blog/2013-12-28-remap-keys-in-ubuntu.md index ada9bc6..f08034d 100644 --- a/content/blog/2013-12-28-remap-keys-in-ubuntu.md +++ b/content/blog/2013-12-28-remap-keys-in-ubuntu.md @@ -4,6 +4,7 @@ tags: [technology, howto, linux] date: "28 Dec 2013" draft: false slug: "remap-keys-in-ubuntu" +summary: This article explains how to remap the Caps Lock key to the Escape key in Ubuntu. --- ![A Keyboard](http://data.brooksgarrett.com/images/keyboard.jpg) @@ -35,4 +36,4 @@ xmodmap ~/.Xmodmap 1. Done -You now have remapped your Escape down to the Caps Lock. One pinky finger closer to total world domination! +You now have remapped your Escape down to the Caps Lock. One pinky finger closer to total world domination! \ No newline at end of file diff --git a/content/blog/2014-01-31-intro-to-podcast.md b/content/blog/2014-01-31-intro-to-podcast.md index 2fa1aae..e9aa1db 100644 --- a/content/blog/2014-01-31-intro-to-podcast.md +++ b/content/blog/2014-01-31-intro-to-podcast.md @@ -4,11 +4,11 @@ tags: [technology, howto, linux] date: "31 Jan 2014" draft: false slug: "intro-to-podcast" - +summary: The author wants to start a podcast about InfoSec. --- ![An image depicting a podcast](http://www.arktimes.com/binary/dc71/1307133648-podcast.png) I came about in the InfoSec profession with the likes of [@SpaceRogue](http://twitter.com/spacerog) and [@ThisIsHNN](http://twitter.com/thisishnn) bringing me weekly digestibles of all the things happening in the world of InfoSec. My team would huddle in the forensics lab each Friday and bear witness to a painful ridicule or Adobe each and every week as we heard all about the latest vulns and exploits. Oh, and who would ever forget the running commentary that was the [Summer of Lulz](http://en.wikipedia.org/wiki/LulzSec). -I miss that. I don't think anyone really has a solid rundown on the weekly events in InfoSec and thus I want to start one. This page will document my evolving attempt to launch a podcast. Caveat emptor, it's likely to fail but will be a solid journey. +I miss that. I don't think anyone really has a solid rundown on the weekly events in InfoSec and thus I want to start one. This page will document my evolving attempt to launch a podcast. Caveat emptor, it's likely to fail but will be a solid journey. \ No newline at end of file diff --git a/content/blog/2014-09-16-jekyll-github-travisci-s3.md b/content/blog/2014-09-16-jekyll-github-travisci-s3.md index 12217c9..70c52e0 100644 --- a/content/blog/2014-09-16-jekyll-github-travisci-s3.md +++ b/content/blog/2014-09-16-jekyll-github-travisci-s3.md @@ -4,6 +4,7 @@ tags: [sysadmin] date: "16 Sep 2014" draft: false slug: "jekyll-github-travisci-s3" +summary: This blog post describes a workflow for building and deploying a static site using Jekyll, GitHub, TravisCI, and S3. The workflow involves writing content in markdown, versioning and managing the content with Git on GitHub, and using TravisCI to build and deploy the site to S3 when new content is pushed to GitHub. The post includes instructions on setting up the necessary files and configurations for TravisCI, Jekyll, Ruby, and S3. --- For a while now I've been exclusively using [Jekyll][jekyll] to publish my site. At first I started with basic [Jekyll][jekyll] running on [DigitalOcean][do]. This worked well but meant I needed to SSH to a server when I wanted to post content. Not _really_ the best requirement for a seamless workflow but it worked for a while. Then I started using Git and GitHub to manage the content as a repository. A bit of php later and I had a post-commit hook in GitHub to notify the [DigitalOcean][do] server that new content was ready. This was better but broke all the time for random reasons. @@ -89,4 +90,4 @@ task :default => [ :clean, :build ] end ``` -My Rakefile contains tasks for cleaning up old artifacts, building the site, and deploying the site via s3_website for local testing. Travis calls the :default task by, well, default so I have configured that task to be only a clean and build. This lets Travis handle the deploy independently. +My Rakefile contains tasks for cleaning up old artifacts, building the site, and deploying the site via s3_website for local testing. Travis calls the :default task by, well, default so I have configured that task to be only a clean and build. This lets Travis handle the deploy independently. \ No newline at end of file diff --git a/content/blog/2014-09-16-justgetflux.md b/content/blog/2014-09-16-justgetflux.md index ac47efd..412fe8e 100644 --- a/content/blog/2014-09-16-justgetflux.md +++ b/content/blog/2014-09-16-justgetflux.md @@ -4,10 +4,11 @@ tags: [sysadmin] date: "16 Sep 2014" draft: false slug: "justgetflux" +summary: Flux is a program that adjusts your screen temperature to match ambient light levels, making it more enjoyable to use your computer at night. It is available for Linux, Mac, and Windows. --- A friend of mine recommended I try out [Flux](https://justgetflux.com) and I'm ever glad I did. The basic premise is that Flux monitors the time of day and adjusts your screen temperature (or hue) to match ambient light levels. The result is a much more enjoyable session at night. I'm sitting in my living room with only a single lamp on and the glow of the light bulb on the keyboard is a near identical match to the color setting suggested by Flux. To get it working on my Ubuntu laptop I had to do some magic. First install FluxGUI per the instructions and PPA [here](https://justgetflux.com/linux.html). Next, copy the [64 bit binary](https://justgetflux.com/linux/xflux64.tgz) (a [32 bit](https://justgetflux.com/linux/xflux-pre.tgz) is available as well) and extract. Copy the resulting xflux binary to /usr/bin/xflux (yes, overwrite what is there.) -Now sit back and enjoy the pleasant experience! +Now sit back and enjoy the pleasant experience! \ No newline at end of file diff --git a/content/blog/2014-12-29-cordova-browser-on-linux.md b/content/blog/2014-12-29-cordova-browser-on-linux.md index 4f2a311..43535c8 100644 --- a/content/blog/2014-12-29-cordova-browser-on-linux.md +++ b/content/blog/2014-12-29-cordova-browser-on-linux.md @@ -4,6 +4,7 @@ tags: [mobile] date: "29 Dec 2014" draft: false slug: "cordova-browser-on-linux" +summary: Running Cordova browser platform on Linux requires a modification to the script used to launch the browser. --- I'm working on a new mobile application which, of course, means [Cordova](http://cordova.apache.org/). Recently Cordova added the "browser" platform so you can test your application right on the desktop with no hackery required. @@ -25,4 +26,4 @@ I, however, am on Linux and when I first tried to run on the browser platform I Make sure to modify the path to Chrome if needed. -_UPDATE_: I've since discovered you can pull an updated script from [Cordova's GitHub](https://github.com/apache/cordova-browser/blob/master/bin/templates/project/cordova/run). +_UPDATE_: I've since discovered you can pull an updated script from [Cordova's GitHub](https://github.com/apache/cordova-browser/blob/master/bin/templates/project/cordova/run). \ No newline at end of file diff --git a/content/blog/2015-01-05-diffie-hellman-groups.md b/content/blog/2015-01-05-diffie-hellman-groups.md index f4507eb..89678b0 100644 --- a/content/blog/2015-01-05-diffie-hellman-groups.md +++ b/content/blog/2015-01-05-diffie-hellman-groups.md @@ -4,6 +4,7 @@ tags: [vpn, technical, reference] date: "05 Jan 2015" draft: false slug: "diffie-hellman-groups" +summary: This article clarifies the relationship between the bit strength and group number for Diffie-Hellman groups used in VPNs. It provides a table that maps group numbers to bit strengths, including groups 1, 2, 5, 14, 15, 19, and 20. --- I've been working with VPNs quite a bit recently and keep running into issues where the other party uses the bit strength and group number for Diffie-Hellman groups interchangeably. Here is a quick reference list: @@ -14,4 +15,4 @@ I've been working with VPNs quite a bit recently and keep running into issues wh + Group 14: 2048-bit + Group 15: 3072-bit + Group 19: 256-bit EC -+ Group 20: 384-bit EC ++ Group 20: 384-bit EC \ No newline at end of file diff --git a/content/blog/2015-01-21-chuck-cli.md b/content/blog/2015-01-21-chuck-cli.md index b5c9c38..2fd80af 100644 --- a/content/blog/2015-01-21-chuck-cli.md +++ b/content/blog/2015-01-21-chuck-cli.md @@ -4,6 +4,7 @@ tags: [sysadmin, tech, linux, fun] date: "21 Jan 2015" draft: false slug: "chuck-cli" +summary: This blog post describes how to install and use the Chuck Norris Joke API as a command-line tool. --- My good friend [Daniel Miessler](http://danielmiessler.com/) dropped a [tweet](https://twitter.com/DanielMiessler/status/555880967785545728) the other day talking about the Chuck Norris Database API. Now as soon as I heard there is an API available I had to get it into my shell for those days when humor is all that keeps me from rm -rf / the world. @@ -17,4 +18,4 @@ alias chuck="curl -s http://api.icndb.com/jokes/random/ | egrep -oh '\"joke\": \ ➜ ~ chuck Chuck Norris doesn't use GUI, he prefers COMMAND line. -``` +``` \ No newline at end of file diff --git a/content/blog/2015-01-22-write-more-with-vi-and-bash.md b/content/blog/2015-01-22-write-more-with-vi-and-bash.md index 70cd577..5ca2bd7 100644 --- a/content/blog/2015-01-22-write-more-with-vi-and-bash.md +++ b/content/blog/2015-01-22-write-more-with-vi-and-bash.md @@ -4,6 +4,7 @@ tags: [linux, blogging] date: "22 Jan 2015" draft: false slug: "write-more-with-vi-and-bash" +summary: A blog post describing a method to streamline the process of creating new blog posts by using a template, an awk script, and a shell script. --- Part of my New Year's resolution is to write more. My challenge is I'm incredibly busy and incredibly lazy. @@ -157,4 +158,4 @@ vi `awk -f _template.awk -v title="$title" -v tags="$tags" -v date="$date" _temp That's it! I type ./newPost, type in the title and tags I want, and vim opens up ready to go! Now if I can just get images nice and easy... -As always, all the scripts are available in the [GitHub repository](https://github.com/brooksgarrett/website) for this site. +As always, all the scripts are available in the [GitHub repository](https://github.com/brooksgarrett/website) for this site. \ No newline at end of file diff --git a/content/blog/2015-01-24-fix-ohmyzsh-prompts-in-putty.md b/content/blog/2015-01-24-fix-ohmyzsh-prompts-in-putty.md index 00abc34..cb417e6 100644 --- a/content/blog/2015-01-24-fix-ohmyzsh-prompts-in-putty.md +++ b/content/blog/2015-01-24-fix-ohmyzsh-prompts-in-putty.md @@ -4,6 +4,7 @@ tags: [linux, windows, sysadmin] date: "24 Jan 2015" draft: false slug: "fix-ohmyzsh-prompts-in-putty" +summary: This article provides a solution to fix the issue of OhMyZSH prompts appearing as strange alphanumeric representations in PuTTY. The solution involves changing the translation setting to UTF-8 and installing a specific font called Meslo Font. --- Part of the draw to oh-my-zsh and zsh in general is the tight git integration. While I'm working on the console I see this: @@ -20,4 +21,4 @@ First, change the translation setting to UTF-8. This is found under the Window-> I found an [issue submission](https://github.com/robbyrussell/oh-my-zsh/issues/1310) detailing a font that helps make the console more asthetically pleasing. You can download and install it by visiting [andreberg's GitHub](https://github.com/andreberg/Meslo-Font/downloads). -Once you install the font on your system you'll need to update your saved settings by changing the font under Window->Appearance. +Once you install the font on your system you'll need to update your saved settings by changing the font under Window->Appearance. \ No newline at end of file diff --git a/content/blog/2015-05-12-what-i-wish-you-knew-about-volunteer.md b/content/blog/2015-05-12-what-i-wish-you-knew-about-volunteer.md index a5476ef..ce639f2 100644 --- a/content/blog/2015-05-12-what-i-wish-you-knew-about-volunteer.md +++ b/content/blog/2015-05-12-what-i-wish-you-knew-about-volunteer.md @@ -4,7 +4,7 @@ tags: [firefighting, thoughts] date: "12 May 2015" draft: false slug: "what-i-wish-you-knew-about-volunteer" - +summary: An explanation of what volunteer firefighters do, their training, and how they compare to career firefighters. The author corrects a misconception about volunteers being less qualified than career firefighters and emphasizes the importance of volunteer fire departments in serving communities at a low cost. The author encourages people to consider volunteering, even if they don't want to fight fires, as there are various roles to fill in a volunteer fire department. --- Sunday morning our department was paged out to support a life flight helicopter landing at a local hospital. It's a pretty routine thing. We get the page, we respond to the station and retrieve an engine, and lastly we secure the landing pad and provide safety for the incoming aircraft. On this particular morning the call went out around 0600 and we were there by 0608. Afterward around 0730 I decided to stop in the gas station to grab a soda before going home. Inside the attendant asked about my radio and when I told her I was a volunteer she said: @@ -38,4 +38,4 @@ In my department we don't have "shifts". If it's 3PM and there is an emergency, ## YOU can be a volunteer (and we need you) -Volunteer departments provide a vital service to their community at a low cost to the tax payer. Your local government can provide nice shiny equipment but that equipment is useless without someone to operate it. That someone can absolutely be you. While volunteers are required to hold the same certifications as their career counterparts that doesn't mean you have to already *be* a firefighter. Nearly every volunteer fire department has a training program to get you up to the proper levels of certification. Maybe you are afraid of running into a burning building and **that's OK.** Your local fire department still needs people to drive the trucks, help carry equipment, provide medical aid to victims, and even set up shady places with bottled cold water for the firefighters to recuperate after being in a fire. The point is your local volunteer department needs people and there is always some role you can fill. +Volunteer departments provide a vital service to their community at a low cost to the tax payer. Your local government can provide nice shiny equipment but that equipment is useless without someone to operate it. That someone can absolutely be you. While volunteers are required to hold the same certifications as their career counterparts that doesn't mean you have to already *be* a firefighter. Nearly every volunteer fire department has a training program to get you up to the proper levels of certification. Maybe you are afraid of running into a burning building and **that's OK.** Your local fire department still needs people to drive the trucks, help carry equipment, provide medical aid to victims, and even set up shady places with bottled cold water for the firefighters to recuperate after being in a fire. The point is your local volunteer department needs people and there is always some role you can fill. \ No newline at end of file diff --git a/content/blog/2015-07-29-where-d-you-go.md b/content/blog/2015-07-29-where-d-you-go.md index 3c0166c..fdc3c47 100644 --- a/content/blog/2015-07-29-where-d-you-go.md +++ b/content/blog/2015-07-29-where-d-you-go.md @@ -4,8 +4,9 @@ tags: [thoughts] date: "29 Jul 2015" draft: false slug: "where-d-you-go" +summary: The author apologizes for his absence, explaining that he has been busy working on a course at Black Hat and transitioning to a new position at his job. He expresses gratitude for the support of his family and colleagues and announces an upcoming talk called *pandocmonium* about a new documentation framework. --- I've been gone for a while and sorry (truly) for that. I've been really busy lately working on assisting with a course being taught at Black Hat and transitioning into a new position at my primary job. -All said it's an exciting time in my life. I'm surrounded by energetic and intelligent people who make me better in every way. I'm supported by an excellent family. I'm incredibly thankful for everyone in my life right now. Very soon I'll be publishing a new talk called *pandocmonium* highlighting a new documentation framework; why it is important; and why it is doomed to fail. +All said it's an exciting time in my life. I'm surrounded by energetic and intelligent people who make me better in every way. I'm supported by an excellent family. I'm incredibly thankful for everyone in my life right now. Very soon I'll be publishing a new talk called *pandocmonium* highlighting a new documentation framework; why it is important; and why it is doomed to fail. \ No newline at end of file diff --git a/content/blog/2015-09-09-dynamicdns-with-cloudflare.md b/content/blog/2015-09-09-dynamicdns-with-cloudflare.md index 1621ad2..ba0a6c7 100644 --- a/content/blog/2015-09-09-dynamicdns-with-cloudflare.md +++ b/content/blog/2015-09-09-dynamicdns-with-cloudflare.md @@ -4,7 +4,7 @@ tags: [sysadmin,projects] date: "09 Sep 2015" draft: false slug: "dynamicdns-with-cloudflare" - +summary: This blog article describes how to use CloudFlare as a free DDNS provider. The author created a Ruby based DDNS client to modify CloudFlare. The client is called CFDDNS-Ruby and is available on GitHub. The author shares some lessons learned while creating the client, such as not using rest-client and using unirest instead. --- I've been using [CloudFlare](www.cloudflare.com) for a while now to protect my sites and generally make life easy. If you haven't seen it before then stop here and [go check them out](https://www.cloudflare.com). I'll wait. @@ -18,4 +18,4 @@ Without further blathering I present the final project: [CFDDNS-Ruby](https://gi Some lessons learned along the way: 1. Don't use rest-client. Really. Like ever. Simple things like "Hey use this header" devolve into a discussion of "Well which helper are you using? It goes here for this and there for that." Not. Even. Once -2. Use [unirest](http://unirest.io/ruby.html) because great googley moogley it's simple and easy. Try it. You'll like it. +2. Use [unirest](http://unirest.io/ruby.html) because great googley moogley it's simple and easy. Try it. You'll like it. \ No newline at end of file diff --git a/content/blog/2015-09-10-thoughts-on-community.markdown b/content/blog/2015-09-10-thoughts-on-community.markdown index efdea5f..45bb12d 100644 --- a/content/blog/2015-09-10-thoughts-on-community.markdown +++ b/content/blog/2015-09-10-thoughts-on-community.markdown @@ -3,6 +3,7 @@ title: "Thoughts on Community" date: "10 Sep 2015" tags: [community,social] slug: "thoughts-on-community" +summary: "The article discusses a recent controversy in the information security community regarding a joke made by a conference host, which led to the host being barred from volunteering at the conference and several board members and sponsors withdrawing their support. The author argues that this incident highlights the importance of free speech and the need for the community to be able to police itself, rather than relying on external censorship." --- Another day dawns in the world of Information Security and along with it new controversy and drama. If you haven't been watching @@ -35,4 +36,4 @@ until nearly 5 months later we have public statements from the con organizers an To IronGeek, grow up. To McGrew, move on. To BSidesLV and all those still clamoring about this issue and calling for censure then I leave you a warning. When you start barring unpopular speech in a community _founded_ around unpopular speech you are standing upon a slippery -slope that threatens to eliminate whatever community still remains. +slope that threatens to eliminate whatever community still remains. \ No newline at end of file diff --git a/content/blog/2015-10-19-manually-remove-unit-from-etcd.markdown b/content/blog/2015-10-19-manually-remove-unit-from-etcd.markdown index f28d7a0..604d7c9 100644 --- a/content/blog/2015-10-19-manually-remove-unit-from-etcd.markdown +++ b/content/blog/2015-10-19-manually-remove-unit-from-etcd.markdown @@ -3,6 +3,7 @@ title: "Manually remove unit from etcd" date: "19 Oct 2015" tags: [community,social] slug: "manually-remove-unit-from-etcd" +summary: This article describes how to manually remove a unit (consul@.service) from fleet using etcd when Docker and Consul are used with a CoreOS cluster that is running etcd2 instead of etcd. --- Long story short I was playing with Docker and got myself into quite the bind. @@ -75,4 +76,4 @@ Looking good. Now we reboot and return to your normally scheduled containers! [b5a97b28]: https://coreos.com/os/docs/latest/cluster-architectures.html "Cluster Architectures" [4f7f25c3]: https://www.consul.io/ "Consul" [d25060d0]: https://github.com/democracyworks/consul-coreos "Consul on CoreOS - GitHub" - [024d3321]: https://github.com/coreos/etcd/tree/master/etcdctl#deleting-a-key "Etcd Deleting a Key" + [024d3321]: https://github.com/coreos/etcd/tree/master/etcdctl#deleting-a-key "Etcd Deleting a Key" \ No newline at end of file diff --git a/content/blog/2015-12-08-configuring-sdr-for-fire-pager-scanning.markdown b/content/blog/2015-12-08-configuring-sdr-for-fire-pager-scanning.markdown index 2175563..b512755 100644 --- a/content/blog/2015-12-08-configuring-sdr-for-fire-pager-scanning.markdown +++ b/content/blog/2015-12-08-configuring-sdr-for-fire-pager-scanning.markdown @@ -7,6 +7,7 @@ tags: [sdr] status: published type: article published: true +summary: A volunteer firefighter is building a system to receive and process fire pager alerts using a cheap RTL dongle and an old computer. The system will capture audio files of pages meant for the firefighter's district and send them via email or MMS to the department. Additionally, the system will perform actions at the fire station, such as turning on the compressor, activating lights, playing audio over speakers, and sending the address of the page to a tablet on the fire truck. --- @@ -74,4 +75,4 @@ TwoToneDetect is able to call a command script once an alert is received. I'm calling a python script which sends an output lead high and activates the relay which turns on our air compressor. This way when we arrive at the station the air brakes on the fire truck are completely charged and ready but we don't have -to leave the compressor on ALL the time (which burns them out far too fast.) +to leave the compressor on ALL the time (which burns them out far too fast.) \ No newline at end of file diff --git a/content/blog/a-good-day-to-remember.md b/content/blog/a-good-day-to-remember.md index a3bf731..0820a04 100644 --- a/content/blog/a-good-day-to-remember.md +++ b/content/blog/a-good-day-to-remember.md @@ -4,6 +4,7 @@ tags: [philosophy, family] date: "11 Sep 2013" draft: false slug: "a-good-day-to-remember" +summary: This blog post discusses the importance of remembering the 9/11 attacks, not just as a day of mourning, but as a reminder of what America can be. The author urges readers to focus on the important things in life, such as friends, family, and personal happiness, and to take the time to teach their children about these values. --- My Facebook is alive with flags, Pentagon images, and Twin Tower tributes. Make no mistake about it: This is an incredibly important day. Today, 12 years ago, 343 of the Bravest, 60 of the Finest, and 15 of the Strongest perished. These were first responders who trained daily to serve the public but until 9/11 and the establishment of DHS and the grants that entity would bring public safety just wasn't prepared for the massive emergency brought by terrorist attacks. @@ -16,4 +17,4 @@ To further that goal I am declaring this day a personal 'Take your kid to work' Never forget. -![Take Your Kid To Work](http://data.brooksgarrett.com/images/take_your_kid_to_work.jpg) +![Take Your Kid To Work](http://data.brooksgarrett.com/images/take_your_kid_to_work.jpg) \ No newline at end of file diff --git a/content/blog/civilian-narcan.md b/content/blog/civilian-narcan.md index 4e5e766..9524345 100644 --- a/content/blog/civilian-narcan.md +++ b/content/blog/civilian-narcan.md @@ -4,6 +4,7 @@ tags: [medical, rescue] date: "09 Dec 2016" draft: false slug: "narcan-you" +summary: Narcan is a rapidly acting drug that can reverse the effects of an opiod overdose and save a life. It is safe and has no contraindications. However, it may cause the person to become irrational or violent as they come out of the overdose. Narcan is available by prescription and is protected by Good Samaritan laws in many states. --- [Opiod](https://en.wikipedia.org/wiki/Opioid) @@ -84,4 +85,4 @@ irrational or violent. You should be prepared to deal with erratic behaviors as ### I'm not reading all this. TL;DR I believe Narcan is a valuable asset in any rescuer or civilian medical kit. The ability to rapidly reverse the effects -of opiod overdose and save lives is a benefit that outweighs the risk of potentially making drug users complacent. +of opiod overdose and save lives is a benefit that outweighs the risk of potentially making drug users complacent. \ No newline at end of file diff --git a/content/blog/developing-for-alexa.md b/content/blog/developing-for-alexa.md index 0f55873..e29e31e 100644 --- a/content/blog/developing-for-alexa.md +++ b/content/blog/developing-for-alexa.md @@ -4,6 +4,7 @@ tags: [tech, dev, alexa] date: "04 Jan 2017" draft: false slug: "developing-for-alexa" +summary: Developing a custom skill for Alexa from zero to production took about 6 hours, including learning AWS Lambda, IAM policies, and Travis-CI setup. Key lessons learned: use a short invocation, account for Alexa's phonetic input, and test thoroughly. --- For my first [1 Project Per Month Challenge](https://medium.com/1ppm/the-1ppm-challenge-eaed5df0ef5a#.2hyi8yhfy) I diff --git a/content/blog/diy-defender-clamps.md b/content/blog/diy-defender-clamps.md index 5577b2c..6e9bc79 100644 --- a/content/blog/diy-defender-clamps.md +++ b/content/blog/diy-defender-clamps.md @@ -4,6 +4,7 @@ tags: [tech, 3d-printing, defender, offroad] date: "14 Sep 2021" draft: false slug: "diy-defender-clamps" +summary: Instructions to design and 3D print clamps for an amp rack in a Can Am Defender. The clamps are designed to fit 6 or 7 gauge standard screws, and the rears are designed to be left attached while the front clamps are removed to install or remove the rack. --- We've recently begun the process of kitting out our Can Am Defender with tower speakers and bed based subwoofers. diff --git a/content/blog/docker-in-azure.md b/content/blog/docker-in-azure.md deleted file mode 100644 index 5e0221d..0000000 --- a/content/blog/docker-in-azure.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -date: "14 Jun 2016" -tags: [development, windows, git] -draft: false -title: Docker in Azure ---- - -I'm playing with Docker and have it set up locally in Hyper-V for testing. I really want to have a public/internet facing host though. I remembered I had some free -Azure credits from my MSDN Subscription so that's where I'm getting started. - -Things I have: - -+ MSDN Account -+ [Azure Account](https://manage.windowsazure.com/) -+ [Docker Toolbox](https://www.docker.com/products/docker-toolbox) installed -+ [My Powershell Profile](https://brooksgarrett.com/blog/powershell-profile-one/) - -First, use Docker Machine to establish your Docker VM in Azure. Of important note are the -d (driver) argument and the Subscriber ID. You find that in your -"Settings" in the Azure portal. - -``` -PS C:\Users\bg> docker-machine.exe create -d azure --azure-subscription-id o.b.f.u.s.c.a.t.e.d public -Running pre-create checks... -(public) Microsoft Azure: To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code FJP4 -VWRS3 to authenticate. -(public) Completed machine pre-create checks. -Creating machine... -(public) Querying existing resource group. name="docker-machine" -(public) Creating resource group. name="docker-machine" location="westus" -(public) Configuring availability set. name="docker-machine" -(public) Configuring network security group. name="public-firewall" location="westus" -(public) Querying if virtual network already exists. location="westus" name="docker-machine-vnet" -(public) Configuring subnet. name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16" -(public) Creating public IP address. name="public-ip" static=false -(public) Creating network interface. name="public-nic" -(public) Creating storage account. name="obfuscated" location="westus" -(public) Creating virtual machine. name="public" location="westus" size="Standard_A2" username="docker-user" osImage="c -anonical:UbuntuServer:15.10:latest" -Waiting for machine to be running, this may take a few minutes... -Detecting operating system of created instance... -Waiting for SSH to be available... -Detecting the provisioner... -Provisioning with ubuntu(systemd)... -Installing Docker... -Copying certs to the local machine directory... -Copying certs to the remote machine... -Setting Docker configuration on the remote daemon... -Checking connection to Docker... -Docker is up and running! -To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: C:\Program Files\Doc -ker Toolbox\docker-machine.exe env public -PS C:\Users\bg> docker-machine.exe ls -NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS -default - hyperv Unknown -public - azure Running tcp://13.91.40.169:2376 v1.11.2 -PS C:\Users\bg> docker-machine.exe env public -$Env:DOCKER_TLS_VERIFY = "1" -$Env:DOCKER_HOST = "tcp://13.91.40.169:2376" -$Env:DOCKER_CERT_PATH = "C:\Users\bg\.docker\machine\machines\public" -$Env:DOCKER_MACHINE_NAME = "public" -# Run this command to configure your shell: -# & "C:\Program Files\Docker Toolbox\docker-machine.exe" env public | Invoke-Expression -PS C:\Users\bg> & "C:\Program Files\Docker Toolbox\docker-machine.exe" env public | Invoke-Expression -PS C:\Users\bg> docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES - -``` - diff --git a/content/blog/free-books-from-msft.md b/content/blog/free-books-from-msft.md index 02de219..0618cfb 100644 --- a/content/blog/free-books-from-msft.md +++ b/content/blog/free-books-from-msft.md @@ -4,6 +4,7 @@ tags: [training] date: "12 Aug 2013" draft: false slug: "free-books-from-msft" +summary: Microsoft offers a large collection of free electronic books on topics including Windows, Office, Windows Server, Windows Phone, SQL Server, and SharePoint. --- Microsoft apparently has a phat stack of [free books](http://blogs.msdn.com/b/mssmallbiz/archive/2013/06/28/almost-150-free-microsoft-ebooks-covering-windows-7-windows-8-office-2010-office-2013-office-365-office-web-apps-windows-server-2012-windows-phone-7-windows-phone-8-sql-server-2008-sql-server-2012-sharepoint-server-2010-s.aspx) @@ -21,4 +22,4 @@ var allLinks = document.links; for (var i=0; i Could not complete logging in. -Thanks. VERY informative. All in all I think I'd rather just build my servers by hand. Scratch that, I'd rather build servers by hand with a floppy disk than deal with this. /rant +Thanks. VERY informative. All in all I think I'd rather just build my servers by hand. Scratch that, I'd rather build servers by hand with a floppy disk than deal with this. /rant \ No newline at end of file diff --git a/content/blog/nist-deprecates-sms.md b/content/blog/nist-deprecates-sms.md index a036ed6..67eee1e 100644 --- a/content/blog/nist-deprecates-sms.md +++ b/content/blog/nist-deprecates-sms.md @@ -3,6 +3,7 @@ date: "26 Jul 2016" tags: [compliance, nist] draft: false title: NIST Deprecates SMS 2FA +summary: NIST has announced that SMS messages should no longer be used as an Out of Band (OOB) token for 2 Factor Authentication (2FA) due to the risk of interception or redirection. Implementers of new systems are advised to consider alternative authenticators such as x509 or TOTP. --- While you were sleeping, NIST has released their latest public draft of @@ -21,4 +22,4 @@ From [SP 800-63B Section 5.1.3.2](https://github.com/usnistgov/800-63-3/blob/nis > two-factor authentication at the time of the change. OOB using SMS is deprecated, and may no longer be allowed in > future releases of this guidance. -So if you are using SMS as an OOB 2FA it may be time to consider moving to x509, TOTP, or some other factor. +So if you are using SMS as an OOB 2FA it may be time to consider moving to x509, TOTP, or some other factor. \ No newline at end of file diff --git a/content/blog/renaming-volume-groups-in-linux.md b/content/blog/renaming-volume-groups-in-linux.md index def93e1..b6eda23 100644 --- a/content/blog/renaming-volume-groups-in-linux.md +++ b/content/blog/renaming-volume-groups-in-linux.md @@ -4,6 +4,7 @@ tags: [sysadmin] date: "09 Mar 2013" draft: false slug: "renaming-volume-groups-in-linux" +summary: This article provides a step-by-step guide on how to rename volume groups in Linux. It includes instructions on changing the kernel boot parameters, remounting the filesystem, editing the /etc/fstab and /etc/grub.conf files, and rebooting the system to complete the renaming process. --- What is that you say? Cloned a Linux machine and decided to rename that misnamed volume group using vgrename /dev/vg_RAWRStupidName /dev/vg_NiceName? Oh and now your rebooted without first changing your /etc/fstab and /etc/grub.conf and get a good old fashioned Kernel Panic? @@ -18,4 +19,4 @@ Well lucky you I remembered to write this down: 1. Reboot 1. Repeat step 1-3 1. Edit */etc/grub.conf* with your new VG name -1. Breathe deep. +1. Breathe deep. \ No newline at end of file diff --git a/content/blog/screenshot-to-s3.md b/content/blog/screenshot-to-s3.md index d5470b4..2b576ee 100644 --- a/content/blog/screenshot-to-s3.md +++ b/content/blog/screenshot-to-s3.md @@ -3,6 +3,7 @@ date: 2016-02-29T11:19:26-05:00 draft: false title: Screenshot to S3 tags: ["aws", "blog"] +summary: A simple solution for managing images is described. Images are uploaded to S3 using Greenshot, Atom Editor, s3cmd, S3 Browser, and PowerShell. The script is added to Greenshot as an external command. When a screenshot is sent to S3, the script uploads the image with the appropriate name and copies a link to the clipboard. --- I've been writing in pure [markdown](https://daringfireball.net/projects/markdown/) @@ -69,4 +70,4 @@ Then in Greenshot I simply added the script as an external command: ![Greenshot External Command](https://data.brooksgarrett.com/screenshots/2016_02_29_11_59_18_Configure_command.png) Anytime I send the screenshot to S3 the PowerShell script will do all the -appropriate naming and copy a link into my clipboard. Woot. +appropriate naming and copy a link into my clipboard. Woot. \ No newline at end of file diff --git a/content/blog/sriracha-the-spice-of-life.md b/content/blog/sriracha-the-spice-of-life.md index 77c8e0e..4667380 100644 --- a/content/blog/sriracha-the-spice-of-life.md +++ b/content/blog/sriracha-the-spice-of-life.md @@ -4,6 +4,7 @@ tags: [philosophy] date: "25 Oct 2013" draft: false slug: "sriracha-the-spice-of-life" +summary: Sriracha's founder chose to prioritize providing a quality product over maximizing profits, setting an example for businesses to focus on quality work and personal satisfaction rather than relentless growth and profit maximization. --- *Note: This article is the start of a series investigating how cross industry lessons can be directly applied to the IT and Information Security spaces.* @@ -17,4 +18,4 @@ He could be *even richer*, but said no. That is a powerful lesson and describes Don't be confused. I have a family and bills so money is important but it isn't god. I want to work with a group of people where we can make enough money to be happy while focusing on doing wuality work that is personally and professionally satisfying. This ideal group doesn't need to win every Fortune 10 bid, isn't concerned with growing year over year, and doesn't care about the elusive 'massive deal.' Rather they focus on winning security assessments for customers that actually want security not checkboxes. They focus on reading, writing, speaking, consulting (real consulting not just pie charts), and enjoying the job. Money is important but only as much as is needed to maintain the existing standard of living and pay the bills. -Ultimately I call this the Sriracha Principle: Identify the point where you have 'enough' money, obtain enough work to meet that threshold, and focus on doing satisfying and quality work. +Ultimately I call this the Sriracha Principle: Identify the point where you have 'enough' money, obtain enough work to meet that threshold, and focus on doing satisfying and quality work. \ No newline at end of file diff --git a/content/blog/the-lamy-safari.md b/content/blog/the-lamy-safari.md index 9a9caf4..b356266 100644 --- a/content/blog/the-lamy-safari.md +++ b/content/blog/the-lamy-safari.md @@ -3,59 +3,12 @@ title: The Lamy Safari tags: [stationary] date: "09 Sep 2015" draft: false -slug: "the-lamy-safari" +summary: The Lamy Safari is a low-cost, plastic-body fountain pen with a steel nib. It is comfortable to hold and write with, and comes in a variety of colors. --- -I've been questioned multiple times about why I always seem to have one of my Lamy Safari pens clipped close at hand. -Typically the question is "Why is that pen the best pen?" +I've been questioned multiple times about why I always seem to have one of my Lamy Safari pens close at hand. + Typically the question is "Why is that pen the best pen?" > It's not. -The Lamy Safari is a low end pen from German manufacturer Lamy that is composed of a plastic body and a steel nib. -The pen itself is very light compared to "higher end" competitors. The nib is fairly rigid but never scratchy and I find - the Fine nib to be just right for my handwriting. I also like the way the grip has been contoured to provide - comfortable thumb and finger placement though not everyone agrees. It takes the Z24 converter meaning I can put - whatever ink I have handy in and not worry about proprietary cartridges. - -You shouldn't really care about these comments though. You can read -[many](http://www.pentorium.com/2012/07/01/lamy-safari-fountain-pen-review/), -[many](http://www.amazon.com/Lamy-Safari-Fountain-Pen-Charcoal/product-reviews/B0002T401Y) -[such](http://www.everydaycommentary.com/2013/09/lamy-safari-review.html) -[reviews](http://www.jetpens.com/Lamy-Safari-Fountain-Pen-Extra-Fine-Nib-Charcoal-Black-Body/reviews/1937). I don't need - to tell you why it is a great pen. Maybe though you are interested in why it is the pen I choose of all the many - available. - -First, I bought my first Safari after shopping [at Fahrney's](http://www.fahrneyspens.com/). If you've never been to -Fahrney's then you're missing an institution of Washington, D.C. A whole shop dedicated to the art of writing where -also, rumor has it, 5 of the last 6 sitting presidents purchased their pens. I went there to look at several options but - the Safari was the top of my list and after writing with several different pens I chose the Safari and a couple - converters to take home. It was my third fountain pen ever behind the Pilot Varsity (which I highly recommend) and the - Franklin Covey. - -I love the weight. It has a balance and precision that is unmatched. I didn't like how heavy some of the Cross pens felt - in hand. Also the Safari felt well balanced both with and without a posted cap (largely due again to the very light - weight.) The finger grips are a large complaint for people with larger hands but for me they felt just right. If you - don't like plastic then there is always the full line of Lamy Al Star. The weight and form of the Safari with an - aluminum body. - -Then there are the colors. - -![Assorted Lamy Safari and All Stars](https://data.brooksgarrett.com/images/safari_pens.jpg) - -A side story and a confession. I'm a conformist. I follow the rules and often lose for it. Secretly though I relish -small acts of rebellion. Cartoon socks under my suit. Cheap composition notebooks instead of fancy leather planners -(another entry for another time.) My pen is an extension of my personality. The -[Cross Townsend](http://www.fahrneyspens.com/Item--i-310250S) even comes in a Star Wars edition! My first Safari was a -deep blue for my Alma mater, [Georgia Southern](http://www.georgiasouthern.edu/). Now I carry a bright red to represent -my passion for [volunteering in the fire service](https://brooksgarrett.com/blog/what-i-wish-you-knew-about-volunteer/). -Ultimately the wide selection of colors feeds my ability to be distinct while still carrying a dignified writing -utensil. - -Last, it's cheap comparatively. For just $30 you can have your choice of the Safari lineup. In comparison a -[seven pack of Pilot Varsity pens](http://www.amazon.com/Pilot-Disposable-Fountain-Assorted-90029/dp/B00092PRCA) is just - under $15. Some excellent pens by Cross range from the $50 to the $1,000+ range. Yet I find $30 a sweet spot such that - I care enough to try and not lose it as well as not be embarrassed by it in public while simultaneously being cheap - enough that if I leave it on a plane I'm not crushed. - -In summary, the Lamy Safari isn't the "best pen" but it is my personal favorite. It is most importantly comfortable yet -also has personality and economy squarely in its camp. +The Lamy Safari is a low end pen from German \ No newline at end of file diff --git a/content/blog/windows-with-git.md b/content/blog/windows-with-git.md index 332ff53..19dd572 100644 --- a/content/blog/windows-with-git.md +++ b/content/blog/windows-with-git.md @@ -3,6 +3,7 @@ date: "28 Feb 2016" tags: [development, windows, git] draft: false title: Windows with Git +summary: The author describes how to set up a Windows machine for development using Git, Atom as a text editor, KeePass 2 and KeeAgent for password management, and plink for SSH. --- I've nearly exclusively used Linux for all blogging, development, and research. @@ -19,4 +20,4 @@ I'm using the following tools: + [Git for Windows](https://git-scm.com/download/win) + [KeePass 2](http://keepass.info/) + [KeeAgent](http://lechnology.com/software/keeagent/) -+ [plink](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) ++ [plink](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) \ No newline at end of file