<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Ryan Fowler</title>
  <id>https://ryanfowler.com/</id>
  <updated>2023-06-17T00:00:00Z</updated>
  <author>
    <name>Ryan Fowler</name>
    <uri>https://ryanfowler.com/</uri>
  </author>
  <link href="https://ryanfowler.com/" rel="alternate" type="text/html"></link>
  <link href="https://ryanfowler.com/atom.xml" rel="self" type="application/atom+xml"></link>
  <entry>
    <title>Hello, World</title>
    <id>https://ryanfowler.com/blog/hello-world/</id>
    <link href="https://ryanfowler.com/blog/hello-world/" rel="alternate" type="text/html"></link>
    <published>2023-06-17T00:00:00Z</published>
    <updated>2023-06-17T00:00:00Z</updated>
    <summary>A short note about keeping a personal site small, fast, and easy to own.</summary>
    <content type="html">&lt;p&gt;Every personal site begins with an empty page and a decision: what belongs here?&lt;/p&gt;&#xA;&lt;p&gt;For this one, the answer is &lt;strong&gt;writing&lt;/strong&gt;. It is a place for notes about software, systems, tools, and the lessons that emerge while making things. The site itself follows the same practical spirit. A small Go program turns Markdown into plain HTML and CSS. There is no database, client-side framework, or build service to understand.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-keep-it-simple&#34;&gt;Why keep it simple?&lt;/h2&gt;&#xA;&lt;p&gt;Simple systems are easier to change. The whole site can be built with one command, inspected with ordinary tools, and deployed almost anywhere. Every page continues to work without JavaScript.&lt;/p&gt;&#xA;&lt;p&gt;That does not mean the design must feel generic. Constraints can make the important choices clearer: type, space, rhythm, color, and the words themselves.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The goal is not to use the fewest possible tools. It is to keep the distance between an idea and a published page short.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;There will be more here over time. For now: hello, world.&lt;/p&gt;&#xA;</content>
  </entry>
  <entry>
    <title>The shape of a useful tool</title>
    <id>https://ryanfowler.com/blog/shape-of-a-useful-tool/</id>
    <link href="https://ryanfowler.com/blog/shape-of-a-useful-tool/" rel="alternate" type="text/html"></link>
    <published>2023-06-16T00:00:00Z</published>
    <updated>2023-06-16T00:00:00Z</updated>
    <summary>Good tools reduce the number of decisions required to do good work.</summary>
    <content type="html">&lt;p&gt;The best tools can be difficult to notice. They fit the work closely enough that the interface recedes and the result stays in view.&lt;/p&gt;&#xA;&lt;p&gt;Software often moves in the other direction. A small need accumulates settings, modes, and extension points. Each choice makes sense in isolation. Together, they ask the user to understand the tool before doing the work.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;“The best modules are those that provide powerful functionality yet have simple interfaces.”&lt;/p&gt;&#xA;&lt;p&gt;&lt;small&gt;&lt;cite&gt;— John Ousterhout, A Philosophy of Software Design&lt;/cite&gt;&lt;/small&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;h2 id=&#34;start-with-the-common-path&#34;&gt;Start with the common path&lt;/h2&gt;&#xA;&lt;p&gt;A useful tool should make its main task obvious. Good defaults are part of the interface, not an alternative to it. They encode a clear opinion while leaving an escape hatch for the cases that genuinely need one.&lt;/p&gt;&#xA;&lt;p&gt;This static site generator has one common path:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-sh&#34;&gt;go run ./cmd/site build&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;That command validates the articles, renders the pages, minifies the assets, and writes a directory ready to deploy. The implementation can change without making the publishing workflow more complicated.&lt;/p&gt;&#xA;&lt;h2 id=&#34;keep-the-seams-visible&#34;&gt;Keep the seams visible&lt;/h2&gt;&#xA;&lt;p&gt;Simple does not mean opaque. Plain Markdown goes in. Plain HTML comes out. A writer can inspect either side with tools that will still exist years from now.&lt;/p&gt;&#xA;&lt;p&gt;A useful tool makes routine work quiet and unusual work possible. Finding that balance is less about adding features than deciding which ideas the tool can safely hide.&lt;/p&gt;&#xA;</content>
  </entry>
</feed>