<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="http://blog.bluegrass.dev/feed.xml" rel="self" type="application/atom+xml" /><link href="http://blog.bluegrass.dev/" rel="alternate" type="text/html" /><updated>2020-09-22T23:30:41+00:00</updated><id>http://blog.bluegrass.dev/feed.xml</id><title type="html">CJ Taylor</title><subtitle>An unbridled spirit gettin' his nerd on in the Bluegrass.</subtitle><author><name>CJ Taylor</name></author><entry><title type="html">AWS Service Catalog - Concept Introduction</title><link href="http://blog.bluegrass.dev/aws-service-catalog-concept-introduction/" rel="alternate" type="text/html" title="AWS Service Catalog - Concept Introduction" /><published>2020-09-22T00:00:00+00:00</published><updated>2020-09-22T00:00:00+00:00</updated><id>http://blog.bluegrass.dev/aws-service-catalog-concept-introduction</id><content type="html" xml:base="http://blog.bluegrass.dev/aws-service-catalog-concept-introduction/">&lt;p&gt;So, what’s this Service Catalog thing? Well, let’s visit that before we get into the technical details.&lt;/p&gt;

&lt;h2 id=&quot;example-restaurants-and-made-to-order-meals&quot;&gt;Example: Restaurants and made to order meals&lt;/h2&gt;

&lt;p&gt;Ever used a menu at a restaurant? Then, you’ve used a Service Catalog, conceptually, before!&lt;/p&gt;

&lt;p&gt;Restaurants have a generalized workflow.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Customers are seated&lt;/li&gt;
  &lt;li&gt;Wait-staff takes customers’ order&lt;/li&gt;
  &lt;li&gt;Wait-staff passes customer order to the Kitchen-staff&lt;/li&gt;
  &lt;li&gt;Kitchen-staff prioritizes and cooks orders&lt;/li&gt;
  &lt;li&gt;Kitchen-staff hands-off customer cooked meal to wait-staff&lt;/li&gt;
  &lt;li&gt;Wait-staff delivers the order to the customer&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In this generalized workflow, we have both an internal and external use-case for a “Service Catalog” for the business.&lt;/p&gt;

&lt;h3 id=&quot;step-2-customer-uses-a-menu-to-choose-their-meal&quot;&gt;Step 2: Customer uses a menu to choose their meal&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;The pain: manually listing all meals for the customer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As part of the wait-staff, good luck not eventually becoming an auctioneer rattling things off quickly if you had to verbally share what meals were available to each table of customers.&lt;/p&gt;

&lt;p&gt;As the customer, imagine being hungry waiting for a long list! Uh, yeah, I’ll go ahead and order desert with my appetizer…&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The reliever: using a menu with predefined options.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Finding the bards-tale-method a bit on the inefficient side, the restaurant uses a menu with sections/numbers/names for the customer to order from.&lt;/p&gt;

&lt;p&gt;The wait-staff is now able to seat more customers and not incur so much upfront-investment with a table, and the customer can peruse a menu in search of exactly what they’re looking for!&lt;/p&gt;

&lt;p&gt;All possible by using a Service Catalog, err, menu!&lt;/p&gt;

&lt;h3 id=&quot;step-4-kitchen-staff-cooks-the-meal-using-ingredients&quot;&gt;Step 4: Kitchen-staff cooks the meal using ingredients&lt;/h3&gt;

&lt;blockquote&gt;
  &lt;p&gt;The pain: Cook has to make everything from scratch.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As a cook, you’re in for a long day of making bespoke but decadent meals!&lt;/p&gt;

&lt;p&gt;As a customer, you’re in for quite the wait and potentially limited options!&lt;/p&gt;

&lt;p&gt;In either case, time is at a premium which would likely lead to the cost being increased on the meal!&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;The reliever: Cook uses some pre-made items to jump-start their dishes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You don’t have to cook a chicken first if all you need is chicken broth. As a cook, you can have containers of broth for use. If you knew your list of meals up-front, you’d be able to deconstruct those meals into their underlying parts that can be jump-started by using other products or not starting from scratch to save you time.&lt;/p&gt;

&lt;p&gt;In this case, your pantry is your Service Catalog where you go to get the pieces to make your meal. Let’s hope you’re not in the restaurant kitchen peddling microwave dinners though …&lt;/p&gt;

&lt;h2 id=&quot;aws-and-aws-service-catalog&quot;&gt;AWS and AWS Service Catalog&lt;/h2&gt;

&lt;p&gt;AWS has 168 services that you can use, and Forrest Brazeal can lead us in song praising them…&lt;/p&gt;

&lt;div styles=&quot;width: 100%; display: flex; justify-content: center;&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/BtJAsvJOlhM&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;As a cook using AWS as your kitchen, you’re probably not going to want to prepare to use &lt;em&gt;each&lt;/em&gt; service from scratch every time. That’s where recipes come in, or AWS CloudFormation Stacks.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CloudFormation Stacks&lt;/code&gt;&lt;/a&gt; are the ingredients-list and recipe steps all in one for combining AWS services into a tasty treat for customers.&lt;/p&gt;

&lt;p&gt;So, where’s AWS Service Catalog come in if AWS CloudFormation Stacks handle all that? Well, it’s when you have a lot of similar services or many of them.&lt;/p&gt;

&lt;p&gt;Imagine you needed to have 254 Static-hosted websites or 126 projects in need of build and deploy pipelines. Oh, and eventually, you needed to change how both of those are made which dominoes into sharing those changes with how many engineers for them to interpret and follow? Well, it’s going to be a bumpy ride keeping that all in the same direction, but that’s where AWS Service Catalog comes in.&lt;/p&gt;

&lt;h3 id=&quot;aws-service-catalog&quot;&gt;AWS Service Catalog&lt;/h3&gt;

&lt;p&gt;It’s the menu for AWS Services, that you can define and centralize your operations on.&lt;/p&gt;

&lt;h4 id=&quot;features&quot;&gt;Features&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Portfolios&lt;/em&gt;, or the menu, are just that, a collection of things that can be made. They can be defined as AWS CloudFormation templates.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Products&lt;/em&gt;, or the dishes that can be ordered, are on the menu (Portfolio), and are made to order.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Versioning&lt;/em&gt;, is how &lt;em&gt;products&lt;/em&gt; change over time. They may read the same on the menu, but some ingredients may change over time.&lt;/p&gt;

&lt;h4 id=&quot;cost-to-use&quot;&gt;Cost to use&lt;/h4&gt;

&lt;p&gt;AWS Service Catalog used to be flat-rate cost service where Portfolios cost $5/month, and that was it. Now, the &lt;a href=&quot;https://aws.amazon.com/servicecatalog/pricing/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pricing model changed to be per-API call&lt;/code&gt;&lt;/a&gt;, or per action taken with the Portfolio/Products, which can make estimating cost possible with some napkin math, but ultimately cheaper for most use-cases.&lt;/p&gt;

&lt;p&gt;From the &lt;a href=&quot;https://aws.amazon.com/servicecatalog/pricing/&quot;&gt;AWS Service Catalog Pricing&lt;/a&gt; page, most of the calculated monthly examples end up being less than $0.50 per month.&lt;/p&gt;

&lt;p&gt;But, if you’re looking to try things out, there is 1000 API calls included in the &lt;a href=&quot;https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&amp;amp;all-free-tier.sort-order=asc&amp;amp;awsf.Free%20Tier%20Types=tier%23always-free&amp;amp;awsf.Free%20Tier%20Categories=categories%23mgmttools&amp;amp;all-free-tier.q=service%2Bcatalog&amp;amp;all-free-tier.q_operator=AND&quot;&gt;AWS “always free”&lt;/a&gt; tier monthly.&lt;/p&gt;

&lt;h4 id=&quot;ways-to-setup&quot;&gt;Ways to setup&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Via the AWS Console in your AWS Account, you can create everything by clicking around, like seen in the &lt;a href=&quot;https://www.youtube.com/watch?v=A9kKy6WhqVA&quot;&gt;Video: AWS Service Catalog - Getting Started&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-portfolio.html&quot;&gt;Create an AWS Service Catalog Portfolio&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-product.html&quot;&gt;Create an AWS Service Catalog Product&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Via AWS CLI
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/cli/latest/reference/servicecatalog/create-portfolio.html&quot;&gt;Create an AWS Service Catalog Portfolio&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/cli/latest/reference/servicecatalog/create-product.html&quot;&gt;Create an AWS Service Catalog Product&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Via AWS CloudFormation
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-portfolio.html&quot;&gt;Create an AWS Service Catalog Portfolio&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-cloudformationproduct.html&quot;&gt;Create an AWS Service Catalog Product&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;next-post&quot;&gt;Next post&lt;/h2&gt;

&lt;p&gt;In a follow-up post, I’ll include a walkthrough setting up AWS Service Catalog from scratch. From Portfolio to Products with multiple versions and ultimately using AWS CodePipeline to deploy AWS CloudFormation templates as Products to the Portfolio for others to use!&lt;/p&gt;</content><author><name>CJ Taylor</name></author><summary type="html">What's AWS Service Catalog and a way to understand the concept before using it.</summary></entry><entry><title type="html">Mulling over ideas for posts from past projects and your input</title><link href="http://blog.bluegrass.dev/future-post-ideas/" rel="alternate" type="text/html" title="Mulling over ideas for posts from past projects and your input" /><published>2020-09-13T00:00:00+00:00</published><updated>2020-09-13T00:00:00+00:00</updated><id>http://blog.bluegrass.dev/future-post-ideas</id><content type="html" xml:base="http://blog.bluegrass.dev/future-post-ideas/">&lt;blockquote&gt;
  &lt;p&gt;“If a tree falls in the forest and nobody hears it…then my illegal logging business is a success” - &lt;a href=&quot;https://www.reddit.com/r/Jokes/comments/4xinzl/if_a_tree_falls_in_the_forest_and_nobody_hears_it/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Someone on Reddit&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Jokes aside, there’s a wide mixture of fun and dull problems solved one iteration at a time. I’ve liked the idea of writing more, so I’m prepping up ideas so that my efforts/interests aren’t like a tree in the woods; unheard or unnoticed.&lt;/p&gt;

&lt;p&gt;After brainstorming yesterday, here are some ideas I’m considering. If any catch your attention or you have suggestions, let me know!&lt;/p&gt;

&lt;h2 id=&quot;walkthroughs--projects&quot;&gt;Walkthroughs / Projects&lt;/h2&gt;

&lt;h3 id=&quot;aws&quot;&gt;AWS&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/cdk/latest/guide/home.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CDK&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Developing a &lt;a href=&quot;https://docs.aws.amazon.com/cdk/latest/guide/constructs.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;level-2 construct&lt;/code&gt;&lt;/a&gt; for
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/elasticbeanstalk/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS Elastic Beanstalk&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/servicecatalog/?aws-service-catalog.sort-by=item.additionalFields.createdDate&amp;amp;aws-service-catalog.sort-order=desc&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS Service Catalog&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;Using &lt;a href=&quot;https://aws.amazon.com/blogs/developer/cdk-pipelines-continuous-delivery-for-aws-cdk-applications/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CDK Pipelines&lt;/code&gt;&lt;/a&gt; to incrementally develop your applications across multiple environments&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Cost optimizations
    &lt;ul&gt;
      &lt;li&gt;Reserved Instances and calculating &lt;a href=&quot;https://aws.amazon.com/about-aws/whats-new/2019/02/normalized-units-information-for-amazon-ec2-reservations-in-aws-cost-explorer/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Normalized Units&lt;/code&gt;&lt;/a&gt; to lower base units for a purchase&lt;/li&gt;
      &lt;li&gt;Using &lt;a href=&quot;https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS:AutoScaling::ScheduledAction&lt;/code&gt;&lt;/a&gt; to scale down in off-hours&lt;/li&gt;
      &lt;li&gt;Using &lt;a href=&quot;https://aws.amazon.com/solutions/implementations/instance-scheduler/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS Instance Scheduler&lt;/code&gt;&lt;/a&gt; for AWS RDS, AWS EC2, and AWS AutoScalingGroup cost savings&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;[`AWS Service Catalog`](https://aws.amazon.com/servicecatalog/?aws-service-catalog.sort-by=item.additionalFields.createdDate&amp;amp;aws-service-catalog.sort-order=desc)&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS Service Catalog&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Setting up Portfolios, Products and utilizing a single AWS CodePipeline to push Product updates for multiple products&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/codepipeline/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CodePipeline&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Configuring multi-environment application pipelines with testing embedded and approvals&lt;/li&gt;
      &lt;li&gt;Building pipelines to deploy/promote Database Migrations&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/cloudformation/#:~:text=AWS%20Cloud%E2%80%8BFormation&amp;amp;text=AWS%20CloudFormation%20allows%20you%20to,AWS%20and%20third%20party%20resources.&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CloudFormation&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Building CI/CD pipelines for CloudFormation resources with Pull Request Feedback&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS AppConfig&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Integrating AWS AppConfig into your application and using it for run-time configuration like Feature-Toggles&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;github&quot;&gt;GitHub&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/features/actions&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Github Actions&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Using Github Actions to build/deploy iOS/Android applications&lt;/li&gt;
      &lt;li&gt;Creating private Custom GitHub Actions&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Using &lt;a href=&quot;https://www.terraform.io/docs/providers/github/index.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Terraform to manage your GitHub&lt;/code&gt;&lt;/a&gt; Organizations, Repos, Teams, and settings&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/features/codespaces&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;GitHub CodeSpaces&lt;/code&gt;&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;Using CodeSpaces to develop on open source projects&lt;/li&gt;
      &lt;li&gt;Configuring CodeSpaces to be “just right” for all your projects&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;raspberry-pi&quot;&gt;Raspberry Pi&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Building a k3s cluster&lt;/li&gt;
  &lt;li&gt;Using AWS to deploy to a Raspberry Pi k3s cluster&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;book-reviews--take-aways&quot;&gt;Book reviews / take-aways&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B076VXPXND/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Database Reliability Engineering: Designing and Operating Resilient Database Systems_ by Laine Campbell, Charity Majors&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B08FBP3ZRH/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Implementing Service Level Objectives: A Practical Guide to Slis, Slos, and Error Budgets_ by Alex Hidalgo&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B08CXNRPZC/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Full Stack Serverless: Modern Application Development with React, AWS, and GraphQL_ by Nader Dabit&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B07JJNSP92/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Technology Strategy Patterns: Architecture as Strategy_ by Eben Hewitt&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B003YMNVC0/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Addison-Wesley Signature Series (Fowler))_ by Humble Jez, Farley David&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B00QL5MSF8/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Lean Enterprise: How High Performance Organizations Innovate at Scale (Lean (O'Reilly))_ by Jez Humble, Joanne Molesky, Barry O'Reilly&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B07K2M9XRV/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Lean Impact: How to Innovate for Radically Greater Social Good_ by Ann Mei Chang&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.amazon.com/gp/product/B07H8PH7VB/ref=kinw_myk_ro_title&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_Continuous Testing for DevOps Professionals: A Practical Guide From Industry Experts_ by
Eran Kinsbruner&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>CJ Taylor</name></author><summary type="html">See something you'd like to read about? Let me know!</summary></entry><entry><title type="html">AWS CDK Elastic Beanstalk Examples</title><link href="http://blog.bluegrass.dev/aws-cdk-elastic-beanstalk-examples/" rel="alternate" type="text/html" title="AWS CDK Elastic Beanstalk Examples" /><published>2020-07-17T00:00:00+00:00</published><updated>2020-07-17T00:00:00+00:00</updated><id>http://blog.bluegrass.dev/aws-cdk-elastic-beanstalk-examples</id><content type="html" xml:base="http://blog.bluegrass.dev/aws-cdk-elastic-beanstalk-examples/">&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;#overview&quot;&gt;Overview&lt;/a&gt;
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;#setting-up&quot;&gt;Setting up&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#01-creating-an-application&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;01-creating-an-application&lt;/code&gt;&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#aws-elasticbeanstalk-application&quot;&gt;AWS ElasticBeanstalk Application&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;#aws-cloudformation-console&quot;&gt;AWS CloudFormation Console&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#02-creating-an-environment&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;02-creating-an-environment&lt;/code&gt;&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#aws-elasticbeanstalk-application-1&quot;&gt;AWS ElasticBeanstalk Application&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;#aws-cloudformation-console-1&quot;&gt;AWS CloudFormation Console&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a href=&quot;#the-running-application&quot;&gt;The running application&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#03-environment-using-spot-instances&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;03-environment-using-spot-instances&lt;/code&gt;&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#aws-elasticbeanstalk-environment-capacity-options&quot;&gt;AWS ElasticBeanstalk Environment Capacity Options&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#04-multiple-environments&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;04-multiple-environments&lt;/code&gt;&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#aws-elasticbeanstalk-environments&quot;&gt;AWS ElasticBeanstalk Environments&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;#05-pipeline-to-single-environment&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;05-pipeline-to-single-environment&lt;/code&gt;&lt;/a&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a href=&quot;#aws-codepipeline&quot;&gt;AWS CodePipeline&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;overview&quot;&gt;Overview&lt;/h1&gt;

&lt;p&gt;&lt;a href=&quot;https://aws.amazon.com/cdk/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CDK&lt;/code&gt;&lt;/a&gt; enables you to codify infrastructure within a &lt;a href=&quot;https://docs.aws.amazon.com/cdk/latest/guide/work-with.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;variety of programming languages&lt;/code&gt;&lt;/a&gt; to build reusable constructs that generate large amounts of AWS CloudFormation. The ratio of effort input vs value output is astounding.&lt;/p&gt;

&lt;p&gt;In this repository is a public learning effort gradually ramping up toward full SDLC of an application backed by AWS ElasticBeanstalk.&lt;/p&gt;

&lt;p&gt;Notably, AWS CDK has L1 &lt;a href=&quot;https://docs.aws.amazon.com/cdk/latest/guide/constructs.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;constructs&lt;/code&gt;&lt;/a&gt; for &lt;a href=&quot;https://docs.aws.amazon.com/cdk/api/latest/typescript/api/aws-elasticbeanstalk.html&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS ElasticBeanstalk&lt;/code&gt;&lt;/a&gt;. My hope is to take what exists today in AWS CDK as far as it can go, and organically find what L2/L3 constructs for AWS ElasticBeanstalk that could benefit the community.&lt;/p&gt;

&lt;h2 id=&quot;setting-up&quot;&gt;Setting up&lt;/h2&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;c&quot;&gt;# Get the code&lt;/span&gt;
git clone git@github.com:bluegrass-dev/aws-cdk-elastic-beanstalk-examples.git
&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;aws-cdk-elastic-beanstalk-examples

&lt;span class=&quot;c&quot;&gt;# Install nvm - https://github.com/nvm-sh/nvm#install--update-script&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# install NodeJS LTS&lt;/span&gt;
nvm &lt;span class=&quot;nb&quot;&gt;install&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--lts&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;01-creating-an-application&quot;&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/01-creating-an-application/lib/01-creating-an-application-stack.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;01-creating-an-application&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;AWS Elastic Beanstalk has a concept of an Application that houses multiple environments. Here, we create that Application, that doesn’t do much for us, but is a great start!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/01-creating-an-application/bin/01-creating-an-application.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CDK App&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/01-creating-an-application/lib/01-creating-an-application-stack.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Underlying stack&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;▶ &lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;01-creating-an-application
▶ npm i

&lt;span class=&quot;c&quot;&gt;# Let's validate our synthesized CloudFormation&lt;/span&gt;
▶ npm run &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 01-creating-an-application@0.1.0 &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/01-creating-an-application
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; jest

 PASS  &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;/01-creating-an-application.test.ts
  ✓ ElasticBeanstalk Application Created &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;187ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        1.664s, estimated 3s
Ran all &lt;span class=&quot;nb&quot;&gt;test &lt;/span&gt;suites.

&lt;span class=&quot;c&quot;&gt;# 🚢 it!&lt;/span&gt;
▶ npm run cdk deploy

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 01-creating-an-application@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/01-creating-an-application
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;deploy&quot;&lt;/span&gt;

CreatingAnApplicationStack: deploying...
CreatingAnApplicationStack: creating CloudFormation changeset...
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;██████████████████████████████████████████████████████████] &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;3/3&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;


 ✅  CreatingAnApplicationStack

Stack ARN:
arn:aws:cloudformation:us-west-2:140483673113:stack/CreatingAnApplicationStack/d0ed1ea0-c86e-11ea-b97b-06724f918394

&lt;span class=&quot;c&quot;&gt;# throw it in the 🗑️ when you're done!&lt;/span&gt;
▶ npm run cdk destroy

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 01-creating-an-application@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/01-creating-an-application
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;destroy&quot;&lt;/span&gt;

Are you sure you want to delete: CreatingAnApplicationStack &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;y/n&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;? y
CreatingAnApplicationStack: destroying...

 ✅  CreatingAnApplicationStack: destroyed
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;aws-elasticbeanstalk-application&quot;&gt;AWS ElasticBeanstalk Application&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bluegrass-dev/cdk-elastic-beanstalk-examples/master/assets/01-elastic-beanstalk-console.png&quot; alt=&quot;AWS ElasticBeanstalk Application&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;aws-cloudformation-console&quot;&gt;AWS CloudFormation Console&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bluegrass-dev/cdk-elastic-beanstalk-examples/master/assets/01-cloudformation-console.png&quot; alt=&quot;AWS CloudFormation Console&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;02-creating-an-environment&quot;&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/02-creating-an-environment/lib/02-creating-an-environment-stack.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;02-creating-an-environment&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Next, let’s create an AWS ElasticBeanstalk Application again, then create a single Environment running Java 8.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/02-creating-an-environment/bin/02-creating-an-environment.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CDK App&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/02-creating-an-environment/lib/02-creating-an-environment-stack.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Underlying stacks&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;▶ &lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;02-creating-an-environment
▶ npm i

&lt;span class=&quot;c&quot;&gt;# Let's validate our synthesized CloudFormation&lt;/span&gt;
▶ npm run &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 02-creating-an-environment@0.1.0 &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/02-creating-an-environment
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; jest

 PASS  &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;/02-creating-an-environment.test.ts
  ✓ ElasticBeanstalk Application Created &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;203ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  ✓ ElasticBeanstalk Environment Created &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;119ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        2.58s, estimated 3s
Ran all &lt;span class=&quot;nb&quot;&gt;test &lt;/span&gt;suites.

&lt;span class=&quot;c&quot;&gt;# 🚢 it!&lt;/span&gt;
▶ npm run cdk deploy &lt;span class=&quot;s1&quot;&gt;'*'&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 02-creating-an-environment@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/02-creating-an-environment
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;deploy&quot;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;

CreatingAnEnvironmentStack: deploying...
CreatingAnEnvironmentStack: creating CloudFormation changeset...


 ✅  CreatingAnEnvironmentStack

Outputs:
CreatingAnEnvironmentStack.EnvironmentUrl &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; http://awseb-e-9-AWSEBLoa-PMCKHN9GSWUA-1954471332.us-east-1.elb.amazonaws.com

Stack ARN:
arn:aws:cloudformation:us-east-1:858981056259:stack/CreatingAnEnvironmentStack/79f67d20-c874-11ea-ac16-0e58854680da

&lt;span class=&quot;c&quot;&gt;# throw it in the 🗑️ when you're done!&lt;/span&gt;
▶ npm run cdk destroy

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 02-creating-an-environment@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/02-creating-an-environment
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;destroy&quot;&lt;/span&gt;

Are you sure you want to delete: CreatingAnEnvironmentStack &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;y/n&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;? y
CreatingAnEnvironmentStack: destroying...
5:47:08 PM | DELETE_IN_PROGRESS   | AWS::CloudFormation::Stack         | CreatingAnEnvironmentStack
5:50:14 PM | DELETE_IN_PROGRESS   | AWS::ElasticBeanstalk::Application | Application

 ✅  CreatingAnEnvironmentStack: destroyed
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;aws-elasticbeanstalk-application-1&quot;&gt;AWS ElasticBeanstalk Application&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bluegrass-dev/cdk-elastic-beanstalk-examples/master/assets/02-elastic-beanstalk-console.png&quot; alt=&quot;AWS ElasticBeanstalk Application&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;aws-cloudformation-console-1&quot;&gt;AWS CloudFormation Console&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bluegrass-dev/cdk-elastic-beanstalk-examples/master/assets/02-cloudformation-console.png&quot; alt=&quot;AWS CloudFormation Console&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;the-running-application&quot;&gt;The running application&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bluegrass-dev/cdk-elastic-beanstalk-examples/master/assets/02-running-application.png&quot; alt=&quot;Running application&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;03-environment-using-spot-instances&quot;&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/03-environment-using-spot-instances/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;03-environment-using-spot-instances&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Let’s be cost-conscious and create our Environments utilizing AWS EC2 Spot Instances through the native support via AWS ElasticBeanstalk!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/03-environment-using-spot-instances/bin/03-environment-using-spot-instances.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CDK App&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/03-environment-using-spot-instances/lib/03-environment-using-spot-instances-stack.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Underlying stacks&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;▶ &lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;03-environment-using-spot-instances
▶ npm i

&lt;span class=&quot;c&quot;&gt;# Let's validate our synthesized CloudFormation&lt;/span&gt;
▶ npm run &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 03-environment-using-spot-instances@0.1.0 &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/03-environment-using-spot-instances
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; jest

 PASS  &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;/03-environment-using-spot-instances.test.ts
  ✓ ElasticBeanstalk Application Created &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;210ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  ✓ ElasticBeanstalk Environment Created &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;116ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  ✓ ElasticBeanstalk Environment is using 100% Spot Instances &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;118ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

Test Suites: 1 passed, 1 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        3.806s
Ran all &lt;span class=&quot;nb&quot;&gt;test &lt;/span&gt;suites.

&lt;span class=&quot;c&quot;&gt;# 🚢 it!&lt;/span&gt;
▶ npm run cdk deploy &lt;span class=&quot;s1&quot;&gt;'*'&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 03-environment-using-spot-instances@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/03-environment-using-spot-instances
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;deploy&quot;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;

EnvironmentUsingSpotInstancesStack: deploying...
EnvironmentUsingSpotInstancesStack: creating CloudFormation changeset...
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;██████████████████████████████████████████████████████████] &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;4/4&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

 ✅  EnvironmentUsingSpotInstancesStack

Stack ARN:
arn:aws:cloudformation:us-east-1:858981056259:stack/EnvironmentUsingSpotInstancesStack/29b3ee70-c878-11ea-89cf-0e05d1a3c102


&lt;span class=&quot;c&quot;&gt;# throw it in the 🗑️ when you're done!&lt;/span&gt;
▶ npm run cdk destroy

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 03-environment-using-spot-instances@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/03-environment-using-spot-instances
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;destroy&quot;&lt;/span&gt;

Are you sure you want to delete: EnvironmentUsingSpotInstancesStack &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;y/n&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;? y
EnvironmentUsingSpotInstancesStack: destroying...

 ✅  EnvironmentUsingSpotInstancesStack: destroyed

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;aws-elasticbeanstalk-environment-capacity-options&quot;&gt;AWS ElasticBeanstalk Environment Capacity Options&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bluegrass-dev/cdk-elastic-beanstalk-examples/master/assets/03-elastic-beanstalk-console-capacity-options.png&quot; alt=&quot;AWS ElasticBeanstalk Application&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;04-multiple-environments&quot;&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/04-multiple-environments/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;04-multiple-environments&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Alright, we have our Application and Environment in place, but what’s it look like to create multiple Environments? Do we have to copy/paste code, or can we make it reusable?&lt;/p&gt;

&lt;p&gt;🚨🚨 Spoiler alert: we can make a parameterized stack and instantiate multiple! 🚨🚨&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/04-multiple-environments/bin/04-multiple-environments.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CDK App&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/04-multiple-environments/lib/04-multiple-environments-stack.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Underlying stacks&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;▶ &lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;04-multiple-environments
▶ npm i

&lt;span class=&quot;c&quot;&gt;# Let's validate our synthesized CloudFormation&lt;/span&gt;
▶ npm run &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 04-multiple-environments@0.1.0 &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt; /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/04-multiple-environments
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; jest

 PASS  &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;/04-multiple-environments.test.ts
  ✓ ElasticBeanstalk Application Created &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;208ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
  ✓ ElasticBeanstalk Environments Created &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;129ms&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;

Test Suites: 1 passed, 1 total
Tests:       2 passed, 2 total
Snapshots:   0 total
Time:        3.569s
Ran all &lt;span class=&quot;nb&quot;&gt;test &lt;/span&gt;suites.

&lt;span class=&quot;c&quot;&gt;# 🚢 it!&lt;/span&gt;
▶ npm run cdk deploy &lt;span class=&quot;s1&quot;&gt;'*'&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 04-multiple-environments@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/04-multiple-environments
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;deploy&quot;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;

ApplicationStack
ApplicationStack: deploying...
ApplicationStack: creating CloudFormation changeset...

 ✅  ApplicationStack

Stack ARN:
arn:aws:cloudformation:us-east-1:858981056259:stack/ApplicationStack/cfe8c270-c878-11ea-98ca-0ab389d40b93
Environment1Stack
Environment1Stack: deploying...
Environment1Stack: creating CloudFormation changeset...

 ✅  Environment1Stack

Stack ARN:
arn:aws:cloudformation:us-east-1:858981056259:stack/Environment1Stack/da126210-c878-11ea-b389-1272d872aba7
Environment2Stack
Environment2Stack: deploying...
Environment2Stack: creating CloudFormation changeset...

 ✅  Environment2Stack

Stack ARN:
arn:aws:cloudformation:us-east-1:858981056259:stack/Environment2Stack/53b4b050-c879-11ea-9f91-122ae4ce5d77

&lt;span class=&quot;c&quot;&gt;# throw it in the 🗑️ when you're done!&lt;/span&gt;

▶ npm run cdk destroy &lt;span class=&quot;s1&quot;&gt;'*'&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; 04-multiple-environments@0.1.0 cdk /Users/Bluegrass-Dev/github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/04-multiple-environments
&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; cdk &lt;span class=&quot;s2&quot;&gt;&quot;destroy&quot;&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;

Are you sure you want to delete: Environment2Stack, Environment1Stack, ApplicationStack &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;y/n&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;? y
Environment2Stack: destroying...
 ✅  Environment2Stack: destroyed

Environment1Stack: destroying...
 ✅  Environment1Stack: destroyed

ApplicationStack: destroying...
 ✅  ApplicationStack: destroyed
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;aws-elasticbeanstalk-environments&quot;&gt;AWS ElasticBeanstalk Environments&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/bluegrass-dev/cdk-elastic-beanstalk-examples/master/assets/04-elastic-beanstalk-multiple-environments.png&quot; alt=&quot;AWS ElasticBeanstalk Application&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;05-pipeline-to-single-environment&quot;&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/05-pipeline-to-single-environment/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;05-pipeline-to-single-environment&lt;/code&gt;&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;Up to here, we have an Application with multiple Environments, but we want to be able to ship new changes to these environments. So, let’s take a step back to a single Environment, add in AWS CodeBuild and AWS CodePipeline, and deploy a built application to the Environment!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/05-pipeline-to-single-environment/bin/05-pipeline-to-single-environment.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;AWS CDK App&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/05-pipeline-to-single-environment/lib/05-pipeline-to-single-environment-stack.ts&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Underlying stacks&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;▶ &lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;05-pipeline-to-single-environment
▶ npm i

&lt;span class=&quot;c&quot;&gt;# Let's validate our synthesized CloudFormation&lt;/span&gt;
▶ npm run &lt;span class=&quot;nb&quot;&gt;test&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# Set our AWS Secrets Manager value for AWS CodePipeline to use for access to the GitHub Repository&lt;/span&gt;
▶ &lt;span class=&quot;nv&quot;&gt;GITHUB_TOKEN&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$GITHUB_TOKEN&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;AWS_REGION&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$AWS_REGION&lt;/span&gt; https://github.com/bluegrass-dev/cdk-elastic-beanstalk-examples/blob/master/scripts/set-secrets.sh

&lt;span class=&quot;c&quot;&gt;# 🚢 it!&lt;/span&gt;
▶ npm run cdk deploy &lt;span class=&quot;s1&quot;&gt;'*'&lt;/span&gt;

&lt;span class=&quot;c&quot;&gt;# throw it in the 🗑️ when you're done!&lt;/span&gt;
▶ npm run cdk destroy

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;aws-codepipeline&quot;&gt;AWS CodePipeline&lt;/h3&gt;

&lt;p&gt;TODO&lt;/p&gt;</content><author><name>CJ Taylor</name></author><summary type="html">Explorations of the AWS CDK kind into AWS ElasticBeanstalk from scratch.</summary></entry><entry><title type="html">From AWS Elastic Beanstalk to AWS EKS</title><link href="http://blog.bluegrass.dev/from-aws-elastic-beanstalk-to-eks/" rel="alternate" type="text/html" title="From AWS Elastic Beanstalk to AWS EKS" /><published>2020-05-17T00:00:00+00:00</published><updated>2020-05-17T00:00:00+00:00</updated><id>http://blog.bluegrass.dev/from-aws-elastic-beanstalk-to-eks</id><content type="html" xml:base="http://blog.bluegrass.dev/from-aws-elastic-beanstalk-to-eks/">&lt;h2 id=&quot;from-aws-elastic-beanstalk-to-aws-eks&quot;&gt;From AWS Elastic Beanstalk to AWS EKS&lt;/h2&gt;

&lt;h3 id=&quot;links&quot;&gt;Links&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/e/2PACX-1vQiB6MIp963hZStyGmcUDXA_KxoDy3NnV_LAO0kbQBbFEsYbjJEqAK4mrPQT32ZrMKjbGzVWZ8xaHdT/pub?start=false&amp;amp;loop=false&amp;amp;delayms=3000&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Presentation slides&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/bluegrass-dev/talk-from-elasticbeanstalk-to-eks&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Presentation code&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.meetup.com/Kubernetes-and-Cloud-Native-Computing-Louisville/events/cdrwlrybchbkb/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Meetup Details: Kubernetes-and-Cloud-Native-Computing-Louisville&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div styles=&quot;width: 100%; display: flex; justify-content: center;&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/z-2ofRWXYdc&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h3 id=&quot;overview&quot;&gt;Overview&lt;/h3&gt;

&lt;p&gt;What could it look like to experiment with an existing application running on AWS ElasticBeansatlk over to AWS EKS using modern tools?&lt;/p&gt;

&lt;p&gt;In this talk and the code, we’re re-using the AWS Sample eb-java-scorekeep application. From there, we deploy to AWS ElasticBeanstalk Java Platform.&lt;/p&gt;

&lt;p&gt;Wanting to begin our explorations, we shift the application to AWS ElasticBeanstalk Docker Platform.&lt;/p&gt;

&lt;p&gt;Next, we start looking at AWS CDK for using imperative code to help us do more with less code to deploy an AWS ECS Cluster with AWS Fargate Services.&lt;/p&gt;

&lt;p&gt;Lastly, we land at AWS EKS with a cluster created via AWS CDK, our application packaged and deployed to our cluster via AWS CDK.&lt;/p&gt;

&lt;p&gt;As an extra bit, AWS CDK8S is stubbed out as a potential for future exploration of codifying our Kubernetes Resources.&lt;/p&gt;

&lt;h3 id=&quot;meetup-details&quot;&gt;Meetup details&lt;/h3&gt;

&lt;p&gt;Experimentation and cutovers don’t have to be immediate. What could it look like to trial a Java workload from AWS Elastic Beanstalk through phases to running on AWS ECS and AWS EKS? We step through some findings with newer tools enabling us to do far more for far less!&lt;/p&gt;

&lt;p&gt;Local - VSCode, Make, Docker, AWS CLI, AWS CDK, AWS CDK8S
AWS - AWS CodePipeline, AWS CodeBuild, AWS Elastic Beanstalk, AWS Elastic Container Registry, AWS Elastic Container Service, AWS Elastic Kubernetes Service&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Scenario&lt;/li&gt;
  &lt;li&gt;Our goal&lt;/li&gt;
  &lt;li&gt;Overview of the tools involved&lt;/li&gt;
  &lt;li&gt;Our baseline infrastructure: AWS ElasticBeanstalk Java via AWS CloudFormation&lt;/li&gt;
  &lt;li&gt;Experiment 1: AWS ElasticBeanstalk Docker via AWS CloudFormation&lt;/li&gt;
  &lt;li&gt;Experiment 2: AWS ECS Fargate via AWS CDK&lt;/li&gt;
  &lt;li&gt;Experiment 3: AWS EKS via AWS CDK&lt;/li&gt;
  &lt;li&gt;Experiment 3+1: AWS EKS resources via AWS CDK8s&lt;/li&gt;
  &lt;li&gt;Questions?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Outputs&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://blog.bluegrass.dev/from-aws-elastic-beanstalk-to-eks&quot;&gt;Presenation Material&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Speaker bio: CJ Taylor - blog.blugrass.dev&lt;/p&gt;</content><author><name>CJ Taylor</name></author><summary type="html">Resources for a local meetup talk that ventures into AWS CDK and CDK8s.</summary></entry><entry><title type="html">Cooking my brand like homemade spaghetti</title><link href="http://blog.bluegrass.dev/developing-my-personal-brand/" rel="alternate" type="text/html" title="Cooking my brand like homemade spaghetti" /><published>2020-05-07T00:00:00+00:00</published><updated>2020-05-07T00:00:00+00:00</updated><id>http://blog.bluegrass.dev/developing-my-personal-brand</id><content type="html" xml:base="http://blog.bluegrass.dev/developing-my-personal-brand/">&lt;h2 id=&quot;table-of-contents&quot;&gt;Table of contents&lt;/h2&gt;

&lt;ol class=&quot;no_toc text-delta&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#table-of-contents&quot; id=&quot;markdown-toc-table-of-contents&quot;&gt;Table of contents&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#howdy&quot; id=&quot;markdown-toc-howdy&quot;&gt;Howdy&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#throwing-spaghetti-at-the-wall&quot; id=&quot;markdown-toc-throwing-spaghetti-at-the-wall&quot;&gt;Throwing spaghetti at the wall&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#boiling-your-noodle&quot; id=&quot;markdown-toc-boiling-your-noodle&quot;&gt;Boiling your noodle&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#al-dente---bluegrassdev&quot; id=&quot;markdown-toc-al-dente---bluegrassdev&quot;&gt;Al dente - bluegrass.dev&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#plating-my-dish&quot; id=&quot;markdown-toc-plating-my-dish&quot;&gt;Plating my dish&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#can-we-eat-now&quot; id=&quot;markdown-toc-can-we-eat-now&quot;&gt;Can we eat now&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a id=&quot;markdown-cooking-my-brand-like-homemade-spaghetti&quot; name=&quot;cooking-my-brand-like-homemade-spaghetti&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;howdy&quot;&gt;Howdy&lt;/h2&gt;

&lt;p&gt;Howdy, folks -&lt;/p&gt;

&lt;p&gt;Personal branding isn’t something I’ve thought much about in the past. I’m one that believes consistent actions speak for themselves. But with an upcoming commitment to speak at, it dawned on me that I have no consolidated place for folks to go!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Hope you like the talk and if you want to find out more, check out:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;All the code for this presentation found in &lt;a href=&quot;https://www.github.com/cj-taylor/$INSERT_NAME_OF_REPO_MADE_WHEN_YOU_ACTUALLY_WORK_ON_IT&quot;&gt;https://www.github.com/cj-taylor/$INSERT_NAME_OF_REPO_MADE_WHEN_YOU_ACTUALLY_WORK_ON_IT&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Let’s roll our faces on keyboards to make code together via github.com/cj-taylor&lt;/li&gt;
  &lt;li&gt;Let’s be professionals together via &lt;a href=&quot;https://www.linkedin.com/in/cj-taylor/&quot;&gt;https://www.linkedin.com/in/cj-taylor/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Let’s make bird noises together via &lt;a href=&quot;https://twitter.com/BluegrassDevCJ&quot;&gt;https://twitter.com/BluegrassDevCJ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;hr /&gt;

&lt;p&gt;Excellent user experience, right? Not in my mind. I got motivated to create a single place where folks can deep-link to specific events, all the needful call-to-actions, and opportunities to share more on how the presentation came to be and evolved. I was left with an itch in my brain, saying, “figure it out, you’ll thank yourself later!” So, onto ideas, we go!&lt;/p&gt;

&lt;p&gt;&lt;a id=&quot;markdown-throwing-spaghetti-at-the-wall&quot; name=&quot;throwing-spaghetti-at-the-wall&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;throwing-spaghetti-at-the-wall&quot;&gt;Throwing spaghetti at the wall&lt;/h2&gt;

&lt;p&gt;Some call this generating a “word cloud” or “mind mapping” to organically generate a consolidated idea from throwing words out there and connecting them to see what can stick. So, I went about “throwing spaghetti at the wall” to see what would stick.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Goal
    &lt;ul&gt;
      &lt;li&gt;Document what I do and share with others for ease of access and cross-referencing&lt;/li&gt;
      &lt;li&gt;Package it all up in an authentic way&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;About me
    &lt;ul&gt;
      &lt;li&gt;Jovial&lt;/li&gt;
      &lt;li&gt;Self-driven&lt;/li&gt;
      &lt;li&gt;Coffee for days&lt;/li&gt;
      &lt;li&gt;Lives in Kentucky&lt;/li&gt;
      &lt;li&gt;Writes most, if not all emails with “Howdy,” “Howdy, folks -,” “Cheers,” salutations&lt;/li&gt;
      &lt;li&gt;Gets attributed for being from a big city despite being from “this sticks” of Kentucky&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;About what I do
    &lt;ul&gt;
      &lt;li&gt;Software Engineering&lt;/li&gt;
      &lt;li&gt;Develops in whatever languages or tools that best fit the problem&lt;/li&gt;
      &lt;li&gt;Critical thinking&lt;/li&gt;
      &lt;li&gt;Self-teaching when I don’t know something&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;markdown-boiling-your-noodle&quot; name=&quot;boiling-your-noodle&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;boiling-your-noodle&quot;&gt;Boiling your noodle&lt;/h2&gt;

&lt;p&gt;After my ~30 minute exercise to get to the above listing, I wanted to “aim small, miss small.” So, I boiled down what my noodle came up with some word association.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;About me
    &lt;ul&gt;
      &lt;li&gt;Kentucky
        &lt;ul&gt;
          &lt;li&gt;The Bluegrass State&lt;/li&gt;
          &lt;li&gt;Motto: “Unbridled Spirit”&lt;/li&gt;
          &lt;li&gt;Derby =&amp;gt; horses =&amp;gt; they gallop =&amp;gt; in fields&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;About what I do
    &lt;ul&gt;
      &lt;li&gt;Software Engineering =&amp;gt; a field of study&lt;/li&gt;
      &lt;li&gt;Software =&amp;gt; Can be open/closed source&lt;/li&gt;
      &lt;li&gt;Develops =&amp;gt; To dev or to write code =&amp;gt; dev =&amp;gt; .dev =&amp;gt; a Generic Top Level Domain that exists&lt;/li&gt;
      &lt;li&gt;Language/tool agnostic =&amp;gt; multiple “fields” of study (frontend/backend/database/infrastructure/etc.)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My Generated motto: “An unbridled spirit that gallops around the open fields of software.”&lt;/p&gt;

&lt;p&gt;Okay, now we’re cooking, a much smaller target! Off to Namecheap.com, I went searching for various keywords.&lt;/p&gt;

&lt;p&gt;Searches:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Domain searches:
    &lt;ul&gt;
      &lt;li&gt;Kentucky software&lt;/li&gt;
      &lt;li&gt;Bourbon and dev&lt;/li&gt;
      &lt;li&gt;bluegrass Fields of software&lt;/li&gt;
      &lt;li&gt;Bluegrass&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;TLDs (Top Level Domains)
    &lt;ul&gt;
      &lt;li&gt;.xyz&lt;/li&gt;
      &lt;li&gt;.dev&lt;/li&gt;
      &lt;li&gt;.com&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a id=&quot;markdown-al-dente---bluegrassdev&quot; name=&quot;al-dente---bluegrassdev&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;al-dente---bluegrassdev&quot;&gt;Al dente - bluegrass.dev&lt;/h2&gt;

&lt;p&gt;Where I landed:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;bluegrass.dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;So brief, but it seems like it articulates where and what enough to click to find out more.&lt;/p&gt;

&lt;p&gt;Bewilder, it was available; I bought the domain on Namecheap.com. Next step hosting. I wanted a quick and easy way to spin up a static site without a concern for cost or configuration. For this, I turned to an old friend, Github Pages.&lt;/p&gt;

&lt;p&gt;&lt;a id=&quot;markdown-plating-my-dish&quot; name=&quot;plating-my-dish&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;plating-my-dish&quot;&gt;Plating my dish&lt;/h2&gt;

&lt;p&gt;Ingredients cooked up, my last step was to plate the dish before serving for consumption.&lt;/p&gt;

&lt;p&gt;Goal: Github Pages, update via commit a minimal content focused website.&lt;/p&gt;

&lt;p&gt;Seeing as my target was to provide more text-centric content, it felt like a good “documentation” experience would be nice.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Github Pages “Just the docs” Jekyll theme demo: &lt;a href=&quot;https://pmarsceill.github.io/just-the-docs/&quot;&gt;https://pmarsceill.github.io/just-the-docs/&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Excitingly enough, Github’s supports the ability to reference a &lt;a href=&quot;https://github.blog/2017-11-29-use-any-theme-with-github-pages/&quot;&gt;“remote theme”&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Following through the steps for establishing a &lt;a href=&quot;https://help.github.com/en/github/working-with-github-pages/configuring-a-custom-domain-for-your-github-pages-site&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Custom Domain for a Github Pages site&lt;/code&gt;&lt;/a&gt;, I had this wired up in the basic form in about 20 minutes!&lt;/p&gt;

&lt;p&gt;&lt;a id=&quot;markdown-can-we-eat-now&quot; name=&quot;can-we-eat-now&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;can-we-eat-now&quot;&gt;Can we eat now&lt;/h2&gt;

&lt;p&gt;Here’s where you can see everything in action!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Github Repo: &lt;a href=&quot;https://github.com/bluegrass-dev/blog&quot;&gt;https://github.com/bluegrass-dev/blog&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Website: &lt;a href=&quot;https://blog.bluegrass.dev&quot;&gt;https://blog.bluegrass.dev&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><author><name>CJ Taylor</name></author><summary type="html">A brain dump of how I landed on bluegrass.dev for a personal brand.</summary></entry><entry><title type="html">Planting seeds for a culture of learning - starting DevBookClub</title><link href="http://blog.bluegrass.dev/planting-seeds-for-a-culture-of-learning/" rel="alternate" type="text/html" title="Planting seeds for a culture of learning - starting DevBookClub" /><published>2016-07-16T00:00:00+00:00</published><updated>2016-07-16T00:00:00+00:00</updated><id>http://blog.bluegrass.dev/planting-seeds-for-a-culture-of-learning</id><content type="html" xml:base="http://blog.bluegrass.dev/planting-seeds-for-a-culture-of-learning/">&lt;p&gt;&lt;em&gt;Original post on &lt;a href=&quot;https://medium.com/@CJTaylor/initial-draft-planting-the-seeds-for-a-culture-of-learning-77eefe2f13a1&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Medium&lt;/code&gt;&lt;/a&gt; brought here for posterity. I’ve since moved to another company, and the DevBookClub started grew into &lt;a href=&quot;https://www.meetup.com/devbookclub/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;a Louisville meetup - Dev Book Club&lt;/code&gt;&lt;/a&gt; by a fellow organizer.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“Don’t judge each day by the harvest your reap but by the seeds that you plant.” — Robert Louis Stevenson&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The following is not a new story, but one that many people before have played out time after time. I’ve done my best to make it as a general as possible as this can apply to so many situations. Toward the end, I get into more of the specifics of this given context which is software development. Hope you enjoy. :)
What’s left of this post before it’s no longer a draft?&lt;/p&gt;

&lt;h2 id=&quot;whats-left-of-this-post-before-its-no-longer-a-draft&quot;&gt;What’s left of this post before it’s no longer a draft?&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;The details of the actual context? &lt;a href=&quot;https://github.com/cj-taylor/Demo-DesignPatterns&quot;&gt;https://github.com/cj-taylor/Demo-DesignPatterns&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;How has the journey been after 10 weeks of functioning?&lt;/li&gt;
  &lt;li&gt;What lessons have been learned?&lt;/li&gt;
  &lt;li&gt;Address initial draft feedback and requests of those that are kind enough to provide it. If you’re reading this, then I greatly appreciate you and your feedback :)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;the-idea-that-created-a-hunger-to-explore&quot;&gt;The idea that created a hunger to explore&lt;/h2&gt;

&lt;p&gt;I have always been plagued with a curious mind, but it wasn’t until some time ago that I developed an interest in trying to share in that curiosity with others. I attribute that to the perspective gained by mentoring for an organization teaching others involving my given craft (&lt;a href=&quot;https://codelouisville.org/&quot;&gt;CodeLouisville&lt;/a&gt;, a post to come about that soon).&lt;/p&gt;

&lt;p&gt;What started with a giddy Facebook post (I’ve since deleted Facebook, but I made a similar &lt;a href=&quot;https://twitter.com/BluegrassDevCJ/status/725447766458175488?s=20&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;tweet on Twitter&lt;/code&gt;&lt;/a&gt;) by a nerd about some books led into sidebar discussions among peers revealing an opportunity. An opportunity to create a community around learning with others. Quite the contrast from what many of us were accustomed to; learning in silos as individuals.&lt;/p&gt;

&lt;h2 id=&quot;taking-inventory-for-the-voyage&quot;&gt;Taking inventory for the voyage&lt;/h2&gt;

&lt;p&gt;The initial chatter with my peers showed a variable amount of interest in certain areas, but we all seemed to agree on one thing; start simple. Having established our starting point, I wanted to ensure that whatever was done to grow the knowledge of our kindred minds wouldn’t have to be repeated from scratch; keep a history. Projecting the idea of the group further out in thought, we realized that it needed to be at least somewhat scheduled so others could rely on known dates and expectations; set a cadence and point of centralized updates. Lastly on our inventory was the final destination. Starting off slowly on the journey is safe, but the end destination is the larger goal; direct the group towards the end destination.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Start Simple&lt;/li&gt;
  &lt;li&gt;Keep a history&lt;/li&gt;
  &lt;li&gt;Set a cadence and a point of centralized updates&lt;/li&gt;
  &lt;li&gt;Direct the group toward the end destination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mind you; these conversations spanned only a day online, it was the next day that I put our infrastructure into place and we were dipping our toes into the water to check the temperature. I was scared of losing fleeting interest in the adventure, so acting quick was a must.&lt;/p&gt;

&lt;h2 id=&quot;pausing-story-time-here-for-now&quot;&gt;Pausing story time here for now&lt;/h2&gt;

&lt;p&gt;After churning on this post for an hour, I need to get back to the grind on some code for other projects. However, I fully intend to continue with the above mentioned “What’s left of this post before it’s no longer a draft?” and what feedback I get from the start of this post I’ve already published. Sheesh, starting this I was all “This is going to be dreadful” however this has been quite an enjoyable outlet thus far. More to come!&lt;/p&gt;</content><author><name>CJ Taylor</name></author><summary type="html">Planting seeds for a culture of learning - starting DevBookClub</summary></entry></feed>