<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Articles on Sleepless Hacker</title>
    <link>https://sleeplesshacker.com/articles/</link>
    <description>Recent content in Articles on Sleepless Hacker</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Thu, 11 Dec 2025 09:06:00 -0700</lastBuildDate>
    <atom:link href="https://sleeplesshacker.com/articles/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Replace Wordpress with Static Site Generation</title>
      <link>https://sleeplesshacker.com/articles/ssg-replace-wordpress/</link>
      <pubDate>Thu, 11 Dec 2025 09:06:00 -0700</pubDate>
      <guid>https://sleeplesshacker.com/articles/ssg-replace-wordpress/</guid>
      <description>&lt;p&gt;Over the years, I&amp;rsquo;ve become more and more enamored with static assets. Don&amp;rsquo;t get me wrong, there&amp;rsquo;s a place for dynamically generated content. But after spending 15+ years building webapps and websites, I&amp;rsquo;ve reached the point where I truly think the majority of the web is overcomplicated. Wordpress should die in a fire.&lt;/p&gt;&#xA;&lt;p&gt;Harsh? Yes, probably. But the primary benefit that Wordpress provides is that it enables users to produce their own content and publish it immediately, rather than relying on a developer of some flavor to make the changes in code and push it up to the server. 15 years ago, that was revolutionary and the explosion of cheap Wordpress hosting is the proof in the pudding. Realistically, cPanel exists almost completely because Wordpress shattered the website industry and took over.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Uploading Documents to Paperless NGX via API</title>
      <link>https://sleeplesshacker.com/articles/paperless-ngx-api-document-upload/</link>
      <pubDate>Thu, 04 Sep 2025 08:30:45 -0600</pubDate>
      <guid>https://sleeplesshacker.com/articles/paperless-ngx-api-document-upload/</guid>
      <description>&lt;p&gt;A quick note about uploading documents to Paperless NGX via the API: You need to make sure that your multipart form document part includes the filename attribute.&lt;/p&gt;&#xA;&lt;p&gt;This is automatically done by a browser when it&amp;rsquo;s using a file field to pull the file, but if you&amp;rsquo;re constructing the multipart form manually, the API will reject an upload without the filename with the following message:&lt;/p&gt;&#xA;&#xA;&#xA;  &lt;blockquote&gt;&#xA;    &lt;p&gt;The submitted data was not a file. Check the encoding type on the form.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Screeps Power Analysis</title>
      <link>https://sleeplesshacker.com/articles/screeps-power-analysis/</link>
      <pubDate>Tue, 05 Aug 2025 06:45:18 -0600</pubDate>
      <guid>https://sleeplesshacker.com/articles/screeps-power-analysis/</guid>
      <description>&lt;p&gt;In the programmable MMORTS Screeps, you can have more advanced units called Power Creeps. Most players don&amp;rsquo;t utilize them, but when used properly they can be devastatingly effective, for offense, defense, and just economically. You can get a full breakdown of Power Creeps and how they work in the &lt;a href=&#34;https://docs.screeps.com/power.html&#34;&gt;official documentation&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The goal of this article is to discuss the individual powers and try to get a feel for how useful each of them are, and when you&amp;rsquo;d want to use them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pathfinding Page Now Available</title>
      <link>https://sleeplesshacker.com/articles/pathfinding-page-init/</link>
      <pubDate>Thu, 10 Jul 2025 08:32:19 -0600</pubDate>
      <guid>https://sleeplesshacker.com/articles/pathfinding-page-init/</guid>
      <description>&lt;p&gt;Heyo, just as a quick announcement, I&amp;rsquo;ve added a new page to the site dedicated to Pathfinding. My hope is to grow it into an entire section of the site, with detailed information about pathfinding algorithms, breakdowns and summaries of academic research papers, and links to other helpful sites with more information and demos, but for now it&amp;rsquo;s a giant braindump of information.&lt;/p&gt;&#xA;&lt;p&gt;Of particular note is the table of papers at the end of the page. While not comprehensive, it does cover a number of major papers that have influenced the field and produced commonly-used algorithms. I&amp;rsquo;ve added some quick notes for each paper, as well as links to where you can view them without needing a journal subscription (one of the few things I miss about being a student; journal subs are &lt;em&gt;expensive&lt;/em&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Microservices Are Not for You</title>
      <link>https://sleeplesshacker.com/articles/microservices-are-not-for-you/</link>
      <pubDate>Fri, 04 Jul 2025 07:53:44 -0600</pubDate>
      <guid>https://sleeplesshacker.com/articles/microservices-are-not-for-you/</guid>
      <description>&lt;p&gt;Microservices are one of those concepts in webdev that has gained a life all its own, and is now considered a best practice by the industry, the preferred way to build new apps. In my experience, this is especially true for NodeJS developers, but it&amp;rsquo;s definitely not limited to them.&lt;/p&gt;&#xA;&lt;p&gt;I disagree with this position.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-a-microservice&#34;&gt;What is a Microservice?&lt;/h2&gt;&#xA;&lt;p&gt;To keep things simple, we&amp;rsquo;re going to use a simple definition of microservice:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Linkding as a poster child for self-hosting</title>
      <link>https://sleeplesshacker.com/articles/linkding/</link>
      <pubDate>Tue, 01 Jul 2025 07:30:00 -0600</pubDate>
      <guid>https://sleeplesshacker.com/articles/linkding/</guid>
      <description>&lt;p&gt;I recently installed &lt;a href=&#34;https://linkding.link/&#34;&gt;LinkDing&lt;/a&gt; on my Nomad cluster, and I am exceedingly pleased with it.&lt;/p&gt;&#xA;&lt;p&gt;LinkDing is a self-hosted bookmark manager. My setup is using the official Docker container, with a dynamic host volume to ensure the DB doesn&amp;rsquo;t go poof when I inevitably need to restart the task.&lt;/p&gt;&#xA;&lt;p&gt;The core features that I care about are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Official container, meaning I don&amp;rsquo;t need to build my own or rely on someone else to package up the app and build something that might not work properly&lt;/li&gt;&#xA;&lt;li&gt;Documented API, allowing me to fold, spindle, and mutilate my data however I want, with whatever workflows I want now or in the future&lt;/li&gt;&#xA;&lt;li&gt;Tags&lt;/li&gt;&#xA;&lt;li&gt;sqlite database, which simplifies backups considerably&lt;/li&gt;&#xA;&lt;li&gt;PWA for mobile, meaning I don&amp;rsquo;t need a separate app on my phone&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Spinning up the container was extremely simple, and required almost no effort. It&amp;rsquo;s built in Django, which means if I really need to get my hands dirty, I have the relevant experience to debug and make PRs for it. The Django admin is also nice for fixing low-level data issues, such as &amp;ldquo;I really should have made these tags properly cased, I need to modify the tag name itself&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Document Everything</title>
      <link>https://sleeplesshacker.com/articles/document-everything/</link>
      <pubDate>Tue, 15 Apr 2025 09:46:22 -0600</pubDate>
      <guid>https://sleeplesshacker.com/articles/document-everything/</guid>
      <description>&lt;p&gt;Document everything.&lt;/p&gt;&#xA;&lt;p&gt;No, seriously. Document everything. You think you&amp;rsquo;ll remember what you&amp;rsquo;re doing right now. You think you&amp;rsquo;ll remember exactly how machine users should be set up in AWS, because it&amp;rsquo;s so obvious, how could you possibly forget it? You think you&amp;rsquo;ll remember exactly where you&amp;rsquo;re storing that system backup configuration, and how to decrypt it, because it&amp;rsquo;s the most logical thing you ever came up with. It makes perfect sense, Future You would be an idiot to not remember that.&lt;/p&gt;</description>
    </item>
    <item>
      <title>./init</title>
      <link>https://sleeplesshacker.com/articles/init/</link>
      <pubDate>Fri, 28 Mar 2025 10:48:36 -0600</pubDate>
      <guid>https://sleeplesshacker.com/articles/init/</guid>
      <description>&lt;p&gt;This is a personal blog, which means the topics will vary considerably and at my whim. General tags will be used, filter as you wish.&lt;/p&gt;&#xA;&lt;p&gt;Expected topics include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;IT&lt;/li&gt;&#xA;&lt;li&gt;Anime&lt;/li&gt;&#xA;&lt;li&gt;Gaming&lt;/li&gt;&#xA;&lt;li&gt;Screeps&lt;/li&gt;&#xA;&lt;li&gt;Transhumanism&lt;/li&gt;&#xA;&lt;li&gt;Rationality&lt;/li&gt;&#xA;&lt;li&gt;Generalized geekery of all sorts&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This is a safe space for the alphabet mafia and neurodivergent folks. Your existence may not be respected by the rest of the world, but you&amp;rsquo;ll get it here.&lt;/p&gt;&#xA;&lt;p&gt;Content here will not be AI generated. Any exceptions will be clearly marked. I&amp;rsquo;m an IT geek, and I do dabble in AI of all kinds, so this is not an AI-free zone. But you&amp;rsquo;ll at least know that something was AI generated.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
