<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:base="https://kylenyland.com/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kyle Nyland</title>
    <link>https://kylenyland.com/</link>
    <atom:link href="https://kylenyland.com/feed.xml" rel="self" type="application/rss+xml" />
    <description>hi</description>
    <language>en</language><item>
      <title>My Most Listened to Albums of 2025</title>
      <link>https://kylenyland.com/blog/2025-music/</link>
      <description>&lt;figure&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://kylenyland.com/images/VkEE30x0Ox-300.avif 300w, https://kylenyland.com/images/VkEE30x0Ox-600.avif 600w, https://kylenyland.com/images/VkEE30x0Ox-1065.avif 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;img src=&quot;https://kylenyland.com/images/VkEE30x0Ox-300.png&quot; class=&quot;has-shadow&quot; alt=&quot;Grid of album covers of my most listened to albums of 2025&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1065&quot; height=&quot;1389&quot; srcset=&quot;https://kylenyland.com/images/VkEE30x0Ox-300.png 300w, https://kylenyland.com/images/VkEE30x0Ox-600.png 600w, https://kylenyland.com/images/VkEE30x0Ox-1065.png 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;/picture&gt;&lt;figcaption&gt;
    &lt;details&gt;
    &lt;summary&gt;Most Listened to Albums of 2025:&lt;/summary&gt;
&lt;p&gt;&lt;em&gt;1. Magdalena Bay - Imaginal Disk (2024)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;2. Magdalena Bay - Mercurial World (2021)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;3. Jamie xx - In Waves (2024)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;4. Magdalena Bay - Second Sleep / Star Eyes (2025)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;5. Charli XCX - BRAT (2024)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;6. Shania Twain - Come on Over (1997)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;7. Djo - DECIDE (2022)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;8. The Weeknd - Hurry Up Tomorrow (2025)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;9. Billie Eilish - HIT ME HARD AND SOFT (2024)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;10. Daft Punk - Discovery (2001)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;11. Magdalena Bay - mini mix vol. 3 (2023)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;12. Passion Pit - Manners (2009)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;13. The Avalanches - Since I Left You (2001)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;14. Tame Impala - The Slow Rush (2020)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;15. Lifeformed x Janice Kwan - TUNIC (Original Game Soundtrack) (2022)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;16. Anamanaguchi - Anyway (2025)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;17. Carly Rae Jepsen - The Loveliest Time (2023)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;18. Ninajirachi - I Love My Computer (2025)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;19. Taylor Swift - evermore (2020)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;20. Vince Guaraldi Trio - A Charlie Brown Christmas (1965)&lt;/em&gt;&lt;/p&gt;
&lt;/details&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;Once again, I have meticulously logged my music listens for the fifth year in a row. Looking back, it’s crazy that I’ve been doing this for half a decade now! It’s interesting to see my trends in listens over the past five years.&lt;/p&gt;
&lt;p&gt;This year, almost predictably, Magdalena Bay has dominated my listening charts. My obsession with 2024’s Imaginal Disk carried throughout most of the year. I also loved their set of 4 single releases in the fall. Everything they do is gold. In May, I even got to see the band perform live in Detroit! I listened to the entire setlist on repeat for a while leading up to / after the concert. I don’t go to many concerts, but this one was definitely one to remember.&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://kylenyland.com/images/0WB-CQtior-300.avif 300w, https://kylenyland.com/images/0WB-CQtior-600.avif 600w, https://kylenyland.com/images/0WB-CQtior-3525.avif 3525w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;source type=&quot;image/png&quot; srcset=&quot;https://kylenyland.com/images/0WB-CQtior-300.png 300w, https://kylenyland.com/images/0WB-CQtior-600.png 600w, https://kylenyland.com/images/0WB-CQtior-3525.png 3525w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;img src=&quot;https://kylenyland.com/images/0WB-CQtior-300.jpeg&quot; class=&quot;has-shadow&quot; alt=&quot;Magdalena Bay performing in Detroit&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;3525&quot; height=&quot;2644&quot; srcset=&quot;https://kylenyland.com/images/0WB-CQtior-300.jpeg 300w, https://kylenyland.com/images/0WB-CQtior-600.jpeg 600w, https://kylenyland.com/images/0WB-CQtior-3525.jpeg 3525w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;/picture&gt;I started collecting vinyl records this year too. Most of my top albums are from my collection, which explains why many of the albums were not actually from 2025. Maybe some day I’ll write about my collection.&lt;/p&gt;
&lt;hr /&gt;
Previous years charts:
&lt;details&gt;
&lt;summary&gt;2024&lt;/summary&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://kylenyland.com/images/hP0TbtmfQK-300.avif 300w, https://kylenyland.com/images/hP0TbtmfQK-600.avif 600w, https://kylenyland.com/images/hP0TbtmfQK-1065.avif 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;img src=&quot;https://kylenyland.com/images/hP0TbtmfQK-300.png&quot; class=&quot;has-shadow&quot; alt=&quot;Grid of album covers of my most listened to albums of 2024&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1065&quot; height=&quot;1389&quot; srcset=&quot;https://kylenyland.com/images/hP0TbtmfQK-300.png 300w, https://kylenyland.com/images/hP0TbtmfQK-600.png 600w, https://kylenyland.com/images/hP0TbtmfQK-1065.png 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;/picture&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;2023&lt;/summary&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://kylenyland.com/images/KRncLQ7ROK-300.avif 300w, https://kylenyland.com/images/KRncLQ7ROK-600.avif 600w, https://kylenyland.com/images/KRncLQ7ROK-1065.avif 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;img src=&quot;https://kylenyland.com/images/KRncLQ7ROK-300.png&quot; class=&quot;has-shadow&quot; alt=&quot;Grid of album covers of my most listened to albums of 2023&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1065&quot; height=&quot;1390&quot; srcset=&quot;https://kylenyland.com/images/KRncLQ7ROK-300.png 300w, https://kylenyland.com/images/KRncLQ7ROK-600.png 600w, https://kylenyland.com/images/KRncLQ7ROK-1065.png 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;/picture&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;2022&lt;/summary&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://kylenyland.com/images/BujsNJMjMd-300.avif 300w, https://kylenyland.com/images/BujsNJMjMd-600.avif 600w, https://kylenyland.com/images/BujsNJMjMd-1065.avif 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;img src=&quot;https://kylenyland.com/images/BujsNJMjMd-300.png&quot; class=&quot;has-shadow&quot; alt=&quot;Grid of album covers of my most listened to albums of 2022&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1065&quot; height=&quot;1390&quot; srcset=&quot;https://kylenyland.com/images/BujsNJMjMd-300.png 300w, https://kylenyland.com/images/BujsNJMjMd-600.png 600w, https://kylenyland.com/images/BujsNJMjMd-1065.png 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;/picture&gt;&lt;/details&gt;
&lt;details&gt;
&lt;summary&gt;2021&lt;/summary&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://kylenyland.com/images/ehQUxa7aQE-300.avif 300w, https://kylenyland.com/images/ehQUxa7aQE-600.avif 600w, https://kylenyland.com/images/ehQUxa7aQE-1065.avif 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;img src=&quot;https://kylenyland.com/images/ehQUxa7aQE-300.png&quot; class=&quot;has-shadow&quot; alt=&quot;Grid of album covers of my most listened to albums of 2021&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1065&quot; height=&quot;1390&quot; srcset=&quot;https://kylenyland.com/images/ehQUxa7aQE-300.png 300w, https://kylenyland.com/images/ehQUxa7aQE-600.png 600w, https://kylenyland.com/images/ehQUxa7aQE-1065.png 1065w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;/picture&gt;&lt;/details&gt;</description>
      <pubDate>Mon, 22 Dec 2025 16:42:00 GMT</pubDate>
      <dc:creator>Kyle Nyland</dc:creator>
      <guid>https://kylenyland.com/blog/2025-music/</guid>
    </item><item>
      <title>Thoughts on RetroAchievements</title>
      <link>https://kylenyland.com/blog/retroachievements/</link>
      <description>&lt;p&gt;There’s a little website called &lt;a href=&quot;https://retroachievements.org/&quot;&gt;RetroAchievements&lt;/a&gt;, which, much like the name suggests, adds the modern concept of achievements (much like Steam) to retro games. And when playing your (cough) &lt;em&gt;legally obtained ROMs&lt;/em&gt;, you can track progress on special challenges and earn little badges for games that you’ve played. You earn imaginary internet clout in the form of “RetroPoints” based on how difficult the achievement is.&lt;/p&gt;
&lt;p&gt;I have some mixed feelings about the whole thing. I’m the type of person who loves to 100% clear all achievements that a game has, so in theory this integration should be my dream come true, right?&lt;/p&gt;
&lt;p&gt;There are some flaws in its execution, and it largely depends on what type of experience you want to have.&lt;/p&gt;
&lt;h3&gt;Hardcore vs. Softcore Mode&lt;/h3&gt;
&lt;p&gt;There exists an option in RetroAchievements called “Hardcore” mode, which is a toggleable setting. In their &lt;a href=&quot;https://docs.retroachievements.org/general/faq.html#what-is-hardcore-mode&quot;&gt;FAQ page&lt;/a&gt;, they claim this is to emulate the authentic retro gaming experience by disabling save states, fast forwarding, cheats, and other modern QoL features. This is the only way, in their eyes, to truly “master” a game, a reward which comes with a little glowing yellow border around your completion icon.&lt;/p&gt;
&lt;p&gt;But I’ll be real with you - who has the time? If an achievement calls for completing the boss without any damage or speedrunning through a series of hoops for a badge, you’d better believe I’d want to save/load states just so I’m not wasting a whole afternoon on replaying unnecessary parts over and over again. The phrasing around hardcore mode being the only true way to play the game is very gatekeep-y to people like me.&lt;/p&gt;
&lt;h3&gt;Constant Internet Connection is Required&lt;/h3&gt;
&lt;p&gt;In order to post back achievement info properly to RA’s servers, a constant internet connection is required. Most of the time this wouldn’t be a huge deal, but with the increasing popularity of retro handheld devices (&lt;a href=&quot;https://trimui.net/collections/trimui-brick&quot;&gt;TrimUI Brick&lt;/a&gt;, &lt;a href=&quot;https://officialmiyoomini.com/product-category/miyoo-mini-plus/&quot;&gt;Miyoo Mini+&lt;/a&gt;, etc.), feeling tethered to a Wi-Fi connection is the antithesis of these portable handhelds. What good is a little handheld that you can fit in your pocket and play games on the go if it requires you to miss out on logging your achievement progress? Gamers have always been up-in-arms about &lt;a href=&quot;https://en.wikipedia.org/wiki/Always-on_DRM&quot;&gt;Always-On DRM&lt;/a&gt;, but when it comes to RetroAchievements, always being online is suddenly fine.&lt;/p&gt;
&lt;h3&gt;It Really Depends on the Game&lt;/h3&gt;
&lt;p&gt;Your milage may vary when playing with RetroAchievements on, and it largely hinges on the achievement set of the game you’re focusing on. Some sets are succinct - completion requires a standard definition of what it means to 100% clear a game. You collect all the things, defeat all of the bosses, score enough points in the mini game, and then you’re done!&lt;/p&gt;
&lt;p&gt;Some challenges feel especially arbitrary. Does it really matter if you collect all of the treasures chests in a dungeon if their contents are lackluster? Does you really need to beat a level in under 60 seconds if it doesn’t provide anything other than the achievement for the achievement’s sake? It really depends on the game and the achievement creator on what the set is like.&lt;/p&gt;
&lt;p&gt;There’s a whole philosophy that is cited in their &lt;a href=&quot;https://docs.retroachievements.org/developer-docs/achievement-design.html&quot;&gt;official developer documentation&lt;/a&gt; about what makes an achievement set good.&lt;/p&gt;
&lt;p&gt;In addition, some achievements are missable: meaning that if you’re not actively paying attention to them, you may have just ruined your chances at 100% completion on your first go-around. Another advantage for using save states, in my opinion!&lt;/p&gt;
&lt;h3&gt;A Small Community Playing Along With You&lt;/h3&gt;
&lt;p&gt;With all that being said, let me focus on one of the more positive aspects of the service - when you’re tracking your progress it feels like you have a small community of other people playing the same 20-year-old game along with you at the same time. They’re providing their feedback, their triumphs, their challenges in real time through the comments rich prescences. And on top of that, earning achievements scratches a certain itch for some gamers. So when RetroAchievements works, it works well. There are just some additional hiccups along the way to get there.&lt;/p&gt;
</description>
      <pubDate>Tue, 09 Dec 2025 16:15:00 GMT</pubDate>
      <dc:creator>Kyle Nyland</dc:creator>
      <guid>https://kylenyland.com/blog/retroachievements/</guid>
    </item><item>
      <title>Colophon Part II</title>
      <link>https://kylenyland.com/blog/colophon-part-ii/</link>
      <description>&lt;p&gt;In the &lt;a href=&quot;https://kylenyland.com/blog/colophon&quot;&gt;last post&lt;/a&gt;, I wrote about how my site is made with &lt;a href=&quot;https://11ty.dev/&quot;&gt;11ty&lt;/a&gt;, and that posts are made of simple Markdown files. I’ve recently learned how to commit website updates directly from my phone. It’s not the prettiest solution, but it lets me write blog posts wherever and whenever!&lt;/p&gt;
&lt;p&gt;This process takes advantage of the fact that the code is on &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;. I found an app called &lt;a href=&quot;https://apps.apple.com/app/id1436902243&quot;&gt;iSh Shell&lt;/a&gt; on iOS that you can run Alpine Linux. With this you can install Git via a command line and clone your repo and push changes (with the unfortunate side effect of having to use Git command line). Once you’ve cloned your repo, the files show up in the iOS Files app. You can then use any text editor you want (I discovered &lt;a href=&quot;https://apps.apple.com/app/id1548193893&quot;&gt;Runestone Text Editor&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Elegant? No. But it works, and sometimes it’s easier to jot things out on your phone than sitting down at the computer.&lt;/p&gt;
</description>
      <pubDate>Thu, 16 Oct 2025 04:52:00 GMT</pubDate>
      <dc:creator>Kyle Nyland</dc:creator>
      <guid>https://kylenyland.com/blog/colophon-part-ii/</guid>
    </item><item>
      <title>Colophon</title>
      <link>https://kylenyland.com/blog/colophon/</link>
      <description>&lt;p&gt;I wanted to write about my current setup for my website behind the scenes. Before we dive in, I’ll talk about the domain &amp;amp; hosting and their costs (spoiler: it’s pretty cheap).&lt;/p&gt;
&lt;p&gt;The domain is hosted on &lt;a href=&quot;https://www.squarespace.com/&quot;&gt;Squarespace&lt;/a&gt; for $15 annually. It was previously Google Domains but it was bought out and transferred a few years ago.&lt;/p&gt;
&lt;p&gt;I created a &lt;a href=&quot;https://www.digitalocean.com/&quot;&gt;DigitalOcean&lt;/a&gt; droplet that’s currently costing $6 a month. I think they have a cheaper one that was made available since I started, but it seems you can’t downsize droplets.&lt;/p&gt;
&lt;p&gt;This website was built was &lt;a href=&quot;https://11ty.dev/&quot;&gt;11ty&lt;/a&gt;, a static site generator. In other words, it takes a bunch of templates of different types, builds them, and spits them out into a website. It’s simple, but very powerful! All I have to do is write a few lines into a &lt;a href=&quot;https://www.markdownguide.org/&quot;&gt;Markdown&lt;/a&gt; file, built it with Eleventy and a new page is generated quickly.&lt;/p&gt;
&lt;p&gt;I’m using &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt; to develop. I keep a folder of all of the website files on my computer and 11ty does the rest. I installed a few additional extensions, but if you’re also looking into using 11ty, I think these are completely optional! Here’s what I’m using:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ronnidc.nunjucks&quot;&gt;Nunjucks&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=sissel.shopify-liquid&quot;&gt;Liquid&lt;/a&gt;: template languages used by 11ty. Helps with formatting and making sure the code is valid.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=GitHub.remotehub&quot;&gt;GitHub Repositories&lt;/a&gt;: For version control. I can push new commits from VS Code to a GitHub repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I have a Github Action that automatically deploys changes to the main branch of my repository directly to the server! Here is the YAML for that:&lt;/p&gt;
&lt;pre class=&quot;language-yaml&quot;&gt;&lt;code class=&quot;language-yaml&quot;&gt;&lt;span class=&quot;token key atrule&quot;&gt;on&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;push&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;branches&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 string&quot;&gt;&#39;main&#39;&lt;/span&gt;
&lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 🚀 Deploy website on push
&lt;span class=&quot;token key atrule&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;token key atrule&quot;&gt;web-deploy&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 🎉 Deploy
    &lt;span class=&quot;token key atrule&quot;&gt;runs-on&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; ubuntu&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;latest
    &lt;span class=&quot;token key atrule&quot;&gt;steps&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 key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 🚚 Get latest code
      &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/checkout@v4

    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; Use Node.js 18
      &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; actions/setup&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;node@v2
      &lt;span class=&quot;token key atrule&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;node-version&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&#39;18&#39;&lt;/span&gt;
      
    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 🔨 Build Project
      &lt;span class=&quot;token key atrule&quot;&gt;run&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 scalar string&quot;&gt;
        npm install
        npm run build&lt;/span&gt;
    
    &lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;token key atrule&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; 📂 Upload via SSH
      &lt;span class=&quot;token key atrule&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; appleboy/scp&lt;span class=&quot;token punctuation&quot;&gt;-&lt;/span&gt;action@v0.1.7
      &lt;span class=&quot;token key atrule&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $
        &lt;span class=&quot;token key atrule&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $
        &lt;span class=&quot;token key atrule&quot;&gt;password&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $
        &lt;span class=&quot;token key atrule&quot;&gt;port&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; $
        &lt;span class=&quot;token key atrule&quot;&gt;source&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;./_site/*&quot;&lt;/span&gt;
        &lt;span class=&quot;token key atrule&quot;&gt;target&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; /var/www/html/
        &lt;span class=&quot;token key atrule&quot;&gt;strip_components&lt;/span&gt;&lt;span class=&quot;token punctuation&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
</description>
      <pubDate>Tue, 07 Oct 2025 14:10:00 GMT</pubDate>
      <dc:creator>Kyle Nyland</dc:creator>
      <guid>https://kylenyland.com/blog/colophon/</guid>
    </item><item>
      <title>Introduction</title>
      <link>https://kylenyland.com/blog/introduction/</link>
      <description>&lt;p&gt;&lt;picture&gt;&lt;source type=&quot;image/avif&quot; srcset=&quot;https://kylenyland.com/images/0ho4KpUnvj-300.avif 300w, https://kylenyland.com/images/0ho4KpUnvj-600.avif 600w, https://kylenyland.com/images/0ho4KpUnvj-1000.avif 1000w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;img src=&quot;https://kylenyland.com/images/0ho4KpUnvj-300.jpeg&quot; class=&quot;has-shadow&quot; alt=&quot;Me&quot; loading=&quot;lazy&quot; decoding=&quot;async&quot; width=&quot;1000&quot; height=&quot;1000&quot; srcset=&quot;https://kylenyland.com/images/0ho4KpUnvj-300.jpeg 300w, https://kylenyland.com/images/0ho4KpUnvj-600.jpeg 600w, https://kylenyland.com/images/0ho4KpUnvj-1000.jpeg 1000w&quot; sizes=&quot;(min-width: 30em) 50vw, 100vw&quot; /&gt;&lt;/picture&gt;Hi! Welcome to my blog.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;My name is Kyle! I’m a professional software developer, dad, and indie game developer.&lt;/p&gt;
&lt;p&gt;I’ve been working as a web developer for 10 years. I currently work for a childcare company to make their websites and applications. Professionally, my skills include both front-end and back-end programming. I frequently develop HTML, CSS, JavaScript, and C#.&lt;/p&gt;
&lt;p&gt;I also enjoy making indie games! I make all parts of the games I develop, from code to art and music. You can check out a few of the games I’ve made &lt;a href=&quot;https://kylenyland.com/projects/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My interests outside of work include playing retro Nintendo games, following the IndieWeb &amp;amp; selfhosting scenes, collecting enamel pins, and managing a personal music library.&lt;/p&gt;
&lt;p&gt;If you’re reading this, thanks for stopping by!&lt;/p&gt;
</description>
      <pubDate>Mon, 22 Sep 2025 16:00:00 GMT</pubDate>
      <dc:creator>Kyle Nyland</dc:creator>
      <guid>https://kylenyland.com/blog/introduction/</guid>
    </item></channel>
</rss>