<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on professionally executed yak shaves</title><link>https://blog.johnrowley.co/posts/</link><description>Recent content in Posts on professionally executed yak shaves</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 21 Jul 2026 18:09:26 -0700</lastBuildDate><atom:link href="https://blog.johnrowley.co/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Blood and Plunder - Miniatures Storage and Transportation</title><link>https://blog.johnrowley.co/posts/2026-07-21---blood-and-plunder---miniatures-storage-and-transportation/</link><pubDate>Tue, 21 Jul 2026 14:38:10 +0000</pubDate><guid>https://blog.johnrowley.co/posts/2026-07-21---blood-and-plunder---miniatures-storage-and-transportation/</guid><description>&lt;h1 id="2026-07-21---blood-and-plunder---miniatures-storage-and-transportation"&gt;2026-07-21 - Blood and Plunder - Miniatures Storage and Transportation&lt;/h1&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Like many miniature hobbyists, I buy more models than I can immediately field. After spending hours assembling,
painting, and basing them, I also need a storage setup that protects that work.&lt;/p&gt;
&lt;p&gt;Before Blood and Plunder, my go-to method was simple: line Plano boxes with sheet metal and magnetize the bases. That
works well for many games, but it breaks down with Blood and Plunder&amp;rsquo;s smaller 20mm bases.&lt;/p&gt;</description></item><item><title>Blood and Plunder - Summer of Plunder 2026 Escalation League</title><link>https://blog.johnrowley.co/posts/2026-07-20---blood-and-plunder---summer-of-plunder-2026-escalation-league/</link><pubDate>Mon, 20 Jul 2026 00:00:00 -0700</pubDate><guid>https://blog.johnrowley.co/posts/2026-07-20---blood-and-plunder---summer-of-plunder-2026-escalation-league/</guid><description>&lt;h1 id="blood-and-plunder---summer-of-plunder-2026-escalation-league"&gt;Blood and Plunder - Summer of Plunder 2026 Escalation League&lt;/h1&gt;
&lt;p&gt;This post is my easy-reading version of the Competitive Escalation League details from Blood and Pigment&amp;rsquo;s &lt;strong&gt;Summer of
Plunder 2026 Escalation League&lt;/strong&gt; document. My goal was to keep the league structure, weekly game sizes, scenario notes,
scoring, and reporting requirements in one place that is easier to skim than the original PDF, and not to steal from the
great folks over at &lt;a href="https://bloodandpigment.com/"&gt;Blood and Pigment&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Blood and Plunder - FAQ</title><link>https://blog.johnrowley.co/posts/2026-07-09---blood-and-plunder---faq/</link><pubDate>Thu, 09 Jul 2026 23:45:10 +0000</pubDate><guid>https://blog.johnrowley.co/posts/2026-07-09---blood-and-plunder---faq/</guid><description>&lt;h1 id="2026-07-09---blood-and-plunder---faq"&gt;2026-07-09 - Blood and Plunder - FAQ&lt;/h1&gt;
&lt;p&gt;During our first full game of &lt;em&gt;Blood &amp;amp; Plunder&lt;/em&gt;, my friend and I ran into a few rules questions that weren&amp;rsquo;t immediately obvious from the rulebook. After asking the community, here are the answers that helped clear things up.&lt;/p&gt;
&lt;h2 id="can-a-unit-tactically-choose-its-direction-when-falling-back"&gt;Can a unit tactically choose its direction when Falling Back?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; Yes, within reason.&lt;/p&gt;
&lt;p&gt;The rules state that a Shaken unit immediately takes a free Move action &lt;strong&gt;away from the enemy unit&lt;/strong&gt; that caused it to Fall Back, moving around impassable terrain and enemy models.&lt;/p&gt;</description></item><item><title>Minecraft SRV Records</title><link>https://blog.johnrowley.co/posts/2026-01-03---minecraft-srv-records/</link><pubDate>Sat, 03 Jan 2026 00:00:00 -0800</pubDate><guid>https://blog.johnrowley.co/posts/2026-01-03---minecraft-srv-records/</guid><description>&lt;h1 id="2026-01-03---minecraft-srv-records"&gt;2026-01-03 - Minecraft SRV Records&lt;/h1&gt;
&lt;p&gt;SRV (Service) records are DNS records that allow Minecraft clients to connect to a server using a custom domain without needing to specify the port number. The client will automatically look up the SRV record to discover the server&amp;rsquo;s location and port.&lt;/p&gt;
&lt;h2 id="srv-record-components"&gt;SRV Record Components&lt;/h2&gt;
&lt;p&gt;An SRV record for Minecraft consists of three main components:&lt;/p&gt;
&lt;h3 id="name-service-record"&gt;Name (Service Record)&lt;/h3&gt;
&lt;p&gt;The name follows the format: &lt;code&gt;_minecraft._tcp.SUBDOMAIN.OTHERSUBDOMAIN&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;In our case:&lt;/p&gt;</description></item><item><title>Setting up a GTNH Server on AMP</title><link>https://blog.johnrowley.co/posts/2026-01-02---setting-up-a-gtnh-server-on-amp/</link><pubDate>Fri, 02 Jan 2026 00:00:00 -0800</pubDate><guid>https://blog.johnrowley.co/posts/2026-01-02---setting-up-a-gtnh-server-on-amp/</guid><description>&lt;h1 id="2026-01-02---setting-up-a-gtnh-server-on-amp"&gt;2026-01-02 - Setting up a GTNH Server on AMP&lt;/h1&gt;
&lt;p&gt;I recently purchased a license for a game server hosting admin panel called AMP. I purchased it to make it a bit easier to manage disparate game servers, and to simplify backups.&lt;/p&gt;
&lt;p&gt;It supports a wide variety of game servers, however it doesn&amp;rsquo;t have direct support for modded minecraft modpacks outside of the FTB mod packs.&lt;/p&gt;
&lt;h1 id="steps"&gt;Steps&lt;/h1&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;This guide assumes you have a working AMP installation, and basic knowledge of sftp/ssh.&lt;/p&gt;</description></item><item><title>Observability Part 1</title><link>https://blog.johnrowley.co/posts/2020-10-24---what-is-observability/</link><pubDate>Sat, 24 Oct 2020 14:19:22 -0700</pubDate><guid>https://blog.johnrowley.co/posts/2020-10-24---what-is-observability/</guid><description>&lt;h1 id="2020-10-24---what-is-observability"&gt;2020-10-24 - What is observability?&lt;/h1&gt;
&lt;p&gt;Wikipedia describes observability as the following&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;In control theory, observability is a measure of how well internal states of a system can be inferred by knowledge of its external outputs. The observability and controllability of a system are mathematical duals.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;For application developers, and operators this means being able to know if a system is healthy or misbehaving. This is critical for&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;supporting both internal, and external customers.&lt;/li&gt;
&lt;li&gt;getting to root cause faster&lt;/li&gt;
&lt;li&gt;predict outages and issues&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="supporting-customers"&gt;Supporting Customers&lt;/h3&gt;
&lt;p&gt;Customers are important for any system. A webapp that serves no customers, and generates no value for a business will not live long. Customers can be fickle. I have experienced situations where customers encountered defects in a system I was responsible for, and they didn&amp;rsquo;t report them. In one situation the user thought that the defect was an issue with their computer. In another sitation the user just got frustrated and stopped using the application.&lt;/p&gt;</description></item><item><title>You should use Gqlgen (Maybe)</title><link>https://blog.johnrowley.co/posts/2018-12-29---you-should-use-gqlgen-maybe/</link><pubDate>Sat, 29 Dec 2018 23:23:53 -0800</pubDate><guid>https://blog.johnrowley.co/posts/2018-12-29---you-should-use-gqlgen-maybe/</guid><description>&lt;h1 id="2018-12-29---you-should-use-gqlgen-maybe"&gt;2018-12-29 - You should use Gqlgen (Maybe)&lt;/h1&gt;
&lt;h2 id="what-is-graphql"&gt;What is Graphql?&lt;/h2&gt;
&lt;p&gt;Graphql is a query language that has taken the frontend development scene by storm. It provides a great way to expose data to the frontend that allows the frontend developers to request exactly the data they need, no more over fetching, or under fetching (at least in theory). It isn&amp;rsquo;t a panacea, and shouldn&amp;rsquo;t be overhyped. It does though add another tool in the tool belt that can improve the frontend development experience.&lt;/p&gt;</description></item><item><title>Estlcam on Linux</title><link>https://blog.johnrowley.co/posts/2018-12-29---estlcam-on-linux/</link><pubDate>Sat, 29 Dec 2018 13:06:36 -0800</pubDate><guid>https://blog.johnrowley.co/posts/2018-12-29---estlcam-on-linux/</guid><description>&lt;h1 id="estlcam-on-linux"&gt;Estlcam on Linux&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://www.estlcam.de/"&gt;Estlcam&lt;/a&gt; is one of the many tools in the garage cnc hobbyist&amp;rsquo;s tool belt. It is used to convert 2d images, into tool paths that are then fed directly to the cnc router. It&amp;rsquo;s great, it&amp;rsquo;s cheap, but it has one proble&amp;hellip; It doesn&amp;rsquo;t support linux. Time for wine.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.winehq.org/"&gt;Wine&lt;/a&gt; is a subsystem that allows windows system calls to be translated into linux system calls. It is not an emulator (Wine Is Not an Emulator), but will allow us to run native windows programs on linux with minimal issues.&lt;/p&gt;</description></item><item><title>Generics Not Included or Needed ( In This Situation )</title><link>https://blog.johnrowley.co/posts/2017-08-07---generics-not-included-or-needed--in-this-situation-/</link><pubDate>Mon, 07 Aug 2017 17:26:09 -0700</pubDate><guid>https://blog.johnrowley.co/posts/2017-08-07---generics-not-included-or-needed--in-this-situation-/</guid><description>&lt;h1 id="2017-08-07---generics-not-included-or-needed--in-this-situation-"&gt;2017-08-07 - Generics Not Included or Needed ( In This Situation )&lt;/h1&gt;
&lt;p&gt;Commonly people say that the main weakness of golang is the lack of generics. I used to agree with this, but as I have
continued to work with go, I have found that most of the time there are suitable solutions, though not all of them are
perfect.&lt;/p&gt;
&lt;p&gt;One problem that I have been working on solving has to do with generic operations on data from the database. Initially I
used code generation to come up with &amp;ldquo;Generic&amp;rdquo; code, but there was a lot of boilerplate, and I found that it could be
simplified&lt;/p&gt;</description></item></channel></rss>