<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on maladroit.dev</title><link>https://maladroit-dev-398201.gitlab.io/posts/</link><description>Recent content in Posts on maladroit.dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 14 Oct 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://maladroit-dev-398201.gitlab.io/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Before I Forget</title><link>https://maladroit-dev-398201.gitlab.io/posts/before-i-forget/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/before-i-forget/</guid><description>&lt;p&gt;It&amp;rsquo;s been a minute since i have made one of these and honestly it&amp;rsquo;s been due to
the inconvenience. I am still working on ways to make blogging frictionless, but
that has been proving challenging. Especially considering I am still trying to
leverage Github pages as a static site. With that all said, it&amp;rsquo;s time to shake
things up a bit. One of the hardest parts about blogging is working with a blank
page. The possibilities are endless and overwhelming. To counter that, I&amp;rsquo;m going
to try playing around with a gimmick that will hopefully get some of the
creative juices flowing. This is a little derivative of Thorsten Ball&amp;rsquo;s Register
Spill format so forgive me Thorsten. Anyways, before I forget:&lt;/p&gt;</description></item><item><title>Initial Thoughts on JJ</title><link>https://maladroit-dev-398201.gitlab.io/posts/initial-thoughts-on-jj/</link><pubDate>Mon, 18 Aug 2025 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/initial-thoughts-on-jj/</guid><description>&lt;p&gt;I&amp;rsquo;ve been working with JJ daily for about two months now and I have some initial
thoughts about it. After working with Git for over a decade, JJ was really easy
to pick up.&lt;/p&gt;
&lt;p&gt;The first thing I noticed right away was a lot of my workflow and a lot of the
neovim ecosystem is very git focused. If I was going to make this work, I needed
to find a suitable replacement for visual line diffs as well as a picker/finder
that would let me see files that have been modified by the current revision. I
wasn&amp;rsquo;t able to find existing plugins that satisfied those needs, so I wrote some
minor extensions to plugins I already used. Mini.diff ware already designed with
the intention to be extended to other VCS tools, so that covered diff lines. As
for the picker, I took the existing git_status picker from Folke&amp;rsquo;s snacks plugin
and translated it to JJ commands. It&amp;rsquo;s not perfect but it gets the job done and
allows me to quickly navigate through my changes.&lt;/p&gt;</description></item><item><title>Bastionland</title><link>https://maladroit-dev-398201.gitlab.io/posts/bastionland/</link><pubDate>Fri, 18 Jul 2025 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/bastionland/</guid><description>&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;I finally got my physical copy of Mythic Bastionland in that mail and it&amp;rsquo;s
fantastic. This book has been on my mind since September of last year when a
friend showed it to me for the first time. I was originally pretty skeptical
because I had never played an OSR game before and my only experience was with
games like 5e, Blades in the Dark, and other more modern games. My biggest
hang up was character progression. It felt like it must get boring after a few
sessions when you don&amp;rsquo;t get cool new spells or feats that you can use in
combat. I was very wrong.&lt;/p&gt;</description></item><item><title>Emily</title><link>https://maladroit-dev-398201.gitlab.io/posts/emily/</link><pubDate>Thu, 24 Apr 2025 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/emily/</guid><description>&lt;p&gt;A lot has changed in the last few months. My daughter Emily was born on March 22
and she&amp;rsquo;s pretty great. Paternity leave came and went in what felt like no time
at all. Now I am back on the grind and trying to cut back on my phone usage
entirely. While in the hospital, I watch Ludwig and Michael Reeves attempt to
cross Japan with no map or smart phone in 14 days on YouTube. It left such
a powerful impact on me that I have been working on trying to forgo using my
phone entirely. I still use it for music and texting, but I am leaving it at the
house more and more when I go out and favoring my pocket notebook instead.&lt;/p&gt;</description></item><item><title>Solo RPG</title><link>https://maladroit-dev-398201.gitlab.io/posts/solo-rpg/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/solo-rpg/</guid><description>&lt;p&gt;The first few months of 2025 have been pretty solid. I managed to learn how to
play Brianstorm (kinda), I read through 100 Go Mistakes and continue to study
data oriented design, and I started programming in Jai after getting access to
the private beta. Sure things are a little scary with my wife having a federal
position and the current administration is making her life very chaotic, but she
goes on maternity leave this month and gets a well deserved break from all the
churn. Not to mention we are having another kid this month which is it&amp;rsquo;s own
version of scary, but I am sure we will adapt to whatever challenges are thrown
our way. The year of focus is off to a ripping start with some occasional
setbacks to my old ways, but I&amp;rsquo;m proud of what has been accomplished thus far.&lt;/p&gt;</description></item><item><title>End of 2024</title><link>https://maladroit-dev-398201.gitlab.io/posts/new-year/</link><pubDate>Tue, 31 Dec 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/new-year/</guid><description>&lt;p&gt;The year is nearly over and that means it&amp;rsquo;s time for a new word. I can&amp;rsquo;t
remember where I stole this tradition from, probably some YouTube channel or
podcast I used to listen to, but each year I like to pick just one word to
define the upcoming new year. I like this approach a lot more than having
a resolution because it can become more fluid and change as the year goes on.&lt;/p&gt;</description></item><item><title>The New Sound</title><link>https://maladroit-dev-398201.gitlab.io/posts/the-new-sound/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/the-new-sound/</guid><description>&lt;p&gt;The last year was a pretty great year for music. From familiar favorites like
King Gizzard, IDLES, and Jack White to artists brand new to me like Baker Boy,
The Lemon Twigs, and Magdalena Bay. It was just a phenomenal year for albums and
it was really difficult picking just one for my album of the year. I was stuck
for the longest time on King Gizzard and the Lizard Wizard&amp;rsquo;s &amp;ldquo;b741&amp;rdquo; and Bring Me
The Horizon&amp;rsquo;s &amp;ldquo;POST HUMAN: NeX GEn&amp;rdquo; and kept flip flopping between which I liked
more. Thankfully, the burden of choosing was removed when another album came out
that was so remarkable it made the decision effortless.&lt;/p&gt;</description></item><item><title>Focus</title><link>https://maladroit-dev-398201.gitlab.io/posts/focus/</link><pubDate>Sun, 08 Dec 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/focus/</guid><description>&lt;p&gt;I saw a YouTube video earlier this week that made the claim that people today
have lost the ability to focus for extended periods of time compared to people
from a hundred or so years ago. I have no idea if any of that is true, but I can
say from my own perspective that I have been struggling lately with staying with
habits and hobbies. From weight loss to fitness to reading, it&amp;rsquo;s just been very
difficult dialing in and keeping the rhythm and momentum going. I am hoping that
long form journaling can at least help with this problem, that is if I can keep
that habit too.&lt;/p&gt;</description></item><item><title>Moderation</title><link>https://maladroit-dev-398201.gitlab.io/posts/moderation/</link><pubDate>Sun, 17 Nov 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/moderation/</guid><description>&lt;p&gt;I have been trying to be more disciplined about different aspects of my life
recently. I have started intermittent fasting again to try and fit into my nicer
dress clothes that I haven&amp;rsquo;t worn in years. I have also setup the app ScreenZen
to moderate my YouTube usage on my phone. I used to average between 4-5 hours a
day which has now been cut down to just about an hour. Not too shabby.&lt;/p&gt;</description></item><item><title>Study habits</title><link>https://maladroit-dev-398201.gitlab.io/posts/study-habits/</link><pubDate>Mon, 11 Nov 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/study-habits/</guid><description>&lt;p&gt;I have been trying to figure out new ways to encourage studying. I have been
finding it exceptionally difficult recently to read/study because life has been
chaotic. The dog needs played with, Dean wants to play outside, and honestly
some days I am just not motivated enough to read about some new software design
technique. My latest attempt at removing friction to study is annotating PDFs in
GoodNotes with the intent to refine those notes into the KB. Time will tell if
that actually works or if it&amp;rsquo;s another strategy that just doesn&amp;rsquo;t stick.&lt;/p&gt;</description></item><item><title>New job</title><link>https://maladroit-dev-398201.gitlab.io/posts/new-job/</link><pubDate>Sat, 02 Nov 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/new-job/</guid><description>&lt;p&gt;First week at the new job has been incredibly refreshing. Everyone is so nice
and I really love the mission statement of Bloomfield Robotics. Even if it is
still the honeymoon phase, it&amp;rsquo;s good to change things up and move towards
discomfort rather than staying with something you know.&lt;/p&gt;
&lt;p&gt;Despite doing a bunch of on-boarding and being mentally drained at the end of
the day, I still managed to keep up the pace with Orvash. I finally fixed the
sine wave bug that was plaguing me for a few weeks. The platform layer is
functional to the point where the game code can begin. I&amp;rsquo;m still work-shopping
some ideas on what I want Orvash to look like, and deciding what things I am
going to keep from Entree.&lt;/p&gt;</description></item><item><title>KB</title><link>https://maladroit-dev-398201.gitlab.io/posts/kb/</link><pubDate>Fri, 25 Oct 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/kb/</guid><description>&lt;p&gt;Not much gamedev progress in the last week, it&amp;rsquo;s been a bit hectic since I&amp;rsquo;m
starting a new job. I have spent some time updating my knowledge-base though and
thought it would be interesting to write about.&lt;/p&gt;
&lt;p&gt;I have a notes site at &lt;a href="https://kb.maladroit.dev"&gt;kb.maladroit.dev&lt;/a&gt; that is
GitHub pages site consisting of all my notes I have taken in the last few years.
This repository was originally created for keeping my notes in Obsidian, but
after a few months of that I realized I just preferred markdown instead. Some
annoying hurdles to deal with were Jekyll not supporting mermaid tables, how to
manage subdomains with Github, reorganizing all my notes to play nicer with
jekyll, and getting a search bar working. All of which were easily fixed with a
mixture of coffee, stack overflow, and swearing.&lt;/p&gt;</description></item><item><title>Square wave to the dome</title><link>https://maladroit-dev-398201.gitlab.io/posts/sound/</link><pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate><guid>https://maladroit-dev-398201.gitlab.io/posts/sound/</guid><description>&lt;p&gt;Nothing quite as sobering as taking a 440 hz square wave right to the dome.
After fiddling for just over an hour by adjusting the volume, frequency, period,
and reading the new SDL3 documentation, I realized that I didn&amp;rsquo;t have my
AudioStream bound to any AudioDevice.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"&gt;&lt;code class="language-zig" data-lang="zig"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;fn&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;SDLInitAudio&lt;/span&gt;() &lt;span style="color:#f92672"&gt;!&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;void&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; srcSpec &lt;span style="color:#f92672"&gt;=&lt;/span&gt; c.SDL_AudioSpec{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .format &lt;span style="color:#f92672"&gt;=&lt;/span&gt; c.SDL_AUDIO_S16,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .channels &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .freq &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;48000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; dstSpec &lt;span style="color:#f92672"&gt;=&lt;/span&gt; c.SDL_AudioSpec{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .format &lt;span style="color:#f92672"&gt;=&lt;/span&gt; c.SDL_AUDIO_F32,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .channels &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; .freq &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;48000&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; audioDeviceId &lt;span style="color:#f92672"&gt;=&lt;/span&gt; c.&lt;span style="color:#a6e22e"&gt;SDL_OpenAudioDevice&lt;/span&gt;(c.SDL_AUDIO_DEVICE_DEFAULT_PLAYBACK, &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;dstSpec);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (audioDeviceId &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; c.&lt;span style="color:#a6e22e"&gt;SDL_LogError&lt;/span&gt;(c.SDL_LOG_CATEGORY_APPLICATION, &lt;span style="color:#e6db74"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;, c.&lt;span style="color:#a6e22e"&gt;SDL_GetError&lt;/span&gt;());
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;error&lt;/span&gt;.SDLOpenAudioDevice;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; audioStream &lt;span style="color:#f92672"&gt;=&lt;/span&gt; c.&lt;span style="color:#a6e22e"&gt;SDL_CreateAudioStream&lt;/span&gt;(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;srcSpec, &lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;dstSpec);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (audioStream &lt;span style="color:#f92672"&gt;==&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;null&lt;/span&gt;) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; c.&lt;span style="color:#a6e22e"&gt;SDL_LogError&lt;/span&gt;(c.SDL_LOG_CATEGORY_APPLICATION, &lt;span style="color:#e6db74"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;, c.&lt;span style="color:#a6e22e"&gt;SDL_GetError&lt;/span&gt;());
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;error&lt;/span&gt;.SDLCreateAudioStream;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;const&lt;/span&gt; success &lt;span style="color:#f92672"&gt;=&lt;/span&gt; c.&lt;span style="color:#a6e22e"&gt;SDL_BindAudioStream&lt;/span&gt;(audioDeviceId, audioStream);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;success) {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; c.&lt;span style="color:#a6e22e"&gt;SDL_LogError&lt;/span&gt;(c.SDL_LOG_CATEGORY_APPLICATION, &lt;span style="color:#e6db74"&gt;&amp;#34;%s&amp;#34;&lt;/span&gt;, c.&lt;span style="color:#a6e22e"&gt;SDL_GetError&lt;/span&gt;());
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;return&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;error&lt;/span&gt;.SDLBindAudioStream;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Now that I have the volume lowered from 30k to 2k, I now have keyboard, gamepad,
video, and sound all working for SDL3 using Zig by following alongside Casey
Muratori&amp;rsquo;s Handmade Hero series.&lt;/p&gt;</description></item></channel></rss>