<?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>Forem: Greg Fullard</title>
    <description>The latest articles on Forem by Greg Fullard (@gregfullard).</description>
    <link>https://forem.com/gregfullard</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%2F102424%2Fe727b451-6e03-45d1-9429-5de930429d11.png</url>
      <title>Forem: Greg Fullard</title>
      <link>https://forem.com/gregfullard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gregfullard"/>
    <language>en</language>
    <item>
      <title>Learn AWS with me :: Episode 5 : S3</title>
      <dc:creator>Greg Fullard</dc:creator>
      <pubDate>Tue, 12 Jan 2021 07:52:39 +0000</pubDate>
      <link>https://forem.com/gregfullard/learn-aws-with-me-episode-5-s3-272k</link>
      <guid>https://forem.com/gregfullard/learn-aws-with-me-episode-5-s3-272k</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Welcome to Episode 5 of the Learn AWS series. The purpose behind this series is to build skills and confidence in using the AWS platform, by finding, testing and sharing the best learning resources that teach specific AWS services AS WELL AS the various foundational technologies they depend on. In short: Instead of writing a tutorial that just scratches the surface, we assemble together a learning path of resources to help you towards real mastery.&lt;/p&gt;

&lt;p&gt;You can learn more about the series here: &lt;a href="https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph"&gt;https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Episode 5 focusses on AWS S3. Let's get into it..&lt;/p&gt;

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

&lt;p&gt;Amazon S3 is a highly scalable, secure and performance object storage service that forms the backbone of many AWS solutions. But why is it called "Object Storage" when we actually store files on S3? Well, that's because there are key differences between the "Object Storage" and "File Storage" approached. In particular, object storage does not utilize a hierarchical structure to manage the location of files. Instead, each piece of data is bundled with all it's relevant data and then given a unique id for retrieval. This approach makes it much easier to scale storage beyond the capabilities of traditional file Storage.&lt;/p&gt;

&lt;p&gt;Due to the wide variety of use cases for storage, S3 includes many different storage tiers that offer different performance and reliability characteristics. &lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with AWS S3
&lt;/h2&gt;

&lt;p&gt;Getting started with S3 is super simple, and the best place is probably to simply follow the getting started tutorials offered in the Amazon docs: &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html"&gt;https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your starting point is being able to create buckets, upload and download objects, and configure object permissions. Once those bases are covered, it's time to dig a little deeper.&lt;/p&gt;

&lt;p&gt;Simplilearn has a solid introductory video as part of their AWS Tutorial for beginners: &lt;a href="https://www.youtube.com/watch?v=XGcoeEyt2UM"&gt;https://www.youtube.com/watch?v=XGcoeEyt2UM&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Concepts in S3
&lt;/h2&gt;

&lt;p&gt;There are many core concepts in S3, and becoming a master requires familiarity with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Block Storage vs File Storage vs Object Storage&lt;/li&gt;
&lt;li&gt;Storage Classes

&lt;ul&gt;
&lt;li&gt;Standard&lt;/li&gt;
&lt;li&gt;Intelligent Tiering&lt;/li&gt;
&lt;li&gt;Standard IA (Infrequent Access)&lt;/li&gt;
&lt;li&gt;One Zone IA&lt;/li&gt;
&lt;li&gt;Glacier&lt;/li&gt;
&lt;li&gt;Deep Archive&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;LifeCycle Policies&lt;/li&gt;
&lt;li&gt;Versioning&lt;/li&gt;
&lt;li&gt;Cross-region Replication&lt;/li&gt;
&lt;li&gt;Object Locking&lt;/li&gt;
&lt;li&gt;Access Points&lt;/li&gt;
&lt;li&gt;Metadata&lt;/li&gt;
&lt;li&gt;Access Policies

&lt;ul&gt;
&lt;li&gt;Resource Based Policies&lt;/li&gt;
&lt;li&gt;User Based Policies&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;ACLs (Access Control Lists)&lt;/li&gt;
&lt;li&gt;Block Public Access&lt;/li&gt;
&lt;li&gt;Encryption

&lt;ul&gt;
&lt;li&gt;Server-side encryption&lt;/li&gt;
&lt;li&gt;Client-side encryption&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Event Notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The S3 Deep Dive course provides a thorough explanation of most of the concepts listed above. You can sign-up and complete the course for free here: &lt;a href="https://www.aws.training/Details/Curriculum?id=26930"&gt;https://www.aws.training/Details/Curriculum?id=26930&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools in S3
&lt;/h2&gt;

&lt;p&gt;AWS provides a number of handy tools that allow you to analyse your S3 usage for cost and performance optimization. These include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access Analyser&lt;/li&gt;
&lt;li&gt;S3 Inventory Report&lt;/li&gt;
&lt;li&gt;S3 Storage Lens&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Foundational Skills for working with S3
&lt;/h2&gt;

&lt;p&gt;No technology lives in isolation, and S3 is no different. Although you can begin your learning journey by jumping straight into S3, becoming a true master will require skills and experience in the prerequisite, complementary and alternative technologies. The following Skills Tetris diagram gives a simple overview of the skills neighborhood that S3 lives in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dqrxAB8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7ubtebh26p0xcz1ie0va.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dqrxAB8s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7ubtebh26p0xcz1ie0va.png" alt="Amazon S3 Skills Specification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the console
&lt;/h2&gt;

&lt;p&gt;Once you've worked through the resources above, you should be quite comfortable working with S3 via the AWS console. But in real life, you may also need to interact with ACM via the AWS CLI or one of the available SDKs. I like the Boto3 (Python) SDK quite a lot, so the two resources I used often were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/index.html"&gt;https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html"&gt;https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This blog article covered the most important aspects that I came across during the weekly Twitter thread, but if you're interested, you can check out the original thread here: &lt;a href="https://twitter.com/devskilldojo/status/1338381598174146562"&gt;https://twitter.com/devskilldojo/status/1338381598174146562&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up (Episode 6) is a Kata, where we will get the opportunity to practice some of the skills we've learnt so far. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>s3</category>
      <category>learning</category>
      <category>skills</category>
    </item>
    <item>
      <title>Learn AWS with me :: Episode 4 : Route 53</title>
      <dc:creator>Greg Fullard</dc:creator>
      <pubDate>Mon, 14 Dec 2020 07:50:44 +0000</pubDate>
      <link>https://forem.com/gregfullard/learn-aws-with-me-episode-4-route-53-4aml</link>
      <guid>https://forem.com/gregfullard/learn-aws-with-me-episode-4-route-53-4aml</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Welcome to Episode 4 of the Learn AWS series. The purpose behind this series is to build skills and confidence in using the AWS platform, by finding, testing and sharing the best learning resources that teach specific AWS services AS WELL AS the various foundational technologies they depend on. In short: Instead of writing a tutorial that just scratches the surface, we assemble a learning path of great &lt;strong&gt;existing&lt;/strong&gt; resources to help you towards mastery.&lt;/p&gt;

&lt;p&gt;You can learn more about the series here: &lt;a href="https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph"&gt;https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Episode 4 focuses on AWS Route 53. Let's get into it..&lt;/p&gt;

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

&lt;p&gt;Route 53 is a DNS web service that can be used for domain registration, DNS routing, and a range of related health checks. If, like me, you're the type of person who registers a new domain for every business idea that enters your mind, then you are quite familiar with the concept of domain registrars. You would also be familiar with the idea that once you register a domain with your provider (for example, GoDaddy), they give you an admin interface for working with the DNS records of that domain.&lt;/p&gt;

&lt;p&gt;What you may not know (I certainly did not), is that there is a distinct difference between a Domain Registrar and a DNS provider. It just so happens that most domain registrars include a free (but quite limited) DNS service with their domain registration package.&lt;/p&gt;

&lt;p&gt;Route 53 makes the distinction between the domain registration and the DNS service very explicit, even though they also offer both services. Once you wrap your head around that distinction, the value of Route 53 becomes very clear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with AWS Route 53
&lt;/h2&gt;

&lt;p&gt;The first thing that you'll notice when you open the Route 53 console, is that there is a lot going on: Hosted zones, traffic policies, domains, resolvers, etc. Quite a lot to take in, and it's difficult to know where exactly to start. The simplest place is to just register a new domain on Route 53. Yes, it costs a few bucks, but the cost is on par with any other provider.&lt;/p&gt;

&lt;p&gt;Note: Route 53 does charge an extra $0.50 per month for the DNS service though, so be aware.&lt;/p&gt;

&lt;p&gt;The process for registering a new domain is dead simple. If you've done it at any other provider, you'll be fine. If not, you can refer to the developer guide: &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html"&gt;https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-register.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to transfer a domain from another service provider to Route 53, the process is a bit more complicated. In essence you first create a hosted zone on Route 53 and then update the name servers at your existing provider. Once this is done, the transfer of the domain registration is a simple (but possibly time consuming) process. The process is described here: &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-transfer-to-route-53.html"&gt;https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/domain-transfer-to-route-53.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While the Name Server update process is happening, you will be able to verify your Domain details (Including the current active NS records) in the official WHOIS database. This is easily done at &lt;a href="https://lookup.icann.org"&gt;https://lookup.icann.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;IMHO the best introduction to Route 53 is probably the re:Invent 2016 session titled "DNS Demystified". It's well worth the time spent. Here's the link: &lt;a href="https://www.youtube.com/watch?v=AAq-DDbFiIE"&gt;https://www.youtube.com/watch?v=AAq-DDbFiIE&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you've got the basics of DNS and Route 53 covered, it is important to explore the various routing policies and their use cases. This is really where Route 53 becomes a powerhouse in your solution architecture (and where it justifies the monthly DNS fees you will have to pay). Here are the resources related to routing policies that I found valuable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;General routing info in the AWS Developer Guide: &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html"&gt;https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;@BePythoholic has a handy video explaining each of the routing policies: &lt;a href="https://www.youtube.com/watch?v=9CsIB2ewCjc"&gt;https://www.youtube.com/watch?v=9CsIB2ewCjc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Details about setting up failover routing in the AWS Developer Guide: &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html"&gt;https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And finally, after I played with Route 53 a bit, I also found the follow-up presentation at re:Invent 2017 very valuable. It builds on the session from 2016 and tied things into a nice bow for me: &lt;a href="https://www.youtube.com/watch?v=PVBC1gb78r8"&gt;https://www.youtube.com/watch?v=PVBC1gb78r8&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Concepts in Route 53
&lt;/h2&gt;

&lt;p&gt;When working with Route 53, there are a number of core concepts to be familiar with, including Domain Registrars, DNS services, Hosted zones, TTL and much more. Luckily the documentation team put together this handy reference, which I would strongly recommend: &lt;a href="https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/route-53-concepts.html"&gt;https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/route-53-concepts.html&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Foundational Skills for working with Route 53
&lt;/h2&gt;

&lt;p&gt;No technology lives in isolation, and Route 53 is no different. Although you can begin your learning journey by jumping straight into Route 53, becoming a true master will require skills and experience in the prerequisite, complementary and alternative technologies. The following Skills Tetris diagram gives a simple overview of the skills neighborhood that Route 53 lives in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qpIVOR-j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1fulvipley6lrqheu6yf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qpIVOR-j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1fulvipley6lrqheu6yf.png" alt="AWS Route 53 Skills Specification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DNS
&lt;/h3&gt;

&lt;p&gt;Since Route 53 is a DNS service, we need to build a good understanding of DNS. I've referred people to this concise (and entertaining) introduction by @spiceworks many times before, so let's start there: &lt;a href="https://www.youtube.com/watch?v=dE4rsNuG0aw"&gt;https://www.youtube.com/watch?v=dE4rsNuG0aw&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;These two articles (one from Medium and one from Digital Ocean) also provide a great introduction to DNS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts"&gt;https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@ayushkgupta007/demystifying-dns-3fb936940c76"&gt;https://medium.com/@ayushkgupta007/demystifying-dns-3fb936940c76&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Reliability Engineering
&lt;/h3&gt;

&lt;p&gt;You DON'T need to be versed on all aspects of reliability engineering before you touch Route 53, but many of the capabilities that Route 53 provides are geared towards addressing reliability concerns. In particular: Consistent health checks, elegant failover management, and low latency data transfer. You can begin your exploration of reliability engineering on the Wikipedia page (&lt;a href="https://en.wikipedia.org/wiki/Reliability_engineering"&gt;https://en.wikipedia.org/wiki/Reliability_engineering&lt;/a&gt;). Beware! The rabbit hole is deep :) &lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the console
&lt;/h2&gt;

&lt;p&gt;Once you've worked through the resources above, you should be quite comfortable creating and configuring your DNS routing with Route 53 via the AWS console. But another important strength of Route 53 is that you can interact with it via the AWS CLI or one of the available SDKs. I like the Boto3 (Python) SDK quite a lot, so the two resources I used often were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/route53/index.html"&gt;https://awscli.amazonaws.com/v2/documentation/api/latest/reference/route53/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html"&gt;https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/route53.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Things I struggled with
&lt;/h2&gt;

&lt;p&gt;Although Route 53 is very powerful, it isn't particularly complex, so I didn't get stuck too much. However, the process for transferring a domain from one of my existing providers was quite tedious on the first attempt. When I moved over a second domain things made more sense.&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I would still need to figure out
&lt;/h2&gt;

&lt;p&gt;I specifically didn't look at private DNS capability yet, since this isn't an immediate requirement for me. Additionally, I'd want to play around with Traffic Flow at some stage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources I uncovered in the process
&lt;/h2&gt;

&lt;p&gt;During my Route 53 learning journey I uncovered many useful learning resources. Some have been listed above already, but for completeness, here is a complete list of the resources I used:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Handy overview of DNS by Spiceworks: &lt;a href="https://www.youtube.com/watch?v=dE4rsNuG0aw"&gt;https://www.youtube.com/watch?v=dE4rsNuG0aw&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;Great overview of DNS concepts by Digital Ocean: &lt;a href="https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts"&gt;https://www.digitalocean.com/community/tutorials/an-introduction-to-dns-terminology-components-and-concepts&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Demystifying DNS article by Ayush Gupta: &lt;a href="https://medium.com/@ayushkgupta007/demystifying-dns-3fb936940c76"&gt;https://medium.com/@ayushkgupta007/demystifying-dns-3fb936940c76&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"DNS Demystified"  session at re:Invent 2016 (NET202): &lt;a href="https://www.youtube.com/watch?v=AAq-DDbFiIE"&gt;https://www.youtube.com/watch?v=AAq-DDbFiIE&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;"DNS Demystified" session at re:Invent 2017 (NET302): &lt;a href="https://www.youtube.com/watch?v=PVBC1gb78r8"&gt;https://www.youtube.com/watch?v=PVBC1gb78r8&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Pythoholic's free YouTube course on AWS: &lt;a href="https://www.youtube.com/playlist?list=PLiH9_MU-6RjI9gdFqmvUfKRfw_zRxIb6o"&gt;https://www.youtube.com/playlist?list=PLiH9_MU-6RjI9gdFqmvUfKRfw_zRxIb6o&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;DNS Design Using Amazon Route 53 - AWS Online Tech Talks: &lt;a href="https://www.youtube.com/watch?v=2y_RBjDkRgY"&gt;https://www.youtube.com/watch?v=2y_RBjDkRgY&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;SimpliLearn's AWS Tutorial Videos for beginners: &lt;a href="https://www.youtube.com/playlist?list=PLEiEAq2VkUULlNtIFhEQHo8gacvme35rz"&gt;https://www.youtube.com/playlist?list=PLEiEAq2VkUULlNtIFhEQHo8gacvme35rz&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Route 53 Masterclass by Rohan Arora: &lt;a href="https://www.youtube.com/watch?v=FxLtEnrb84M"&gt;https://www.youtube.com/watch?v=FxLtEnrb84M&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;FreeCodeCamp AWS Solutions Architect course (&lt;a href="https://www.youtube.com/watch?v=Ia-UEYYR44s"&gt;https://www.youtube.com/watch?v=Ia-UEYYR44s&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Stephane Maarek's AWS Solution Architect Associate course on Udemy: &lt;a href="https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c02"&gt;https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c02&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This blog article covered the most important aspects that I came across during the weekly Twitter thread, but if you're interested, you can check out the original thread here: &lt;a href="https://twitter.com/devskilldojo/status/1335841066210250752"&gt;https://twitter.com/devskilldojo/status/1335841066210250752&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up (Episode 5) is S3, you can follow along with episode 5 on this Twitter thread: &lt;a href="https://twitter.com/devskilldojo/status/1338381598174146562"&gt;https://twitter.com/devskilldojo/status/1338381598174146562&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>route53</category>
      <category>learning</category>
      <category>skills</category>
    </item>
    <item>
      <title>Learn AWS with me :: Episode 3 : AWS Certificate Manager</title>
      <dc:creator>Greg Fullard</dc:creator>
      <pubDate>Mon, 07 Dec 2020 07:38:25 +0000</pubDate>
      <link>https://forem.com/gregfullard/learn-aws-with-me-episode-3-aws-certificate-manager-17j5</link>
      <guid>https://forem.com/gregfullard/learn-aws-with-me-episode-3-aws-certificate-manager-17j5</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Welcome to Episode 3 of the Learn AWS series. The purpose behind this series is to build skills and confidence in using the AWS platform, by finding, testing and sharing the best learning resources that teach specific AWS services AS WELL AS the various foundational technologies they depend on. In short: Instead of writing a tutorial that just scratches the surface, we assemble together a learning path of great existing resources to help you towards mastery.&lt;/p&gt;

&lt;p&gt;You can learn more about the series here: &lt;a href="https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph"&gt;https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Episode 3 focuses on AWS Certificate Manager. Let's get into it..&lt;/p&gt;

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

&lt;p&gt;A number of AWS services allow/require you to configure details of an SSL/TLS certificate. Instead of uploading cert files directly, these services reference the centralised store of certs managed under ACM. The services that reference ACM include CloudFront, Elastic Load Balancing, API Gateway and others (The full list can be found here: &lt;a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-services.html"&gt;https://docs.aws.amazon.com/acm/latest/userguide/acm-services.html&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;ACM makes it possible to import your existing TLS certificates for use on the AWS platform, but it also provides a simple process for creating new certificates. When creating certificates with ACM, it is important to realise that ACM is not a general certificate service like "Let's Encrypt" (or many of the for-profit alternatives). Instead, certificates created on ACM can only be used on integrated AWS services.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting some prerequisite knowledge established:
&lt;/h2&gt;

&lt;p&gt;Before getting into the nuts and bolts of ACM, it is important to have a baseline knowledge of TLS. This article by @GeekflareHQ provides a comprehensive, but beginner-friendly introduction: SSL/TLS 101 for Beginners &lt;a href="https://geekflare.com/tls-101/"&gt;https://geekflare.com/tls-101/&lt;/a&gt;  &lt;/p&gt;

&lt;p&gt;A critical aspect to understand about TLS certificates is the different levels of validation that they provide. The levels are: Domain Validation, Organization Validation and Extended Validation. This page from the SSL Store gives a nice summary: &lt;a href="https://www.thesslstore.com/new-to-ssl/ssl-authentication-levels.aspx"&gt;https://www.thesslstore.com/new-to-ssl/ssl-authentication-levels.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Certificates issued by ACM are &lt;strong&gt;Domain Validation Certificates&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with AWS Certificate Manager
&lt;/h2&gt;

&lt;p&gt;Assuming you already have an AWS account created, the best/fastest place to start your ACM journey is by issuing a new certificate for one of the domains you control. The AWS user guide probably offers the best step-by-step instructions: &lt;a href="https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html"&gt;https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are two possible approaches to validate your domain: Email-based, or DNS-based. Depending on your situation you should pick the easiest one for you. In my case, DNS was the way the go. I issued a number of certificates for domains from multiple providers and I can confirm that the exact process varies quite a bit between different providers.&lt;/p&gt;

&lt;p&gt;You can also easily import existing TLS certificates into ACM. To test this out, I used the &lt;a href="https://zerossl.com"&gt;https://zerossl.com&lt;/a&gt; website to generate a cert, which I could then import and use on ACM. Take note: if you import your own certs, you will have to take responsibility for managing expiry  and replacement, while ACM-issued certs are automatically renewed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Concepts in ACM
&lt;/h2&gt;

&lt;p&gt;When working with ACM, it is essential to understand a number of core concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;PKI (Public Key Infrastructure)&lt;/li&gt;
&lt;li&gt;Certificate Authority&lt;/li&gt;
&lt;li&gt;Certificate Signing Request&lt;/li&gt;
&lt;li&gt;Certificate&lt;/li&gt;
&lt;li&gt;Key&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The AWS ACM User Guide includes a handy reference page the lists (and describes) key concepts related to ACM. Definitely worth a few minutes of your time: &lt;a href="https://docs.aws.amazon.com/acm/latest/userguide/acm-concepts.html"&gt;https://docs.aws.amazon.com/acm/latest/userguide/acm-concepts.html&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Foundational Skills for working with ACM
&lt;/h2&gt;

&lt;p&gt;No technology lives in isolation, and ACM is no different. Although you can begin your learning journey by jumping straight into ACM, becoming a true master will require skills and experience in the prerequisite, complementary and alternative technologies. The following Skills Tetris diagram gives a simple overview of the skills neighbourhood that ACM lives in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--igB1k0gy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fie4tavjgzdoelcg76n5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--igB1k0gy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fie4tavjgzdoelcg76n5.png" alt="AWS Certificate Manager Skills Specification"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the console
&lt;/h2&gt;

&lt;p&gt;Once you've worked through the resources above, you should be quite comfortable creating and importing ACM certs via the AWS console. But in real life, you may also need to interact with ACM via the AWS CLI or one of the available SDKs. I like the Boto3 (Python) SDK quite a lot, so the two resources I used often were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/index.html"&gt;https://awscli.amazonaws.com/v2/documentation/api/latest/reference/acm/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/acm.html"&gt;https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/acm.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Things I struggled with
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Different DNS providers have very different interfaces for specifying CNAME records, which caused some confusion for me. Also, they replicate those records are different rates. Neither of these were major issues though.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Things I would still need to figure out
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;I did notice that ACM also provides the ability to define a private CA, which would be used when an enterprise needs to issue internal certs. I did not use this functionality at all.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This blog article covered the most important aspects that I came across during the weekly Twitter thread, but if you're interested, you can check out the original thread here: &lt;a href="https://twitter.com/devskilldojo/status/1333094917732757506"&gt;https://twitter.com/devskilldojo/status/1333094917732757506&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up (Episode 4) is Route 53, you can follow along with episode 4 on this Twitter thread: &lt;a href="https://twitter.com/devskilldojo/status/1335841066210250752"&gt;https://twitter.com/devskilldojo/status/1335841066210250752&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>acm</category>
      <category>learning</category>
      <category>skills</category>
    </item>
    <item>
      <title>Learn AWS with me :: Episode 2 : CloudFront</title>
      <dc:creator>Greg Fullard</dc:creator>
      <pubDate>Sun, 29 Nov 2020 17:16:50 +0000</pubDate>
      <link>https://forem.com/gregfullard/learn-aws-with-me-episode-2-cloudfront-3fga</link>
      <guid>https://forem.com/gregfullard/learn-aws-with-me-episode-2-cloudfront-3fga</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Welcome to Episode 2 of the Learn AWS with me series. The purpose behind this series is to build skills and confidence in using the AWS platform, by finding, testing and sharing the best learning resources that teach specific AWS services AS WELL AS the various foundational technologies they depend on. In short: Instead of writing a tutorial that just scratches the surface, we assemble together a learning path of great existing resources to help you towards mastery.&lt;/p&gt;

&lt;p&gt;You can learn more about the series here: &lt;a href="https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph"&gt;https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Episode 2 focusses on &lt;strong&gt;AWS CloudFront&lt;/strong&gt;. Let's get into it..&lt;/p&gt;

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

&lt;p&gt;CloudFront is a CDN (Content Delivery Network) that allows us to deploy applications at AWS Edge locations to ensure low latency. &lt;/p&gt;

&lt;p&gt;But what exactly is a CDN? &lt;/p&gt;

&lt;p&gt;Well, it's a widely distributed network of servers that allows your content to be deployed near the end user. This makes it faster for content to get to your users. Some well known CDNs that you might come across include Akamai, Cloudflare and Fastly. Of course the major cloud providers all have their own as well: AWS CloudFront, Google Cloud CDN, Azure CDN, etc.  As always, Wikipedia has a nice introduction: &lt;a href="https://en.wikipedia.org/wiki/Content_delivery_network"&gt;https://en.wikipedia.org/wiki/Content_delivery_network&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with AWS CloudFront
&lt;/h2&gt;

&lt;p&gt;Assuming you already have an AWS account created, the best/fastest place to start your CloudFront journey is with the AWS getting started tutorial: &lt;a href="https://aws.amazon.com/getting-started/hands-on/deliver-content-faster/"&gt;https://aws.amazon.com/getting-started/hands-on/deliver-content-faster/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For some more simple and practical steps on how to use CloudFront with S3 to host a simple static website, you could also check out this article on FreeCodeCamp by &lt;a class="comment-mentioned-user" href="https://dev.to/colbyfayock"&gt;@colbyfayock&lt;/a&gt;
 : &lt;a href="https://www.freecodecamp.org/news/how-to-host-and-deploy-a-static-website-or-jamstack-app-to-s3-and-cloudfront/"&gt;https://www.freecodecamp.org/news/how-to-host-and-deploy-a-static-website-or-jamstack-app-to-s3-and-cloudfront/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Serving up static S3 content via CloudFront is great, but that's not where it's usefulness ends. This 10 Minutes tutorial from David Brown is a great introduction into using CloudFront with dynamic content served from load balanced EC2 instances: &lt;a href="https://youtu.be/V8vR7rA0ubs"&gt;https://youtu.be/V8vR7rA0ubs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Concepts in CloudFront
&lt;/h2&gt;

&lt;p&gt;When working with CloudFront, it is essential to understand the following core concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Object&lt;/strong&gt;: The content that is served and cached (An image, web page, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Origin&lt;/strong&gt;: Source where the original object is served from&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POP (Point of Presence)&lt;/strong&gt;: The edge servers closest to the end user&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regional Cache&lt;/strong&gt;: A longer term cache that sits between the POP and the Origin&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distribution&lt;/strong&gt;: A specification for how your content should be distributed to make delivery to end users efficient&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Foundational Skills for working with CloudFront
&lt;/h2&gt;

&lt;p&gt;No technology lives in isolation, and CloudFront is no different. Although you can begin your learning journey by jumping straight into CloudFront, becoming a true master will require skills and experience in the prerequisite, complementary and alternative technologies. The following "Skills Tetris Diagram" gives a simple overview of the skills neighbourhood that CloudFront lives in.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_rrItGoK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wwh32sb2p4hbynwwjuj1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_rrItGoK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wwh32sb2p4hbynwwjuj1.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  DNS
&lt;/h3&gt;

&lt;p&gt;Since CloudFront closely relates to HTTP routing, a baseline understanding of DNS is helpful. No need to be a DNS expert, a cursory understanding is all you need. Here's a great video for a start: &lt;a href="https://www.youtube.com/watch?v=dE4rsNuG0aw"&gt;https://www.youtube.com/watch?v=dE4rsNuG0aw&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After you've created a CloudFront distribution, your site will be accessible at a URL that was randomly generated under the CloudFront domain. For example "d3mkvdtexdirhr.cloudfront.net". This is fine for testing, but to link your distribution to a custom domain, you need to configure a CNAME record. There are many sources that provide an overview of DNS records. Cloudflare has a concise explanation on CNAME records at &lt;a href="https://www.cloudflare.com/en-gb/learning/dns/dns-records/dns-cname-record/"&gt;https://www.cloudflare.com/en-gb/learning/dns/dns-records/dns-cname-record/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While debugging DNS issues I found this article which explains some command line tools that are quite valuable: &lt;a href="https://www.cloudns.net/blog/dns-tools-dns-trace-online-ping-traceroute-dns-lookup-reverse-lookup/"&gt;https://www.cloudns.net/blog/dns-tools-dns-trace-online-ping-traceroute-dns-lookup-reverse-lookup/&lt;/a&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP Caching
&lt;/h3&gt;

&lt;p&gt;CloudFront makes your site faster by employing various caching strategies. To build a solid grasp of HTTP Caching, you can't do much better that this @MozDevNet page: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching"&gt;https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SSL /TLS
&lt;/h3&gt;

&lt;p&gt;When adding a custom domain CNAME to your CloudFront distribution, you need to supply a valid TLS certificate. Which means you need some level of understanding of TLS. This article by Steve Cope does a great job at explaining the fundamentals: &lt;a href="http://www.steves-internet-guide.com/ssl-certificates-explained/"&gt;http://www.steves-internet-guide.com/ssl-certificates-explained/&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Setting up a TLS certificate will depend on where you get the certificate and where your domain is hosted. For me, I'm using GoDaddy and issued the certificate via AWS Certificate Manager. I used this article by @cingulara for reference: &lt;a href="https://medium.com/@dale.bingham_30375/creating-a-static-website-using-godaddy-github-aws-s3-codedeploy-and-aws-cloudfront-1990a8f4ddd8"&gt;https://medium.com/@dale.bingham_30375/creating-a-static-website-using-godaddy-github-aws-s3-codedeploy-and-aws-cloudfront-1990a8f4ddd8&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Beyond the console
&lt;/h2&gt;

&lt;p&gt;Once you've worked through the resources above, you should be quite comfortable configuring CloudFront distributions for most typical websites via the AWS console. But in real life, you are much more likely to interact with CloudFront via the AWS CLI or one of the available SDKs. I like the Boto3 (Python) SDK quite a lot, so the two resources I used often were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudfront/index.html"&gt;https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudfront/index.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cloudfront.html"&gt;https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cloudfront.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Things I struggled with
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Using LetsEncrypt instead of Amazon Certificate Manager
&lt;/h3&gt;

&lt;p&gt;I wanted to use Let's Encrypt CertBot and Certbot-s3front to generate a TLS certificate. I ran into various issues, specifically with the Certbot-s3front tool. Eventually I gave up and used ACM instead, which was pretty painless.&lt;/p&gt;

&lt;h3&gt;
  
  
  ACM Email verification
&lt;/h3&gt;

&lt;p&gt;ACM Email verification didn't work for me, because the domain I used doesn't have any email hosting attached and the administrator email address is flagged as private on the WHOIS database, which meant that AWS never sent me a mail. When I switched to DNS validation it worked well&lt;/p&gt;

&lt;h3&gt;
  
  
  Root domain redirect to AWS CloudFront
&lt;/h3&gt;

&lt;p&gt;Getting my root domain to redirect to AWS was not intuitive with GoDaddy, but once you know how to achieve it, it's quite simple (Don't use DNS records, but rather use the Domain redirect function on GoDaddy)&lt;/p&gt;

&lt;h2&gt;
  
  
  Things I would still need to figure out
&lt;/h2&gt;

&lt;p&gt;Since I only spent a couple of hours per day for 5 days, I couldn't deep dive into everything that CloudFront offers. Some other capabilities I'd like to explore on a future iteration include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to cache some parts of an application, but not all. For example, only the images used in a React application&lt;/li&gt;
&lt;li&gt;Impact of changing cache headers on the origin server&lt;/li&gt;
&lt;li&gt;Enabling logging&lt;/li&gt;
&lt;li&gt;Manually forcing cache invalidation&lt;/li&gt;
&lt;li&gt;Adding dynamic capability with Lambda@Edge&lt;/li&gt;
&lt;li&gt;Adding security to CloudFront content, i.e. content that requires an authorised user&lt;/li&gt;
&lt;li&gt;Using a LetsEncrypt cert&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;This blog article covered the most important aspects that I came across during the weekly Twitter thread, but if you're interested,  you can check out the original thread here: &lt;a href="https://twitter.com/devskilldojo/status/1330755377768652801"&gt;https://twitter.com/devskilldojo/status/1330755377768652801&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next up (Episode 3) is AWS Certificate Manager, you can follow along with episode 3 on this Twitter thread: &lt;a href="https://twitter.com/devskilldojo/status/1333094917732757506"&gt;https://twitter.com/devskilldojo/status/1333094917732757506&lt;/a&gt; &lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudfront</category>
      <category>learning</category>
      <category>skills</category>
    </item>
    <item>
      <title>Learn AWS with me :: Episode 1 : Introduction</title>
      <dc:creator>Greg Fullard</dc:creator>
      <pubDate>Mon, 23 Nov 2020 05:27:14 +0000</pubDate>
      <link>https://forem.com/gregfullard/learn-aws-with-me-episode-1-introduction-mph</link>
      <guid>https://forem.com/gregfullard/learn-aws-with-me-episode-1-introduction-mph</guid>
      <description>&lt;p&gt;I've recently became aware of a movement which aims to replace violent/inappropriate sayings with alternatives that serve the same purpose, but without the negative associations. Here's a great one I came across yesterday: &lt;strong&gt;Feeding 2 birds with one scone&lt;/strong&gt;. This precisely describes what I'm trying to do on most days: In a word, I'm always looking for a twofer&lt;/p&gt;

&lt;p&gt;And I found the perfect one today. Here the two goals I am currently pursuing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I would love to build my own AWS skills, possibly even work through their entire certification hierarchy, And&lt;/li&gt;
&lt;li&gt;I have a new business venture (DevSkillDojo.com) which requires careful curation of learning resources for technical skills&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead of treating them as two independent goals, I realized, that if I "Learn in Public", then I'd be able to achieve both goals by expending a single amount of effort.&lt;/p&gt;

&lt;p&gt;I can truly have my cake AND eat it.&lt;/p&gt;

&lt;p&gt;Woohoo.&lt;/p&gt;

&lt;p&gt;So I will be using the coming weeks (or months) to systematically explore the AWS ecosystem, one topic at a time. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each topic will last exactly 1 week&lt;/li&gt;
&lt;li&gt;During the week I will research the topic/service, publishing any lessons learnt on Twitter&lt;/li&gt;
&lt;li&gt;I'll curate the best learning resources for that topic and share them on Twitter&lt;/li&gt;
&lt;li&gt;I'll document the important learning concepts and prerequisite skills in the DevSkillDojo.com KnowledgeBase&lt;/li&gt;
&lt;li&gt;At the end of the week, I'll write a summary article on the topic, linking to the various resources collected during the week.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The order of topics to be addressed will probably be a bit fluid, but I suspect we'll start of with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CloudFront&lt;/li&gt;
&lt;li&gt;S3&lt;/li&gt;
&lt;li&gt;IAM &lt;/li&gt;
&lt;li&gt;EC2&lt;/li&gt;
&lt;li&gt;SQS&lt;/li&gt;
&lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to join along, follow @DevSkillDojo on Twitter. Of course, the weekly articles will be here on Dev&lt;/p&gt;

</description>
      <category>aws</category>
      <category>learning</category>
      <category>skills</category>
    </item>
    <item>
      <title>Learning Software Development is like building a jigsaw puzzle</title>
      <dc:creator>Greg Fullard</dc:creator>
      <pubDate>Mon, 22 Jun 2020 18:27:18 +0000</pubDate>
      <link>https://forem.com/gregfullard/learning-software-development-is-like-building-a-jigsaw-puzzle-3p01</link>
      <guid>https://forem.com/gregfullard/learning-software-development-is-like-building-a-jigsaw-puzzle-3p01</guid>
      <description>&lt;p&gt;I like building jigsaw puzzles.&lt;br&gt;
Not as much as my wife does, to be sure, but I definitely enjoy it.&lt;/p&gt;

&lt;p&gt;The thing is: I don't really understand why this is an enjoyable activity. You spend days or weeks patiently assembling a picture that you can quite easily see on the box, and when it's done, even though you might leave it on a table for a few days, you soon break it up and put it back in the original box. Is it just me, or is that weird?&lt;/p&gt;

&lt;p&gt;The more I think about it though, learning Software Development is very similar to building jigsaw puzzles. And not just because it's weird - there are other reasons too.&lt;/p&gt;

&lt;p&gt;At the beginning, the pile of pieces looks overwhelming and you have no clue where each piece fits. If you're new to software development, this is certainly true. Tech blogs discuss how technology X is no longer relevant, because technology Y covers those features but with reference confabulation. Yet you haven't even heard of technology X, let alone reference confabulation (FYI: Not a thing).&lt;/p&gt;

&lt;p&gt;But don't despair, there's a plan.&lt;/p&gt;

&lt;p&gt;It doesn't matter how big the puzzle is, you patiently begin sifting through the pieces to find the corners and the edges. These can be put in their place with minimal effort, and without even looking at any of the other pieces. In Software Development your corner pieces are HTML and CSS. Not JavaScript, that's different.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PoTkCx8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pwn23703thy44053gqlt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PoTkCx8t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/pwn23703thy44053gqlt.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I build puzzles, I spend a lot of time just looking at the picture on the box, examining its details. It forces me to look at a single picture more intently than you would ever look at any other photo or picture. This is one of the mysterious joys of building puzzles - it focuses the mind. I spend an equally large amount of time sifting through the hundreds of puzzle pieces - just looking at each one, wondering how it fits together. Trying to imagine where it fits into the big picture.&lt;/p&gt;

&lt;p&gt;When learning software development, this is an equally important step. If you open a website, look at the details. Look at the overall layout. What colour scheme was used? What data entities and attributes are displayed? What data is personalised to the current logged-in user, and what data is generic? How are the menus structured, what modal pop-ups are used, etc.? Even though you might not understand how the whole site works, you should start thinking about how these things fit together.&lt;/p&gt;

&lt;p&gt;The human brain is an amazing thing. If you pump it full of information and let it process on its own time, it'll figure out how things fit together.&lt;/p&gt;

&lt;p&gt;When the corners are in place, and while you're sifting through the pieces, you will identify all the edge pieces. These are not as easy to slot into place as the corners, but they are easier than starting with the section of blue sky in the landscape. The edges give you a safe space to begin figuring out how different pieces fit together, without being totally overwhelmed.&lt;/p&gt;

&lt;p&gt;In my opinion, the software development equivalent of this is learning fundamental skills like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;General programming concepts like variables, control structures, data structures, etc. You can learn these in any general purpose programming language like Python, JavaScript, Java, etc. Don't be too hung up on which one you choose - these skills are transferable to all programming languages.&lt;/li&gt;
&lt;li&gt;Data Storage concepts, like relational databases, SQL, etc.&lt;/li&gt;
&lt;li&gt;Analysis skills like user stories and understanding the problem domain with domain modelling (in UML).&lt;/li&gt;
&lt;li&gt;Operating system basics like how the file system is structured, how to use command line tools and how to install software without using a sterilized "App Store".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another thing about puzzles: You don't go all-out building the whole puzzle in one sitting. It takes days, sometimes weeks. Some days you just spend a few minutes, other days you spend many hours. But the puzzle is always in the back of your mind. And every time you walk past the dinner table it reminds you of an unfinished challenge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4IwchcGR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iez20r5olnusjcxiwntp.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4IwchcGR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iez20r5olnusjcxiwntp.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sometimes you have a lot of momentum, slotting in piece after piece. Other times it feels like you're endlessly scanning for a piece, but you can't find it. And there are always a few pieces that you come across again and again, but you can't seem to figure out where they fit.&lt;/p&gt;

&lt;p&gt;As the assembled sections of the puzzle grows, things gradually become easier. &lt;strong&gt;This is because you have more context, and more experience of the overall picture&lt;/strong&gt;, and the number of pieces in the pile gets smaller.&lt;/p&gt;

&lt;p&gt;The same is absolutely true about learning Software Development. Initially everything is new, which means everything is either very difficult, or impossible, to understand. But it doesn't stay like this forever: the more things you understand, the more context you have. And the more context you have, the easier it becomes to learn new things.&lt;/p&gt;

&lt;p&gt;It's the ultimate snowball effect.&lt;/p&gt;

&lt;p&gt;The last aspect of puzzle building that we should highlight is that &lt;strong&gt;the joy is in the process, not the end result.&lt;/strong&gt; That's why we can so easily break up a puzzle that we spent weeks building. The real satisfaction is the tactile feeling when one puzzle piece slots into another. It's like a mini brain-orgasm. That's why people buy huge puzzles - it includes many brain-orgasms.&lt;/p&gt;

&lt;p&gt;Yes, there is also a sense of achievement when the puzzle is finished, but that feeling is not bigger than any of the hundreds of small victories that you experienced along the way.&lt;/p&gt;

&lt;p&gt;Learning software development is like an endless puzzle. Your picture will never be complete, and new pieces are constantly being added to the pile. As a result, you will never be able to stand back and look at a fully built picture, knowing that you understand everything. But that's not the point.&lt;/p&gt;

&lt;p&gt;The point is to love the learning journey. And I certainly do.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UR4KYffj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x05ile7ot6hj4k7oj9nm.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UR4KYffj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x05ile7ot6hj4k7oj9nm.jpeg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Article originally published at: &lt;a href="https://devskilldojo.com/learning-software-development-is-like-building-a-puzzle/"&gt;https://devskilldojo.com/learning-software-development-is-like-building-a-puzzle/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Photo credits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bianca Ackermann (&lt;a href="https://unsplash.com/@biancablah"&gt;https://unsplash.com/@biancablah&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>learning</category>
    </item>
  </channel>
</rss>
