<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: ひとし 田畑</title>
    <description>The latest articles on DEV Community by ひとし 田畑 (@hitoshi1964).</description>
    <link>https://dev.to/hitoshi1964</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3975979%2F05c5857a-b691-4600-911d-acc268f00185.png</url>
      <title>DEV Community: ひとし 田畑</title>
      <link>https://dev.to/hitoshi1964</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hitoshi1964"/>
    <language>en</language>
    <item>
      <title>I'm 62 and I built a self-hosted AWS drift detector because I was tired of spreadsheets</title>
      <dc:creator>ひとし 田畑</dc:creator>
      <pubDate>Tue, 09 Jun 2026 12:26:32 +0000</pubDate>
      <link>https://dev.to/hitoshi1964/im-62-and-i-built-a-self-hosted-aws-drift-detector-because-i-was-tired-of-spreadsheets-5a8l</link>
      <guid>https://dev.to/hitoshi1964/im-62-and-i-built-a-self-hosted-aws-drift-detector-because-i-was-tired-of-spreadsheets-5a8l</guid>
      <description>&lt;p&gt;I came to programming late — I didn't get into this world until I was past&lt;br&gt;
35, and I'm 62 now, still writing code every day. This is a "build in public"&lt;br&gt;
post about a tool I just finished, and I'd genuinely love your feedback.&lt;/p&gt;

&lt;h2&gt;
  
  
  The itch
&lt;/h2&gt;

&lt;p&gt;For years I watched infrastructure teams keep their AWS inventory in&lt;br&gt;
spreadsheets. It always worked — right up until it didn't. Nobody had time to&lt;br&gt;
keep it current, and every single one eventually drifted away from reality.&lt;br&gt;
Middleware EOL was the same story: a hand-maintained list, no alerts, no&lt;br&gt;
dashboard, quietly going stale.&lt;/p&gt;

&lt;p&gt;One day I asked the obvious question: we have tfstate, we have boto3 — why are&lt;br&gt;
we still doing this by hand?&lt;/p&gt;

&lt;h2&gt;
  
  
  What I built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;SyncVey&lt;/strong&gt; is a self-hosted web app that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Inventories your AWS resources&lt;/strong&gt; into a System → Environment → Asset ledger
(EC2, ECS, Lambda, RDS, S3, ALB, VPC, EBS), scanned live via boto3/AssumeRole&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detects attribute-level drift&lt;/strong&gt; between your tfstate and live AWS — including
resources someone built by hand in the console that &lt;code&gt;terraform plan&lt;/code&gt; never sees&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tracks the app/middleware layer&lt;/strong&gt; per environment and flags end-of-life runtimes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The drift piece is the part I care about most. &lt;code&gt;terraform plan&lt;/code&gt; only knows&lt;br&gt;
about resources Terraform already manages. The thing that actually bites teams&lt;br&gt;
is the resource someone spun up by hand in the console — plan is blind to it.&lt;br&gt;
SyncVey diffs your tfstate against the &lt;em&gt;live&lt;/em&gt; AWS state, so those show up too.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stack (and why)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Django + htmx + Postgres&lt;/strong&gt; — server-rendered, no SPA, no Node build step&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MIT-licensed, no SaaS, no telemetry&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;One &lt;code&gt;docker compose up&lt;/code&gt; and your data stays inside your own infrastructure
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/MR-TABATA/SyncVey
&lt;span class="nb"&gt;cd &lt;/span&gt;SyncVey
docker compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I deliberately leaned on htmx because, for a tool someone has to deploy and&lt;br&gt;
maintain themselves, "no frontend toolchain" matters more than a fancy client.&lt;/p&gt;

&lt;h2&gt;
  
  
  I'd love your honest take
&lt;/h2&gt;

&lt;p&gt;It's AWS-only for now and very much a solo project, so I'm sure there are rough&lt;br&gt;
edges. I'm not an AWS specialist — I deliberately leaned on things that don't&lt;br&gt;
require me to be one: your tfstate and the live boto3 API as ground truth, all&lt;br&gt;
open source so you can audit every call. If you know AWS better than I do (many&lt;br&gt;
of you will), I'd love for you to tear into the scanner logic.&lt;/p&gt;

&lt;p&gt;Does this solve a real problem for you? What's missing? What would stop you&lt;br&gt;
from running it?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/MR-TABATA/SyncVey" rel="noopener noreferrer"&gt;https://github.com/MR-TABATA/SyncVey&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Quick tour: &lt;a href="https://syncvey.com/" rel="noopener noreferrer"&gt;https://syncvey.com/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>devops</category>
      <category>terraform</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
