<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blake Preston</title>
    <link>https://blakepreston.dev</link>
    <description>Writing on software development, games, and whatever else.</description>
    <language>en</language>
    <atom:link href="https://blakepreston.dev/rss.xml" rel="self" type="application/rss+xml"/>
    <lastBuildDate>Fri, 05 Jun 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Building This Site</title>
      <link>https://blakepreston.dev/blog/02-building-this-site</link>
      <guid isPermaLink="true">https://blakepreston.dev/blog/02-building-this-site</guid>
      <pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate>
      <description>The stack and decisions behind this site — Vue, a markdown blog, static site generation.</description>
      <content:encoded><![CDATA[<h1>Building This Site</h1>
<p>As a good first programming post I thought I’d write about how I built this website, the stack I chose, and some of the decisions I made along the way. <br />
If I keep growing this site then all of this might change, but this is how it looks at the time of launch.</p>
<h2>The stack I chose</h2>
<p>What better way to start than with the tech stack?
I wanted something that I could build quickly and easily, that I was familiar enough with, and that I could deploy as a static site without needing a backend or server.
I also chose to write the components and styles myself rather than using a utility framework, since this is a personal project and I am prioritising learning and experimentation over speed and convenience.</p>
<h3>Vue, Vite, and TypeScript</h3>
<p>For those unfamiliar, <a href="https://vuejs.org/">Vue</a> is a UI and reactivity framework - a lot like <a href="https://svelte.dev/">Svelte</a> but with a little less syntax magic. <br />
I really like the reactivity model used in Vue. I’ve found it to be simple enough that I can easily reason about it, explain it to other engineers, and I even played around with recreating it in C++ at one stage just for fun. <br />
The single-file-components also keep things nice and neat, with all the scoped and reactive styles fully supported by the framework. My only real criticism with SFCs is that I wish you could have multiple components in the same file, as it would sometimes simplify things having a tiny child component colocated with its parent component.</p>
<p>When using Vue you’re pretty much obligated to use Vite as the build tool, which even though it was written by Vue’s creator, has also become a popular choice for people using other frameworks like <a href="https://reactjs.org/">React</a>. <br /></p>
<p>When running <code>npm create vue@latest</code>, you get a bunch of options of extra things to include. Vue Router and Pinia are pretty easy includes if you don’t have a strong preference for something else, and TypeScript something that I’ll always include unless there’s a compelling reason not to. <br />
Static typing is something everyone should use for anything non-trivial. I’ve worked on large codebases with loosely typed systems (like games with a large amount of Lua) and maintaining that is its own special type of challenge. <br />
If you’re writing anything that you want to last, or (like me) you find that the type hints give you a much better DX, then you want TS if you’re doing frontend work.</p>
<h3>No tailwind, no component library</h3>
<p>When starting this project I had to have a think about what I wanted it to be. I considered using component libraries to speed up development, and tailwind for easier styles, but ultimately decided against both. <br />
If this is my personal site, I want to build the components myself. Not because I think the results will necessarily be better, but because I want to learn to do better - especially when it comes to things like accessibility and responsive design.</p>
<p>If this was a large project with a number of contributors I might have made a different choice, but for a personal page this approach makes sense.</p>
<h2>The blog</h2>
<p>Blog posts are Markdown files in the repo, which get transformed into HTML at build time using <a href="https://github.com/markdown-it/markdown-it">markdown-it</a>.
I have a simple script that runs before builds to handle the transformation (and build the index), which has a watch mode for faster iteration.
For now I have no CMS, no database, no API, just files in the repo and a static site to deploy.</p>
<h2>Final thoughts</h2>
<p>There’s really nothing too complicated going on here, but I thought it worth sharing for anyone interested. <br />
If you’re just starting out and want to build a personal site, I hope this gives you some ideas of how to get going. <br /></p>
<hr>
<p><em>Would learning PHP to build a weird old-school comments system be a fun experiment? Probably not.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>Hello World</title>
      <link>https://blakepreston.dev/blog/01-hello-world</link>
      <guid isPermaLink="true">https://blakepreston.dev/blog/01-hello-world</guid>
      <pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate>
      <description>The obligatory first post — what this site is, why it exists, and what I plan to write about.</description>
      <content:encoded><![CDATA[<h1>Hello World</h1>
<p>Hello! My name is Blake, I’m a programmer who has worked in and out of game development for around 20 years, and it’s high time I made a website and started writing down some of my thoughts about everything.</p>
<p>You can expect most of my posts to be about programming or games, but I also expect to write about other things that cross my mind.<br />
Some days I’ll post about programming language design, useful tools, best practices and other things like that. <br />
If I find something interesting in a game I might write about the mechanics and design choices involved, or maybe I’ll just heap some praise (or criticism) at it. I like digging into media in general, so there could be some non-game stuff in there too. <br />
And then there will be other posts that could be about life in general or ‘middle-aged man yells at cloud’ about some new tech or trend or whatever.</p>
<p>I’ve not had a blog before so we’ll just have to see where it takes us!</p>
<h2>Why a blog?</h2>
<p>It’s become more and more clear over time that social media and short-form content aren’t a great way to properly discuss a topic.
I’m not looking for a big viral post that gets a heap of engagement, I’d much rather have a place where I can take my time writing something meaningful, and where it can live indefinitely without getting buried in an algorithmic feed.<br />
That’s also why I’ve added an RSS feed (if you don’t know what this means I encourage you to look it up!), I think subscribing to blogs is a much better way to keep up with someone’s writing than following them on social media.<br />
Back in the aughts and early 2010s, I followed a lot of programming blogs and it was a great way to discover new ideas and perspectives. I want to keep that ecosystem alive and contribute to it in some small way.</p>
<p>Plus I like having ownership of my words. I can write what I want and share it for as long as I want. This is my blog.</p>
<h2>What else is on this site?</h2>
<p>If you’ve somehow stumbled onto this post without poking around the rest of the site, there’s a few other sections to check out:</p>
<dl>
  <dt>About</dt>
  <dd>This page will tell you a bit about me, my background, my skills, and contact info.</dd>
  <dt>Portfolio</dt>
  <dd>A portfolio of things I've worked on in my professional life. There's some cool stuff in there so check it out if you're interested.</dd>
  <dt>Lab</dt>
  <dd>Smaller experiments and interactive demos. Things built to explore an idea or to see if something was possible. More rough edges, more fun.</dd>
  <dt>Blog</dt>
  <dd>This! Longer thoughts on whatever I've been thinking about recently.</dd>
</dl>
<h2>Welcome</h2>
<p>So welcome to my blog! I can’t promise I’ll post often, but hopefully when I do it’ll be worth reading. If you want to keep up with new posts, consider subscribing to the RSS feed - I expect updates to be sporadic so an RSS reader is probably the best way to keep up-to-date.</p>
<hr>
<p><em>Ending with a joke feels like a good idea. Maybe I’ll think of a good one some day!</em></p>
]]></content:encoded>
    </item>
  </channel>
</rss>