<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Unnecessary</title>
		<link>https://unnecessary.tech/</link>
		<description>Recent content on Unnecessary</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Tue, 09 Jun 2026 17:05:58 -0400</lastBuildDate>
		
			<atom:link href="https://unnecessary.tech/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Primary Election Day 2026</title>
				<link>https://unnecessary.tech/posts/election-day/</link>
				<pubDate>Tue, 09 Jun 2026 17:05:58 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/election-day/</guid>
				<description>Voting needs to be accessible to everyone, but voters should take the responsibility to make an informed choice, otherwise they should skip the ballot box.</description>
			</item>
			<item>
				<title>Standard.site</title>
				<link>https://unnecessary.tech/posts/standard-site/</link>
				<pubDate>Mon, 08 Jun 2026 10:11:01 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/standard-site/</guid>
				<description>Exploring the Standard.site lexicon and integrating it into my hugo blog.</description>
			</item>
			<item>
				<title>Why is Time so Complicated?</title>
				<link>https://unnecessary.tech/posts/tzif/</link>
				<pubDate>Sun, 21 Sep 2025 09:55:03 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/tzif/</guid>
				<description>&lt;p&gt;I have been building a &lt;a href=&#34;https://hexdocs.pm/tzif/index.html&#34;&gt;time zone database library&lt;/a&gt;&#xA;which uses the &lt;a href=&#34;https://www.iana.org/time-zones&#34;&gt;IANA Time Zone Database&lt;/a&gt;&#xA;for the &lt;a href=&#34;https://gleam.run&#34;&gt;gleam programming language&lt;/a&gt;. When you start working&#xA;with programming and time zones you realize that time is strangely complicated&#xA;for computers. What seems simple to&#xA;us—hours, days, years—is built on a foundation of physics, astronomical quirks,&#xA;and human convention that creates enormous complexity. This post is a little&#xA;context for a new time zone library I&amp;rsquo;m creating.&lt;/p&gt;</description>
			</item>
			<item>
				<title>We Are Not Machines</title>
				<link>https://unnecessary.tech/posts/we-are-not-machines/</link>
				<pubDate>Sun, 14 Sep 2025 19:34:36 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/we-are-not-machines/</guid>
				<description>&lt;p&gt;From determining who gets a job interview to who receives critical healthcare,&#xA;opaque computational algorithms are increasingly making life-altering decisions&#xA;about us, not with us. The dispassionate logic of code is replacing human&#xA;judgment, and it is incumbent upon us to ensure that compassion and empathy&#xA;remain at the heart of our systems, especially when human lives are at stake.&#xA;Computers should make our lives better, not reduce us to cogs trapped in a&#xA;machine of our own making.&lt;/p&gt;</description>
			</item>
			<item>
				<title>MCP Server Programming: Inspector</title>
				<link>https://unnecessary.tech/posts/mcp-inspector/</link>
				<pubDate>Mon, 11 Aug 2025 13:57:34 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/mcp-inspector/</guid>
				<description>&lt;p&gt;In &lt;a href=&#34;https://unnecessary.tech/posts/unnecessary-ai/&#34;&gt;yesterday&amp;rsquo;s post&lt;/a&gt; I wrote about how I&#xA;thought Model Context Protocol (MCP) was one of the most interesting aspects&#xA;of the current AI hype. I&amp;rsquo;m going to start writing about an MCP server that I&#xA;am building, but before I start that I thought I would talk about a tool which&#xA;is a great help in building and testing MCP servers, and that tool is &lt;a href=&#34;https://github.com/modelcontextprotocol/inspector&#34;&gt;MCP&#xA;Inspector&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&#xA;  &lt;img class=&#34;responsive&#34; src=&#34;https://unnecessary.tech/img/mcp-inspector.png&#34; alt=&#34;An image of the user interface for the MCP Inspector tool.&#34; /&gt;&#xA;  &#xA;&#xA;&lt;p&gt;MCP Inspector will act as a client for your MCP server, similar to Postman or&#xA;the Swagger UI, the MCP Inspector lets you connect to your MCP server, examing&#xA;and validate it&amp;rsquo;s output, and use the various tools the server exposes. For&#xA;MCP servers that run as subprocesses listening over stdin, MCP Inspector will&#xA;even run the subprocess for you.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Unnecessary AI?</title>
				<link>https://unnecessary.tech/posts/unnecessary-ai/</link>
				<pubDate>Sun, 10 Aug 2025 11:22:36 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/unnecessary-ai/</guid>
				<description>&lt;p&gt;In an &lt;a href=&#34;https://unnecessary.tech/posts/no-language-model/&#34;&gt;earlier post&lt;/a&gt; I wrote a little&#xA;about Markov chains and large language models. Since that time, large language&#xA;model chatbots, and generative AI more generally, have seen a &lt;a href=&#34;https://www.reuters.com/technology/artificial-intelligencer-cloud-wars-20-2025-08-07/&#34;&gt;growth in&#xA;investment&lt;/a&gt;&#xA;as well as support from the &lt;a href=&#34;https://www.federalregister.gov/documents/2025/07/28/2025-14218/promoting-the-export-of-the-american-ai-technology-stack&#34;&gt;U.S.&lt;/a&gt;&#xA;&lt;a href=&#34;https://www.federalregister.gov/documents/2025/07/28/2025-14212/accelerating-federal-permitting-of-data-center-infrastructure&#34;&gt;federal&lt;/a&gt;&#xA;&lt;a href=&#34;https://www.federalregister.gov/documents/2025/01/31/2025-02172/removing-barriers-to-american-leadership-in-artificial-intelligence&#34;&gt;government&lt;/a&gt;&#xA;(as long as it is not &amp;ldquo;&lt;a href=&#34;https://www.federalregister.gov/documents/2025/07/28/2025-14217/preventing-woke-ai-in-the-federal-government&#34;&gt;woke&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&amp;rdquo;).&#xA;Working as a federal contractor in IT infrastructure monitoring and management&#xA;has also meant adapting to this new landscape of AI first solutions development.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-good&#34;&gt;The Good&lt;/h2&gt;&#xA;&lt;p&gt;I am a huge fan of &lt;a href=&#34;https://en.wikipedia.org/wiki/Star_Trek:_The_Next_Generation&#34;&gt;Star Trek: The Next Generation&lt;/a&gt;,&#xA;and I have always wanted to be able to talk to the computer in plain english and&#xA;have it understand what I wanted it to do. I thought we were getting closer with&#xA;devices like Alexa and Siri, but these have had limited usefulness as they&#xA;cannot understand anything beyond basic commands like &amp;ldquo;What is the weather&#xA;today?&amp;rdquo; or &amp;ldquo;Set a timer for 10 minutes.&amp;rdquo; Large language models are changing&#xA;this and letting computers &lt;em&gt;respond&lt;/em&gt; to more complex input, but the devil is in&#xA;the details, as we shall see. Large language models on their own can provide a&#xA;probabalistically generated response which simulates human communication. For&#xA;example asking the question &amp;ldquo;How are you?&amp;rdquo; can elicit a response such as &amp;ldquo;I&#xA;am fine.&amp;rdquo; which is a highly likely response that a human would provide. The&#xA;model itself does not feel anything, and is just constructing a response by&#xA;selecting options from a large volume of input, fine tuning, instructions&#xA;provided during the model&amp;rsquo;s construction, and in a preamble provided when the&#xA;model is run. This preamble is part of the &lt;em&gt;context&lt;/em&gt; which includes the instructions&#xA;provided by the model creators, the instructions provided by the user, and the&#xA;conversation between the user and model.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Advent of Code: Summary</title>
				<link>https://unnecessary.tech/posts/aoc2024-final/</link>
				<pubDate>Thu, 02 Jan 2025 16:57:17 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/aoc2024-final/</guid>
				<description>&lt;p&gt;As usual the holidays really started to take off and I didn&amp;rsquo;t take time to&#xA;work on updates. The upshot is I did finish Advent of Code 2024, but I didn&amp;rsquo;t&#xA;finish Day 24 until the new year. However, before we get to that, let&amp;rsquo;s talk&#xA;about some of the more interesting problems.&lt;/p&gt;&#xA;&lt;h2 id=&#34;day-14-picture-of-a-christmas-tree&#34;&gt;Day 14: Picture of a Christmas Tree?&lt;/h2&gt;&#xA;&lt;p&gt;Part 1 of day 14 was pretty straightforward. Essentially we follow the location&#xA;of a number of robots with initial positions and velocities over a number of time&#xA;steps, however part 2 threw in a significant wrinkle. Find the timestep when&#xA;the robots form a picture of a Chritmas tree. Since we have no sample of what&#xA;this should look like, it is tricky. I figured the image might have fairly sharp&#xA;vertical and horizontal boundaries, so I decided to look for timesteps where&#xA;the robots formed vertical and horizontal structures what were not randomly&#xA;distributed. To do this I used an edge detector which scans 4 rows or columns&#xA;at a time and then compares the number of robots in the two rows or columns on&#xA;one side with the two columns on the other. Generally, if the robots are randomly&#xA;distributed this should be a small number, however if there are vertical or&#xA;horizontal structures there would be a few regions with very high numbers.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Advent of Code 2024 - Day 11</title>
				<link>https://unnecessary.tech/posts/aoc-2024-day11/</link>
				<pubDate>Thu, 12 Dec 2024 10:35:14 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/aoc-2024-day11/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://adventofcode.com/2024/day/6&#34;&gt;Advent of Code day 11&lt;/a&gt; was an example of&#xA;a problem which gets exponentially harder as you do more iterations. Essentially&#xA;there are a series of elements and functions are performed on those elements&#xA;based on their state, including creating more elements. A similar problem was&#xA;the &lt;a href=&#34;https://adventofcode.com/2021/day/6&#34;&gt;Lanternfish problem of 2021&lt;/a&gt;. In this&#xA;case 25 iterations were fairly trivial giving the solution to part 1, but part 2&#xA;asked for 75 iterations. By iteration 35 my computer was slowing to a crawl.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Advent of Code 2024 - Day 6</title>
				<link>https://unnecessary.tech/posts/aoc-2024-day6/</link>
				<pubDate>Fri, 06 Dec 2024 10:35:14 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/aoc-2024-day6/</guid>
				<description>&lt;p&gt;I thought &lt;a href=&#34;https://adventofcode.com/2024/day/6&#34;&gt;Day 6 of Advent of Code&lt;/a&gt; was a&#xA;pretty interesting problem. The first part was relatively straightforward. You&#xA;are given a grid containing empty space an obstructions and the location of a&#xA;guard who start facing north. The guard moved forward until hitting an&#xA;obstruction and then will always turn right and continue on his path. Eventually&#xA;the guard moves off the grid. The &lt;a href=&#34;https://github.com/devries/advent_of_code_2024/blob/main/src/day06/solution.gleam&#34;&gt;code I wrote is on github&lt;/a&gt;.&#xA;To maintain the guard&amp;rsquo;s current state I used a&#xA;type with position and direction. I also defined a type to use if the guard&amp;rsquo;s&#xA;walk was interrupted either by an obstruction, &lt;code&gt;Collision&lt;/code&gt;, or going off the&#xA;grid, &lt;code&gt;OffMap&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Advent of Code 2024 - Day 4</title>
				<link>https://unnecessary.tech/posts/aoc-2024-day4/</link>
				<pubDate>Wed, 04 Dec 2024 13:36:09 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/aoc-2024-day4/</guid>
				<description>&lt;p&gt;The last few days of &lt;a href=&#34;https://adventofcode.com&#34;&gt;Advent of Code&lt;/a&gt; have been fairly&#xA;straightforward and I have&#xA;not really used any new language features of &lt;a href=&#34;https://gleam.run&#34;&gt;Gleam&lt;/a&gt;. I do&#xA;feel like I am better at spotting where the &lt;code&gt;list.fold&lt;/code&gt; function is useful, but&#xA;on day 4 there was a great opportunity to make use of the &lt;code&gt;use&lt;/code&gt; funcitonality.&#xA;Before jumping in with my explanation, &lt;a href=&#34;https://bsky.app/profile/ihh.dev&#34;&gt;Isaac Harris-Holt&lt;/a&gt;&#xA;made a video about &lt;code&gt;use&lt;/code&gt; in Gleam which is very good, so I encourage you to&#xA;watch that first before I describe how I used in on day 4.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Advent of Code 2024 - Day1</title>
				<link>https://unnecessary.tech/posts/aoc-2024-day1/</link>
				<pubDate>Sun, 01 Dec 2024 14:42:39 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/aoc-2024-day1/</guid>
				<description>&lt;p&gt;It&amp;rsquo;s time once again for &lt;a href=&#34;https://adventofcode.com/&#34;&gt;Advent of Code&lt;/a&gt;. This time&#xA;I am trying to use it as an opportunity to get better writing &lt;a href=&#34;https://gleam.run&#34;&gt;Gleam&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://adventofcode.com/2024/day/1&#34;&gt;Today&amp;rsquo;s problem&lt;/a&gt; involved taking two lists&#xA;of integers, presented in an input file with one entry from each list separated&#xA;by three spaces on each line of input, and manipulating these lists to answer a&#xA;few questions. The first question required we sort the lists and then find the&#xA;absolute value of the difference between the elements of each list in sorted&#xA;order. The second part require that we count up the number of occurances of each&#xA;element from the first list in the second list and sum up the multiple of the&#xA;value from the first list with the number of occurances in the second list.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Whispers in the Dark: Gleam Edition</title>
				<link>https://unnecessary.tech/posts/whispers/</link>
				<pubDate>Wed, 20 Nov 2024 10:27:54 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/whispers/</guid>
				<description>I used Bluesky&amp;rsquo;s Jetstream and gleam to resurrect and old project I made for twitter.</description>
			</item>
			<item>
				<title>Bluesky</title>
				<link>https://unnecessary.tech/posts/bluesky/</link>
				<pubDate>Wed, 13 Nov 2024 10:21:26 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/bluesky/</guid>
				<description>&lt;p&gt;It looks like &lt;a href=&#34;https://bsky.app/&#34;&gt;Bluesky&lt;/a&gt; is moving ahead with its promise to&#xA;allow &lt;a href=&#34;https://atproto.com/guides/self-hosting&#34;&gt;self-hosting&lt;/a&gt;. It&amp;rsquo;s not&#xA;ActivityPub, but it seems like the place that&amp;rsquo;s easy enough for anyone to use&#xA;while it is possible to avoid lock-in to some extent. I look forward to seeing&#xA;what people will do with this.&lt;/p&gt;&#xA;&lt;p&gt;In many ways &lt;a href=&#34;https://bsky.app/&#34;&gt;Bluesky&lt;/a&gt; reminds me of the twitter of 2009. It&#xA;is relatively easy to set up a bot and I have done so for my&#xA;&lt;a href=&#34;https://bsky.app/profile/auroraalert.bsky.social&#34;&gt;aurora alerts&lt;/a&gt; system that&#xA;sends me a text alert when the aurora borealis is imminent. It&amp;rsquo;s fun to work&#xA;with this, and I may bring back &lt;em&gt;Whispers in the Dark&lt;/em&gt; which I ran when twitter&#xA;was young.&lt;/p&gt;</description>
			</item>
			<item>
				<title>NotebookLM</title>
				<link>https://unnecessary.tech/posts/notebooklm/</link>
				<pubDate>Thu, 31 Oct 2024 14:14:28 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/notebooklm/</guid>
				<description>&lt;p&gt;I am no fan of the current generative AI frenzy. It has &lt;a href=&#34;https://huggingface.co/blog/sasha/ai-environment-primer&#34;&gt;serious environmental&#xA;consequences&lt;/a&gt;, and&#xA;realistically is nowhere near the AGI they hint to be close to. It does&#xA;however sometimes produce amusing result, for example &lt;a href=&#34;https://unnecessary.tech/img/chris-devries.mp3&#34;&gt;this AI generated&#xA;podcast about me&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;audio controls&gt;&#xA;  &lt;source src=&#34;https://unnecessary.tech/img/chris-devries.mp3&#34;/&gt;&#xA;&lt;/audio&gt;</description>
			</item>
			<item>
				<title>No Language Model</title>
				<link>https://unnecessary.tech/posts/no-language-model/</link>
				<pubDate>Fri, 07 Jul 2023 09:49:52 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/no-language-model/</guid>
				<description>&lt;p&gt;The latest tech fad appears to be generative AI and ChatGPT in&#xA;particular. As with many technologies, this fad has spawned a lot of concern.&#xA;Some of these &lt;a href=&#34;https://mashable.com/article/chatgpt-ai-racism-bias&#34;&gt;concerns are justified&lt;/a&gt;,&#xA;while some &lt;a href=&#34;https://www.npr.org/2023/03/29/1166896809/tech-leaders-urge-a-pause-in-the-out-of-control-artificial-intelligence-race&#34;&gt;are hyperbolic&lt;/a&gt;. Unfortunately most people have a very&#xA;limited understanding of the technology involved, and that leads to fear, panic,&#xA;and &lt;a href=&#34;https://www.bbc.com/news/world-us-canada-65735769&#34;&gt;misuse&lt;/a&gt;. The press,&#xA;which should provide unbiased information is instead &lt;a href=&#34;https://www.cnn.com/2023/06/14/business/artificial-intelligence-ceos-warning/index.html&#34;&gt;amplifying panic&lt;/a&gt;, making rational discussion&#xA;of the technology difficult.&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;responsive&#34;&gt;&#xA;  &#xA;  &lt;a href=&#34;https://xkcd.com/1838/&#34;&gt;&#xA;    &#xA;    &lt;img src=&#34;https://imgs.xkcd.com/comics/machine_learning.png&#34; alt=&#34;Comic with two people, one is on a pile of data, and the other addresses him: &amp;#39;This is Your machine learning system?&amp;#39; The other replies, &amp;#39;Yup! You pour the data into this big pile of linear algebra, then collect the answers on the other side.&amp;#39; &amp;#39;What if the answers are wrong?&amp;#39; asks the first person. &amp;#39;Just Stir the pule until they start looking right.&amp;#39; Courtesy xkcd.com&#34; width=&#34;400px&#34; height=&#34;474px&#34; /&gt;&#xA;    &#xA;  &lt;/a&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;When I first used ChatGPT it reminded me of a much simpler algorithm developed&#xA;over 100 years ago, &lt;a href=&#34;https://en.wikipedia.org/wiki/Markov_chain&#34;&gt;Markov chains&lt;/a&gt;.&#xA;A Markov chain is a stochastic way of building a sequence of items using existing&#xA;sequences. The next element in a sequence is chosen by looking at the last N members&#xA;of that sequence. We then look for that same N sequence pattern in the existing&#xA;sequences and randomly choose one. We then add the next item from that existing&#xA;sequence to the sequence we are generating. To generate text we can create a&#xA;sequence of characters and pick a group of source texts as our existing sequences.&#xA;The surprising thing about this algorithm is it produces text that looks similar&#xA;to the input texts, producing actual words, mimicking punctuation, and at first&#xA;glance looking fairly passable.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Deploying on Fly.io</title>
				<link>https://unnecessary.tech/posts/flyio/</link>
				<pubDate>Tue, 17 Jan 2023 13:06:44 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/flyio/</guid>
				<description>&lt;p&gt;A while ago I deployed this blog to &lt;a href=&#34;https://fly.io/&#34;&gt;Fly.io&lt;/a&gt; as a small exercise to gain&#xA;some experience with the platform, but this is just a static blog that can be&#xA;deployed on any static hosting site. In order to learn more, I decided to&#xA;deploy a small project, &lt;a href=&#34;https://unnecessary.tech/posts/post-news-rss-generator/&#34;&gt;PostNewsRSS&lt;/a&gt;, to &lt;a href=&#34;https://fly.io/&#34;&gt;Fly.io&lt;/a&gt; to get a better idea of how well it performs and how&#xA;easy it is to use.&lt;/p&gt;&#xA;&lt;h2 id=&#34;what-is-flyio-and-what-does-it-cost&#34;&gt;What is Fly.io and what does it cost?&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://fly.io/&#34;&gt;Fly.io&lt;/a&gt; is a PaaS service with servers in 26 locations around the world.&#xA;Their service is based in building and deploying a docker container, but rather&#xA;that deploy it as a container in a host operating system, they deploy each&#xA;container as a separate &lt;a href=&#34;https://firecracker-microvm.github.io/&#34;&gt;firecracker microVM&lt;/a&gt;. This creates additional&#xA;isolation between adjacent services as no two deployed apps use the same kernel.&#xA;&lt;a href=&#34;https://fly.io/&#34;&gt;Fly&lt;/a&gt; also deploys their own hardware to datacenters, which allows them to&#xA;potentially charge cheaper compute, storage, and bandwidth rates than they&#xA;could if they also relied on cloud services such&#xA;as &lt;a href=&#34;https://aws.amazon.com/&#34;&gt;AWS&lt;/a&gt;, &lt;a href=&#34;https://cloud.google.com/&#34;&gt;GCP&lt;/a&gt;, or &lt;a href=&#34;https://azure.microsoft.com/&#34;&gt;Azure&lt;/a&gt;. Compute does seem to be fairly&#xA;competitively priced with a single shared CPU with 1 Gigabyte of RAM costing&#xA;$5.70 a month on &lt;a href=&#34;https://fly.io/&#34;&gt;Fly&lt;/a&gt;. Similar VMs at GCP would run around $6.03 for&#xA;&lt;a href=&#34;https://cloud.google.com/&#34;&gt;GCP&lt;/a&gt; (e2-micro VM), and $6.05 on &lt;a href=&#34;https://aws.amazon.com/&#34;&gt;AWS&lt;/a&gt; (t4g.micro). Dedicated&#xA;compute at &lt;a href=&#34;https://fly.io/&#34;&gt;Fly&lt;/a&gt; is a much higher price with a 2 CPU with 4 Gigabytes of RAM&#xA;solution running $62 a month versus $24.12 for &lt;a href=&#34;https://cloud.google.com/&#34;&gt;GCP&lt;/a&gt; (e2-medium) and&#xA;$24.19 on &lt;a href=&#34;https://aws.amazon.com/&#34;&gt;AWS&lt;/a&gt; (t4g.medium).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Post.news Rss Generator</title>
				<link>https://unnecessary.tech/posts/post-news-rss-generator/</link>
				<pubDate>Mon, 09 Jan 2023 11:05:59 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/post-news-rss-generator/</guid>
				<description>&lt;p&gt;As &lt;a href=&#34;https://twitter.com&#34;&gt;twitter&lt;/a&gt; continues its tumultuous path under Musk&amp;rsquo;s&#xA;leadership, many people have been moving to federated social networks such as&#xA;&lt;a href=&#34;https://joinmastodon.org/&#34;&gt;mastodon&lt;/a&gt; or other ActivityPub federated sites. Like&#xA;the web itself, this allows users on different servers to interact and is a system&#xA;which no one person owns. I think this is a great development, and I am hoping&#xA;this brings about a renaissance in &lt;a href=&#34;https://unnecessary.tech/posts/what_happened/&#34;&gt;non-corporate&lt;/a&gt;&#xA;internet servers (or the &lt;a href=&#34;https://small-tech.org/research-and-development/&#34;&gt;small web&lt;/a&gt; as&#xA;&lt;a href=&#34;https://ar.al/&#34;&gt;Aral Balkan&lt;/a&gt; calls it).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Fading LED Chain</title>
				<link>https://unnecessary.tech/posts/fading_led_chain/</link>
				<pubDate>Sun, 22 Nov 2020 14:03:59 -0500</pubDate>
				<guid>https://unnecessary.tech/posts/fading_led_chain/</guid>
				<description>&lt;p&gt;I am working on an analog electronics project. I&amp;rsquo;m posting my progress on&#xA;youtube.&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#34;&gt;&#xA;&#x9;&#x9;&#x9;&lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/lM3D13wCcMQ?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;&#x9;&#x9;&lt;/div&gt;</description>
			</item>
			<item>
				<title>COVID Data</title>
				<link>https://unnecessary.tech/posts/covid-data/</link>
				<pubDate>Wed, 05 Aug 2020 08:45:42 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/covid-data/</guid>
				<description>&lt;p&gt;I&amp;rsquo;ve been obsessively checking the &lt;a href=&#34;https://www.washingtonpost.com/graphics/2020/national/coronavirus-us-cases-deaths/?hpid=hp_no-name_hp-in-the-news%3Apage%2Fin-the-news&amp;amp;itid=hp_no-name_hp-in-the-news%3Apage%2Fin-the-news&#34;&gt;Washington Post Coronavirus Map&lt;/a&gt;&#xA;to see how my state is doing, and to try to evaluate when it would be safe&#xA;for the kids to return to school. I wanted to be able to use the raw data, and&#xA;then I found &lt;a href=&#34;https://covidtracking.com/&#34;&gt;The COVID Tracking Project&lt;/a&gt;. The COVID Tracking&#xA;Project offers an API to query COVID data, both nationally and on a state by&#xA;state basis. They also offer a raw download of the entire dataset.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Why I Created an OpenFaaS template for COBOL</title>
				<link>https://unnecessary.tech/posts/openfaas-cobol/</link>
				<pubDate>Mon, 27 Apr 2020 09:01:40 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/openfaas-cobol/</guid>
				<description>&lt;p&gt;In early April a &lt;a href=&#34;https://www.cnn.com/2020/04/08/business/coronavirus-cobol-programmers-new-jersey-trnd/index.html&#34;&gt;couple&lt;/a&gt; &lt;a href=&#34;https://www.npr.org/2020/04/22/841682627/cobol-cowboys-aim-to-rescue-sluggish-state-unemployment-systems&#34;&gt;of&lt;/a&gt; &lt;a href=&#34;https://arstechnica.com/tech-policy/2020/04/ibm-scrambles-to-find-or-train-more-cobol-programmers-to-help-states/&#34;&gt;articles&lt;/a&gt; were&#xA;published stressing the need for COBOL programmers to once again come forward&#xA;to use their skills to get us through a crisis of aging infrastructure. This&#xA;wasn&amp;rsquo;t the &lt;a href=&#34;https://archive.nytimes.com/www.nytimes.com/library/tech/98/12/biztech/articles/27millennium.html?RefId=PjxYEutt2uFFwKZO&#34;&gt;first time&lt;/a&gt; their expertise was required. Even back in 1998,&#xA;COBOL was described as&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&amp;ldquo;&amp;hellip; a computer language that runs many of the United States&amp;rsquo; mainframe&#xA;computers but is so old that relatively few American programmers know it.&amp;rdquo;&lt;/p&gt;</description>
			</item>
			<item>
				<title>What Happened to Cyberspace?</title>
				<link>https://unnecessary.tech/posts/what_happened/</link>
				<pubDate>Sat, 24 Aug 2019 09:45:12 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/what_happened/</guid>
				<description>&lt;p&gt;It used to annoy me when people talked about going online as something&#xA;separate from the &amp;ldquo;real world.&amp;rdquo; I always thought of the Internet as part of&#xA;the real world, and as a college student in the early 90s and a graduate&#xA;student in the late 90s, the Internet was a tool I used on a daily basis.&lt;/p&gt;&#xA;&lt;p&gt;I hadn&amp;rsquo;t thought too much about the Internet of my youth until I saw the&#xA;documentary &lt;em&gt;Warren Ellis: Captured Ghosts&lt;/em&gt; a few nights ago. It reminded me&#xA;of a time when I used to frequent Ellis&amp;rsquo;s &lt;em&gt;Die Puny Humans&lt;/em&gt; website, and&#xA;&lt;a href=&#34;https://slashdot.org/&#34;&gt;slashdot&lt;/a&gt;. &lt;em&gt;Die Puny Humans&lt;/em&gt; is gone, though snapshots&#xA;are still available on&#xA;the &lt;a href=&#34;http://web.archive.org/web/*/diepunyhumans.com&#34;&gt;wayback machine&lt;/a&gt;.&#xA;&lt;a href=&#34;https://slashdot.org/&#34;&gt;Slashdot&lt;/a&gt; is still around, but it seems to be a shadow&#xA;of its former self.  These days, there are several replacements for these&#xA;cultural aggregation sites. Places like &lt;a href=&#34;https://boingboing.net/&#34;&gt;BoingBoing&lt;/a&gt;,&#xA;&lt;a href=&#34;https://www.fark.com/&#34;&gt;Fark&lt;/a&gt;, &lt;a href=&#34;http://digg.com/&#34;&gt;Digg&lt;/a&gt;, and&#xA;&lt;a href=&#34;https://www.reddit.com/&#34;&gt;reddit&lt;/a&gt;. These sites seem to offer similar services,&#xA;aggregations, often by users, of cultural material for wider dissemination and&#xA;discussion, but the results seem somewhat muted compared to the posts of 20 or&#xA;even 10 years ago. The wonder of discovery replaced by a more cynical attempt&#xA;to be the first to point to the latest dumpster fire. Part of it may be that&#xA;the destinations are always the same. Links go to&#xA;&lt;a href=&#34;https://www.facebook.com/&#34;&gt;Facebook&lt;/a&gt;, &lt;a href=&#34;https://twitter.com/&#34;&gt;Twitter&lt;/a&gt;, major&#xA;news sites, &lt;a href=&#34;https://medium.com/&#34;&gt;Medium&lt;/a&gt; and few other major websites. The&#xA;personal blogs and small companies so often brought down by &lt;em&gt;slashdotting&lt;/em&gt; are&#xA;now very rare.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Projects</title>
				<link>https://unnecessary.tech/pages/projects/</link>
				<pubDate>Tue, 20 Aug 2019 15:50:24 -0400</pubDate>
				<guid>https://unnecessary.tech/pages/projects/</guid>
				<description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://whispers.unnecessary.tech&#34;&gt;Whispers in the Dark 2&lt;/a&gt;: A real-time look&#xA;at the gestalt of the internet as seen through posts on the &lt;a href=&#34;https://bsky.app&#34;&gt;Bluesky&lt;/a&gt;&#xA;social network.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://shows.unnecessary.tech/&#34;&gt;Series Schedules - No Bullshit&lt;/a&gt;: The internet&#xA;sucks, and it&amp;rsquo;s hard for me to check when a series I am interested in is&#xA;starting, so I made this page which has the dates when shows I am interested&#xA;in watching are coming to streaming services.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://nlm.unnecessary.tech&#34;&gt;No Language Model&lt;/a&gt;: A predictive algorithm which&#xA;writes articles about ChatGPT and AI using Markov chains. &lt;a href=&#34;https://github.com/devries/nlm&#34;&gt;Code on github&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://idolstarastronomer.com/pages/total-control-lighting.html&#34;&gt;Total Control Lighting&#xA;Library&lt;/a&gt;:&#xA;An Arduino library for three-color programmable LEDs sold by&#xA;&lt;a href=&#34;http://www.coolneon.com/&#34;&gt;Cool Neon&lt;/a&gt;.&#xA;These are durable and easy to use LEDs which include a separate clock input&#xA;to make them very flexible to operate. I&amp;rsquo;ve also built a&#xA;&lt;a href=&#34;https://idolstarastronomer.com/total-control-lighting-for-embedded-linux-platforms.html&#34;&gt;linux library&lt;/a&gt;&#xA;suitable for the Raspberry Pi and Beaglebone platforms.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://faas.unnecessary.tech/&#34;&gt;Fucks as a Service&lt;/a&gt;: FaaS is a&#xA;new cloud paradigm. Easily obtain all the Fucks you need in JSON or XML&#xA;using this RESTful service.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://gleam.unnecessary.tech/&#34;&gt;In this shared space&lt;/a&gt;:&#xA;Quotes that update every 30 seconds. That&amp;rsquo;s it.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://hub.docker.com/r/devries/infall&#34;&gt;Asymmetric Infall Model&lt;/a&gt;:&#xA;Described in &lt;a href=&#34;https://ui.adsabs.harvard.edu/abs/2005ApJ...620..800D/abstract&#34;&gt;De Vries &amp;amp; Myers&#xA;(2005)&lt;/a&gt; this&#xA;model is now available as a &lt;a href=&#34;https://docker.com&#34;&gt;docker&lt;/a&gt; container. This can&#xA;make it much easier to use without having to worry about downloading&#xA;appropriate versions of the GSL or CFITSIO libraries.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/devries/blinky-tetris&#34;&gt;Blinky Tetris&lt;/a&gt;: A Tetris game&#xA;played on a wall of 1,250 Total Control Lighting LEDs.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;project-graveyard&#34;&gt;Project Graveyard&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;[Retired] postnewsrss: An RSS generator for&#xA;&lt;a href=&#34;https://post.news&#34;&gt;post.news&lt;/a&gt; user pages.&lt;/li&gt;&#xA;&lt;li&gt;[Retired] COVID Datasette: Explore U.S. COVID data&#xA;using SQL.&lt;/li&gt;&#xA;&lt;li&gt;[Retired] Dad Joke Server: A dad&#xA;needs dad jokes, and this is where I keep mine. Feel free to add to the&#xA;dadabase.&lt;/li&gt;&#xA;&lt;li&gt;[Retired] Martian&#xA;on the Loose: Win prizes from&#xA;&lt;a href=&#34;https://twitter.com/Casanvar/&#34;&gt;Cas Anvar&lt;/a&gt; and&#xA;&lt;a href=&#34;https://www.patreon.com/Adrois&#34;&gt;Bora Kutlu&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>The Go Language</title>
				<link>https://unnecessary.tech/posts/golang/</link>
				<pubDate>Mon, 01 Jul 2019 11:00:51 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/golang/</guid>
				<description>&lt;p&gt;When I was younger I would focus on a program for all day and into the&#xA;evening. I would go to sleep thinking about a program, and I would wake up and&#xA;jump right back into that program. During that time I kept a lot of the state&#xA;of my program in my head, and I could write some very clever code. I moved&#xA;through from primarily using C and thinking a lot about memory allocation to&#xA;Java where I thought a lot about how my classes interacted, and eventually&#xA;programmed primarily in python where I was able to rapidly create terse&#xA;programs, however recently I have been experiencing a few issues in my&#xA;programming productivity.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Martian on the Loose: A Quick Cloud Run Site</title>
				<link>https://unnecessary.tech/posts/quick_run_site/</link>
				<pubDate>Thu, 25 Apr 2019 00:00:00 +0000</pubDate>
				<guid>https://unnecessary.tech/posts/quick_run_site/</guid>
				<description>&lt;p&gt;In my &lt;a href=&#34;https://unnecessary.tech/posts/cloud_run/&#34;&gt;previous post&lt;/a&gt; I discussed &lt;a href=&#34;https://cloud.google.com/run/&#34;&gt;Google Cloud&#xA;Run&lt;/a&gt; as a docker-based PaaS. An opportunity&#xA;arose to put together a quick website to help people play the &lt;a href=&#34;https://martian.unnecessary.tech&#34;&gt;Martian on the&#xA;Loose&lt;/a&gt; scavenger hunt game which is&#xA;currently running to promote &lt;a href=&#34;https://twitter.com/ExpanseOnPrime&#34;&gt;The Expanse&lt;/a&gt;&#xA;television series. The game is managed entirely on twitter by the actor &lt;a href=&#34;https://twitter.com/Casanvar&#34;&gt;Cas&#xA;Anvar&lt;/a&gt; who plays one of the main characters in&#xA;the series, and was instrumental in rallying fans to save the show when SyFy&#xA;canceled it, ultimately leading Amazon to produce the show&amp;rsquo;s upcoming 4th&#xA;season.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Cloud Run: The Future of PaaS</title>
				<link>https://unnecessary.tech/posts/cloud_run/</link>
				<pubDate>Sun, 21 Apr 2019 00:00:00 +0000</pubDate>
				<guid>https://unnecessary.tech/posts/cloud_run/</guid>
				<description>&lt;p&gt;One of the major announcements at Google Cloud Next this year was &lt;a href=&#34;https://cloud.google.com/run/&#34;&gt;Cloud&#xA;Run&lt;/a&gt;,&#xA;which Google describes as &amp;ldquo;containers meet serverless.&amp;rdquo; Although that&amp;rsquo;s a&#xA;great combination of two current buzzwords, in terms of functionality it may&#xA;be more accurate to think of Cloud Run as a modern PaaS service. In contrast&#xA;to classic PaaS, popularized by platforms like&#xA;&lt;a href=&#34;https://www.heroku.com/&#34;&gt;Heroku&lt;/a&gt;, Cloud Run offers the following advantages:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hello (Again) World!</title>
				<link>https://unnecessary.tech/posts/hello/</link>
				<pubDate>Sat, 06 Apr 2019 12:26:19 -0400</pubDate>
				<guid>https://unnecessary.tech/posts/hello/</guid>
				<description>&lt;p&gt;In 2011, as I started programming more and becoming increasingly frustrated&#xA;with academia, I started a blog called &lt;a href=&#34;https://idolstarastronomer.com/&#34;&gt;Idol Star&#xA;Astronomer&lt;/a&gt;. It chronicles budget cuts, LED&#xA;projects, my departure from academia, and a lot of opinions about programming,&#xA;docker, and the cloud. As time went on, I found myself writing less and less.&#xA;Eventually I thought about redesigning the site and writing shorter pieces,&#xA;but I was lazy and working with a very demanding startup, so my website just&#xA;languished.&lt;/p&gt;</description>
			</item>
			<item>
				<title>About</title>
				<link>https://unnecessary.tech/pages/about/</link>
				<pubDate>Sat, 06 Apr 2019 12:01:39 -0400</pubDate>
				<guid>https://unnecessary.tech/pages/about/</guid>
				<description>&lt;img style=&#34;float:left; margin-right:20px; margin-bottom:20px;&#34; src=&#34;https://unnecessary.tech/img/me-edit.jpg&#34; alt=&#34;Christopher De Vries&#34;/&gt;&#xA;&#xA;&lt;p&gt;I&amp;rsquo;m Christopher De Vries. I once was an astronomer, and &lt;a href=&#34;https://unnecessary.tech/pdf/my_thesis.pdf&#34;&gt;wrote my doctoral&#xA;dissertation&lt;/a&gt;&#xA;on star formation at the &lt;a href=&#34;http://www.umass.edu/&#34;&gt;University of Massachusetts,&#xA;Amherst&lt;/a&gt;. I went on to do&#xA;postdoctoral work at the &lt;a href=&#34;http://www.cfa.harvard.edu/&#34;&gt;Harvard-Smithsonian Center for&#xA;Astrophysics&lt;/a&gt; and went on to become a tenured&#xA;professor at &lt;a href=&#34;https://www.csustan.edu/&#34;&gt;California State University&#xA;Stanislaus&lt;/a&gt; before giving it all up to become a&#xA;reclusive hermit&amp;hellip; I mean programmer.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve also helped characterize the debris in low Earth orbit at &lt;a href=&#34;https://www.nasa.gov/centers/glenn/home/index.html&#34;&gt;NASA Lewis&#xA;(now Glenn) Research&#xA;Center&lt;/a&gt;, I&amp;rsquo;ve written&#xA;iPhone and iPad apps for &lt;a href=&#34;https://t2000inc.com/&#34;&gt;Tech 2000&lt;/a&gt;, pushed back the&#xA;frontiers of human and machine knowledge for&#xA;&lt;a href=&#34;https://hindsait.com/&#34;&gt;Hindsait&lt;/a&gt;, and now I keep the internet running with my&#xA;team at &lt;a href=&#34;https://www.secunetics.com/&#34;&gt;Secunetics&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
