<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Keith Hirst</title>
    <description>The latest articles on DEV Community by Keith Hirst (@keithhirst).</description>
    <link>https://dev.to/keithhirst</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F794508%2F7b4f6aad-c3c6-40e0-8d8b-5cf46f288d55.jpg</url>
      <title>DEV Community: Keith Hirst</title>
      <link>https://dev.to/keithhirst</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/keithhirst"/>
    <language>en</language>
    <item>
      <title>Can you Learn AWS from a game?</title>
      <dc:creator>Keith Hirst</dc:creator>
      <pubDate>Mon, 20 Mar 2023 16:30:00 +0000</pubDate>
      <link>https://dev.to/aws-builders/can-you-learn-aws-from-a-game-490b</link>
      <guid>https://dev.to/aws-builders/can-you-learn-aws-from-a-game-490b</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;"&lt;a href="https://aws.amazon.com/training/digital/aws-cloud-quest/"&gt;AWS Cloud Quest&lt;/a&gt;" is a gamified learning platform by Amazon Web Services (AWS) to help users improve their knowledge and skills on various AWS services. Players complete various tasks related to AWS services and earn points and badges for their achievements. The challenges are geared around different AWS Exams with the Cloud Practitioner exam module for free. All other exam modules come at additional monthly costs.&lt;/p&gt;

&lt;p&gt;The platform features the usual suspects, such as serverless computing, machine learning, and security. Each module has several challenges, each with objectives and questions related to AWS services.&lt;/p&gt;

&lt;p&gt;AWS Cloud Quest is designed to provide an engaging and interactive learning experience that encourages users to explore and experiment with different AWS services. It is aimed at IT professionals, developers, and anyone interested in learning more about AWS cloud services.&lt;/p&gt;

&lt;h2&gt;
  
  
  A brief history of educational video games
&lt;/h2&gt;

&lt;p&gt;Educational video games date back to the 1960s, believe it or not. But many of the first ones for home use were developed during the 90s - which I fondly remember. Initial educational games were focused on basic concepts such as maths, spelling, or typing, as seen in "Mavis Beacon Teaches Typing." The Mavis Beacon series of games put you in scenarios that prompted rapid repetition but often didn't make sense. In one game, the player was driving a car by typing letters. I don't know about you, but that wasn't on my driving test. This worked well with basic concepts, but by the late 90s, you started seeing educational games teach logic and problem-solving.&lt;/p&gt;

&lt;p&gt;Logic and problem-solving use multiple basic concepts and are naturally more complicated to teach. One game I remember was Zoombinis, which saw the player helping these blueberry-looking creatures through a series of logic puzzles to escape their oppressive overlords. Yes, the game had a narrative. The narrative helped give context to the scenario, allowing the player to apply some of their other more basic skills, such as maths.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wk9joR6w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dfeolkvcy/image/upload/v1679328036/zoombinis.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wk9joR6w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dfeolkvcy/image/upload/v1679328036/zoombinis.jpg" alt="Zoombinis Game Screenshot" width="600" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At least for me, context is a critical part of the learning process. I could write several blog posts on the importance of context in education and how video games help give the topic meaning through narrative and world-building. But this article is not about educational games as a whole. It's about a single educational game that makes cloud computing more accessible by teaching it in the context of helping a video game setting. &lt;/p&gt;

&lt;h2&gt;
  
  
  My experience
&lt;/h2&gt;

&lt;p&gt;I admit I had some pretty high expectations going in. I was expecting to be able to explore this map at my leisure, find hidden secrets, and go on quests to solve the city's bizarre scenarios using AWS. I expected to see the use of RPG game mechanics to battle aliens by building a secure VPS (Virtual Private Server) to stop them from stealing cows or something. &lt;a href="https://www.youtube.com/watch?v=lcmVvIeiFGc"&gt;The trailer&lt;/a&gt; made it look pretty wild.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lcmVvIeiFGc"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---8opMmeO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://img.youtube.com/vi/lcmVvIeiFGc/0.jpg" alt="AWS Cloud Quest Trailer Thumbnail image from Youtube" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But what I actually found was something that just looked like a game. At least, that was my first impression and first impressions do matter. In fact, if I wasn't trying to write this article, I probably would have dropped it 10 mins in. All the scenarios were available to play from the start. I didn't even have to move! I just had to select one from a list then my character would automatically travel there. Nothing was really explained and the open-world aspect of it was restrictive. In the portion of the game I played, there were wide open spaces with lots of invisible walls.&lt;/p&gt;

&lt;p&gt;As an education platform, it is standard. But it felt like the game aspect was used to draw people in. &lt;/p&gt;

&lt;p&gt;But then I carried on playing...&lt;/p&gt;

&lt;p&gt;The scenarios were great! They were "realistic" with a good blend of silliness. For example, when you start, a gorilla chases someone across the city, leaving a seed of things to come. I then spoke to someone who told me the tidal wave tracker website kept going down, to which my character confidently suggested using AWS. After I completed the scenario, I got to customise the town and was introduced to a minigame.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I liked
&lt;/h2&gt;

&lt;p&gt;You get actual hands on experience with AWS. The scenarios gives you a temporary account that you can use for the scenario. This means that you can learn without having to spend unknown cloud costs. It also allows AWS to validate your solution, which means you can get feedback if you do it wrong. This temporary account also tidies up after a time, which is necessary for AWS to keep their costs low, but also it acts like a game mechanic to make sure the player isn't stuck going around in circles.&lt;/p&gt;

&lt;p&gt;After going through several AWS exam courses, it is refreshing to be presented with context that gives the training materials meaning rather than being lectured on facts. Most training courses are designed to teach you how to pass an exam rather than build skills. It feels like AWS wants to help you learn.&lt;/p&gt;

&lt;p&gt;After the first scenario, you get introduced to flying drones that you can shoot down. These drones include either a collectible cards of AWS services, or challenges. You can play these cards to build an AWS architecture to complete the challenge. The challenges are simplistic, and it practivally gives you the answer, but this mechanic is genius. First of all, collectables give you a little dopamine hit. Secondly, the challenges help reinforce how AWS services can be used together to build complex systems. It works in the same way that you learnt maths in school, repetition. If you repeat a problem enough, then you will eventually start to be able to solve these problems with less mental effort.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I disliked
&lt;/h2&gt;

&lt;p&gt;Now, there were many things that I initially didn't like, but as I said, me expectations were too high. I believe that video games can offer so much to education, but few are using it correctly. So when I saw this, I thought it would set a new standard, which is unfair.&lt;/p&gt;

&lt;p&gt;That doesn't mean that all of my criticisms aren't valid though. The actual teaching content was very sub par. It felt like they just took the AWS documentation - which can be very dry - and passed it through AWS Polly (their cloud based text to speech processor). Learning AWS in a way where you can pass an exam is very difficult. There is a lot of information that, in a normal day, you probably wouldn't need to think about. But when designing a scalable cloud solution, you need to know the fine details to avoid over engineering a problem. So I understand why all of this information is there. I just wish it was presented better. I had a real hard time finding the motivation to watch the videos and then the step by step guide was very text heavy. The drone mini-game was a welcome reward for completing a scenario.&lt;/p&gt;

&lt;p&gt;From a game point of view, it really felt cheap not to allow you to explore more of the world. I only played the opening hours of the game, but the invisible walls made it feel less like a video game. This may be my high initial expectations, but it felt like game design wasn't a priority here, which is a shame.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;So, could you use this to pass an exam. Certainly. Is it better than reading the documentation... one million percent! But that is just what I think. I am a visual learner and a millennial, so video games have been a big part of my life. I am also an engineer so I learn by pulling the pieces apart and seeing what happens. I also find it hard to experiment when I don't have enough context around a problem.&lt;/p&gt;

&lt;p&gt;This is definitely a step in the right direction, but it is far from using video games to their fullest potential for education. That was probably not their intention to begin with, and I am happy with that.&lt;/p&gt;

&lt;p&gt;But I continue my adventure to find how far you can push the medium.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Where to start with AWS</title>
      <dc:creator>Keith Hirst</dc:creator>
      <pubDate>Mon, 30 Jan 2023 16:36:53 +0000</pubDate>
      <link>https://dev.to/aws-builders/where-to-start-with-aws-3f18</link>
      <guid>https://dev.to/aws-builders/where-to-start-with-aws-3f18</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Getting started with AWS can be daunting, and the advice I usually give is to "simply dive in". Diving in is how I started with AWS but I was working in a consultancy at the time with a great team around me. There isn't anything "simple" about that.&lt;/p&gt;

&lt;p&gt;I recently became self-employed and when I tried to "dive in" to build some "simple" serverless prototypes (I will share more soon) I struggled to get started. I soon realised that while I knew how to create serverless apps, I had never had to do the setup, and this made me feel paralysed and frustrated.&lt;/p&gt;

&lt;p&gt;I decided to revisit the basics and compare the "Getting Started" tutorials for some infrastructure as code (IAC) tools to see if I could give myself that solid foundation to build on.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.serverless.com/framework" rel="noopener noreferrer"&gt;Serverless Framework&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.terraform.io/" rel="noopener noreferrer"&gt;Terraform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/cdk/" rel="noopener noreferrer"&gt;AWS CDK&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpafpfc9qals45uwneuf6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpafpfc9qals45uwneuf6.png" alt="Serverless Framework Logo" width="800" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Serverless Framework
&lt;/h2&gt;

&lt;p&gt;Serverless Framework was my first introduction to IAC and I always found it to have excellent documentation. The &lt;a href="https://www.serverless.com/framework/docs/tutorial" rel="noopener noreferrer"&gt;getting started tutorial&lt;/a&gt; is no exception.&lt;/p&gt;

&lt;p&gt;It includes a well-made video walkthrough to get a preview of what you will be doing. Watching this all the way through before you start will help you familiarise yourself with any new concepts you come across.&lt;/p&gt;

&lt;p&gt;The tutorial is well structured and broken down into small steps, allowing you to think through what you have just learned.&lt;/p&gt;

&lt;p&gt;I am torn about how they include a section on creating an account with their dashboard. It takes up a large chunk of the tutorial for something unnecessary. However, local setup isn't that easy with AWS, so the dashboard allows you to get into building quicker. My advice here would be to follow the tutorial but learn how to do it the long way when you are comfortable. This will ultimately make you a more well-rounded developer.&lt;/p&gt;

&lt;p&gt;At the end of this tutorial, you will have successfully deployed two Lambda functions that can talk to a DynamoDB. This is a great foundation to start building a serverless application and you can go a long way with just this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfx8d72h5jomo75yx2fa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhfx8d72h5jomo75yx2fa.png" alt="Terraform Logo" width="800" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Terraform
&lt;/h2&gt;

&lt;p&gt;I have not used Terraform, but it is a popular tool and knowing it will make you more employable. After following the &lt;a href="https://developer.hashicorp.com/terraform/tutorials/aws-get-started" rel="noopener noreferrer"&gt;getting started tutorial&lt;/a&gt; I felt that if I was new to AWS, I would struggle to know where to go next.&lt;/p&gt;

&lt;p&gt;The tutorial is broken up into eight parts, which is fine, but individually I don't feel like they gave you a sense of progression which I feel raises the barrier of entry slightly. It's like learning Maths at school, you know what you are learning is important, but you don't see how it's important to you right now.&lt;/p&gt;

&lt;p&gt;After the tutorial, you will have deployed an EC2 instance. If you want to build a serverless application, Terraform has an &lt;a href="https://developer.hashicorp.com/terraform/tutorials/aws/lambda-api-gateway" rel="noopener noreferrer"&gt;excellent tutorial&lt;/a&gt; for that. If you are getting started with Terraform, I think you would get a lot out of starting with a more specific tutorial and using the documentation if you get stuck along the way.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj753nzf8jmb300fmtk2b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj753nzf8jmb300fmtk2b.png" alt="AWS CDK logo" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS CDK
&lt;/h2&gt;

&lt;p&gt;CDK is my go-to choice for building large scalable solutions. It allows you to provision AWS services using actual code, making it easy to create reusable and readable IAC using if statements and loops. CDK is also testable, giving you the ability to ensure your infrastructure will work as expected. I haven't seen many good examples of how to write good tests for CDK though.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.aws.amazon.com/cdk/v2/guide/getting_started.html" rel="noopener noreferrer"&gt;getting started tutorial&lt;/a&gt; recommends that you only take it if you have had previous experience with AWS and IAC. While I love CDK, I agree you probably are best spending a month or so with Serverless Framework or Terraform before jumping in here.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In my opinion, gaining hands-on experience is the most effective way of learning AWS. If you aren't working on a project that is already set up. Then I believe Serverless Framework offers the best path to go from zero to something usable.&lt;/p&gt;

&lt;p&gt;If you are wanting to be more cloud agnostic then Terraform will be your go to IAC tool as that supports many different cloud providers and it is even possible to use them together.&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>cryptocurrency</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>The Tech Insiders PodQuest: Devlog #2</title>
      <dc:creator>Keith Hirst</dc:creator>
      <pubDate>Tue, 25 Jan 2022 11:06:46 +0000</pubDate>
      <link>https://dev.to/keithhirst/the-tech-insiders-podquest-devlog-2-2pi</link>
      <guid>https://dev.to/keithhirst/the-tech-insiders-podquest-devlog-2-2pi</guid>
      <description>&lt;h2&gt;
  
  
  TLDR
&lt;/h2&gt;

&lt;p&gt;I de-risked parts of my podcasts RSS feed generation by writing an RSS feed for my blog. I used a package called RSS and you can see the result &lt;a href="https://keithhirst.dev/rss.xml"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mission
&lt;/h2&gt;

&lt;p&gt;I set out this week to generate an RSS feed for my blog to de-risk some of the assumptions I was making about generating a podcast RSS feed. I assumed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generation could be automated easily by looping over episodes&lt;/li&gt;
&lt;li&gt;I would have to write the core part of the RSS feed by hand&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Research
&lt;/h2&gt;

&lt;p&gt;It is much easier to find a post about generating an RSS feed for your blog than a Podcast. I found &lt;a href="https://ashleemboyer.com/blog/how-i-added-an-rss-feed-to-my-nextjs-site"&gt;this post&lt;/a&gt; by &lt;a href="https://twitter.com/ashleemboyer"&gt;Ashlee M Boyer&lt;/a&gt;. It explains how to build an RSS feed better than any other that I saw.&lt;/p&gt;

&lt;p&gt;She actually sold me on RSS feeds for a blog. I really questioned how much they were used. RSS feeds seem tedious but, the idea of one place with all the blog articles you care about from around the web actually sounds quite nice!&lt;/p&gt;

&lt;p&gt;I also wanted to make this client-side because I wanted the data to be up to date every time someone tries to check. Ashlee's post reminded me of &lt;code&gt;getStaticProps&lt;/code&gt; in NextJS. This allows me to generate the feed at build time. This is great because my blog posts are markdown files stored in GitHub. So if I want to publish a blog post, I have to rebuild the site.&lt;/p&gt;

&lt;p&gt;This has got me thinking, could I do this for my podcasts also. One less serverless function would be great. I don’t have this planned out in my head yet, but I’m imagining if I have an admin portal on my podcast site to upload a new episode that could trigger a rebuild of the site.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do we really need a package?
&lt;/h2&gt;

&lt;p&gt;It is always good to weigh the benefits of a package and its many dependencies VS writing it myself. Some packages are great if they save me a lot of time, even if there are lots of dependencies. Some packages offer way more features than I will ever use and are not really worth the extra space they take up.&lt;/p&gt;

&lt;p&gt;Ashlee used a package called Feed, and she used this because it encoded HTML. When I checked out her RSS feed I saw that she had her full blog post there. I just want a link back to my site, so adding HTML to my RSS feed isn't a requirement.&lt;/p&gt;

&lt;p&gt;But one thing that I didn’t consider was the description. I realised this oversight when I looked at a random podcast feed. It used HTML to format their description for podcast players, which I feel is important.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;Feed is a really great package, you don't need a ton of documentation to get started for one. But, it doesn’t support custom tags though, which is needed for certain podcast players. I went searching for alternatives and all of the ones I looked at had a dependency on a package named "&lt;a href="https://www.npmjs.com/package/rss"&gt;RSS&lt;/a&gt;". When I checked the documentation, the example included the custom tags needed for getting a podcast on iTunes.&lt;/p&gt;

&lt;p&gt;Take this following advice with a pinch of salt but, if you look at the weekly downloads you can get an idea of how good a package is. Always do research if in doubt though, packages all have to start somewhere so a few hundred downloads may just mean it isn’t popular yet but is still amazing.&lt;/p&gt;

&lt;p&gt;My solution was pretty much the same as Ashlee’s. I just took the 15 most recent posts for my RSS feed. You can see the code below, but I would definitely recommend going and checking out &lt;a href="https://ashleemboyer.com/blog/how-i-added-an-rss-feed-to-my-nextjs-site"&gt;Ashlee’s post&lt;/a&gt; to get a better understanding of RSS feeds.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;feed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;RSS&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Web Development blog by Keith Hirst&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;I am a Software Consultant based in the UK writing articles around the various technical and soft skills that I have learn since I started professional Software engineering in 2011&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;feed_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/rss.xml`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;site_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;language&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;allPostsData&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(({&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;feed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;    
      &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Keith Hirst&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/posts/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="nx"&gt;date&lt;/span&gt;
    &lt;span class="p"&gt;}))&lt;/span&gt;
  &lt;span class="p"&gt;)&lt;/span&gt;

  &lt;span class="nx"&gt;fs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;writeFileSync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;public/rss.xml&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;feed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;xml&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that outputs a file to &lt;a href="https://keithhirst.dev/rss.xml"&gt;https://keithhirst.dev/rss.xml&lt;/a&gt; for people to use in their viewers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;I wasn't that surprised at how easy it was to write an RSS feed, but I was very surprised how much fun it was and also realising the benefits of having an RSS feed on your site has really made me re-think how useful they are.&lt;/p&gt;

&lt;p&gt;I'm due to record my first interview in the next couple of weeks and then I can start to build out the hosting for my podcast. After that I can start building out my site and hosting. I am probably going to use AWS because I am familiar with it but I will talk more about my tech choices next time.&lt;/p&gt;

&lt;p&gt;See you next time!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Tech Insiders PodQuest: Devlog #1</title>
      <dc:creator>Keith Hirst</dc:creator>
      <pubDate>Sun, 16 Jan 2022 13:57:26 +0000</pubDate>
      <link>https://dev.to/keithhirst/the-tech-insiders-podquest-devlog-1-44j4</link>
      <guid>https://dev.to/keithhirst/the-tech-insiders-podquest-devlog-1-44j4</guid>
      <description>&lt;h2&gt;
  
  
  TLDR
&lt;/h2&gt;

&lt;p&gt;I want to host my podcast myself. I don’t know how to do that, so I broke it down. Essentially a podcast is just an RSS feed that a podcast player reads and uses to request audio files from a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I am currently in the process of making a Podcast and was thinking about hosting. The hosting solutions seem pretty reasonable for what they offer, but do I really know that? So I decided to write my own...&lt;/p&gt;

&lt;p&gt;But... I don’t actually know how to host a podcast, so here I am figuring it out and I want to share this process with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually is a podcast
&lt;/h2&gt;

&lt;p&gt;Whenever I come to a new side project, I get stuck. I just don’t know where to start. I search the internet for the answer and ultimately disagree with everything I read and give up. But not this time! This time I’m going to do what I would do in my day job as a Consultant and really simplify the problem.&lt;/p&gt;

&lt;p&gt;Here is my definition for what a podcast actually is, in the simplest form:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A podcast is just an RSS file that points to some audio files on a server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is it. That is all I have to build. 2 things. An RSS feed and a server with some audio files on. Easy right! Well yeah, that’s kind of the point. The word just is also deliberate. I know my brain won’t rest till I have broken it down into pieces. Using the word just tricks my brain into accepting this reality long enough to actually get started.&lt;/p&gt;

&lt;p&gt;Here is a diagram of that definition&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--szjDp3y3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dfeolkvcy/image/upload/v1642340549/WhatIsAPodcast.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--szjDp3y3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/dfeolkvcy/image/upload/v1642340549/WhatIsAPodcast.png" alt="What Is A Podcast" width="880" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the riskiest part of this?
&lt;/h2&gt;

&lt;p&gt;The next step is to think about what assumptions I am making.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I assume that I can auto-generate an RSS file - because that would be the laziest solution, and I love lazy solutions.&lt;/li&gt;
&lt;li&gt;I assume that I can write one RSS feed for any Podcast player.&lt;/li&gt;
&lt;li&gt;I assume that I could simplify this by using the s3 public URLs. Adding a server would allow me to get a better idea of metrics though.&lt;/li&gt;
&lt;li&gt;I assume a Podcast Player would automatically pick up updates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ok, so now I know what assumptions I am making. It seems like the generation of the RSS feed is the riskiest area. I am making lots of assumptions there. I have also never done it before, so there is a skill gap.&lt;/p&gt;

&lt;p&gt;I know how to create a server. I also know how to put files in an s3 bucket, so the left-hand side is relatively safe - even if my assumptions are wrong. Assumption 4 can't be validated until I have an RSS file.&lt;/p&gt;

&lt;h2&gt;
  
  
  Next Steps
&lt;/h2&gt;

&lt;p&gt;I need to understand more about RSS. Honestly, I have always pretended to understand what my friends were talking about when they mention RSS feeds so it’s about time I did some research. That is my first step.&lt;/p&gt;

&lt;p&gt;I also need to understand the difference between a blog and a podcast RSS feed. I will start with an RSS feed for my site (&lt;a href="https://keithhirst.dev/"&gt;https://keithhirst.dev&lt;/a&gt;). I can then look at what a podcast needs.&lt;/p&gt;

&lt;p&gt;I hope you enjoyed this insight into my planning process. By following this devlog, you may even find your own way of getting started with projects.&lt;/p&gt;

&lt;p&gt;See you next time!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>podcast</category>
      <category>devjournal</category>
    </item>
  </channel>
</rss>
