<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dave Konopka</title><link>https://www.davekonopka.com/</link><description>Recent content on Dave Konopka</description><generator>Hugo -- 0.149.0</generator><language>en-us</language><lastBuildDate>Fri, 26 May 2023 00:00:00 +0000</lastBuildDate><atom:link href="https://www.davekonopka.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Would you hire ChatGPT?</title><link>https://www.davekonopka.com/2023/05/would-you-hire-chatgpt/</link><pubDate>Fri, 26 May 2023 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2023/05/would-you-hire-chatgpt/</guid><description>&lt;p&gt;I&amp;rsquo;ve heard that &lt;a href="https://openai.com/product/chatgpt"&gt;ChatGPT&lt;/a&gt; is capable of generating complex coding projects. I&amp;rsquo;ve been curious to give it a try for myself. So I decided to use one of the most reliable measurements of technical skills known to software hiring managers the world over: &lt;em&gt;a take-home coding project&lt;/em&gt;. But instead of giving ChatGPT a one pager describing what I was looking for and hearing back with a git repo link in a few days, it took the infamous large language model quite a bit of hand holding to get the job done.&lt;/p&gt;</description></item><item><title>Encrypted Amazon EC2 boot volumes with Packer and Ansible</title><link>https://www.davekonopka.com/2016/03/encrypted-amazon-ec2-boot-volumes-with-packer-and-ansible/</link><pubDate>Fri, 18 Mar 2016 09:00:00 -0800</pubDate><guid>https://www.davekonopka.com/2016/03/encrypted-amazon-ec2-boot-volumes-with-packer-and-ansible/</guid><description>&lt;p&gt;At the end of 2015 Amazon added support for &lt;a href="https://aws.amazon.com/blogs/aws/new-encrypted-ebs-boot-volumes/"&gt;encrypted EBS boot volumes&lt;/a&gt;. EBS storage volumes had offered optional encryption for some time before that. Now it&amp;rsquo;s possible to encrypt an AMI and bring up EC2 instances with fully encrypted starting volumes.&lt;/p&gt;
&lt;p&gt;I set out recently to use encrypted EBS boot volumes for a HIPAA compliant project at &lt;a href="https://www.reactiveops.com"&gt;ReactiveOps&lt;/a&gt;. It&amp;rsquo;s very easy to convert an existing AMI with an unencrypted boot volume to use encryption. I hit a few snags though building encryption into my automated AMI generation workflows using &lt;a href="https://www.packer.io/"&gt;Packer&lt;/a&gt; and &lt;a href="https://www.ansible.com/"&gt;Ansible&lt;/a&gt; tooling.&lt;/p&gt;</description></item><item><title>Forgot about Amazon API Gateway models</title><link>https://www.davekonopka.com/2016/03/forgot-about-amazon-api-gateway-models/</link><pubDate>Fri, 04 Mar 2016 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2016/03/forgot-about-amazon-api-gateway-models/</guid><description>&lt;p&gt;In my post on &lt;a href="http://www.davekonopka.com/2016/serverless-aws-lambda-api-gateway.html"&gt;building a serverless URL shortener&lt;/a&gt; I neglected to mention API Gateway &lt;a href="http://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html"&gt;models&lt;/a&gt; at all.&lt;/p&gt;
&lt;p&gt;A model defines a JSON schema for data passed in or out of API methods. Models are assigned to method requests/responses. They play a role in data transformations that happen within &lt;a href="http://docs.aws.amazon.com/apigateway/latest/developerguide/models-mappings.html#models-mappings-mappings"&gt;mapping templates&lt;/a&gt;. Models are not used for validating input data. That seems like a logical use for them so perhaps they will serve this role in the future.&lt;/p&gt;</description></item><item><title>Using custom domains with Amazon's API Gateway</title><link>https://www.davekonopka.com/2016/02/using-custom-domains-with-amazons-api-gateway/</link><pubDate>Fri, 26 Feb 2016 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2016/02/using-custom-domains-with-amazons-api-gateway/</guid><description>&lt;p&gt;In my last post &lt;a href="http://www.davekonopka.com/2016/serverless-aws-lambda-api-gateway.html"&gt;Build a serverless URL shortener with AWS Lambda and API Gateway services&lt;/a&gt; I walked through creating a URL shortener service using Amazon&amp;rsquo;s API Gateway and Lambda services. One of my goals for that project was to use a custom domain instead of the randomized URL provided by API Gateway. This turned out to be trickier than I expected.&lt;/p&gt;
&lt;p&gt;API Gateway supports custom domains but it requires an SSL certificate. And there are no integrations with Route 53 or the new AWS Certificate Manager. You&amp;rsquo;ll need to do a few things by hand to get started. Amazon&amp;rsquo;s &lt;a href="http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html"&gt;docs on the subject&lt;/a&gt; are thorough. The following is what I did to get &lt;a href="https://coolstory.me/yo"&gt;coolstory.me&lt;/a&gt; working with my URL shortener service.&lt;/p&gt;</description></item><item><title>Build a serverless URL shortener with AWS Lambda and API Gateway services</title><link>https://www.davekonopka.com/2016/02/build-a-serverless-url-shortener-with-aws-lambda-and-api-gateway-services/</link><pubDate>Wed, 24 Feb 2016 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2016/02/build-a-serverless-url-shortener-with-aws-lambda-and-api-gateway-services/</guid><description>&lt;p&gt;I&amp;rsquo;ve had my eye on Amazon&amp;rsquo;s Lambda and API Gateway services for a few months. Running a web application without the costs or headaches of maintaining servers is attractive. Of course, no platform is without tradeoffs. So to get myself familiar with the finer points of serverless apps I decided to launch a simple project: a URL shortener service.&lt;/p&gt;
&lt;p&gt;With a few hours of work and a few dollars per month in cost I got a decent prototype working capable of handling millions of requests per month. This post walks through the setup along with the hitches I hit. There&amp;rsquo;s also an &lt;a href="https://github.com/davekonopka/serverless-url-shortener"&gt;accompanying code repo&lt;/a&gt; that you can use to try this out yourself.&lt;/p&gt;</description></item><item><title>On-call rotations are a team sport</title><link>https://www.davekonopka.com/2015/06/on-call-rotations-are-a-team-sport/</link><pubDate>Mon, 08 Jun 2015 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2015/06/on-call-rotations-are-a-team-sport/</guid><description>&lt;p&gt;No one ever says: &amp;ldquo;I want to ack &lt;a href="https://www.pagerduty.com/"&gt;PagerDuty&lt;/a&gt; alerts when I grow up&amp;rdquo;. Lost sleep. Diverted focus. Scrambling under pressure. There&amp;rsquo;s no shortage of downsides to being on the frontline for a business&amp;rsquo;s technology.&lt;/p&gt;
&lt;p&gt;Still, a well run on-call rotation is key to the proper care and feeding of any company&amp;rsquo;s technology stack. A healthy on-call rotation shines a bright light on weaknesses and implements improvements with urgency. It requires a team with sharpened communication practices to do it well.&lt;/p&gt;</description></item><item><title>The secret to organizing a tech meetup</title><link>https://www.davekonopka.com/2015/06/the-secret-to-organizing-a-tech-meetup/</link><pubDate>Fri, 05 Jun 2015 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2015/06/the-secret-to-organizing-a-tech-meetup/</guid><description>&lt;p&gt;A little over three years ago &lt;a href="https://castro.io/"&gt;Hector Castro&lt;/a&gt; brought up an idea he had for starting a DevOps meetup in Philadelphia. We both agreed that existing user groups weren&amp;rsquo;t covering many topics bridging the gap between developing and operating software. So we organized the first &lt;a href="http://www.meetup.com/PhillyDevOps/"&gt;Philly DevOps&lt;/a&gt; meetup in July of 2012 and we&amp;rsquo;ve hosted regular monthly meetups since then.&lt;/p&gt;
&lt;p&gt;Every so often somebody asks: I want to start a meetup. What do I do?&lt;/p&gt;</description></item><item><title>Going remote, even when you're on-site</title><link>https://www.davekonopka.com/2015/06/going-remote-even-when-youre-on-site/</link><pubDate>Mon, 01 Jun 2015 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2015/06/going-remote-even-when-youre-on-site/</guid><description>&lt;p&gt;Over the past few years I&amp;rsquo;ve worked on opposite extremes of the remote/on-site workplace spectrum. My current employer maintains &lt;a href="http://technical.ly/philly/2013/03/27/aweber-new-office-photos/"&gt;top notch office facilities&lt;/a&gt; complete with chef prepared lunches, bio-walls, lego murals, and slides. Previously, I worked with a fully distributed company of 75+ people that had a strong culture and no physical office space at all.&lt;/p&gt;
&lt;p&gt;There are definite trade-off&amp;rsquo;s to both types of working environments. Whether your team is on-site or on-the-beach, I&amp;rsquo;ve learned that teams can find serious benefits in adopting remote-first communication patterns.&lt;/p&gt;</description></item><item><title>Repeatable, randomly ordered RSpec test runs on TeamCity</title><link>https://www.davekonopka.com/2013/03/repeatable-randomly-ordered-rspec-test-runs-on-teamcity/</link><pubDate>Fri, 22 Mar 2013 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2013/03/repeatable-randomly-ordered-rspec-test-runs-on-teamcity/</guid><description>&lt;p&gt;Running a suite of tests in the same order always can mask unintentional dependencies between tests. You can end up with a test that succeeds in a full run of the suite but fails by itself.&lt;/p&gt;
&lt;p&gt;One way to shake out these dependencies is to run tests in a random order. RSpec has an &lt;a href="https://www.relishapp.com/rspec/rspec-core/v/2-13/docs/command-line/order-new-in-rspec-core-2-8"&gt;&amp;ndash;order&lt;/a&gt; option that you can use to randomize test order for each run.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;rspec --order rand&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Recent versions of RSpec &lt;a href="http://blog.davidchelimsky.net/2012/07/07/rspec-211-is-released/"&gt;enable random ordering by default&lt;/a&gt; in generated spec_helper.rb files.&lt;/p&gt;</description></item><item><title>RSpec run fails, returns exit code 0</title><link>https://www.davekonopka.com/2013/03/rspec-run-fails-returns-exit-code-0/</link><pubDate>Sat, 09 Mar 2013 00:00:00 +0000</pubDate><guid>https://www.davekonopka.com/2013/03/rspec-run-fails-returns-exit-code-0/</guid><description>&lt;p&gt;My team recently setup CI for a few Rails projects using &lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt; at &lt;a href="http://www.articulate.com/careers/"&gt;work&lt;/a&gt;. When new commits hit a project&amp;rsquo;s repo if an RSpec test run passes the CI setup deploys the code to a Heroku site used by our QA team. One way or another some specs started failing on a project but the code still deployed to Heroku. That&amp;rsquo;s not how it&amp;rsquo;s supposed to work.&lt;/p&gt;
&lt;p&gt;TeamCity looks at each command&amp;rsquo;s exit code to determine if a CI step fails or succeeds. If the exit code is 0 everything is copacetic and it continues on to the next step. Anything other than 0 means shit&amp;rsquo;s broke so it stops the process and logs failure.&lt;/p&gt;</description></item></channel></rss>