<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ersatz.website</title><description>Welcome to the ersatz blog. I&apos;m matty: internet astronaut, dog owner, and person.</description><link>https://ersatz.website</link><item><title>Introducing My Postcard Log</title><link>https://ersatz.website/garden/post/postcard-log</link><guid isPermaLink="true">https://ersatz.website/garden/post/postcard-log</guid><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I started sending postcards to people again recently. A while back when I got my typewriter, I signed up for &lt;a href=&quot;https://typepals.com&quot;&gt;TypePals.com&lt;/a&gt; and started snail mailing folks. It was a lot of fun; &lt;a href=&quot;/garden/posts/writing-to-strangers&quot;&gt;I wrote a bit about it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Recently I decided to sign up for a &lt;a href=&quot;https://postcrossing.com&quot;&gt;postcrossing.com&lt;/a&gt;. Postcrossing is a postcard exchange site with a &lt;em&gt;huge&lt;/em&gt; membership. I started keeping a log of all the postcards I&apos;ve been sending folks since I joined!&lt;/p&gt;
&lt;p&gt;Before I talk about the log, I&apos;ll explain how I got here. &lt;a href=&quot;/garden/postcards/&quot;&gt;You can click here to check out the postcard log&lt;/a&gt; if you don&apos;t want the backstory!&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;dinkus-smol&quot;&amp;gt;*&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;Writing letters to people on TypePals was a great time, and there were a lot of really nice folks who reached out to me with letters - and even typewritten postcards. It also spurred my own interest in snail-mailing my friends. Unfortunately I ran out of steam with it. I struggled to keep up with responding to people. It started to become a lot of work to sit down and write back something substantial to someone and any reply less than substantial felt like not matching the effort the nice folks sending me things put into the exchange.&lt;/p&gt;
&lt;p&gt;I know that I can handle postcards though. Since I signed up for TypePals in 2024 (wow), I&apos;ve been sporadically sending cards to friends - both typewritten, and handwritten. I enjoy getting mail and my friends have gotten a laugh out of the cards I&apos;ve sent them. Signing up for Postcrossing gave me an incentive to keep sending cards, but also gave me some consistency in getting some mail of my own!&lt;/p&gt;
&lt;p&gt;Postcrossing is a little different than TypePals. There is a bit more bookkeeping involved. Senders are only able to have five &quot;in-flight&quot; cards at once. You draw a maximum of five random addresses from a queue, and can only draw  more if the recpients log the cards you send them as received. Marking a card as recieved is slightly challenging. Postcrossing tracks the &quot;exchange&quot; by generating a unique code every time you pull an address. The senders are required to write that code onto the postcard being sent, and the receipients of the cards are required to enter that code into postcrossing once they recieve the card. It isn&apos;t perfect, but it works most of the time. It is a little bit of work for both parties, but it is manageable.&lt;/p&gt;
&lt;p&gt;I wanted to keep my own log of cards for a few reasons:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I wanted to have my own log of cards I&apos;ve sent and the distance they&apos;ve traveled. Tracking the total distance around the world my cards have traveled just seemed very compelling. I even started a spreadsheet.&lt;/li&gt;
&lt;li&gt;I enjoy the art on postcards.&lt;/li&gt;
&lt;li&gt;I like to sometimes do some silly collage on the cards I send folks and wanted to maintain some kind of record of the cards I was sending.&lt;/li&gt;
&lt;li&gt;I am interested in Digital Gardening.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As of &lt;em&gt;today&lt;/em&gt;, I&apos;ve sent a total of 8 cards over 30k miles. I think that is really cool.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;/garden/postcards&quot;&gt;If you want to see some of the cards I&apos;ve been sending you can see the log here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;You should check them out! Some of them have some custom made stickers of my dog, others have QR codes to funny videos, some have both. I am having a lot of fun making these.&lt;/p&gt;
&lt;p&gt;&amp;lt;div class=&quot;dinkus-smol&quot;&amp;gt;*&amp;lt;/div&amp;gt;&lt;/p&gt;
&lt;p&gt;The last bullet point in my list of reasons for creating this log needs a little more explanation. When I was doing the redesign for the site, and surfing the internet for inspiration, I came across &lt;em&gt;a lot&lt;/em&gt; of really cool digital gardens. A Digital Garden is a personal website that doesn&apos;t solely publish articles or posts in a strict chronological ordering like a blog does. A garden is a personal website that is more like an interconnected web of pages that grow with the author&apos;s interests like a personal wiki might.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://maggieappleton.com/garden-history&quot;&gt;Maggie Appleton has written about the concept and history of digital gardens here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Digital gardens feel much more like websites that approximate a &lt;em&gt;place&lt;/em&gt; that can be explored to me. I think that idea is very compelling and I want to try to explore that in my own site. I want this place to feel much more like a homepage rather than just a series of posts. I&apos;m not sure what that will look like just yet, but the post card log is a lively little step in that direction.&lt;/p&gt;
&lt;p&gt;In times like these I think that any creative idea you find exciting has to be grabbed onto with both hands and pursued. Even if it is something like updating your silly little website. It is worth doing!&lt;/p&gt;
&lt;p&gt;A few gardens that I felt were pretty inspiring:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ribo.zone&quot;&gt;ribo.zone&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://barnsworthburning.net/&quot;&gt;Barns Worth Burning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://garfriend.me&quot;&gt;garfriend.me&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://geokash.com/&quot;&gt;Geokash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://robinrendle.com/&quot;&gt;Robin Rendle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have a favorite digital garden, you should &lt;a href=&quot;/garden/contact&quot;&gt;tell me about it&lt;/a&gt;.&lt;/p&gt;
</content:encoded></item><item><title>May Distractions</title><link>https://ersatz.website/garden/post/distraction-log-2</link><guid isPermaLink="true">https://ersatz.website/garden/post/distraction-log-2</guid><description>Distraction log for May 2026.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This is my distraction log for May of 2026. I outline some things that I&apos;ve been distracted by during the month of May.&lt;/p&gt;
&lt;p&gt;This post is part of the &lt;a href=&quot;/garden/tags/distraction-log&quot;&gt;Distraction Log&lt;/a&gt; series.&lt;/p&gt;
&lt;h2&gt;Personal Archiving [2026-05-01 Fri]&lt;/h2&gt;
&lt;p&gt;I was reading about the idea of creating personal archives of pages on
the web by carefully and methodically creating an offline version of the
page you want to archive. &lt;a href=&quot;https://alexwlchan.net/2025/personal-archive-of-the-web/&quot;&gt;Alex Chan wrote about their personal process
of creating offline archives
here&lt;/a&gt;. I
thought this was a really interesting way to use the internet: you surf
and browse until you find something that resonates with you, and then
you make it accessible for yourself in perpetuity. Not just a bookmark,
but something as permenent and resilient as possible.&lt;/p&gt;
&lt;p&gt;I strated looking around Alex&apos;s website and reading about how they
create tiny static sites to hold their personal archives and was. really
impressed with the care and intention involved in their creation. Each
one is a bespoke thing. I found myself wondering &quot;Is there anything I
encounter online that I care that much about?&quot; and the answer was a
very loud &quot;I don&apos;t know&quot;.&lt;/p&gt;
&lt;p&gt;Could that be because archiving or maintaining access to things is
actually quite difficult? That the barrier to entry is quite high and
laborious? The process Alex outlines on their site is very labor
intensive.&lt;/p&gt;
&lt;p&gt;I got distracted from reading all the articles on Alex&apos;s site and wrote
a program in Go that wraps the `wget` command with several arguments
that will allow me to create an offline version of a single page on a
site.&lt;/p&gt;
&lt;p&gt;Now I just need to start saving things for myself.&lt;/p&gt;
&lt;h2&gt;Electric Vehicle engine swap [2026-05-03 Sun]&lt;/h2&gt;
&lt;p&gt;Reading about gas prices I was wondering if there were electric vehicle
conversions available for existing gas powered cars. This would be an
insanely involved process for any model of car. Everything attached to
the existing engine - including of course the engine itself - is
probably going to need to get replaced or ripped out. You&apos;d also need a
car that could fit a battery [somewhere]{.underline} in the first place.
You&apos;re gonna be driving a &lt;a href=&quot;https://en.wikipedia.org/wiki/Ship_of_Theseus&quot;&gt;car of
Theseus&lt;/a&gt; at the end of a
conversion.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.evwest.com/diy-kits&quot;&gt;Turns out there are some kits for this but they appear to be extremely
limited in terms of what cars are
supported&lt;/a&gt;. These kinds of kits are
available only for certain models of collector cars. They are also
profoundly expensive. I&apos;m sure there are other companies like EV West
(linked above) that sell these kinds of kits and perhaps others that
will [do the whole thing for you]{.underline} which I&apos;m guessing would
double the already huge price.&lt;/p&gt;
&lt;p&gt;It would be cool if this kind of thing was more affordable for popular
models of gas powered cars manufactured in the last ten years.
Unfortunately it seems like if you don&apos;t have a museum piece collector
car, it would be more practical to just buy an electric vehicle rather
than attempt to convert a gas one. That&apos;s a shame!&lt;/p&gt;
&lt;h2&gt;Self Hosting [2026-05-05 Tue]&lt;/h2&gt;
&lt;p&gt;I am thinking a lot about self hosting lately. I run this website
(currently) on Digital Ocean&apos;s application platform. It works fine. No
issues. Totally happy with it. But I have a suspicion I&apos;d have a little
more fun if I went the DIY route even though the DIY route is often
arduous.&lt;/p&gt;
&lt;p&gt;I spent a little bit of time looking into how I could host the static
site myself - either on computer hardware that I own that is just
sitting around - or on a Digital Ocean VPS. A VPS in the cloud is still
quite &quot;cloud&quot;, but you get to push all the buttons and turn all the
knobs yourself. I decided that might be the way to go becuase I don&apos;t
really want the internet coming to my home network.&lt;/p&gt;
&lt;p&gt;I came up with a tentative plan involving
&lt;a href=&quot;https://caddyserver.com/docs/quick-starts/static-files&quot;&gt;Caddy&lt;/a&gt; to serve
static files (this is a static site!) and then using &lt;a href=&quot;https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html&quot;&gt;Podman&apos;s quadlet
facilities&lt;/a&gt;
for systemd-controlled orchestration.&lt;/p&gt;
&lt;h2&gt;CSS Inspo [2026-05-12 Tue]&lt;/h2&gt;
&lt;p&gt;I started redesigning my site. I was a little bored of the current
layout and styles and wanted to start with a fresh design and fresh 11ty
templates that I could use to better customize different kinds of pages.
I&apos;ve been a little bogged down trying to figure out exactly what design
I want to go with for posts, regular pages, and the landing page of the
blog.&lt;/p&gt;
&lt;p&gt;I started doing a LOT of web surfing to get some design inspiration.
There are a lot of neat personal websites out there with some very cool
styles. I&apos;ve been opening up Firefox&apos;s dev tools and reading other
people&apos;s styles to see how they did some things.&lt;/p&gt;
&lt;p&gt;I started a bookmark folder for web design inspiration and divided it
into a few categories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gardens Personal sites / digital gardens&lt;/li&gt;
&lt;li&gt;Blogs&lt;/li&gt;
&lt;li&gt;Projects Project pages. These are not really personal sites, but sites
representing a project or product along with docs and what not.&lt;/li&gt;
&lt;li&gt;Interactions Pages with interesting CSS animations / interactivity&lt;/li&gt;
&lt;li&gt;Brands Sites of design agencies, brands, and companies. This is a very
specific kind of website, usually very interaction heavy and heavy on
parallax scrolling.&lt;/li&gt;
&lt;li&gt;Resources List of pages with resources to help me out&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&apos;m not sure where the design will end up. I am still feeling it out.
I&apos;ve got a vague plan about how to restructure the 11ty templates I use
for different page types and that should inform a lot of the CSS once I
figure out what markup is going to be shared. For now though, I am a WEB
SURFER.&lt;/p&gt;
&lt;h2&gt;The Golden Bough [2026-05-14 Thu]&lt;/h2&gt;
&lt;p&gt;An offhand remark in a YouTube video about - of all things - the
creation of the movie The Wicker Man (1973) sent me searching for a book
called The Golden Bough: A Study in Magic and Religion written by Sir
James George Frazer. Bookshop.org says that it is &quot;a classic study of
the beliefs and institutions of mankind, and the progress through magic
and religion to scientific thought&quot;. The video mentioned that this book
was an influence on the film. It might be worth a hold at the library.&lt;/p&gt;
&lt;h2&gt;More RSS! MORE! [2026-05-18 Mon]&lt;/h2&gt;
&lt;p&gt;Continuing on with web surfing for design inspo today. I&apos;ve been trying
to fill up my RSS reader lately with cool stuff, and also pruning out
sources that I don&apos;t utilize much. While I&apos;ve been web surfing for
design inspiration I have also been trying to keep a lookout for cool
blogs I&apos;d like to subscribe to. I&apos;ve found a few!&lt;/p&gt;
&lt;p&gt;Finding a couple new subscriptions was a nice surprise but I have gotten
thoroughly distracted from my original mission of finding CSS design
inspiration and have switched gears to &quot;click all the links on this
cool website&apos;s links page&quot; looking for more things to subscribe to.&lt;/p&gt;
&lt;p&gt;Maybe I will find both things at the same time!&lt;/p&gt;
&lt;h2&gt;Caves of Qud [2026-05-19 Tue]&lt;/h2&gt;
&lt;p&gt;I started playing the game &lt;a href=&quot;https://www.cavesofqud.com/&quot;&gt;Caves of Qud&lt;/a&gt;.
I may never recover from this.&lt;/p&gt;
&lt;p&gt;The developers gave &lt;a href=&quot;https://www.youtube.com/watch?v=jV-DZqdKlnE&quot;&gt;a cool GDC talk a few years ago about the
procedural generation the game uses
here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Postcards and Photo Printers [2026-05-20 Wed]&lt;/h2&gt;
&lt;p&gt;I just spent a couple hours making some postcards to send to folks I
drew randomly on &lt;a href=&quot;https://postcrossing.com&quot;&gt;postcrossing.com&lt;/a&gt;. I cut out
a bunch of letters from magazines, printed some QR codes to funny
YouTube videos, and used some stickers of animals and cut-out photos to
create mini-collages on each card. Mostly they were of speech bubbles
coming from the subject of the sticker or photo I picked, and the
message in the bubble was some iteration of &quot;Hello&quot;, &quot;Hey&quot;, or
&quot;Hi&quot; made up of magazine letters and the QR code to a video. It was
fun to make these. I hope people appreciate the effort of them.&lt;/p&gt;
&lt;p&gt;Anyway, I ran out of stickers and photos while making these. I started
looking up at-home photo printers so I could paste some more interesting
things to future postcards.&lt;/p&gt;
&lt;p&gt;Talk about a rabbit hole. Now I&apos;m neck deep in product reviews trying
to figure out if this is a worthwhile expense. I think I might need to
find an application for photo printing outside the narrow use case of
&quot;postcards&quot; to justify buying some kind of of 4x6 printer though.&lt;/p&gt;
&lt;h2&gt;More Caves of Qud [2026-05-22 Fri]&lt;/h2&gt;
&lt;p&gt;I&apos;ve been playing this game and really enjoying it but now I am down a
huge rabbit hole watching YouTube videos about procedural generation
techniques in these kinds of games.&lt;/p&gt;
&lt;p&gt;I think it would be really fun to build one of these. You&apos;d get to
learn a lot of fun algorithms at the very least. Probably some good
software architecture practice too.&lt;/p&gt;
&lt;p&gt;Do I have time for a project like that?????&lt;/p&gt;
&lt;h2&gt;Letterboxd Bookmarklet [2026-05-29 Fri]&lt;/h2&gt;
&lt;p&gt;I was looking on letterboxd to try and see what actors were in a movie I
was watching. I knew what the character names were but not the names of
the actors. When you look up a cast list on letterboxd, they show the
cast of the movie as a flat list of actor names. To see the name of a
character, you have to mouse over the actor name and it will show the
character name. This UI is designed specifically to make me frustrated.
Rude.&lt;/p&gt;
&lt;p&gt;&amp;lt;a href=&quot;javascript:(function()%7Bcast_tab_panel_div%20%3D%20document.getElementById(%22tab-panel-cast%22)%3B%0A%0Acast_list%20%3D%20Array.from(document.getElementsByClassName(%22cast-list%22)%5B0%5D.children)%3B%0A%0Afragment_cast_list%20%3D%20document.createDocumentFragment()%3B%0A%0Acast_list.forEach((cast_element)%20%3D%3E%20%7B%0A%20%20%20%20if%20(cast_element.tagName%20!%3D%20%22A%22)%20%7B%0A%09return%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20character_name%20%3D%20cast_element.dataset.originalTitle%3B%0A%20%20%20%20actor_name%20%3D%20cast_element.innerText%3B%0A%20%20%20%20actor_href%20%3D%20cast_element.getAttribute(%22href%22)%3B%0A%0A%20%20%20%20h3%20%3D%20document.createElement(%22h3%22)%3B%0A%20%20%20%20span%20%3D%20document.createElement(%22span%22)%3B%0A%20%20%20%20span.textContent%20%3D%20character_name%3B%0A%20%20%20%20h3.appendChild(span)%3B%0A%0A%20%20%20%20slug_div%20%3D%20document.createElement(%22div%22)%3B%0A%20%20%20%20slug_div.className%20%3D%20%22text-sluglist%22%3B%0A%20%20%20%20actor_a%20%3D%20document.createElement(%22a%22)%3B%0A%20%20%20%20actor_a.textContent%20%3D%20actor_name%3B%0A%20%20%20%20actor_a.className%3D%22text-slug%22%3B%0A%20%20%20%20actor_a.setAttribute(%22href%22%2C%20actor_href)%3B%0A%20%20%20%20slug_div.appendChild(actor_a)%3B%0A%20%20%20%20%0A%20%20%20%20fragment_cast_list.appendChild(h3)%3B%0A%20%20%20%20fragment_cast_list.appendChild(slug_div)%0A%7D)%3B%0A%0A%0Alist_wrapper%20%3D%20document.createElement(%22div%22)%3B%0Alist_wrapper.className%20%3D%20%22column-block%22%3B%0A%0Alist_wrapper.replaceChildren(fragment_cast_list)%3B%0Acast_tab_panel_div.replaceChildren(list_wrapper)%3B%7D)()%3B&quot;&amp;gt;I wrote a bookmarklet that fixes
this&amp;lt;/a&amp;gt;.&lt;/p&gt;
&lt;p&gt;When I go to the page of a movie on letterboxd, and navigate to the cast
list, I can click this bookmarklet to re-arrange all the actors into a
better layout that matches the other movie tabs: a $term: $definition
format displaying the character name and then the actor playing the
character. The links to actor pages are preserved by the bookmarklet.&lt;/p&gt;
&lt;p&gt;To use it, just drag the hyperlink above to your bookmark bar.&lt;/p&gt;
</content:encoded></item><item><title>Site Redesign!</title><link>https://ersatz.website/garden/post/redesign</link><guid isPermaLink="true">https://ersatz.website/garden/post/redesign</guid><description>I redesigned the website</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Personal websites are living things and are never really
finished. There is always something to tweak, to optimize, or to
experiment with.&lt;/p&gt;
&lt;p&gt;Over the last several months on ersatz.website I&apos;ve made some changes
to the site&apos;s stylesheet to fix some accessibility issues,
restructured it a bit to make it easier to modify, and other related
changes. I made some good changes, but I had a difficult time making
them. My HTML markup across my 11ty static site templates was
inconsistent, and my CSS often combined structure rules with
presentation rules. This made things confusing to read, and a little
risky to change. Overloaded CSS rules and inconsistent markup make
things brittle and easily breakable. I could fix things in the context
of what I was looking at, but unkowingly break something
elsewhere. This kind of thing can happen over long periods of time as
markup and styles are added and removed.&lt;/p&gt;
&lt;p&gt;I could have developed some basica automated browser tests for myself
so I could do a lot of editing and refactoring and ensure I didn&apos;t
break anything while I was working, but that would be a lot of work
just to maintain the same design.&lt;/p&gt;
&lt;p&gt;Instead of developing some kind of tedious automated test suite that
would blow up on any visual regressions in a fantastical effort to
keep things exactly the same, I decided I should do a redesign and
start from a fresh place.&lt;/p&gt;
&lt;p&gt;The site you&apos;re looking at now is the redesigned version.&lt;/p&gt;
&lt;p&gt;I&apos;ve redone virtually all of my 11ty templates to be more consistent
in their markup, and to be much much more decoupled from one
another. There are now mutliple template hierarchies for different
types of pages. I am now differentiating &quot;post&quot; pages from other pages
on the site. The &quot;post&quot; pages are using a specific template hierarchy
for the &quot;blog&quot;, and the other pages such as the &lt;a href=&quot;/&quot;&gt;landing page&lt;/a&gt; use
a different hierarchy. I can now change how my blog posts are rendered
without worrying about affecting how my &quot;pages&quot; look. That&apos;s a huge
win.&lt;/p&gt;
&lt;p&gt;I&apos;ve also addressed a lot of the issues in my CSS. I&apos;ve separated the
structural rules (grid and flex rule definitions) from the
presentational rules such as padding / text size, leaned into the
&quot;flow&quot; utility class definition, defined an explicit text size scale
that is consistently applied, among many other things. I&apos;ve done my
best to really use the CSS &quot;cascade&quot; by writing rules that target as
many elements as possible from the highest level possible in my
stylesheet, then tweak them accordingly for specific areas where they
need to be modified. I tried as much as possible to write the markup
before any CSS. The markup focused approach left me with much more
broadly applicable rules that were easier to override and modify for
specific use cases.&lt;/p&gt;
&lt;p&gt;Between the 11ty template rewrite and the stylesheet revamp, there
were a lot of changes happening at the same time. I tried to keep the
visual style of the redesign simple and manageable. I ended up with a
strong base to build on.&lt;/p&gt;
&lt;p&gt;Apart from markup and styles, another notable change is the wild
header image on my new &lt;a href=&quot;/&quot;&gt;landing page&lt;/a&gt;. I had a lot of fun making
this. I cut out a bunch of letters in different fonts from a stack of
old &lt;code&gt;ART FORUM&lt;/code&gt; magazines. Then I pasted them onto some newsprint, and
used a flatbed scanner to get them into my computer. I cut out each
letter using GIMP, cut the letters out from the newsprint background
using a layer mask, then put them all together in a new image. I am
really happy with the result. I used a similar technique to make the
blog post pagination controls (prev/next links on blog posts). I
wanted to try to give the page a little bit of texture. I think I was
mildly successful, and will probably expand on these techniques a
little more in the future!&lt;/p&gt;
&lt;p&gt;There are a lot of things I&apos;m still planning on updating and changing,
but I wanted to get the new design out there instead of sitting on it
for too long. I want to grow my site into more of a digital garden
than just a blog, and I think this redesign is a nice first step to
that end. The new landing page still holds the list of recent posts
like the old one did, but there is now capacity for much more.&lt;/p&gt;
&lt;p&gt;I really hope you enjoy it! Say hi to my dog in the footer while
you&apos;re here. Desktop only for the moment though!&lt;/p&gt;
</content:encoded></item><item><title>Using Makefiles for Stuff around the Home (dir)</title><link>https://ersatz.website/garden/post/makefile-stuff</link><guid isPermaLink="true">https://ersatz.website/garden/post/makefile-stuff</guid><description>I use a Makefile to deploy my Emacs configuration and describe how it works.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I use a Makefile to move my emacs configuration from its git repo in
my home directory to the emacs config directory. There are a &lt;em&gt;variety&lt;/em&gt;
of better ways a person could move files from one place to another and a
Makefile probably wouldn&apos;t be the wisest first choice. Writing a
script to execute a &lt;code&gt;copy&lt;/code&gt; command would be very straightforward and
absolutely be a more sane choice.&lt;/p&gt;
&lt;p&gt;I wanted to learn a little more about the tool and this seemed like a
fun way to waste some time doing it. I &lt;em&gt;did&lt;/em&gt; waste a lot of time doing
it, but I learned a lot about the tool. I learned enough to make use
of it in more useful circumstances. So it wasn&apos;t a total wash.&lt;/p&gt;
&lt;p&gt;I will say this for using a Makefile instead of a script: it is
&lt;em&gt;weirdly&lt;/em&gt; satisfying only seeing the files you&apos;ve modified get
deployed to where they need to go. I thought it might be fun to go
through how that works in the context of my emacs Makefile.&lt;/p&gt;
&lt;p&gt;After this experiment I ended up adopted Makefiles for several things
including &lt;a href=&quot;https://ersatz.website&quot;&gt;ersatz.website&lt;/a&gt;. It is surprisingly
useful and fairly quick to write once you know what you&apos;re doing.&lt;/p&gt;
&lt;h2&gt;Emacs Makefile: how it works&lt;/h2&gt;
&lt;p&gt;The Makefile I use for my emacs stuff isn&apos;t perfect by any means but
it works pretty good. &lt;a href=&quot;https://git.sr.ht/~matt-y/emacs-conf/tree/main/item/Makefile&quot;&gt;You can view my Makefile in its entirity on
sourcehut
here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The most important part is the phony &lt;code&gt;all&lt;/code&gt; target:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.PHONY: all
all: $(ELISP_OUT_DIR) \
	$(INIT_ELISP_OUT_DIR) \
	$(SNIPPETS_OUT_DIR) \
	$(ELISP:./%.el=$(ELISP_OUT_DIR)/%.el) \
	$(INIT_ELISP:./%.el=$(INIT_ELISP_OUT_DIR)/%.el) \
	$(SNIPPETS:./snippets/%=$(SNIPPETS_OUT_DIR)/%)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;lt;aside&amp;gt;A target is &quot;phony&quot; if it does not produce a file with the
same name as the target.  &amp;lt;/aside&amp;gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;all&lt;/code&gt; target does a couple important things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It creates all the required directories if they don&apos;t already
exist.&lt;/li&gt;
&lt;li&gt;It sets up the pattern rules that Make will use to translate input
files to output files.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These pattern rules are defined where they are needed: as
&lt;em&gt;dependencies&lt;/em&gt; to the &lt;code&gt;all&lt;/code&gt; rule. When running the &lt;code&gt;all&lt;/code&gt; target - the
default target because it is the first target defined in the file -
Make will also evaluate the target&apos;s dependencies. It will effectively
do a topological sort of your targets and their dependencies to figure
out what the required order of operations is.&lt;/p&gt;
&lt;p&gt;The pattern rules are the real core of Make. They are what really
drive the automated incremental builds based on file modified
timestamps. We can look at my elisp pattern rule to see how this
works. In the above snippet, &lt;code&gt;$(ELISP:./%.el=$(ELISP_OUT_DIR)/%.el)&lt;/code&gt;
tells Make that files in the pattern &lt;code&gt;./%.el&lt;/code&gt; should be translated to
&lt;code&gt;$(ELISP_OUT_DIR)/%.el&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You will notice that the input and output patterns share what is
called a &quot;stem&quot; represented by the &lt;code&gt;%&lt;/code&gt;. It represents a non-empty
string. The stem in the input and output rules need to match.&lt;/p&gt;
&lt;p&gt;You can use these rules when defining your Make targets. In the below
snippet I am using the output pattern for my elisp files as the
target, and the input pattern as the &lt;em&gt;dependency&lt;/em&gt; for that target.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(ELISP_OUT_DIR)/%.el: ./%.el
	install $&amp;lt; $@
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We told Make that we need to execute this target in the definition of
our pattern in the &lt;code&gt;all&lt;/code&gt; target. The body if the target simply runs
the &lt;code&gt;install&lt;/code&gt; command using two automatic variables.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$&amp;lt;&lt;/code&gt; refers to the first item in the list of dependencies for the
current target: lets say a file called &lt;code&gt;some-elisp.el&lt;/code&gt; that matches
the input pattern we defined&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$@&lt;/code&gt; refers to the expanded target. In our case here with
&lt;code&gt;some-elisp.el&lt;/code&gt;, it will expand to &lt;code&gt;~/.config/emacs/some-elisp.el&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;lt;aside&amp;gt;&lt;/p&gt;
&lt;p&gt;Automatic variables are like the secret sauce in
Makefiles. There are several different ones available to use, and they
integrate very well with how rules are typically defined.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/unix-tools/tutorial-makefiles/blob/master/documents/08-automatic-variables.md&quot;&gt;Check this page for more on automatic variables&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;lt;/aside&amp;gt;&lt;/p&gt;
&lt;p&gt;With all that set up in the Makefile, I can just type &lt;code&gt;make&lt;/code&gt; in the
terminal, and make will figure out what &lt;code&gt;%.el&lt;/code&gt; files changed by
comparing the timestamps of the input and output files and then
execute the rule for any inputs that are newer.&lt;/p&gt;
&lt;h2&gt;Whew. Was it worth doing?&lt;/h2&gt;
&lt;p&gt;I learned how to use some basic Makefile techniques, and it was kind
of fun to figure it all out. This is an extremely straightforward
Makefile, and I am guessing it could be made even simpler with some
smarter pattern or rule definitions. I am not a Make expert, and there
is a lot about it I am sure I don&apos;t know. It really feels like I was
learning some kind of long lost sorcery trying to implement my file.&lt;/p&gt;
&lt;p&gt;I was able to leverage a lot of this in the Makefile I use for this
website. I build the &lt;code&gt;index.html&lt;/code&gt; page separately from the 11ty
blog. The &lt;code&gt;index.html&lt;/code&gt; page also has its own dependencies! There is a
clojurescript compilation step for the generative art on the
&lt;code&gt;index.html&lt;/code&gt; page that will only be recompiled if the relevant
clojurescript stuff changes. It is really nice to not have to
recompile that stuff or regenerate the whole blog if I only want to
update some styles in my &lt;code&gt;index.html&lt;/code&gt;. That&apos;s why learning Make is
really useful.&lt;/p&gt;
&lt;p&gt;I started learning Go recently and was really surprised to discover
that a lot of folks writing Go code actually use Makefiles to build
their binaries as well!&lt;/p&gt;
&lt;p&gt;If you know how I can improve on the Makefile I use for my emacs
configuration, &lt;a href=&quot;/garden/contact&quot;&gt;you should get in touch with me and tell me how to
make it better&lt;/a&gt;!&lt;/p&gt;
</content:encoded></item><item><title>Spring Cleaning</title><link>https://ersatz.website/garden/post/new-macbook-spring-cleaning</link><guid isPermaLink="true">https://ersatz.website/garden/post/new-macbook-spring-cleaning</guid><description>I got a new computer and begin to dust off some digital cobwebs</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;May really crept up on me this year. I&apos;m always surprised when the
seasons change. The beginning of a season has me makes feeling like it
will last the whole year. They always seem to change faster than I&apos;m
ready for. It&apos;s May now, and summer is coming on quick.&lt;/p&gt;
&lt;p&gt;I&apos;m doing a little digital &quot;spring cleaning&quot; before the summer. I
retired my thinkpad, got a macbook neo, learning a few new tricks, and
doing some organizing.&lt;/p&gt;
&lt;h2&gt;The death of a Thinkpad&lt;/h2&gt;
&lt;p&gt;I bought a new computer recently. I tried to put off doing it for a
long time hoping that component prices would come down. They
didn&apos;t. It doesn&apos;t seem like they will for a long while. The AI trends
of today are making things tough for all of us. Even with the high
prices, I was forced to cave and buy a new one.&lt;/p&gt;
&lt;p&gt;My daily driver for quite a long time now has been an old
Thinkpad. Not too old, but old enough to have issues. If you took a
cross section, you might be able to tell exactly how old it was by
counting the layers of stickers on the lid. It wasn&apos;t the most
powerful or flashy thing available when I bought it, but it worked. I
used it. I managed.&lt;/p&gt;
&lt;p&gt;It developed a chronic issue of turning itself off when the battery
percentage indicator was at 65% or so, and it didn&apos;t take very long to
get there.&lt;/p&gt;
&lt;p&gt;In our planned obsoleceance tinged techno world, my laptop could
reasonably be considered to be &quot;old&quot; (as shit) or &quot;busted&quot; (as
hell). Actually, that is probably a fair assessment. I replaced the
battery in it twice trying to fix the thing, but the issue came back
after the first replacement, and again after the second. I would guess
that the motherboard might be the problem and could somehow be
damaging the battery. I&apos;m not really a hardware person though, and
that sort of thing is a little beyond my patience level if not my
knowledge level. I&apos;m just a simpleton who needs a reliable
computer. Swapping a thinkpad battery is about as far as I&apos;m willing
to go and I probably would have kept using the thing had that worked.&lt;/p&gt;
&lt;p&gt;I decided to replace it with a &lt;em&gt;citrus&lt;/em&gt; Macbook Neo. It is an amazing
color, and just very fun. I like the color so much that I don&apos;t want
to put any stickers on it. I&apos;m loving the neo so far. It has a lot of
good things going for it: battery life, weight, form factor, nice
build, and &lt;em&gt;looks&lt;/em&gt;. It also has decent speakers (very &lt;em&gt;unlike&lt;/em&gt; my
Thinkpad), a nice screen, and keyboard. I spent a little more money on
upgraded storage, and a fingerprint reader. Apple bundled those two
things together. So far it is a snappy little machine and it suits my
purposes wonderfully. It&apos;s really great at its price point.&lt;/p&gt;
&lt;p&gt;It is Springtime right now, and having a new computer on a fresh OSX
install without several years of files strewn all over the place just
feels nice. Not having to thrash around trying to find a charge cable
before my Thinkpad turns itself off is also pretty nice too.&lt;/p&gt;
&lt;h2&gt;(Digital) Spring Cleaning&lt;/h2&gt;
&lt;p&gt;Setting up a new computer is always a &lt;em&gt;bit&lt;/em&gt; of a chore. I don&apos;t like
to obsessively manage my user configurations or installed programs. I
think that sort of thing should be largely fluid. Use what you need
and jettison everything else. Keep it light. That&apos;s a wonderful idea,
but you still need a few things on your computer, don&apos;t you.&lt;/p&gt;
&lt;p&gt;As much as I can on the new computer I am trying to track my
configurations in version control separately from one another. I
don&apos;t want a huge dotfiles repo, I just want to be able to undo
configuration mistakes easily and track why certain changes were
made, or why I made a command alias to do whatever it does.&lt;/p&gt;
&lt;p&gt;Some (digital) highlights:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I decided to do things a little differently and adopt
&lt;a href=&quot;https://www.nushell.sh/&quot;&gt;nushell&lt;/a&gt; as a daily driver. I think it has
a lot of really great ideas and makes using the command line
&lt;em&gt;significantly&lt;/em&gt; more intuitive.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I&apos;m all-in on using Jujutsu over git in my personal projects
now. &lt;a href=&quot;/garden/posts/learning-jujutsu/&quot;&gt;I wrote a post recently about
Jujutsu&lt;/a&gt;, and how interesting I think
it is. I am also trying to learn JJUI, which is a TUI program that
will let me work with a JJ repo in a similar way to how magit lets
you work with a git repo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Now that I&apos;ve got a macbook in my hands again I can sync my
calendar across devices. That&apos;s been a very nice perk of going back
to an apple computer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I&apos;m making a real actual effort to get rid of the rat&apos;s nest of
cables I&apos;ve collected over the last decade-plus. There are a lot of
them. I&apos;m organizing the most-needed ones in a little plastic box
with movable dividers grouped by connector. Everything is getting a
velcro loop! Anything I don&apos;t recognize the use of is getting
tossed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I am no longer managing a TODO list digitally. I messed around with
that quite a bit the last several years and always ended up faffing
around with the configuration of org-mode more than actually using
it. A tale as old as org mode.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I&apos;m leaning less on emacs for programming. This has been another
large time sink. I&apos;ve struggled a lot to get LSP stuff working for
whatever language I want to do things in and I&apos;ve decided it is
largely not worth the headache for me right now. As much as I love
emacs, I like actually doing the thing I set out to do when I
opened it much more than I like trying to figure out why my python
LSP is crash looping.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Speaking of programming. I&apos;m learning the Go programming
language. I use python for scripting, but it would be nice to pick
up a compiled language.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;I am writing documentation for myself, and updating old
documentation. It is nice to come back to an old project and have a
README full of &lt;em&gt;why&lt;/em&gt;. It is amazing how much you can forget about a
project you worked on even as little as a month later.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In the spirit of &quot;spring cleaning&quot; a future nice to have would be a
more sophisticated backup solution for my digital stuff. I use a
hodgepodge of things at the moment, and none of it is really
automated. I&apos;ve got an external drive with a copy of all my ripped
CDs, several &lt;a href=&quot;https://sourcehut.org/&quot;&gt;sourcehut&lt;/a&gt; repos making up the
things I am working on that I want to keep around, and cloud storage
for whatever other miscellaneous files that I want to keep
around. Very likely a bunch of TTRPG pdfs, and a lot of pictures of
my dog. It&apos;s slapdash at best. It works, sure, but I can do better.&lt;/p&gt;
&lt;p&gt;I&apos;d like to get some kind of automated backup going for some true
&quot;cold storage&quot;. Maybe I&apos;ll give &lt;a href=&quot;https://rsync.net/&quot;&gt;rsync.net&lt;/a&gt; a try.&lt;/p&gt;
&lt;h2&gt;(Actual) Spring Cleaning&lt;/h2&gt;
&lt;p&gt;Outside of the literal computer I&apos;m tidying up some other things in my
physical space, and trying to take care of some long-needed projects
around the house. My gf moved in, and we&apos;re learning to cohabitate. I
think it is going well, but we&apos;re still adjusting! It takes time. I
had to get rid of a lot of furniture to make room for another person,
and there is still even more to get rid of, and even more to put into
storage. I think I&apos;ll feel much lighter once we get all the furniture
swapping sorted out.&lt;/p&gt;
&lt;p&gt;The kitchen cabinets got re-arranged. Now that there are two people
living here we acutally had to get a free standing pantry for the
extra storage. We moved almost everything around. I&apos;m still opening
the wrong cabinets looking for things in their old places.&lt;/p&gt;
&lt;p&gt;The dog got a bath the other day, and they spritzed him with some kind
of strawberry smelling &lt;em&gt;something&lt;/em&gt;. He&apos;s super fluffy and smells
great. I think he&apos;s very pleased about it too.&lt;/p&gt;
&lt;h2&gt;Anyway&lt;/h2&gt;
&lt;p&gt;This post is getting huge, so I&apos;ll leave it here. I am excited for the
summer. It is hard to gain any kind of momentum these days with the
world being the way it is. I am trying to celebrate whatever little
wins I can. Hopefully you are doing the same.&lt;/p&gt;
</content:encoded></item></channel></rss>