<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.6">Jekyll</generator><link href="https://www.benswayne.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://www.benswayne.com/" rel="alternate" type="text/html" /><updated>2021-03-05T14:28:39-08:00</updated><id>https://www.benswayne.com/feed.xml</id><title type="html">Software Developer and Outdoor Enthusiast</title><subtitle>Ben Swayne's personal website, resume and portfolio.</subtitle><author><name>Ben Swayne</name></author><entry><title type="html">Software Development Workstation Setup</title><link href="https://www.benswayne.com/software-development-workstation-setup/" rel="alternate" type="text/html" title="Software Development Workstation Setup" /><published>2019-11-07T15:13:21-08:00</published><updated>2021-03-05T14:27:05-08:00</updated><id>https://www.benswayne.com/software-developer-workstation-setup</id><content type="html" xml:base="https://www.benswayne.com/software-development-workstation-setup/">&lt;p&gt;This page is written primarily for myself to remember all the things I do to setup my own personal software development environment. You may or may not like my current setup depending on what tech stack you are working with. Developer environment preferences are as varied as tastes in food.&lt;/p&gt;

&lt;p&gt;Ultimately this page is my own personal disaster recovery solution - if my personal computer is ever stolen all my code/files should be committed to repositories or backed up on cloud storage or synology NAS and all I’d need to do is get a new computer and setup the environment again.&lt;/p&gt;

&lt;p&gt;I’ve recently &lt;a href=&quot;/switching-from-windows-10-to-mac-osx/&quot;&gt;switched to Mac&lt;/a&gt; as my main development laptop after spending a decade or two loyal to the Microsoft Windows OS.&lt;/p&gt;

&lt;h2 id=&quot;browsers&quot;&gt;Browsers&lt;/h2&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://www.mozilla.org/en-CA/firefox/all/&quot;&gt;Download and install Firefox&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://www.google.com/chrome/&quot;&gt;Download and install Chrome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;mac-osx-terminal-and-cli-tools&quot;&gt;Mac OSX Terminal and CLI tools&lt;/h2&gt;

&lt;p&gt;You can either skip this if not using mac osx or find the windows equivalents.&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;
    &lt;p&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;strong&gt;Install Brew.&lt;/strong&gt;
 Homebrew is a package manager for the Mac — it makes installing most open source sofware (like Node) as simple as typing &lt;code class=&quot;highlighter-rouge&quot;&gt;brew install node&lt;/code&gt;. You can learn more about Homebrew at the &lt;a href=&quot;https://brew.sh&quot;&gt;Homebrew website&lt;/a&gt;.&lt;/p&gt;

    &lt;p&gt;To install Homebrew just open Terminal and type:&lt;br /&gt;
 &lt;code class=&quot;highlighter-rouge&quot;&gt;/usr/bin/ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;&lt;/code&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-macos?view=azure-cli-latest&quot;&gt;&lt;strong&gt;Brew install Azure CLI for macOS&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;strong&gt;Brew Install Terraform.&lt;/strong&gt; To install terraform via Homebrew just open Terminal and type:&lt;br /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;brew install terraform&lt;/code&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://github.com/nvm-sh/nvm&quot;&gt;&lt;strong&gt;Install NVM&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://nodesource.com/blog/installing-node-js-tutorial-using-nvm-on-mac-os-x-and-ubuntu/&quot;&gt;&lt;strong&gt;NVM Install Node/NPM&lt;/strong&gt;&lt;/a&gt;
    &lt;ul class=&quot;task-list&quot;&gt;
      &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Ensure that nvm was installed correctly with &lt;code class=&quot;highlighter-rouge&quot;&gt;nvm --version&lt;/code&gt;, which should return the version of nvm installed.&lt;/li&gt;
      &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Install the version of Node.js you want
        &lt;ul class=&quot;task-list&quot;&gt;
          &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Install the latest version with &lt;code class=&quot;highlighter-rouge&quot;&gt;nvm install node&lt;/code&gt;&lt;/li&gt;
          &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Use the latest version with &lt;code class=&quot;highlighter-rouge&quot;&gt;nvm use node&lt;/code&gt;&lt;/li&gt;
          &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Install the latest LTS version with &lt;code class=&quot;highlighter-rouge&quot;&gt;nvm install --lts&lt;/code&gt;&lt;/li&gt;
          &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Use the latest LTS verison with &lt;code class=&quot;highlighter-rouge&quot;&gt;nvm use --lts&lt;/code&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;install-docker-desktop&quot;&gt;Install Docker Desktop&lt;/h2&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://www.docker.com/products/docker-desktop&quot;&gt;Download and install Docker Desktop&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;install-visual-studio-code-vscode&quot;&gt;Install Visual Studio Code (VSCODE)&lt;/h2&gt;

&lt;p&gt;Visual Studio Code is a cross platform integrated development environment (IDE) for software developers. It is lighter weight than traditional Visual Studio and well suited for modern web languages like JavaScript, HTML, CSS, JSON, YAML, XML, markdown, etc.&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://code.visualstudio.com/download&quot;&gt;Download and install Visual Studio Code&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;vs-code-extensions&quot;&gt;VS CODE Extensions&lt;/h3&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker&quot;&gt;Docker &lt;code class=&quot;highlighter-rouge&quot;&gt;ms-azuretools.vscode-docker&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&quot;&gt;Markdown All in One &lt;code class=&quot;highlighter-rouge&quot;&gt;yzhang.markdown-all-in-one&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=bierner.markdown-emoji&quot;&gt;Markdown Emoji
 &lt;code class=&quot;highlighter-rouge&quot;&gt;bierner.markdown-emoji&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=jebbs.plantuml&quot;&gt;PlantUML &lt;code class=&quot;highlighter-rouge&quot;&gt;jebbs.plantuml&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.azure-account&quot;&gt;Azure Account &lt;code class=&quot;highlighter-rouge&quot;&gt;ms-vscode.azure-account&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azureterraform&quot;&gt;Azure Terraform &lt;code class=&quot;highlighter-rouge&quot;&gt;ms-azuretools.vscode-azureterraform&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=mauve.terraform&quot;&gt;Terraform &lt;code class=&quot;highlighter-rouge&quot;&gt;mauve.terraform&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack&quot;&gt;Live Share Extension Pack &lt;code class=&quot;highlighter-rouge&quot;&gt;ms-vsliveshare.vsliveshare-pack&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint&quot;&gt;ESLint &lt;code class=&quot;highlighter-rouge&quot;&gt;dbaeumer.vscode-eslint&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;install-microsoft-office&quot;&gt;Install Microsoft Office&lt;/h2&gt;

&lt;p&gt;It’s nice to see full MacOS support from the current Microsoft Office suite. Historically I know a lot of people who used windows as their primary OS for no other reason than access to Microsoft Office or other non-crossplatform apps.&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;Install Microsoft Office from the App Store&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;install-slack&quot;&gt;Install Slack&lt;/h2&gt;

&lt;p&gt;Slack is a messaging app mostly used in professional environments. It is hugely popular in software and web development arena and integrates with all sorts of stuff.&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://slack.com/downloads&quot;&gt;Download and install Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;install-microsoft-teams&quot;&gt;Install Microsoft Teams&lt;/h2&gt;

&lt;p&gt;Microsoft Teams is picking up market share for business meetings at least. We still use Slack for most casual chat, but Teams for business meetings/calendar integration/calls.&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://www.microsoft.com/en-ca/microsoft-365/microsoft-teams/download-app&quot;&gt;Download and install Teams&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;install-gimp-image-manipulation-program&quot;&gt;Install GIMP (Image Manipulation Program)&lt;/h2&gt;

&lt;p&gt;GIMP is a free open source cross platform image editing app. Historically I’ve used paint.net for image editing on windows, but after switching to Mac based work environment I found GIMP as a cross platform alternative. This is mostly for cleaning up screenshots for documentation or blog articles and perhaps adding basic annotations.&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://www.gimp.org/downloads/&quot;&gt;Download GIMP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;install-postman&quot;&gt;Install Postman&lt;/h2&gt;

&lt;p&gt;Postman is a collaboration platform for API development. Postman’s features simplify each step of building an API and streamline collaboration so you can create better APIs—faster.&lt;/p&gt;

&lt;p&gt;Most notably, you can test your APIs easily and repeatably with their GUI tool. Instead of memorizing dozens of curl commands with various application headers and request bodies, Postman lets you save a library of test requests for your application API so you can rerun them anytime.&lt;/p&gt;

&lt;ul class=&quot;task-list&quot;&gt;
  &lt;li class=&quot;task-list-item&quot;&gt;&lt;input type=&quot;checkbox&quot; class=&quot;task-list-item-checkbox&quot; disabled=&quot;disabled&quot; /&gt;&lt;a href=&quot;https://www.postman.com/downloads/&quot;&gt;Download Postman&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>Ben Swayne</name></author><category term="osx" /><category term="vscode" /><category term="docker" /><category term="msoffice" /><category term="slack" /><category term="gimp" /><summary type="html">Step by step of everything I install or use for software development. VSCODE, Git, Docker, Postman, etc.</summary></entry><entry><title type="html">Switching from Windows 10 to Mac OSX</title><link href="https://www.benswayne.com/switching-from-windows-10-to-mac-osx/" rel="alternate" type="text/html" title="Switching from Windows 10 to Mac OSX" /><published>2019-10-16T10:13:21-07:00</published><updated>2021-03-05T14:27:05-08:00</updated><id>https://www.benswayne.com/switching-from-windows-10-to-mac-osx</id><content type="html" xml:base="https://www.benswayne.com/switching-from-windows-10-to-mac-osx/">&lt;p&gt;I’ve been a life long Microsoft disciple. I’ve had a Microsoft Windows operating system since Windows 3.11 and learned software development starting from classic VB4-VB6 through masm32 (Microsoft’s Macro Assembler) and into C# with .net. I even bought a Windows Phone believing Microsoft could carve out some market share.&lt;/p&gt;

&lt;p&gt;At one point in my career my employer was looking for excellent laptops to use for developer workstations. We ordered up the top fully loaded windows machine from a popular vendor and put them to use. These laptops were about 1-1/2” thick and I jokingly referred to them as “20,000 btu heaters” as they put out quite the heat while running that cutting edge i7 processor.&lt;/p&gt;

&lt;p&gt;The problem was these laptops blue screened frequently, specifically when using multiple monitors. It wasn’t really Microsoft’s fault though, it was just pour quality video drivers from the laptop OEM that caused the lock ups. There were other unique issues too. For example having the bluetooth on would prevent Microsoft Office from working. Again some integrations with a bad Bluetooth driver caused the unreliability.&lt;/p&gt;

&lt;p&gt;During this time the support for Bootcamp on Mac significantly improved. We bought all new MacBook Pros and bootcamped them into Windows 7 laptops. This is around 2013-2014. This was an incredible combination! The hardware quality of Mac with the ubiquitous software support of Microsoft Windows. This was a very stable, very powerful and reliable laptop.&lt;/p&gt;

&lt;p&gt;I ran my 2013 MacBook Pro as a Windows 7 machine right up to 2019! I restarted it maybe only every few months. Never an issue. After about 3 years my employer allowed employees to buyout company laptops for cheap and they refreshed the company with the latest models, so I bought out my MacBook pro for personal use.&lt;/p&gt;

&lt;p&gt;Shortly after that I ended up with a Microsoft Surface Pro as my main work machine with another employer. The concept was cool. I had liked the idea of a touch screen and the magnetic single cord docking station was beautiful (the mac required 4-5 cords to dock to a full developer workstation with a few monitors using display port and hdmi connections). However in the long run the form factor was a bit awkward to use on the couch or any other informal seating area - not too bad, but not great either. So what really pushed me over the edge? Windows 10.&lt;/p&gt;

&lt;p&gt;Windows 10 has frozen for me on a regular basis from day 1. Sometimes it drops wi-fi connectivity until I do a full system restart. Sometimes it just “locks up” with a frozen display and no response to keyboard/mouse. Sometimes the surface keyboard will light up and respond to keys but the display won’t turn on. But worst of all Windows 10 has made me restart my computer several times a week for the last year or more. Perhaps I have bad work habits, but I like leaving my work open, closing the lid for dinner or something and picking up where I left off a few hours later. I rarely “shutdown” my computer and tend to have quite a few open apps while I work.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Worst of all Windows 10 has made me restart my computer several times a week for the last year or more.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To make matters worse Microsoft often changes system behaviour or settings during one of these forced updates with a restart. Sometimes they give you something new, sometimes they take something away - its always a surprise!&lt;/p&gt;

&lt;p&gt;While frustrated with my frozen Microsoft Surface one day, I grabbed my then windows 7 MacBook Pro and did the unthinkable… &lt;em&gt;I booted back into MacOS!&lt;/em&gt; I hadn’t booted the laptop into MacOS since 2013 or 2014. The old MacOS noticed I was out of date and asked if I wanted to update. After 1 unified update the laptop was right up to the latest release of OSX. The process was so smooth… even on this old laptop.&lt;/p&gt;

&lt;p&gt;I installed Microsoft Visual Studio Code (VSCODE), Microsoft Office, Google Chrome, Firefox, Docker Desktop and in about an hour I had a very up to date and capable developer environment.&lt;/p&gt;

&lt;p&gt;To give Microsoft credit where credit is due, part of why my Mac is now an excellent environment is because of tools like VSCODE and MS Office being available equally on a mac. I will always have a soft spot for C# as one of the best languages for developers, but the ubiquity of NodeJS as a strong framework for containerized web apps or microservices can’t be denied either.&lt;/p&gt;

&lt;p&gt;I’m now planning to refresh my MacBook Pro sometime in the next year and retire the Microsoft Surface.&lt;/p&gt;</content><author><name>Ben Swayne</name></author><category term="win10" /><category term="osx" /><category term="vscode" /><category term="docker" /><category term="msoffice" /><summary type="html">I'm switching from a Windows 10 Microsoft Surface laptop to a MacBook Pro with OSX. Here's why.</summary></entry><entry><title type="html">Rebuilding my website with Jekyll!</title><link href="https://www.benswayne.com/rebuilding-website-with-jekyll/" rel="alternate" type="text/html" title="Rebuilding my website with Jekyll!" /><published>2019-05-09T10:13:21-07:00</published><updated>2021-03-05T14:27:05-08:00</updated><id>https://www.benswayne.com/rebuilding-website-with-jekyll</id><content type="html" xml:base="https://www.benswayne.com/rebuilding-website-with-jekyll/">&lt;p&gt;Over the years I’ve used my personal website as a platform for learning. At one point I had it running on FunnelWebBlog and later on Umbraco. Both of these were traditional monolithic web apps that required hosting and a database (as would something like WordPress). Content Management Systems like these always have their quirks when customizing and theming and can be challenging to export/import content when you change platforms.&lt;/p&gt;

&lt;p&gt;Recently I started on the Microsoft DevOps certification path and needed a project to use while learning the tools. This seemed like the perfect time to re-evaluate the BenSwayne.com project!&lt;/p&gt;

&lt;p&gt;My goal in learning DevOps was to have my website automatically build, test and deploy whenever I committed changes to the github repo. I wanted to use Azure DevOps Pipelines to help me gain familiarity with the Microsoft DevOps toolset.&lt;/p&gt;

&lt;p&gt;While I was at it, I took the opportunity to reevaluate what platform I used to author my website. Traditional &lt;abbr title=&quot;Content Management System&quot;&gt;CMS&lt;/abbr&gt;’s are really not necessary for a simple personal website and add a lot of overhead. Also personal websites often go through ups and downs in change frequency over the years as career and family demands fluctuate. One of the principles of modern devops culture is to have everything you can automated and version controlled - “everything as code”. I wanted my personal website content “as code”, in version control, so that it would survive changing platforms, changing hosting providers, or whatever unforseen change in the future.&lt;/p&gt;

&lt;p&gt;Enter Static Site Generators! Static site generators consume content usually from the filesystem, such as markdown text files, and render them using some kind of theme into static html files. All the inputs for the static site generators are version controlled (in your repo) and hosting is cheap and fast as all you have for outputs is a bunch of static files.&lt;/p&gt;

&lt;p&gt;I chose to start exploring Jekyll primarily because this is what powers GitHub Pages which I am likely to use in a professional capacity at work some day (for generating repo/project documentation that lives in github).&lt;/p&gt;

&lt;h2 id=&quot;project-requirementsgoals&quot;&gt;Project Requirements/Goals&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Version Control: GitHub&lt;/li&gt;
  &lt;li&gt;&lt;abbr title=&quot;Integrated Development Environment&quot;&gt;IDE&lt;/abbr&gt;: Visual Studio Code&lt;/li&gt;
  &lt;li&gt;Website Generator: Jekyll&lt;/li&gt;
  &lt;li&gt;&lt;abbr title=&quot;Continuous Integration/Continuous Deployment&quot;&gt;CI/CD&lt;/abbr&gt;: Azure DevOps Pipelines&lt;/li&gt;
  &lt;li&gt;Build Agent: Docker Image&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;github-for-version-control&quot;&gt;GitHub for Version Control&lt;/h3&gt;

&lt;p&gt;GitHub is definately one of the most popular version control systems in use today. I had used other git based version control platforms before (Atlassian BitBucket). But particularly in light of Microsoft’s acquisition of GitHub in 2018 and tight integration with Azure Devops, I wanted to start using GitHub as my primary version control platform.&lt;/p&gt;

&lt;h3 id=&quot;visual-studio-code-ide&quot;&gt;Visual Studio Code &lt;abbr title=&quot;Integrated Development Environment&quot;&gt;IDE&lt;/abbr&gt;&lt;/h3&gt;

&lt;p&gt;Visual Studio Code (&lt;abbr title=&quot;Visual Studio Code&quot;&gt;VSCODE&lt;/abbr&gt;) is fast becoming the #1 &lt;abbr title=&quot;Integrated Development Environment&quot;&gt;IDE&lt;/abbr&gt; for modern cross platform development and can be used on Windows, Mac or Linux. &lt;abbr title=&quot;Visual Studio Code&quot;&gt;VSCODE&lt;/abbr&gt; has built in git support and an extensible design that allows you to switch your terminal between a traditional windows Command Prompt, PowerShell, or Bash (using the windows subsystem for linux).&lt;/p&gt;

&lt;p&gt;As part of my learning, I wanted to gain familiarity with Visual Studio Code as my primary &lt;abbr title=&quot;Integrated Development Environment&quot;&gt;IDE&lt;/abbr&gt; for this project.&lt;/p&gt;

&lt;h3 id=&quot;jekyll-static-site-generator&quot;&gt;Jekyll Static Site Generator&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;Jekyll is a simple, blog-aware, static site generator for personal, project, or organization sites. Written in Ruby by Tom Preston-Werner, GitHub’s co-founder, it is distributed under the open source MIT license. &lt;br /&gt;
– &lt;a href=&quot;https://en.wikipedia.org/wiki/Jekyll_(software)&quot;&gt;Wikipedia&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;azure-devops-pipelines&quot;&gt;Azure DevOps Pipelines&lt;/h3&gt;

&lt;p&gt;Azure has ingested what used to be Visual Studio Team Services, added more cloud capabilities and produced what is now known as Azure DevOps Pipelines. There are lots of other &lt;abbr title=&quot;Continuous Integration/Continuous Deployment&quot;&gt;CI/CD&lt;/abbr&gt; platforms out there, but I wanted to do this the Microsoft way (as I’m pursuing the Microsoft DevOps certification path).&lt;/p&gt;

&lt;h3 id=&quot;docker-build-agent&quot;&gt;Docker Build Agent&lt;/h3&gt;

&lt;p&gt;You can build your project in a native Ubuntu image directly, but I wanted to build my project inside a docker image. This is probably not strictly necessary for a personal website built with Jekyll, but again I want to build my comfort with Docker in general. Building with docker also makes it easier to switch from one &lt;abbr title=&quot;Continuous Integration/Continuous Deployment&quot;&gt;CI/CD&lt;/abbr&gt; platform to another if you ever wanted to.&lt;/p&gt;</content><author><name>Ben Swayne</name></author><category term="github" /><category term="jekyll" /><category term="azure" /><category term="docker" /><category term="devops" /><summary type="html">I'm rebuilding my website with the static site generator Jekyll. Jekyll is quite popular in part because it's what powers GitHub pages.</summary></entry></feed>