<?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>Posts on Some Guys Blog</title><link>https://someguys.blog/posts/</link><description>Recent content in Posts on Some Guys Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 20 Jun 2026 22:21:29 -0500</lastBuildDate><atom:link href="https://someguys.blog/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Letting AI help you learn without learning for you</title><link>https://someguys.blog/posts/2026-06-22-letting-ai-help-you-learn/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2026-06-22-letting-ai-help-you-learn/</guid><description>&lt;p&gt;The first four posts in this series set up a machine you can work on: &lt;a href="https://someguys.blog/posts/2026-06-19-setting-up-a-mac-for-python/"&gt;the terminal and Homebrew&lt;/a&gt;
, &lt;a href="https://someguys.blog/posts/2026-06-20-installing-python-without-touching-the-system-python/"&gt;Python and virtual environments&lt;/a&gt;
, &lt;a href="https://someguys.blog/posts/2026-06-21-a-real-editor-vs-code-for-python/"&gt;an editor&lt;/a&gt;
, and &lt;a href="https://someguys.blog/posts/2026-06-21-version-control-with-git-and-github/"&gt;version control&lt;/a&gt;
. This last one is about a tool that didn&amp;rsquo;t exist when &lt;em&gt;Python Crash Course&lt;/em&gt; was written, and that has changed what it&amp;rsquo;s like to learn programming more than anything else on that list: an AI assistant sitting one keystroke away while you work.&lt;/p&gt;</description></item><item><title>Version control from the first exercise: git and GitHub</title><link>https://someguys.blog/posts/2026-06-21-version-control-with-git-and-github/</link><pubDate>Sun, 21 Jun 2026 12:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2026-06-21-version-control-with-git-and-github/</guid><description>&lt;p&gt;We&amp;rsquo;ve built a machine that&amp;rsquo;s ready to work: &lt;a href="https://someguys.blog/posts/2026-06-19-setting-up-a-mac-for-python/"&gt;the terminal and Homebrew&lt;/a&gt;
, &lt;a href="https://someguys.blog/posts/2026-06-20-installing-python-without-touching-the-system-python/"&gt;Python with asdf and per-project virtual environments&lt;/a&gt;
, and &lt;a href="https://someguys.blog/posts/2026-06-21-a-real-editor-vs-code-for-python/"&gt;VS Code wired up to use them&lt;/a&gt;
. This post adds the thing that turns &amp;ldquo;files on a laptop&amp;rdquo; into &amp;ldquo;work you can&amp;rsquo;t lose&amp;rdquo;: version control with git, and a backup of it on GitHub.&lt;/p&gt;</description></item><item><title>A real editor: VS Code for Python</title><link>https://someguys.blog/posts/2026-06-21-a-real-editor-vs-code-for-python/</link><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2026-06-21-a-real-editor-vs-code-for-python/</guid><description>&lt;p&gt;So far in this series we set up &lt;a href="https://someguys.blog/posts/2026-06-19-setting-up-a-mac-for-python/"&gt;the terminal and Homebrew&lt;/a&gt;
, then &lt;a href="https://someguys.blog/posts/2026-06-20-installing-python-without-touching-the-system-python/"&gt;installed Python with asdf and gave each project its own virtual environment&lt;/a&gt;
. Now we need a place to actually write code. This is the one area where the book and I mostly agree, so this post is less about replacing its advice and more about finishing the job it starts.&lt;/p&gt;</description></item><item><title>Installing Python without touching the system Python</title><link>https://someguys.blog/posts/2026-06-20-installing-python-without-touching-the-system-python/</link><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2026-06-20-installing-python-without-touching-the-system-python/</guid><description>&lt;p&gt;In the &lt;a href="https://someguys.blog/posts/2026-06-19-setting-up-a-mac-for-python/"&gt;last post&lt;/a&gt;
we set up the foundation: the terminal, the Command Line Tools, Homebrew, and a &lt;code&gt;~/projects&lt;/code&gt; folder for your code. No Python yet. This post installs it, and it&amp;rsquo;s where this series makes its first real departure from the book.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://nostarch.com/python-crash-course-3rd-edition" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Python Crash Course&lt;/em&gt;&lt;/a&gt;
has you download Python from python.org and double-click an installer. That works, and if you&amp;rsquo;ve already done it, nothing here is going to break it. But it leaves you with a single Python wired into your whole machine, and no clean way to keep one project&amp;rsquo;s libraries from leaking into another. We&amp;rsquo;re going to install Python so that you control which version you&amp;rsquo;re running and so that every project gets its own isolated set of packages. It&amp;rsquo;s two tools doing two jobs, and once it&amp;rsquo;s in place you stop thinking about it.&lt;/p&gt;</description></item><item><title>Setting up a Mac to learn Python, the way you'd actually want to</title><link>https://someguys.blog/posts/2026-06-19-setting-up-a-mac-for-python/</link><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2026-06-19-setting-up-a-mac-for-python/</guid><description>&lt;p&gt;I bought my dad a MacBook Air for Father&amp;rsquo;s Day. He joined Sun Microsystems in 1990 and spent two decades there writing Java, at the company that invented it, then moved to Oracle when it bought Sun in 2010. He retired in the summer of 2022. Thirty-two years, and he hasn&amp;rsquo;t really opened a computer since. The plan is to get him back into it with Python, using Eric Matthes&amp;rsquo; &lt;a href="https://nostarch.com/python-crash-course-3rd-edition" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Python Crash Course&lt;/em&gt;&lt;/a&gt;
, which is the book I&amp;rsquo;d hand anyone starting today.&lt;/p&gt;
&lt;p&gt;There&amp;rsquo;s a small joke buried in that. &lt;em&gt;Python Crash Course&lt;/em&gt; opens with a dedication: &amp;ldquo;For my father, who always made time to answer my questions about programming.&amp;rdquo; I&amp;rsquo;m running it backwards.&lt;/p&gt;</description></item><item><title>I reviewed the code. They wanted it deployed.</title><link>https://someguys.blog/posts/2026-06-18-i-reviewed-the-code-they-wanted-it-deployed/</link><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2026-06-18-i-reviewed-the-code-they-wanted-it-deployed/</guid><description>&lt;h2 id="is-the-work-sample-an-audition"&gt;Is the work sample an audition?&lt;/h2&gt;
&lt;p&gt;A take-home exercise asked me to review a junior engineer&amp;rsquo;s pull request the way a senior infrastructure engineer would. So that is what I did. I found the problems, explained why each one mattered, fixed them, added local tests across the stack and the CI pipeline the repo never had, and wrote the whole thing up like a real review. I ran out of time before I deployed it.&lt;/p&gt;
&lt;p&gt;The deploy was the part that scored. I did not get the job.&lt;/p&gt;
&lt;p&gt;I made a tactical error, and given the same exercise again I would deploy first and decorate later. The interesting part is not that I lost a point. It&amp;rsquo;s that the exercise and I disagreed about what it was for, and the exercise had the only vote that counted.&lt;/p&gt;</description></item><item><title>Twenty years in infrastructure, and the work doesn't look the same anymore</title><link>https://someguys.blog/posts/2026-05-12-twenty-years-in-infrastructure/</link><pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2026-05-12-twenty-years-in-infrastructure/</guid><description>&lt;p&gt;For the past couple of months I&amp;rsquo;ve been asking myself whether twenty years of experience still counts for anything, and how I&amp;rsquo;m supposed to describe my work on LinkedIn if AI is doing all the work. The engineers who don&amp;rsquo;t use AI aren&amp;rsquo;t helping. The ones who refuse to aren&amp;rsquo;t either. &amp;ldquo;Ask your robot friend.&amp;rdquo; &amp;ldquo;Is this AI slop?&amp;rdquo; &amp;ldquo;Looks vibe coded.&amp;rdquo; Each one is a way of saying the work doesn&amp;rsquo;t count because of how it got done. The shade is loud. The doubt is mine. So this post is me writing my way to an answer.&lt;/p&gt;</description></item><item><title>Recovering Terraform State, Eight Years Later</title><link>https://someguys.blog/posts/2025-12-03-recovering-terraform-state-eight-years-later/</link><pubDate>Wed, 03 Dec 2025 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2025-12-03-recovering-terraform-state-eight-years-later/</guid><description>&lt;p&gt;Back in 2017 I wrote about &lt;a href="https://someguys.blog/posts/2017-04-26-recovering-terraform-state/"&gt;recovering orphaned Terraform state&lt;/a&gt;
with the &lt;code&gt;import&lt;/code&gt; command. That post is still up because the situation is still the same: somebody created infra without managing state, somebody else has to bring it back under control, and you&amp;rsquo;re the somebody else. What&amp;rsquo;s changed is the tooling. Three things, mostly.&lt;/p&gt;</description></item><item><title>Python Abort on MacOS Catalina</title><link>https://someguys.blog/posts/2019-10-09-python-abort-on-macos-catalina/</link><pubDate>Wed, 09 Oct 2019 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2019-10-09-python-abort-on-macos-catalina/</guid><description>&lt;p&gt;Yes. I upgraded to Catalina on the first day. &lt;code&gt;¯\_(ツ)_/¯&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Now I&amp;rsquo;m trying to run a Python program and it&amp;rsquo;s exiting with &lt;code&gt;Abort trap: 6&lt;/code&gt;. The crash report indicates the specific problem is with an OpenSSL dylib file&amp;hellip;&lt;/p&gt;</description></item><item><title>Recovering Terraform State</title><link>https://someguys.blog/posts/2017-04-26-recovering-terraform-state/</link><pubDate>Wed, 26 Apr 2017 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2017-04-26-recovering-terraform-state/</guid><description>&lt;p&gt;&lt;em&gt;This was written in 2017 when &lt;code&gt;terraform import&lt;/code&gt; was the only option. The toolkit looks different now; see &lt;a href="https://someguys.blog/posts/2025-12-03-recovering-terraform-state-eight-years-later/"&gt;Recovering Terraform State, Eight Years Later&lt;/a&gt;
for what I&amp;rsquo;d do today.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;rsquo;s the scenario&amp;hellip; you have documented the steps for creating new infrastructure using Terraform including ensuring that state files are dealt with properly (remote in AWS S3). However, at some point those directions aren&amp;rsquo;t followed and you now have infrastructure that is orphaned with no state. What do you do?&lt;/p&gt;</description></item><item><title>Yet Another Tech Blog?!</title><link>https://someguys.blog/posts/2017-03-17-yet-another-tech-blog/</link><pubDate>Fri, 17 Mar 2017 00:00:00 +0000</pubDate><guid>https://someguys.blog/posts/2017-03-17-yet-another-tech-blog/</guid><description>&lt;p&gt;Does the internet need another tech blog? No, probably not. However, I frequently lament doing a poor job documenting all the things I&amp;rsquo;ve figured out how to do over the years. Thus, I plan to make an effort to document those things here for all who find my methods sane to freely copy.&lt;/p&gt;</description></item></channel></rss>