<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on Alex Norell</title><link>https://alexnorell.com/post/</link><description>Recent content in Posts on Alex Norell</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 30 Jul 2024 12:00:00 -0700</lastBuildDate><atom:link href="https://alexnorell.com/post/index.xml" rel="self" type="application/rss+xml"/><item><title>How To Set Up YubiKey On macOS</title><link>https://alexnorell.com/post/set-up-yubikey/</link><pubDate>Tue, 30 Jul 2024 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/set-up-yubikey/</guid><description>&lt;p&gt;This is a follow up to the &lt;a href="https://alexnorell.com/post/set-up-gpg"&gt;How To Set Up GPG on macOS&lt;/a&gt; guide We&amp;rsquo;ll build on the GPG key configuration to move the storage off the machine itself to a physical key. We&amp;rsquo;ll also cover setting up the YubiKey for other services and uses, like WebAuthn.&lt;/p&gt;
&lt;p&gt;By the end of the guide you will:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Disable YubiKey OTP&lt;/li&gt;
&lt;li&gt;Move GPG keys to a YubiKey&lt;/li&gt;
&lt;li&gt;Disable the macOS Smart Card prompt&lt;/li&gt;
&lt;li&gt;Add a YubiKey to Web Services&lt;/li&gt;
&lt;li&gt;Disable SMS Authentication&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some requirements:&lt;/p&gt;</description></item><item><title>How To Set Up GPG On macOS</title><link>https://alexnorell.com/post/set-up-gpg/</link><pubDate>Mon, 29 Jul 2024 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/set-up-gpg/</guid><description>&lt;p&gt;This guide covers everything you need for setting up GPG on macOS for software development. By the end of this guide, you will accomplish the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a primary GPG key&lt;/li&gt;
&lt;li&gt;Create an authentication key for use with SSH&lt;/li&gt;
&lt;li&gt;Create a signing key for git commit signatures&lt;/li&gt;
&lt;li&gt;Deploy these keys to GitHub&lt;/li&gt;
&lt;li&gt;Remove the primary private key to follow best practices&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some requirements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You have &lt;code&gt;brew&lt;/code&gt; installed&lt;/li&gt;
&lt;li&gt;You have a password manager set up&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="what-is-gpg"&gt;What is GPG&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://gnupg.org/"&gt;GNU Privacy Guard&lt;/a&gt; (GPG) is an encryption software that enables secure communication and data storage. It is an implementation of the &lt;a href=""&gt;OpenPGP&lt;/a&gt; standard, but has become the defacto standard implementation. GPG uses a hybrid approach combining symmetric-key cryptography for speed and public-key cryptography for secure key exchange. can utilize GPG for signing and verifying documents, encrypting emails, and safeguarding files. Secure email providers like &lt;a href="https://proton.me"&gt;Proton Mail&lt;/a&gt; use it for encryption of emails and files.&lt;/p&gt;</description></item><item><title>Smart Whole House Fan</title><link>https://alexnorell.com/post/whole-house-fan/</link><pubDate>Tue, 16 Jul 2024 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/whole-house-fan/</guid><description>&lt;p&gt;We added a whole house fan to our house to bring in fresh air and aid in cooling down the house in the evening. The fan is fully controllable with Home Assistant using a couple ZWave relays.&lt;/p&gt;
&lt;h2 id="system-design"&gt;System Design&lt;/h2&gt;
&lt;p&gt;We went with a slightly oversized unit than our square footage and climate zone need. The unit we chose was the Quiet Cool QC ES-4700 which provides two speeds, high at 4,195 CFM and low at 2,304 CFM. The fan has two control lines that determine speed. Normally, these lines are hooked up to Quiet Cool&amp;rsquo;s own smart fan control system to control the speed or a timer switch and control switch.&lt;/p&gt;</description></item><item><title>2024 Ski Season</title><link>https://alexnorell.com/post/2024-ski-season/</link><pubDate>Sat, 01 Jun 2024 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/2024-ski-season/</guid><description>&lt;h2 id="ski-log"&gt;Ski Log&lt;/h2&gt;
&lt;div class="ski-stats-container"&gt;
 &lt;table class="ski-stats-table"&gt;
 &lt;tr&gt;
 &lt;td class="ski-stats-title"&gt;Days&lt;/td&gt;
 &lt;td class="ski-stats-title"&gt;Mountains&lt;/td&gt;
 &lt;td class="ski-stats-title"&gt;Vertical Feet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td class="ski-stats-value"&gt;80&lt;/td&gt;
 &lt;td class="ski-stats-value"&gt;40&lt;/td&gt;
 &lt;td class="ski-stats-value"&gt;1.35M&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/table&gt;
&lt;/div&gt;

&lt;h3 id="road-trip"&gt;Road Trip&lt;/h3&gt;
&lt;p&gt;We made the decision this year to do the road trip that we had been wanting to do the previous 2 years. The goal was to ski as many places as we could on our two passes and make our way up to Canada for a couple weeks. The road trip didn&amp;rsquo;t have a set end date, but we had a rough plan of what we wanted to do.&lt;/p&gt;</description></item><item><title>2023 Ski Season</title><link>https://alexnorell.com/post/2023-ski-season/</link><pubDate>Fri, 14 Jul 2023 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/2023-ski-season/</guid><description>&lt;p&gt;The previous year we dipped our toes into the ski bum road trip lifestyle with a month long trip. It was awesome to spend so much time on the road and really learn what we like and don&amp;rsquo;t like.&lt;/p&gt;
&lt;p&gt;I switched my pass this year to the Ikon Pass to get more days at the places I love and to expand the number of places that I am able to ski. It also didn&amp;rsquo;t help that Altera removed their mountains from the Mountain Collective pass, taking away all the California mountains. I also felt a bit limited in the number of days I could ski with the Mountain Collective pass, only getting 2 days at each of the partner resorts. Ikon gave me unlimited at the Altera owned mountains and 7 days at the rest of the mountains I would want to ski.&lt;/p&gt;</description></item><item><title>2022 Ski Season</title><link>https://alexnorell.com/post/2022-ski-season/</link><pubDate>Wed, 01 Jun 2022 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/2022-ski-season/</guid><description>&lt;p&gt;We bought Mountain Collective passes for the third year in a row. The pandemic wasn&amp;rsquo;t fully over and we really wanted to do a road trip to hit all of the western US mountains. We had bought a truck after buying our house and were planning on using that to get around the mountains.&lt;/p&gt;
&lt;h2 id="the-plan"&gt;The Plan&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Road trip around the US Rockies in our truck&lt;/li&gt;
&lt;li&gt;Spend a longer period of time in each city&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-truck"&gt;The Truck&lt;/h2&gt;
&lt;p&gt;We purchased a 2006 Chevrolet Silverado in July 2021 as a second vehicle mainly for the house projects we were planning on doing with our new house. It had four wheel drive and I also outfitted it with new snow tires and a truck bed cover at the beginning of 2022 in preparation for our trip.&lt;/p&gt;</description></item><item><title>Interview: Startup Infrastructure Design</title><link>https://alexnorell.com/post/startup-infrastructure-design/</link><pubDate>Sat, 29 May 2021 09:57:26 -0700</pubDate><guid>https://alexnorell.com/post/startup-infrastructure-design/</guid><description>&lt;h2 id="prompt"&gt;Prompt&lt;/h2&gt;
&lt;p&gt;As we scale, we need to streamline our code deployment and infrastructure to be as efficient and robust as possible so that we can iterate quickly. These are some of the challenges that you’d be solving.&lt;/p&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;What tools/processes do you use for cloud infrastructure management, security, and auditing?&lt;/li&gt;
&lt;li&gt;We are a small, fast moving startup. With this in mind, how would you think about build vs buy?&lt;/li&gt;
&lt;li&gt;How would you construct a CI/CD pipeline on AWS with a &lt;a href="https://reactjs.org/"&gt;React frontend&lt;/a&gt;, &lt;a href="https://nodejs.org/en/"&gt;NodeJS backend&lt;/a&gt;, and pool of worker jobs?&lt;/li&gt;
&lt;li&gt;How would you setup an &lt;a href="https://www.elastic.co/elasticsearch/"&gt;ElasticSearch&lt;/a&gt; cluster for search with 100 million records in it, mostly free text across multiple languages?&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="answers"&gt;Answers&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;m going to tackle these questions using only AWS services because I know them and I know that they work well together. These questions can be answered in a lot of different ways with varying amounts of development and managements costs associated with them. Let&amp;rsquo;s just assume that the cost of going with an AWS provided solution is still less than hiring more engineers to build it all yourself.&lt;/p&gt;</description></item><item><title>2021 Ski Season</title><link>https://alexnorell.com/post/2021-ski-season/</link><pubDate>Sat, 01 May 2021 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/2021-ski-season/</guid><description>&lt;p&gt;COVID-19 really screwed this year up for us. We had Mountain Collective Passes, but we didn&amp;rsquo;t feel comfortable traveling, and we didn&amp;rsquo;t travel for skiing until after Mariah had received her first vaccine shot. Due to all this, we only skied three times, and all of them at Palisades Tahoe.&lt;/p&gt;
&lt;h2 id="ski-trip-log"&gt;Ski Trip Log&lt;/h2&gt;
&lt;div class="ski-stats-container"&gt;
 &lt;table class="ski-stats-table"&gt;
 &lt;tr&gt;
 &lt;td class="ski-stats-title"&gt;Days&lt;/td&gt;
 &lt;td class="ski-stats-title"&gt;Mountains&lt;/td&gt;
 &lt;td class="ski-stats-title"&gt;Vertical Feet&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td class="ski-stats-value"&gt;3&lt;/td&gt;
 &lt;td class="ski-stats-value"&gt;2&lt;/td&gt;
 &lt;td class="ski-stats-value"&gt;50.4K&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/table&gt;
&lt;/div&gt;

&lt;h3 id="march-trip"&gt;March Trip&lt;/h3&gt;
&lt;p&gt;We drove up the night before and stayed at the Best Western Plus in Truckee for two nights before driving home.&lt;/p&gt;</description></item><item><title>IoT Village Virtual CTF</title><link>https://alexnorell.com/post/iotvillage-virtual-ctf-2021/</link><pubDate>Sat, 01 May 2021 10:31:33 -0700</pubDate><guid>https://alexnorell.com/post/iotvillage-virtual-ctf-2021/</guid><description>&lt;p&gt;Last week, &lt;a href="https://iotvillage.org"&gt;IoTVillage&lt;/a&gt; hosted a virtual Capture the Flag (CTF) event. The purpose of the event is to use known exploits on devices to retrieve information from within the device. This information is known as a flag and can really be anything; from the MD5 of a particular function, to the contents of a file in the system.&lt;/p&gt;
&lt;p&gt;The CTF is set up as a 3 tiered network with vulnerable devices in each network. You connect into the network via a VPN and it drops you into level one. There are no instructions other than the name of product and what we need to retrieve from the device. These devices are all IoT devices with known vulnerabilities: Network Attached Storage Devices, IP Cameras, Consumer Routers, etc.&lt;/p&gt;</description></item><item><title>State of the Desk 2021</title><link>https://alexnorell.com/post/desk-2021/</link><pubDate>Sun, 31 Jan 2021 15:19:45 -0800</pubDate><guid>https://alexnorell.com/post/desk-2021/</guid><description>An overview of my home office desk.</description></item><item><title>Add Cloudfront to a Website</title><link>https://alexnorell.com/post/add-cloudfront-to-website/</link><pubDate>Sat, 22 Aug 2020 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/add-cloudfront-to-website/</guid><description>&lt;p&gt;The domain I&amp;rsquo;m using, &lt;code&gt;norell.dev&lt;/code&gt;, requires the site to be served via HTTPS, or else the browser won&amp;rsquo;t display it. Google, the owners of the gTLD, requires HSTS for the domain.&lt;/p&gt;
&lt;p&gt;From the &lt;a href="https://get.dev/#benefits"&gt;get.dev&lt;/a&gt; page:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Your security is our priority. The &lt;code&gt;.dev&lt;/code&gt; top-level domain is included on the HSTS preload list, making HTTPS required on all connections to .dev websites and pages without needing individual HSTS registration or configuration. Security is built in.&lt;/p&gt;</description></item><item><title>Add External Domain in AWS and create record for S3</title><link>https://alexnorell.com/post/add-external-domain-aws/</link><pubDate>Wed, 19 Aug 2020 21:21:09 -0700</pubDate><guid>https://alexnorell.com/post/add-external-domain-aws/</guid><description>&lt;p&gt;I have a domain name, &lt;code&gt;norell.dev&lt;/code&gt; that is registered outside of AWS. I would like to use it for my development within AWS, but Amazon doesn&amp;rsquo;t support the &lt;code&gt;.dev&lt;/code&gt; domain name. Google is the gTLD owner, and Amazon and Google don&amp;rsquo;t play well together. Even though Amazon won&amp;rsquo;t let me transfer my domain to be registered in Route53, I can still configure it to be used using Hosted Zones.&lt;/p&gt;
&lt;p&gt;I will follow &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/migrate-dns-domain-inactive.html"&gt;this guide&lt;/a&gt; to get it set up.&lt;/p&gt;</description></item><item><title>Host Website in AWS S3</title><link>https://alexnorell.com/post/host-website-in-aws/</link><pubDate>Tue, 18 Aug 2020 23:06:28 -0700</pubDate><guid>https://alexnorell.com/post/host-website-in-aws/</guid><description>&lt;p&gt;I want to deploy a copy of this website to AWS S3, and set up all of the necessary infrastructure using terraform. This post will go over the steps that were taken to achieve this.&lt;/p&gt;
&lt;h2 id="set-up-provider"&gt;Set up provider&lt;/h2&gt;
&lt;p&gt;This will be using AWS, so the terraform provider must be set. This will use the latest terraform version, &lt;code&gt;0.13&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The provider is defined below, and located in &lt;code&gt;main.tf&lt;/code&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#c9c9c9;background-color:#282c34;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-tf" data-lang="tf"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7fbaf5"&gt;provider&lt;/span&gt; &lt;span style="color:#82cc6a"&gt;&amp;#34;aws&amp;#34;&lt;/span&gt; &lt;span style="color:#56b6c2"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; version &lt;span style="color:#bc74c4"&gt;=&lt;/span&gt; &lt;span style="color:#82cc6a"&gt;&amp;#34;~&amp;gt; 3.0&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; region &lt;span style="color:#bc74c4"&gt;=&lt;/span&gt; &lt;span style="color:#82cc6a"&gt;&amp;#34;us-west-1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56b6c2"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="set-up-backend"&gt;Set up backend&lt;/h2&gt;
&lt;p&gt;This project will use S3 as the backend for storing the terraform state files. I created an S3 bucket using the AWS cli.&lt;/p&gt;</description></item><item><title>Switching to Netlify for static hosting</title><link>https://alexnorell.com/post/switching-to-netlify/</link><pubDate>Sun, 16 Aug 2020 12:59:51 -0700</pubDate><guid>https://alexnorell.com/post/switching-to-netlify/</guid><description>&lt;p&gt;Previously I had my website hosted in a GCP instance behind nginx. That really was too much overhead for what I actually needed for this site.&lt;/p&gt;
&lt;p&gt;A couple of the downsides:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Manual setup of the entire GCP instance&lt;/li&gt;
&lt;li&gt;No CI pipeline&lt;/li&gt;
&lt;li&gt;No CDN&lt;/li&gt;
&lt;li&gt;Expensive&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="manual-set-up"&gt;Manual Set Up&lt;/h2&gt;
&lt;p&gt;I go over in my previous post, &lt;a href="../creating-and-deploying-this-website"&gt;Creating and Deploying This Website&lt;/a&gt;. In summary, I was previously using the free tier of GCP to host a nano sized instance that contained nGINX and several static websites. I needed to set up certbot manually for each of these websites. I also needed to set up users and SSH credentials to lock down the machine.&lt;/p&gt;</description></item><item><title>2020 Ski Season</title><link>https://alexnorell.com/post/2020-ski-season/</link><pubDate>Wed, 01 Apr 2020 12:00:00 -0700</pubDate><guid>https://alexnorell.com/post/2020-ski-season/</guid><description>&lt;p&gt;This was the first year I got back into skiing after graduating from college, and my wife and I decided to get Mountain Collective passes. We figured this would motivate us to explore and experience a variety of resorts instead of just sticking to our usual routine of driving up to Tahoe. It was an exciting way to jump back into my love for skiing while also turning it into an adventure for both of us.&lt;/p&gt;</description></item><item><title>Creating and Deploying This Website</title><link>https://alexnorell.com/post/creating-and-deploying-this-website/</link><pubDate>Tue, 12 Nov 2019 00:00:00 +0000</pubDate><guid>https://alexnorell.com/post/creating-and-deploying-this-website/</guid><description>A detailed explanation on how this website is generated and hosted.</description></item></channel></rss>