<?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>Nick Silverman</title>
    <link>https://nckslvr.mn/</link>
    <description>Recent content on Nick Silverman</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 22 Apr 2026 01:46:47 +0000</lastBuildDate>
    <atom:link href="https://nckslvr.mn/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Home Server Gitops Lite on Nothing but Github and Docker</title>
      <link>https://nckslvr.mn/posts/home-server-gitops-lite-on-nothing-but-github-and-docker/</link>
      <pubDate>Wed, 22 Apr 2026 01:46:47 +0000</pubDate>
      <guid>https://nckslvr.mn/posts/home-server-gitops-lite-on-nothing-but-github-and-docker/</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href=&#34;https://dev.to/nckslvrmn/home-server-gitops-lite-on-nothing-but-github-and-docker-19lo&#34;&gt;DEV Community&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I run a decent little stack of services out of my house. Whisper (an end-to-end encrypted secret sharing app), bar_keep, archivist, a few other side projects, plus the base infra that ties them together: Traefik, shared networks, a handful of private stacks. For a while every deploy meant SSHing into the server, and I was pretty tired of it.&lt;/p&gt;
&lt;p&gt;What I actually wanted was something like the popular GitOps tools a lot of folks run on top of Kubernetes. Push code, get a deploy, done. No shell, no secrets on disk, no kubectl. But I&amp;rsquo;m not running Kubernetes at home and I wasn&amp;rsquo;t about to install it just for this, so I took a different route.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simplifying Certificate Renewals for Millions of Domains with ACME Renewal Information (ARI)</title>
      <link>https://nckslvr.mn/posts/simplifying-certificate-renewals-with-ari/</link>
      <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://nckslvr.mn/posts/simplifying-certificate-renewals-with-ari/</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href=&#34;https://letsencrypt.org/2026/03/17/acme-renewal-information-ari/&#34;&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nick Silverman is a Senior Infrastructure Engineer on the Edge Infrastructure team at Shopify, where he maintains the systems that provision, renew, and publish SSL certificates for millions of merchants’ custom domains. He is also a contributor to the Ruby acme-client gem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;the-challenge&#34;&gt;The challenge&lt;/h2&gt;
&lt;p&gt;Shopify’s automated certificate management system relied on a static renewal threshold: 30 days before the end of the 90-day lifetime. To spread the load of provisioning and renewing certificates, we implemented a random 0–72 hour delay for each. While this helps evenly distribute certificate management over time, it did not take into account the Certificate Authority’s (CA) load. It was also incapable of reacting to a dynamic renewal window based on information provided by the CA.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Automate Patching by Replacing Amazon ECS Container Instances</title>
      <link>https://nckslvr.mn/posts/automate-patching-by-replacing-amazon-ecs-container-instances/</link>
      <pubDate>Wed, 18 May 2022 11:10:42 -0800</pubDate>
      <guid>https://nckslvr.mn/posts/automate-patching-by-replacing-amazon-ecs-container-instances/</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href=&#34;https://aws.amazon.com/blogs/industries/automate-patching-by-replacing-amazon-ecs-container-instances/&#34;&gt;AWS for Industries&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;By Nick Silverman, Jigna Gandhi, Kim Fushimi, and Randy Moy.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;containerization-becoming-popular-for-application-lifecycle&#34;&gt;Containerization becoming popular for application lifecycle&lt;/h2&gt;
&lt;p&gt;In the retail industry, more and more developers are using containerization as the primary software lifecycle for applications and services. There are countless benefits to this approach, and it shifts the focus of configuration and runtime management to the container itself. This means that there’s much less configuration and setup at the host level. However, you still need to consider patching and security at the host.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Overwriting Shared Libraries in Aws Lambda</title>
      <link>https://nckslvr.mn/posts/overwriting-shared-libraries-in-aws-lambda/</link>
      <pubDate>Mon, 18 May 2020 23:26:39 +0000</pubDate>
      <guid>https://nckslvr.mn/posts/overwriting-shared-libraries-in-aws-lambda/</guid>
      <description>&lt;p&gt;&lt;em&gt;Originally published on &lt;a href=&#34;https://dev.to/nckslvrmn/overwriting-shared-libraries-in-aws-lambda-479h&#34;&gt;DEV Community&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The latest Ruby runtime for AWS Lambda runs Ruby 2.7. Though this version of ruby is only 6 months old, the version of OpenSSL that Lambdas instance of Ruby was compiled with is over 3 years old. You can verify that by running the function below and seeing what it returns:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ruby&#34; data-lang=&#34;ruby&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;require&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;openssl&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;def&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;lambda_handler&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;ss&#34;&gt;event&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:,&lt;/span&gt; &lt;span class=&#34;ss&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;no&#34;&gt;OpenSSL&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;no&#34;&gt;OPENSSL_VERSION&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;end&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# OpenSSL 1.0.2k  26 Jan 2017&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s Old! That means that Ruby&amp;rsquo;s OpenSSL library is missing some key features like &lt;code&gt;SHA-3&lt;/code&gt;, &lt;code&gt;TLS 1.3&lt;/code&gt;, and the &lt;code&gt;scrypt&lt;/code&gt; KDF.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
