<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Joey D's Mind Share]]></title><description><![CDATA[Technobabble on the web where it belongs.]]></description><link>http://www.dissmeyer.com/</link><image><url>http://www.dissmeyer.com/favicon.png</url><title>Joey D&apos;s Mind Share</title><link>http://www.dissmeyer.com/</link></image><generator>Ghost 3.9</generator><lastBuildDate>Mon, 13 Apr 2026 14:23:15 GMT</lastBuildDate><atom:link href="http://www.dissmeyer.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Using Ansible to Remove Docker Engine from a CentOS/RHEL host]]></title><description><![CDATA[Need to remove Docker Engine (enterprise or CE) from a bunch of hosts? Use Ansible! Example playbook enclosed.]]></description><link>http://www.dissmeyer.com/2022/04/01/using-ansible-to-remove-docker-engine-from-a-centos-rhel-host/</link><guid isPermaLink="false">62017db03349be04489d3c08</guid><category><![CDATA[docker]]></category><category><![CDATA[uninstall]]></category><category><![CDATA[ansible]]></category><category><![CDATA[automation]]></category><category><![CDATA[playbook]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Fri, 01 Apr 2022 13:00:51 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1637778352878-f0b46d574a04?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGRvY2tlcnxlbnwwfHx8fDE2NDg4MTc0Njg&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1637778352878-f0b46d574a04?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGRvY2tlcnxlbnwwfHx8fDE2NDg4MTc0Njg&ixlib=rb-1.2.1&q=80&w=2000" alt="Using Ansible to Remove Docker Engine from a CentOS/RHEL host"><p>Docker Engine has gone through a lot of changes over the last few years. There is enterprise edition, community edition, Docker Desktop has been re-licensed... lots of changes. There were several times where I needed to fully remove <em>all</em> possible Docker engine installs and start over with a fresh install of the latest Docker-CE. To help, and make the job easy, I ended up using an extremely simply playbook to get the job done.</p><p>Here is an example of how to use Ansible to remove Docker Engine from a CentOS/RHEL-based host.</p><p>Playbook is below!</p><!--kg-card-begin: markdown--><pre><code>---
- name: Playbook to stop and remove all Docker related packages and file from hosts
  hosts: all
  gather_facts: false
  become: yes
  tasks:
    - name: Stop the Docker service
      ignore_errors: yes
      service:
        name: docker
        state: stopped
    
    - name: Remove the docker-ee package (enterprise)
      ignore_errors: yes
      yum:
        name: docker-ee
        state: removed

    - name: Remove the docker-ce package (community edition)
      ignore_errors: yes
      yum:
        name: docker-ce
        state: removed

    - name: Remove the base docker package
      ignore_errors: yes
      yum:
        name: docker
        state: removed

    - name: Delete the /var/lib/docker directory
      ignore_errors: yes
      file: 
        path: /var/lib/docker
        state: absent
</code></pre>
<!--kg-card-end: markdown--><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[Colorizing Bash Shell for All Users in Ubuntu 20.04]]></title><description><![CDATA[By default, the Ubuntu shell is black and white text only. Let's add some color to the bash shell in Ubuntu.]]></description><link>http://www.dissmeyer.com/2021/04/14/colorizing-bash-shell-for-all-users-in-ubuntu-20-04/</link><guid isPermaLink="false">60766bb405b9322b96efc115</guid><category><![CDATA[Ubuntu]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Wed, 14 Apr 2021 04:22:53 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1502691876148-a84978e59af8?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGNvbG9yfGVufDB8fHx8MTYxODM3NDA2OQ&amp;ixlib=rb-1.2.1&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1502691876148-a84978e59af8?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=MnwxMTc3M3wwfDF8c2VhcmNofDR8fGNvbG9yfGVufDB8fHx8MTYxODM3NDA2OQ&ixlib=rb-1.2.1&q=80&w=2000" alt="Colorizing Bash Shell for All Users in Ubuntu 20.04"><p>By default, the Ubuntu shell is black and white text only. Let's add some color to the bash shell in Ubuntu for all users!</p><p>Simply add the text below to the end of the <code>/etc/bash.bashrc</code> file (requires sudo permissions to edit this file).</p><pre><code>cat &lt;&lt; EOF &gt;&gt; /etc/bash.bashrc
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

if [ -n "$force_color_prompt" ]; then
    if [ -x /usr/bin/tput ] &amp;&amp; tput setaf 1 &gt;&amp;/dev/null; then
        # We have color support; assume it's compliant with Ecma-48
        # (ISO/IEC-6429). (Lack of such support is extremely rare, and such
        # a case would tend to support setf rather than setaf.)
        color_prompt=yes
    else
        color_prompt=
    fi
fi
EOF
</code></pre><p>Here is what my shell looked like before the change...</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2021/04/image-5.png" class="kg-image" alt="Colorizing Bash Shell for All Users in Ubuntu 20.04"></figure><p>And here is what it looks like now.</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2021/04/image-4.png" class="kg-image" alt="Colorizing Bash Shell for All Users in Ubuntu 20.04"></figure><p>This makes it a bit easier on the eyes when working in the shell.</p><p>There is a good chance that this will work in Ubuntu 18.04. Give it a try.</p><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[Setting up Docker and WSL2 on Windows 10 for the Sysadmin]]></title><description><![CDATA[WSL 2, Docker Desktop, VS Code, Windows Terminal, and Windows 10. All great tools for the sysadmin. Read along for the install and setup guide!]]></description><link>http://www.dissmeyer.com/2020/10/14/setting-up-windows-10-for-the-linux-sysadmin/</link><guid isPermaLink="false">5f865bd64cb7cc4f07a50d24</guid><category><![CDATA[Windows 10]]></category><category><![CDATA[wsl2]]></category><category><![CDATA[docker]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Wed, 14 Oct 2020 03:38:33 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1518432031352-d6fc5c10da5a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1518432031352-d6fc5c10da5a?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=2000&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"><p>We are going to install a bunch of tools that, as a Sysadmin in 2020 for Windows or Linux, well... you NEED to be using these tools from here on out otherwise you will have a serious knowledge deficit. </p><p>Here is the short list:</p><ol><li>Windows Terminal</li><li>Visual Studio Code</li><li>Windows Subsystem for Linux version 2 (WSL 2)</li><li>Docker Desktop for Windows (using WSL 2)</li></ol><p>First, update Windows 10 to the latest and greatest version. At the time of this writing build 2004 (April, 2020) is what you need to be running. You need this version because WSL2 is generally available in this release. Seriously, just update. You can thank me later.</p><p>Next, remove all other Hypervisors like Oracle VirtualBox or VMware Workstation. WSL2 requires the built-in Hyper-V so no other hypervisors can co-exist. Once you start working with Docker you'll understand why you won't want to work a great deal with Vagrant boxes or virtual machines anymore anyways. Also go ahead and remove Docker Desktop for Windows if it is installed (we will re-install it later).</p><h2 id="windows-terminal">Windows Terminal</h2><p>Lets install the new Windows Terminal first! </p><p>There are multiple ways to install it on your workstation. The Github project page has all of the available installation methods listed.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://github.com/microsoft/terminal"><div class="kg-bookmark-content"><div class="kg-bookmark-title">microsoft/terminal</div><div class="kg-bookmark-description">The new Windows Terminal and the original Windows console host, all in the same place! - microsoft/terminal</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://github.githubassets.com/favicons/favicon.svg" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"><span class="kg-bookmark-author">microsoft</span><span class="kg-bookmark-publisher">GitHub</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://repository-images.githubusercontent.com/100060912/dc77b180-764a-11e9-9e12-aace7d0ecd7d" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"></div></a></figure><h2 id="visual-studio-code">Visual Studio Code</h2><p>Download and install VS Code from here: <a href="https://code.visualstudio.com/Download">https://code.visualstudio.com/Download</a></p><h2 id="wsl2">WSL2</h2><p>Now it is time to enable WSL 2. </p><ol><li>Open Powershell as an admin. Run this...</li></ol><pre><code class="language-powershell">dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart</code></pre><p>2. Then enable the virtual machine feature by running this...</p><pre><code class="language-powershell">dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart</code></pre><p>3. Download and run the WSL2 Kernel update package from here:  <a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi">https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi</a></p><p>4. Set WLS2 as the default version. Run this from Powershell...</p><pre><code class="language-powershell">wsl --set-default-version 2</code></pre><p>5. Download your preferred Linux distros from the Microsoft Store in Windows 10: <a href="https://aka.ms/wslstore">https://aka.ms/wslstore</a>...</p><p>6. Reboot! Yeah seriously – reboot right now because the next step won't work until the virtual platform is fully enabled.</p><p>7. Optional final step - Make sure that any of your already installed Linux distros are running with WSL version 2. Skip this step if you haven't installed any before.</p><p>To check, after your workstation is back online execute this from Powershell...</p><pre><code class="language-powershell">wsl --list --verbose</code></pre><p>For anything that has '1', you will want to upgrade it to WSL 2. Here is an example...</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/10/image-1.png" class="kg-image" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"></figure><p>We can see the version is '1' To upgrade, just execute this...</p><pre><code class="language-powershell">wsl --set-version &lt;distribution name&gt; &lt;versionNumber&gt;</code></pre><p>So for my example, I ran this...</p><pre><code class="language-powershell">wsl --set-version Ubuntu 2</code></pre><p>And here is the output...</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://www.dissmeyer.com/content/images/2020/10/image-2.png" class="kg-image" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"><figcaption>Conversion complete = Success</figcaption></figure><p>Gravy :)</p><h2 id="docker-desktop-for-windows">Docker Desktop for Windows</h2><p>Download and install Docker Desktop Stable 2.4 or newer: <a href="https://docs.docker.com/docker-for-windows/wsl/">https://docs.docker.com/docker-for-windows/wsl/</a>.</p><blockquote>Yes... you can install Docker Desktop Edge if you want. I just prefer the stable releases. Nonetheless, feel free to go nuts.</blockquote><p>During installation, make sure the WSL 2 option is enabled. </p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://www.dissmeyer.com/content/images/2020/10/image-3.png" class="kg-image" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"><figcaption>Make sure you choose to enable WSL 2 during install!</figcaption></figure><p>Docker doesn't automatically start for the first time, so launch Docker Desktop and when it starts up run, run through the tutorial if you want then check the settings and verify that WSL 2 is being used.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://www.dissmeyer.com/content/images/2020/10/image-4.png" class="kg-image" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"><figcaption>Make sure WSL 2 is enabled!</figcaption></figure><p>And finally, make sure under Settings &gt; Resources &gt; WSL Integration that your installed Linux distro is selected.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="http://www.dissmeyer.com/content/images/2020/10/image-5.png" class="kg-image" alt="Setting up Docker and WSL2 on Windows 10 for the Sysadmin"><figcaption>Enable your Linux distro for WSL integration in Docker Desktop</figcaption></figure><p>Your Windows 10 workstation is all set up with WSL 2 and Docker Desktop integration! Download some Docker images, sign into Docker Hub, pretty much do whatever you like at this point.</p><p>I recommend starting with Scott Hanselman's blog to learn more about working with Windows Terminal (including how to customize it), dive into the plugins for VS Code, and have fun learning!</p><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[Windows 10 Sticky Notes app has moved to the Windows Store]]></title><description><![CDATA[Wait a tick, what happened to the Windows "Sticky Notes" app? It used to be built into Windows 10! Oh that's right... it moved to the Microsoft Store. Link inside!]]></description><link>http://www.dissmeyer.com/2020/10/14/windows-10-sticky-notes-app-has-moved-to-the-windows-store/</link><guid isPermaLink="false">5f8651ab4cb7cc4f07a50cd3</guid><category><![CDATA[Windows 10]]></category><category><![CDATA[apps]]></category><category><![CDATA[2020]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Wed, 14 Oct 2020 01:47:35 GMT</pubDate><media:content url="http://www.dissmeyer.com/content/images/2020/10/2020-10-13-21_46_33-Window.png" medium="image"/><content:encoded><![CDATA[<img src="http://www.dissmeyer.com/content/images/2020/10/2020-10-13-21_46_33-Window.png" alt="Windows 10 Sticky Notes app has moved to the Windows Store"><p>I'm late to the party on this one, but Windows 10 no longer has the Sticky Notes app built-in. It has been moved to the Microsoft Store (a.k.a. the built-in Windows 10 app store).</p><p>Here is a direct link to the app in the store: <a href="https://www.microsoft.com/en-us/p/microsoft-sticky-notes/9nblggh4qghw?activetab=pivot:overviewtab">https://www.microsoft.com/en-us/p/microsoft-sticky-notes/9nblggh4qghw?activetab=pivot:overviewtab</a></p><p>And yep, it is still free. Only issue... you must sign in with your Microsoft account to use it. Oh well...</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/10/image.png" class="kg-image" alt="Windows 10 Sticky Notes app has moved to the Windows Store"></figure><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[5 Hours of Soundtrack Music from Animal Crossing New Horizons]]></title><description><![CDATA[Nintendo's new game Animal Crossing New Horizons is exactly what we needed for this current time. Here is 5 hours of the original soundtrack to put on while you work from home!]]></description><link>http://www.dissmeyer.com/2020/10/14/5-hours-of-animal-crossing/</link><guid isPermaLink="false">5e7e4f1776c1610723754455</guid><category><![CDATA[music]]></category><category><![CDATA[Nintendo]]></category><category><![CDATA[work from home]]></category><category><![CDATA[animal crossing]]></category><category><![CDATA[2020]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Wed, 14 Oct 2020 01:12:08 GMT</pubDate><media:content url="http://www.dissmeyer.com/content/images/2020/10/Walmart-AnimalCrossing-NewHorizons-Wallpaper-Characters.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://www.dissmeyer.com/content/images/2020/10/Walmart-AnimalCrossing-NewHorizons-Wallpaper-Characters.jpg" alt="5 Hours of Soundtrack Music from Animal Crossing New Horizons"><p>Nintendo's new game Animal Crossing New Horizons is exactly what we needed for this current time. Definitely purchase it for your Nintendo Switch if you can.</p><p>Here is the full original soundtrack to put on while you work from home!</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/8Xpek37pFjk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[Common problems with dynamic mapping and missing index templates in the Elastic Stack]]></title><description><![CDATA[Elasticsearch's dynamic mapping is great to quickly get up and running with ELK. But index templates are needed to avoid major problems.]]></description><link>http://www.dissmeyer.com/2020/02/13/index-templates-in-the-elastic-stack/</link><guid isPermaLink="false">5e44b0f5154a131695e41cf9</guid><category><![CDATA[elk]]></category><category><![CDATA[elasticsearch]]></category><category><![CDATA[Performance]]></category><category><![CDATA[kibana]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Thu, 13 Feb 2020 05:54:01 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=2000&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1551288049-bebda4e38f71?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=2000&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"><p>Here is the scenario: You started indexing data into Elasticsearch and you immediately want to start making some cool visualizations in Kibana. But then you happen to notice that your fields are of the text string data type instead of a long or float number type. So much for trying to create a line chart like you wanted!</p><p><em>What is this madness!? How do I fix this!?</em></p><p>The solution: Index Templates.</p><p>You need to create an index template for the index and define the data type for the field. That is how you fix the problem.</p><p><em>Whoa! Ok hold on a moment, wait just a minute there Joey D let's slow down. Why do I need to create an index template? Doesn't Elasticsearch automatically detect the field data type when I POST the document to the index?</em></p><p>It is true that the Elastic Stack is designed to allow you to get started very quickly with visualizing and indexing your data. One way it does this is by <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-mapping.html">dynamic mapping</a>. What this means is that you can POST a document directly to Elasticsearch and it will create the index (if it doesn't exist yet) and any new fields will auto-magically be detected and created with the closest data type that Elasticsearch <em>thinks </em>it should be – And that is the catch! In order to enforce the field data type you must define an index template for the index. Don't get me wrong about this feature though. Elasticsearch really does a fantastic job in automatically detecting what the field's data type should be. Sometimes Elasticsearch guesses wrong which is why index templates are a necessity, especially when planning to deploy to production and using the stack for the long term.</p><p>Index templates are how you define a schema mapping for an index. In it you define all of the field data types and so on. There are many different settings you can define in an index template (especially for ILM - another topic for another time). This is why creating an index template for your index is an important step to ensure data consistency.</p><p>So let's dive into some examples!</p><p>First, some simple environmental items:</p><ul><li>I'll be using the <a href="https://insomnia.rest/">Insomnia REST client </a>to POST documents to my Elastic Stack cluster.</li><li>My test Elastic Stack cluster is running Elasticsearch and Kibana v7.5.2. Xpack security is not enabled.</li><li>The index will be called "myindex".</li><li>Each document I POST will have two numeric fields: <br><code>should-be-type-long</code> and <code>should-be-type-float</code>.</li></ul><p>Let's create the index and send the first document...</p><pre><code>POST http://mycluster:9200/myindex/_doc
{
	"should-be-type-long": 100,
	"should-be-type-float": 0.002251100009
}</code></pre><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-3.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>In the response from Elasticsearch we get HTTP 201 Created. We can see the <code>result</code> is <code>created</code> and there are no failures. </p><p>If we perform a search request against the index API for <code>myindex</code>, we can see the document we just created.</p><pre><code>GET http://192.168.56.111:9200/myindex/_search</code></pre><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-4.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>To verify the correct data type mapping was applied for each of the fields, we can use the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html">Get mapping API</a>.</p><pre><code>GET http://192.168.56.111:9200/myindex/_mapping</code></pre><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-5.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>The float field is the <code>float</code> type and the long field is the <code>long</code> type. This is exactly what we want. </p><p>But what if the value for <code>should-be-type-long</code> is "100.0" instead of a plain integer? </p><hr><p>Let's start over. I deleted the index and sent a new POST with the new values...</p><pre><code>DELETE http://192.168.56.111:9200/myindex

POST http://192.168.56.111:9200/myindex/_doc
{
	"should-be-type-long": 100.0,
	"should-be-type-float": 50.000000
}</code></pre><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-7.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>Querying the get mapping API shows that this field is now a float type.</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-6.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>In this example we observe that Elasticsearch properly assumed that the long field should be a float data type because of the decimal. If the value was "100" (a plain integer) then it would be a long type as shown in the first example.</p><p>What do you think will happen if I don't delete the index, but change the value for the <code>should-be-type-long</code> field from a floating point number back to a long?</p><hr><p>This time, I will <u>not</u> start over and delete the index. I'm going to leave the existing index and mapping in place as-is.</p><p>Remember that in the previous example we see both fields are of the float data type.</p><p>I'm POSTed a new document to the same index, but changed the values to longs then use the search API to view the documents...</p><pre><code>POST http://192.168.56.111:9200/myindex/_doc
{
	"should-be-type-long": 123,
	"should-be-type-float": 456
}

GET http://192.168.56.111:9200/myindex/_search</code></pre><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-8.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>We can see both documents. The first with the values of 100.0 and 50.000000 and the 2nd document with 123 and 456 for the long and float fields respectively.</p><p>If you take a look at the mapping...</p><pre><code>GET http://192.168.56.111:9200/myindex/_mapping</code></pre><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-9.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>The field mappings did not change. Why not?</p><p><strong>Because field mappings are applied <em>only</em> when the index is created. </strong></p><p>Since I just added more documents to an existing index nothing happens to the field mappings because mappings are applied only at index creation. If you want to change a field's data type, you must create a new index or re-index the existing data into a new one that has new mappings. Details about why can be seen <a href="https://www.elastic.co/blog/changing-mapping-with-zero-downtime">in this official Elastic blog post</a>.</p><p><em>Important note: If you change field mappings in an index template, and you use Kibana, remember to refresh the index patterns in Kibana.</em></p><hr><p>Some very interesting issues can happen in environments where index templates do not exist. One of the most obvious is that in Kibana, it would appear that string fields are duplicated with the duplicate having <code>.keyword</code> appended at the end of the field's name. For example, looking at the index pattern in Kibana we might see something like this...</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image-10.png" class="kg-image" alt="Common problems with dynamic mapping and missing index templates in the Elastic Stack"></figure><p>There is an excellent short <a href="https://stackoverflow.com/questions/48869795/difference-between-a-field-and-the-field-keyword">post about this </a>on Stack Overflow. The SO post explains what is going on technically so I'll let you read that (see the first answer) if you are interested.</p><p>The TL;DR on this is that both fields are correct from an Elasticsearch point of view. However only <code>keyword</code> string data types are aggregatable in Kibana while the <code>text</code> string data type is not. The good news is that both are searchable in Elasticsearch queries. But the bad news is that in Kibana a field must be aggregatable in order to use it in visualizations. All non-aggregatable fields are of the <code>text</code> string data type.</p><p>Without an index template available to let Elasticsearch know how to handle the string field type it is processing, Elasticsearch's dynamic mapping feature will auto-magically makes <em>both</em> string types for each document in the index. This can be bad depending on the size of the data set as this <strong>will</strong> duplicate the storage required, in both memory and disk volume, to store the field data in the index. </p><p>In another example, I've seen a new index created where a field was supposed to be a float data type, but the first document's field in the new index had a value of "0" (with no decimal) so the dynamic mapping created the field as a <code>long</code>. All future documents sent to Elasticsearch had field values that really were floats (i.e. 0.593.... or 0.900241... and so on) but because the initial index was created with the mapping of long, they couldn't create any meaningful Kibana dashboards. It wasn't until I helped re-index the data set with an index template that the float numbers worked as expected and we could build dashboards.</p><hr><p>So... do you want to improve both indexing, search speeds, or Kibana dashboards for an index? Make sure the index has an index template with field mappings.</p><p>Do you want to reduce the memory footprint of an index? Make sure the index has an index template with field mappings.</p><p>Do you want to ensure field data type consistency in an index or through common index patterns (such as timeseries indices like metricbeat-yyyy.MM.dd)? Index template... field mappings...</p><p>Do you want/need to reduce the shard count of an index? Index template... field mappings...</p><p>Do you want/need to reduce the disk volume footprint of an index? Index template... field mappings... You get the point.</p><p>I hope all of this information helps you with your projects and helps you understand the why index templates in Elasticsearch are an import peice of the data modeling puzzle when architecting, planning, and improving performance of your Elastic Stack clusters.</p><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[Rsync error with CentOS 7 Vagrant boxes on Windows 10]]></title><description><![CDATA[Having rsync errors with the updated CentOS vagrant boxes? You need to add a synced folder option to your vagrantfile to fix it.]]></description><link>http://www.dissmeyer.com/2020/02/11/issue-with-centos-7-vagrant-boxes-on-windows-10/</link><guid isPermaLink="false">5e421aaf154a131695e41c4f</guid><category><![CDATA[vagrant]]></category><category><![CDATA[Centos]]></category><category><![CDATA[Windows]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Tue, 11 Feb 2020 04:12:19 GMT</pubDate><media:content url="http://www.dissmeyer.com/content/images/2020/02/Vagrant-series-720p.png" medium="image"/><content:encoded><![CDATA[<img src="http://www.dissmeyer.com/content/images/2020/02/Vagrant-series-720p.png" alt="Rsync error with CentOS 7 Vagrant boxes on Windows 10"><p>On Windows 10, if you update your CentOS 7 Vagrant box to v1905.01 you might notice a very annoying rsync error after running <code>vagrant up</code>...</p><p>The error looks very similar to this:</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/02/image.png" class="kg-image" alt="Rsync error with CentOS 7 Vagrant boxes on Windows 10"></figure><p>The key text here is "There was an error when attempting to rsync a synced folder".</p><p>The known issues documentation in the official CentOS blog article <a href="https://blog.centos.org/2019/07/updated-centos-vagrant-images-available-v1905-01/">Updated CentOS Vagrant Images Available (v1905.01)</a> explains everything. In the updated CentOS box images VirtualBox Guest Additions are no longer pre-installed which means rsync won't work out of the box, hence the error we see.</p><p>To fix this issue you have two options. Both involve adding a configuration line to the vagrantfile:</p><ol><li>Install the vagrant-vbguest plugin and add <br><code>config.vm.synced_folder ".", "/vagrant", type: "virtualbox"</code> <br>to the top of your vagrantfile. This will allow synced folders to work like before.</li><li>Disable the synced folder setting in your vagrantfile by adding <br><code>config.vm.synced_folder ".", "/vagrant", disabled: true</code>. </li></ol><h3 id="the-first-option">The First Option</h3><p>If you run provision scripts from the vagrantfile, or if you have additional automation tasks then you will want to go with option #1 (which I recommend anyways).</p><p>First you'll have to install the vagrant-vbguest plugin. Execute the command below:</p><pre><code>$ vagrant plugin install vagrant-vbguest</code></pre><p>Then, edit your vagrantfile and add the synced folder option. Here is an example vagrantfile:</p><pre><code>Vagrant.configure("2") do |config|
  config.vm.synced_folder ".", "/vagrant", type: "virtualbox" 
  config.vm.define "myhost" do |myhost|
    myhost.vm.box = "centos/7"
    myhost.vm.hostname = "myhost"
    myhost.vm.provider "virtualbox" do |vb|
      vb.gui = false
      vb.memory = "2048"
      vb.name = "myhost"
      vb.linked_clone = true
    end
  end
end</code></pre><h2 id="the-second-option">The Second Option</h2><p>If you don't have a need for synced folders, then just disable the option in your vagrantfile. It will look similar to this:</p><pre><code>Vagrant.configure("2") do |config|
  config.vm.synced_folder '.', '/vagrant', disabled: true
  config.vm.define "myhost" do |myhost|
    myhost.vm.box = "centos/7"
    myhost.vm.hostname = "myhost"
    myhost.vm.provider "virtualbox" do |vb|
      vb.gui = false
      vb.memory = "2048"
      vb.name = "myhost"
      vb.linked_clone = true
    end
  end
end</code></pre><hr><p>This will get you up and running with the updated CentOS vagrant boxes. Make sure you read the official blog post linked above as well just to make sure you aren't missing anything.</p><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[The easy way to use PuTTY with Vagrant on Windows]]></title><description><![CDATA[Want to use PuTTY as your ssh client with Vagrant? Thanks to a community Vagrant plugin it is easier than ever to do this.]]></description><link>http://www.dissmeyer.com/2020/01/07/putty-with-vagrant-on-windows/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dff7</guid><category><![CDATA[devops]]></category><category><![CDATA[Windows]]></category><category><![CDATA[vagrant]]></category><category><![CDATA[ssh]]></category><category><![CDATA[putty]]></category><category><![CDATA[sysadmin]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Tue, 07 Jan 2020 19:04:54 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1578351709164-bb8412d997dd?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1578351709164-bb8412d997dd?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="The easy way to use PuTTY with Vagrant on Windows"><p>This is for the Windows-based SysAdmin and DevOps folks that use Vagrant for testing and development and prefer PuTTY as their SSH client.</p><!--kg-card-begin: markdown--><p>Only three steps required!</p>
<ol>
<li>Add PuTTY to your system PATH. This automatically happens if you use the <a href="https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html">PuTTY Windows MSI installer</a>.</li>
<li>Download and install <a href="https://www.vagrantup.com/">Vagrant</a> for Windows. Update it if you need to.</li>
<li>Install the <a href="https://github.com/nickryand/vagrant-multi-putty">nickryand/vagrant-multi-plugin</a> for Vagrant.</li>
</ol>
<p>Once you start your vagrant project (<code>vagrant up</code>) and your VMs are running, all you need to do is execute <code>vagrant putty &lt;hostname&gt;</code> to use PuTTY as your SSH client.</p>
<p>For example, in one of my new projects I have a vagrant host named <code>elasticmaster1</code>.</p>
<p>I stared up my vagrant project, waited for the VMs to start, then I executed<br>
<code>vagrant putty elasticmaster1</code>...</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/01/image-1.png" class="kg-image" alt="The easy way to use PuTTY with Vagrant on Windows"></figure><p>Vagrant connects to the VM and launches the SSH session in PuTTY!</p><figure class="kg-card kg-image-card"><img src="http://www.dissmeyer.com/content/images/2020/01/image-2.png" class="kg-image" alt="The easy way to use PuTTY with Vagrant on Windows"></figure><p>With this plugin there is no further customization needed and makes the testing and dev workflow much more efficient.</p><p>-Joey D</p>]]></content:encoded></item><item><title><![CDATA[Marriage]]></title><description><![CDATA[Some good hard truths about marriage, why it is good, what it means, and why it should be taken seriously.]]></description><link>http://www.dissmeyer.com/2019/10/17/marriage/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dfe2</guid><category><![CDATA[Opinion]]></category><category><![CDATA[marriage]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Thu, 17 Oct 2019 01:18:02 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1513279922550-250c2129b13a?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1513279922550-250c2129b13a?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Marriage"><p>Some good hard truths about marriage, why it is good, what it means, and why it should be taken seriously.</p>
<p>I've been holding on to this post for a while now (well over 2 years). I've added and edited this post so many times before publishing it and, if I'm really honest with myself, I don't think I'll ever be done because of all of the things that I want to share. But it has been long enough and I don't think I'll ever have this post be 100% perfect. So it is time to share it in the current state.</p>
<p>I do have a disclaimer: I am most likely going to get into some trouble with this post because <em>apparenty</em> the topic of marriage is a controversial subject in this day and age. I think it is wise to talk about controversial topics because, as humans, we have the unique opportunity to learn from each other. If something is incorrect, if we don't talk about things then how do we grow? How do we learn? I think you get the point.</p>
<p>Also this will be a long post so just skip it if you don't want to read. Finally, I probably won't be commenting or reading any of the comments so please don't expect a response from me here.</p>
<hr>
<p>I don't watch too many movies anymore as I'm very aware now of what types of worldviews and philosophies are being promoted in them. Not sure why this is but I heavily analyze things in movies now. Maybe this is just me getting older...</p>
<p>A little while ago I decided to watched the movie &quot;The Founder&quot;. It is a biopic of Ray Kroc and the McDonald's brothers and sort of told the story about the rise of the McDonald's restaurant empire and how it came to be. It was really good! I think this is definitely one of Michael Keaton's best performances by far. It is really interesting to see a take on how things might have happened with regards to business dealings and actual events that happened behind the scenes in how the McDonald's Corp came to be.</p>
<p>Without spoiling anything about the plot of the movie, there were a few parts of it that sort of tap into Ray Kroc's marriage and divorce. The actors and actresses do an outstanding job of making you 'feel' the emotions of the scenes and what is going on in the story. This is why I think movies have an effect me more than they used to...</p>
<p>One of the things that I know about myself is that I care deeply about relationships. I have the gift of discernment which means I am able to quite easily place myself into other people's shoes, to feel what they are feeling so to speak. So when there are scenes in movies or TV that deal with divorce or cheating, I don't do well with it and have a very hard time getting past the 'feelings' of the scene. I get upset because it goes against the core of my being.</p>
<p>Now, please don't think that I remain in this state! Yes I do get past the feeling, or feelings. I don't stay depressed. Sometimes, as an outcome of the film, I find myself reflecting on my own attitude, my own beliefs, or my own actions, and my own behaviors. I start to think about what I am doing in my life. I think about my family and question myself about how I am maintaining my relationships with my wife and kids and ask myself if I am doing anything wrong or anything against what I have made promises on.</p>
<p>I'll just come out and say it...</p>
<p><em>Divorce is not a good thing.</em></p>
<p>I hope you really read what I am trying to say.</p>
<p>Divorce itself, the act, is not a <em>good thing</em>.</p>
<p>It is not a good thing. Not at all.</p>
<p>I feel that I should be extremely clear on what I am trying to say, so I will. I do not believe that divorce is a <em>good thing</em>. There is no way that you can convince me that divorce is an act that is positive or <em>good</em> for someone.</p>
<p>This does not mean that I am saying a person that has chosen to divorce their spouse or have been forced to go through the divorce experience is a bad or evil person. I am not an idiot. Divorce happens for a variety of reasons and it does happen between some people. And yes, the reasons why divorce can happen may be justified or even sometimes necessary.</p>
<p>So again, I am not saying that divorced people are evil, nor do I treat them that way. All that I am saying my worldview does not support the act of divorce as a <em>good thing</em>.</p>
<p>Why do I believe this?</p>
<p>My reasons as to why I believe that divorce is a bad thing is multi-dimensional as well as complicated. I've been through some very tough times, as have many of my own close family members and friends. I will do my best to attempt to answer why.</p>
<p>One reason is because I am a 'relationship guy'. I care deeply about relationships in general. This is the way my brain is wired and it affects how I interact with people in my life and how I operate in general. I believe in building positive relationships with as many people as I can, building my network of people, helping others succeed, connecting with others on a real and honest level. I use keywords here for a reason: building, connecting, success, commitment, excellence, and the list goes on. Please don't misunderstand when I say this. I am NOT a perfect person at all. I do make mistakes just like everyone else. I am human. I do suffer from regret from time to time as well. On with the story...</p>
<p>We all know what divorce is. Divorce is the severing of relationships. Note that I say &quot;relationships&quot;. It is plural. Divorce means &quot;to sever&quot;, &quot;to dissassociate&quot;. It is an act of separation by force or fiat. The purpose of divorce, in the marriage context, is to destroy that marriage relationship. It doesn't only sever the two people that are married. It also seperates friendships and families that may have been grown close over the years. Friends typically have to choose a side. Children also have to go through this process of having to bifurcate their father and mother relationships and treat them differently or act differently towards each. Insecurities appear. Divorce is a distructive act with lasting ripple effects across time.</p>
<p>I will go even farther to say this --- All divorces occur due to selfishness.</p>
<p>Every one of them.</p>
<p>For those that have cheated on their spouses, it is because you made the decision that your own selfishness matters more. For those that verbally or physically abuse your spouses and/or children, you somehow selfishly convince yourself that it is OK to do such an act even though you know it was wrong. Selfishness is deception. Deception is real. Divorce is always caused by some type of selfishness from at least one person in the marriage relationship which is pathological in nature.</p>
<p>Did you know that even with the high divorce rate and it's commonality in today's day and age that divorce is still regarded as a 'negative' thing? I'll say again that yes I do believe it is a very bad thing. With the destruction that divorce causes how can anyone possibly think it is a good thing?</p>
<p>With that being said, for those that are married or dating couples or those that want to marry, I think it is important that we really think about what we are doing in our relationships and really take in the gravity of the situation.</p>
<p>Here are a few key things that I hope you think about. Read them all slowly. Read them out loud if you can:</p>
<ul>
<li>Marriage is a promise, it is a choice, it is a decision.</li>
<li>Marriage is for life.</li>
<li>Marriage is fun! (Yes, it really is!)</li>
<li>Marriage is a gift!</li>
</ul>
<p><strong>Marriage is designed to make us more self-less and less selfish over time.</strong></p>
<p>I hope you really think about this last one. Over time it becomes less about &quot;me&quot; and more about &quot;us&quot;. Marriage, if done correctly, is designed to make us less selfish and more selfless. It is all about 'service', giving, gratefulness...</p>
<p>.....</p>
<p>I've come up with a list of words that, I think, help to describe what marriage is all about. Seriously think about these words and what they mean to you:</p>
<ul>
<li>Commitment</li>
<li>Integrity</li>
<li>Dedication</li>
<li>Dependable</li>
<li>Credible</li>
<li>Honor</li>
<li>Trust</li>
<li>Discipline</li>
<li>Intimacy</li>
<li>Sacredness</li>
<li>Service</li>
<li>Responsibility</li>
<li>Accountability</li>
<li>Promises</li>
<li>Best</li>
<li>Hope</li>
<li>Love</li>
<li>Beauty</li>
<li>Thoughtfullness</li>
</ul>
<p>Imagine that each word here is written down on a survey about marriage. And next to each word is a check box, then this survey is given to your spouse and they are asked to check every word they feel that you do have. And when they submitted this survey, they were HONEST.</p>
<p>** How many check marks would you have? **</p>
<p>...</p>
<p>I think that for some of you this really hits home.</p>
<p>It does for me. I am not perfect whatsoever. Not even close.</p>
<p>I start thinking about some of my own actions lately and some of the things that I've said that there is no way my wife would have placed a check mark for! I know this, and it makes me want to be a better man and not do it again. I care deeply for my wife and children and I don't want to make mistakes.</p>
<p>As a married man I would hope that my wife would check every box on that survey not because I simply want to pass the survey with flying colors, but because that is the person that my wife ACTUALLY views in me!</p>
<p>...</p>
<p>I have a message for most (not all) married people so I'm going to be very blunt here ---</p>
<p>**** We have all been doing a really crappy job at being married. ****</p>
<p>This is not an argument, I'm making a statement.</p>
<p>Look around.</p>
<p>How many people do you know that have experienced divorce firsthand? This could be anyone at your workplace, school, or community. It could be a family member, friend, or acquaintence.</p>
<p>Seriously. Married people have not been doing a good job of being married.</p>
<p>Also, married people have NOT been showing the world how a successful marriage should look like, or how a successful marriage should operate.</p>
<p>This is a fact. The statistics don't lie:</p>
<ul>
<li>In America, there is one divorce approximately every 36 seconds*. That's nearly 2,400 divorces per day, 16,800 divorces per week and 876,000 divorces a year.</li>
<li>The average length of a marriage that ends in divorce is eight years.</li>
<li>People wait an average of three years after a divorce to remarry (if they remarry at all).</li>
<li>The average age for couples going through their first divorce is 30 years old.</li>
<li>46.9% percent of non-custodial mothers totally default on support (dads getting child support payments), while only 26.9% of non-custodial fathers totally default on support (moms getting child support payments).</li>
<li>43% of all children growing up in America in the 2010's are being raised without their fathers.</li>
<li>75% of children with divorced parents live with their mother.</li>
<li>28% of children living with a divorced parent live in a household with an income below the poverty line.</li>
<li>Half of all American children will witness the breakup of a parent, or grandparent's marriage. Of these children close to half will also see the breakup of a parent or grandparent's second marriage.</li>
</ul>
<p>.....</p>
<p>When a child has the life experience of being a first-hand witness of their parent's divorce do you know what language is actually being said to them?</p>
<p>&quot;This is how marriage works. This is normal.&quot;</p>
<p>Actions speak louder than words.</p>
<p>In fact, all actions are a spoken language. <strong>All</strong> actions.</p>
<p>When a person shows up to work <em>on time</em>, every single day, it tells that leadership team that that employee <em>wants</em> to be there and is committed to the job.<br>
It tells the leadership team that the employee is responsible.<br>
It may even tell the leadership team that the employee enjoys their work.</p>
<p>When a friend give you a call and asks you for your help, and you show up to help them as asked at the time they were expecting you to arrive, it <em>tells</em> them that you truly care for them. It tells them that you want to be their friend, and for you to be their friend in kind.</p>
<p>When I come home from a long day of work, and my children scream &quot;Daddy's home!&quot; then they run up to me and give me great big bear hugs, it tells me that my children trust me. It tells me that they are happy that I am home! It tells me that I just might be doing a good job being a good dad to them!</p>
<p>You don't need to speak in order to tell someone something.</p>
<p>Actions always speak louder than the spoken word.</p>
<p>When two people stand in front of a crowd, profess their love to each other, and make a promise to commit to each other in all things, to promise to be there for each other in the good times and the bad times, to promise to be there for each other <em>no matter what</em> until the end of their lives, promise to be faithful to each other, it is telling everyone listening that &quot;I am taking responsibility for this relationship and I will not break this promise no matter what. This is mine and I will never let it go. I will do whatever it takes to keep that promise.&quot; This is what is actually being said when two people get married.</p>
<p>By our actions we are showing the world, and we are showing our children, what marriage is all about.</p>
<p>When a couple divorces we are saying &quot;divorce is normal&quot;. In fact we are teaching and telling the world that marriage doesn't even matter anymore. We are saying that marriage is an old idea that has no merit in this modern day and marriage doesn't matter.</p>
<p>Everyone has heard that saying, &quot;promises are made to be broken&quot; which is a bald face lie. It is a lie! All promises matter.</p>
<p>Well with divorce we are saying that &quot;marriages are meant to be ended&quot;.</p>
<p>When we divorce, we are teaching our children that this is 'normal', we tell the world that divorce is 'ok' and that divorce is standard human behavior.</p>
<p>.....</p>
<p>Some of us have gone through the process of our parents divorcing. And some of us might be going through it right now.</p>
<p>But do you know what?</p>
<p>Divorce really screws us up.</p>
<p>It screws up our kids.</p>
<p>My own parents divorced after about 23 years of marriage. I was 22 years old when it happened and I had just started dating my wife when it was announced that my parents were splitting up.</p>
<p>When they started the divorce process, do you know what happened?</p>
<p>Insecurity about all aspects of LIFE began to take hold in my mind. Questions like this came up all the time:</p>
<ul>
<li>What is going to happen to me?</li>
<li>What is going to happen to my parents?</li>
<li>Is this what will happen with me when I get married?</li>
<li>Is this what will happen to my siblings when they get married?</li>
<li>Should I even bother getting married at all?</li>
<li>What does it even mean to get married anyways?</li>
</ul>
<p>Yeah, this actually happened to me. There are some times when this same insecurity comes up in my mind and I have to really work it out. I know this happens to all children regardless of age in a divorce.</p>
<p>Here is another thing that happened to me...<br>
I don't normally talk about this but I will here since I'm on topic ---</p>
<p>I don't ever talk to my father or my mother about marriage and I never ask them for any type of marriage advice.</p>
<p>Why?</p>
<p>Because trust and credibility are good friends. When you lose one you typically lose the other at the same time.</p>
<p>When you lose someone's trust or credibility, it takes a very long time to gain it back (if at all). Now, this is only true and unique with my own parents. I'm not saying that I don't trust my parents at all, and I'm not trying to chastise them! Both are happily re-married and both probably have very good advice to give.</p>
<p>I'm only trying to make a point. You wouldn't get medical advice from someone that had their medical license revoked and you wouldn't take financial advice from someone that went to prison for fraud. What I'm saying is that it is very difficult to ask my parents for marriage advice should I need it.</p>
<p>.....</p>
<p>Does this bother you? I hope it does, because this stuff matters.</p>
<p>The point I'm trying to make is that while it still happens, and while it still may be a necessary step for certain situations, divorce in itself is not a good &quot;thing&quot;.</p>
<p>So for those that are married, or want to get married, really think about how you are 'doing' marriage.</p>
<p>Do everything you can to set up your own marriage for success.</p>
<p>Make it count.</p>
<p>Make it a priority in your life.</p>
<p>Think about these questions:</p>
<ul>
<li>Do I appreciate my spouse?</li>
<li>Do I show them my appreciation?</li>
<li>What are some of the things that I can do for my spouse that make them feel loved by me? (Ask them this question, their answer might surprise you!)</li>
<li>Am I lying to them about anything?</li>
<li>What is at least one thing that I am grateful for in my spouse?</li>
</ul>
<p>There are many more questions that apply here. But just remember that marriage is not about &quot;me&quot; or &quot;you&quot;. It is about &quot;us&quot;. And it is important that all married people adpot responsibility for our actions and correct our own ways.</p>
<p>And yes, I am completely aware that marriage is a two-way street. It requires involvement from <em>both</em> people in the relationship. Therefore each person must <em>want</em> to work on the relationship and work together toward a common goal. Remember that only you can control yourself, your actions or your thoughts. Always continue working on yourself.</p>
<p>It is important that we make the correct decisions in our personal and professional lives. This means that we actually do need to know what is 'right' and what is 'wrong'.</p>
<p>We do need a kick in the rear every once in a while, and steer ourselves back on the right track.</p>
<p>Take your relationships seriously. Because believe it or not, they actually matter not only to you but to your peers and your children.</p>
<p>Make every day in your marriage count.</p>
<p>Don't stop dating. Make dating your spouse a priority. No excuses allowed. Using &quot;I can't find a babysitter&quot; is an excuse.</p>
<p>Be a better person today than you were yesterday.</p>
<p>Apply and follow good, positive, principles in your life.</p>
<p>Set realistic and honest goals and seriously think about them every day.</p>
<p>Set goals at work.</p>
<p>Set goals in your marriage and talk about them with your spouse.</p>
<p>Organize your life so that you and your spouse reach those goals together.</p>
<p>Adpot the concepts of &quot;teamwork&quot; and &quot;alignment&quot; in your marriage.</p>
<p>Believe in your spouse.</p>
<p>Treat yourself like you are someone worth taking care of.</p>
<p>Serve your spouse. Love them as you love yourself.</p>
<p>Know what your spouse finds attractive, and let your spouse know what you find attractive about them.</p>
<p>Be attractive.</p>
<p>Never stop learning who your spouse is. Know their love languages.</p>
<p>Take responsibility for your actions and be highly aware of them.</p>
<p>For those that have children, teach them. Remember that they are always watching you. You are their most important teacher in their life.</p>
<p>Love, honor, and build trust in your spouse and your children.</p>
<p>Know what it means to be grateful, and actually be grateful.</p>
<p>Stop participating in social media. Social media is not the real world. Be done with it.</p>
<p>Don't read the news every day.</p>
<p>Get off your phone.</p>
<p>Drive your car.</p>
<p>Fly your plane.</p>
<p>Open your eyes.</p>
<p>Life your life to the fullest.</p>
<ul>
<li>Joey D</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[A leadership lesson: Properly evaluating an employer]]></title><description><![CDATA[Proper evaluation. Ownership, partnership, sensibilities, and leadership.]]></description><link>http://www.dissmeyer.com/2019/08/13/how-to-properly-evaluate-an-employer/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dff4</guid><category><![CDATA[leadership]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Tue, 13 Aug 2019 02:53:12 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1500930540495-e92875696a16?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1500930540495-e92875696a16?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="A leadership lesson: Properly evaluating an employer"><p>Ownership, partnership, sensibilities, and leadership.</p>
<p>There are many times in your life where it is crucial to take a step back and evaluate your life. This includes the need to also evaluate your employer.</p>
<p>The cold, hard, truth about reality is that most of us that sell our labor for a living (i.e. meaning we perform some type of 'work' and we get paid for it), we have a <em>job</em>. We do not have a <em>career</em>.</p>
<p>I not only consider myself in having an honest and fulfulling career working with the best damn team on the planet (and at the best employer in the world, my personal opinion of course), I do consider all of my managers, directors, and VPs as some of the best <em>leaders</em> that I've ever had the pleasure of working with. So I suppose I am in the minority.</p>
<p>You do not have to be stuck in the throes of life working a job that you hate. So it is a good idea to stop, take a seat, and truly think about your current situation. Have a look around, consider yourself and your situation, and ask some honest questions about everything. Ask yourself, &quot;Am I satisfied where I am at?&quot;, &quot;Can I do better?&quot;, or even, &quot;Do I need to do better?&quot;.</p>
<p>There is a reason why many employers have <em>self-evaluation</em> as a part of the annual performance review process. It is always a good idea to take a look at one's self because it helps with goal-setting. And having goals is how a person pursues what is meaningful in their lives.</p>
<p>There are very few employers have an <em>employer-evaluation</em> where you, the employee, rate and submit feedback against the employer itself. And then, after they have collected the evaluation survey they actually try to make things better for the employees! Excellent companies know that it is in their best interest to take care of the employees first. Because it is actually management's responsibility to take care of the employees, who will then take care of the customers, which is where profits actually originate. It is very rare to have this understanding in most businesses nowadays.</p>
<p>Nonetheless, you should be evaluating your employer from time to time regardless if the employer offers it or not. So where is a good place to start? Where should you begin evaluating an employer at any level?</p>
<p>For me, it starts at the top. Start with this question...</p>
<p><em>Who is running the company, who is making the decisions, and what are their values?</em></p>
<p>This is where you should start with your evaluation. Why? Because it tells you about what the company leadership values above all else.</p>
<p>I think for technology people, this Steve Jobs interview is a great start.<br>
In it, Steve talks about how <em>product people</em>, the ones that really carry the <em>product sensibilities</em> truly carry the heart of the company and should not be removed from decision-making venues.</p>
<p>Go ahead, it is only 2 minutes long. I'll wait...</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/-AxZofbMGpM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><!--kg-card-begin: markdown--><p>... I suspect that you just learned a lifetime of business lessons in 2 short minutes. Very powerful stuff indeed.</p>
<p>Now, please undertand that I don't like to reference Steve often because it makes it seem like he was some sort of genius when it was clear he was not, and too many people idolize him. With that being said, and while I am not a fan of Steve Jobs per se, I think this interview is very important because it does highlight several fantastic points about the differences in priorities between <em>product people</em> and <em>sales and marketing people</em>. This interview is one of those times where I thought that Steve was absolutely correct about business and is said in very clear and easy to understand language.</p>
<hr>
<p>There really is a big problem in big business that needs to go away, and it needs to go away right now. This is the big business theory that is a vestige of the past (really the 1970s, 80s and 90s). It is the theory of corporate governance called &quot;shareholder supremacy&quot; where the shareholder's interests are of primary importance above all else. It is this theory where the idea of firing people to &quot;balance the books&quot; came from. From my own personal work experience, shareholder supremacy is how pure marketing and pure sales executives are trained to operate, and actually do so without understanding the <em>real cost</em> of doing business.</p>
<p>It is my opinion, of course, that once pure marketing and sales people take over the top ranks and push out the customer people, technical people, or product people it is time to freshen up the resume and make plans to move on to other employment opportunities. This is because us honest and highly technical people just don't share the same values and goals as pure sales and marketing people do. There are core competing priorities between the sales people and the product people which in turn is due to the different training and experiences we have (see Steve Jobs interview video attached for better context), hence different goals that don't necessarily line up in most cases.</p>
<blockquote>
<p>...once my employer prioritizes earnings above all else this is when I have always made an effort to move on because it is the employees that suffer first.</p>
</blockquote>
<p>For example, good technical people care about making the &quot;right&quot; technical decisions and take most (if not all) of the money AND risks involved in the entire decision-making process. Contrasting that, almost all pure marketing and pure sales people are stuck in a &quot;finance-minded&quot; world which, quite incorrectly, heavily leans on both the shareholder supremacy theory and leftover business finance models from the 1980s and 1990s which, again, is where the idea to lay off people to 'balance the books' came from. My apologies for the re-utterance as I feel it is an important concept to understand. My point is this; once my employer prioritizes earnings above all else this is when I have always made an effort to move on because it is the employees that suffer first.</p>
<hr>
<p>Over time I've come up with my own evaulation formula to determine whether or not I want to work with an employer, or continue working with them, or not.</p>
<h1 id="ownership">Ownership</h1>
<p>First off, do I even <em>like</em> my employer's product whatever it may be? Would I spend my own money on it at all or in any capacity? This is the top one for me. Because if I think that my employer's product is trash then why the hell would I bother supporting it. Better yet, why should ANYONE support the product if I think it is useless or isn't worth the time and money? And yes, bad employees can turn a good product into something horrible or not worth the hassle. This question isn't about the cost of the company product(s). It is trying to answer if I even believe in the product(s) at all. Just think about that for a moment...</p>
<h1 id="partnership">Partnership</h1>
<p>Do I feel like I am working &quot;for&quot; my employer or am I working &quot;with&quot; my employer? There are many ways that I answer this question for myself. For example:</p>
<ul>
<li>Do I feel valued?</li>
<li>Is the work I am doing actually being received well?</li>
<li>Am I recognized for the work that me and my team are doing?</li>
<li>Am I contributing to something bigger than myself?</li>
<li>Do the people I work with on a daily basis share these values too?</li>
<li>For the people that I report to, are they my &quot;leaders&quot; or are they my &quot;managers&quot;</li>
<li>Does my leadership team even understand the basic concepts of the difference between a &quot;leader&quot; and a &quot;manager&quot;? More on this below...</li>
</ul>
<h1 id="prioritiesandsensibilities">Priorities and Sensibilities</h1>
<p>What does the CEO or company president say is their priorities -- and do they actually act it out? What are the goals and are we actually all in agreement and understanding of those goals? Are the goals well understood and communicated? And do I even agree with the goals set by my leaders?... While leaders do have certain responsibilities to shareholders or board members or customers or whatever, a CEO's or company president's actual TOP priority at all times is making sure their people are taken care of and their people are all on the same page with them - where all are marching towards a common goal that is well understood and good for all involved - AND I want to actively participate. This is where trust matters. I might even look at how long top leaders have been in their positions. If there is a constant turnover in top leadership every 6 months to a year then I know there is a serious problem at the business-level and it is a good idea to keep the resume on hand.</p>
<h1 id="leadership">Leadership</h1>
<p>Good leaders are those that go to their people and say &quot;Is there anything that you need to do your job? And if so, what can I do to help you get it?&quot; -- and then they actually act on that. This is how you build loyalty and morale in one of the best ways possible. Think about this question.... What do GOOD LEADERS have? -- Followers :) Good leaders have followers. Bad leaders are ones that go to their people and basically say &quot;the beatings will continue until morale improves&quot;, and they act out on this. Bad leaders are not leaders at all, they are managers. No one wants to be managed, they want to be lead by a good leader.</p>
<hr>
<p>Remember in the beginning of this article I started with a question. Let me modify it a little for a very important emphasis I've been trying to make...</p>
<p><em>Who is running the company, who is making the decisions, what are their values, and do their values and my own values match?</em></p>
<p>It is my hope that this article helps you in your own life situation.</p>
<ul>
<li>Joey D</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Upgrading from Java 8 to Java 11 on CentOS/RHEL 7 and 8 Linux distributions]]></title><description><![CDATA[Today's article is going ot focus on how to upgrade from Java 8 to Java 11 on CentOS/RHEL 7 and CentOS/RHEL 8 distributions.]]></description><link>http://www.dissmeyer.com/2019/05/22/installing-openjdk-8-and-openjdk-11-on-redhat-linux-distributions/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dff3</guid><category><![CDATA[java]]></category><category><![CDATA[upgrade]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Wed, 22 May 2019 01:29:41 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1555949963-ff9fe0c870eb?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/photo-1555949963-ff9fe0c870eb?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Upgrading from Java 8 to Java 11 on CentOS/RHEL 7 and 8 Linux distributions"><p>Today's article is going ot focus on how to upgrade from Java 8 to Java 11 on CentOS/RHEL 7 and CentOS/RHEL 8 distributions.</p>
<p>Even though it is still widely supported, Java 8 shouldn't be used anymore. Why? Because support is finally waning. Most application devs have finally moved on to support the newest 'long-term support' (LTS) version of Java, which is Java 11.</p>
<p>The steps below should work for many. I do use OpenJDK, not just the JRE.</p>
<blockquote>
<p>Stop all processes that use Java before continuing.</p>
</blockquote>
<pre><code>$ sudo yum -y remove java*
$ sudo yum -y install java-11-openjdk-devel
$ sudo alternatives --config java #(select the Java 11 option, usually option '2', then hit enter to save)
$ sudo alternatives --config javac #(select the Java 11 option, usually option '2', then hit enter to save)
</code></pre>
<p>And that's it!</p>
<p>Confirm the correct Java version is being used by executing <code>java -version</code>. It will output &quot;11.0....&quot; or something similar. You will know it is properly installed when you see the 11.</p>
<p>For those that want or need more technical details about installing Java 8 and Java 11 then make sure you <a href="https://developers.redhat.com/blog/2018/12/10/install-java-rhel8/">read RedHat's excellent blog post</a> about this subject.</p>
<p>-Joey D</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Moving from SQL Operations Studio to Azure Data Studio]]></title><description><![CDATA[SQL Operations Studio has been renamed and moved to a new project called Azure Data Studio! It's time to move over to the new hotness.]]></description><link>http://www.dissmeyer.com/2019/05/03/sql-operations-studio-and-azure-data-studio/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dff1</guid><category><![CDATA[azure]]></category><category><![CDATA[sql]]></category><category><![CDATA[Windows]]></category><category><![CDATA[Administrative Tools]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Fri, 03 May 2019 02:39:13 GMT</pubDate><media:content url="http://www.dissmeyer.com/content/images/2019/05/1080p_template.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="http://www.dissmeyer.com/content/images/2019/05/1080p_template.jpg" alt="Moving from SQL Operations Studio to Azure Data Studio"><p>SQL Operations Studio has been renamed and moved to a new project called Azure Data Studio! It's time to move over to the new hotness.</p>
<p>SQL Operations Studio and Azure Data Studio is literally the same thing. However, all of the new features and updates will continue only under the Azure Data Studio project. If you want to know more about the differences between the two products, as well as to know if you should use Azure Data Studio, or SQL Server Management Studio, or both check out the blog post by Microsoft's Vicky Harp <a href="https://cloudblogs.microsoft.com/sqlserver/2018/09/25/azure-data-studio-for-sql-server/">here</a>.</p>
<p>So with that being said, it is a good idea to move over from SQL Ops Studio to Azure Data Studio. When you install ADS you will need to manually copy your user settings. Follow the instructions below for how to do this in Windows. (Sorry, no Mac or Linux instructions this time.)</p>
<ol>
<li>Download and install <a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/download?view=sql-server-2017">Microsoft Azure Data Studio</a>.</li>
<li>Copy your user settings (settings.json) from SQL Ops Studio to Azure Data Studio. You will find your SQL Ops Studio settings here:<br>
<code>C:\Users\&lt;Your_User_Name&gt;\AppData\Roaming\sqlops\User</code><br>
Azure Data Studio settings will be found here:<br>
<code>C:\Users\&lt;Your_User_Name&gt;\AppData\Roaming\azuredatastudio\User</code></li>
<li>Restart Azure Data Studio.</li>
</ol>
<p>That should be it! Make sure to hit up the references below for more info.</p>
<ul>
<li>Joey D</li>
</ul>
<p>References:<br>
<a href="https://cloudblogs.microsoft.com/sqlserver/2018/09/25/azure-data-studio-for-sql-server/">https://cloudblogs.microsoft.com/sqlserver/2018/09/25/azure-data-studio-for-sql-server/</a><br>
<a href="https://docs.microsoft.com/en-us/sql/azure-data-studio/download?view=sql-server-2017#move-user-settings">https://docs.microsoft.com/en-us/sql/azure-data-studio/download?view=sql-server-2017#move-user-settings</a><br>
<a href="https://cloudblogs.microsoft.com/sqlserver/?product=azure-data-studio">https://cloudblogs.microsoft.com/sqlserver/?product=azure-data-studio</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Installing Logstash on Windows (April 2019)]]></title><description><![CDATA[There have been several updates to Logstash along with several fundamental changes to it's core architecture so I think it is time to post an update!]]></description><link>http://www.dissmeyer.com/2019/04/21/installing-logstash-7-on-windows/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dff0</guid><category><![CDATA[logstash]]></category><category><![CDATA[Windows]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Sun, 21 Apr 2019 19:49:16 GMT</pubDate><media:content url="http://www.dissmeyer.com/content/images/2019/04/Untitled.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="http://www.dissmeyer.com/content/images/2019/04/Untitled.jpg" alt="Installing Logstash on Windows (April 2019)"><p>I wrote about working with Logstash in Windows environments <a href="https://www.dissmeyer.com/2017/11/11/installing-logstash-on-windows/">way back in 2017</a>. There have been several updates to Logstash along with several fundamental changes to it's core architecture so I think it is time to post an update.</p>
<p>If you haven't read my previous article about Logstash, go back and check it out for some context. Otherwise, let's get started!</p>
<p>This article describes the process for how to install Logstash on a Windows workstation or Windows server. The installation concepts for Logstash are the same on both desktop and server. This guide works for current supported versions of Logstash (v6.x and v7.x at the time of this writing) but should work for future versions as well.</p>
<p>The purpose of running Logstash on your local workstation is for testing out various filter configurations before adding them to a production Logstash instance. With that being said, there are a few pre-requisites for running Logstash, besides making sure that Windows is fully updated.</p>
<p>If you intend on installing Logstash on a Windows Server, then naturally this would mean you are going to run Logstash as a service 24/7. So for this example I'm going to use Windows Server 2019.</p>
<h3 id="supportedversionsofjava">Supported versions of Java</h3>
<p>Logstash requires the Java Development Kit (JDK), not the Java Runtime Environment (JRE). And for those that are not aware, <a href="https://www.oracle.com/technetwork/java/java-se-support-roadmap.html">Java 8 is now depreciated</a>. While security updates will be available publically until March 2022, since Java 8 is now being supported in a depreciated state it is a wise idea to run the latest long-term support (LTS) version of Java - which is Java 11.</p>
<p>It is true that Logstash v6.7.x and v7.0.x versions of Logstash support both Java 8 and Java 11. However there are still some small bugs in v7.0 of Logstash if it is running on top of Java 11. One of the bugs has to do with the <a href="https://github.com/logstash-plugins/logstash-input-jdbc/issues/331">logstash-input-jdbc</a> plugin. So for the moment it is still a good idea to run Java 8. The Elastic engineers are amazing so I'm sure that when the Elastic Stack v7.1.0 is released all of the various Java 11 issues will be fixed.</p>
<p>Besides the basic version differences, there are two different releases of the JDK. There is the Oracle JDK and OpenJDK. For simplicity's sake I'm going to use the Oracle JDK 8 since it is much easier to install and configure.</p>
<h3 id="installandconfigureoraclejdk8forwindows">Install and Configure Oracle JDK 8 for Windows</h3>
<p>I'll walk through setting up the JDK since there are a few special steps to get it working correctly in Windows for Logstash.</p>
<ol>
<li>Fully update Windows and reboot.</li>
<li>Download and install <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html">JDK 8 for Windows</a>. Choose all defaults.</li>
<li>Click Start, search for <em>Environment Variables</em> and open the system properties applet. The advanced tab of the <em>System Properties</em> applet should appear.</li>
<li>Click the Environment Variables button.</li>
<li>Under System variables click <em>New</em>.</li>
<li>Enter the variable name <code>JAVA_HOME</code> and browse to the JDK install directory and click OK. It will look similar to this:<br>
<img src="http://www.dissmeyer.com/content/images/2019/04/2019-04-21-jdk8_windows.png" alt="Installing Logstash on Windows (April 2019)"></li>
</ol>
<p>As you can see in this example I installed JDK 8 update 211. If you installed a different version, or installed on a different volume, then naturally your directory path will be different.</p>
<p>At this point the JDK is now installed and good to go. Now it is time to install and configure Logstash.</p>
<h3 id="firsttimeinstallandsetupoflogstash">First Time Install and Setup of Logstash</h3>
<p>Let's download and install Logstash 7.</p>
<ol>
<li>Download the Logstash ZIP package from here - <a href="https://www.elastic.co/downloads/logstash">https://www.elastic.co/downloads/logstash</a>.</li>
<li>Extract the ZIP contents to a local folder. For this example I will extract the contents to <code>C:\logstash\</code>.</li>
<li>Edit the <code>C:\logstash\config\jvm.options</code> file. Change the Xmx and Xms memory settings to half of the available system memory. If you have 4GB of system memory, then the setting should look like the following:</li>
</ol>
<pre><code>-Xms2g
-Xmx2g
</code></pre>
<p>Save the file and exit.</p>
<ol start="4">
<li>Create a new logstash pipeline file at <code>C:\logstash\bin\logstash.conf</code>.<br>
Copy/paste the text below in the <code>logstash.conf</code> file...</li>
</ol>
<pre><code>input {
    # Accept input from the console.
    stdin{}
}

filter {
    # Add filter here. This sample has a blank filter.
}

output {
    # Output to the console.
    stdout {
            codec =&gt; &quot;rubydebug&quot;
    }
}
</code></pre>
<p>The example configuration provided will accept input from the console as a message then will output to the console in JSON.</p>
<p>That's it! Logstash is installed with a basic configuration.</p>
<h3 id="runninglogstash">Running Logstash</h3>
<p>To start Logstash, run the batch file in <code>.\bin\logstash.bat</code> with the -f flag and define the location of the conf file.<br>
For example, execute this from Powershell:</p>
<pre><code>c:\logstash\bin\logstash.bat -f c:\logstash\bin\logstash.conf
</code></pre>
<p>If all goes well, after a moment you'll see the final line in the console say <code>Successfully started Logstash API endpoint</code>. It will look something like this...</p>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/2019-04-21-15_25_28-JD-Logstash7-Win2019.png" alt="Installing Logstash on Windows (April 2019)"></p>
<p>To stop Logstash simply press CTRL+C to stop the running batch process.</p>
<h3 id="installinglogstashasawindowsservice">Installing Logstash as a Windows service</h3>
<p>Download the Non-Sucking Service Manager (NSSM) from <a href="http://nssm.cc">http://nssm.cc</a>.</p>
<p>Extract the EXE to the BIN directory of the Logstash location.</p>
<p>Navigate to the logstash BIN directory, execute the following from the shell:</p>
<pre><code>.\nssm.exe install logstash
</code></pre>
<ul>
<li>Path: This will be the full path of where the <code>LOGSTASH.BAT</code> file is located. For example <code>D:\elastic\logstash\bin\logstash.bat</code>.</li>
<li>Startup Directory: Enter the full path of the BIN directory. For example <code>D:\elastic\logstash\bin\</code></li>
<li>Arguments: Include the '-f' flag with the path of the logstash config file. For example, <code>-f d:\elastic\logstash\bin\logstash.conf</code>.</li>
<li>On the details tab ensure the service is set to start up automatically.</li>
<li>Also on the details tab, ensure the service is set to use a service account. This is especially important in highly secure or AD-DS environments.</li>
<li>Click &quot;Install Service&quot;.</li>
</ul>
<p>Open up Windows services and start the service.</p>
<h3 id="finalnotes">Final Notes</h3>
<p>So that is it! Running Logstash on Windows isn't as difficult as one may expect. The install and configuraiton process also has not changed much between versions 5, 6, and 7. The tricky stuff all has to do with the Java configuration for Windows and the initial pipeline configuration.</p>
<p>As always make sure you reference the <a href="https://www.elastic.co/guide/en/logstash/current/installing-logstash.html">official documentation</a> if you have any questions. The <a href="https://discuss.elastic.co/">official public Elastic forums</a> are also a great place for various questions you may have.</p>
<ul>
<li>Joey D</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Working with Vagrant on Windows in 2019]]></title><description><![CDATA[It's been a while since I've talked about Vagrant on Windows. It's time to post an update for April 2019.]]></description><link>http://www.dissmeyer.com/2019/04/21/vagrant-on-windows/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dfee</guid><category><![CDATA[vagrant]]></category><category><![CDATA[Windows]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Sun, 21 Apr 2019 02:45:29 GMT</pubDate><media:content url="http://www.dissmeyer.com/content/images/2019/04/vagrant_blue_white-3.jpg" medium="image"/><content:encoded><![CDATA[<img src="http://www.dissmeyer.com/content/images/2019/04/vagrant_blue_white-3.jpg" alt="Working with Vagrant on Windows in 2019"><p>It's been a while since I've talked about Vagrant on Windows. It's time to post an update for April 2019.</p><!--kg-card-begin: markdown--><p><em>This post is for all of the I.T. Pros out there that want to know what Vagrant is, how to use it, why you might want to use it, and so on.</em></p>
<h3 id="aboutvagrant">About Vagrant</h3>
<p><a href="https://www.vagrantup.com/">Vagrant</a> is one of my primary workstation utilities. I use it both at work and at home for quickly ramping up test environments (full virtual machines) in VirtualBox, then destroy them after I've tested out my code or configurations. What do I mean by this? Ok let's slow down. I'll provide a scenario...</p>
<p>Imagine I'm an I.T. Pro, working in an enterprise company or MSP. And I need to test a new version of software, or test out a configuration for an application or service. Classic processes in enterprise I.T. means I have to request the virtual machines to be built in the on-prem infrastructure or cloud environment, get approvals, possibly get budget, wait for the VMs to be made available if approved, then be granted access by security. Only after all of that is completed is when I might be able to test my application. And what if I made a mistake and want to start over fresh? I'd have to go through the same request process to get a new set of VMs built for me.</p>
<p>Vagrant allows you to use your locally installed hypervisor on your workstation to ramp up the same test environment quickly, then destroy the VMs when you are done. Vagrant is quite literally an automation tool for local hypervisors.</p>
<p>So does this sound like a tool you want to use? Great! I'll share how I have it set up on my Windows workstation.</p>
<h3 id="installingvagrant">Installing Vagrant</h3>
<p>So first things first, you need to install a hypervisor. Assuming you are on Windows I recommend you stick with <a href="https://www.virtualbox.org">Oracle's VirtualBox</a> instead of Hyper-V. Why VirtualBox? Because of the pre-built and ready enabled networking at install time. With Hyper-V you'll have to figure out your own DHCP server and manually set up networking per VM. From here on out I will only reference VirtualBox.</p>
<p>You can download and install Virtualbox here, <a href="https://www.virtualbox.org">https://www.virtualbox.org</a> (reboot required). As of the time of this writing the current version of VirtualBox is 6.06, which is what I'm using now.</p>
<p>Now that we have a hypervisor let's install Vagrant. <a href="https://www.vagrantup.com/">Download it from the main website here</a>. Yes, you will be forced to reboot your system after the install finished. After the reboot, launch powershell (and you <em>are</em> using Powershell instead of CMD, correct?) and execute <code>vagrant --version</code>. You'll see the version output. This is how we know that vagrant is working as expected.</p>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/2019-04-20-22_01_00-Settings.png" alt="Working with Vagrant on Windows in 2019"><br>
Note that at the time of this writing I'm using Vagrant 2.2.4.</p>
<h3 id="verifyhypervisorenvironmentvariableforvagrant">Verify Hypervisor Environment Variable for Vagrant</h3>
<p>Before you continue you should ensure the proper default provider Windows environment variable is configured on your workstation. In my experience, when installing Vagrant on Windows the default provider is set for &quot;hyperv&quot; which we don't want because we will be using VirtualBox instead.</p>
<p>To change the default provider, edit the <code>VAGRANT_DEFAULT_PROVIDER</code> setting in Windows Environment Variables. It should look like this...<br>
<img src="http://www.dissmeyer.com/content/images/2019/04/2019-04-20-22_13_44-Environment-Variables.png" alt="Working with Vagrant on Windows in 2019"></p>
<h3 id="downloadvagrantboxes">Download Vagrant Boxes</h3>
<p>A Vagrant Box is a preconfigured virtual machine that can be initialized with Vagrant. Hashicorp, the maker of Vagrant, maintains a public repository of vagrant boxes at <a href="https://app.vagrantup.com">https://app.vagrantup.com</a> that you can download on-demand for free. You will need to download at least one box to use vagrant.</p>
<p>For this example, we will download the latest official Ubuntu 16.04 LTS box.<br>
From Powershell, execute this command:</p>
<pre><code>&gt; vagrant box add ubuntu/xenial64
</code></pre>
<p>When successful you will see an output like so...<br>
<img src="http://www.dissmeyer.com/content/images/2019/04/2019-04-20-22_09_10-Windows-PowerShell.png" alt="Working with Vagrant on Windows in 2019"></p>
<p>Now that we have a vagrant box, we can start one up!</p>
<h3 id="editthevagrantfile">Edit the Vagrantfile</h3>
<p>A <a href="https://www.vagrantup.com/docs/vagrantfile/">Vagrantfile</a> is the configuration of your Vagrant project. For example, you might have a project where you need three Ubuntu VMs to be started up. A Vagrantfile is where you will define these needs.</p>
<p>So first, create a folder on your workstation. This will be where you will initialize your first vagrantfile. For this example I created mine in <code>C:\vagrant</code>.</p>
<p>Navigate to your project folder and execute the following...</p>
<pre><code>C:\vagrant\&gt; vagrant init
</code></pre>
<p>A generic vagrantfile will be created in the project folder. Edit the file and replace the text with this:</p>
<pre><code>Vagrant.configure(&quot;2&quot;) do |config|
  config.vm.box = &quot;ubuntu/xenial64&quot;
  config.vm.provider &quot;virtualbox&quot; do |vb|
    vb.gui = true
    vb.memory = &quot;1024&quot;
  end
end
</code></pre>
<p>Now, return to Powershell and execute <code>vagrant up</code>:</p>
<pre><code>C:\vagrant\&gt; vagrant up
</code></pre>
<p>In less than a minute Vagrant will start up your newly added Vagrant box running Ubuntu 16.04 LTS and display the VirtualBox GUI for the VM.</p>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/2019-04-20-22_43_07-vagrant_default_1555814506990_21995--Running----Oracle-VM-VirtualBox.png" alt="Working with Vagrant on Windows in 2019"></p>
<p>When you are all finished, run <code>vagrant destroy</code> to completely remove all evidence of the test environment!</p>
<h3 id="finalnotes">Final Notes</h3>
<p>As you can see, working with Vagrant on Windows is extremely easy once you have your environment set up correctly for the first time. This article has only brushed the surface on all of the things you can do with Vagrant. If you want to know more make sure you <a href="https://www.vagrantup.com/intro/getting-started/boxes.html">read the official documentation</a>.</p>
<ul>
<li>Joey D</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Joey's Toolset - v2019.04]]></title><description><![CDATA[Like any good I.T. Pro I use a ton of different tools to "get the job done". In today's article I'll provide my list of favorites, and my reasoning for why I have chosen each utility.]]></description><link>http://www.dissmeyer.com/2019/04/18/joeys-toolset-v2019-04/</link><guid isPermaLink="false">5e3b2cbe5c48d9104a82dfef</guid><category><![CDATA[Administrative Tools]]></category><dc:creator><![CDATA[Joseph Dissmeyer]]></dc:creator><pubDate>Thu, 18 Apr 2019 00:49:55 GMT</pubDate><media:content url="https://images.unsplash.com/reserve/oIpwxeeSPy1cnwYpqJ1w_Dufer%20Collateral%20test.jpg?ixlib=rb-1.2.1&amp;q=80&amp;fm=jpg&amp;crop=entropy&amp;cs=tinysrgb&amp;w=1080&amp;fit=max&amp;ixid=eyJhcHBfaWQiOjExNzczfQ" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://images.unsplash.com/reserve/oIpwxeeSPy1cnwYpqJ1w_Dufer%20Collateral%20test.jpg?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ" alt="Joey's Toolset - v2019.04"><p>Tools!</p>
<p>We all use them. Tools are what we use to help us get our work completed. The whole point of using tools in our work is to help us work faster, increase our precision (i.e. reduce errors), and to have a higher quality output overall.</p>
<p>There are many different tools for different scenarios. And in the I.T. realm this is a true statement. As I.T. professionals we all have our own preferences on the tools we like to use. So I'd like to go ahead and share them.</p>
<p>What I'm going to share here are a bunch of different utilities I use on a day-to-day basis not only at work, but also personally at home. A lot of these tools are what I consider a core part of my &quot;toolbelt&quot; and include what I use as my &quot;daily driver&quot;, if you will.</p>
<p>And finally, to be extremely clear what I'm talking about are workstation utilities, software, and my mobile device preference in this post. Here is the high-level list:</p>
<ul>
<li>Mobile platform</li>
<li>Desktop/Laptop Operating System</li>
<li>Task Management and To-Do lists</li>
<li>Note Taking and Note Management</li>
<li>Shell / Console</li>
<li>Development and Testing</li>
<li>Data Sync</li>
</ul>
<p>So let's get started, shall we?</p>
<h3 id="mobileplatform">Mobile Platform</h3>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/iphone-xr-black.png" alt="Joey's Toolset - v2019.04"></p>
<p>Yep, that's right. My current preferred mobile platform is iPhone. The iPhone XR to be exact. The XR is my daily driver.</p>
<p>My previous driver was the excellent LG G6, which ran Android. I ran Android phones for well over 5 years. My first smart phone was the Samsung Fascinate (the original Galaxy S on Verizon Wireless). I stuck with Android for a very long time; almost five years actually. After the Fascinate I had the first Samsung Galaxy Nexus (circa 2011) and boy that phone was awesome at the time. The Nexus battery life was horrible but the device was the top performer for a long time. Then after the Nexus I decided to jump over to Windows Phone with the Lumia 928 shortly after the Windows 10 release. For those that thought that Windows Phone was a joke, THEY ARE WRONG. That Lumia 928 really was amazing! It wasn't the best performance-wise, but the battery life was incredible. And the 928 was an excellent productivity device. But it died a quick death because there just wasn't any mobile app developer support. So after some time my wife and I jumped ship from Verizon to T-Mobile and I traded in my Lumia for the LG G4, then after a while I upgraded to the LG G6. After some time my LG G6 performance was starting to drop (which happens to all mobile phones over the course of a year) so I started looking for my next device.</p>
<p>Why the iPhone XR? For two reasons. First, that iPhone enables me to focus on pure productivity and secondly the battery life. I'll address the first point.</p>
<p>Productivity. With Android v6 and v7, my G6 started getting extremely notification heavy which I blame Facebook for this. I'd disable the app notifications for social media but then I'd get text messages instead. So I removed Facebook and all other social media from the device but it would re-enable itself when I looked at Facebook through Chrome. That annoyed me. Then there was the constant and rapid app updates. Even after removing the apps I didn't use anymore the regular app updates would make the notification area clog up with app update info. Android started feeling like it was trying to pull my attention ALL THE TIME. I wanted to choose a device where I felt like I was in control of the phone instead of the phone trying to control me.</p>
<p>Then there was the battery life. Android's battery life still has it's challenges but is manageable. And the XR really does have the longest mobile device battery life as of the time of this writing.</p>
<p>I've been an iPhone user for 6 months now and I am enjoying it. It is my current preference. I have an iPad 6th Generation as well and it too is a great tablet.</p>
<h3 id="operatingsystem">Operating System</h3>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/Windows_10_Logo.png" alt="Joey's Toolset - v2019.04"></p>
<p>Yeah I know, no surprise here. Windows is my preference. I use Windows at work exclusively as well as at home. I am a PC gamer so Windows 10 is a requirement anyways. But I have been a Windows user for most of my I.T. career and most of my adult life anyways. So this makes sense for me. I have tried to use a Mac and MacOS as a daily driver for an extended period of time but I know so much about the ins/outs of Windows that I just work faster on Windows. So Windows it is. I do like the new Linux features in Windows 10 such as the Windows Subsystem for Linux (WSL) and Ubuntu on Windows, which I use frequently, so that is also a plus.</p>
<h3 id="taskmanagementandtodolists">Task Management and To-Do lists</h3>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/to-do.png" alt="Joey's Toolset - v2019.04"></p>
<p>I really like <a href="https://todo.microsoft.com">Microsoft To-Do</a>. In my opinion, this is their best productivity app released in recent memory. If you've ever used Wunderlist before To-Do is made by the same team (because Microsoft acquired Wunderlist a while back) and their integrations with Office 365 and Outlook.com is really good. You can set reminders and schedules, you can also apply due dates and attach files too, and sync across your various devices. The desktop app and mobile apps are fantastic as well.</p>
<p>For me, this tool fits in well with my work style. I share a few of my To-Do lists with my wife and co-workers so we can collaborate on certain things (like grocery lists or work tasks). My previous task list tool that I used quite a bit was Trello because it is a really good Kanban board. But I find myself using lists more than Kanban cards and boards nowadays.</p>
<h3 id="notetakingandnotemanagement">Note Taking and Note Management</h3>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/evernote.png" alt="Joey's Toolset - v2019.04"></p>
<p><a href="https://evernote.com/">Evernote</a> is my primary note taking app and note management tool. It is an indespensible tool to me because I used it in many areas of my every day life. I have several years of various notes and lists in my Evernote notebooks. I do think the mobile app is better than the desktop app because it is cleaner and faster. I still use <a href="https://www.onenote.com">Microsoft OneNote</a> here and there but the synchronization in OneNote cannot compare to the sync speed of Evernote.</p>
<p>Evernote does leave some things to be desired like markdown support and inline note editor (when you make new notes it still pops out a new window) but it gets the job done and fits my needs better than OneNote at this time.</p>
<h3 id="shellconsole">Shell / Console</h3>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/mremoteng.png" alt="Joey's Toolset - v2019.04"></p>
<p><a href="https://mremoteng.org/">mRemoteNG</a> is my favorite tabular session management utility for SSH, Telnet, VNC, RDP, ICA (Citrix), HTTP, or other remote sessions. This tool makes it much easier for me to quickly remotely access my servers in one place. Windows has an RDP manager called &quot;Remote Desktop Connection Manager&quot; which works well but only for Windows RDP connections. And I have tried a bunch of alternatives but this one is my perferred tool.</p>
<p>We also can't forget about Ubuntu on Windows with <a href="https://docs.microsoft.com/en-us/windows/wsl/install-win10">Windows Subsystem for Linux</a> (WSL). I do use WSL quite a bit. And no one should be using Windows CMD anymore - use Powershell.</p>
<h3 id="developmentandtesting">Development and Testing</h3>
<p>There are a bunch of tools for development, testing, quickly building test environments and virtual datacenters, etc. So I'll just list them out with a quick description:</p>
<ul>
<li><a href="https://www.virtualbox.org/">Oracle VirtualBox</a> - An open-source workstation hypervisor for testing. Very popular, well documented, and available on Mac, Linux, and Windows platforms. Quickly create virtual machines on your workstation.</li>
<li><a href="https://www.vagrantup.com/">HashiCorp Vagrant</a> - Builds and manages virtual machine environments in a single workflow. Basically automation for VirtualBox. &quot;Vagrant up!&quot;</li>
<li><a href="https://notepad-plus-plus.org/">Notepad++</a> - The only text editor for Windows you'll ever need. Should be a 'default' component of your toolbelt. Worthy alternatives are <a href="https://atom.io/">Atom.io</a> or <a href="https://www.sublimetext.com/">Sublime Text</a>.</li>
<li><a href="https://code.visualstudio.com/">Microsoft Visual Studio Code</a> - Code editor, excellent integration with OS tools and code management.</li>
<li><a href="https://git-scm.com/download/win">Git for Windows</a> - If you don't know what Git is, or Github, or Gitlab then may God have mercy on your soul.</li>
<li><a href="https://nodejs.org/en/">NodeJS</a> - If you work with Node.js apps in any capacity then you need this.</li>
<li><a href="https://getgreenshot.org/">Greenshot</a> - Open source screenshot utility.</li>
<li><a href="https://www.getpaint.net/">Paint.NET</a> - Open Source image editor. Good alternative is the <a href="https://www.gimp.org/">GNU Image Manipulation Program</a>, literally &quot;GIMP&quot;.</li>
<li><a href="https://www.videolan.org/vlc/index.html">VLC Media Player</a> - Open source video player. Supports just about every single type of video codec out there.</li>
</ul>
<h3 id="datasync">Data Sync</h3>
<p>I use several sync tools depending on my needs. Here are my preferences...</p>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/dropbox.jpg" alt="Joey's Toolset - v2019.04"><br>
Dropbox. My preferred data backup/sync tool. Excellent mobile app.</p>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/onedrive.jpg" alt="Joey's Toolset - v2019.04"><br>
I use OneDrive for my personal files like family photos. I consider it my &quot;data insurance policy&quot;. The mobile app is also excellent.</p>
<p><img src="http://www.dissmeyer.com/content/images/2019/04/resilio_sync.png" alt="Joey's Toolset - v2019.04"><br>
Resilio Sync. This tool is a godsend. I use Resilio to sync photo directories with my family. This used to be called &quot;Bittorrent Sync&quot; until they renamed it. Very fast, very simple (no ads), and free for personal use.</p>
<h4 id="finalthoughts">Final Thoughts</h4>
<p>That was quite a list, wasn't it? These are the tools that I prefer to use on a day-to-day basis. Remember, these are tools I have selected based on my <em>personal preference</em> and experience.</p>
<p>So, what tools should <em>you</em> use?</p>
<p>Well that is the beauty! Always use the tools that you like the most! Do you prefer Mac over Windows? Then use MacOS! Do you like Sublime Text instead of Notepad? Then use Sublime Text!</p>
<p>Always use tools that works for you, or use the tools that you like. Because if you use tools that you like, they will help you work faster, which makes you smarter :)</p>
<ul>
<li>Joey D</li>
</ul>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>