<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Luminescent Dreams</title>
    <link>https://savanni.luminescent-dreams.com/</link>
    <description>Recent content on Luminescent Dreams</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://savanni.luminescent-dreams.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Glimmer v0.1.0</title>
      <link>https://savanni.luminescent-dreams.com/posts/2026-07-21-glimmer-0_1_0/</link>
      <pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2026-07-21-glimmer-0_1_0/</guid>
      <description>&lt;p&gt;After many months of effort, I have now launched Glimmer 0.1.0.&lt;/p&gt;&#xA;&lt;p&gt;Glimmer is a design system and collection of components for Yew applications in Rust. I developed this as part of the Visions VTT, and have now separated it out for independent publication.&lt;/p&gt;&#xA;&lt;p&gt;Current components include:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Buttons&lt;/li&gt;&#xA;&lt;li&gt;Discrete step meters&lt;/li&gt;&#xA;&lt;li&gt;Fading image loaders and transitions&lt;/li&gt;&#xA;&lt;li&gt;Panels&lt;/li&gt;&#xA;&lt;li&gt;Notebooks&lt;/li&gt;&#xA;&lt;li&gt;Lists&lt;/li&gt;&#xA;&lt;li&gt;Sidebars&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I also provide two example stylesheet themes:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://git.luminescent-dreams.com/savanni/glimmer/src/branch/main/yew/style-neon.css&#34;&gt;Default (boring) styles&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://git.luminescent-dreams.com/savanni/glimmer/src/branch/main/yew/style-neon.css&#34;&gt;Neon&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Both stylesheets require the &lt;a href=&#34;https://git.luminescent-dreams.com/savanni/glimmer/raw/branch/main/yew/style-base.css&#34;&gt;style-base&lt;/a&gt; stylesheet to provide common styling.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stealing an Oilcrow Egg</title>
      <link>https://savanni.luminescent-dreams.com/posts/2025-10-04-oilcrow-egg/</link>
      <pubDate>Sat, 04 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2025-10-04-oilcrow-egg/</guid>
      <description>&lt;p&gt;Last weekend, I ran a heist in the &lt;a href=&#34;https://www.myth.works/collections/the-wildsea-homepage&#34;&gt;Wildsea&lt;/a&gt;. Wildsea is a game that was new to all of us, so while we had read the books, we were going in with very open expectations.&lt;/p&gt;&#xA;&lt;p&gt;As the Firefly (the GM for Wildsea) for this session, and with us intending for the game to be a one-shot, I applied many of my design principles for one-shots, however I also faced several challenges. In this article, I&amp;rsquo;m going to present the scenario in its basic mechanical form, the challenges that I faced when designing a scenario for this system, and an action report from the scenario.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Aurora</title>
      <link>https://savanni.luminescent-dreams.com/posts/2025-10-01-aurora/</link>
      <pubDate>Wed, 01 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2025-10-01-aurora/</guid>
      <description>&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/gallery/_DSC6677.jpg&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/gallery/_DSC6677_hu_f2a159feaa31aa75.jpg&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;        &#xA;        &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/gallery/_DSC6682.jpg&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/gallery/_DSC6682_hu_cf39431d7c3a811c.jpg&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;        &#xA;        &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&lt;/p&gt;&#xA;&lt;p&gt;Since the spectacular photos of aurora from 2003, I have held a constant, enduring, desire to see the aurora myself.&lt;/p&gt;&#xA;&lt;p&gt;Finally, in October of 2024, I finally got the chance. I drove out to a darker area near Providence, and found a bridge where many other people had the same idea. Finding a place to park and pull out my camera, I found a lot of other people who had already set up to take pictures from the bridge.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Mystery of the Bad Data Line</title>
      <link>https://savanni.luminescent-dreams.com/posts/2025-09-19-mystery-bad-data-line/</link>
      <pubDate>Fri, 19 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2025-09-19-mystery-bad-data-line/</guid>
      <description>&lt;p&gt;Today, I want to tell you a story of diagnostics, and a solution to a bug that made me understand a bit more about how electricity works.&lt;/p&gt;&#xA;&lt;p&gt;I had a strand of individually addressible LEDs which unexpectedly stopped working. As I moved from breadboard with jumper cables to a soldered circuit board, the color patterns that I had programmed into the LEDs were suddenly replaced with solid white at maximum brightness.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sun and Moon</title>
      <link>https://savanni.luminescent-dreams.com/posts/2025-09-10-sun-and-moon/</link>
      <pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2025-09-10-sun-and-moon/</guid>
      <description>&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/gallery/Sun%20and%20Moon,%202024%20August.jpg&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/gallery/Sun%20and%20Moon,%202024%20August_hu_1634203e01cc87f7.jpg&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;         &lt;li&gt; Luminance HDR 2.6.1.1Tonemapping parameters:Operator: FattalParameters:Alpha: 1Beta: 0.9Color Saturation: 1.5 Noise Reduction: 0 ------PreGamma: 1 &lt;/li&gt; &#xA;         &lt;li&gt; August, 18, 2024 &lt;/li&gt; &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;&lt;p&gt;I ran across this in Maryland in August of 2024. The particular city I was visiting had a beautiful riverwalk with several footbridges across it. This clock was attached to the side of one of those footbridges.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Home Music Player with a Raspberry Pi</title>
      <link>https://savanni.luminescent-dreams.com/posts/2025-09-05/</link>
      <pubDate>Fri, 05 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2025-09-05/</guid>
      <description>&lt;p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2025-09-05/example-stereo-system.jpg&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/posts/2025-09-05/example-stereo-system_hu_883431cdb5013813.jpg&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;        &#xA;        &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;(&lt;a href=&#34;https://www.lifewire.com/thmb/FokBqld2_vIOPdattJkfT01KYc0=/1336x878/filters:no_upscale%28%29:max_bytes%28150000%29:strip_icc%28%29/McIntosh-Soho-III-MT5-Stereo-system-a-9494141062104974a1820ee1e29bb019.jpg&#34;&gt;image source&lt;/a&gt;)&lt;/p&gt;&#xA;&lt;p&gt;Long ago, my houshold had a home audio system that consisted of multiple components hooked together and then plugged into some speakers. Our system consisted of a Marantz receiver and audio router, a THX-certified 5-channel amplifier, a couple of 4-foot-tall speakers, and a CD player. We also hooked our tiny little 13&amp;quot; TV into this so that even though our screen was small, the sound was magnificent.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mononix</title>
      <link>https://savanni.luminescent-dreams.com/posts/2023-07-09-mononix/</link>
      <pubDate>Sun, 09 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2023-07-09-mononix/</guid>
      <description>&lt;p&gt;As though I don&amp;rsquo;t have enough projects, I actually have another one.&lt;/p&gt;&#xA;&lt;p&gt;For the longest time, I&amp;rsquo;ve had a huge amount of frustration with &lt;a href=&#34;https://nixos.org/&#34;&gt;Nix&lt;/a&gt; as a developer, because normal build tools are hostile to Nix, and the Nix build tools are fractious and don&amp;rsquo;t really function well together, or work with the build tools for other languages. Just in Rust, I have tried &lt;code&gt;buildRustPackage&lt;/code&gt;, &lt;code&gt;buildRustCrate&lt;/code&gt;, &lt;code&gt;Crane&lt;/code&gt;, &lt;code&gt;crate2nix&lt;/code&gt;, and &lt;code&gt;cargo2nix&lt;/code&gt;. And then in Javascript I&amp;rsquo;ve worked with &lt;code&gt;node2nix&lt;/code&gt; and &lt;code&gt;npm2nix&lt;/code&gt;, and &lt;code&gt;buildNodePackage&lt;/code&gt;. There are no tools in C, though arguably C applications are the easiest of all things to build in Rust. Given that C doesn&amp;rsquo;t have a package manager, so there is no need to fight against the toolchains in order to build a C app in Nix with well-defined toolchains and dependencies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Carrying out a View Model Request</title>
      <link>https://savanni.luminescent-dreams.com/posts/2023-04-07-operating-view-request/</link>
      <pubDate>Fri, 07 Apr 2023 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2023-04-07-operating-view-request/</guid>
      <description>&lt;p&gt;Happy Friday, everyone!&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2023-03-31-view-model-architecture/&#34;&gt;Last week&lt;/a&gt;, I talked about view models in my Kifu application. This week, I&amp;rsquo;ve continued on by actually implementing the most important thing that can happen in a Go application: being able to put a stone on the board.&lt;/p&gt;&#xA;&lt;p&gt;For this article, let&amp;rsquo;s talk put this request/response architecture into practice. You can watch me explaining and implementing this in my stream, &lt;a href=&#34;https://www.youtube.com/live/dG9kVRLrcZI&#34;&gt;Putting a stone on the board&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/gallery/Kifu-2023-04-07.png&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/gallery/Kifu-2023-04-07_hu_e1cc37dacbd1dfb7.png&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;        &#xA;        &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;&lt;h1 id=&#34;the-request&#34;&gt;The Request&lt;/h1&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s review the request itself:&lt;/p&gt;</description>
    </item>
    <item>
      <title>View Model Architecture in the Kifu</title>
      <link>https://savanni.luminescent-dreams.com/posts/2023-03-31-view-model-architecture/</link>
      <pubDate>Fri, 31 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2023-03-31-view-model-architecture/</guid>
      <description>&lt;p&gt;Good morning and Happy Friday, everyone!&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve continued on with a couple of weeks of working on a new Go application (which I currently call Kifu, after the traditional name for a record of a game of Go). I have a set of goals for this application that mean that I have to make a very disciplined architecture, since I want to run the application on both Linux and on Android.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Coding Together for March 30th, 2023</title>
      <link>https://savanni.luminescent-dreams.com/posts/2023-03-30-coding-together/</link>
      <pubDate>Thu, 30 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2023-03-30-coding-together/</guid>
      <description>&lt;p&gt;For the last several months, I&amp;rsquo;ve been doing a weekly one-hour coding stream. Starting this week, I&amp;rsquo;ve moved it to Thursday night (tonight!) at 8pm EDT (0000 UTC).&lt;/p&gt;&#xA;&lt;p&gt;In the last stream, I talked about a Kifu, what it&amp;rsquo;s for, why I&amp;rsquo;m trying my hand at building an application, and then I spent the rest of the stream designing the application in HTML form. Tonight, I&amp;rsquo;ll explain the architecture of the application as I have built it, and my intent for why I&amp;rsquo;ve architected it this way. Then we will dig into implementing the very first instruction: that of placing a stone on the board.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Transformed</title>
      <link>https://savanni.luminescent-dreams.com/posts/2023-02-22-transformed/</link>
      <pubDate>Wed, 22 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2023-02-22-transformed/</guid>
      <description>&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/gallery/Snowglow,%202019-12.jpg&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/gallery/Snowglow,%202019-12_hu_7033cb1ac3b2b5ff.jpg&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;         &lt;li&gt; Snowglow, 2019-12 &lt;/li&gt; &#xA;         &lt;li&gt; December, 01, 2019 &lt;/li&gt; &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;&lt;p&gt;Weather changes can completely transform a familiar space. I feel that snow can make the biggest (temporary) transformations.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Frozen Tree</title>
      <link>https://savanni.luminescent-dreams.com/posts/2023-02-02-frozen-tree/</link>
      <pubDate>Thu, 02 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2023-02-02-frozen-tree/</guid>
      <description>&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/gallery/Frostigita%20Arbo,%202022-01.jpg&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/gallery/Frostigita%20Arbo,%202022-01_hu_71b8cba4ee005c12.jpg&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;         &lt;li&gt; Frostigita Arbo, 2022-01 &lt;/li&gt; &#xA;        &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;&lt;p&gt;In honor of the extreme freeze hitting the US right now, here is a tree that I photographed a year ago. I truly cannot imagine the experience of being unable to escape the cold.&lt;/p&gt;&#xA;&lt;p&gt;In a Factorio game (peaceful mode, no cliffs) that I&amp;rsquo;ve been playing for the last few days, I got my first construction bot off the production line at 4 hours, 49 minutes into the game. It took me another ten minutes to get my personal roboport up and running. I&amp;rsquo;m pretty proud of this and think that probably I will not be attempting to go faster. Now that I have the bots, I can start stamping down the designs that I use to scale up my base. My goal for this game is Megabase level with 1000 science per hour.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Frozen in Space</title>
      <link>https://savanni.luminescent-dreams.com/posts/2023-01-25-frozen-in-space/</link>
      <pubDate>Wed, 25 Jan 2023 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2023-01-25-frozen-in-space/</guid>
      <description>&lt;figure&gt;&#xA;    &lt;a href=&#34;https://savanni.luminescent-dreams.com/gallery/Frozen%20in%20Space,%202023-01.jpg&#34;&gt;&lt;img src=&#34;https://savanni.luminescent-dreams.com/gallery/Frozen%20in%20Space,%202023-01_hu_7d6dc7d803d1a727.jpg&#34; /&gt;&lt;/a&gt;&#xA;    &#xA;    &lt;ul&gt;&#xA;         &lt;li&gt; Frozen in Space, 2023-01 &lt;/li&gt; &#xA;         &lt;li&gt; January, 17, 2023 &lt;/li&gt; &#xA;    &lt;/ul&gt;&#xA;    &#xA;&lt;/figure&gt;&#xA;&#xA;&#xA;&lt;p&gt;This has been a mild winter, but sometimes the standing water still freezes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekly Ramblings for June 9th, 2022</title>
      <link>https://savanni.luminescent-dreams.com/posts/2022-06-12-weekly-ramblings/</link>
      <pubDate>Thu, 09 Jun 2022 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2022-06-12-weekly-ramblings/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/48198819261/in/datetaken/&#34; title=&#34;Geese!, 2018-11&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/48198819261_4c49b73490_z.jpg&#34; width=&#34;640&#34; height=&#34;425&#34; alt=&#34;Geese!, 2018-11&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;Been a while, y&amp;rsquo;all! No sooner did I make my website multilingual than I ran out of any energy to actually do any writing. Nevertheless, I am back and it&amp;rsquo;s time to ramble a bit.&lt;/p&gt;&#xA;&lt;h1 id=&#34;zettlekasten&#34;&gt;Zettlekasten&lt;/h1&gt;&#xA;&lt;p&gt;Over the course of the last year and a few months, I&amp;rsquo;ve gotten vaguely on the Zettlekasten (or Second Brain) bandwagon. I&amp;rsquo;ve actually been sticking to it, though I&amp;rsquo;m pretty terrible at actually processing my backlog of information. Yet even with my backlog continuing to pile up, I&amp;rsquo;m finding it an invaluable tool for organizing information and making sure that I can actually find things afterwards.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Multilingual, Finally</title>
      <link>https://savanni.luminescent-dreams.com/posts/2020-11-03/</link>
      <pubDate>Tue, 03 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2020-11-03/</guid>
      <description>&lt;p&gt;Yesterday, I finally published a multilingual version of my website!&lt;/p&gt;&#xA;&lt;p&gt;I have translated multiple articles, but my last program did not understand that multiple articles can be the same article but in different languages. The new program understands that, so I can easily create an article in multiple languages and the program will link them together.&lt;/p&gt;&#xA;&lt;p&gt;My challenge: write a new article in Esperanto, and translate it to English!&lt;/p&gt;&#xA;&lt;p&gt;I will post it Saturday!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekly Ramblings for June 22nd, 2020</title>
      <link>https://savanni.luminescent-dreams.com/posts/2020-06-22-weekly-ramblings/</link>
      <pubDate>Mon, 22 Jun 2020 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2020-06-22-weekly-ramblings/</guid>
      <description>&lt;p&gt;Hello, everyone, and welcome back after a long, unexpected hiatus!&lt;/p&gt;&#xA;&lt;p&gt;COVID-19 has really done a number on my mental health and my activities, but I have managed to continuing to get outside to run, and nobody in my family has gotten sick. We&amp;rsquo;re continuing to largely self-isolate, with only occasional careful trips to the grocery store.&lt;/p&gt;&#xA;&lt;p&gt;I have kept myself very busy with a combination of practicing Esperanto, trying to build a clock inside of Minecraft (harder than you might think), and building a real computer on a breadboard using real digital circuits.&lt;/p&gt;</description>
    </item>
    <item>
      <title>FitnessTrax 0.1.0</title>
      <link>https://savanni.luminescent-dreams.com/posts/2020-03-27-fitnesstrax-0.1.0/</link>
      <pubDate>Fri, 27 Mar 2020 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2020-03-27-fitnesstrax-0.1.0/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/49703729833/in/dateposted/&#34; title=&#34;The Streets at Night, 2019-09&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/49703729833_e4ffe44581_z.jpg&#34; width=&#34;640&#34; height=&#34;412&#34; alt=&#34;The Streets at Night, 2019-09&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;Hello, and welcome back!&lt;/p&gt;&#xA;&lt;p&gt;Today, I get to announce that I have release &lt;a href=&#34;https://github.com/luminescent-dreams/fitnesstrax/&#34;&gt;FitnessTrax 0.1&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;FitnessTrax is a health and workout tracking program designed for individual users and following the privacy policy of keeping all of your data on your own computer. Data that lives there cannot be mined and exploited by third party companies that may not really have your privacy in mind.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Honoring Amelia, two years later</title>
      <link>https://savanni.luminescent-dreams.com/posts/2020-01-31-honoring-amelia/</link>
      <pubDate>Fri, 31 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2020-01-31-honoring-amelia/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.ameliaperry.info/&#34;&gt;In Memory of Amelia Perry&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Two years ago today, I woke up to the news that my friend, &lt;a href=&#34;https://savanni.luminescent-dreams.com/2018/02/07/remembering-amelia&#34;&gt;Amelia, was gone&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Amelia was the victim of our country&amp;rsquo;s &lt;a href=&#34;https://savanni.luminescent-dreams.com/2018/05/21/trans-people-mental-health&#34;&gt;transphobia and inadequate response to mental health needs&lt;/a&gt;. She ended her life after six months intermittently in hospitals. Since then, I have participated in some of the same hospitalization programs as her. While I have been able to recover, her experiences continue to remind me htat these systems are inadequate, and that transgender inclusion cannot be assumed even in a state whose laws support transgender rights.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Rust and GTK from a React perspective</title>
      <link>https://savanni.luminescent-dreams.com/posts/2020-01-15-rust-react-gtk/</link>
      <pubDate>Wed, 15 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2020-01-15-rust-react-gtk/</guid>
      <description>&lt;p&gt;Recently, after a few failed attempts at using other frameworks to make an application that was both easy to use and easy to install, I embraced native software development with Rust and GTK.&lt;/p&gt;&#xA;&lt;p&gt;Though I have made short forays in the past, GTK was a change for me. Before this, most of my user interface experience came from building React applications. The transition from React to GTK posed some challenges. Most came from differences in widget philosophy. GTK in Rust, though, is particularly hard because of the extra rules Rust enforces to protect against memory management errors and against operations that are unsafe to do in a threaded context.&lt;/p&gt;</description>
    </item>
    <item>
      <title>A bit of freehand sketching</title>
      <link>https://savanni.luminescent-dreams.com/posts/2020-01-14-freehand-sketching/</link>
      <pubDate>Tue, 14 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2020-01-14-freehand-sketching/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/49384266558/in/dateposted/&#34; title=&#34;living-room-freehand&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/49384266558_58f8bb7d17_z.jpg&#34; width=&#34;640&#34; height=&#34;360&#34; alt=&#34;A very rough sketch featuring several plain squares with some rough perspective. The sketch represents my living room. There is a dark square in the center representing my TV, with multiple arches representing the various openings in the wall.&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;As a change of pace, today I&amp;rsquo;ll share a rough freehand sketch that I made this morning. I was sitting in my favorite spot in my living room and decided to do a quick fifteen minute &amp;ldquo;speed sketch&amp;rdquo;. This one depicts my TV, the stand it sits atop, and the various doorways leading out of the room. It basically skips out on all of the details sitting around.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fitnesstrax 0.0.4 and GTK</title>
      <link>https://savanni.luminescent-dreams.com/posts/2020-01-03-weekly-ramblings/</link>
      <pubDate>Fri, 03 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2020-01-03-weekly-ramblings/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/49322605411/in/dateposted/&#34; title=&#34;_DSC3706.web&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/49322605411_391b9fe04d_z.jpg&#34; width=&#34;640&#34; height=&#34;448&#34; alt=&#34;_DSC3706.web&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;I finally return after a bunch of weeks. December was an incredibly hard month, and the mental health problems I referenced in my &lt;a href=&#34;https://savanni.luminescent-dreams.com/2019/11/24/weekly-ramblings/&#34;&gt;last post&lt;/a&gt; actually became significantly more pronounced. I found that I had to take a large amount of time away from the world in order to get things back together.&lt;/p&gt;&#xA;&lt;p&gt;Last time I got this bad, back in 2013, I had the freedom to quit my job, sell my house, and go live in the woods for a year. Not so this time, as I still haven&amp;rsquo;t recovered from the financial impact of trying to control my re-entry into the workforce.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Some Ramblings for November 24th, 2019</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-11-24-weekly-ramblings/</link>
      <pubDate>Sun, 24 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-11-24-weekly-ramblings/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/49119945941/in/dateposted/&#34; title=&#34;_DSC3525.web&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/49119945941_c3a5819cc2_z.jpg&#34; width=&#34;640&#34; height=&#34;436&#34; alt=&#34;_DSC3525.web&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;Welcome back to another week of my ramblings.&lt;/p&gt;&#xA;&lt;p&gt;Autumn here is quite thoroughly over, with Boston having gotten a couple of light freezes and a lot of dreary, watery weather. This picture is from more than a month ago, right around the time I was starting to get sick. Chances are, going on a hike and &amp;ldquo;taking the fresh mountain air&amp;rdquo; did not actually help my health at all, seeing as I then spent two weeks sick and several additional weeks with the dregs of illness.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekly Ramblings for November 17th, 2019</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-11-17-weekly-ramblings/</link>
      <pubDate>Sun, 17 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-11-17-weekly-ramblings/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/49080323058/in/dateposted/&#34; title=&#34;Barnaby Castle, 2019-09&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/49080323058_24e29a8282_z.jpg&#34; width=&#34;640&#34; height=&#34;427&#34; alt=&#34;Barnaby Castle, 2019-09&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;This is Barnaby Castle in Providence, Rhode Island. Some of my friends live here, and it is currently undergoing incredible rennovations. The castle was apparently neglected for many years, and fell into disrepair, but it is still a very recognizable landmark that apparently everybody in Providence knows about. Currently it consists of something like five separate apartments, with signs of room for several more as the owner progressively continues with improvements.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekly Ramblings for November 3rd, 2019</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-11-03-weekly-ramblings/</link>
      <pubDate>Sun, 03 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-11-03-weekly-ramblings/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/48198884927/in/dateposted/&#34; title=&#34;Along the Tracks, 2019-05&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/48198884927_bcab3acd3e_z.jpg&#34; width=&#34;640&#34; height=&#34;426&#34; alt=&#34;Along the Tracks, 2019-05&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;Hello, everyone, and welcome back to another round of my weekly ramblings!&lt;/p&gt;&#xA;&lt;p&gt;This week I was still a bit under the weather, but I did a lot of work and started setting up my new machine.&lt;/p&gt;&#xA;&lt;h1 id=&#34;nixos&#34;&gt;NixOS&lt;/h1&gt;&#xA;&lt;p&gt;For me, setting up a machine is a complicated process. I typically run NixOS where I can, and I run MacOS with a Nix overlay when I cannot. For running MacOS, where the OS comes pre-installed and ready on the pre-configured hardware, system setup can take less than half an hour. I have to install nix, clone my nix-shell repository, then run &lt;code&gt;nix-env -i all&lt;/code&gt;, and suddenly I have a full system with all of my configuration options.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekly Ramblings for October 26th, 2019</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-10-26-weekly-ramblings/</link>
      <pubDate>Sat, 26 Oct 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-10-26-weekly-ramblings/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34; href=&#34;https://www.flickr.com/photos/32072463@N02/48882096147/in/dateposted/&#34; title=&#34;_DSC2984&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/48882096147_f6718ed143_z.jpg&#34; width=&#34;640&#34; height=&#34;420&#34; alt=&#34;_DSC2984&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;Every week I try to post a set of ramblings about things I find interesting or things that I have done in tech for the most recent week.&lt;/p&gt;&#xA;&lt;p&gt;However, I&amp;rsquo;ve spent weeks sick. Longest illness of my life, to the point that I felt better while on bed rest eight days post-op than I did eight days into this illness.&lt;/p&gt;&#xA;&lt;p&gt;In the midst of this, though, I was able to celebrate my 41st birthday, complete with wine, cheese, friends, and me threatening &lt;a href=&#34;http://bethcakes.com/gingerbread-cake-with-maple-bourbon-frosting/&#34;&gt;a cake&lt;/a&gt; with a knife. My pastry creations don&amp;rsquo;t fare well, but they are very, &lt;em&gt;very&lt;/em&gt; tasty.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Weekly Roundup</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-09-29-weekly-roundup/</link>
      <pubDate>Sun, 29 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-09-29-weekly-roundup/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/48818329562/in/datetaken/&#34; title=&#34;Arches, 2019-09&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/48818329562_5f387bc28f_z.jpg&#34; width=&#34;640&#34; height=&#34;430&#34; alt=&#34;Arches, 2019-09&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;While normally I post these on Friday, this last week was quite busy and left me no time to write.&lt;/p&gt;&#xA;&lt;p&gt;And, in fact, I have very little to write about. I had a trip with my partner to New Hope, Pennsylvania. It was, as always, quite lovely, but there is very little to do in New Hope.&lt;/p&gt;&#xA;&lt;p&gt;I returned to start a job with a new client company, in the company&amp;rsquo;s office for the first time since starting at Cloud City, and meet for the first time a co-worker with whom I&amp;rsquo;ve paired for literally hundreds of hours of work.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tech Chaos for September 20th, 2019</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-09-20-tech-roundup/</link>
      <pubDate>Fri, 20 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-09-20-tech-roundup/</guid>
      <description>&lt;div class=&#34;center my-1&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/48765188503/in/datetaken/&#34; title=&#34;That&amp;#x27;s No Moon!, 2019-07&#34;&gt;&lt;img src=&#34;https://live.staticflickr.com/65535/48765188503_5de3a971ea_z.jpg&#34; width=&#34;640&#34; height=&#34;453&#34; alt=&#34;That&amp;#x27;s No Moon!, 2019-07&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;TGIF, and welcome back, y&amp;rsquo;all!&lt;/p&gt;&#xA;&lt;p&gt;I am currently struggling with some pretty severe mental health issues, so about the only thing I have the energy to do is write today. Worst part of this mental health issue is that it is mostly about anxiety, and fearing the worst in an upcoming event. But I cannot do anything to put the anxiety aside, and I cannot do anything to bring the event on faster so I can find out the results, so&amp;hellip; sucks to be me at the moment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up a Custom Nix Channel</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-09-13-nix-channel/</link>
      <pubDate>Fri, 13 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-09-13-nix-channel/</guid>
      <description>&lt;p&gt;Happy Friday the 13th, everyone!&lt;/p&gt;&#xA;&lt;p&gt;This week has gone extremely well, with me finishing a project for work that will actcually help save lives. Lots of lives. And I for the life of me cannot actually think of any way in which the application can be used to create harm.&lt;/p&gt;&#xA;&lt;p&gt;At the same time, I&amp;rsquo;m tuning my tools, and this week, that means my shell.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve been working on switching my &lt;a href=&#34;https://github.com/savannidgerinel/nix-shell/&#34;&gt;shell environment&lt;/a&gt; away from being a nix-shell all the time and back to being something more like the &lt;code&gt;config.nix&lt;/code&gt; based environment that the Nix maintainers envisioned.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Typescript Setup</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/</link>
      <pubDate>Tue, 11 Jun 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/#base-setup&#34;&gt;Base Setup&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/#typescript&#34;&gt;Typescript&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/#jest-enzyme-and-fetch-mocks&#34;&gt;Jest, Enzmye, and Fetch Mocks&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/#compiling-in-html-and-css&#34;&gt;Compiling in HTML and CSS&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/#continuous-linting&#34;&gt;Continuous Linting&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/posts/2019-06-11-typescript-setup/#all-at-once&#34;&gt;All at once&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;I recently started a typescript project from scratch. With no pre-existing setup, and very little prior typescript experience, I had to set up the entire development environment to support it. In doing so, I found that there was really no coherent set of instructions for bootstrapping a Typescript project from base principles. Once I did all of the research, I decided it would be important for me to document not only my final environment, but how the various parts work together in a way that allows a bit of modular picking-and-choosing.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Winters End, 2019</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-03-24-winters-end/</link>
      <pubDate>Sun, 24 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-03-24-winters-end/</guid>
      <description>&lt;div class=&#34;gallery&#34;&gt;&#xA;&lt;div class=&#34;image&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/46545916045/in/datetaken-public/&#34; title=&#34;Snowy Bridge, 2019-02&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7844/46545916045_ed59cccc48_n.jpg&#34; width=&#34;320&#34; height=&#34;213&#34; alt=&#34;Snowy Bridge, 2019-02&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;image&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/46738035754/in/datetaken-public/&#34; title=&#34;Winter Wonderland, 2019-02&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7842/46738035754_bfc910a30b_n.jpg&#34; width=&#34;320&#34; height=&#34;209&#34; alt=&#34;Winter Wonderland, 2019-02&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;image&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/40495149163/in/datetaken-public/&#34; title=&#34;Snowy Wood Tunnel, 2019-02&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7875/40495149163_605f5f9d28_n.jpg&#34; width=&#34;320&#34; height=&#34;204&#34; alt=&#34;Snowy Wood Tunnel, 2019-02&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;div class=&#34;image&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/40495149373/in/datetaken-public/&#34; title=&#34;Worn Path, 2019-02&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7826/40495149373_7c5f8742f7_n.jpg&#34; width=&#34;320&#34; height=&#34;213&#34; alt=&#34;Worn Path, 2019-02&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;As the last festiges of winter come to an end, here is a batch of photos that I took a month ago. This was in Middlesex Fells in Boston, a short distance from where I live, right after a snowstorm that drop a foot or so of snow for seventeen hours.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sunset</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-01-10-sunset/</link>
      <pubDate>Thu, 10 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-01-10-sunset/</guid>
      <description>&lt;div style=&#34;text-align: center&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/46688491661/in/datetaken-public/&#34; title=&#34;Brilliant Sunset, 2019-01&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7832/46688491661_16e5311d96_z.jpg&#34; width=&#34;640&#34; height=&#34;414&#34; alt=&#34;Brilliant Sunset, 2019-01&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;We had a spectacular sunset in the Boston area last night.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dogwood Challenge, Week 1, Self-Portait</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-01-06-dogwood-week-1/</link>
      <pubDate>Sun, 06 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-01-06-dogwood-week-1/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Take a picture that tells us who you are, without actually showing your face.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;div style=&#34;text-align: center&#34;&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/45914892984/in/datetaken-public/&#34; title=&#34;_DSC2092.jpg&#34;&gt;&lt;img src=&#34;https://farm5.staticflickr.com/4851/45914892984_6b20744170_c.jpg&#34; width=&#34;640&#34; height=&#34;409&#34; alt=&#34;_DSC2092.jpg&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/div&gt;&#xA;&lt;p&gt;For my self-portrait, I could think of nothing more appropriate than my work desk. Not precisely as I have it day-to-day, but not greatly rearranged, either. The distinction between who I am and what I do is pretty minimal, for better or for worse.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;trans&lt;/li&gt;&#xA;&lt;li&gt;code on the screen&lt;/li&gt;&#xA;&lt;li&gt;wacom tablet nearby&lt;/li&gt;&#xA;&lt;li&gt;camera parts&lt;/li&gt;&#xA;&lt;li&gt;home-made crochet hand warmers in bi pride colors&lt;/li&gt;&#xA;&lt;li&gt;I Voted!&lt;/li&gt;&#xA;&lt;li&gt;mug of tea in the background&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>52-Week Photography Challenge</title>
      <link>https://savanni.luminescent-dreams.com/posts/2019-01-03-photography/</link>
      <pubDate>Thu, 03 Jan 2019 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2019-01-03-photography/</guid>
      <description>&lt;p&gt;Welcome to 2019!&lt;/p&gt;&#xA;&lt;p&gt;In this new year, there are several different things that I am trying to do. Not to worry, as I actually started on most of my resolutions on my birthday back in October.&lt;/p&gt;&#xA;&lt;p&gt;But here is a new one that I&amp;rsquo;ll be doing in public. The &lt;a href=&#34;https://dogwood.photography/52weekchallenge2019&#34;&gt;Dogwood 52-Week Photography Challenge&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;I will get my first photo published over the weekend, and keep an index of the photos here.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming a Neopixel Pride Flag</title>
      <link>https://savanni.luminescent-dreams.com/posts/2018-07-08-avr-programming/</link>
      <pubDate>Sun, 08 Jul 2018 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2018-07-08-avr-programming/</guid>
      <description>&lt;p&gt;Some weeks ago, I had an instance in which I was planning to do in person volunteer recruitment for &lt;a href=&#34;https://www.freedommassachusetts.org/&#34;&gt;Freedom for All Massachusetts&lt;/a&gt;. Now, this is very different from canvassing, as I found out about when I was at Pride. There is no &amp;ldquo;hide your politics for a bit because we need accurate information&amp;rdquo;, this is &amp;ldquo;assume everyone you talk to is on our side because we&amp;rsquo;re trying to recruit them to help us&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mental Health Care and Transgender Populations</title>
      <link>https://savanni.luminescent-dreams.com/posts/2018-05-21-trans-people-mental-health/</link>
      <pubDate>Mon, 21 May 2018 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2018-05-21-trans-people-mental-health/</guid>
      <description>&lt;div class=&#34;warning&#34; style=&#34;background-color: rgb(255, 255, 153); color: black&#34;&gt;&#xA;**Content Warning: open discussion of mental health care, suicide, and religion**&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;card&#34; style=&#34;width: 75%; border: 1px solid grey&#34;&gt;&#xA;&lt;div class=&#34;card-body&#34; style=&#34;padding: 1em&#34;&gt;&#xA;&lt;h2 class=&#34;card-title&#34;&gt;&lt;a href=&#34;https://thinkprogress.org/trans-people-suffer-from-higher-rates-of-suicide-why-are-hospitals-letting-them-down-26e2ea0cba61/&#34;&gt;Here’s why psychiatric hospitals are so bad at helping transgender patients&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;/div&gt;&#xA;&lt;img class=&#34;card-img-bottom&#34; src=&#34;https://i1.wp.com/thinkprogress.org/wp-content/uploads/2018/05/trans_psych_care_cover.jpg&#34; alt=&#34;Amelia Perry, Kwama Taylor, and Luna Inanis Umbra behind a transgender pride flag overlay&#34; style=&#34;padding: 1em; max-width: 100%&#34; /&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Amelia Perry was family to me. Four months later I get by only by forgetting that she&amp;rsquo;s gone.&lt;/p&gt;&#xA;&lt;p&gt;Every day, on social media, I see people telling me and others like me that being transgender is a mental illness or that we need to &amp;ldquo;get help&amp;rdquo;. Fascinatingly, many of us get a lot of help if we can afford it. Many more would get help if they had the money to afford it, but transgender people outside of tech tend to be close to destitute, so I have no idea where they are expected to &amp;ldquo;get help&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Family, Queerness, and Polyamory</title>
      <link>https://savanni.luminescent-dreams.com/posts/2018-02-14-on-family/</link>
      <pubDate>Wed, 14 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2018-02-14-on-family/</guid>
      <description>&lt;div style=&#34;float: left; margin-right: 1em&#34;&gt;&#xA;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/39545716574/in/dateposted-public/&#34; title=&#34;IMG_20170225_150825.jpg&#34;&gt;&lt;img src=&#34;https://farm5.staticflickr.com/4753/39545716574_646698fe8b_n.jpg&#34; width=&#34;320&#34; height=&#34;180&#34; alt=&#34;IMG_20170225_150825.jpg&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This day, the feast of St. Valentine (or whatever), is a day for lovers to get together for nice dinner, romantic dates, and possibly some great sex. I generally find it to be a rather gross mix of cisgender, heteronormative performance and unspoken expectation, in which mind reading is a required skill.&lt;/p&gt;&#xA;&lt;p&gt;So, what happens in queer communities in which most people involved have multiple partners and lovers?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Memoru Amelia</title>
      <link>https://savanni.luminescent-dreams.com/posts/2018-02-07-memoru-amelia/</link>
      <pubDate>Wed, 07 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2018-02-07-memoru-amelia/</guid>
      <description>&lt;p&gt;Memoru Amelia&lt;/p&gt;</description>
    </item>
    <item>
      <title>Remembering Amelia</title>
      <link>https://savanni.luminescent-dreams.com/posts/2018-02-07-remembering-amelia/</link>
      <pubDate>Wed, 07 Feb 2018 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2018-02-07-remembering-amelia/</guid>
      <description>&lt;div style=&#34;float: left; padding-right: 2em&#34;&gt;&#xA;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/47408552662/in/dateposted-public/&#34; title=&#34;IMG_1567.jpg&#34;&gt;&lt;img src=&#34;https://farm8.staticflickr.com/7846/47408552662_f9778b3a4b.jpg&#34; width=&#34;375&#34; height=&#34;500&#34; alt=&#34;IMG_1567.jpg&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Tonight, I want to tell you about a dear friend. Someone very important to myself and to my partner, Daria.&lt;/p&gt;&#xA;&lt;p&gt;Hir name was Amelia. Ze took hir own life late in the night last Tuesday. I found out as soon as I woke up Wednesday morning. A week ago today.&lt;/p&gt;&#xA;&lt;p&gt;Amelia was gorgeous. Ze was brilliant. Ze sparkled, flirted, brightened spaces, tied innuendo into unexpected sentences, and could talk about advanced mathematics that I cannot begin to understand.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Haskell Exceptions and Abstractions, or Part 2 of Abstracting the Monad Stack</title>
      <link>https://savanni.luminescent-dreams.com/posts/2017-11-11-haskell-exception-abstraction/</link>
      <pubDate>Sat, 11 Nov 2017 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2017-11-11-haskell-exception-abstraction/</guid>
      <description>&lt;p&gt;Error handling is a big deal for me. I have probably studied this more than anything else in Haskell because I find it so important to carefully handle unexpected errors. I have &lt;a href=&#34;haskell-error-handling&#34;&gt;presented on this before&lt;/a&gt;, but those older presentations lacked a nuance of understanding that I have developed in the last few years.&lt;/p&gt;&#xA;&lt;p&gt;This article carries on from my previous one, &lt;a href=&#34;https://savanni.luminescent-dreams.com/2017/09/21/haskell-type-constraints&#34;&gt;Abstracting the Monad Stack&lt;/a&gt;. In that article, I was unable to get all the way to exception abstraction. That this article took me so long to write demonstrates that I was correct in my assessment that this was too much for me to roll into my previous article.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Abstracting the Monad Stack, Part 1</title>
      <link>https://savanni.luminescent-dreams.com/posts/2017-09-21-haskell-type-constraints/</link>
      <pubDate>Thu, 21 Sep 2017 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2017-09-21-haskell-type-constraints/</guid>
      <description>&lt;p&gt;As a sidenote, my &lt;a href=&#34;https://savanni.luminescent-dreams.com/2017/06/26/haskell-configuration&#34;&gt;previous&lt;/a&gt; &lt;a href=&#34;https://savanni.luminescent-dreams.com/2017/07/14/haskell-app-monad&#34;&gt;articles&lt;/a&gt; were all in terms of a fictitious image processing program. I am actually very interested in image processing, but that is not the code I have on hand, so for my examples, I am switching over to a health-tracking application that I&amp;rsquo;ve been working on for a while. I&amp;rsquo;ll probably change the previous articles to reflect it. I am making this change, though, primarily because there are so many real examples for me to draw from.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Haskell Application Monad</title>
      <link>https://savanni.luminescent-dreams.com/posts/2017-07-14-haskell-app-monad/</link>
      <pubDate>Fri, 14 Jul 2017 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2017-07-14-haskell-app-monad/</guid>
      <description>&lt;p&gt;We want to get productive in Haskell very quickly. Most non-trivial applications will have configuration, connections to the outside world, can hit exceptional conditions, and benefit from having their operations logged. If your application has sensible logs at both high an low levels of detail, your devops team will thank you and your life of debugging a production application will be a happier one.&lt;/p&gt;&#xA;&lt;p&gt;I want to get all of these things at once, and so it would be nice to provide a nearly boilerplate application stack that provides them all. I define the &amp;ldquo;application stack&amp;rdquo; as a group of attributes that contain the context and all of the common behaviors for an application. In Haskell, you do that with a monad stack, though &lt;a href=&#34;http://okmij.org/ftp/Haskell/extensible/exteff.pdf&#34;&gt;work on extensible effects&lt;/a&gt; shows a great deal of promise and has been used to great effect in Purescript.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring your Haskell application</title>
      <link>https://savanni.luminescent-dreams.com/posts/2017-06-26-haskell-configuration/</link>
      <pubDate>Mon, 26 Jun 2017 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2017-06-26-haskell-configuration/</guid>
      <description>&lt;p&gt;One way or another, you are going to need to configure your Haskell application, and for that you have three major ways of doing it. I recommend choosing one and sticking to it. You can choose multiple ones, but it is important that you minimize one of them in order to keep yourself out of the mind-numbing tedium of consistently combining multiple input parameter sets and their overrides.&lt;/p&gt;&#xA;&lt;p&gt;Your options tend to be&amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Resistance</title>
      <link>https://savanni.luminescent-dreams.com/posts/2017-01-17-resistance/</link>
      <pubDate>Tue, 17 Jan 2017 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2017-01-17-resistance/</guid>
      <description>&lt;p&gt;For the next ten days, my resistance against fascism is to sit with an enby who has just undergone surgery. The kind of person and surgery that self-proclaimed &amp;ldquo;decent folk&amp;rdquo; believe is an abomination worthy of death.&lt;/p&gt;&#xA;&lt;p&gt;If you are one of them, fuck off.&lt;/p&gt;&#xA;&lt;h1 id=&#34;a-quiet-walk-interrupted&#34;&gt;A Quiet Walk, Interrupted&lt;/h1&gt;&#xA;&lt;p&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/32228622212/in/datetaken-public/&#34; title=&#34;Ice Flow, 2017-01.web&#34;&gt;&lt;img src=&#34;https://c1.staticflickr.com/1/670/32228622212_fe382c8767.jpg&#34; width=&#34;500&#34; height=&#34;334&#34; alt=&#34;Ice Flow, 2017-01.web&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;&#xA;&lt;p&gt;Yesterday, my friend and I were out walking along the Delaware Canal Towpath in Morissville, Pennsylvania, having a lovely day. Part of the canal is still frozen, and we made a hobby of seeing if we could break the ice using whatever rocks we had to hand. The sound of an ice sheet fracturing is really unique. Not precisely like glass shattering, because the fracture and stresses race down the ice sheet, even if the break only happens in a small area. I lost count of the number of significant rocks that I hurled into the ice that simply got embedded.&lt;/p&gt;</description>
    </item>
    <item>
      <title>16 Years</title>
      <link>https://savanni.luminescent-dreams.com/posts/2017-01-01-16-years/</link>
      <pubDate>Sun, 01 Jan 2017 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2017-01-01-16-years/</guid>
      <description>&lt;p&gt;Welcome to 2017!&lt;/p&gt;&#xA;&lt;p&gt;In a few days I move away from Austin, likely never to return. I grew up in Round Rock. I went away for a few years, and then I returned here to begin my career and my adult life right during the dot-com crash. I&amp;rsquo;m actually a lot older than I look. Many people upon meeting me seem to assume that I&amp;rsquo;m 27 or so, when in fact I turned 38 late this year. &amp;ldquo;Wait, how old &lt;em&gt;are&lt;/em&gt; you?&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Nix Development Environments</title>
      <link>https://savanni.luminescent-dreams.com/posts/2016-11-28-nix-developer-environments/</link>
      <pubDate>Mon, 28 Nov 2016 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2016-11-28-nix-developer-environments/</guid>
      <description>&lt;p&gt;&lt;code&gt;nix-shell&lt;/code&gt;, the command that creates a subshell after evaluating any nix expression, has a lot of uses. I found it very useful in my devops work when I had multiple environments to administer, but had to use different tools for each. The shell provides excellent help in isolating my required tools to the environments involved.&lt;/p&gt;&#xA;&lt;p&gt;A trick, though, lay in learning how to acquire those tools when the tools were not available in the nixos channel. I figured it out, and so here is the example for one of the environments I was administering. Note that I include both Linux and Darwin builds, because I wanted to offer the nix environment to my replacement at the company.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Androgyne with Surgery</title>
      <link>https://savanni.luminescent-dreams.com/posts/2016-11-02-androgyne-with-surgery/</link>
      <pubDate>Wed, 02 Nov 2016 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2016-11-02-androgyne-with-surgery/</guid>
      <description>&lt;p&gt;I did not sleep well the night before. Thoughts of missing my alarm plague me the night before an important but extremely early event. Most of the time I have to be moving for a flight, but this day I needed to be at the surgical center at 5am.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/30695826216/in/dateposted-public/&#34; title=&#34;_DSC2317.web&#34;&gt;&lt;img src=&#34;https://c1.staticflickr.com/6/5753/30695826216_67433546b2_n.jpg&#34; width=&#34;214&#34; height=&#34;320&#34; alt=&#34;_DSC2317.web&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;&#xA;&lt;p&gt;Daria had it under control. Zie woke me at 4. We were out the door at 4:30, and we arrived at the surgical center at 4:50. After that, I put my fate into everyone else&amp;rsquo;s hands as they guided me into the building and prepared my IV. Two different doctors, first my surgeon then the anesthesiologist. Strangely, the anesthesiologist did not know about spironolactone and left with the words &amp;ldquo;I have some research to do.&amp;rdquo; A few minutes later, the nurse took me to the operating room, helped me get positioned on the table, said she would go find another electric blanket for me, and then I woke up in my bed at home.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Computer Graphics in Haskell</title>
      <link>https://savanni.luminescent-dreams.com/posts/2016-10-24-haskell-graphics/</link>
      <pubDate>Mon, 24 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2016-10-24-haskell-graphics/</guid>
      <description>&lt;h1 id=&#34;welcome&#34;&gt;Welcome&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://savanni.luminescent-dreams.com/static/presentations/haskell-graphics.html&#34;&gt;http://savanni.luminescent-dreams.com/static/presentations/haskell-graphics.html&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Software Engineer at &lt;a href=&#34;http://www.energycurb.com/&#34;&gt;EnergyCurb&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Twitter: @savannidgerinel&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:savanni@luminescent-dreams.com&#34;&gt;savanni@luminescent-dreams.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Code witch, photographer, cyclist, agender, feminist, radical queer, general geek&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;functions&#34;&gt;Functions&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight haskell&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;circleArea :: Float -&amp;gt; Float&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;circleArea r = pi * r ^ 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rectangleArea :: Float -&amp;gt; Float -&amp;gt; Float&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rectangleArea l w = l * w&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;triangleArea :: Float -&amp;gt; Float -&amp;gt; Float&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;triangleArea h b = h * b / 2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;totalCirclesArea :: [Float] -&amp;gt; Float&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;totalCirclesArea rs = sum (map circleArea rs)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;function-structure&#34;&gt;Function Structure&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;functionName :: TypeParam1 -&amp;gt; TypeParam2 -&amp;gt; ... -&amp;gt; TypeResult&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;functionName param1 param2 ... =&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;functions-1&#34;&gt;Functions&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight haskell&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pi :: Float&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;functions-2&#34;&gt;Functions&lt;/h1&gt;&#xA;&lt;div class=&#34;highlight haskell&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;not :: Bool -&amp;gt; Bool&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;not&lt;/code&gt; is a function which takes a single parameter (a Boolean) and returns a result (another Boolean).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Washburn, November 2005 - September 30, 2016</title>
      <link>https://savanni.luminescent-dreams.com/posts/2016-10-01-washburn/</link>
      <pubDate>Sat, 01 Oct 2016 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2016-10-01-washburn/</guid>
      <description>&lt;p&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/33169572491/in/datetaken-public/&#34; title=&#34;_DSC7215.web&#34;&gt;&lt;img src=&#34;https://c1.staticflickr.com/3/2844/33169572491_dc90a646d3.jpg&#34; width=&#34;320&#34; height=&#34;240&#34; alt=&#34;_DSC7215.web&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/29939349192/in/dateposted-public/&#34; title=&#34;_MG_1313&#34;&gt;&lt;img src=&#34;https://c1.staticflickr.com/9/8094/29939349192_902fb97c4b_n.jpg&#34; width=&#34;320&#34; height=&#34;240&#34; alt=&#34;_MG_1313&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&lt;/p&gt;&#xA;&lt;p&gt;How does one speak of the departure of a cherished friend?&lt;/p&gt;&#xA;&lt;p&gt;My dear, loyal friend for almost eleven years passed beyond at 1:40 am on Friday, September 30th. He spent the last five hours of his life in a hospital. I had thought that I was taking him in for a dangerous but curable condition. Instead, I took him in to discover that he had a creeping condition, largely undectable, that was going to kill him.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Color Multipliers</title>
      <link>https://savanni.luminescent-dreams.com/posts/2014-09-29-color-multipliers/</link>
      <pubDate>Mon, 29 Sep 2014 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2014-09-29-color-multipliers/</guid>
      <description>&lt;p&gt;I hacked out a small GTK utility last night.  The problem, and this really only applies to Linux, is that the Sony NEX-series cameras don&amp;rsquo;t record the color temperature and green/magenta balance in the exif data.  They do, however, record an RGGB line like so:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;WB RGGB Levels                  : 2068 1024 1024 2160&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;ufraw on Linux doesn&amp;rsquo;t recognize this.  With a couple of experiments I figured out what these values mean and how to translate them into something useful for ufraw.  And then I reinvented it too many times and finally decided to encode it into an application.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GTK&#43; Programming in Haskell</title>
      <link>https://savanni.luminescent-dreams.com/posts/2014-09-26-gtk-haskell/</link>
      <pubDate>Fri, 26 Sep 2014 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2014-09-26-gtk-haskell/</guid>
      <description>&lt;p&gt;Earlier this evening I gave a presentation on doing GTK+ programming in Haskell.  Here is the presentation for all those who could not be there.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;gtk-programming&#34;&gt;HTML&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://savanni.luminescent-dreams.com/static/presentations/gtk-haskell.html&#34;&gt;Slides&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>From a Garden Party</title>
      <link>https://savanni.luminescent-dreams.com/posts/2014-08-20-garden-party/</link>
      <pubDate>Wed, 20 Aug 2014 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2014-08-20-garden-party/</guid>
      <description>&lt;table style=&#34;background: rgb(0, 0, 0)&#34;&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt; &lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/23762189063/in/datetaken-public/&#34; title=&#34;Glass Angel, 2012-04&#34;&gt;&lt;img src=&#34;https://c8.staticflickr.com/2/1688/23762189063_195ea4441e_n.jpg&#34; width=&#34;320&#34; height=&#34;225&#34; alt=&#34;Glass Angel, 2012-04&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt; &lt;/td&gt;&#xA;&lt;td&gt; &lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/24280762452/in/datetaken-public/&#34; title=&#34;Chandalier, 2012-04&#34;&gt;&lt;img src=&#34;https://c5.staticflickr.com/2/1553/24280762452_330f122e48_n.jpg&#34; width=&#34;320&#34; height=&#34;213&#34; alt=&#34;Chandalier, 2012-04&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt; &lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;tr&gt;&#xA;&lt;td&gt; &lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/24362767086/in/datetaken-public/&#34; title=&#34;Prism, 2012-04&#34;&gt;&lt;img src=&#34;https://c7.staticflickr.com/2/1682/24362767086_d6176ebcdd_n.jpg&#34; width=&#34;320&#34; height=&#34;219&#34; alt=&#34;Prism, 2012-04&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt; &lt;/td&gt;&#xA;&lt;td&gt; &lt;a data-flickr-embed=&#34;true&#34;  href=&#34;https://www.flickr.com/photos/32072463@N02/24280754842/in/datetaken-public/&#34; title=&#34;Red, Red Wine, 2012-04&#34;&gt;&lt;img src=&#34;https://c3.staticflickr.com/2/1584/24280754842_196a40ec1c_n.jpg&#34; width=&#34;320&#34; height=&#34;237&#34; alt=&#34;Red, Red Wine, 2012-04&#34;&gt;&lt;/a&gt;&lt;script async src=&#34;//embedr.flickr.com/assets/client-code.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt; &lt;/a&gt; &lt;/td&gt;&#xA;&lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;All four of these pictures are some old ones from my previous HDR work.  The only thing they have in common is that they are all from a party that I went to some years ago.  I wanted to get them back up, though, because I like all of them.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Handling Errors in Haskell</title>
      <link>https://savanni.luminescent-dreams.com/posts/2014-07-19-haskell-error-handling/</link>
      <pubDate>Sat, 19 Jul 2014 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2014-07-19-haskell-error-handling/</guid>
      <description>&lt;p&gt;Thursday night I gave a new presentation on handling errors in Haskell.  My understanding of this concept has evolved radically in the last two years, though it is still incomplete.&lt;/p&gt;&#xA;&lt;p&gt;While I have little additional commentary right now, my presentation will be evolving over time to include new information.  To this page, I will add a a full prose explanation for the information in the slides over the course of this next week.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Error Handling in Haskell</title>
      <link>https://savanni.luminescent-dreams.com/posts/2014-07-17-haskell-error-handling/</link>
      <pubDate>Thu, 17 Jul 2014 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2014-07-17-haskell-error-handling/</guid>
      <description>&lt;h1 id=&#34;the-kinds-of-error-reports&#34;&gt;The Kinds of Error Reports&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Exceptions&lt;/li&gt;&#xA;&lt;li&gt;Either&lt;/li&gt;&#xA;&lt;li&gt;ErrorT or EitherT&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;parsing-a-file&#34;&gt;Parsing a File&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;parseImage :: ByteString -&amp;gt; Either ParseError (Image PixelRGB8)&lt;/li&gt;&#xA;&lt;li&gt;readFile :: FilePath -&amp;gt; IO ByteString&lt;/li&gt;&#xA;&lt;li&gt;readImageFile fname = readFile fname &amp;raquo;= return . parseImage :: FilePath -&amp;gt; IO (Either ParseError (Image PixelRGB8))&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;exceptions&#34;&gt;Exceptions&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;throw :: Exception e =&amp;gt; e -&amp;gt; a&lt;/li&gt;&#xA;&lt;li&gt;throwIO :: Exception e =&amp;gt; e -&amp;gt; IO a&lt;/li&gt;&#xA;&lt;li&gt;catch :: Exception e =&amp;gt; IO a -&amp;gt; (e -&amp;gt; IO a) -&amp;gt; IO a&lt;/li&gt;&#xA;&lt;li&gt;handle :: Exception e =&amp;gt; (e -&amp;gt; IO a) -&amp;gt; IO a -&amp;gt; IO a&lt;/li&gt;&#xA;&lt;li&gt;try :: Exception e =&amp;gt; IO a -&amp;gt; IO (Either e a)&lt;/li&gt;&#xA;&lt;li&gt;throwTo :: Exception e =&amp;gt; ThreadId -&amp;gt; e -&amp;gt; IO ()&lt;/li&gt;&#xA;&lt;li&gt;error :: String -&amp;gt; a&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h1 id=&#34;exceptions-1&#34;&gt;Exceptions&lt;/h1&gt;&#xA;&lt;p&gt;\footnotesize&lt;/p&gt;</description>
    </item>
    <item>
      <title>Progress on Illuminance</title>
      <link>https://savanni.luminescent-dreams.com/posts/2014-05-16-illuminance/</link>
      <pubDate>Fri, 16 May 2014 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2014-05-16-illuminance/</guid>
      <description>&lt;p&gt;I started the &lt;a href=&#34;Illuminance&#34;&gt;Illuminance&lt;/a&gt; project back in February of this year.  Immediately after my last contract ended, I started working on the code in order to make this application real.&lt;/p&gt;&#xA;&lt;p&gt;Three months in, I both exault in everything I have learned, and despair at how much remains to be done.  This looked like such a simple problem, yet in its solution I have pursued so much new information that I constantly swim underneath a bare understanding of all that I have learned.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python Type Annotations</title>
      <link>https://savanni.luminescent-dreams.com/posts/2013-06-03-python-type-annotations/</link>
      <pubDate>Mon, 03 Jun 2013 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2013-06-03-python-type-annotations/</guid>
      <description>&lt;p&gt;I have to admit, 40% of the reason I use Haskell lies in static type checking.  Another 40% lies in strong, ironclad immutability.  Only about 20% of my love of Haskell has anything to do with language expressiveness.  Make no mistake, the language has expressiveness out the wazoo, but I truly love static typing and immutability.&lt;/p&gt;&#xA;&lt;p&gt;One day recently turned into a disaster.  One problem lead to another in a task that should have been trivial and instead involved four hours of beating my head against the desk.  Part of the problem was that my system under test had only acceptance tests, executed only with all of standard out and standard error shunted away to /dev/null.  Either way, after I got my changes made, I decided to step out of the office to think.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Haskell&#39;s Foreign Function Interface</title>
      <link>https://savanni.luminescent-dreams.com/posts/2013-03-05-haskell-ffi/</link>
      <pubDate>Tue, 05 Mar 2013 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2013-03-05-haskell-ffi/</guid>
      <description>&lt;p&gt;As part of a research project, I did a tiny bit of work to figure out the tiniest part of Haskell&amp;rsquo;s Foreign Function Interface today.  This is just the tip of the iceburg, but I thought I would show off the extremely simple demo that I worked out.  I present both the C and Haskell versions of a program that feeds &amp;ldquo;abc&amp;rdquo; and &amp;ldquo;def&amp;rdquo; into the standard Unix &lt;code&gt;crypt()&lt;/code&gt; function.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Processing SqlValues in Haskell</title>
      <link>https://savanni.luminescent-dreams.com/posts/2012-06-01-haskell-processing-sqlvalues/</link>
      <pubDate>Fri, 01 Jun 2012 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2012-06-01-haskell-processing-sqlvalues/</guid>
      <description>&lt;p&gt;Let us assume that, whether you are just learning Haskell for the first time or have long since mastered Haskell the language, you suddenly need to hook up to a database for the first time.&lt;/p&gt;&#xA;&lt;p&gt;Don&amp;rsquo;t laugh.  Many applications work extremely well without a database.&lt;/p&gt;&#xA;&lt;p&gt;My applications, however, almost always have a relational database somewhere in their guts.  I work with a lot of relational data.  I have to learn &lt;code&gt;Database.HDBC&lt;/code&gt; early, and many of you will, too.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Immutable Lists and Function Pointers in C</title>
      <link>https://savanni.luminescent-dreams.com/posts/2011-04-30-immutable-lists-c/</link>
      <pubDate>Sat, 30 Apr 2011 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/posts/2011-04-30-immutable-lists-c/</guid>
      <description>&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://markus.alyra.org/src/c/&#34;&gt;Immutable Lists API&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Lists, lists, lists&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;I have written a lot of &lt;a href=&#34;http://www.clojure.org/&#34;&gt;Clojure&lt;/a&gt; code recently.  With Clojure inheriting from Lisp, and List standing for List Processor, I have thought quite a lot about lists recently.&lt;/p&gt;&#xA;&lt;p&gt;I have also written a huge amount of C code recently.  I took a piece of code that I wrote five years ago, noted that I would need to do a lot of work to add the new feature, so I decided to overhaul it and rewrite it The Correct Way.  In this case, that means using &lt;a href=&#34;http://dev.mysql.com/doc/refman/5.1/en/c-api-prepared-statements.html&#34;&gt;MySQL&amp;rsquo;s prepared statement API&lt;/a&gt; instead of string hackery.  Trust me when I say that string hackery sucks, especially since I know about SQL injection and had to protect against that, too.&lt;/p&gt;</description>
    </item>
    <item>
      <title></title>
      <link>https://savanni.luminescent-dreams.com/wildsea/skills/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/wildsea/skills/</guid>
      <description>&lt;!DOCTYPE html&gt;&#xA;&lt;html lang=&#34;en&#34;&gt;&#xA;&lt;head&gt;&#xA;&lt;meta charset=&#34;UTF-8&#34;&gt;&#xA;&lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;&#xA;&lt;title&gt;The Wildsea - Edges, Skills &amp; Languages Reference&lt;/title&gt;&#xA;&#xA;&lt;style&gt;&#xA;:root {&#xA;    --bg: #f5f4ef;&#xA;    --panel: #ffffff;&#xA;    --accent: #2f6b53;&#xA;    --border: #d5d2c8;&#xA;    --heading: #264032;&#xA;    --text: #2c2c2c;&#xA;}&#xA;&#xA;* {&#xA;    box-sizing: border-box;&#xA;}&#xA;&#xA;body {&#xA;    margin: 0;&#xA;    /* padding: 2rem; */&#xA;    font-family: Helvetica, sans-serif;&#xA;    background: var(--bg);&#xA;    color: var(--text);&#xA;    /* line-height: 1.45; */&#xA;    width: 100%;&#xA;}&#xA;&#xA;h1 {&#xA;    text-align: center;&#xA;    color: var(--heading);&#xA;    margin-bottom: .25rem;&#xA;}&#xA;&#xA;.subtitle {&#xA;    text-align: center;&#xA;    color: #666;&#xA;    margin-bottom: 2rem;&#xA;}&#xA;&#xA;.container {&#xA;    display: grid;&#xA;    grid-template-columns: auto auto;&#xA;    gap: 1.5rem;&#xA;}&#xA;&#xA;.panel {&#xA;    background: var(--panel);&#xA;    border: 1px solid var(--border);&#xA;    border-radius: 10px;&#xA;    padding: 1.5rem;&#xA;}&#xA;&#xA;h2 {&#xA;    margin-top: 0;&#xA;    color: var(--accent);&#xA;    border-bottom: 2px solid var(--accent);&#xA;    padding-bottom: .35rem;&#xA;}&#xA;&#xA;dl {&#xA;    margin: 0;&#xA;}&#xA;&#xA;dt {&#xA;    margin-top: 1rem;&#xA;    font-weight: bold;&#xA;    color: var(--heading);&#xA;}&#xA;&#xA;dd {&#xA;    margin-left: 0;&#xA;    margin-top: .2rem;&#xA;    color: #444;&#xA;}&#xA;&#xA;.section {&#xA;    margin-bottom: 2rem;&#xA;}&#xA;&#xA;@media (max-width: 900px) {&#xA;    .container {&#xA;        grid-template-columns: 1fr;&#xA;    }&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;/head&gt;&#xA;&lt;body&gt;&#xA;&#xA;&lt;h1&gt;The Wildsea Reference&lt;/h1&gt;&#xA;&lt;p class=&#34;subtitle&#34;&gt;Edges, Skills, and Languages&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>https://savanni.luminescent-dreams.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/about/</guid>
      <description>&lt;div class=&#34;col-lg-6&#34;&gt;&#xA;&lt;img src=&#34;https://savanni.luminescent-dreams.com/selfie.jpg&#34; width=&#34;300px&#34; style=&#34;float: left; margin-right: 3em&#34; /&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;col-sm-6&#34;&gt;&#xA;Dreamer, Shaper, Seeker, Maker, Cyberpunk, Betrayal-Driven Developer, Cyclist, Photographer, Alchemist, queer as in fuck you. I live in Providence, Rhode Island, with my partner and three glorious felines, hanging out with queers, and trying to be a helpful, productive human being.&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt; Pronouns: &lt;a href=&#34;http://pronoun.is/ey&#34;&gt;ey/em&lt;/a&gt;, she/her &lt;/li&gt;&#xA;&lt;li&gt; Honorifics: Mx, Mir, Miss, Ma&#39;am &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2&gt; Contact &lt;/h2&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt; &lt;a href=&#34;mailto:savanni@luminescent-dreams.com&#34;&gt;savanni@luminescent-dreams.com&lt;/a&gt; &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2&gt; Interests &lt;/h2&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt; Functional Programming: Rust, Haskell, Purescript, Ocaml, Elm, Clojure &lt;/li&gt;&#xA;&lt;li&gt; Photography &lt;/li&gt;&#xA;&lt;li&gt; Cycling &lt;/li&gt;&#xA;&lt;li&gt; Fitness &lt;/li&gt;&#xA;&lt;li&gt; Linux &lt;/li&gt;&#xA;&lt;li&gt; Space-age user interfaces &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2&gt; My Favorite Books and Short Stories &lt;/h2&gt;&#xA;&#xA;&lt;ul&gt;&#xA;&lt;li&gt; *Anathem*, Neil Stephenson &lt;/li&gt;&#xA;&lt;li&gt; *Metatropolis*, John Scalzi et. al. &lt;/li&gt;&#xA;&lt;li&gt; *Solitude*, Ursula Le Guin &lt;/li&gt;&#xA;&lt;li&gt; *Coming of Age in Karhide*, Ursula Le Guin &lt;/li&gt;&#xA;&lt;li&gt; *Angel Tech*, Antero Ali &lt;/li&gt;&#xA;&lt;li&gt; *On Becoming an Alchemist*, Katherine MacCoun &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Beehive Minecraft Server</title>
      <link>https://savanni.luminescent-dreams.com/beehive/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/beehive/</guid>
      <description>&lt;h1 id=&#34;beehive-minecraft-server&#34;&gt;Beehive Minecraft Server&lt;/h1&gt;&#xA;&lt;p&gt;Minecraft 1.20.1&lt;/p&gt;&#xA;&lt;h2 id=&#34;mods&#34;&gt;Mods&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Server Mods:&lt;/th&gt;&#xA;          &lt;th&gt;Client Mods&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;audioplayer&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;create&lt;/td&gt;&#xA;          &lt;td&gt;create&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;fabric&lt;/td&gt;&#xA;          &lt;td&gt;fabric&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;lithium&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;simple voice chat&lt;/td&gt;&#xA;          &lt;td&gt;simple voice chat&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;towns and towers&lt;/td&gt;&#xA;          &lt;td&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Optional, but cool, client mods:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;optimizations:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;sodium&lt;/li&gt;&#xA;&lt;li&gt;indium&lt;/li&gt;&#xA;&lt;li&gt;lithium&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;ambiance:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;ambient sounds&lt;/li&gt;&#xA;&lt;li&gt;areas&lt;/li&gt;&#xA;&lt;li&gt;better animations&lt;/li&gt;&#xA;&lt;li&gt;bobby&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;tech utilities:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;litematica&lt;/li&gt;&#xA;&lt;li&gt;tweakeroo&lt;/li&gt;&#xA;&lt;li&gt;minihud&lt;/li&gt;&#xA;&lt;li&gt;replaymod&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;datapacks&#34;&gt;Datapacks&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;anti-enderman grief&lt;/li&gt;&#xA;&lt;li&gt;double shulker shells&lt;/li&gt;&#xA;&lt;li&gt;silence mobs&lt;/li&gt;&#xA;&lt;li&gt;multiplayer sleep&lt;/li&gt;&#xA;&lt;li&gt;armor statues&lt;/li&gt;&#xA;&lt;li&gt;redstone rotation wrench&lt;/li&gt;&#xA;&lt;li&gt;terracotta rotation wrench&lt;/li&gt;&#xA;&lt;li&gt;player head drops&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>CV</title>
      <link>https://savanni.luminescent-dreams.com/cv/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/cv/</guid>
      <description>&lt;div style=&#34;text-align: center&#34;&gt;&#xA;&lt;h1&gt; Savanni D&#39;Gerinel &lt;/h1&gt;&#xA;512-947-0226&lt;br /&gt;&#xA;savanni@luminescent-dreams.com&lt;br /&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;&#xA;&lt;p&gt;I am passionate about bringing useful user-facing applications to the Linux desktop.&lt;/p&gt;&#xA;&lt;p&gt;I seek out engineering leadership positions that involve developing sustainable processes, mentoring junior engineers, fostering collaboration between team members, and building a close relationship with both designers and users. My ideal position allows me to spend at least 30% of my time doing software development.&lt;/p&gt;&#xA;&lt;h2 id=&#34;further-relevant-experience&#34;&gt;Further Relevant Experience&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=8tiyW8wVNWw&#34;&gt;Implementing Drag and Drop as components for Yew&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wiki</title>
      <link>https://savanni.luminescent-dreams.com/wiki/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://savanni.luminescent-dreams.com/wiki/</guid>
      <description>&lt;h1&gt; Wiki &lt;/h1&gt;&#xA;&#xA;&lt;div class=&#34;row&#34;&gt;&#xA;&lt;div class=&#34;col-sm-8&#34;&gt;&#xA;&#xA;&lt;h2&gt; Projects &lt;/h2&gt;&#xA;&#xA;&lt;h3&gt; &lt;a href=&#34;https://github.com/luminescent-dreams/palimpsest&#34;&gt;Palimpsest&lt;/a&gt; &lt;/h3&gt;&#xA;&#xA;&lt;h3&gt; &lt;a href=&#34;https://github.com/luminescent-dreams/cloister&#34;&gt;Cloister&lt;/a&gt; &lt;/h3&gt;&#xA;&#xA;&lt;h3&gt; &lt;a href=&#34;https://github.com/luminescent-dreams/fitnesstrax&#34;&gt;Fitnesstrax&lt;/a&gt; &lt;/h3&gt;&#xA;&#xA;This is a workout and fitness tracking application written in Haskell with a GTK user interface.  This project has served as a playground for trying out ideas.&#xA;&#xA;&lt;ul&gt;&#xA;  &lt;li&gt; Data persistence using an event log instead of a traditional database &lt;/li&gt;&#xA;  &lt;li&gt; Handling GTK widgets &lt;/li&gt;&#xA;  &lt;li&gt; Clean separation of the application GUI from the widgets &lt;/li&gt;&#xA;  &lt;li&gt; User experience concerns &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2&gt; Articles &lt;/h2&gt;&#xA;&#xA;&lt;ul&gt;&#xA;  &lt;li&gt; &lt;a href=&#34;https://savanni.luminescent-dreams.com/production-haskell/&#34;&gt;Haskell in Production&lt;/a&gt; &lt;/li&gt;&#xA;  &lt;li&gt; &lt;a href=&#34;https://savanni.luminescent-dreams.com/2011/04/30/immutable-lists-c&#34;&gt;Immutable Lists and Function Parameters in C&lt;/a&gt; &lt;/li&gt;&#xA;  &lt;li&gt; Articles offline due to an incomplete weblog migration:&#xA;      &lt;ul&gt;&#xA;          &lt;li&gt; &lt;a href=&#34;monadic-configuration&#34;&gt;Monadic Configuration&lt;/a&gt; &lt;/li&gt;&#xA;          &lt;li&gt; &lt;a href=&#34;haskell-ffi&#34;&gt;Haskell&#39;s FFI&lt;/a&gt; &lt;/li&gt;&#xA;          &lt;li&gt; &lt;a href=&#34;private-repository&#34;&gt;Private Cabal Repository&lt;/a&gt; &lt;/li&gt;&#xA;      &lt;/ul&gt;&#xA;  &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2&gt; Interesting Technologies &lt;/h2&gt;&#xA;&#xA;&lt;ul&gt;&#xA;  &lt;li&gt; &lt;a href=&#34;http://www.gtk.org/&#34;&gt;GTK&lt;/a&gt; &lt;/li&gt;&#xA;  &lt;li&gt; &lt;a href=&#34;http://www.rust-lang.org/&#34;&gt;Rust&lt;/a&gt; &lt;/li&gt;&#xA;  &lt;li&gt; &lt;a href=&#34;http://www.haskell.org/&#34;&gt;Haskell&lt;/a&gt; &lt;/li&gt;&#xA;  &lt;li&gt; &lt;a href=&#34;https://github.com/haskell-servant&#34;&gt;Servant&lt;/a&gt; &lt;/li&gt;&#xA;  &lt;li&gt; &lt;a href=&#34;http://www.clojure.org/&#34;&gt;Clojure&lt;/a&gt; &lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;div class=&#34;col-sm-4&#34;&gt;&#xA;&lt;table&gt;&#xA;&lt;tr&gt; &lt;td&gt; Solar X-Rays: &lt;/td&gt; &lt;td&gt; &lt;img width=121 height=21 border=0 alt=&#34;x-ray status&#34; src=&#34;http://www.n3kl.org/sun/images/status.gif&#34;/&gt; &lt;/td&gt; &lt;/tr&gt;&#xA;&lt;tr&gt; &lt;td&gt; Geomagnetic Field: &lt;/td&gt; &lt;td&gt; &lt;img width=121 height=21 border=0 alt=&#34;x-ray status&#34; src=&#34;http://www.n3kl.org/sun/images/kpstatus.gif&#34;/&gt; &lt;/td&gt; &lt;/tr&gt;&#xA;&lt;/table&gt;&#xA;From &lt;A HREF=&#34;http://www.n3kl.org/sun/noaa.html&#34;&gt;n3kl.org&lt;/A&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
    </item>
  </channel>
</rss>
