<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Programming on fournm</title>
    <link>https://4nm.us/tags/programming/</link>
    <description>Recent posts in Programming from fournm</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 24 Jan 2026 15:15:00 +0000</lastBuildDate>
    <atom:link href="https://4nm.us/tags/programming/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Things I Wish I Had</title>
      <link>https://4nm.us/posts/2026-01-24-things-i-wish-i-had/</link>
      <pubDate>Sat, 24 Jan 2026 15:15:00 +0000</pubDate>
      <guid>https://4nm.us/posts/2026-01-24-things-i-wish-i-had/</guid>
      
          
              <category>programming</category>
          
              <category>personal</category>
          
              <category>productivity</category>
          
      
      <description>
        &lt;p&gt;I&amp;rsquo;ll group them up, but none of these are &amp;ldquo;spec&amp;rdquo; quality thoughts or anything. I just want these to exist. Hit me up on some messenger or whatever if you know of one that I don&amp;rsquo;t.&lt;/p&gt;&#xA;&lt;p&gt;Unrelated to anything, I reach for the word musing too much. Is it too late to make a resolution to be slightly less pretentious?&lt;/p&gt;&#xA;&lt;h2 id=&#34;personal-dashboard&#34;&gt;personal dashboard&lt;/h2&gt;&#xA;&lt;p&gt;I know that there are a few of these out there, and maybe I just need to try harder into looking at configuring them. I want something that I can easily host that lets me have multiple profiles (me, family members), a public facing page for family level notifications / calendar entries, and then separate personal pages. Something that would make for a really good home page of a browser. I know the APIs of a lot of things have fallen apart and that not nearly as many things as I&amp;rsquo;d like support RSS anymore, but I feel like at a glance email counts, calendar appointments, to do deadlines, new notifications on different platforms, and maybe the ability to set some quick link tiles would be the real goal here.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2026-01-24-things-i-wish-i-had/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>Links roundup for the week of July 10, 2023</title>
      <link>https://4nm.us/posts/2023-07-10-weekly-links-roundup/</link>
      <pubDate>Sat, 15 Jul 2023 00:00:00 +0000</pubDate>
      <guid>https://4nm.us/posts/2023-07-10-weekly-links-roundup/</guid>
      
          
              <category>links</category>
          
              <category>handwriting</category>
          
              <category>generative ai</category>
          
              <category>java</category>
          
              <category>programming</category>
          
              <category>social media</category>
          
              <category>discord</category>
          
      
      <description>
        &lt;p&gt;Here we are again with some more links of interest! If you saw the original description that I forgot to update off the draft, no you didn&amp;rsquo;t!&lt;/p&gt;&#xA;&lt;h2 id=&#34;handwriting&#34;&gt;handwriting&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://getpocket.com/explore/item/how-the-ballpoint-pen-killed-cursive&#34;&gt;https://getpocket.com/explore/item/how-the-ballpoint-pen-killed-cursive&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Oh, this made something click for me. I&amp;rsquo;ve never held a pen &amp;ldquo;correctly&amp;rdquo; because it hurt to use like that, and.. well. Thanks, younger me, you weren&amp;rsquo;t wrong.&lt;/p&gt;&#xA;&lt;h2 id=&#34;llms&#34;&gt;llms&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://shkspr.mobi/blog/2023/07/fruit-of-the-poisonous-llama/&#34;&gt;https://shkspr.mobi/blog/2023/07/fruit-of-the-poisonous-llama/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Yeah this is probably going to be a regular aspect of these. Up first, we&amp;rsquo;ve got a Terence Eden post about lawsuits going on against some of these model makers, which seem to have whitepapers openly admitting that the models are using pirated books as a source.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2023-07-10-weekly-links-roundup/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>Some assorted links</title>
      <link>https://4nm.us/posts/2022-05-02-links/</link>
      <pubDate>Mon, 02 May 2022 11:19:31 -0700</pubDate>
      <guid>https://4nm.us/posts/2022-05-02-links/</guid>
      
          
              <category>programming</category>
          
              <category>rust</category>
          
              <category>java</category>
          
              <category>golang</category>
          
              <category>cryptocurrency</category>
          
              <category>security</category>
          
              <category>links</category>
          
              <category>2022</category>
          
      
      <description>
        &lt;p&gt;So it sure has been a neverending pandemic, huh. Sure hope that it&amp;rsquo;s possible for it to actually end. It has not, to be clear.&lt;/p&gt;&#xA;&lt;p&gt;Instead of actually bringing myself to write anything (though I will be! I&amp;rsquo;m going to be writing up a Spring Security 2 to 5 migration post), I have some great posts I read that I wanted to share instead.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://lexi-lambda.github.io/blog/2020/01/19/no-dynamic-type-systems-are-not-inherently-more-open/&#34;&gt;https://lexi-lambda.github.io/blog/2020/01/19/no-dynamic-type-systems-are-not-inherently-more-open/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Type systems and lies people tell themselves. This is fantastic, completely recommend it.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2022-05-02-links/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>Update to the Dwarf Fortress mods...</title>
      <link>https://4nm.us/posts/2020-05-dfmods/</link>
      <pubDate>Wed, 06 May 2020 17:25:53 -0800</pubDate>
      <guid>https://4nm.us/posts/2020-05-dfmods/</guid>
      
          
              <category>programming</category>
          
              <category>games</category>
          
              <category>dwarf fortress</category>
          
              <category>modding</category>
          
              <category>2020</category>
          
      
      <description>
        &lt;p&gt;Thanks to the wonderful Kat, I feel like playing Dwarf Fortress again and I noticed that version 47.x has released. Because of this, well, all of my mods needed to be updated. I&amp;rsquo;ve gone through and updated them all, along with finally creating a post for &amp;ldquo;clay dirt&amp;rdquo; which I&amp;rsquo;ll absolutely admit is a bit on the cheating side.&lt;/p&gt;&#xA;&lt;p&gt;I also edited my hugo theme a bit to provide better support for my mods, in both giving them a better summary view and giving me a way to link bitbucket repositories instead of direct downloads only. See, look at me, making it up to my poor neglected website. Two whole posts in one day.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2020-05-dfmods/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>Torture Testing</title>
      <link>https://4nm.us/posts/2019-torture-testing/</link>
      <pubDate>Thu, 26 Dec 2019 16:19:31 -0800</pubDate>
      <guid>https://4nm.us/posts/2019-torture-testing/</guid>
      
          
              <category>programming</category>
          
              <category>testing</category>
          
              <category>links</category>
          
      
      <description>
        &lt;p&gt;I haven&amp;rsquo;t posted anything about testing (or.. anything, for that matter) in a while, despite trying to make a lot of progress at work in that department.&lt;/p&gt;&#xA;&lt;p&gt;So instead, today I&amp;rsquo;m going to link to a great blog post I read about it that inspires me to try this approach, since we have a similar problem at &lt;code&gt;Dayjob&lt;/code&gt; in regards to the in-depth tests.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://daniel.haxx.se/blog/2019/12/16/how-randomly-skipping-tests-made-them-better/&#34;&gt;https://daniel.haxx.se/blog/2019/12/16/how-randomly-skipping-tests-made-them-better/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;The idea of only running some of your &amp;ldquo;worst&amp;rdquo; tests on each run is fascinating and I can see easily leading to actually having more developers run the test suite involved if it cuts off enough time. We already have what we call the &amp;ldquo;fastbuild&amp;rdquo; which skips all integration tests and cuts off 30 minutes of execution time, but this could be an interesting middle ground.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2019-torture-testing/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>Mass Token Gen</title>
      <link>https://4nm.us/posts/masstokengen/</link>
      <pubDate>Tue, 01 Jan 2019 14:01:53 -0800</pubDate>
      <guid>https://4nm.us/posts/masstokengen/</guid>
      
          
              <category>programming</category>
          
              <category>games</category>
          
              <category>magic the gathering</category>
          
              <category>mass token gen</category>
          
              <category>javascript</category>
          
      
      <description>
        &lt;p&gt;My favorite format of Magic the Gathering is Commander, formally known as EDH. For a quick rundown, in normal Magic the Gathering, you can typically play up to four of any card (outside of some specific restrictions) and your deck is typically 60 cards. In Commander, you have a 100 card deck that may only have one of each individual card. In addition, it has one (again, specific exceptions) special card known as your commander, and you can only play cards that share a color identity with your commander.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/masstokengen/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>mobile development</title>
      <link>https://4nm.us/posts/2018-mobile-development/</link>
      <pubDate>Sun, 02 Sep 2018 00:00:00 +0000</pubDate>
      <guid>https://4nm.us/posts/2018-mobile-development/</guid>
      
          
              <category>programming</category>
          
              <category>react native</category>
          
              <category>android</category>
          
      
      <description>
        &lt;p&gt;So, I&amp;rsquo;ve been trying for a while to make a few quick and relatively basic Android games for our kids to have on their tablets that are completely free of microtransactions. I write Java regularly, I&amp;rsquo;ve done Android before, hell, I&amp;rsquo;ve even made some of these before, so it seemed like a fairly easy process to just fire up Android Studio and get these going.&lt;/p&gt;&#xA;&lt;p&gt;That&amp;rsquo;s where I was wrong.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2018-mobile-development/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>migrating old spring apps</title>
      <link>https://4nm.us/posts/2018-migrating-to-modern-spring/</link>
      <pubDate>Mon, 02 Apr 2018 00:00:00 +0000</pubDate>
      <guid>https://4nm.us/posts/2018-migrating-to-modern-spring/</guid>
      
          
              <category>programming</category>
          
              <category>spring</category>
          
              <category>java</category>
          
      
      <description>
        &lt;p&gt;Here we go again, with another writeup of dragging Enteprise Java into the modern world. This time, we&amp;rsquo;re going to be tackling bringing Spring 2.5-based, method-name-resolver controllers and routing into the modern world by removing a dependency on &lt;code&gt;MultiActionController&lt;/code&gt;. &lt;code&gt;MultiActionController&lt;/code&gt; last exists in Spring 3.2.18, which means you&amp;rsquo;re out of luck if you&amp;rsquo;re trying to bring an older application forward and it&amp;rsquo;s heavily dependent on old XML configuration of controllers.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2018-migrating-to-modern-spring/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>javascript and java in harmony</title>
      <link>https://4nm.us/posts/2017-javascript-and-java-in-harmony/</link>
      <pubDate>Tue, 14 Mar 2017 00:38:37 -0700</pubDate>
      <guid>https://4nm.us/posts/2017-javascript-and-java-in-harmony/</guid>
      
          
              <category>programming</category>
          
              <category>javascript</category>
          
              <category>java</category>
          
              <category>maven</category>
          
      
      <description>
        &lt;p&gt;Part three of the series on Maven, Java, and Javascript together, and I&amp;rsquo;m happy to say I&amp;rsquo;ve got good news.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s been more updates to the frontend plugin, so as of version 1.3 you can most certainly do everything that I originally set out.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Using node + webpack as part of a Maven build process instead of hideous combinations of wro and others&lt;/li&gt;&#xA;&lt;li&gt;Changes to JS and LESS files automatically recompile&lt;/li&gt;&#xA;&lt;li&gt;The compiled changes are picked up immediately by Spring for use&lt;/li&gt;&#xA;&lt;li&gt;Changing one file shouldn&amp;rsquo;t make everything a source of neverending delay and pain&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The answer here had a few components, not all of which I&amp;rsquo;m sure people will agree with, but here&amp;rsquo;s the breakdown.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2017-javascript-and-java-in-harmony/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>js and maven addendum</title>
      <link>https://4nm.us/posts/2017-js-and-maven-addendum/</link>
      <pubDate>Fri, 20 Jan 2017 23:24:18 -0800</pubDate>
      <guid>https://4nm.us/posts/2017-js-and-maven-addendum/</guid>
      
          
              <category>java</category>
          
              <category>maven</category>
          
              <category>programming</category>
          
              <category>javascript</category>
          
      
      <description>
        &lt;p&gt;Since writing up that post, I noticed there&amp;rsquo;s an update to &lt;code&gt;frontend-maven-plugin&lt;/code&gt; that contains a configuration setting to add an &lt;code&gt;outputdir&lt;/code&gt; that automatically refreshes the given folder inside of Eclipse. That&amp;rsquo;s wonderful, it&amp;rsquo;s exactly what I wanted.&lt;/p&gt;&#xA;&lt;p&gt;Unfortunately, it doesn&amp;rsquo;t seem to force the rebuild of the webjar that project was building, which means I still have to manually refresh. Sigh. I&amp;rsquo;ll figure it out at some point, but until then, if you&amp;rsquo;re not supplying your assets using webjars it&amp;rsquo;ll work great.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2017-js-and-maven-addendum/">More ...</a>
        
      </description>
    </item>
    <item>
      <title>lombok and modern js</title>
      <link>https://4nm.us/posts/2017-lombok-and-modern-js/</link>
      <pubDate>Tue, 17 Jan 2017 12:45:45 -0800</pubDate>
      <guid>https://4nm.us/posts/2017-lombok-and-modern-js/</guid>
      
          
              <category>programming</category>
          
              <category>java</category>
          
              <category>javascript</category>
          
              <category>webpack</category>
          
              <category>lombok</category>
          
      
      <description>
        &lt;p&gt;So, I started using a few new-to-me technologies and thought I&amp;rsquo;d write a bit about my experiences with them so far.&lt;/p&gt;&#xA;&lt;p&gt;First up, we have the Lombok library for Java. Lombok is, in short, a decimator of boilerplate in Java through some annotation based magic. You can annotate your boring data objects with &lt;code&gt;@Data&lt;/code&gt; and no longer need to worry about writing required args constructors, getters, setters, hashCode, equals, or toString methods. Each of those can also be done individually, as well, giving a lot of flexibility.  I was playing around with it on a project that was starting to get a little too repetitive and was thoroughly impressed by the amount of mental garbage I was able to remove from most model objects. Lombok checks the strings that you use to configure those properties against the fields on the class automatically, giving warnings and errors as necessary&amp;ndash;none of the standard stringly typed weaknesses here that make you give up help from your compiler.&lt;/p&gt;    
        
          <a href="https://4nm.us/posts/2017-lombok-and-modern-js/">More ...</a>
        
      </description>
    </item>
  </channel>
</rss>
