<?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>Western Wilson</title><link>https://westernwilson.com/tags/definitions/</link><description>Recent content in Definitions on Western Wilson</description><generator>Hugo</generator><language>en</language><lastBuildDate>Sat, 26 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://westernwilson.com/tags/definitions/index.xml" rel="self" type="application/rss+xml"/><item><title>Terraform state s3 bucket naming convention</title><link>https://westernwilson.com/reflections/terraform-state-s3-bucket-naming-convention/</link><pubDate>Sat, 11 Apr 2026 00:00:00 +0000</pubDate><guid>https://westernwilson.com/reflections/terraform-state-s3-bucket-naming-convention/</guid><description>While working on my personal devops project (see github), I realised I hadn’t thought through the naming convention of my terraform state in a long time.&#10;Naming convention decision Final name: tfstate-{AccountId}-{GitHubRepo}&#10;Example: tfstate-123456789012-aws-foundations&#10;Why this name The convention earns its structure because I’m committing to one terraform state bucket per project.&#10;</description><content:encoded><![CDATA[<p>While working on my personal devops project (<a href="https://github.com/wjkw1/devops-profile-coffee-card-app-demo">see github</a>), I realised I hadn&rsquo;t thought through the naming convention of my terraform state in a long time.</p>
<h2 id="naming-convention-decision" class="group relative scroll-mt-20">
  Naming convention decision
  <a
    href="https://westernwilson.com/reflections/terraform-state-s3-bucket-naming-convention/#naming-convention-decision"
    class="heading-anchor ml-2 text-sm no-underline! opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 [@media(hover:none)]:opacity-100 [color:var(--c-muted)] hover:[color:var(--c-accent)] transition-opacity"
    aria-label="Link to this heading"
  ><i class="fa-solid fa-link" aria-hidden="true"></i></a>
</h2>
<p><strong>Final name:</strong> <code>tfstate-{AccountId}-{GitHubRepo}</code></p>
<p><strong>Example:</strong> <code>tfstate-123456789012-aws-foundations</code></p>
<h3 id="why-this-name" class="group relative scroll-mt-20">
  Why this name
  <a
    href="https://westernwilson.com/reflections/terraform-state-s3-bucket-naming-convention/#why-this-name"
    class="heading-anchor ml-2 text-sm no-underline! opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 [@media(hover:none)]:opacity-100 [color:var(--c-muted)] hover:[color:var(--c-accent)] transition-opacity"
    aria-label="Link to this heading"
  ><i class="fa-solid fa-link" aria-hidden="true"></i></a>
</h3>
<p>The convention earns its structure because I&rsquo;m committing to one terraform state bucket per project.</p>
<p>So, the three pieces of information communicated in the bucket name:</p>
<table>
	<thead>
			<tr>
					<th>Segment</th>
					<th>Reason</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><code>tfstate</code> <em>prefix</em></td>
					<td>Immediately identifies the bucket&rsquo;s purpose to any observer, without needing to open it.</td>
			</tr>
			<tr>
					<td><code>{AccountId}</code></td>
					<td>The only reliable way to guarantee global S3 uniqueness (bucket names are shared across all of AWS); also identifies ownership at a glance in billing, access logs, and cross-account contexts.</td>
			</tr>
			<tr>
					<td><code>{GitHubRepo}</code></td>
					<td>1:1 mapping between bucket and repository — you can navigate from S3 → GitHub (or back) without any lookup.</td>
			</tr>
	</tbody>
</table>
<p>The convention scales cleanly: every future infrastructure repository gets <code>tfstate-{AccountId}-{GitHubRepo}</code>, with no naming decisions to revisit.</p>
<h3 id="options-considered-and-why-they-were-rejected" class="group relative scroll-mt-20">
  Options considered and why they were rejected
  <a
    href="https://westernwilson.com/reflections/terraform-state-s3-bucket-naming-convention/#options-considered-and-why-they-were-rejected"
    class="heading-anchor ml-2 text-sm no-underline! opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 [@media(hover:none)]:opacity-100 [color:var(--c-muted)] hover:[color:var(--c-accent)] transition-opacity"
    aria-label="Link to this heading"
  ><i class="fa-solid fa-link" aria-hidden="true"></i></a>
</h3>
<p><strong><code>tfstate-aws-foundations</code></strong></p>
<p>Not globally unique, and almost certainly already taken thanks to the known limitation of S3. It also encodes the github project name in a bucket originally conceived as potentially holding all account state. Once my intent changed, the name became misleading.</p>
<p><strong><code>tfstate-{AccountId}</code></strong> <em>(original)</em></p>
<p>Unique and future-proof, but loses the repo link. Fine if one bucket holds state for many projects; less good when the bucket is scoped 1:1 to a single repo, where the link has real navigational value.</p>
<p><strong><code>{AccountId}-aws-foundations</code></strong></p>
<p>Globally unique, still links to the repo. But without a <code>tfstate</code> indicator, anyone browsing S3 has no immediate signal about what the bucket is for. The AccountId prefix also groups infrastructure buckets together when sorted, at the cost of reading unnaturally left-to-right.</p>
<p><strong><code>aws-foundations-{AccountId}</code></strong></p>
<p>More readable than the account-first example, same repo link. Still missing the <code>tfstate</code> indicator.</p>
<p><strong><code>tfstate-{AccountId}-aws-foundations</code></strong> <em>(chosen)</em></p>
<p>Purpose is obvious. Guaranteed to be unique. The 1:1 GitHub mapping is perfect. The tradeoff: twelve digits in the middle makes the name long and not great to say out loud. That cost is low because this string gets typed approximately twice in the bucket&rsquo;s lifetime &ndash; at creation and in <code>versions.tf</code> &ndash; so conversational readability is not important.</p>
<h3 id="convention-going-forward" class="group relative scroll-mt-20">
  Convention going forward
  <a
    href="https://westernwilson.com/reflections/terraform-state-s3-bucket-naming-convention/#convention-going-forward"
    class="heading-anchor ml-2 text-sm no-underline! opacity-0 group-hover:opacity-100 group-focus-within:opacity-100 [@media(hover:none)]:opacity-100 [color:var(--c-muted)] hover:[color:var(--c-accent)] transition-opacity"
    aria-label="Link to this heading"
  ><i class="fa-solid fa-link" aria-hidden="true"></i></a>
</h3>
<p><code>tfstate-{AccountId}-{GitHubRepo}</code></p>
<p>Other projects I create that require aws infra will each get their own S3 state bucket following this pattern.</p>
<p>This gives me state isolation between projects; a terraform mistake in one project cannot affect another, and state files stay small and fast.</p>
]]></content:encoded></item><item><title>When I say 'chasing threads'</title><link>https://westernwilson.com/reflections/chasing-threads/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><guid>https://westernwilson.com/reflections/chasing-threads/</guid><description>There is this idea in productivity circles, self-help books, and startup culture: Focus. Only work on what matters. Cut the noise. Eliminate the distractions.&#10;I think that’s only half the story.&#10;Chasing threads is about following inspiration when it strikes.&#10;During my induction week as a graduate engineer, over seven years ago, I was told a story about our CEO. It’s where I first felt encouraged to be curious at work.&#10;</description><content:encoded><![CDATA[<p>There is this idea in productivity circles, self-help books, and startup culture: Focus. Only work on what matters. Cut the noise. Eliminate the distractions.</p>
<p>I think that&rsquo;s only half the story.</p>
<p>Chasing threads is about following inspiration when it strikes.</p>
<p>During my induction week as a graduate engineer, over seven years ago, I was told a story about our CEO. It&rsquo;s where I first felt encouraged to be curious at work.</p>
<p>The CEO had a planned visit to one of our front-line Telco stores. All staff were prepped with questions and had a stacked agenda for photos and content capture. When the boss arrived, he spotted a staff member off to the side, absorbed in something (repairing a device, restocking a shelf) I can&rsquo;t quite remember.</p>
<p>He walked over and simply asked: &ldquo;Hey what are you doing?&rdquo;</p>
<p>Whoever this person was, they spoke about what they were doing with such genuine passion and joy that the CEO scrapped the rest of the agenda entirely. He spent the whole visit just talking with this one person about technology, about their goals, about what they loved about the job.</p>
<p>That conversation turned into a friendship. They kept in touch across the year. And eventually, that staff member grew into a role back at headquarters. All because the boss saw someone doing something that looked interesting, and went and spoke to them.</p>
<p>Do you know the feeling? You&rsquo;re reading something and a word catches you, you look it up, and suddenly you&rsquo;re twenty minutes deep into the history of something you never knew you cared about.</p>
<p>The conventional wisdom says to ignore that. To get back on task and stay on track.</p>
<p>But what if the thread is the track?</p>
<p>Here&rsquo;s the reframe I often come back to: life is distractions. It&rsquo;s the distractions the give life meaning. Not in the doom-scrolling-at-2am sense. In the sense that the interesting stuff, the stuff that actually shapes who you are, rarely arrives through the front door. It sneaks up on you. It&rsquo;s the thing you weren&rsquo;t supposed to be doing that ends up mattering most.</p>
<p>Steve Jobs is probably the most famous example of this. In his 2005 Stanford commencement speech, he talked about dropping in on a calligraphy class at Reed College out of pure curioisty, with no practical application in mind. A decade later, that class became the foundation for the beautiful typography of the first Macintosh.</p>
<p>He didn&rsquo;t chase calligraphy because it was strategic. He chased it because it pulled at him. Same instinct as a CEO who walks past a stacked agenda to talk to someone doing something interesting. Same instinct as anyone who follows a word into a twenty-minute rabbit hole and comes out knowing something they didn&rsquo;t expect to care about.</p>
<p>But I have to be honest with myself, because this idea has a dark twin. Something a colleague of mine introduced me to because I was chasing the latest technologies all the time.</p>
<p>There&rsquo;s a concept called <a href="https://en.wikipedia.org/wiki/Shiny_object_syndrome">Shiny Object Syndrome</a>. The idea that some people —especially curious, creative, entrepreneurial types— get so drawn to the next interesting thing that they never actually go deep on anything. They bounce from project to project, tool to tool, always chasing novelty, never building something real.</p>
<p>I&rsquo;ve been there. Most curious people have. You pick up a thread and it leads you to another thread, and another, and before you know it you&rsquo;ve spent a whole day falling down rabbit holes and nothing is finished.</p>
<p>The shiny ball of yarn is real. And if you&rsquo;re not careful, chasing threads becomes a sophisticated-sounding excuse for avoiding the hard, slow, unglamorous work of actually finishing things.</p>
<p>The difference between a thread worth chasing and a shiny object isn&rsquo;t obvious in the moment; but it becomes clear with a bit of distance. If you park an idea for a few days and it&rsquo;s still pulling at you, it&rsquo;s probably a thread worth chasing. If you forget about it, then it probably wasn&rsquo;t worth following anyway.</p>
<p>So go chase your own threads. Not all of them and not recklessly. But when something tugs at you, don&rsquo;t immediately dismiss it as a distraction.</p>
]]></content:encoded></item><item><title>How I use Tags</title><link>https://westernwilson.com/reflections/how-i-use-tags/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><guid>https://westernwilson.com/reflections/how-i-use-tags/</guid><description>This page is a personal reference so I remember the tags I use on this site, what they mean, and when to apply them. Max 1–3 tags per post.&#10;meta – Posts about this site itself – announcements, changes, meta type entries. Use when: the post is about the website or process specifically, not a topic within it.&#10;ai – Artificial intelligence, large language models, and how I’m using them in work or writing. Use when: the post is primarily about AI tools, AI tech, or AI behaviour&#10;</description><content:encoded><![CDATA[<p>This page is a personal reference so I remember the tags I use on this site, what they mean, and when to apply them. Max 1–3 tags per post.</p>
<p><strong><code>meta</code></strong> &ndash; Posts about this site itself &ndash; announcements, changes, meta type entries.
<em>Use when:</em> the post is about the website or process specifically, not a topic within it.</p>
<p><strong><code>ai</code></strong> &ndash; Artificial intelligence, large language models, and how I&rsquo;m using them in work or writing.
<em>Use when:</em> the post is primarily about AI tools, AI tech, or AI behaviour</p>
<p><strong><code>career</code></strong> &ndash; Work, professional growth, team dynamics, and lessons from the industry.
<em>Use when:</em> the post reflects on the people side of software &ndash; roles, culture, collaboration.</p>
<p><strong><code>communication</code></strong> &ndash; Explaining ideas about communicating, for example to non-technical audiences, across teams, or in documentation.
<em>Use when:</em> the post is about how we convey information to other people.</p>
<p><strong><code>conference</code></strong> &ndash; Notes and reflections from conferences I attend. Any conference I go to gets written up here.
<em>Use when:</em> the post is about a conference or event I attended, its talks, and what I took away from it.</p>
<p><strong><code>definitions</code></strong> &ndash; Posts that define how I use a specific term, phrase, or concept &ndash; personal vocab entries.
<em>Use when:</em> the post is structured around explaining what something means to me.</p>
<p><strong><code>devops</code></strong> &ndash; Platform engineering, infrastructure, CI/CD, and the operational side of software.
<em>Use when:</em> the post is about systems, pipelines, or keeping things running.</p>
<p><strong><code>devtools</code></strong> &ndash; Tools that shape how I work - editors, CLIs, SSH, local setup.
<em>Use when:</em> the post is hands-on with a specific tool or workflow.</p>
<p><strong><code>writing</code></strong> &ndash; Reflections on the writing process, publishing, and finding my voice.
<em>Use when:</em> the post is about writing itself, not just a post that happens to be well-written.</p>
]]></content:encoded></item></channel></rss>