<?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"><channel><title><![CDATA[Stephen Tvedt's Blog RSS Feed]]></title><description><![CDATA[Thoughts on Design, Photography, Engineering and more!]]></description><link>https://blog.stephentvedt.com</link><generator>GatsbyJS</generator><lastBuildDate>Fri, 21 Jun 2024 09:59:44 GMT</lastBuildDate><item><title><![CDATA[Top 7 Rock Climbing Podcasts for 2023]]></title><description><![CDATA[Are you a climbing enthusiast looking to stay up-to-date with the latest news and insights in the climbing world? Tuning into climbing…]]></description><link>https://blog.stephentvedt.com/posts/2023/favorite-climbing-podcasts/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2023/favorite-climbing-podcasts/</guid><pubDate>Wed, 29 Mar 2023 08:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Are you a climbing enthusiast looking to stay up-to-date with the latest news and insights in the climbing world? Tuning into climbing-related podcasts is a great way to keep the stoke high! Here are some of the best podcasts out there that cover a wide range of climbing-related topics:&lt;/p&gt;
&lt;h2&gt;The Nugget Climbing Podcast&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAIDBAX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB9SsJl6kLNQAf/8QAGxAAAgMAAwAAAAAAAAAAAAAAAQIAAxIQEyL/2gAIAQEAAQUC161FIYWJOphK1ynP/8QAFREBAQAAAAAAAAAAAAAAAAAAICH/2gAIAQMBAT8Bg//EABURAQEAAAAAAAAAAAAAAAAAACAh/9oACAECAQE/AaP/xAAbEAACAgMBAAAAAAAAAAAAAAABEQAhAhAgMf/aAAgBAQAGPwJaYjXpu5WcA4//xAAbEAEBAQACAwAAAAAAAAAAAAABEQAgQSExcf/aAAgBAQABPyFlRZgaqaYlAnoRpvN8czPvvh//2gAMAwEAAgADAAAAELTAAP/EABcRAQADAAAAAAAAAAAAAAAAAAERICH/2gAIAQMBAT8QGGlP/8QAFxEBAAMAAAAAAAAAAAAAAAAAAREgIf/aAAgBAgEBPxBJY0//xAAcEAEBAAICAwAAAAAAAAAAAAABEQAxQZEgIWH/2gAIAQEAAT8Qm8gKjy8TE7o/TNoWlDkyKqDoHuXDZqe9GQYisNLfD//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;The Nugget Climbing Podcast Graphic&quot;
        title=&quot;&quot;
        src=&quot;/static/c8587c848b4d357cb7625db5c0de952b/27ec1/nugget.jpg&quot;
        srcset=&quot;/static/c8587c848b4d357cb7625db5c0de952b/3c01f/nugget.jpg 293w,
/static/c8587c848b4d357cb7625db5c0de952b/27ec1/nugget.jpg 400w&quot;
        sizes=&quot;(max-width: 400px) 100vw, 400px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
Hosted by professional climbing coach and author Steven Dimmit, The Nugget Climbing Podcast focuses on the technical aspects of climbing, including technique, training, and gear. Each episode features in-depth discussions with professional climbers, coaches, and industry experts, providing valuable insights into the science and mechanics of climbing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/show/0lvih5I7kELNS2NCs2Ab7r?si=672b7d15898c412d&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The Careless Talk Climbing Podcast&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAIBAwX/xAAUAQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIQAxAAAAH2+kYUwVAdAf/EAB0QAAEDBQEAAAAAAAAAAAAAAAEAAhIQESExQUL/2gAIAQEAAQUCllA3HfLdEAqDaf/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABkQAAEFAAAAAAAAAAAAAAAAAAABECAhMf/aAAgBAQAGPwKVoY3/xAAaEAEBAQEAAwAAAAAAAAAAAAABEQAxIUFR/9oACAEBAAE/IVETUl9bzA3M4S5Ri4yLuIOPjwBw3//aAAwDAQACAAMAAAAQIwcA/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHRABAQACAgMBAAAAAAAAAAAAAREAITFBUXGRof/aAAgBAQABPxCl7iWV098YNs9nWHKBWJ4xCthuv5mut8WfcBgEvTgaAPNMEiXOGYJAPRn/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot; The Careless Talk Climbing Podcast Graphic&quot;
        title=&quot;&quot;
        src=&quot;/static/3daaeea0ad3d16d4e5864118e2d7f8e2/27ec1/careless.jpg&quot;
        srcset=&quot;/static/3daaeea0ad3d16d4e5864118e2d7f8e2/3c01f/careless.jpg 293w,
/static/3daaeea0ad3d16d4e5864118e2d7f8e2/27ec1/careless.jpg 400w&quot;
        sizes=&quot;(max-width: 400px) 100vw, 400px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
Aidan Roberts, a top boulderer in the world, and Sam Prior team up to host The Careless Talk Climbing Podcast, a captivating and unconventional show for climbing aficionados. The podcast is characterized by its spontaneous, free-flowing conversations that touch on various aspects of climbing, as well as unrelated topics. While some episodes delve deep into climbing, others may only mention the sport in passing. The podcast features predominantly elite climbers as guests, but the unscripted discussions often veer off course, exploring diverse subjects and sparking thought-provoking questions. The Careless Talk Climbing Podcast’s refreshingly candid and open approach makes it an enjoyable and intriguing listen for anyone with an interest in climbing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/show/4TmPWUyjeqtBIm9bNz2QhR?si=7e70867d3f684425&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The Dirtbag Diaries&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAEAgP/2gAMAwEAAhADEAAAAbaTuXbnpLNFybzGxf/EABsQAAIDAAMAAAAAAAAAAAAAAAABAhARAxIx/9oACAEBAAEFAox06Vxs0fo3X//EABsRAQACAgMAAAAAAAAAAAAAAAEAAgMREBIx/9oACAEDAQE/AQA0S1Kb9mNenH//xAAaEQEAAQUAAAAAAAAAAAAAAAACAAEQERIi/9oACAECAQE/AW1tCliKnVv/xAAUEAEAAAAAAAAAAAAAAAAAAAAw/9oACAEBAAY/Ah//xAAaEAEBAQADAQAAAAAAAAAAAAABABEQITHh/9oACAEBAAE/IfbIzqTGMJOfJ6mHJnj/2gAMAwEAAgADAAAAEOTQfv/EABsRAAIBBQAAAAAAAAAAAAAAAAEhABARMWGx/9oACAEDAQE/EAIC7BzCal9eKf/EABkRAQACAwAAAAAAAAAAAAAAAAEAERAhQf/aAAgBAgEBPxDoRAahV1j/xAAdEAEAAgICAwAAAAAAAAAAAAABACExYRARQXGR/9oACAEBAAE/ELyKI1eW4iDkjAc6gVX0QRMLEQj0w4Fr3x//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;The Dirtbag Diaries Graphic&quot;
        title=&quot;&quot;
        src=&quot;/static/3fbb7f6b767f47fffcc78278b7ae70f0/27ec1/dirtbag.jpg&quot;
        srcset=&quot;/static/3fbb7f6b767f47fffcc78278b7ae70f0/3c01f/dirtbag.jpg 293w,
/static/3fbb7f6b767f47fffcc78278b7ae70f0/27ec1/dirtbag.jpg 400w&quot;
        sizes=&quot;(max-width: 400px) 100vw, 400px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
The Dirtbag Diaries is not a climbing specific podcast but rather an outdoors podcast that explores the adventurous side of the sport. Hosted by Fitz Cahall, the show features stories of climbers and adventurers from around the world. The stories cover topics ranging from climbing big walls to mountaineering to backpacking and more. If you’re looking for inspiration for your next climbing or outdoor adventure.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/show/7CzRhX5fsW2rmrLJxv9oUU?si=ff0e9ccf6cd34165&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The Enormocast&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQCA//EABcBAAMBAAAAAAAAAAAAAAAAAAECAwD/2gAMAwEAAhADEAAAAcyahVrEaqc8kz0A3//EABwQAAICAgMAAAAAAAAAAAAAAAECAAMREhMjQf/aAAgBAQABBQLbWWNhVr5BbfpFbsZiCWJnuJ//xAAWEQEBAQAAAAAAAAAAAAAAAAACESD/2gAIAQMBAT8BSuP/xAAaEQACAgMAAAAAAAAAAAAAAAABAgAQERNR/9oACAECAQE/AVUKcibG7f8A/8QAHxAAAgEDBQEAAAAAAAAAAAAAAAERAiFxEBIiMWGh/9oACAEBAAY/Aobwez0bp+EUq4m4aONULJe+v//EABwQAQACAwADAAAAAAAAAAAAAAEAESExYVFxwf/aAAgBAQABPyGtC2wYWl6YanxSLPYtIATsI+pS22gaRC8nYcRHif/aAAwDAQACAAMAAAAQJPc//8QAFxEBAQEBAAAAAAAAAAAAAAAAAREAEP/aAAgBAwEBPxBTHQ7/AP/EABgRAAIDAAAAAAAAAAAAAAAAAAARECEx/9oACAECAQE/EFosXkv/xAAdEAEAAgIDAQEAAAAAAAAAAAABABEhMUFRYZGh/9oACAEBAAE/EA2geG3qNylOhoVa9b/JVYRULAQdlEYCm4FAmKxv2eeZA3yjxVy6g8S1/pmxWGmeKgKofJ//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot; The Enormocast Graphic&quot;
        title=&quot;&quot;
        src=&quot;/static/4174ed58f036565ff0e9930662307eda/27ec1/enormocast.jpg&quot;
        srcset=&quot;/static/4174ed58f036565ff0e9930662307eda/3c01f/enormocast.jpg 293w,
/static/4174ed58f036565ff0e9930662307eda/27ec1/enormocast.jpg 400w&quot;
        sizes=&quot;(max-width: 400px) 100vw, 400px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Hosted by Chris Kalous, The Enormocast is one of the longest-running climbing podcasts out there. The podcast features interviews with a variety of climbers, from up-and-coming athletes to legends of the sport. Each episode is a deep dive into the guest’s climbing history, as well as their personal experiences and insights into the world of climbing.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/show/0reZMeCFdSHH3SM7HoEeCK?si=ab0a3856dd3f4e2d&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;TrainingBeta&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAIFAQP/xAAXAQEAAwAAAAAAAAAAAAAAAAABAAME/9oADAMBAAIQAxAAAAHFqLDxSXf6Z65BP//EABsQAAMBAAMBAAAAAAAAAAAAAAACEgEDESEi/9oACAEBAAEFAlbOqU33eOb+NQhCEIU//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAHxAAAQMDBQAAAAAAAAAAAAAAAAECMhAxkRESIUFR/9oACAEBAAY/AuWoQaW0E32F96pFMEG4Ipg//8QAHBABAAIBBQAAAAAAAAAAAAAAAQARMSBBYYGx/9oACAEBAAE/IQ0XW7cy+jGWA4EK7mKm41hpMD3/2gAMAwEAAgADAAAAEEQAfP/EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAwEBPxDKr//EABcRAQEBAQAAAAAAAAAAAAAAAAERABD/2gAIAQIBAT8QWPK6u//EAB8QAAICAQQDAAAAAAAAAAAAAAERACExEFGB8UGRof/aAAgBAQABPxAEMfIB+jCMI5UolARuFQFmjJbivqhFCFRo7vB20Cs/CdQnSp//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot; TrainingBeta Graphic&quot;
        title=&quot;&quot;
        src=&quot;/static/8cf2294a113a14d914d183c5c4fc3557/27ec1/trainingbeta.jpg&quot;
        srcset=&quot;/static/8cf2294a113a14d914d183c5c4fc3557/3c01f/trainingbeta.jpg 293w,
/static/8cf2294a113a14d914d183c5c4fc3557/27ec1/trainingbeta.jpg 400w&quot;
        sizes=&quot;(max-width: 400px) 100vw, 400px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Hosted by professional climber and coach Neely Quinn, TrainingBeta is a podcast that covers a wide range of topics related to climbing training, including strength training, nutrition, injury prevention, and more. The show features interviews with top climbers and coaches, as well as Q&amp;#x26;A episodes where Neely answers listener questions.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/show/7tx1NJfgmoHsUhY2tTIjd9?si=97340a405d0d490a&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;The Power Company Podcast&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;../../img/climbing/podcasts-2023/&quot; alt=&quot; The Power Company Podcast Graphic&quot;&gt;
Hosted by Kris Hampton, The Power Company Podcast is a great resource for climbers who want to improve their climbing technique and mental game. The show features interviews with top climbers and coaches, as well as in-depth discussions about various climbing-related topics. Whether you’re a beginner or a seasoned pro, The Power Company Podcast is a great way to up your climbing game.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/show/2d2YF0U7dg7b1RinB5AliD?si=880e93fd61d046e1&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Circle Up! Podcast&lt;/h2&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 400px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 100%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAQEAAwAAAAAAAAAAAAAAAAMBAgQG/8QAFwEAAwEAAAAAAAAAAAAAAAAAAgMEAf/aAAwDAQACEAMQAAAB7288jbNVWrz9AxgCz//EABsQAAMBAAMBAAAAAAAAAAAAAAABAhEDFCEx/9oACAEBAAEFAj68NTEbJN1B2ORm+//EABkRAAIDAQAAAAAAAAAAAAAAAAABAhAREv/aAAgBAwEBPwFRWHJtf//EABoRAAICAwAAAAAAAAAAAAAAAAACASEQERL/2gAIAQIBAT8Bd26FerJWN4//xAAaEAABBQEAAAAAAAAAAAAAAAAAARARITEi/9oACAEBAAY/Anos1DlYNb//xAAcEAEAAwACAwAAAAAAAAAAAAABABEhEEFhcYH/2gAIAQEAAT8hDtmYGcKGhrPsb2m23HmbCQgqh6IpT2z/2gAMAwEAAgADAAAAEEsPPf/EABkRAQADAQEAAAAAAAAAAAAAAAEAESEQMf/aAAgBAwEBPxAmiKvIKvef/8QAFxEBAQEBAAAAAAAAAAAAAAAAAQARMf/aAAgBAgEBPxBSRyBD1JClhf/EAB0QAQEAAwACAwAAAAAAAAAAAAERACExQXGRscH/2gAIAQEAAT8QMAbfF8ZqD6dPvFCjNZV3xCPMBWMNBcVRQRI1itYqs43HTA9iX4xwgpVfU/M//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot; Circle Up! Podcast Graphic&quot;
        title=&quot;&quot;
        src=&quot;/static/b0838f566b4f16f3dea48c6af12458dc/27ec1/circle-up.jpg&quot;
        srcset=&quot;/static/b0838f566b4f16f3dea48c6af12458dc/3c01f/circle-up.jpg 293w,
/static/b0838f566b4f16f3dea48c6af12458dc/27ec1/circle-up.jpg 400w&quot;
        sizes=&quot;(max-width: 400px) 100vw, 400px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
As the newest addition to the climbing podcast scene, Circle Up! Podcast focuses more on competitive climbing. Hosted by professional climbers Allison Vest and Kyra Condie, this podcast delves into climbing, motivation, body image, and mindset. Each episode covers a variety of climbing-related topics, from mental strategies and training routines to Olympic experiences and behind-the scenes stories from the world of competitive climbing. Circle Up! is perfect for those interested in the competitive side of the sport, as well as anyone looking for insights from top-level athletes. Allison and Kyra’s conversations are engaging, informative, and inspiring, making this podcast a must-listen for climbers and non-climbers alike.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/show/0TFdG9rPd7pPs9fZwHpnTx?si=1ce81ce9506e4a8b&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Listen on Spotify&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Give these seven climbing-related podcasts a try, and you might just find your next favorite show. Happy listening!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The Power of Throwaway Drawings: How to Improve Your Urban Sketching Skills]]></title><description><![CDATA[Urban sketching is a wonderful way to capture the beauty and character of the city around you. One of the best ways to improve your skills…]]></description><link>https://blog.stephentvedt.com/posts/2023/throw-away-playful-sketching/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2023/throw-away-playful-sketching/</guid><pubDate>Sat, 28 Jan 2023 08:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Urban sketching is a wonderful way to capture the beauty and character of the city around you. One of the best ways to improve your skills is to practice without being tied to a precious finished result all the time. In this article, we’ll explore the benefits of this approach and explain why it’s important to focus on the process and not just the final outcome. We will also discuss a few techniques that can help you make the most of this approach.&lt;/p&gt;
&lt;p&gt;One of the main benefits of this approach is that it allows you to experiment and try new things without worrying about the outcome. When you’re working on a finished piece, it can be easy to get caught up in the pressure of creating something perfect. This can be incredibly limiting and can make it difficult to take risks and try new things. With this approach, you can let go of this pressure and simply focus on experimenting and having fun.&lt;/p&gt;
&lt;p&gt;Here are a few techniques that can help you make the most of this approach:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Creating drawings on cheap printer paper or standalone watercolor paper: By using inexpensive paper, you can experiment without worrying about wasting expensive materials. This can be especially helpful when you&apos;re trying out new techniques or experimenting with different mediums.

Covering up bad sketches in your sketchbook with inspiration photos or taping/gluing in other successful drawings you want to hold on to: This allows you to keep track of your progress and refer back to it later. It also helps to keep your sketchbook organized and easy to navigate.

Having a dedicated sketchbook for playful drawings and experimentation: Having a separate sketchbook for experimentation and play can help you to keep your finished pieces separate and allow you to focus on the process without worrying about the final outcome.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Another benefit is that it can help you to develop your skills more quickly. When you’re working on a finished piece, you may be hesitant to make mistakes or try new techniques. This can slow down your progress and make it difficult to improve your skills. By focusing on the process, you can be more relaxed and take more risks, which can lead to more rapid improvement.&lt;/p&gt;
&lt;p&gt;It also helps to build up your confidence as an artist. When you’re working on a finished piece, it can be easy to get discouraged if things don’t turn out the way you wanted them to. By focusing on the process, you can learn to be more comfortable with creating art and less focused on the final outcome. This can help to boost your confidence and make you feel more comfortable taking on bigger and more ambitious projects.&lt;/p&gt;
&lt;p&gt;To wrap up, embracing the practice of throwaway drawings can greatly enhance your artistic experience. By letting go of the need for a perfect final outcome, you open yourself up to experimentation, rapid skill development, increased confidence and capturing the true essence of your subject. Incorporating techniques such as using cheap printer paper, covering up bad sketches, and having a dedicated sketchbook for playful drawings and experimentation can further support this approach. This approach is not limited to urban sketching but can be applied to any type of art, whether it be landscape, portrait or still-life. So the next time you pick up your pencil or brush, remember to let go and focus on the journey.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Bouldering Progression Series - 1 Month]]></title><description><![CDATA[Having started climbing 5 months ago I am totally hooked! It has been a challenging, interesting and rewards experience so far. I think the…]]></description><link>https://blog.stephentvedt.com/posts/2021/bouldering-progress-1-month/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2021/bouldering-progress-1-month/</guid><pubDate>Wed, 22 Dec 2021 17:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Having started climbing 5 months ago I am totally hooked! It has been a challenging, interesting and rewards experience so far. I think the level of stoke is high since progress is easily seen and felt in major ways. With that I wanted share how that progress was going so that others may be inspired and for a future self to look back at.&lt;/p&gt;
&lt;p&gt;In the earliest two months I put a heavy focus on just getting in mileage. Mileage being the climbing terms for lots of reps of completing a high volume of boulder problems and routes. Goal being just getting used to the motions and generally sticking to problems that aren’t very challenging. My starting base level of upper body fitness was also completely non-existent. I believe this was amplified by COVID and a far less active couple of years. Once I pushed through the total newb phase and found quieter hours at the gym I felt more comfortable recording myself getting up the wall.&lt;/p&gt;
&lt;h2&gt;1 Month Analysis&lt;/h2&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/zqXVCKYAlMY&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
&lt;h3&gt;Observations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I have a lack of trust in my feet and foot slips from not maintaining weight in the foot hold when a hand makes it to a next hold.&lt;/li&gt;
&lt;li&gt;Often switching hands and figuring out beta in the middle of a probleming.&lt;/li&gt;
&lt;li&gt;Minimal if any use of flagging.&lt;/li&gt;
&lt;li&gt;I noticed I make lots of micro-adjustments and almost fidget on each hold.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The biggest takeaway from the above was definitely getting ahead of and eliminating all the micro-adjustments from my climbs. My next bouldering session I made a conscious effort the be solid on each grab. If any adjustment are needed attempting to make one adjustment and move on.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I highly recommend recording video for climbers of all levels. Recording are chatting with folks at the gym/crag can provide one a new perspective on technique, style and beta.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Bouldering Progression Series - 1 Month]]></title><description><![CDATA[Having started climbing 5 months ago I am totally hooked! It has been a challenging, interesting and rewards experience so far. I think the…]]></description><link>https://blog.stephentvedt.com/posts/2022/bouldering-progress-1-month/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2022/bouldering-progress-1-month/</guid><pubDate>Wed, 22 Dec 2021 17:20:00 GMT</pubDate><content:encoded>&lt;p&gt;Having started climbing 5 months ago I am totally hooked! It has been a challenging, interesting and rewards experience so far. I think the level of stoke is high since progress is easily seen and felt in major ways. With that I wanted share how that progress was going so that others may be inspired and for a future self to look back at.&lt;/p&gt;
&lt;p&gt;In the earliest two months I put a heavy focus on just getting in mileage. Mileage being the climbing terms for lots of reps of completing a high volume of boulder problems and routes. Goal being just getting used to the motions and generally sticking to problems that aren’t very challenging. My starting base level of upper body fitness was also completely non-existent. I believe this was amplified by COVID and a far less active couple of years. Once I pushed through the total newb phase and found quieter hours at the gym I felt more comfortable recording myself getting up the wall.&lt;/p&gt;
&lt;h2&gt;1 Month Analysis&lt;/h2&gt;
&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/zqXVCKYAlMY&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;
&lt;h3&gt;Observations&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I have a lack of trust in my feet and foot slips from not maintaining weight in the foot hold when a hand makes it to a next hold.&lt;/li&gt;
&lt;li&gt;Often switching hands and figuring out beta in the middle of a probleming.&lt;/li&gt;
&lt;li&gt;Minimal if any use of flagging.&lt;/li&gt;
&lt;li&gt;I noticed I make lots of micro-adjustments and almost fidget on each hold.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The biggest takeaway from the above was definitely getting ahead of and eliminating all the micro-adjustments from my climbs. My next bouldering session I made a conscious effort the be solid on each grab. If any adjustment are needed attempting to make one adjustment and move on.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I highly recommend recording video for climbers of all levels. Recording are chatting with folks at the gym/crag can provide one a new perspective on technique, style and beta.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Bouldering Progress]]></title><link>https://blog.stephentvedt.com/posts/2021/bouldering-progress/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2021/bouldering-progress/</guid><pubDate>Fri, 01 Oct 2021 15:00:00 GMT</pubDate><content:encoded>&lt;div class=&quot;gatsby-resp-iframe-wrapper&quot; style=&quot;padding-bottom: 56.25%; position: relative; height: 0; overflow: hidden; margin-bottom: 1rem&quot; &gt; &lt;iframe src=&quot;https://www.youtube.com/embed/uTVONjAI0D0&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot; style=&quot; position: absolute; top: 0; left: 0; width: 100%; height: 100%; &quot;&gt;&lt;/iframe&gt; &lt;/div&gt;</content:encoded></item><item><title><![CDATA[Sketches Fall 2020]]></title><link>https://blog.stephentvedt.com/posts/2020/sketches-fall-2020/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2020/sketches-fall-2020/</guid><pubDate>Thu, 08 Oct 2020 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 74.06143344709898%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAdaKtzIBf//EABgQAAMBAQAAAAAAAAAAAAAAAAACEQEQ/9oACAEBAAEFAhbiiW8//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAGBAAAgMAAAAAAAAAAAAAAAAAARAAEVH/2gAIAQEABj8CM1G3/8QAGhAAAgIDAAAAAAAAAAAAAAAAAREAIRBBUf/aAAgBAQABPyENWubCBY5CNh5//9oADAMBAAIAAwAAABDnz//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxABdn//xAAaEAEAAwEBAQAAAAAAAAAAAAABABEhUTFB/9oACAEBAAE/EChyrB5LNU1w5EgpZ+Q1rDkfYNz/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1694&quot;
        title=&quot;&quot;
        src=&quot;/static/55ad3440b04d5fb4a8692efb5173f1e5/58f70/IMG_1694.jpg&quot;
        srcset=&quot;/static/55ad3440b04d5fb4a8692efb5173f1e5/3c01f/IMG_1694.jpg 293w,
/static/55ad3440b04d5fb4a8692efb5173f1e5/e1991/IMG_1694.jpg 585w,
/static/55ad3440b04d5fb4a8692efb5173f1e5/58f70/IMG_1694.jpg 1170w,
/static/55ad3440b04d5fb4a8692efb5173f1e5/5a523/IMG_1694.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 145.39249146757678%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAdABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB7p3iCUudOigVH//EAB0QAAIBBAMAAAAAAAAAAAAAAAABEQIQEiEDIzH/2gAIAQEAAQUClicmJiiEbKquvh8zVnq3/8QAFhEBAQEAAAAAAAAAAAAAAAAAEQAQ/9oACAEDAQE/ASN//8QAFhEBAQEAAAAAAAAAAAAAAAAAEQAQ/9oACAECAQE/AWd//8QAGhAAAgIDAAAAAAAAAAAAAAAAAAEgMREhUf/aAAgBAQAGPwIuL6PWC4f/xAAdEAADAQACAwEAAAAAAAAAAAAAAREhUWEQMUGh/9oACAEBAAE/IYKxQrSxRJ2faFnkz8McMt0vQ92a8puAmf/aAAwDAQACAAMAAAAQowGx/8QAFxEBAAMAAAAAAAAAAAAAAAAAAQAQEf/aAAgBAwEBPxAExf8A/8QAFhEBAQEAAAAAAAAAAAAAAAAAEQAQ/9oACAECAQE/EFLf/8QAHBABAAIDAQEBAAAAAAAAAAAAAQARITFBUYFx/9oACAEBAAE/EBpWFpBpqKQNF0wRSp9WNpQp15HrL5tQcf0ZiDhkN/IiqiKE3jcHvw1qXYXAGBr8lYgBnk//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1681&quot;
        title=&quot;&quot;
        src=&quot;/static/df81250ac3d4e13f08f6e838628759c2/58f70/IMG_1681.jpg&quot;
        srcset=&quot;/static/df81250ac3d4e13f08f6e838628759c2/3c01f/IMG_1681.jpg 293w,
/static/df81250ac3d4e13f08f6e838628759c2/e1991/IMG_1681.jpg 585w,
/static/df81250ac3d4e13f08f6e838628759c2/58f70/IMG_1681.jpg 1170w,
/static/df81250ac3d4e13f08f6e838628759c2/5a523/IMG_1681.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 78.49829351535837%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAEDBP/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB2a50zWMP/8QAGBAAAwEBAAAAAAAAAAAAAAAAAQIQEhP/2gAIAQEAAQUCV9XmAJ//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAWEAEBAQAAAAAAAAAAAAAAAAAQESH/2gAIAQEABj8C1j//xAAaEAEAAgMBAAAAAAAAAAAAAAABABEQITFB/9oACAEBAAE/IfWZQhtlQF6qABRj/9oADAMBAAIAAwAAABCTP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABsQAQADAQADAAAAAAAAAAAAAAEAESExQVGB/9oACAEBAAE/ECeBHXx8gkGAynsMduVDo7tNfcJAAQ5P/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1682&quot;
        title=&quot;&quot;
        src=&quot;/static/3a04d58bad3c00802eda2181340c8366/58f70/IMG_1682.jpg&quot;
        srcset=&quot;/static/3a04d58bad3c00802eda2181340c8366/3c01f/IMG_1682.jpg 293w,
/static/3a04d58bad3c00802eda2181340c8366/e1991/IMG_1682.jpg 585w,
/static/3a04d58bad3c00802eda2181340c8366/58f70/IMG_1682.jpg 1170w,
/static/3a04d58bad3c00802eda2181340c8366/5a523/IMG_1682.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 148.12286689419795%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAeABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAgABAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAfWszN6WQEGhhH//xAAaEAABBQEAAAAAAAAAAAAAAAAAAQIQMUER/9oACAEBAAEFAtjhpaijYff/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAWEAADAAAAAAAAAAAAAAAAAAABEDD/2gAIAQEABj8CZj//xAAbEAEAAgMBAQAAAAAAAAAAAAABABEQITFxUf/aAAgBAQABPyHd/kdALjvfrcEXVy4bG3zC3OHHDyf/2gAMAwEAAgADAAAAEJDPT//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EABwQAQADAAMBAQAAAAAAAAAAAAEAESExQVEQ8P/aAAgBAQABPxC+iU5u6ZVTW/NZXkAPTLBxGbg7eIgjQQDPDnxgb1K4FbO4gD81n//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1683&quot;
        title=&quot;&quot;
        src=&quot;/static/05d9f28138f3a2df8725b1066e83137f/58f70/IMG_1683.jpg&quot;
        srcset=&quot;/static/05d9f28138f3a2df8725b1066e83137f/3c01f/IMG_1683.jpg 293w,
/static/05d9f28138f3a2df8725b1066e83137f/e1991/IMG_1683.jpg 585w,
/static/05d9f28138f3a2df8725b1066e83137f/58f70/IMG_1683.jpg 1170w,
/static/05d9f28138f3a2df8725b1066e83137f/5a523/IMG_1683.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 144.36860068259386%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAdABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAQACAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAfVzszWY5Smoj//EABsQAAEEAwAAAAAAAAAAAAAAAAEAECExESBB/9oACAEBAAEFAu2dDKNLEkt//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAGhAAAgIDAAAAAAAAAAAAAAAAABAhMQERIP/aAAgBAQAGPwKy+YyStv8A/8QAHRABAAICAgMAAAAAAAAAAAAAAQARECExQVFxwf/aAAgBAQABPyFv41BsOkqVvcebcXSB6iKjpfGDuShNQbJ//9oADAMBAAIAAwAAABD77LL/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAbEAACAwEBAQAAAAAAAAAAAAABEQAhMUFh0f/aAAgBAQABPxAAYEBlXYULbayMrswCxDrgKgBldjlr9PTfyMKCVtPkcX2nQphhJpxIVP/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1685&quot;
        title=&quot;&quot;
        src=&quot;/static/8c80eece1b7719364881eb558f49fa3b/58f70/IMG_1685.jpg&quot;
        srcset=&quot;/static/8c80eece1b7719364881eb558f49fa3b/3c01f/IMG_1685.jpg 293w,
/static/8c80eece1b7719364881eb558f49fa3b/e1991/IMG_1685.jpg 585w,
/static/8c80eece1b7719364881eb558f49fa3b/58f70/IMG_1685.jpg 1170w,
/static/8c80eece1b7719364881eb558f49fa3b/5a523/IMG_1685.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 72.0136518771331%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABYBAQEBAAAAAAAAAAAAAAAAAAEAAv/aAAwDAQACEAMQAAAB6eUy0I//xAAZEAACAwEAAAAAAAAAAAAAAAABAgAQESH/2gAIAQEAAQUCc4qdWEbAMr//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAWEAEBAQAAAAAAAAAAAAAAAAAhACD/2gAIAQEABj8CJz//xAAZEAACAwEAAAAAAAAAAAAAAAARQQABECH/2gAIAQEAAT8husaF0HHDOALP/9oADAMBAAIAAwAAABCLP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABsQAQEBAAIDAAAAAAAAAAAAAAERABBBITFR/9oACAEBAAE/EEBR+n5nRatFOsAEPGMooehwAJghx//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1686&quot;
        title=&quot;&quot;
        src=&quot;/static/5c42e50b2949ef4248da268c49fd4279/58f70/IMG_1686.jpg&quot;
        srcset=&quot;/static/5c42e50b2949ef4248da268c49fd4279/3c01f/IMG_1686.jpg 293w,
/static/5c42e50b2949ef4248da268c49fd4279/e1991/IMG_1686.jpg 585w,
/static/5c42e50b2949ef4248da268c49fd4279/58f70/IMG_1686.jpg 1170w,
/static/5c42e50b2949ef4248da268c49fd4279/5a523/IMG_1686.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Sketches Winter/Spring 2020]]></title><link>https://blog.stephentvedt.com/posts/2020/sketches-winter-spring-2020/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2020/sketches-winter-spring-2020/</guid><pubDate>Thu, 30 Apr 2020 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 96.9283276450512%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAATABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAfXmc5vdBKKCf//EABsQAQACAgMAAAAAAAAAAAAAAAEAEAIREiEx/9oACAEBAAEFAuibKTkGOmHlf//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABgQAAIDAAAAAAAAAAAAAAAAAAABEBEg/9oACAEBAAY/ApRef//EAB0QAQACAQUBAAAAAAAAAAAAAAEAESEgMUFRYXH/2gAIAQEAAT8hUi6L7g7iph4m+KqCSVfYfdF//9oADAMBAAIAAwAAABD83z3/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAcEAEAAwACAwAAAAAAAAAAAAABABEhEEFRYZH/2gAIAQEAAT8QeH1KGyvNPolaI+SsajELYMEYOJoy0Sm4h44//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1675&quot;
        title=&quot;&quot;
        src=&quot;/static/920dc02268545855863b4e5371e7fd72/58f70/IMG_1675.jpg&quot;
        srcset=&quot;/static/920dc02268545855863b4e5371e7fd72/3c01f/IMG_1675.jpg 293w,
/static/920dc02268545855863b4e5371e7fd72/e1991/IMG_1675.jpg 585w,
/static/920dc02268545855863b4e5371e7fd72/58f70/IMG_1675.jpg 1170w,
/static/920dc02268545855863b4e5371e7fd72/5a523/IMG_1675.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 96.24573378839591%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAATABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAEDBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB6kymbuBAoP/EABsQAAEEAwAAAAAAAAAAAAAAAAABAhExECFB/9oACAEBAAEFAp3JY46JWP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABYQAQEBAAAAAAAAAAAAAAAAACABMf/aAAgBAQAGPwLRD//EABwQAAMAAgMBAAAAAAAAAAAAAAABETGRECFBof/aAAgBAQABPyHwWw3WYVBXbNjuL4SHZScf/9oADAMBAAIAAwAAABDU/wD+/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFREBAQAAAAAAAAAAAAAAAAAAESD/2gAIAQIBAT8QY//EABwQAQADAQADAQAAAAAAAAAAAAEAESExccHR4f/aAAgBAQABPxBCmCU/iMgt8SdjkYCxQKGMuI0vCnPX2B4WJtbkSVRXjJyp/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1676&quot;
        title=&quot;&quot;
        src=&quot;/static/ebac36cb48002ed6730634540e76dfd3/58f70/IMG_1676.jpg&quot;
        srcset=&quot;/static/ebac36cb48002ed6730634540e76dfd3/3c01f/IMG_1676.jpg 293w,
/static/ebac36cb48002ed6730634540e76dfd3/e1991/IMG_1676.jpg 585w,
/static/ebac36cb48002ed6730634540e76dfd3/58f70/IMG_1676.jpg 1170w,
/static/ebac36cb48002ed6730634540e76dfd3/5a523/IMG_1676.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 86.68941979522185%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB60ZzdoECg//EABUQAQEAAAAAAAAAAAAAAAAAAAEw/9oACAEBAAEFAmP/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAw/9oACAEBAAY/Ah//xAAWEAEBAQAAAAAAAAAAAAAAAAABEAD/2gAIAQEAAT8hWGNb/9oADAMBAAIAAwAAABC3+MP/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAaEAEBAQEAAwAAAAAAAAAAAAABABFBECEx/9oACAEBAAE/EMLV9tsRd7B1h8eR8v/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1677&quot;
        title=&quot;&quot;
        src=&quot;/static/e3b46f95f4c79be39e60041ed90fcde2/58f70/IMG_1677.jpg&quot;
        srcset=&quot;/static/e3b46f95f4c79be39e60041ed90fcde2/3c01f/IMG_1677.jpg 293w,
/static/e3b46f95f4c79be39e60041ed90fcde2/e1991/IMG_1677.jpg 585w,
/static/e3b46f95f4c79be39e60041ed90fcde2/58f70/IMG_1677.jpg 1170w,
/static/e3b46f95f4c79be39e60041ed90fcde2/5a523/IMG_1677.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 91.8088737201365%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAASABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB7CWbQqcDAf/EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEAAQUCH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8CH//EABgQAAMBAQAAAAAAAAAAAAAAAAABEBEx/9oACAEBAAE/IWzY64+n/9oADAMBAAIAAwAAABAvEEH/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAaEAADAQADAAAAAAAAAAAAAAAAAREQITFh/9oACAEBAAE/EIPFHvgrRHbGa4M//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1678&quot;
        title=&quot;&quot;
        src=&quot;/static/a1300a9db8444bad61f6eaa90c2720d2/58f70/IMG_1678.jpg&quot;
        srcset=&quot;/static/a1300a9db8444bad61f6eaa90c2720d2/3c01f/IMG_1678.jpg 293w,
/static/a1300a9db8444bad61f6eaa90c2720d2/e1991/IMG_1678.jpg 585w,
/static/a1300a9db8444bad61f6eaa90c2720d2/58f70/IMG_1678.jpg 1170w,
/static/a1300a9db8444bad61f6eaa90c2720d2/5a523/IMG_1678.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 86.00682593856655%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB6jLN0ggKD//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEAAQUCH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8CH//EABYQAAMAAAAAAAAAAAAAAAAAABARIP/aAAgBAQABPyEuv//aAAwDAQACAAMAAAAQ2PCC/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAGhAAAgIDAAAAAAAAAAAAAAAAAAEQESExUf/aAAgBAQABPxC8lw3vWBN8LOQtH//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1679&quot;
        title=&quot;&quot;
        src=&quot;/static/31922baeb18400fad744fdbf962ca647/58f70/IMG_1679.jpg&quot;
        srcset=&quot;/static/31922baeb18400fad744fdbf962ca647/3c01f/IMG_1679.jpg 293w,
/static/31922baeb18400fad744fdbf962ca647/e1991/IMG_1679.jpg 585w,
/static/31922baeb18400fad744fdbf962ca647/58f70/IMG_1679.jpg 1170w,
/static/31922baeb18400fad744fdbf962ca647/5a523/IMG_1679.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 102.04778156996588%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAf/aAAwDAQACEAMQAAAB6rKZdVEWsLIP/8QAGRAAAgMBAAAAAAAAAAAAAAAAAAECEBIR/9oACAEBAAEFAtI1WGRTRwV//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFxAAAwEAAAAAAAAAAAAAAAAAAAEgMf/aAAgBAQAGPwKGZH//xAAcEAACAgIDAAAAAAAAAAAAAAAAAREhEEExUWH/2gAIAQEAAT8h9BIyU9jZ0i0Q5WhUFuXiIP/aAAwDAQACAAMAAAAQ0zCC/8QAGBEAAgMAAAAAAAAAAAAAAAAAAAEQESH/2gAIAQMBAT8Qpmz/AP/EABYRAQEBAAAAAAAAAAAAAAAAACEAEP/aAAgBAgEBPxAjf//EABwQAQEBAQACAwAAAAAAAAAAAAERACExcVGRsf/aAAgBAQABPxBM4Lqc7PjuDUDnFPBwu8vkjJwq/f5rCozS8qesQlX3v//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1680&quot;
        title=&quot;&quot;
        src=&quot;/static/41725dd591584c2ae83ee47d57cecf02/58f70/IMG_1680.jpg&quot;
        srcset=&quot;/static/41725dd591584c2ae83ee47d57cecf02/3c01f/IMG_1680.jpg 293w,
/static/41725dd591584c2ae83ee47d57cecf02/e1991/IMG_1680.jpg 585w,
/static/41725dd591584c2ae83ee47d57cecf02/58f70/IMG_1680.jpg 1170w,
/static/41725dd591584c2ae83ee47d57cecf02/5a523/IMG_1680.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Cue Point System]]></title><description><![CDATA[Since I am mixing on a Pioneer DDJ-400 since it closely mirrors a club system layout I am mixing with Pioneer’s software rekordbox. To make…]]></description><link>https://blog.stephentvedt.com/posts/2020/cue-point-system/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2020/cue-point-system/</guid><pubDate>Mon, 06 Apr 2020 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Since I am mixing on a &lt;a href=&quot;https://amzn.to/2w63hbl&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Pioneer DDJ-400&lt;/a&gt; since it closely mirrors a club system layout I am mixing with Pioneer’s software rekordbox. To make mixing as smooth as possible at to mix in phrase I’m doing track prep when importing music to rekordbox. I am setting the following cue points on all my tracks using the export mode:&lt;/p&gt;
&lt;h2&gt;Hot Cues&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Green (dark) - Mix In 8 bars&lt;/li&gt;
&lt;li&gt;Green (bright) - Mix in 16/32 bars&lt;/li&gt;
&lt;li&gt;Blue - Chorus Beginning&lt;/li&gt;
&lt;li&gt;Orange - Clean Loop&lt;/li&gt;
&lt;li&gt;Red - Mix out 16/32 bars&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Memory Cues&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Start of chorus&lt;/li&gt;
&lt;li&gt;End of track (sometime shortened a bar)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have added the memory cues because I changed the setting in recordbox to change the counters to display a countdown in bars to the next memory cue.
For longer 32 bar mixes where I may have a loop running I can just release the loop when both countdowns are equivalent so I know my intro our outro will line up in phrase.&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;120&quot; src=&quot;https://www.mixcloud.com/widget/iframe/?hide_cover=1&amp;feed=%2Fstvedt%2Fmarch-progressive-house%2F&quot; frameborder=&quot;0&quot; &gt;&lt;/iframe&gt;</content:encoded></item><item><title><![CDATA[Progressive House Mix - March 2020]]></title><description><![CDATA[Second mix is much cleaner than the last. I spent a decent amount of time prepping the tracklist and order of tracks. I did a first attempt…]]></description><link>https://blog.stephentvedt.com/posts/2020/march-mix-2/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2020/march-mix-2/</guid><pubDate>Sat, 28 Mar 2020 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Second mix is much cleaner than the last. I spent a decent amount of time prepping the tracklist and order of tracks. I did a first attempt mixing with a cue pointing system. This trial run of the pre saved cue points made mixing tracks over 16 bars much easier. The 16 bar phrase transitions feel on the quick side for me. So I may explore 32 bar mixes between tracks in a future mix which means more looping &amp;#x26; counting to match phrases. Also, some mixes were too busy which was caused by failing to isolate out overlapping EQ bands. Progress none the less with these progressive house tracks!&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;120&quot; src=&quot;https://www.mixcloud.com/widget/iframe/?hide_cover=1&amp;feed=%2Fstvedt%2Fmarch-progressive-house%2F&quot; frameborder=&quot;0&quot; &gt;&lt;/iframe&gt;
&lt;p&gt;Mixed with a &lt;a href=&quot;https://amzn.to/2w63hbl&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Pioneer DDJ-400&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[First Mix in a Decade]]></title><description><![CDATA[Over time our taste in music varies. I seem to have come back to EDM and progressive house as a favorite. Back in college I used to mix…]]></description><link>https://blog.stephentvedt.com/posts/2020/march-mix/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2020/march-mix/</guid><pubDate>Sun, 08 Mar 2020 09:45:00 GMT</pubDate><content:encoded>&lt;p&gt;Over time our taste in music varies. I seem to have come back to EDM and progressive house as a favorite. Back in college I used to mix tracks using a VCI-100SE a controller customized by the SF based company &lt;a href=&quot;https://djtechtools.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;DJTechtools&lt;/a&gt;. This was still a relatively new approach to mixing. A controller is a USB device that controls a DJ software running on a laptop. 10 years later controllers have become much more popular and affordable. So, recently I picked up a &lt;a href=&quot;https://amzn.to/2w63hbl&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Pioneer DDJ-400&lt;/a&gt; an entry level but very functional controller which mimics a club DJ layout. With that here is my first real attempt at mixing in this decade:&lt;/p&gt;
&lt;iframe width=&quot;100%&quot; height=&quot;120&quot; src=&quot;https://www.mixcloud.com/widget/iframe/?hide_cover=1&amp;feed=%2Fstvedt%2Ffriday-night-lounge%2F&quot; frameborder=&quot;0&quot; &gt;&lt;/iframe&gt;</content:encoded></item><item><title><![CDATA[Markdown Extensions for VS Code]]></title><description><![CDATA[I’m all for making documentation easy and better quality. To reduce some of the hassle from Markdown. I have found the combination of…]]></description><link>https://blog.stephentvedt.com/posts/2020/vs-code-markdown-plugins/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2020/vs-code-markdown-plugins/</guid><pubDate>Sun, 01 Mar 2020 10:15:00 GMT</pubDate><content:encoded>&lt;p&gt;I’m all for making documentation easy and better quality. To reduce some of the hassle from Markdown. I have found the combination of extensions below to make the experience much better.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Markdown All in One - Visual Studio Marketplace&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Adds a bunch of hand shortcuts. My favorites being:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Paste a link on text, which will auto-format for a URL&lt;/li&gt;
&lt;li&gt;List editing: renumbering ordered lists, marking checkboxes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;markdownlint - Visual Studio Marketplace&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Linting suggestions are similar to what one would expect from traditional code linting.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Code Spell Checker - Visual Studio Marketplace&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;Catches all those pesky spelling errors.&lt;/p&gt;
&lt;h3&gt;Previewing Your Work&lt;/h3&gt;
&lt;p&gt;VS Code also has the ability to display the HTML version of your markdown in a preview tab. In the upper right you can click on the preview icon (two columns and a magnifying glass) or use the keyboard commands:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;`⌘K` , `V`&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Sketches January 2020]]></title><link>https://blog.stephentvedt.com/posts/2020/sketches-january-2020/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2020/sketches-january-2020/</guid><pubDate>Thu, 30 Jan 2020 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 77.13310580204778%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAPABQDASIAAhEBAxEB/8QAGQAAAQUAAAAAAAAAAAAAAAAAAAECAwQF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQD/2gAMAwEAAhADEAAAAdIRg2yML//EABoQAQEAAgMAAAAAAAAAAAAAAAIBABAREiH/2gAIAQEAAQUCdsQXOmUr1QyXz//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABsQAAIBBQAAAAAAAAAAAAAAAAABEBExMmGR/9oACAEBAAY/AtDi6oZLkf/EABsQAAICAwEAAAAAAAAAAAAAAAERACEQMVFh/9oACAEBAAE/IRVFJDmxfKwUbnkAAUFJm5//2gAMAwEAAgADAAAAEOAP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFREBAQAAAAAAAAAAAAAAAAAAECH/2gAIAQIBAT8Qh//EABsQAQEBAQADAQAAAAAAAAAAAAERACFBgZHB/9oACAEBAAE/EB9gt5xboNjyI9TTQEQgLoYw+o/ur0I6hB3/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1669&quot;
        title=&quot;&quot;
        src=&quot;/static/ce3962a8479e6cce7691fa2f197cdd57/58f70/IMG_1669.jpg&quot;
        srcset=&quot;/static/ce3962a8479e6cce7691fa2f197cdd57/3c01f/IMG_1669.jpg 293w,
/static/ce3962a8479e6cce7691fa2f197cdd57/e1991/IMG_1669.jpg 585w,
/static/ce3962a8479e6cce7691fa2f197cdd57/58f70/IMG_1669.jpg 1170w,
/static/ce3962a8479e6cce7691fa2f197cdd57/5a523/IMG_1669.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 87.37201365187714%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMCBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAfXnqeb0oCsw0I//xAAaEAEBAQADAQAAAAAAAAAAAAACAQAQERIx/9oACAEBAAEFAkutHwjFCPNqsuWnz//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABoQAAICAwAAAAAAAAAAAAAAAAAxECAhQYH/2gAIAQEABj8CNcjIxU//xAAaEAEAAgMBAAAAAAAAAAAAAAABABEQMXFB/9oACAEBAAE/IQNsSi1L5hXopEt2UQScxsTTP//aAAwDAQACAAMAAAAQE8c+/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFhEAAwAAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/ECP/xAAcEAEBAAICAwAAAAAAAAAAAAABEQAxECFRYaH/2gAIAQEAAT8QRoENrmmz9Sy++JrUtI6cfqASeGNjjSVjvg/Ln//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1670&quot;
        title=&quot;&quot;
        src=&quot;/static/12b49e38103ff62170b7290daf4f9ce0/58f70/IMG_1670.jpg&quot;
        srcset=&quot;/static/12b49e38103ff62170b7290daf4f9ce0/3c01f/IMG_1670.jpg 293w,
/static/12b49e38103ff62170b7290daf4f9ce0/e1991/IMG_1670.jpg 585w,
/static/12b49e38103ff62170b7290daf4f9ce0/58f70/IMG_1670.jpg 1170w,
/static/12b49e38103ff62170b7290daf4f9ce0/5a523/IMG_1670.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 85.32423208191126%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMCBP/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAevPVPnq6azYJCv/xAAaEAEBAAIDAAAAAAAAAAAAAAABAgARAxAh/9oACAEBAAEFAqUTk9xk3Ujmzus//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAGxAAAQQDAAAAAAAAAAAAAAAAAAEQESEgMUH/2gAIAQEABj8CWzbT0vH/xAAcEAACAwADAQAAAAAAAAAAAAAAAREhMRBRYXH/2gAIAQEAAT8hxLfZSq2tQnKG6F6IhNnhFFvna+H/2gAMAwEAAgADAAAAEOv4gP/EABURAQEAAAAAAAAAAAAAAAAAACAh/9oACAEDAQE/EIP/xAAVEQEBAAAAAAAAAAAAAAAAAAAgIf/aAAgBAgEBPxCj/8QAHRABAAICAgMAAAAAAAAAAAAAAQARMUEhYXHh8P/aAAgBAQABPxCxlRUOERYvlKSgayXEPOZpmB5hZfpEg0aIa8TU+Ttn/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1671&quot;
        title=&quot;&quot;
        src=&quot;/static/8e89894dc782f62bbe9921219a9e7291/58f70/IMG_1671.jpg&quot;
        srcset=&quot;/static/8e89894dc782f62bbe9921219a9e7291/3c01f/IMG_1671.jpg 293w,
/static/8e89894dc782f62bbe9921219a9e7291/e1991/IMG_1671.jpg 585w,
/static/8e89894dc782f62bbe9921219a9e7291/58f70/IMG_1671.jpg 1170w,
/static/8e89894dc782f62bbe9921219a9e7291/5a523/IMG_1671.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 57.67918088737202%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAMBAgT/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAdrmxm2AP//EABgQAAIDAAAAAAAAAAAAAAAAAAISAQMg/9oACAEBAAEFAislwNs//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFxAAAwEAAAAAAAAAAAAAAAAAAAFhIP/aAAgBAQAGPwKDmf/EABkQAQADAQEAAAAAAAAAAAAAAAEAETEQIf/aAAgBAQABPyG7DMu+DpLdYT//2gAMAwEAAgADAAAAEOMP/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAHRABAAIBBQEAAAAAAAAAAAAAAQARIRAxQYGRYf/aAAgBAQABPxAaJuBW+Oe4gUBVYufTRC7o8jA1fBgo57Z//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1672&quot;
        title=&quot;&quot;
        src=&quot;/static/ed97fff665732f137ce58cc61284fbfc/58f70/IMG_1672.jpg&quot;
        srcset=&quot;/static/ed97fff665732f137ce58cc61284fbfc/3c01f/IMG_1672.jpg 293w,
/static/ed97fff665732f137ce58cc61284fbfc/e1991/IMG_1672.jpg 585w,
/static/ed97fff665732f137ce58cc61284fbfc/58f70/IMG_1672.jpg 1170w,
/static/ed97fff665732f137ce58cc61284fbfc/5a523/IMG_1672.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 60.06825938566552%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAwABBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB7Boealkf/8QAGhABAAIDAQAAAAAAAAAAAAAAAQARAhASMf/aAAgBAQABBQK52aS44gHn/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFhAAAwAAAAAAAAAAAAAAAAAAECAx/9oACAEBAAY/Akg//8QAGBAAAwEBAAAAAAAAAAAAAAAAAAERMSH/2gAIAQEAAT8hcDQ4yidGFHeD/9oADAMBAAIAAwAAABBL7//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABkQAQADAQEAAAAAAAAAAAAAAAEAESFBYf/aAAgBAQABPxBltV7k546nIBBKRl3W79lSE2tJUcAYBP/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1673&quot;
        title=&quot;&quot;
        src=&quot;/static/f96733d6c1034391ce3b96c94bae8e1d/58f70/IMG_1673.jpg&quot;
        srcset=&quot;/static/f96733d6c1034391ce3b96c94bae8e1d/3c01f/IMG_1673.jpg 293w,
/static/f96733d6c1034391ce3b96c94bae8e1d/e1991/IMG_1673.jpg 585w,
/static/f96733d6c1034391ce3b96c94bae8e1d/58f70/IMG_1673.jpg 1170w,
/static/f96733d6c1034391ce3b96c94bae8e1d/5a523/IMG_1673.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.21160409556313%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEA//EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAG4oWTQQK//xAAZEAADAAMAAAAAAAAAAAAAAAAAAhEBECH/2gAIAQEAAQUCZzD6nJCn/8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQMBAT8Bh//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/Aaf/xAAYEAACAwAAAAAAAAAAAAAAAAAAASAhIv/aAAgBAQAGPwKjTcf/xAAZEAEAAwEBAAAAAAAAAAAAAAABABEhURD/2gAIAQEAAT8htpajmTiDrByURkoM8//aAAwDAQACAAMAAAAQ3N//xAAVEQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAwEBPxArP//EABURAQEAAAAAAAAAAAAAAAAAABEQ/9oACAECAQE/EEE//8QAHBABAAIDAAMAAAAAAAAAAAAAAQARITFBUaHh/9oACAEBAAE/ELzkNkleswCng9C+MEZCn2ClChNEN9gtUYn/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1674&quot;
        title=&quot;&quot;
        src=&quot;/static/e56543cb5e2d367ce5a140d626917fe5/58f70/IMG_1674.jpg&quot;
        srcset=&quot;/static/e56543cb5e2d367ce5a140d626917fe5/3c01f/IMG_1674.jpg 293w,
/static/e56543cb5e2d367ce5a140d626917fe5/e1991/IMG_1674.jpg 585w,
/static/e56543cb5e2d367ce5a140d626917fe5/58f70/IMG_1674.jpg 1170w,
/static/e56543cb5e2d367ce5a140d626917fe5/5a523/IMG_1674.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Sketches December 2019]]></title><link>https://blog.stephentvedt.com/posts/2019/sketches-december-2019/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/sketches-december-2019/</guid><pubDate>Tue, 31 Dec 2019 12:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 98.29351535836177%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAerNKZuzEb1AD//EABgQAQEBAQEAAAAAAAAAAAAAAAARIQIg/9oACAEBAAEFAqqtTpvj/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFBABAAAAAAAAAAAAAAAAAAAAMP/aAAgBAQAGPwIf/8QAGhABAQACAwAAAAAAAAAAAAAAAQARURAhkf/aAAgBAQABPyHpAsNkkwa8g1J5/9oADAMBAAIAAwAAABCLIEH/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAdEAEAAwABBQAAAAAAAAAAAAABABExQSFRYXHR/9oACAEBAAE/EGzx2iza9y37Q6lkVDdeWElqDjRk6ciWU5Krmf/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1659&quot;
        title=&quot;&quot;
        src=&quot;/static/fb7e0ad5fa02505fd7a4c12915520873/58f70/IMG_1659.jpg&quot;
        srcset=&quot;/static/fb7e0ad5fa02505fd7a4c12915520873/3c01f/IMG_1659.jpg 293w,
/static/fb7e0ad5fa02505fd7a4c12915520873/e1991/IMG_1659.jpg 585w,
/static/fb7e0ad5fa02505fd7a4c12915520873/58f70/IMG_1659.jpg 1170w,
/static/fb7e0ad5fa02505fd7a4c12915520873/5a523/IMG_1659.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 79.18088737201366%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIDBf/EABUBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHqyiXYD//EABkQAAMBAQEAAAAAAAAAAAAAAAABAhIDEf/aAAgBAQABBQLci6SaQ5Yo8aP/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAYEAADAQEAAAAAAAAAAAAAAAAQETEAof/aAAgBAQAGPwKm5vg//8QAHBABAAICAwEAAAAAAAAAAAAAAQAhMUEQEWGR/9oACAEBAAE/IaF0ilLryCYuaXBkDrB8n//aAAwDAQACAAMAAAAQ5+//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAVEQEBAAAAAAAAAAAAAAAAAAAQIf/aAAgBAgEBPxCH/8QAGxABAAMAAwEAAAAAAAAAAAAAAQARITFRcWH/2gAIAQEAAT8QW+AqtgMqgUYEto7CbC2+yIu63jbnyDyHlJ//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1662&quot;
        title=&quot;&quot;
        src=&quot;/static/988ef813931ffc0c1ebed366774d29f6/58f70/IMG_1662.jpg&quot;
        srcset=&quot;/static/988ef813931ffc0c1ebed366774d29f6/3c01f/IMG_1662.jpg 293w,
/static/988ef813931ffc0c1ebed366774d29f6/e1991/IMG_1662.jpg 585w,
/static/988ef813931ffc0c1ebed366774d29f6/58f70/IMG_1662.jpg 1170w,
/static/988ef813931ffc0c1ebed366774d29f6/5a523/IMG_1662.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 152.55972696245735%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAfABQDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAMEAgEF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQIA/9oADAMBAAIQAxAAAAH0ty6loFm0LnzFMODP/8QAGxAAAgMBAQEAAAAAAAAAAAAAAQIAAxESECH/2gAIAQEAAQUCD7N8SxMBEB2Kv01rE5UEGGnqLQqj/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAC/9oACAEDAQE/AY6Wf//EABYRAQEBAAAAAAAAAAAAAAAAAAEQAv/aAAgBAgEBPwGGQn//xAAbEAACAgMBAAAAAAAAAAAAAAAAARAhAhExQf/aAAgBAQAGPwKdMp+xaOGk4vLIps//xAAdEAADAAICAwAAAAAAAAAAAAAAARExQSFxUWGB/9oACAEBAAE/IUZJCRmyk3e0ZSmmqXJNfcH5k6M9mhwL5HdtdQv530jA/wD/2gAMAwEAAgADAAAAEAvvD//EABcRAAMBAAAAAAAAAAAAAAAAAAABERD/2gAIAQMBAT8QxhSs/8QAFxEAAwEAAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxChiP/EAB4QAQEAAwABBQAAAAAAAAAAAAERACExUUFxgaHR/9oACAEBAAE/ENQB4C7cSkB8TOKawQqPGjOlARcF9Mvq6XujMfd96rxi9k1p5jSEcSzGED2XCgfBQ+jHUhbtPzP/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1663&quot;
        title=&quot;&quot;
        src=&quot;/static/f1fe70563b30a7438760b64887a705db/58f70/IMG_1663.jpg&quot;
        srcset=&quot;/static/f1fe70563b30a7438760b64887a705db/3c01f/IMG_1663.jpg 293w,
/static/f1fe70563b30a7438760b64887a705db/e1991/IMG_1663.jpg 585w,
/static/f1fe70563b30a7438760b64887a705db/58f70/IMG_1663.jpg 1170w,
/static/f1fe70563b30a7438760b64887a705db/5a523/IMG_1663.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 82.93515358361775%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB6sxc3YLkKD//xAAaEAEAAgMBAAAAAAAAAAAAAAABAhEAECAi/9oACAEBAAEFApNA6n6wK5//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAXEAADAQAAAAAAAAAAAAAAAAABEBEg/9oACAEBAAY/Aq4Nf//EABoQAQADAAMAAAAAAAAAAAAAAAEAEBEhQVH/2gAIAQEAAT8h0lNAa0OBO9ieKb//2gAMAwEAAgADAAAAEPffQf/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EABoQAQADAQEBAAAAAAAAAAAAAAEAETEQIcH/2gAIAQEAAT8QHMGwMiyzni6NP5CKWgFVcM5N5//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1664&quot;
        title=&quot;&quot;
        src=&quot;/static/0f6b9ea0decc101f4ef46d355c1db7ec/58f70/IMG_1664.jpg&quot;
        srcset=&quot;/static/0f6b9ea0decc101f4ef46d355c1db7ec/3c01f/IMG_1664.jpg 293w,
/static/0f6b9ea0decc101f4ef46d355c1db7ec/e1991/IMG_1664.jpg 585w,
/static/0f6b9ea0decc101f4ef46d355c1db7ec/58f70/IMG_1664.jpg 1170w,
/static/0f6b9ea0decc101f4ef46d355c1db7ec/5a523/IMG_1664.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 123.54948805460751%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAZABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAgABBAX/xAAXAQEBAQEAAAAAAAAAAAAAAAAAAQID/9oADAMBAAIQAxAAAAH1s5Bz13RrEUDYx//EABoQAAICAwAAAAAAAAAAAAAAAAECEBEAAyH/2gAIAQEAAQUCnYWtbQA2M5Jj/8QAFREBAQAAAAAAAAAAAAAAAAAAESD/2gAIAQMBAT8BI//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABkQAAIDAQAAAAAAAAAAAAAAAAERABAhMP/aAAgBAQAGPwKyHke8P//EABwQAAICAgMAAAAAAAAAAAAAAAERABAhQTFRcf/aAAgBAQABPyFx0pEgGR8DMUnuEA6mGhGNVyr/2gAMAwEAAgADAAAAEBfX8f/EABURAQEAAAAAAAAAAAAAAAAAABEg/9oACAEDAQE/EALH/8QAGBEAAgMAAAAAAAAAAAAAAAAAAREgITH/2gAIAQIBAT8QZeVD/8QAHBABAAMAAwEBAAAAAAAAAAAAAQARITFBcRBh/9oACAEBAAE/EEDONmy48AG0YvEaNLtNE87ZkdUuohaH0iYUwAqgfn16n//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1665&quot;
        title=&quot;&quot;
        src=&quot;/static/fc4169aea0d6035a6dcb1a9d359d1a5c/58f70/IMG_1665.jpg&quot;
        srcset=&quot;/static/fc4169aea0d6035a6dcb1a9d359d1a5c/3c01f/IMG_1665.jpg 293w,
/static/fc4169aea0d6035a6dcb1a9d359d1a5c/e1991/IMG_1665.jpg 585w,
/static/fc4169aea0d6035a6dcb1a9d359d1a5c/58f70/IMG_1665.jpg 1170w,
/static/fc4169aea0d6035a6dcb1a9d359d1a5c/5a523/IMG_1665.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 64.50511945392492%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAQCBf/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/aAAwDAQACEAMQAAAB6M9gI0s//8QAGBAAAwEBAAAAAAAAAAAAAAAAAAECEhD/2gAIAQEAAQUCumapNDmWYXP/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAWEAEBAQAAAAAAAAAAAAAAAAAxABD/2gAIAQEABj8CnCM//8QAHBABAAIBBQAAAAAAAAAAAAAAAQARITFRYXGR/9oACAEBAAE/ITOoHUqbuXFiKWicKBW3k//aAAwDAQACAAMAAAAQaP8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8QV//EABoQAQEBAQADAAAAAAAAAAAAAAERADEhgbH/2gAIAQEAAT8QNg3JafuYYSQh5JdUq9M5WcrIacpZhET0jf/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1666&quot;
        title=&quot;&quot;
        src=&quot;/static/fa717827eab1a8da5f03d32c63eef46c/58f70/IMG_1666.jpg&quot;
        srcset=&quot;/static/fa717827eab1a8da5f03d32c63eef46c/3c01f/IMG_1666.jpg 293w,
/static/fa717827eab1a8da5f03d32c63eef46c/e1991/IMG_1666.jpg 585w,
/static/fa717827eab1a8da5f03d32c63eef46c/58f70/IMG_1666.jpg 1170w,
/static/fa717827eab1a8da5f03d32c63eef46c/5a523/IMG_1666.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 144.0273037542662%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAdABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAIBAwUE/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHWrhsVxSs7thS4UP/EABoQAAIDAQEAAAAAAAAAAAAAAAECAAMQITL/2gAIAQEAAQUC1rAGx+2J5hrUwIFM/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAGBAAAgMAAAAAAAAAAAAAAAAAEBEBICH/2gAIAQEABj8CKU3wf//EABwQAAIDAAMBAAAAAAAAAAAAAAERABAxUWGBkf/aAAgBAQABPyEw7TVYeBF3WkOE2GVqP7Gl/S4DP//aAAwDAQACAAMAAAAQz9P9/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHRABAQEBAQACAwAAAAAAAAAAAREAITFRYXGBkf/aAAgBAQABPxAb391MWbCjQwUov3ih7cZXk97yOLsNcZx1yVLfz1tFPlH8uROy/W//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1668&quot;
        title=&quot;&quot;
        src=&quot;/static/c0190fb3012496a8370a9a91f6705010/58f70/IMG_1668.jpg&quot;
        srcset=&quot;/static/c0190fb3012496a8370a9a91f6705010/3c01f/IMG_1668.jpg 293w,
/static/c0190fb3012496a8370a9a91f6705010/e1991/IMG_1668.jpg 585w,
/static/c0190fb3012496a8370a9a91f6705010/58f70/IMG_1668.jpg 1170w,
/static/c0190fb3012496a8370a9a91f6705010/5a523/IMG_1668.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[November 2019 Music]]></title><link>https://blog.stephentvedt.com/posts/2019/music-11-november/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/music-11-november/</guid><pubDate>Sat, 30 Nov 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/playlist/2sRfy9eb4lF1jhNVpCNBG3?si=qYDggeh3Rp-1H3vYTS4gfg&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;iframe src=&quot;https://open.spotify.com/embed/playlist/2sRfy9eb4lF1jhNVpCNBG3&quot; width=&quot;100%&quot; height=&quot;400&quot; frameborder=&quot;0&quot; allowtransparency=&quot;true&quot; allow=&quot;encrypted-media&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Sketches November 2019]]></title><link>https://blog.stephentvedt.com/posts/2019/sketches-november-2019/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/sketches-november-2019/</guid><pubDate>Sat, 30 Nov 2019 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 97.26962457337883%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAATABQDASIAAhEBAxEB/8QAGQABAAIDAAAAAAAAAAAAAAAAAAMEAQIF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHrRx65t9GKuQsA/8QAGxAAAgIDAQAAAAAAAAAAAAAAAREAAgMQEiL/2gAIAQEAAQUCvfmVy9FzJ6gCsIy3r//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABgQAAMBAQAAAAAAAAAAAAAAAAABERAg/9oACAEBAAY/AiZIJzn/xAAbEAEAAgMBAQAAAAAAAAAAAAABABEhMUEQUf/aAAgBAQABPyFQIXHGhn4+EClkeyqDqKzUbmZY7DU//9oADAMBAAIAAwAAABAgD77/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAdEAEBAAIDAAMAAAAAAAAAAAABEQAhMUGhcdHw/9oACAEBAAE/ENnGznjOUkRUZ5m2MGUNIfpcEfajHeifeRWi9PWIp4xcyIzFR8Z//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1657&quot;
        title=&quot;&quot;
        src=&quot;/static/168d759243efbcb223a524703db6e0af/58f70/IMG_1657.jpg&quot;
        srcset=&quot;/static/168d759243efbcb223a524703db6e0af/3c01f/IMG_1657.jpg 293w,
/static/168d759243efbcb223a524703db6e0af/e1991/IMG_1657.jpg 585w,
/static/168d759243efbcb223a524703db6e0af/58f70/IMG_1657.jpg 1170w,
/static/168d759243efbcb223a524703db6e0af/5a523/IMG_1657.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 86.3481228668942%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAIDBAEF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAH1s+qGbW4L5Esgf//EABoQAAIDAQEAAAAAAAAAAAAAAAABAhAREyH/2gAIAQEAAQUCczpLeiPB4xQpV//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABoQAAICAwAAAAAAAAAAAAAAAAAhAREQIEH/2gAIAQEABj8CWGcFVjjT/8QAGhAAAwEBAQEAAAAAAAAAAAAAAAERIWEQMf/aAAgBAQABPyFl1Jwbq2cKdFBdEYYVNYvvv//aAAwDAQACAAMAAAAQJ/eC/8QAFREBAQAAAAAAAAAAAAAAAAAAESD/2gAIAQMBAT8QI//EABURAQEAAAAAAAAAAAAAAAAAABEg/9oACAECAQE/EGP/xAAcEAEBAAMBAAMAAAAAAAAAAAABEQAhMVFxgeH/2gAIAQEAAT8QuJDWNX3GfNoBBMYKQkZzLyqT1NZrgdn7MshWqRzv8519Y9z/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1658&quot;
        title=&quot;&quot;
        src=&quot;/static/3a9d89519a830545f15dba114b2e6f03/58f70/IMG_1658.jpg&quot;
        srcset=&quot;/static/3a9d89519a830545f15dba114b2e6f03/3c01f/IMG_1658.jpg 293w,
/static/3a9d89519a830545f15dba114b2e6f03/e1991/IMG_1658.jpg 585w,
/static/3a9d89519a830545f15dba114b2e6f03/58f70/IMG_1658.jpg 1170w,
/static/3a9d89519a830545f15dba114b2e6f03/5a523/IMG_1658.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 67.57679180887372%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAIDBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAddUM2wRB//EABgQAAMBAQAAAAAAAAAAAAAAAAABEQIS/9oACAEBAAEFAqmPUZKcFP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CX//EABoQAAMAAwEAAAAAAAAAAAAAAAABERAxYcH/2gAIAQEAAT8hWgxEJcKUood9KXT/2gAMAwEAAgADAAAAELz/AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABwQAAICAgMAAAAAAAAAAAAAAAERACFBUTFx4f/aAAgBAQABPxAqnHpQjuAB3uVmFa4aMeASXvxAyDZ5M//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1688&quot;
        title=&quot;&quot;
        src=&quot;/static/660e1769d858e5807919c0edadc8c92f/58f70/IMG_1688.jpg&quot;
        srcset=&quot;/static/660e1769d858e5807919c0edadc8c92f/3c01f/IMG_1688.jpg 293w,
/static/660e1769d858e5807919c0edadc8c92f/e1991/IMG_1688.jpg 585w,
/static/660e1769d858e5807919c0edadc8c92f/58f70/IMG_1688.jpg 1170w,
/static/660e1769d858e5807919c0edadc8c92f/5a523/IMG_1688.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 146.75767918088738%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAdABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAevObN0QKLCFR//EABoQAAICAwAAAAAAAAAAAAAAAAERABACICH/2gAIAQEAAQUCNk9GVKLRz//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8CT//EAB0QAAIBBAMAAAAAAAAAAAAAAAABERAhMUFhcZH/2gAIAQEAAT8ha1jNEpPDRokiR5q3COp//9oADAMBAAIAAwAAABDL/rL/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/EB//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/EB//xAAdEAEAAwACAwEAAAAAAAAAAAABABEhUeEQMUHR/9oACAEBAAE/EHORg0Hk8MOu0rlgWoxe9QsCfYvlZKz9Sqy4Ngy4a9TXaf/Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1689&quot;
        title=&quot;&quot;
        src=&quot;/static/2ab1ea6e8db94e73661743eb7db575d3/58f70/IMG_1689.jpg&quot;
        srcset=&quot;/static/2ab1ea6e8db94e73661743eb7db575d3/3c01f/IMG_1689.jpg 293w,
/static/2ab1ea6e8db94e73661743eb7db575d3/e1991/IMG_1689.jpg 585w,
/static/2ab1ea6e8db94e73661743eb7db575d3/58f70/IMG_1689.jpg 1170w,
/static/2ab1ea6e8db94e73661743eb7db575d3/5a523/IMG_1689.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 98.97610921501708%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAUABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAECAwQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAH2coxzrrVCBLBf/8QAGxAAAgEFAAAAAAAAAAAAAAAAAAESEBEhMkH/2gAIAQEAAQUCJq5k4tURVP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABcQAQADAAAAAAAAAAAAAAAAABABIDH/2gAIAQEABj8CrBh//8QAHhAAAgEDBQAAAAAAAAAAAAAAAAERECFBMVFhcaH/2gAIAQEAAT8hQ7DG9J5mXZ5BmyUaWR//2gAMAwEAAgADAAAAEGDHQP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EAB0QAQACAgIDAAAAAAAAAAAAAAEAESExQbFRYZH/2gAIAQEAAT8QihGeddPibycyhvpAu3QLs9kfwdRTLG5YzlgAAoCgn//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1690&quot;
        title=&quot;&quot;
        src=&quot;/static/0c585cd04b948bbef2f0c9821d552b39/58f70/IMG_1690.jpg&quot;
        srcset=&quot;/static/0c585cd04b948bbef2f0c9821d552b39/3c01f/IMG_1690.jpg 293w,
/static/0c585cd04b948bbef2f0c9821d552b39/e1991/IMG_1690.jpg 585w,
/static/0c585cd04b948bbef2f0c9821d552b39/58f70/IMG_1690.jpg 1170w,
/static/0c585cd04b948bbef2f0c9821d552b39/5a523/IMG_1690.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 95.56313993174061%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAATABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAfWuJm9QQGQf/8QAFxABAQEBAAAAAAAAAAAAAAAAEAIRMf/aAAgBAQABBQJrkmP/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAw/9oACAEBAAY/Ah//xAAaEAADAAMBAAAAAAAAAAAAAAAAAREQITFR/9oACAEBAAE/IdpldmKt9a4NqvQmR4RC4f/aAAwDAQACAAMAAAAQP9d+/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHBAAAwADAAMAAAAAAAAAAAAAAAERITFBYXGx/9oACAEBAAE/EFKlM7os1M+BIkkovojSm07gQ1U0/TN76JcNR//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1691&quot;
        title=&quot;&quot;
        src=&quot;/static/5248e9482c83c68401d40af64a6651a8/58f70/IMG_1691.jpg&quot;
        srcset=&quot;/static/5248e9482c83c68401d40af64a6651a8/3c01f/IMG_1691.jpg 293w,
/static/5248e9482c83c68401d40af64a6651a8/e1991/IMG_1691.jpg 585w,
/static/5248e9482c83c68401d40af64a6651a8/58f70/IMG_1691.jpg 1170w,
/static/5248e9482c83c68401d40af64a6651a8/5a523/IMG_1691.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 81.91126279863481%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAQAF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHZgyYq/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABBQJf/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAFhABAQEAAAAAAAAAAAAAAAAAAQAR/9oACAEBAAE/IdhtskgL/9oADAMBAAIAAwAAABAP3//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABwQAQACAgMBAAAAAAAAAAAAAAEAESExQVFhgf/aAAgBAQABPxB4iSxzUA5BlLv3qIu35BGp/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1692&quot;
        title=&quot;&quot;
        src=&quot;/static/c15edf78d3c018be2b37d1aee3097cde/58f70/IMG_1692.jpg&quot;
        srcset=&quot;/static/c15edf78d3c018be2b37d1aee3097cde/3c01f/IMG_1692.jpg 293w,
/static/c15edf78d3c018be2b37d1aee3097cde/e1991/IMG_1692.jpg 585w,
/static/c15edf78d3c018be2b37d1aee3097cde/58f70/IMG_1692.jpg 1170w,
/static/c15edf78d3c018be2b37d1aee3097cde/5a523/IMG_1692.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[The New Gatsby Blog]]></title><description><![CDATA[Why Migrate at all? Why go with a new blogging platform? My old website since the dawn of time has been in WordPress. This is complete…]]></description><link>https://blog.stephentvedt.com/posts/2019/new-gatsby-blog/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/new-gatsby-blog/</guid><pubDate>Wed, 20 Nov 2019 17:20:00 GMT</pubDate><content:encoded>&lt;h2&gt;Why Migrate at all?&lt;/h2&gt;
&lt;p&gt;Why go with a new blogging platform? My old website since the dawn of time has been in WordPress. This is complete overkill and added overhead to keep it up to date and pay for hosting. Nor do I care to dive into the structure for templating out WordPress themes. WordPress by comparison is also slow. Enter Gatsby.&lt;/p&gt;
&lt;p&gt;I have used my share of static site generators in the past, Jekyll, Hugo and the list goes on. Templating languages such as Jade, Handlebars, Moustache, etc. Again all have a lot of unnecessary bulk for what I’m trying to accomplish. With Gatsby I can have my awesome reusable components in the same React and JSX format I use everyday. It also allows for different data sources. So I could use WordPress as my CMS but all the rendering and speed bonuses of a statically generated site. Still for my uses the WYSIWG is more than I need so I have gone with a markdown solution for my data set and to store my content.&lt;/p&gt;
&lt;p&gt;To encourage actually authoring content for this blog I need the flexibility to author posts whenever an idea comes up. As my current note taking application Bear is already using markdown. I can very easily start a post from my phone and have it’s syncing capabilities to my desktop app. Then it’s seamless to copy over the markdown from my editor to my code editor of choice.&lt;/p&gt;
&lt;h2&gt;New Technologies&lt;/h2&gt;
&lt;p&gt;And added benefit to using Gatsby is that it offers a new project in which I can stretch my legs with some technologies that don’t make sense to flow into my day job right now. With the Gatsby stater and implementation I have chosen I can get my hands on with several things I have yet to touch in any great depth such as: GraphQL, TypeScript and Styled Components. From a philosophical level have been opposed to the mixing of styles and application logic and believe it clutters two aspects of our code which are what I’ve believed to be better kept separate. This gives me the opportunity to at least give it a college try and either open myself up to a new approach or validate my current opinion.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Sketches October 2019]]></title><link>https://blog.stephentvedt.com/posts/2019/sketches-october-2019/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/sketches-october-2019/</guid><pubDate>Thu, 31 Oct 2019 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 89.76109215017064%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAASABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAMBAgX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQACEAMQAAAB9NPIq6YyYdA//8QAGhAAAgIDAAAAAAAAAAAAAAAAAAECERIgMf/aAAgBAQABBQJyMi9X1H//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAVEAEBAAAAAAAAAAAAAAAAAAAgMf/aAAgBAQAGPwIU/wD/xAAbEAACAgMBAAAAAAAAAAAAAAAAEQEQITFhkf/aAAgBAQABPyFAvfKzngpQeNWaH//aAAwDAQACAAMAAAAQ0Oe+/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHRABAAICAgMAAAAAAAAAAAAAAQBBEVEhYRAxsf/aAAgBAQABPxDD980bm4PbA0EcjA24WSss7ggFO5Xg+8//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1648&quot;
        title=&quot;&quot;
        src=&quot;/static/6427280e53c18324bf0a111693fedfb8/58f70/IMG_1648.jpg&quot;
        srcset=&quot;/static/6427280e53c18324bf0a111693fedfb8/3c01f/IMG_1648.jpg 293w,
/static/6427280e53c18324bf0a111693fedfb8/e1991/IMG_1648.jpg 585w,
/static/6427280e53c18324bf0a111693fedfb8/58f70/IMG_1648.jpg 1170w,
/static/6427280e53c18324bf0a111693fedfb8/5a523/IMG_1648.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 87.03071672354949%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABcBAQEBAQAAAAAAAAAAAAAAAAABAgP/2gAMAwEAAhADEAAAAeqOetILSIK//8QAGBAAAgMAAAAAAAAAAAAAAAAAABEBICH/2gAIAQEAAQUCNTm//8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFBABAAAAAAAAAAAAAAAAAAAAMP/aAAgBAQAGPwIf/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAERIRAxQWH/2gAIAQEAAT8h67E/BigsXSdCkWf/2gAMAwEAAgADAAAAENQwwf/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABURAQEAAAAAAAAAAAAAAAAAABAB/9oACAECAQE/ECH/xAAcEAACAgMBAQAAAAAAAAAAAAABEQAhMUFREGH/2gAIAQEAAT8QFohkWUYMMFrULs0euAiUI25VefvjUM//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1649&quot;
        title=&quot;&quot;
        src=&quot;/static/a3bca4356f1cd52641fdce5b9e371656/58f70/IMG_1649.jpg&quot;
        srcset=&quot;/static/a3bca4356f1cd52641fdce5b9e371656/3c01f/IMG_1649.jpg 293w,
/static/a3bca4356f1cd52641fdce5b9e371656/e1991/IMG_1649.jpg 585w,
/static/a3bca4356f1cd52641fdce5b9e371656/58f70/IMG_1649.jpg 1170w,
/static/a3bca4356f1cd52641fdce5b9e371656/5a523/IMG_1649.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 138.5665529010239%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAcABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAIBAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAfUUxo0mR0Syof/EABgQAAMBAQAAAAAAAAAAAAAAAAABESAh/9oACAEBAAEFArpi5iH/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAw/9oACAEBAAY/Ak//xAAeEAACAQQDAQAAAAAAAAAAAAAAAREQIVFhMUFxkf/aAAgBAQABPyHwS8UgjS+0e0GBdC2x8iuQwf/aAAwDAQACAAMAAAAQcN2M/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFhEAAwAAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/ECv/xAAbEAEAAwEBAQEAAAAAAAAAAAABABEhMVFBcf/aAAgBAQABPxBdKYPq9ghtPNlRVuHfZb4gR+xBjsBhfSGdZstLfHkuXH5Dq/Zu42f/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1650&quot;
        title=&quot;&quot;
        src=&quot;/static/5c4f9a86d4ed5f9897342e217a9a1f02/58f70/IMG_1650.jpg&quot;
        srcset=&quot;/static/5c4f9a86d4ed5f9897342e217a9a1f02/3c01f/IMG_1650.jpg 293w,
/static/5c4f9a86d4ed5f9897342e217a9a1f02/e1991/IMG_1650.jpg 585w,
/static/5c4f9a86d4ed5f9897342e217a9a1f02/58f70/IMG_1650.jpg 1170w,
/static/5c4f9a86d4ed5f9897342e217a9a1f02/5a523/IMG_1650.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 69.28327645051195%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAOABQDASIAAhEBAxEB/8QAGAAAAgMAAAAAAAAAAAAAAAAAAAECAwX/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQACEAMQAAAB1iLirRB//8QAGRAAAwADAAAAAAAAAAAAAAAAARARABIh/9oACAEBAAEFAr0lTNV//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAFxABAQEBAAAAAAAAAAAAAAAAAQAhEf/aAAgBAQABPyE0LB47Dk7bpi//2gAMAwEAAgADAAAAEPv/AP/EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABoQAQEBAQEBAQAAAAAAAAAAAAERACExUYH/2gAIAQEAAT8QRUvPO5ShGeL8yrUi3QenfcEIz83/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1652&quot;
        title=&quot;&quot;
        src=&quot;/static/f3bff3ed1419de8252d8be7f9af0d425/58f70/IMG_1652.jpg&quot;
        srcset=&quot;/static/f3bff3ed1419de8252d8be7f9af0d425/3c01f/IMG_1652.jpg 293w,
/static/f3bff3ed1419de8252d8be7f9af0d425/e1991/IMG_1652.jpg 585w,
/static/f3bff3ed1419de8252d8be7f9af0d425/58f70/IMG_1652.jpg 1170w,
/static/f3bff3ed1419de8252d8be7f9af0d425/5a523/IMG_1652.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 129.01023890784984%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAECAwQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAIB/9oADAMBAAIQAxAAAAH1c4ziulmKrmVSP//EABwQAAICAgMAAAAAAAAAAAAAAAECABARIRIiMf/aAAgBAQABBQIGFovnKkPXWTiLoX//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAYEAACAwAAAAAAAAAAAAAAAAAAEBEhMP/aAAgBAQAGPwIpRj//xAAaEAADAQEBAQAAAAAAAAAAAAAAAREhMUFR/9oACAEBAAE/IaHnga90aJsLkwskMO8EZY4TEhF8If/aAAwDAQACAAMAAAAQuObz/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHRAAAgMAAwEBAAAAAAAAAAAAAREAITFBUZGh8P/aAAgBAQABPxAIWwWR9g9Dq3+qKiWckwkL3nIYJg1LOIDEAqChMahDv9HsoiCPBcToeSjHkToT/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1653&quot;
        title=&quot;&quot;
        src=&quot;/static/05174dab7d733a1e341e861b1e8ab392/58f70/IMG_1653.jpg&quot;
        srcset=&quot;/static/05174dab7d733a1e341e861b1e8ab392/3c01f/IMG_1653.jpg 293w,
/static/05174dab7d733a1e341e861b1e8ab392/e1991/IMG_1653.jpg 585w,
/static/05174dab7d733a1e341e861b1e8ab392/58f70/IMG_1653.jpg 1170w,
/static/05174dab7d733a1e341e861b1e8ab392/5a523/IMG_1653.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 63.48122866894198%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAHWRYbom//EABYQAQEBAAAAAAAAAAAAAAAAABIAIP/aAAgBAQABBQJSnj//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAZEAACAwEAAAAAAAAAAAAAAAABEAARQVH/2gAIAQEAAT8hv2Ejqa//2gAMAwEAAgADAAAAEA8f/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPxA//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPxA//8QAHBAAAwACAwEAAAAAAAAAAAAAAAERIUExgZHh/9oACAEBAAE/EHx16fUFPY80S7fQng//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1654&quot;
        title=&quot;&quot;
        src=&quot;/static/aaac79c918242b08bae9fa6b86a3c381/58f70/IMG_1654.jpg&quot;
        srcset=&quot;/static/aaac79c918242b08bae9fa6b86a3c381/3c01f/IMG_1654.jpg 293w,
/static/aaac79c918242b08bae9fa6b86a3c381/e1991/IMG_1654.jpg 585w,
/static/aaac79c918242b08bae9fa6b86a3c381/58f70/IMG_1654.jpg 1170w,
/static/aaac79c918242b08bae9fa6b86a3c381/5a523/IMG_1654.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 58.36177474402731%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIDBf/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/aAAwDAQACEAMQAAAB2CLYtRA//8QAGRABAAIDAAAAAAAAAAAAAAAAAQACEBES/9oACAEBAAEFAtzuUsoGf//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABkQAAIDAQAAAAAAAAAAAAAAAAEQABFBUf/aAAgBAQAGPwLYRx2v/8QAGxABAAICAwAAAAAAAAAAAAAAAQARIUExUZH/2gAIAQEAAT8hyKv1DLqSxLuEZgUuzOJ//9oADAMBAAIAAwAAABBcH//EABYRAQEBAAAAAAAAAAAAAAAAAAARAf/aAAgBAwEBPxCJj//EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/EKr/xAAZEAEBAQEBAQAAAAAAAAAAAAABESEAMVH/2gAIAQEAAT8Qwr2t9cqA0ou1l5SJaBDOoi19bxiXG78zhRDzv//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1655&quot;
        title=&quot;&quot;
        src=&quot;/static/c1a0c40cccdd74c8f648657be0ff06e4/58f70/IMG_1655.jpg&quot;
        srcset=&quot;/static/c1a0c40cccdd74c8f648657be0ff06e4/3c01f/IMG_1655.jpg 293w,
/static/c1a0c40cccdd74c8f648657be0ff06e4/e1991/IMG_1655.jpg 585w,
/static/c1a0c40cccdd74c8f648657be0ff06e4/58f70/IMG_1655.jpg 1170w,
/static/c1a0c40cccdd74c8f648657be0ff06e4/5a523/IMG_1655.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 151.87713310580205%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAeABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAIBAwQF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAHqmeMXUVC0raxAwf/EABsQAQEAAgMBAAAAAAAAAAAAAAEAAhEDECES/9oACAEBAAEFAtw9ciWL8xZevhEluC//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAYEAADAQEAAAAAAAAAAAAAAAAAATEQIP/aAAgBAQAGPwIutZCPn//EAB4QAQACAQQDAAAAAAAAAAAAAAEAESExQVFhcYHR/9oACAEBAAE/IWbDd3FRiKG7IYDduLH2UyXzzL1S8xiXMnuK4JYXpP/aAAwDAQACAAMAAAAQ3OGO/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHxABAAMBAAICAwAAAAAAAAAAAQARITFBUWHhgZGx/9oACAEBAAE/EEOIF6rOWd8aH6jg2vCRZdn1m/Muk0x4hNwUeeVSzERxha9bFFo3d2r+xmG91iq/K7+pQBQel/UKh08J/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1656&quot;
        title=&quot;&quot;
        src=&quot;/static/97580dab5fdaefb9cffe7c6ef95a006f/58f70/IMG_1656.jpg&quot;
        srcset=&quot;/static/97580dab5fdaefb9cffe7c6ef95a006f/3c01f/IMG_1656.jpg 293w,
/static/97580dab5fdaefb9cffe7c6ef95a006f/e1991/IMG_1656.jpg 585w,
/static/97580dab5fdaefb9cffe7c6ef95a006f/58f70/IMG_1656.jpg 1170w,
/static/97580dab5fdaefb9cffe7c6ef95a006f/5a523/IMG_1656.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[October 2019 Music]]></title><link>https://blog.stephentvedt.com/posts/2019/music-10-october/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/music-10-october/</guid><pubDate>Thu, 31 Oct 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/playlist/2QnDgER6QGl7RsLfT4UUPe?si=lkL-TXKCQ7m2ByGeh67fYQ&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;iframe src=&quot;https://open.spotify.com/embed/playlist/2QnDgER6QGl7RsLfT4UUPe&quot; width=&quot;100%&quot; height=&quot;400&quot; frameborder=&quot;0&quot; allowtransparency=&quot;true&quot; allow=&quot;encrypted-media&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Start Sketching - Keep the Tools Simple]]></title><description><![CDATA[So I have been sketching a lot as of late. At home we have started designing and remodelling our bathroom and that has reignited my passion…]]></description><link>https://blog.stephentvedt.com/posts/2019/minimal-sketching-tools/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/minimal-sketching-tools/</guid><pubDate>Fri, 25 Oct 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;So I have been sketching a lot as of late. At home we have started designing and remodelling our bathroom and that has reignited my passion for architecture. So of course I went ahead and purchased a bunch of supplies for sketching. Sketchbooks, pencils, markers, pens, you name it. Caught up in the excitement of creating something new made me go a tad overboard on the supplies.&lt;/p&gt;
&lt;p&gt;I had all of these supplies for different stages of a sketch. Pencil to frame it out. Then pens for more permanent line work and lastly markers for rendering and coloring. Still being relatively new to sketching just accomplishing getting anything completed and through all of these steps proved very time consuming.&lt;/p&gt;
&lt;p&gt;There was suddenly this burden of time and taking too long that prevented me from getting started on anything and putting anything down on paper. So I tidied up my supplies and tucked all them neatly away and took out only what I needed to get started. For the last two weeks I’ve found myself using a very small subset of items. My minimal go to set of tools is as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://amzn.to/2CO1K9B&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Muji Sketchbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://amzn.to/35cBuS7&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Uni Kuru Toga Mechanical Pencil&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://amzn.to/37dwAX6&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Copic Multiliner Pen 0.5mm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Erasers for &lt;a href=&quot;https://amzn.to/2QqLwv8&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Fine Details&lt;/a&gt; &amp;#x26; &lt;a href=&quot;https://amzn.to/2qiR7J7&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Heavier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://amzn.to/2Ohztxs&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Midori 15cm Ruler&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the above I can focus on more quickly getting to a finished product and often not even using any ink. As I’m still getting back into drawing less permanence has been a good thing.&lt;/p&gt;
&lt;p&gt;A more full list of some of the tools I’m using can be seen below:
(The above Copic Multiliner is included in the Copic Gray set)&lt;/p&gt;
&lt;iframe src=&quot;https://kit.co/embed?url=https%3A%2F%2Fkit.co%2Fstvedt%2Fsketching-architecture-essentials&quot; style=&quot;display: block; border: 0px; margin: 0 auto; width: 100%; height: 100vw; max-width: 700px; max-height: 700px&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;</content:encoded></item><item><title><![CDATA[Evolution of Logo]]></title><link>https://blog.stephentvedt.com/posts/2019/evolution-of-logo/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/evolution-of-logo/</guid><pubDate>Sat, 12 Oct 2019 10:00:00 GMT</pubDate><content:encoded></content:encoded></item><item><title><![CDATA[Sketches September 2019]]></title><link>https://blog.stephentvedt.com/posts/2019/sketches-september-2019/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/sketches-september-2019/</guid><pubDate>Mon, 30 Sep 2019 15:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 130.03412969283278%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAe1GbGtVBlWLIQX/xAAZEAADAQEBAAAAAAAAAAAAAAAAAREQICH/2gAIAQEAAQUCpcb9pcbLx//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8CT//EABsQAAMAAwEBAAAAAAAAAAAAAAABERAhQVFx/9oACAEBAAE/IfBRROl2fWDlvSPKK1lpeH//2gAMAwEAAgADAAAAEFvmzv/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABYRAQEBAAAAAAAAAAAAAAAAAAAREP/aAAgBAgEBPxBMr//EAB0QAQADAAIDAQAAAAAAAAAAAAEAESExQRBRgZH/2gAIAQEAAT8QdosfcQQqzt8BW15VBZdoYjVwU7qY9RUNV9jzAE0Ja4fk/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1640&quot;
        title=&quot;&quot;
        src=&quot;/static/4ea518bad2f6d57a121b9b8fe6776d79/58f70/IMG_1640.jpg&quot;
        srcset=&quot;/static/4ea518bad2f6d57a121b9b8fe6776d79/3c01f/IMG_1640.jpg 293w,
/static/4ea518bad2f6d57a121b9b8fe6776d79/e1991/IMG_1640.jpg 585w,
/static/4ea518bad2f6d57a121b9b8fe6776d79/58f70/IMG_1640.jpg 1170w,
/static/4ea518bad2f6d57a121b9b8fe6776d79/5a523/IMG_1640.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 82.93515358361775%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAARABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAfXmJjXVkZglC//EABYQAQEBAAAAAAAAAAAAAAAAABEAMP/aAAgBAQABBQJnD//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8CH//EABkQAAMBAQEAAAAAAAAAAAAAAAABEUEgIf/aAAgBAQABPyF4QnKbT22ovH//2gAMAwEAAgADAAAAEOsn/v/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EABsQAQADAQADAAAAAAAAAAAAAAEAESExEEGR/9oACAEBAAE/EHhYLccqaibsfIFfA8hDPb4//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1641&quot;
        title=&quot;&quot;
        src=&quot;/static/934e1d48732049fc9c8a322c568b5308/58f70/IMG_1641.jpg&quot;
        srcset=&quot;/static/934e1d48732049fc9c8a322c568b5308/3c01f/IMG_1641.jpg 293w,
/static/934e1d48732049fc9c8a322c568b5308/e1991/IMG_1641.jpg 585w,
/static/934e1d48732049fc9c8a322c568b5308/58f70/IMG_1641.jpg 1170w,
/static/934e1d48732049fc9c8a322c568b5308/5a523/IMG_1641.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 129.35153583617748%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAe04iK0MwSJKIMf/xAAXEAADAQAAAAAAAAAAAAAAAAABEBEg/9oACAEBAAEFAqyXdf/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8BH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8BH//EABQQAQAAAAAAAAAAAAAAAAAAADD/2gAIAQEABj8CT//EABkQAAMBAQEAAAAAAAAAAAAAAAABERAhMf/aAAgBAQABPyH0UuV87BRLg6Yy48//2gAMAwEAAgADAAAAEKPID//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EAB0QAQACAgIDAAAAAAAAAAAAAAEAESFREEExcaH/2gAIAQEAAT8QE1br1RE7iNwSh7i7oKOceSOgMQqRbPsesTAhvujPL//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1643&quot;
        title=&quot;&quot;
        src=&quot;/static/31e90588f6ff66932e0d5286f261a39d/58f70/IMG_1643.jpg&quot;
        srcset=&quot;/static/31e90588f6ff66932e0d5286f261a39d/3c01f/IMG_1643.jpg 293w,
/static/31e90588f6ff66932e0d5286f261a39d/e1991/IMG_1643.jpg 585w,
/static/31e90588f6ff66932e0d5286f261a39d/58f70/IMG_1643.jpg 1170w,
/static/31e90588f6ff66932e0d5286f261a39d/5a523/IMG_1643.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 140.2730375426621%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAcABQDASIAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAgABAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/2gAMAwEAAhADEAAAAfaOZFKMZzRFCx//xAAYEAACAwAAAAAAAAAAAAAAAAAQEQAgQf/aAAgBAQABBQIuM7T/xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAEDAQE/AR//xAAUEQEAAAAAAAAAAAAAAAAAAAAg/9oACAECAQE/AR//xAAUEAEAAAAAAAAAAAAAAAAAAAAw/9oACAEBAAY/Ak//xAAYEAEBAQEBAAAAAAAAAAAAAAABABARIf/aAAgBAQABPyHsuPrHZZZ2d//aAAwDAQACAAMAAAAQY9wP/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPxAf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPxAf/8QAHRABAAMAAQUAAAAAAAAAAAAAAQARIUEQMWFxgf/aAAgBAQABPxBQvmNlX8l5NGVsQNLvRtDqc5PaJj3vmLP/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1644&quot;
        title=&quot;&quot;
        src=&quot;/static/8fc5a41f4fa249f2deb0050b1e979835/58f70/IMG_1644.jpg&quot;
        srcset=&quot;/static/8fc5a41f4fa249f2deb0050b1e979835/3c01f/IMG_1644.jpg 293w,
/static/8fc5a41f4fa249f2deb0050b1e979835/e1991/IMG_1644.jpg 585w,
/static/8fc5a41f4fa249f2deb0050b1e979835/58f70/IMG_1644.jpg 1170w,
/static/8fc5a41f4fa249f2deb0050b1e979835/5a523/IMG_1644.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 131.39931740614335%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAaABQDASIAAhEBAxEB/8QAGAABAAMBAAAAAAAAAAAAAAAAAAECAwX/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAQL/2gAMAwEAAhADEAAAAetMZ41soKFUMy//xAAaEAACAwEBAAAAAAAAAAAAAAAAEQEQIQIS/9oACAEBAAEFAupQ79azWO5P/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAwEBPwEf/8QAFBEBAAAAAAAAAAAAAAAAAAAAIP/aAAgBAgEBPwEf/8QAFBABAAAAAAAAAAAAAAAAAAAAMP/aAAgBAQAGPwJP/8QAGhAAAgMBAQAAAAAAAAAAAAAAAREAECExUf/aAAgBAQABPyEpFQMNph8i5oU9TPIUvuf/2gAMAwEAAgADAAAAEHALfP/EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQMBAT8QH//EABQRAQAAAAAAAAAAAAAAAAAAACD/2gAIAQIBAT8QH//EABwQAQACAgMBAAAAAAAAAAAAAAEAESExQXGBYf/aAAgBAQABPxA0pgvuDZh4kv6xZBSohhA1vMLF5iQ2B41EstLeagKiOvIzT1P/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1645&quot;
        title=&quot;&quot;
        src=&quot;/static/df3994c1ab88ec46c02dcbe540bc7348/58f70/IMG_1645.jpg&quot;
        srcset=&quot;/static/df3994c1ab88ec46c02dcbe540bc7348/3c01f/IMG_1645.jpg 293w,
/static/df3994c1ab88ec46c02dcbe540bc7348/e1991/IMG_1645.jpg 585w,
/static/df3994c1ab88ec46c02dcbe540bc7348/58f70/IMG_1645.jpg 1170w,
/static/df3994c1ab88ec46c02dcbe540bc7348/5a523/IMG_1645.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 1170px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 77.81569965870307%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAQABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAMBBf/EABYBAQEBAAAAAAAAAAAAAAAAAAIAAf/aAAwDAQACEAMQAAAB7LJBWTWf/8QAGRAAAgMBAAAAAAAAAAAAAAAAAAECEBEx/9oACAEBAAEFAlLTbfT/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAZEAEBAQEBAQAAAAAAAAAAAAABABFhMVH/2gAIAQEAAT8h0PJ6tfssdEeX/9oADAMBAAIAAwAAABBoP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABoQAQACAwEAAAAAAAAAAAAAAAEAIRFBUWH/2gAIAQEAAT8QYAIUuOaB7O0YI7MqFlxIDhP/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;IMG 1646&quot;
        title=&quot;&quot;
        src=&quot;/static/9ff161fa3217095af9eee1f85aadd21e/58f70/IMG_1646.jpg&quot;
        srcset=&quot;/static/9ff161fa3217095af9eee1f85aadd21e/3c01f/IMG_1646.jpg 293w,
/static/9ff161fa3217095af9eee1f85aadd21e/e1991/IMG_1646.jpg 585w,
/static/9ff161fa3217095af9eee1f85aadd21e/58f70/IMG_1646.jpg 1170w,
/static/9ff161fa3217095af9eee1f85aadd21e/5a523/IMG_1646.jpg 1200w&quot;
        sizes=&quot;(max-width: 1170px) 100vw, 1170px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[September 2019 Music]]></title><link>https://blog.stephentvedt.com/posts/2019/music-09-september/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/music-09-september/</guid><pubDate>Mon, 30 Sep 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/playlist/2QnDgER6QGl7RsLfT4UUPe?si=mv1SQqo8Qd6z-A8mZZlo0Q&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;iframe src=&quot;https://open.spotify.com/embed/playlist/2QnDgER6QGl7RsLfT4UUPe&quot; width=&quot;100%&quot; height=&quot;400&quot; frameborder=&quot;0&quot; allowtransparency=&quot;true&quot; allow=&quot;encrypted-media&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Great Uptime Alerting and Monitoring - updown.io]]></title><description><![CDATA[Since Pingdom discontinued offering a free tier of monitoring. So about a year ago I found myself on the hunt for a new one. So for the past…]]></description><link>https://blog.stephentvedt.com/posts/2019/updown-monitoring-alerting/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/updown-monitoring-alerting/</guid><pubDate>Fri, 20 Sep 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Since Pingdom discontinued offering a free tier of monitoring. So about a year ago I found myself on the hunt for a new one. So for the past year I have been using and am more than satisfied with &lt;a href=&quot;https://updown.io/r/Ma4e9%0A&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;updown.io&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While they are a paid service new users receive 100k credits for free. This is a massive amount of credits for small scale usage. For scale, one credit on updown translates to one request (or check) for uptime. So if only using on 1 website this 100k credits can last you a very long time. Out of the box updown will do an health check every 1 minute. Again, for my usage which is a small personal website and one off projects that is total overkill. As such, I have adjusted my interval to run healthchecks every hour. Which, for a single site means free credits will last close to a decade. Since I like this service, I am now using it on three different sites. After about a year of using this service on two sites I still have 3 over years of free credits left. Their pricing is also very reasonable and something I will and plan to pay for whenever my free credits are exhausted.&lt;/p&gt;
&lt;h2&gt;Some Added Benefits&lt;/h2&gt;
&lt;p&gt;A single healthcheck (also single credit) with updown checks 8 different locations too (Montreal, Tokyo, Sydney, etc.). So if using a CDN you can check to make sure locales are all distributing correctly and response times are reasonable.&lt;/p&gt;
&lt;p&gt;Historical and records are kept so you can get a nice overview of the health of your sites. This information is showcased on a tidy status page like so: &lt;a href=&quot;https://updown.io/ejwy&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;status page&lt;/a&gt;. This status page may also be configured to point a subdomain. If I wanted status.stephentvedt.com I can easily do so. All it requires is some DNS config with CNAMEs outline at: &lt;a href=&quot;https://updown.io/public-status&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://updown.io/public-status&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Alerting&lt;/h2&gt;
&lt;p&gt;All the alerting methods for outages you would expect are available: SMS and Email notifications, of course. The really nice additional integrations of updown are as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;Telegram&lt;/li&gt;
&lt;li&gt;Webhooks&lt;/li&gt;
&lt;li&gt;Zapier&lt;/li&gt;
&lt;li&gt;Hit custom API Endpoint&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If all the above sounds like a fit for your needs I highly recommend giving &lt;a href=&quot;https://updown.io/r/Ma4e9%0A&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;updown.io&lt;/a&gt; a try!&lt;/p&gt;</content:encoded></item><item><title><![CDATA[August 2019 Music]]></title><link>https://blog.stephentvedt.com/posts/2019/music-08-august/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/music-08-august/</guid><pubDate>Sat, 31 Aug 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/playlist/4WTwQCbeKQX95vzUxJKEbL?si=pSIQpZRGRkKm8oaJO12DQw&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;iframe src=&quot;https://open.spotify.com/embed/playlist/4WTwQCbeKQX95vzUxJKEbL&quot; width=&quot;100%&quot; height=&quot;400&quot; frameborder=&quot;0&quot; allowtransparency=&quot;true&quot; allow=&quot;encrypted-media&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[July 2019 Music]]></title><link>https://blog.stephentvedt.com/posts/2019/music-07-july/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/music-07-july/</guid><pubDate>Wed, 31 Jul 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/playlist/6bgCAcBeE6MDPr0zeak0SQ?si=podjtzgPS2GTU5T5tzur4A&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;iframe src=&quot;https://open.spotify.com/embed/playlist/6bgCAcBeE6MDPr0zeak0SQ&quot; width=&quot;100%&quot; height=&quot;400&quot; frameborder=&quot;0&quot; allowtransparency=&quot;true&quot; allow=&quot;encrypted-media&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[June 2019 Music]]></title><link>https://blog.stephentvedt.com/posts/2019/music-06-june/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2019/music-06-june/</guid><pubDate>Sun, 30 Jun 2019 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://open.spotify.com/playlist/3BCUNh46CF61dDukAfCBU7?si=iY5OxXPeQb6YbejLzf43nQ&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;&lt;iframe src=&quot;https://open.spotify.com/embed/playlist/3BCUNh46CF61dDukAfCBU7&quot; width=&quot;100%&quot; height=&quot;400&quot; frameborder=&quot;0&quot; allowtransparency=&quot;true&quot; allow=&quot;encrypted-media&quot;&gt;&lt;/iframe&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Emmet for React/Vue in VS Code]]></title><description><![CDATA[I have been using VS Code for the past several months and have been really enjoying it. There is nothing super ground breaking and does a…]]></description><link>https://blog.stephentvedt.com/posts/2017/emmet-for-react/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2017/emmet-for-react/</guid><pubDate>Wed, 13 Dec 2017 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have been using VS Code for the past several months and have been really enjoying it. There is nothing super ground breaking and does a lot of the same things previous editor have done. The extensions are easy to install and out of the box it comes with some very nice features for Front End Engineers. Emmet for example, comes packaged with VS Code. Emmet will work as expected in HTML files but requires a very small amount of configuration to play nicely with frameworks such as React and Vue.&lt;/p&gt;
&lt;p&gt;Right from the source of VS Codes documentation the following will get Emmet up and running:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;text&quot;&gt;&lt;pre class=&quot;language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;&quot;emmet.includeLanguages&quot;: {
  &quot;javascript&quot;: &quot;javascriptreact&quot;,
  &quot;vue-html&quot;: &quot;html&quot;
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;em&gt;(&lt;a href=&quot;https://code.visualstudio.com/docs/editor/emmet#_emmet-abbreviations-in-other-file-types&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://code.visualstudio.com/docs/editor/emmet#_emmet-abbreviations-in-other-file-types&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[New Web Portfolio]]></title><description><![CDATA[Now live at: web.stephentvedt.com Keeping in the spirit of good code and separation of concerns I have also launched an entirely separate…]]></description><link>https://blog.stephentvedt.com/posts/2017/new_site/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2017/new_site/</guid><pubDate>Sun, 24 Sep 2017 10:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Now live at: &lt;a href=&quot;https://web.stephentvedt.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;web.stephentvedt.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Keeping in the spirit of good code and separation of concerns I have also launched an entirely separate web portfolio. This showcases web projects and sites I have worked on either personally or professionally. Creating this new portfolio also gave me a practical application to stretch my legs with a few new tools, libraries and frameworks:&lt;/p&gt;
&lt;h2&gt;Build Tools&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;create-react-app&lt;/em&gt; (tool which reduces react specific setup of webpack, etc)
_Firebase _(Google’s solution for deploying all types of apps. Free for static sites)&lt;/p&gt;
&lt;h2&gt;Frameworks&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;React&lt;/em&gt;
&lt;em&gt;Material-UI&lt;/em&gt; (Google’s Component Library for React)
&lt;em&gt;react-slick&lt;/em&gt; (React implementation of Slick Carousel)&lt;/p&gt;
&lt;h2&gt;Why These?&lt;/h2&gt;
&lt;p&gt;I chose to use &lt;strong&gt;create-react-app&lt;/strong&gt; to quickly get a new project in React started up and I noticed they have lots of other interesting tools built in and I had to do zero configuration! More on this tool in future posts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Material UI&lt;/strong&gt; I chose because it was not fully matured when I previously wanted to use it for a work project. We proceeded using a third-party library called React-Toolbox in it’s place and has had some growing pains particularly with Redux-Forms. Been a while since I used React-Toolbox but Material-UI seems great so far. One complaint is that it seems unclear how to expand upon their icon-font (I pulled in the github icon, which I poached from their documentation). Also, no class names are added to some of their components by default which would be nice to apply custom styling without having to add my own classes. Or worse, as their examples show having your styles live in your js. Yuck, I’m gonna go take a shower now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Firebase&lt;/strong&gt; has been something I’ve been wanting to try because I know it provides free hosting for static sites and includes SSL, custom domains and future proofing/scaling abilities. I have really liked this as it’s a nice one-liner to deploy once you have their CLI installed. I have also used Heroku for a past project and Heroku can get costly very quickly if you want 100% uptime and start introducing databases.&lt;/p&gt;
&lt;p&gt;That’s all for now. If you would like to see the full source code for the implementation of all the above check it out on Github at: &lt;a href=&quot;https://github.com/stvedt/st-portfolio&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://github.com/stvedt/st-portfolio&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Experience with Tamron 70-300mm]]></title><description><![CDATA[I used this lens and jotted down some thoughts a couple years ago but did not have much experience with telephoto lenses as a basis of…]]></description><link>https://blog.stephentvedt.com/posts/2017/tamron-70-300mm/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2017/tamron-70-300mm/</guid><pubDate>Fri, 14 Jul 2017 14:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I used this lens and jotted down some thoughts a couple years ago but did not have much experience with telephoto lenses as a basis of comparison. I now shoot on the 70-200 f/4 and still want to get my thoughts at for this budget option zoom lens.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amazon.com/Tamron-70-300mm-4-0-5-6-Digital-A17E/dp/B000HDZAUA/ref=as_li_ss_tl?ie=UTF8&amp;#x26;qid=1500079806&amp;#x26;sr=8-4&amp;#x26;keywords=tamron+70-300&amp;#x26;linkCode=ll1&amp;#x26;tag=stvedt03-20&amp;#x26;linkId=ca59b5e0e382881fee4b93b32243f9e2&amp;#x26;language=en_US&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;This Tamron 70-300 &lt;/a&gt;is an older lens I borrowed to attempt to snag some shots at the US Open from way up in the stands. The owner advised me to not shoot on anything over 25omm as detail will be lost. I did a quick test at 300mm and quality and distortion did seem a little off. I was shooting all night on shutter priority with no stabilization equipment at 1/200 and higher. With a decent amount of handheld shake I noticed in camera I would lock in my frame as best I could with good form and elbows in tight and got good images as far as this shutter speed and lens stabilization went.&lt;/p&gt;
&lt;p&gt;The biggest drawback on this lens I saw was in the autofocus in combination with the T3i. I could feel the motor and hear it was very loud. On my T3i body, I felt like the autofocus was always just a little bit off. I tried the AF on continuous and one-shot and got refocuses on still objects multiple times. Overall I think this is a good budget zoom option but with the lack of detail at full 300mm and is no comparison to a 70-200. I would recommend this though as a travel lens for those with family and children and is only ~$130.&lt;/p&gt;
&lt;p&gt;For full specs and to purchase find on &lt;a href=&quot;https://www.amazon.com/Tamron-70-300mm-4-0-5-6-Digital-A17E/dp/B000HDZAUA/ref=as_li_ss_tl?ie=UTF8&amp;#x26;qid=1500079806&amp;#x26;sr=8-4&amp;#x26;keywords=tamron+70-300&amp;#x26;linkCode=ll1&amp;#x26;tag=stvedt03-20&amp;#x26;linkId=ca59b5e0e382881fee4b93b32243f9e2&amp;#x26;language=en_US&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Amazon&lt;/a&gt;.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Return to the Surf]]></title><description><![CDATA[This is a short series of images to capture my experience throughout this summer. I was finally able to get some surfing in and it was…]]></description><link>https://blog.stephentvedt.com/posts/2015/return-to-surf/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2015/return-to-surf/</guid><pubDate>Tue, 22 Sep 2015 18:42:00 GMT</pubDate><content:encoded>&lt;p&gt;This is a short series of images to capture my experience throughout this summer. I was finally able to get some surfing in and it was fantastic. Though, it remains the most difficult sport I’ve tried. I will dive further into what went into creating the series in a future blog post.&lt;/p&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.55290102389078%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAQL/xAAVAQEBAAAAAAAAAAAAAAAAAAAAAv/aAAwDAQACEAMQAAABXRMypw4D/8QAGRAAAwADAAAAAAAAAAAAAAAAAAERAhJB/9oACAEBAAEFAsYanUkUh//EABURAQEAAAAAAAAAAAAAAAAAAAAS/9oACAEDAQE/AZS//8QAFREBAQAAAAAAAAAAAAAAAAAAABL/2gAIAQIBAT8Btb//xAAXEAADAQAAAAAAAAAAAAAAAAAAARAx/9oACAEBAAY/AozL/8QAGBABAQEBAQAAAAAAAAAAAAAAAREAMVH/2gAIAQEAAT8hCZTXOaCHjHGypkXf/9oADAMBAAIAAwAAABCcP//EABcRAQADAAAAAAAAAAAAAAAAAAABYXH/2gAIAQMBAT8Qm7b/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAgEBPxClv//EABsQAQEAAwADAAAAAAAAAAAAAAERACExQVHB/9oACAEBAAE/EJByHvbnhLJwg7jW+/cpMKRriCBQ9XEJkXsDP//Z&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;1&quot;
        title=&quot;&quot;
        src=&quot;/static/60634d6c331353dbcfce388c14c4fff3/5fd6b/1.jpg&quot;
        srcset=&quot;/static/60634d6c331353dbcfce388c14c4fff3/3c01f/1.jpg 293w,
/static/60634d6c331353dbcfce388c14c4fff3/e1991/1.jpg 585w,
/static/60634d6c331353dbcfce388c14c4fff3/5fd6b/1.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.55290102389078%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAECBAX/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/2gAMAwEAAhADEAAAAeVqiMqEN//EABkQAQADAQEAAAAAAAAAAAAAAAEAAhESA//aAAgBAQABBQIcTrGzuG19as7J/8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQMBAT8Bp//EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAgEBPwGxj//EAB4QAAICAQUBAAAAAAAAAAAAAAERAAIhEBMyM0Fh/9oACAEBAAY/AkQ8wKtQ/k5gaCu3h+mddZ//xAAdEAACAQQDAAAAAAAAAAAAAAABEQAhMWHRQVGR/9oACAEBAAE/IfeBHM0uQDh5LCrqAhMNF3zCBG7GFpFk53P/2gAMAwEAAgADAAAAEE8P/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oACAEDAQE/EIa//8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8QqP/EABsQAQACAwEBAAAAAAAAAAAAAAEAESExQVGR/9oACAEBAAE/EDpIbVYN8CBkyhsHi5WPQ99KoCntZ7Nj5LJEDLTPOdgTVIZl/9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;2&quot;
        title=&quot;&quot;
        src=&quot;/static/9fa246331b566932d5cd22c74c0b3344/5fd6b/2.jpg&quot;
        srcset=&quot;/static/9fa246331b566932d5cd22c74c0b3344/3c01f/2.jpg 293w,
/static/9fa246331b566932d5cd22c74c0b3344/e1991/2.jpg 585w,
/static/9fa246331b566932d5cd22c74c0b3344/5fd6b/2.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.55290102389078%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAMEAf/EABUBAQEAAAAAAAAAAAAAAAAAAAMA/9oADAMBAAIQAxAAAAHWJUSWkoN//8QAGRAAAwEBAQAAAAAAAAAAAAAAAQIRABIT/9oACAEBAAEFAkUVsEEO6Poztf/EABYRAQEBAAAAAAAAAAAAAAAAAAABEf/aAAgBAwEBPwGNf//EABgRAAIDAAAAAAAAAAAAAAAAAAACERNR/9oACAECAQE/AXWSptP/xAAZEAADAAMAAAAAAAAAAAAAAAAAASEQIjH/2gAIAQEABj8C2IkypYtOn//EABsQAQADAAMBAAAAAAAAAAAAAAEAESExQWHh/9oACAEBAAE/IXu29Q1izxeRdjPk3kGKrBlz4yf/2gAMAwEAAgADAAAAECD/AP/EABcRAAMBAAAAAAAAAAAAAAAAAAABEVH/2gAIAQMBAT8QZysnD//EABkRAAIDAQAAAAAAAAAAAAAAAAARASHB0f/aAAgBAgEBPxBhQMvfT//EABwQAQEBAAIDAQAAAAAAAAAAAAERACFBMWFx4f/aAAgBAQABPxB8pVvx+4WKbgyvmJdtipgAVOxGI4MQQh7wuECWA3//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;3&quot;
        title=&quot;&quot;
        src=&quot;/static/2850183fcca87792a56cebd452c1890f/5fd6b/3.jpg&quot;
        srcset=&quot;/static/2850183fcca87792a56cebd452c1890f/3c01f/3.jpg 293w,
/static/2850183fcca87792a56cebd452c1890f/e1991/3.jpg 585w,
/static/2850183fcca87792a56cebd452c1890f/5fd6b/3.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.89419795221842%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAIEAQP/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAP/2gAMAwEAAhADEAAAAcmiXNc5Df/EABkQAAIDAQAAAAAAAAAAAAAAAAARAQIDEP/aAAgBAQABBQKN0X1Yxj5//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFREBAQAAAAAAAAAAAAAAAAAAEBH/2gAIAQIBAT8Bh//EABQQAQAAAAAAAAAAAAAAAAAAACD/2gAIAQEABj8CX//EABkQAAMAAwAAAAAAAAAAAAAAAAABESFBYf/aAAgBAQABPyHXU6OseRQ2Kf/aAAwDAQACAAMAAAAQH+//xAAVEQEBAAAAAAAAAAAAAAAAAAAQEf/aAAgBAwEBPxCn/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8QI//EABkQAQEAAwEAAAAAAAAAAAAAAAEAEBExIf/aAAgBAQABPxAg6k9HZ30aZ1K4kSr/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;4&quot;
        title=&quot;&quot;
        src=&quot;/static/44306ba857881c956458f89cd66c52a1/5fd6b/4.jpg&quot;
        srcset=&quot;/static/44306ba857881c956458f89cd66c52a1/3c01f/4.jpg 293w,
/static/44306ba857881c956458f89cd66c52a1/e1991/4.jpg 585w,
/static/44306ba857881c956458f89cd66c52a1/5fd6b/4.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.55290102389078%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABQAEBv/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHC/wAk0JRMn//EABwQAAEEAwEAAAAAAAAAAAAAAAEAAgMTBBESQf/aAAgBAQABBQLI0ZIwauV7G812uX//xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAgBAwEBPwFH/8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQIBAT8BV//EABsQAAIBBQAAAAAAAAAAAAAAAAABAhAhMVFh/9oACAEBAAY/Ako3ZFcroyf/xAAbEAEAAgIDAAAAAAAAAAAAAAABABEhMUFRYf/aAAgBAQABPyG21BkIFrwj7IY0lKGnUb4//9oADAMBAAIAAwAAABCoP//EABYRAAMAAAAAAAAAAAAAAAAAABARIf/aAAgBAwEBPxBQP//EABYRAAMAAAAAAAAAAAAAAAAAABARIf/aAAgBAgEBPxB0f//EABsQAQACAwEBAAAAAAAAAAAAAAEAESExUXHB/9oACAEBAAE/EGHWhF5XXsBkBYWcg39CVHDcXo2i2Jdgins//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;5&quot;
        title=&quot;&quot;
        src=&quot;/static/c122f00743e5f8af70d7b2e2430d2330/5fd6b/5.jpg&quot;
        srcset=&quot;/static/c122f00743e5f8af70d7b2e2430d2330/3c01f/5.jpg 293w,
/static/c122f00743e5f8af70d7b2e2430d2330/e1991/5.jpg 585w,
/static/c122f00743e5f8af70d7b2e2430d2330/5fd6b/5.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.55290102389078%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEAf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHGlaAiF//EABoQAAMBAAMAAAAAAAAAAAAAAAABAgMREiL/2gAIAQEAAQUCjIvOEeRU2Vz1bP/EABURAQEAAAAAAAAAAAAAAAAAAAEQ/9oACAEDAQE/AQJ//8QAFxEBAQEBAAAAAAAAAAAAAAAAAQACEf/aAAgBAgEBPwF23W//xAAZEAACAwEAAAAAAAAAAAAAAAAQEQACIUH/2gAIAQEABj8C0144x//EABkQAQEBAQEBAAAAAAAAAAAAAAEAESExcf/aAAgBAQABPyEueBkHshwzyeA/AmCndl2//9oADAMBAAIAAwAAABDHz//EABYRAQEBAAAAAAAAAAAAAAAAAAEAEf/aAAgBAwEBPxARYX//xAAXEQADAQAAAAAAAAAAAAAAAAAAASFh/9oACAECAQE/EGHDQ//EABsQAQACAgMAAAAAAAAAAAAAAAEAESExQZGx/9oACAEBAAE/EEpptMOHEMO25VBQUQOounAnsvJkmqiG29z/2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;7&quot;
        title=&quot;&quot;
        src=&quot;/static/27ac46f5940c4e29a2111a36c51a9ef3/5fd6b/7.jpg&quot;
        srcset=&quot;/static/27ac46f5940c4e29a2111a36c51a9ef3/3c01f/7.jpg 293w,
/static/27ac46f5940c4e29a2111a36c51a9ef3/e1991/7.jpg 585w,
/static/27ac46f5940c4e29a2111a36c51a9ef3/5fd6b/7.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.55290102389078%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAABAADBf/EABUBAQEAAAAAAAAAAAAAAAAAAAED/9oADAMBAAIQAxAAAAEaz5k3XPmn/8QAGxABAAICAwAAAAAAAAAAAAAAAgEDESEAEiP/2gAIAQEAAQUCe1jxqZJWpsWI7rn/xAAWEQEBAQAAAAAAAAAAAAAAAAACEBH/2gAIAQMBAT8BK2f/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAaEAACAgMAAAAAAAAAAAAAAAAAAQIRITFR/9oACAEBAAY/AmyipSQmY6bP/8QAGxAAAgIDAQAAAAAAAAAAAAAAAAERUSExYUH/2gAIAQEAAT8hVTDTqxa/j22ZOE2dEMcsJkdJ/9oADAMBAAIAAwAAABDjL//EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAwEBPxB8E//EABYRAQEBAAAAAAAAAAAAAAAAAAEQEf/aAAgBAgEBPxAdn//EAB4QAQACAgEFAAAAAAAAAAAAAAEAESFRcUGBkcHx/9oACAEBAAE/EAA8qnHY+oAEDmG8+ZRpKerEdSCC6Zs2IaSvsRwV8z//2Q==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;8&quot;
        title=&quot;&quot;
        src=&quot;/static/0f5d80297dbe198fa2636b022cd05b63/5fd6b/8.jpg&quot;
        srcset=&quot;/static/0f5d80297dbe198fa2636b022cd05b63/3c01f/8.jpg 293w,
/static/0f5d80297dbe198fa2636b022cd05b63/e1991/8.jpg 585w,
/static/0f5d80297dbe198fa2636b022cd05b63/5fd6b/8.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 800px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 66.55290102389078%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAANABQDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQBAgUG/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAXJ5+w+ZxX//xAAcEAACAgIDAAAAAAAAAAAAAAABAgADBBIREyH/2gAIAQEAAQUC7Ko2RShd1Z9jAfNuJ//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8BP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8BP//EABoQAAEFAQAAAAAAAAAAAAAAAAABAhARITH/2gAIAQEABj8CdwboqxdR/8QAGhABAAMBAQEAAAAAAAAAAAAAAQARITFxgf/aAAgBAQABPyERs6mJfhDNxclhCRRfI2JV+z//2gAMAwEAAgADAAAAECcP/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAEDAQE/EEyf/8QAFxEBAAMAAAAAAAAAAAAAAAAAAAERIf/aAAgBAgEBPxCNU//EABsQAQEBAQEAAwAAAAAAAAAAAAERACFBMVFh/9oACAEBAAE/EGQyYM/PNTpoivznu5X0UfJDNNY5lfeJcwgFt6d//9k=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;9&quot;
        title=&quot;&quot;
        src=&quot;/static/3f62e29aec13accf416473379e6bc265/5fd6b/9.jpg&quot;
        srcset=&quot;/static/3f62e29aec13accf416473379e6bc265/3c01f/9.jpg 293w,
/static/3f62e29aec13accf416473379e6bc265/e1991/9.jpg 585w,
/static/3f62e29aec13accf416473379e6bc265/5fd6b/9.jpg 800w&quot;
        sizes=&quot;(max-width: 800px) 100vw, 800px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Why Shoot Prime?]]></title><description><![CDATA[Shooting on a prime lens offers some technical benefits but I believe the creative benefits to be most important. Put simply I feel that…]]></description><link>https://blog.stephentvedt.com/posts/2015/why-shoot-prime/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2015/why-shoot-prime/</guid><pubDate>Tue, 22 Sep 2015 18:42:00 GMT</pubDate><content:encoded>&lt;p&gt;Shooting on a prime lens offers some technical benefits but I believe the creative benefits to be most important. Put simply I feel that restrictions foster creativity. When I don’t know what to go out and photograph I try to give myself a particular assignment. Such as, capture bicycles or interesting plays of light. Using a prime lens is just as much of a limitation but opposed to subject matter it is a technical limitation. So, rather than changing what is being shot, a prime lens changes how you shoot. To be explicit, a prime lens is a fixed focal length (I shoot on a 40mm prime). As such, going out with a prime is also a creative limitation and forces you to think about the characteristics of that focal length.&lt;/p&gt;
&lt;p&gt;A prime lens makes you work for the shot. Without a zoom you are forced to be conscious of your focal length. If a moment presents itself and you are not in the correct position to frame the shot as you wish, you better get moving before the moment is lost. I find when going back to a zoom lens I am more aware of what focal length I want to shoot a particular subject at. Different focal lengths have huge variances in the aesthetic to an image: foreground-background aspect, distortion, and aperture limitations.&lt;/p&gt;
&lt;p&gt;From a technical standpoint, primes can be a little easier on the wallet for a good piece of glass. They are generally cheaper because a zoom requires many moving elements so primes are a simpler build. Primes generally boast faster speeds for better low light performance and sharper images. Size and weight is a factor as well and again simplicity is king here allowing a prime to be smaller and lighter than even short zooms. Lastly, the wide-open apertures in addition to letting in a ton of light offer very good quality bokeh.&lt;/p&gt;
&lt;p&gt;Lastly, my 40mm prime, know as the pancake lens due to its tiny size, is my favorite lens for street photography. It keeps a very low profile and is far less intimidating than someone walking around with a huge lens. Lens selection should ultimately be catered to a person’s style of shooting and what works for them but I recommend each photographer have at least one prime lens in their collection. Whether it be for a fast go-to lens in low light or as a lightweight walk-around lens.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Cloud Backup Trials and Tribulations]]></title><description><![CDATA[As all of our creative work lives on a computer which can fail we need some peace of mind. One way to do that is to have multiple copies of…]]></description><link>https://blog.stephentvedt.com/posts/2015/cloud-backups/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2015/cloud-backups/</guid><pubDate>Sun, 06 Sep 2015 10:30:00 GMT</pubDate><content:encoded>&lt;p&gt;As all of our creative work lives on a computer which can fail we need some peace of mind. One way to do that is to have multiple copies of everything. When a catalog of images and video grows that can be difficult to maintain though. Cloud storage is a very inexpensive solution now that it has been around for a while. I tend to keep my current year’s photography on two physical devices. My computer where I import all my photos and then I back that up to an external hard drive. This however means geographically this two pieces of hardware are always next to each other. So for added peace of mind and redundancy I decided to search for an off-site back-up solution. I tried out the popular cloud services like Google Drive and Dropbox but those quite simple could not keep up. Here is why they failed in my opinion and why I ended up choosing Backblaze as my go to solution.&lt;/p&gt;
&lt;h2&gt;Google Drive&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://drive.google.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Google Drive&lt;/a&gt; offers a $10 month plan for 1 Terabyte of storage. The pitfall is no way to point to folders outside of the Google Drive folder. First I tried the arduous way, uploading through the browser to google drive. This was painful though and for any large amount of files I do not recommend at all. If any files failed it would just tell me the number of files that failed and the first time it might allow me to retry. In my experience this failed and left no way of knowing which files failed to upload.&lt;/p&gt;
&lt;p&gt;So, what I did was disconnect my google drive account on the computer and then reconnected it and pointed my google drive folder to live on the external drive my photography library is backed up on. I then copied, not moved, my whole backup folder to the google drive folder to make sure if any problems happened with the sync I would still have my backup untouched. It was very good that I did this because I hadn’t removed the files from my first failed attempt. In hindsight I should have just deleted all the old files and started clean. I ended up removing the first files I uploaded through the browser after the fact and uploading everything via the Google Drive App. The sync time is brutally slow and setup is not worth the extra work.&lt;/p&gt;
&lt;h2&gt;DropBox&lt;/h2&gt;
&lt;p&gt;I gave &lt;a href=&quot;http://dropbox.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;DropBox&lt;/a&gt; a try and I really wanted it to work but it failed. It is priced the same as Google Drive but for the big data it has the same drawbacks as well. I needed to find a third-party solution to handle adding external hard drives to my dropbox. The biggest issue I had with this service was that I needed to setup selective sync on all my devices as to not download my entire backup to any new device I add. That or set my backup drive as the place where my dropbox folder lives.&lt;/p&gt;
&lt;h2&gt;Flickr&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://flickr.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Flickr&lt;/a&gt; is definitely more of a social network than a storage solution for serious photographers. However with One Terabyte of storage and auto upload from cell phones this may prove to be a nice alternative which has a great social network behind it. The biggest drawback is that Flickr doesn’t support RAW files. So backing up working files is a no-go here. That immediately takes it off the table for me as a backup solution. I didn’t easily find any option to upgrade the amount of storage offered either. Flickr out.&lt;/p&gt;
&lt;h2&gt;Backblaze&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.backblaze.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Backblaze&lt;/a&gt; is the service I ended up choosing and using for the past year. This service is great and super easy to setup and use. For $50/year you get unlimited everything. Upload as much as you want up to any file size you want and from any external or internal drives you want. This is great because I can use it as a backup solution for all of my video editing and coding as well. It covers it everything! Restoration is free as well or for very large restorations, drives up to 4 TBs can be FedEx’ed to you. Other things worth noting is that you can selective choose what you want recovered down to a single file. I have not had to do any major restore yet but I may try to get a few files just to see how easy that is. Backing up run with an app for Mac or Windows and runs in the background.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Photography 101 Learning Session]]></title><description><![CDATA[Every Friday at Spies & Assassins someone leads a learning session we call Spies Junction. This can be on any wide array of topics from…]]></description><link>https://blog.stephentvedt.com/posts/2015/photography-101/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2015/photography-101/</guid><pubDate>Mon, 24 Aug 2015 11:13:00 GMT</pubDate><content:encoded>&lt;p&gt;Every Friday at &lt;a href=&quot;http://spies.ws/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Spies &amp;#x26; Assassins&lt;/a&gt; someone leads a learning session we call Spies Junction. This can be on any wide array of topics from sketching storyboards to lock picking. I mean we have to live up to our name from time to time! My contribution so far has been a course on photography.&lt;/p&gt;
&lt;p&gt;I led a primer on a full photography workflow, Photography 101. Just enough to get someone started setting up the camera and exposing images themselves. Then once they have their image the ability to edit and share the image. How I went about doing live demos is explained further below.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://instagram.com/p/4HlCAjjP5F/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;setup&lt;/a&gt; for live demos was simple. A tripod and live-view of my camera output through HDMI to a flatscreen. This paired with Exposure Simulation on the live view and full view of how the light meter was working seemed to be a easy way to understand in real-time how the change of camera settings affects the image. Shutter speed changes can be seen immediately in the exposure simulation of the live-view. For aperture when using the DoF Preview button displays the actual DoF in the live-view as well.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https//stephentvedt.com/photography-101/#/1&quot;&gt;full presentation&lt;/a&gt; is up and hosted on my domain for those who may be curious. I had a great time presenting and sharing my knowledge with everyone. Even if I helped just one person better understand how to think about changing their images then I am happy of the outcome. I will be following up this class with more classes which will dive into more topics of photography. Next up will be composition and creative effects as the 101 was heavily technical.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Pingdom Free Monitoring]]></title><description><![CDATA[This is just a super quick note that you can add a very basic level of monitoring for you website through a free pingdom account. This…]]></description><link>https://blog.stephentvedt.com/posts/2015/pingdom/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2015/pingdom/</guid><pubDate>Fri, 23 Jan 2015 09:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is just a super quick note that you can add a very basic level of monitoring for you website through a &lt;a href=&quot;https://www.pingdom.com/free/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;free pingdom account&lt;/a&gt;. This basically can track two things. Server response whether your server is running and returning content and Real User Monitoring (RUM) which will alert you if page load times start to slow down.&lt;/p&gt;
&lt;p&gt;As posted before, I am on a Digital Ocean Ubuntu Linux stack which is an unmanaged hosting solution. So this is a simple gut check to make sure my site is up and running. Pingdom will shoot an email off if my site is down so I can now sooner rather than later that the box needs kicking (a power cycle usually does it). Before I would only get a notification again via email from Google Analytics saying that my site was inaccessible but this would be a full day after my site has been down. Pingdom will do checks at a rate of one’s choosing and by default runs checks every five minutes.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[First Try at a Chrome Extension (working with Plug.dj)]]></title><description><![CDATA[Some Background So I’ve been discovering a lot of new music using Plug.dj . It is a site that is very similar to turntable.fm. For those not…]]></description><link>https://blog.stephentvedt.com/posts/2014/20140902-first-chrome-extension/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2014/20140902-first-chrome-extension/</guid><pubDate>Wed, 03 Sep 2014 13:45:00 GMT</pubDate><content:encoded>&lt;h2&gt;Some Background&lt;/h2&gt;
&lt;p&gt;So I’ve been discovering a lot of new music using &lt;a href=&quot;http://plug.dj/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Plug.dj&lt;/a&gt; . It is a site that is very similar to turntable.fm. For those not familiar with either of these sites turntable no longer exists and Plug.dj has stepped in to takes it’s place. The basic premise of the site is that users have an avatar and play music in a booth style to room with a particular genre/flavor of music. People in the room can then vote whether they like the track being played or not. Built into the room is a chat for users to talk to one another. As I have music playing in the background while I work and even have a bunch of coworkers that use it as well and we have our own room to share music throughout the day. As we had our own room I wanted to customize it with a custom background and the easiest way of doing some seemed to be a Chrome Extension. The background was super easy to accomplish as it only needed a tiny bit of CSS. I had some improvements I wanted to add such as sending a desktop notification with the song information every time a new song comes on so I don’t have to go to the room to see it. Also I was missing a lot of chats when people @mentioned me because all that happens is a small sound. So this extension for just my coworker and I to have a cool background in our room evolved to Notification Handler for Plug.dj called simply ‘ &lt;a href=&quot;https://chrome.google.com/webstore/detail/plug-notify/ofoajhhdimlfpfhdcngpfakkippmdkel&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Plug Notify&lt;/a&gt; ‘.&lt;/p&gt;
&lt;h2&gt;The Extension&lt;/h2&gt;
&lt;p&gt;I had never built a Chrome extension before and assumed swapping a background-image on a single page would be a good start to get a barebones extension to test the waters out. So to get the basic or Extension development I checked out the documentation from google and got a &lt;a href=&quot;https://developer.chrome.com/extensions/getstarted&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;local extension set up&lt;/a&gt; . The main things are getting developer mode on and setting up a &lt;a href=&quot;https://developer.chrome.com/extensions/manifest&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;manifest file&lt;/a&gt; to pull in the resources you will need. This will include the CSS, images and JavaScript. One thing to caveat is that I am manipulating the Plug.dj page with my JavaScript so I will only include a JavaScript file in my manifest to inject another JavaScript file to the page.
So I wanted to get my JavaScript to run on the page as usual. This is the only other real set-up step that is not typical of chrome extensions. If you list a JavaScript file via the extensions resources it’s scope will be to the Extension. So in my extension I injected a &lt;a href=&quot;https://github.com/stvedt/Plug-Notify/blob/cbc625a3a4096cf269f20c683fcb6ad3a7a8dc0f/inject.js#L1-L6&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;script to the page&lt;/a&gt; . Now the script that is being injected has the same scope as the pages like on any web application.&lt;/p&gt;
&lt;h2&gt;The Guts of It&lt;/h2&gt;
&lt;p&gt;The only other obstacle I had to overcome was the fact that Plug.dj loads each room with AJAX and thus their API is loading after my injected script. &lt;a href=&quot;https://github.com/stvedt/Plug-Notify/blob/cbc625a3a4096cf269f20c683fcb6ad3a7a8dc0f/main.js#L111-L128&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;The logic&lt;/a&gt; is simple and check with a setInterval whether the API is defined as an object or not.
The rest of the development for the project went very smoothly though using the Plug.dj API for event listeners when to fire off notifications. I only used two events ‘ADVANCE’ and ‘CHAT’. These fire of the notification with the song information when a new songs starts playing and checks each line of chat for the users mention respectively.
The real fun part of this was playing with the Web Notifications API which is still in a &lt;a href=&quot;https://dvcs.w3.org/hg/notifications/raw-file/tip/Overview.html&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Working Draft&lt;/a&gt; state. These worked with relatively no problem. Also as this project is in a Chrome Extension it was a safe assumption that anyone installing it has current enough version of chrome which &lt;a href=&quot;http://caniuse.com/#feat=notifications&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;supports this&lt;/a&gt; . The &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Notification/Using_Web_Notifications&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Mozilla Developer Network&lt;/a&gt; has some documentation on this API which as of writing this seems to be accurate. I plan to write another blog post this week which will dive more in depth into this new API and a link will be posted when that is complete here.
Another feature specific to Chrome is the highlighting of a pinned tab. This is triggered whenever the title attribute of a page is changed and can be seen if one pins a GMail or Facebook tab and gets a chat message. This is simple achieved by updating the title it will flash each time it’s changed so to have it continually flash a &lt;a href=&quot;https://github.com/stvedt/Plug-Notify/blob/cbc625a3a4096cf269f20c683fcb6ad3a7a8dc0f/main.js#L51-L61&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;setInterval to change the title &lt;/a&gt; back and forth is used. If the tab isn’t pinned the title is changing so that is a still a good visual indicator of the notification.&lt;/p&gt;
&lt;h2&gt;What I’d Improve&lt;/h2&gt;
&lt;p&gt;There are a few feature requests I’ve had from users which are listed as I receive them in the readme of the repo. One thing I did attempt and failed to accomplish was containing this in a self-invoking anonymous function as one would do with any plug-in. This failed because I am using jQuery in my code and I can’t pass it through as &lt;a href=&quot;http://learn.jquery.com/plugins/basic-plugin-creation/#putting-it-together&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;one would usually&lt;/a&gt; because of a load order issue being created with Plug.dj’s use of Require.js. This I believe to be loading in all the needed libraries and the inject script I am dumping into the page is injected before jQuery can be defined. Not a problem when used in my main.js file because all the call of jQuery are happing after library is available but since the function is defined and invoked immediately passing through jQuery (ideally) it does not yet exist to pass through as a parameter.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Review of "Getting Started with Grunt" eBook]]></title><description><![CDATA[So I recently read Getting Started with Grunt: The JavaScript Task Runner which I think lives up to it’s title very well.  If you have any…]]></description><link>https://blog.stephentvedt.com/posts/2014/grunt-ebook-review/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2014/grunt-ebook-review/</guid><pubDate>Mon, 05 May 2014 10:35:00 GMT</pubDate><content:encoded>&lt;p&gt;So I recently read Getting Started with Grunt: The JavaScript Task Runner which I think lives up to it’s title very well.  If you have any experience with Grunt much of the first few chapters will be super basic for you.  The order of how information was presented I felt could have been better because through many of the chapters the same items seemed to keep showing up such as using grunt for minification.  This repetition is very useful though when getting started with something new as to really drive the point home and reads the same as pretty much every other tech book written, ever.&lt;/p&gt;
&lt;p&gt;The really awesome takeaways from this book are a much and section I would highlight. Writing customs tasks and multitasks, basics of node packages/plugins. Improving workflow and Adding arguments to commands via bash which is very useful for setting up different environments. This book also has a big listing of all the plugins you’ll want to use for all of the standard thing such as minification, local server, livereload, watch, etc.  If you are new to any of those things they will be covered in depth as they are so vital to a front-end workflow.&lt;/p&gt;
&lt;p&gt;The advanced section covers publishing one’s own grunt plugin and introduces how to set up continuous integration and unit testing. These just lightly skim the surface to show there is so much more that can be done with grunt than what is covered in this primer. However the section on publishing a grunt plugin via NPM is fully covered.&lt;/p&gt;
&lt;p&gt;Overall I would say this is a great book for someone who has never used grunt before and even for someone who has a good working knowledge of grunt it’s very skim able for some new ways of approaching problems or some ways to customize you commands further by adding command line variables and building multitasks to further improve your grunt workflow.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Using Custom Icon Fonts - An IcoMoon Quickstart]]></title><description><![CDATA[I highly recommend using and icon font for as many assets as possible.  They are handled in and have all the same benefits as Webfonts. They…]]></description><link>https://blog.stephentvedt.com/posts/2014/icomoon/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2014/icomoon/</guid><pubDate>Thu, 03 Apr 2014 10:11:00 GMT</pubDate><content:encoded>&lt;p&gt;I highly recommend using and icon font for as many assets as possible.  They are handled in and have all the same benefits as Webfonts. They are cached, stylized by css and look gorgeous on Retina, to touch on the major benefits.  So here is a quick intro to how get  custom icons/assets into a font with IcoMoon.  I really like the tools IcoMoon offers for editing the icons and managing a custom font.  However, I did find there UI/UX to be a bit confusing at first so I thought I’d right up this quickstart guide.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to: &lt;a href=&quot;http://icomoon.io/app&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://icomoon.io/app&lt;/a&gt; (No Account Required)
Groups of icons are called sets. IcoMoon has some free sets which will be visible as seen below:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 961px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 64.84641638225256%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAADL0lEQVR42qWRS2wTRxjHRxRxQJWSQ9oIbY71ITFqsSBCicIpOVScbKVqqDhAKwUQIKFW5EDVE0RqGkU9AM6jLayAikciLm1FOJSEky3jbJz4sfE+Z9eW7CZxdtde23FiZr5qFkjFuSP9Nd9rfjPfN+jAoeP7B74a6T95/vrg+Ws3g9/d+DU08uPd0MjYb6HPh0dDgS++Dx0b+iF07Mu3Gnqj7v9iwb6zNwZDF0f7P2j17UdtnK/9zr3Z3Nyzv2E5lQIFa5BVFEhJBvzxIgZPnkdh9nkUnsy/2yN7mp2PwqP5KPz++Bk8ePg01/6Jvx0dPRLgVFXCBVyAxbnI68W5KFleTJFG/iXZzGeJtVUijbpLmo062dmuEdrcIUB2CdAm2d2uEQD6GnYbkM2k8UftH3egzz49wkmyhDeKm5COZUkmLlNdNGltfY2uF3K0+M8GLW1tUcu26ZZlUdt2qOOUqVMuU8uyablSIfXtBphmDnd2dnKoq6uLk2UZ27YFG6V1UnYdcMo2bJQcWq9v06rrUtetQqVS8eS67p7N5DgOKZVKoCgKDgQCHOrt7eUSiQTGGIOmaQRjgyXBNA2QJAlM0wRVVSGXy3m2pmmQz+eB1bOYLMukWq0yHx/2H+bQwMAAF4lEcCaTgXQ6TbLZLKyurnqwWCzGDkCKfZaieDCW13V9z19ZWSG1Wg0Mw8B+v59DJ/r6uHg8jlkBA7JdFEXvVYIgwDufiV2ytLTkgZLJpJeTJImwMewBe3p6OEEQvJZFUSSqqlJZlqmu6zSZTFJFUakoilRWFMpyiUSCaprmxTDGzH4fGAwGuYWFBT0ej7N2mmtra0QQBCJLEom/ihFVkUlieZkoikxMrJNUcpWNhbDL2fwikUiTtYwx1j1gd3d3h2EYBTbYN6qBW6mA7ZThNj8HP//yCPjHf3r2T5MP4OlfL2Bnp+H9NgNZlgVsFYvFgs/n60Ctra1tExMT4zMzM/fD4fDdyclJfnp6ir956xb/zYUr/OmvL/DDl77lzwxf5k+dOcdfuXqNn5me5sPhMM9qp6am2Jn7Y2Nj4y0tLW0IIbQPIXQQIfTh/xRj7PsXFyfQIvRDFrUAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 1&quot;
        title=&quot;&quot;
        src=&quot;/static/791b5844d98b96edc4712950057a86a0/d17fd/icomoon-0.png&quot;
        srcset=&quot;/static/791b5844d98b96edc4712950057a86a0/8890b/icomoon-0.png 293w,
/static/791b5844d98b96edc4712950057a86a0/1f316/icomoon-0.png 585w,
/static/791b5844d98b96edc4712950057a86a0/d17fd/icomoon-0.png 961w&quot;
        sizes=&quot;(max-width: 961px) 100vw, 961px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;For a clean slate click on the left hamburger nav and select ‘New Project’&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 342px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 105.11945392491468%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAVCAIAAADJt1n/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC7UlEQVR42oWTTW/cRByH9yuCBDcuwInvAFIuXEolqlYIaBEnDlxS1ObQNyIhLkmrtgneJJvdHduzHnvWa3s8L54Xz4xt5KQpgYbmOYw0lh7N//fzzGQ+n0dRiDEGALx69fpoenR8fFKVBGMcgggswziGSYLwSJalSb7OEEJVVRljJocHB0EQRFF0dDQNpn9NT4LpccAbtinwfDk/mZ0swwVcxWEIFuEqwWWCssVisdkUoyyl5JxTSo1WOSrmByEI4tnLxfw1AAEEAVweRsk81droEshkT2yWTSMprauynBitnz158nxvfxiGnR92v/rg1tbHd258eu/GZ/e+/uT7bz7/aeuj299+8bN3w/Dyy/7Zh83e1vaDRy+e75+enk5awcGL/eTwYBj84R8nv97c2b79+OGPv+/c3f3tu6cP7+5u33n89Jc/ve+H+P4Q3FTLB9Pj0ygESZJMhpF+eC9931trte9kO0jtbNtqrZVSk042rshbGNoEGhiZCBiwcJx777113rnOOdfatm2Vko3gnFFCSF3XlNLJ4GyvVC94z2mvlC83XZEPWg/e99Z2RvdGO0YNo1rK5qxddsGEcZ4glOF1kqZxHGcYoyyDEKIkcdb2Xdd3nW/HQZVSTfNvuW3bpmmM1krKmhAz/hPVCNEI8Y/sfWut0vq/cl3XcRxXVbWCsCrLOIoghFmaZmm6xnhs61weM78ja62FEMYYpZQeOxkZt1IqKZ21zlrv3NUyYwxCmKZpikayNM3zPEUIZxlYLiGEURhqpay1V2QWQhBCvPdGv8GeRe28H8e9WK8+Oc/z2WxWVRVCqCiK88Cd9+PNOGvrfZmdcwghIYRWY8n9Jed6uW3b1Wq1Xq8xxoSQruveXsnr5bIsAQDi/BOldV0XRVEWhZLy7eT/KxdFMZvNGGUYZ3mebzabLMuyNG2EuF4mhDDGakIopYxSzpjgvGmEOBtGcC4EH3eCC84vm6NcjZTkgvp8rd+8m8uwd/gbvH2HVWST0H4AAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 2&quot;
        title=&quot;&quot;
        src=&quot;/static/49d628aa5ff7518c532699cd9fd3932b/748c1/icomoon-1-new-project.png&quot;
        srcset=&quot;/static/49d628aa5ff7518c532699cd9fd3932b/8890b/icomoon-1-new-project.png 293w,
/static/49d628aa5ff7518c532699cd9fd3932b/748c1/icomoon-1-new-project.png 342w&quot;
        sizes=&quot;(max-width: 342px) 100vw, 342px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;If you expect to have multiple project you’ll be using icon fonts for I recommend naming the projects in the icomoon app. From the hamburger nav select ‘Manage Projects’ and ‘Untitled Project 2’ is the clean slate we just created. When renamed click on ‘Load &gt;’  to view.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 276px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 107.60869565217392%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAWCAIAAABPIytRAAAACXBIWXMAAAsTAAALEwEAmpwYAAADAUlEQVR42pWTW2scNxTH91v2qSTpQ1LTh9KnXj5BHYrtQl9iN3VDn1zIUyChLHQxxKbeBJp0u/dob7MznstqNKPRaHRXmZW93rqhpX8Og+bAXzr6naOGklIppbWWUlprSVZGixUMULKEsVdHsoSbNYozrY1RQuGFyqcNQshFu/3y7AymqbX26be/7N472r17uHf/h4Od4/0Hx3vrONj5cffu4f6Dx6QwFnXErx/K888aZVG0ms0Xz56lcWKtPfnm+cOPjr6+82jv4+Pvv/r56MuTg0+efPfpT4dfnOzvHD+89whjbdEb0/rAvv68IXDOvZlYztmqNgfTqHM+6L96170Yuei1x7322K3BHzMljRFERxc6PGvY/yVjhBAV45QbUun6zkkcr5JksVikaep5yzCMfN9PkpU2RmutnLRWNVQlhGSsorQkpGhUjOW41mw+j6MIIeT7PpiAJIqMUkYpLaUWXFeV5kwWWBQFqypKKSGkYVhlCmwraim1QljBTVUanBvONM41wVoKLYTm7MqcIVZgWpa1Wfme6L6V3oy+Omd/vqW/vWSjPgOj6s3r6vc273ckKbS19RWMUUoJKRnn1yfXFMwNECmsuVpupK+lpBRCMMauzL7vdzqdKAz7/f50OvU8b9DvvxuPh4MBAGCxWAyHQ8aY2+K2mXNOCFFKlWu5X7olQojW2hVWl71tjqIoCAKMcRzHZVlCCLMsc988z7MsW61WEMI4jiGEnLG6zxvaGOPJZIIQGo1Gl5eXS68WhHA+nwdBEIYhAGB2rYpSKeWN2VXrALm3teH0d2rGOtrbZXe73VarFUVRt9v1PA8AMBgMer0eQshaezNhTreAbV7yph9SSs65S2736T20IYSnp6f1SALg+34QBI7tP5v8HrNSCiFUVVUYhnmel2W5NTP/dXIcxwAASinGmDFWrJVlWZqmLvNvE9br9ZrNJkJoOBwuPW8ymcxms+l0Oh6PXQsdjqsr3KIthHAN2HCS6+3lOiOE4GuJtTjnzlmWZVEUfwHpmMPRhEppYQAAAABJRU5ErkJggg==&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 3 a&quot;
        title=&quot;&quot;
        src=&quot;/static/5cad1daa0dfb832d572dda5d31376aea/d94f9/icomoon-3-manage-projects.png&quot;
        srcset=&quot;/static/5cad1daa0dfb832d572dda5d31376aea/d94f9/icomoon-3-manage-projects.png 276w&quot;
        sizes=&quot;(max-width: 276px) 100vw, 276px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;
&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 429px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 63.82252559726962%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAACjUlEQVR42n1SS08UQRCeP+jBgxevJnoxGhIuXrgQI0ri44BIFCEKAWOIBFAkGBJAIbthd6MBwsIu89jpXWZmp6d7emZhd0iVqeYRHtFJvvmmpru+rvqqjXv3n7YfPnqCt3v64W7vCPS++oCvx7/B0OQCvJmYx3eff+DQ5AIBPs4sY//IHHT3j8OdnmG42TWAt7oH4caDl9D1+C12972PjMHhqc7oxBd8MTYF04u/oJhfw/LONpiVPahZVQy8BjDHgrprQ0sJdGouLP3Mw9j0Ej4bnsHno7PQN/AJZua+4/ziUmwUioXMsh2s7lWgVChgLpcH07KQ8xC3tndgc3MLdsq7aFoWVCpVqNVcME0TGGOQtQ8xEBzZ11nYXVnB5bU1ZdTr9cz3ffR9H6IowjAMMYoikFLqmHOOQggCcM6BmNYJQkq9l3Ipz2VMGYyxbHV1FQ8PD8HzPGSMoVKKNiLFUkpsNBokhv95gF5HR0fKCIIgM00T0zQFEiKBNE014jjGVqulK6T4+PgYsyy7hk6nA7SmlFKGECJrt9uYJAlQEgkkSaLFYhVrpoOIhRT6wEuINetifN9Xhuu6WbVaRTLasixidF1Xe0kJp/5pXBQKgkAz+U/ekiW2bZ8MxXEcdJwakJBt21iv17F5Mpx/ggTPOAxDLeg4jjJ4GGatVooqltBKU0yUwiRRmKgYpRQY6zbFpUrPqr0QA1nieZ4y/mxuZ+v5Am6UfsN6fgNzhRLmNkpI/w6aHAMuNKIrgny/ikoILJfL+hbQ7SgWi8pwD4LMajTRPmjCPvORvs16gPvMw5rPseZHyIII+dW2Ty0hr888ZHQPA9/PZBShkhJExHWLSkrdsorlOa5N9zLOp/wXZJKwz3UsKaoAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 3 b&quot;
        title=&quot;&quot;
        src=&quot;/static/71b698e5c7bba27c1c6c8a93767fa3f4/7cfe8/icomoon-2-rename-load.png&quot;
        srcset=&quot;/static/71b698e5c7bba27c1c6c8a93767fa3f4/8890b/icomoon-2-rename-load.png 293w,
/static/71b698e5c7bba27c1c6c8a93767fa3f4/7cfe8/icomoon-2-rename-load.png 429w&quot;
        sizes=&quot;(max-width: 429px) 100vw, 429px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;Alright now to import icons simple click on the purple button ‘Import Icons’ and import any svg icons you are provided. This will create an ‘Untitled Set’ of icons. You can click on the set hamburger nav and select ‘Metadata’ if you wish to change this. (If an icon doesn’t look right check to make sure no strokes exist in the SVG as IcoMoon will ignore them)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 958px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.52901023890784%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAADRUlEQVR42qWTX4gbRRzHh/bAl9Krek1PRPrQezm4h3sU++aLYEt9UcTitlQoCKegvogotSCKIrTHPYn2LiaRZqm9aj0Er3I95Lw/TbqSTXYnm90ke8mGpttkd7L5t7lkZn6ye0V9d+DLd37MzGe+M8Mg9MTxgy8JH5165Z3PL3zw2bfCx1/HhEtXfxA+uRoTzsx9KTx/9pJw8s1P/6PLwknhcth/4XH94sUvLrzx/lenEEIH0MEjzzy9FL9R+vHXVVC0PBR3y2CUS5AvVmF14y+4vX4fflmXHvt9uH03UDr0lXUJbq2l4eatO3A9ebOMEDqCjj/73LFCAeft6kNYS26O1pJ/stTvChvV7jJ7N8ccx2F+12PDQY8N+h3GRgMGbMhGe33W9QgD4COge6BhVUMITaCjRyMRnMdaw3YASzrFks5L+SrvNw3+qG7xh3aDN5sOdwnhjutyQlq81fK46xLeaDS5127Tnj8ARcX7wPHxwxGMsUZaBBrOI+aQJictl7e7PvT6Pu92O9Dtdv9Rp9OBdrsdelAT12Ud1wVVzhRC4IkTUxFJkjTTNKFYLLFyqQyKooJpliGblaFUKgHGOFQ+n4disQiWZYHjOEAphQFxGW97UCxo+8DZ2dnI5uampigK6LrOdF2HdDoNhUIhdE3TQJZlyGazkMvlQg82aTQaMBqNwLZt5nke1Gq1feDU1FQklUppwaR0Os2CxdVqFYLEkiSFqQIPgUoOtre3w5QBZDAYACGE+b7/L3B6ejqys7OjGYYBmUyGYYx5pVIJlZFlrusGz2ZzXFVVHozJssxN0+SEkFD1ep02m80gwD5wZmYmsrW1hVVVBVVVh4Zh0I2NDaqqKk3d26Z2/QGt7JapUdDog5pFa1aFlk2T2rZN/b4fwIa9Xg8qlQoOgRMTE8csy6oMh0MIogfH6Pd74LU7cP2nVVgUV+DGyhokln+DbxI/w50/7gELHmNvL3yU4B6DZtt2NQSOjY09tbCwcCWRSCxHo9FkNPq9GI/Hxe+uXRPPvjUnnn7tvHju4rvi6+ffFl9+9Zw4996HYiIeF5eWlkItLi4mY7HY8vz8/BWE0JMo/H8IHUIIjSOEDv8PHZqcnDzwNyA80A9CslbjAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 4&quot;
        title=&quot;&quot;
        src=&quot;/static/372e2094787c0818bd9d4c6dd4b3bc4b/72988/icomoon-4-meta.png&quot;
        srcset=&quot;/static/372e2094787c0818bd9d4c6dd4b3bc4b/8890b/icomoon-4-meta.png 293w,
/static/372e2094787c0818bd9d4c6dd4b3bc4b/1f316/icomoon-4-meta.png 585w,
/static/372e2094787c0818bd9d4c6dd4b3bc4b/72988/icomoon-4-meta.png 958w&quot;
        sizes=&quot;(max-width: 958px) 100vw, 958px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;Select the icons you wish to appear in the font. (Selected will be highlighted in yellow. Clicking and dragging works to select multiples)Then click on the ‘Font &gt;’ button to continue.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 958px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.52901023890784%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAADTUlEQVR42p2T3WsjZRTGXyxF0FLbpZtWVuv9/gWC3nkhuiCCIqw2KwVFVgVR8EJEd2FRFGGlt640Jix2dD/EFhWrbS+qonUTkyaZmTSZyeRzZjrzzke+m5n3fSSJF3vtgQfOczjP7+LAIeTe5akno++de/aNj1bfufJF9P3P4tFLn1+PfnA1Hn3m9U+ij774YfSxlUt36XL08ZXLk/6liX/i1Y9Xz7/96TlCyD1kau7BhfXEt8qNH35GTpagaCpKqgKpVMX2fgqbe3ewtZfE5u6dcf/97kQjP5p/t/M3bt7extcbN1VCyBx55KGHFwsFUTKrBnY2fg92hN/YwS95FjR22XElyxxKWb/js+Ggy056bcaCAQMbsuCkxzq+ywAeIBxCFvMyIWSBnF44HRElSbZMCilVDMXkEVekKu/ZRW4ZdW6YFrepw13X447jctfzuef73HE9btmUt1rtsNcfIJ8XJ8DZufmImM/JtmXCsg1mU5Nbls6p6/Nup83bLR/tlveffPieA89zx973XFD7mFFKkU6nC2PgfGQ5UpTScovWQXWVuWYFDe0IrqGiXpZAdQV6tYhmRUZTk+DbdfhWBVVVRtuuwrUarNP2kM3mJsDF5bORwuGfstOQ0TKLrG0pqBbTcBoSGkoGTkOEWcnDrORglA9BGzJ8o4BKMYOeraBDa6zX8ZDN5SfA++bPRBQpJfe9BhTxgDXLWYQ9ii7V0NREWDURNSULXctD13JQ5SRcvYAWbcBpyjjKJ1m/60OU5Anw1JmzkULmD7llFFAtHDBTy/ATr8a7Vokb5TSn9RzX1Qw3tUNuaBmuq2nu6xK3aiL3dZFXj1Jhv+NDLWt33VD8R/SPK3D00rDr1sOjfCq06lJYK2VDDI7DsGeFbVsLec8MEbbCDtXCulYIrZoUStnksN/xUFJUaQy8f2Z20TT0CkbFAwAMnAU4GXRx+6c9XL/1Iza393Fj61fEvtnC/l/p8SoLg/F+EAzH3jDN6hg4PT19am1t7WoikbgVi8U2YrGYEI/HhWvXvhTOr14Unn7+ZWHllTeFFy68Jjz13AXh4lvvColEQlhfjwmx2FfCKDPKjhiEkHky/j9CZgghDxBCZv+nRtmZpaWlqX8B+mLWN9cU7VIAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 5&quot;
        title=&quot;&quot;
        src=&quot;/static/61530848e40ea9427d81b4bcfff410c5/72988/icomoon-5-select.png&quot;
        srcset=&quot;/static/61530848e40ea9427d81b4bcfff410c5/8890b/icomoon-5-select.png 293w,
/static/61530848e40ea9427d81b4bcfff410c5/1f316/icomoon-5-select.png 585w,
/static/61530848e40ea9427d81b4bcfff410c5/72988/icomoon-5-select.png 958w&quot;
        sizes=&quot;(max-width: 958px) 100vw, 958px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ol start=&quot;6&quot;&gt;
&lt;li&gt;On this page you may use ‘Edit Preferences’ to change the font name. I like to do this as all your font files will follow this naming convention.
Also the name of each icon can be tweaked. Class naming convention will use a prefix of .icon-iconname. So it’s nice to clean those up to make sure it’s descriptive enough.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 958px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 65.52901023890784%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAYAAACpUE5eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC4UlEQVR42qWTz08TQRTHJ5JwUNIYKYVEI/HEf8ABbh68EPGIhjaxIR4UPSgnPAAmamJMiHggRkyKi5UVhQj+IkH5kYiJijGm0d3u9gelZdttuzv7o9C03Z1nZqEGwtFNvvnOznvvM29mMggdPlVzxtvf0dl7299357F34MEz39DDoO/m8ITv3NX7vnbvLV9b94Cv3Tu4R0O7GvS1dQ96T1+6679w/V4HQugQQkca6gMTL6MzHz5C6DcHHBcGPiyCGF2H90tfYWr+C7xb+QlzS2v/NLtI9R3mln7A68U1eDWzAM8np2MIoaPo5InjjYLAc6mNBKwsL1d0TbNTyaQdi0VtJSfbpWLBzsmSXS5uOWPqpFKygVTs0rZpb5t6BSoliEVEHiHkRu6GBg/H8Xw6nQGO4yxFUUg2myWZTMbxfF4hkpQmqooJxhpRMSZY04im60RRVRq3treLtJYC65Hb7faEQiE+l8uBJEm2LMugqiooigL5fB7oPHVN0w5I13XqtmEYEI1Gw06HLpfLIwgCTxMURXGCpmlUk4H+FwoFME3zn+hcFYoxtqlHIpEdYEtLi2d1dZVPpVIQj8dtQRAgnU47QNrl5uYmiKIIiUSCduGMJUnaC7XpgvF4/CAwmUzatDCbzTowjDFkMhkHRhdJJpNA8+ix0Fh1yxQYi+0Ca2trPevr63yxWKRbs7e2toiu6wRjTOgFaZpODMMkhmEQwzSJbhhOXNO0qlv7OmxtbfXMz8//iYgi3U45EolYqqpaGsYWEMvKZTNWVBSsrJy20lLK0jVsUQjG2JGqquXdS+EcYHNzc2M4HE6USiXn8KnoVyqXYXZhFQIv3sLU3AJMvfkEj5gZ+PztlxMnhOxzWZY3HCBC6Njo6OhwMBicZhhmkmEYdnx8nB0be8Kev3iZ7ezysz1XbrDdPb3s2S4/e62vn2WYp2wgEKiK1kyPjIwMOy9l5/2hOoSQ6z9V19TUVPMXM7je5kKRMnoAAAAASUVORK5CYII=&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 6&quot;
        title=&quot;&quot;
        src=&quot;/static/316d20ae1bfc52715996e7f6bb3cb966/72988/icomoon-6-icon-names.png&quot;
        srcset=&quot;/static/316d20ae1bfc52715996e7f6bb3cb966/8890b/icomoon-6-icon-names.png 293w,
/static/316d20ae1bfc52715996e7f6bb3cb966/1f316/icomoon-6-icon-names.png 585w,
/static/316d20ae1bfc52715996e7f6bb3cb966/72988/icomoon-6-icon-names.png 958w&quot;
        sizes=&quot;(max-width: 958px) 100vw, 958px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;ol start=&quot;7&quot;&gt;
&lt;li&gt;Once everything is named to your liking click the ‘Download’ button and a zip will start downloading.  One will pull the fonts directory and the style.css from the downloaded files.  (Note: selection.json stores all of the information on all the work and settings done through icomoon so if another dev needs to add an icon this is useful to have.)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span
      class=&quot;gatsby-resp-image-wrapper&quot;
      style=&quot;position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 298px; margin-left:0;margin-right:0;&quot;
    &gt;
      &lt;span
    class=&quot;gatsby-resp-image-background-image&quot;
    style=&quot;padding-bottom: 50.51194539249146%; position: relative; bottom: 0; left: 0; background-image: url(&apos;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXElEQVR42o3CyysEcQAH8N/RwU2cpDzigLuiUMjRoxTR5iTlUYjkIo+UFjkp3NyUIrHEYffigPK2E7tkdtbOGrN2zW9eOzO/r79gZ336EFH6fvsQVE0HwBjD/5hpi6oakeUfPibzX0lRFGOfsXhcivBCMkU13VQ1I1Oq6r+KSn4UeiNIp08fDxx3z3EvEeHy9l5IJA2AOkxlcEmQUhJPL/zlDXdy9nh4FA5cXO/7Uo9BREXGRxH5dEnQPRLsGPZPrKJzkPWOoroVJQ0obUBRbdYEUkK+C75d3b0en4XOA8Hd/fcDX/TUj+cwuCwJVrb11S1lZ0+eWozPrSUW1r9mV5LeTSxtYHoZM16XBDmFSlWd1NmPsnpW04bKZlQ0orwRucUgeSAFIPmZEngmv3tGQuPzGJq1xhftsXmrfcCu67Kb+uwWj3tCLUc1bC3tUD1NDYsaNjUdajnUtLP+A3fHzqjfBfABAAAAAElFTkSuQmCC&apos;); background-size: cover; display: block;&quot;
  &gt;&lt;/span&gt;
  &lt;img
        class=&quot;gatsby-resp-image-image&quot;
        alt=&quot;Step 7&quot;
        title=&quot;&quot;
        src=&quot;/static/a566a200bc43d7fe96711366d5a38349/fa9f6/icomoon-7-dev-files.png&quot;
        srcset=&quot;/static/a566a200bc43d7fe96711366d5a38349/8890b/icomoon-7-dev-files.png 293w,
/static/a566a200bc43d7fe96711366d5a38349/fa9f6/icomoon-7-dev-files.png 298w&quot;
        sizes=&quot;(max-width: 298px) 100vw, 298px&quot;
        style=&quot;width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;&quot;
        loading=&quot;lazy&quot;
        decoding=&quot;async&quot;
      /&gt;
    &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;To Import&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Go to ‘Manage Projects’&lt;/li&gt;
&lt;li&gt;Click ‘Import Project’ and choose json file to import. This will import the project to a new ‘Untitled Project’&lt;/li&gt;
&lt;li&gt;Rename project if desired and click ‘Load &gt;’ to get to import/selection/edit view.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;NOTE: IcoMoon stores projects using the browsers LocalStorage. So if that is cleared so are projects.  Hang on to the selection.json file so an import can be done if a project is lost. The icon set used in this post is a free icon set from &lt;a href=&quot;https://flaticon.com&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;flaticon.com&lt;/a&gt; call Web Interface.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[HTML Templating - Moustache vs Handlebars vs DIY]]></title><description><![CDATA[Alright so lately templating has been carrying a lot of motion. To my surprise though jQuery has stopped active development of their…]]></description><link>https://blog.stephentvedt.com/posts/2013/html-templating/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2013/html-templating/</guid><pubDate>Mon, 23 Sep 2013 22:03:00 GMT</pubDate><content:encoded>&lt;p&gt;Alright so lately templating has been carrying a lot of motion. To my surprise though jQuery has stopped active development of their Templating Plugin. Prior to the jQuery v1.5 release there was active development on their end to provide a templating solution which would be released as a part of the jQuery core. The template solution was still in beta as a plugin and jQuery is abandoning it. Despite being in beta this is still a useful tool.&lt;/p&gt;
&lt;p&gt;There are a two major templating libraries I have come across: Mustache.js and Handlebars.js&lt;/p&gt;
&lt;h2&gt;Mustache&lt;/h2&gt;
&lt;p&gt;Mustache is widely used across a multitude of languages (Ruby, JavaScript, Python, Erlang, PHP, Perl, Objective-C, Java, .NET, Android, C++, Go, Lua, ooc, ActionScript, ColdFusion, Scala, Clojure, Fantom, CoffeeScript, D, and Node.js.)&lt;/p&gt;
&lt;p&gt;Mustache also claims to be logic-less however they do provide one option similar to Handlebars. There is some inherent logic going on using which can denote where one would like looped display of data to occur. So if one has a JavaScript Object like below.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; album &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;title&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; “Dark Side &lt;span class=&quot;token keyword&quot;&gt;of&lt;/span&gt; the Moon”&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;token literal-property property&quot;&gt;tracks&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;[&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; “Speak To Me”&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; “&lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;05&lt;/span&gt;”
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;“Breathe&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;In The Air&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;”&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; “&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;50&lt;/span&gt;”
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; “On The Run”&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt;
        &lt;span class=&quot;token literal-property property&quot;&gt;duration&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt; “&lt;span class=&quot;token number&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;46&lt;/span&gt;”
      &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;So the following HandleBars markup would yield the respective output:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;html&quot;&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;{{#track}}
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;{{name}} - {{duration}}&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
{{/track}}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Output:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;html&quot;&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Speak To Me - 1:05&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Breathe (In The Air) - 2:50&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;On The Run - 3:46&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;b&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;As a framework that claims to be logic less that seems like a bit of logic to me. Basically this feature allows one to avoid looping through repetitive data.&lt;/p&gt;
&lt;h2&gt;Handlebars (preferred)&lt;/h2&gt;
&lt;p&gt;Handlebars does everything mustache does but provides more logic. Iterations may be done through objects and arrays. Conditional statements may be made as well. So I see no problem introducing logic. As this is a templating library the which is written in the markup the logic is for loading content so I see no real detriment to using this small amount of logic in our mark up. Markup is semantic and contextual anyway, yes!?! In HTML5 logical attributes such as the required attribute exist as well which applies browser logic which used to be done in JavaScript as well. So templating logic is following this trend.&lt;/p&gt;
&lt;p&gt;So when it comes down to a templating framework I will choose handlebars as the application of logic and semantics line up with my opinions. This is also a very small library (72.5KB Dev - 40KB Minified).&lt;/p&gt;
&lt;p&gt;When templates are only needed for a few edge cases and a large number of replaces aren’t going to occur. The desired result can be done manually as well with a very minimal amount of code. If there is a large number of templates and a ton of dynamically generated content then handlebars is the more powerful and elegant solution which offers conditionals and looping natively inside one’s template.&lt;/p&gt;
&lt;h2&gt;Do It Yourself&lt;/h2&gt;
&lt;p&gt;Alright so this is a really simple concept and uses the same technique both HandleBars and Moustache use minus the framework specific features both offer. So to keep it super simple one creates their template in the same manner by putting the template markup in a non-executing script tag. The tag is not run/executed if the type attribute is changed to a non-standard value. I like to use the following. Since the type isn’t set to text/javascript it will not be run as such. Then throw in the desired markup and place in delimiters with double curly braces (same as HandleBars and Moustache). So if I want a simple template for an article the template would look like the following:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;html&quot;&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;article-template&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;text/template&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;span class=&quot;token language-javascript&quot;&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;article&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;h2&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;title&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;h2&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
    &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;p&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
  &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;/&lt;/span&gt;article&lt;span class=&quot;token operator&quot;&gt;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The id is put in to easily grab this template in my JavaScript. An id is fine because we aren’t using the id for styling so we don’t need to worry about specificity and we aren’t going to duplicate templates (as the whole point of templates is to duplicate code less). Once we have all the markup available in the javascript we can just replace our delimiters using the replace function with a regular expression in it and pass through anything (such as content from a json file).&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; $articleTemplate &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;#article-template&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; newContent &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; $articleTemplate
  &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token regex&quot;&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex-source language-regex&quot;&gt;{{header}}&lt;/span&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex-flags&quot;&gt;gi&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; header&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token regex&quot;&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex-source language-regex&quot;&gt;{{body}}&lt;/span&gt;&lt;span class=&quot;token regex-delimiter&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;token regex-flags&quot;&gt;gi&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; body&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
$contentArea&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;newContent&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;Links:&lt;/h3&gt;
&lt;p&gt;&lt;a title=&quot;Handlebars JS&quot; href=&quot;http://handlebarsjs.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;a href=&quot;http://handlebarsjs.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://handlebarsjs.com/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;Mustache&quot; href=&quot;http://mustache.github.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;a href=&quot;http://mustache.github.io/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://mustache.github.io/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;jquery-tmpl&quot; href=&quot;https://github.com/jquery/jquery-tmpl&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;a href=&quot;https://github.com/jquery/jquery-tmpl&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://github.com/jquery/jquery-tmpl&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[Hoefler & Frere-Jones's cloud.typography]]></title><description><![CDATA[Alright so web fonts from Hoefler & Frere-Jones Web Fonts are finally here with their TypeKit like cloud service: cloud.typography. However…]]></description><link>https://blog.stephentvedt.com/posts/2013/hfj-cloud-typography/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2013/hfj-cloud-typography/</guid><pubDate>Tue, 16 Jul 2013 17:03:00 GMT</pubDate><content:encoded>&lt;p&gt;Alright so web fonts from Hoefler &amp;#x26; Frere-Jones Web Fonts are finally here with their TypeKit like cloud service: cloud.typography. However, they are here at a cost.&lt;/p&gt;
&lt;p&gt;TypeKit ( &lt;a href=&quot;https://typekit.com/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;typekit.com/&lt;/a&gt; )- &lt;strong&gt;$99/year&lt;/strong&gt; for 1 million pageviews/month&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Unlimited access to entire font library&lt;/li&gt;
&lt;li&gt;No purchasing of licenses necessary&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;cloud.typography ( &lt;a href=&quot;http://www.typography.com/cloud/welcome/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;typography.com/cloud/welcome/&lt;/a&gt; )- &lt;strong&gt;$149/year&lt;/strong&gt; for 1 million pageviews/month&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The first Five Webfont packages are free&lt;/li&gt;
&lt;li&gt;Otherwise you need a to purchase the license as well ( a web only license for the gotham bundle is $149 )&lt;/li&gt;
&lt;li&gt;If you want a computer license for design comps, which will include a free web-license that will set you back $299 for a licence for a single computer (again gotham bundle)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;So for Could.typography if you don’t include the five free webfont packages that are included with signup to get up and running you will also need to take into account the cost of the font license itself. You must purchase the license separate from the webfont service. So you must also for example purchase a font like the Gotham family for $149 (web only license) and the $149 a year subscription to the cloud service. Compared to typekit which provides access to their full library for $99 a year for 1 million views a month with no need to purchase additional licenses for each font you would like to use. The one nice thing is that you can manage desktop licensing and web licensing from one place so if you purchase a font for used on a computer you get the web license with it. Again using Gotham for an example for an actual price point one you are looking at $299 for a single computer license and the web license comes with it free.&lt;/p&gt;
&lt;p&gt;So upfront costs aren’t too great if you only want to license the first five free font you would like to use for web. It gets more pricey and far more expensive than TypeKit once you use those free web licenses up or wish to purchase fonts with a computer license.&lt;/p&gt;</content:encoded></item><item><title><![CDATA[ToDo List Using HTML5 Content Editable & Local Storage]]></title><description><![CDATA[I have been wanting to showcase some of the very easy to implement HTML5 features. This example will be building what seems to be the…]]></description><link>https://blog.stephentvedt.com/posts/2013/content-editable/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2013/content-editable/</guid><pubDate>Thu, 03 Jan 2013 14:36:00 GMT</pubDate><content:encoded>&lt;p&gt;I have been wanting to showcase some of the very easy to implement HTML5 features. This example will be building what seems to be the obligatory to-do list. A preview of what is being made can be seen &lt;a href=&quot;http://stephentvedt.com/examples/editable-storage/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The two I will be covering today will be &lt;a href=&quot;http://caniuse.com/#feat=contenteditable&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Content Editable&lt;/a&gt; and Web Storage (local storage). Both of which have very good browser support:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://caniuse.com/#feat=contenteditable&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://caniuse.com/#feat=contenteditable&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://caniuse.com/#feat=namevalue-storage&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://caniuse.com/#feat=namevalue-storage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Content Editable&lt;/h2&gt;
&lt;p&gt;This is very straightforward and easy to implement as it is an HTML5 attribute. So simply add &lt;code class=&quot;language-text&quot;&gt;contenteditable&lt;/code&gt; as an attribute to the html tag you wish to target. When a user clicks on this section of content they will be able to type in and edit it. Very easy and powerful yes?! No more need to replace content with a form populated with the existing content through a bunch of different tricks using scripts.&lt;/p&gt;
&lt;p&gt;The catch however is that any edits happen in that instance of the page. On refresh the default content will be served. In the grand scheme of things this doesn’t serve much good. Why be able to edit something without saving it. This does allow us to skip many steps needed just to edit content in the context of the page. One can still access this new edited content in the DOM and use JavaScript to post the new text to a database or whatever the need of the project is.&lt;/p&gt;
&lt;p&gt;In the example one can see the markup is minimal. Just the first list-item is provided and more list items can be created by the return/enter keystroke.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;html&quot;&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;To Do:&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;h2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Enter item&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;li&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;ul&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If one wants to store this edited information to the user agent_browser there is another new tool one may utilize. That is Web_Local Storage.&lt;/p&gt;
&lt;h2&gt;Web/Local Storage&lt;/h2&gt;
&lt;p&gt;This is a little more complex to implement but is still very fluid and simple for the power of the feature. This feature allows us to store data (stringified) to the user agent. Similar to how cookies are stored but we have a lot more memory capacity (up to 5mb) for storing information.&lt;/p&gt;
&lt;p&gt;So to utilize localStorage one can access it through javascript as a global object localStorage. That object has three primary methods being used in this example which covers the basics of storing, retrieving and deleting data:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;localStorage&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setItem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
s&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
localStorage&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getItem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
localStorage&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Implementation for our todo list first comes in the markup because hooks are needed to trigger these events. So let’s add a save a clear button to our mark-up:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;html&quot;&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;clear&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;javascript:void(0);&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Clear&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
|
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;a&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;save&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;href&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;javascript:void(0);&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Save&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;a&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The JavaScript doesn’t get too advanced either. When the document is ready the following occurs:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Store the &lt;code class=&quot;language-text&quot;&gt;&amp;lt;ul&gt;&lt;/code&gt; into a variable for future editing&lt;/li&gt;
&lt;li&gt;Add event handler to the save button to use the setItem() method and store the ul html in the key named ‘list’&lt;/li&gt;
&lt;li&gt;Add event handler to clear the &lt;code class=&quot;language-text&quot;&gt;list&lt;/code&gt; key in localStorage and reload the page (which will load the pages default content)&lt;/li&gt;
&lt;li&gt;Add a conditional statement to determine whether or not the ‘list’ key exists. If it exists there is information in localStorage which has been saved and can be loaded into the page. So the $ul is set to what is stored. Otherwise the default content/markup will load as is from the html file.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;document&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ready&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; $ul &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;ul&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;#save&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    localStorage&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;setItem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;list&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;,&lt;/span&gt; $ul&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;#clear&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;click&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    localStorage&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;clear&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;list&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    location&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;reload&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;localStorage&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getItem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;list&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    $ul&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;localStorage&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;getItem&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;list&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Code:
&lt;a href=&quot;https://github.com/stvedt/editable-storage&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;https://github.com/stvedt/editable-storage&lt;/a&gt;
Live Preview:
&lt;a href=&quot;http://stephentvedt.com/examples/editable-storage/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;http://stephentvedt.com/examples/editable-storage/&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title><![CDATA[jQuery .eq() vs. .index()]]></title><description><![CDATA[Whenever a jQuery selector is called the results the selector returns are stored in an array. So for example a page with five  tags in the…]]></description><link>https://blog.stephentvedt.com/posts/2012/jquery-eq-index/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2012/jquery-eq-index/</guid><pubDate>Wed, 21 Nov 2012 23:22:00 GMT</pubDate><content:encoded>&lt;p&gt;Whenever a jQuery selector is called the results the selector returns are stored in an array. So for example a page with five &lt;code class=&quot;language-text&quot;&gt;&amp;lt;a&gt;&lt;/code&gt; tags in the page will return an array containing those five anchor tags. Each &lt;code class=&quot;language-text&quot;&gt;&amp;lt;a&gt;&lt;/code&gt; tag located in the array by order of appearance top to bottom in the DOM.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;//returns an array of all a tags in the DOM&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;One can target a specific &lt;code class=&quot;language-text&quot;&gt;&amp;lt;a&gt;&lt;/code&gt; tag if the index of the tag is known. This is where the .eq() function comes into play. Simply pass the index of the result you would like to target in the parenthesis.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;eq&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token number&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// this will return the third &amp;amp;amp;amp;lt;a&amp;amp;amp;amp;gt; tag on the page&lt;/span&gt;
&lt;span class=&quot;token comment&quot;&gt;//(the index of the first item of an array is always 0)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;As a comparison of the difference between .eq() and .index() this is where terminology becomes important. It is a bit confusing because you would think of .index() would do the same as example above. However this is not the functionality of .index(). The .index() function takes a jQuery selector as parameter. This function is run on something that is already a jquery/DOM Element. Based on the selector passed to .index() jQuery will determine what the index is of the DOM element it was run on. So consider the following example as this is easier to show then to explain.&lt;/p&gt;
&lt;p&gt;Consider the same html page with 5 &lt;code class=&quot;language-text&quot;&gt;&amp;lt;a&gt;&lt;/code&gt; tags on it. This time we add the class current to the last(5th) &lt;code class=&quot;language-text&quot;&gt;&amp;lt;a&gt;&lt;/code&gt; tag:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a.current&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;index&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;a&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;token comment&quot;&gt;// returns 4 (for the index of the 5th &amp;amp;amp;amp;lt;a&amp;amp;amp;amp;gt; tag)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item><item><title><![CDATA[Auto Advancing Form Fields]]></title><description><![CDATA[Alright so this post will explain how to automatically take a user to the next input/form field upon completion of the last. This is meant…]]></description><link>https://blog.stephentvedt.com/posts/2012/auto-advancing-form-fields/</link><guid isPermaLink="false">https://blog.stephentvedt.com/posts/2012/auto-advancing-form-fields/</guid><pubDate>Sat, 11 Aug 2012 09:06:00 GMT</pubDate><content:encoded>&lt;p&gt;Alright so this post will explain how to automatically take a user to the next input/form field upon completion of the last. This is meant for use with items that have a fixed/known length such as phone numbers, serial numbers, or any other input where the length is always going to be the same.&lt;/p&gt;
&lt;h2&gt;The Markup&lt;/h2&gt;
&lt;p&gt;Let’s start off with just a simple HTML page with three inputs for the different parts of a phone number. Please note that we have a maxLength attribute set for each form item which is necessary for us to know in the JavaScript that a field is full. Also included is our jQuery library and an empty script tag for our own JavaScript to run.&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;html&quot;&gt;&lt;pre class=&quot;language-html&quot;&gt;&lt;code class=&quot;language-html&quot;&gt;&lt;span class=&quot;token doctype&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span class=&quot;token doctype-tag&quot;&gt;DOCTYPE&lt;/span&gt; &lt;span class=&quot;token name&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;head&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;meta&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;charset&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;utf-8&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;Auto Advance Text-Fields&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;title&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;token script&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;script&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;head&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;

  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;body&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
      Phone Number:
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;input&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;phone1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;maxlength&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;3&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;input&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;phone2&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;maxlength&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;3&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;&lt;/span&gt;input&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;phone3&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;text&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;maxlength&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;4&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token attr-name&quot;&gt;size&lt;/span&gt;&lt;span class=&quot;token attr-value&quot;&gt;&lt;span class=&quot;token punctuation attr-equals&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;1&lt;span class=&quot;token punctuation&quot;&gt;&quot;&lt;/span&gt;&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;/&gt;&lt;/span&gt;&lt;/span&gt;
    &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;p&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
  &lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;body&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token tag&quot;&gt;&lt;span class=&quot;token punctuation&quot;&gt;&amp;lt;/&lt;/span&gt;html&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;The JavaScript&lt;/h2&gt;
&lt;p&gt;So we can add our script to the empty scrip tag below our import of jQuery. Next in that script tag we will create an anonymous function that will execute as soon as the document is ready. We do this so we can be sure our inputs are available in the document before we try to add event listeners to them:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;$(document).ready(function(){});&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now that we are sure our page will be loaded we can add an event listener to all of our inputs. We do so by using a jQuery selector for the inputs and the jQuery &lt;code class=&quot;language-text&quot;&gt;keyup()&lt;/code&gt; event. To tie the event handler to the input selector the code will look like so:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;$(&apos;input&apos;).keyup();&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Finally this is where we actually get to auto advance to through the form fields. Place the following code in between the &lt;code class=&quot;language-text&quot;&gt;()&lt;/code&gt; of &lt;code class=&quot;language-text&quot;&gt;.keyup();&lt;/code&gt; so this happens every time the event is triggered. When that event is triggered we will test the length of the data typed in the input to the maxLength attribute set in the HTML. So first we need to get both of those values. So we can use jQuery functions to do so. To get the length of what has been input:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;var characters = $(this).val().length;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;To get the attribute of the input:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;var maxLength = $(this).attr(&apos;maxLength&apos;);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;this refers to the jQuery selector for the input in which the event was triggered. We wrap this in &lt;code class=&quot;language-text&quot;&gt;$()&lt;/code&gt; so we may use the jQuery functions &lt;code class=&quot;language-text&quot;&gt;.val()&lt;/code&gt; and &lt;code class=&quot;language-text&quot;&gt;.attr()&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now that we have both values we must simply test if the characters match the maxLength with an if statement and set the focus to the next input if true:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;if( characters == maxLength){ $(this).next().focus();}&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Clean up&lt;/h2&gt;
&lt;p&gt;Finally there is just one thing we can do to make our code more efficient and that is by storing &lt;code class=&quot;language-text&quot;&gt;$(this)&lt;/code&gt; into a variable for future use. Simply written:&lt;/p&gt;
&lt;p&gt;&lt;code class=&quot;language-text&quot;&gt;var $this = $(this);&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;So the final JavaScript is as follows:&lt;/p&gt;
&lt;div class=&quot;gatsby-highlight&quot; data-language=&quot;javascript&quot;&gt;&lt;pre class=&quot;language-javascript&quot;&gt;&lt;code class=&quot;language-javascript&quot;&gt;&lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;document&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;ready&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;input&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;keyup&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; $&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt; &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;token function&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; characters &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; $&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;val&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;length&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token keyword&quot;&gt;var&lt;/span&gt; maxLength &lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt; $&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;attr&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;maxLength&quot;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;

    &lt;span class=&quot;token keyword&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;characters &lt;span class=&quot;token operator&quot;&gt;==&lt;/span&gt; maxLength&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;token punctuation&quot;&gt;{&lt;/span&gt;
      $&lt;span class=&quot;token keyword&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;next&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;token function&quot;&gt;focus&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
    &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;
  &lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;token punctuation&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</content:encoded></item></channel></rss>