<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    
    <title>Articles</title>
    
    
    <description>RSS</description>
    
    <link>/wp</link>
    <atom:link href="/wp/feed.xml" rel="self" type="application/rss+xml" />
	
    
      <item>
        <title>Sleight</title>
        <description>
          Six Months of React and TypeScript - 
          I’m a Java dev, but I wanted to learn React and improve my TypeScript, so I decided to make an app. This is my take on how that went. Udemy Primer The Idea Twitch Getting Started Technology Choices Why Brandi.js? Thoughts on React and TypeScript React Velocity React Hooks Moving...
        </description>
        <pubDate>Sat, 10 Dec 2022 16:45:00 -0800</pubDate>
        <link>/wp/sleight/</link>
        <guid isPermaLink="true">/wp/sleight/</guid>
      </item>
    
      <item>
        <title>The Skeeball Game Remake</title>
        <description>
          My Experience with Haxe in 2021 - 
          The Haxe language has been on my radar for years. Over the summer, I came up with a great trial project to do in Haxe, which would help me learn both the language and its ecosystem. In this article, I’ll summarize my recent experiences with Haxe: the great parts, the...
        </description>
        <pubDate>Thu, 18 Nov 2021 12:33:00 -0800</pubDate>
        <link>/wp/skeeball-game-remake-haxe/</link>
        <guid isPermaLink="true">/wp/skeeball-game-remake-haxe/</guid>
      </item>
    
      <item>
        <title>Securing a Small Backend Service on the Cheap</title>
        <description>
          
          A good way to secure an app is to (1) start with the assumption that an attacker will get root at some point and make their life hell accordingly, and then (2) make sure that an attacker doesn’t get root. Sometimes you hear the platitude “if they get root, it’s...
        </description>
        <pubDate>Mon, 24 May 2021 12:00:00 -0800</pubDate>
        <link>/wp/securing-a-small-backend-service-on-the-cheap/</link>
        <guid isPermaLink="true">/wp/securing-a-small-backend-service-on-the-cheap/</guid>
      </item>
    
      <item>
        <title>Scattering My Eggs Across the Cloud</title>
        <description>
          Or, How I Converted this Blog to JAMstack and Replaced a Bunch of Paid Stuff with Free Tier - 
          For nearly a decade, I used InMotion Hosting as my VPS provider. They have great service and their selection of GUI-installed apps (including WordPress) goes pretty far. I hosted this blog with them, and a handful of other small sites and apps. As time passed and my skillset expanded, I...
        </description>
        <pubDate>Tue, 25 Aug 2020 13:43:00 -0800</pubDate>
        <link>/wp/scattering-my-eggs-across-the-cloud/</link>
        <guid isPermaLink="true">/wp/scattering-my-eggs-across-the-cloud/</guid>
      </item>
    
      <item>
        <title>Change Detectors Versus Unit Tests</title>
        <description>
          
          Ever since reading Alex Eagle’s article Change-Detector Tests Considered Harmful, whenever I write I a unit test, I ask myself, “is this a change detector?” It’s a useful reflex to have, but I think Eagle’s article wasn’t completely clear on what it means for a unit test to be a...
        </description>
        <pubDate>Thu, 27 Jun 2019 13:35:00 -0800</pubDate>
        <link>/wp/change-detectors-versus-unit-tests/</link>
        <guid isPermaLink="true">/wp/change-detectors-versus-unit-tests/</guid>
      </item>
    
      <item>
        <title>Information Security Best Practices</title>
        <description>
          
          Would you leave your car or house unlocked? Would you leave your wallet on a public sidewalk? You would not, but you might unwittingly do the digital equivalent. Information security is important. Yet lots of folks do things which diminish theirs. In this article, I detail various information security concepts...
        </description>
        <pubDate>Sun, 04 Nov 2018 16:00:36 -0800</pubDate>
        <link>/wp/information-security-best-practices/</link>
        <guid isPermaLink="true">/wp/information-security-best-practices/</guid>
      </item>
    
      <item>
        <title>Explain Like I&amp;#8217;m Five: Concurrency</title>
        <description>
          
          It’s easy to think about code execution on a single timeline. Code executes in the order it appears in the source. It’s harder to think about code which executes concurrently. What are the benefits? What are the trade-offs? What extra steps need consideration? When should you write concurrent code instead...
        </description>
        <pubDate>Sat, 08 Sep 2018 08:57:13 -0800</pubDate>
        <link>/wp/explain-like-im-five-concurrency/</link>
        <guid isPermaLink="true">/wp/explain-like-im-five-concurrency/</guid>
      </item>
    
      <item>
        <title>Using Live Reload with Spring Boot</title>
        <description>
          
          At AngularJS workshops and in React internet articles, I’ve often seen instruction on using a live-reload Node.js server. A live-reload server is one that scans the project path for changes to files, and if something has changed, rebuilds the project and restarts the service. Some of them are even able to refresh the...
        </description>
        <pubDate>Sun, 03 Dec 2017 19:04:37 -0800</pubDate>
        <link>/wp/using-live-reload-with-spring-boot/</link>
        <guid isPermaLink="true">/wp/using-live-reload-with-spring-boot/</guid>
      </item>
    
      <item>
        <title>Introduction to Voice Programming, Part Four: Grammar Complexity</title>
        <description>
          
          In the previous articles in this series, I covered the essentials of getting started and getting involved with voice programming, and some best practices. This time, I’m going to talk about an issue that comes up as you begin to create more complex command sets and grammars: grammar complexity and the dreaded...
        </description>
        <pubDate>Tue, 08 Dec 2015 14:00:26 -0800</pubDate>
        <link>/wp/introduction-to-voice-programming-part-four-grammar-complexity/</link>
        <guid isPermaLink="true">/wp/introduction-to-voice-programming-part-four-grammar-complexity/</guid>
      </item>
    
      <item>
        <title>Introduction to Voice Programming, Part Three: Best Practices</title>
        <description>
          
          In the prior two articles in this series, I went over the basics of getting started with voice programming, and talked a little bit about the history and community of it. In this article, I’m going to go over best practices. Let me preface with this. Your personal command set...
        </description>
        <pubDate>Sat, 16 May 2015 17:05:31 -0800</pubDate>
        <link>/wp/introduction-to-voice-programming-part-three-best-practices/</link>
        <guid isPermaLink="true">/wp/introduction-to-voice-programming-part-three-best-practices/</guid>
      </item>
    
      <item>
        <title>So You Want to Use Saltbot</title>
        <description>
          
          UPDATE 3/26/2017: Saltbot now has its own subreddit, /r/saltbot.  UPDATE 8/14/2016: Since the last update, Reconman has taken over maintenance and upgrades of Saltbot. Because he has added a lot of features, I am updating this article again. UPDATE 5/16/2015: Chrome updated their App policy, so if you want to install...
        </description>
        <pubDate>Sat, 04 Apr 2015 18:28:50 -0800</pubDate>
        <link>/wp/so-you-want-to-use-saltbot/</link>
        <guid isPermaLink="true">/wp/so-you-want-to-use-saltbot/</guid>
      </item>
    
      <item>
        <title>Introduction to Voice Programming, Part Two: Open Source Speech Tools</title>
        <description>
          
          Last time, I talked about why Dragon NaturallySpeaking (version 12.5) is currently the best choice of speech engine for voice programming, and how Natlink ties Dragon to Python. Natlink is a great tool by itself, but it also enables lots of other great voice software packages, some of which are explicitly...
        </description>
        <pubDate>Tue, 10 Feb 2015 21:17:59 -0800</pubDate>
        <link>/wp/introduction-to-voice-programming-part-two-open-source-speech-tools/</link>
        <guid isPermaLink="true">/wp/introduction-to-voice-programming-part-two-open-source-speech-tools/</guid>
      </item>
    
      <item>
        <title>Introduction to Voice Programming, Part One: DNS + Natlink</title>
        <description>
          
          Between 2008 and 2013, I began to suffer from carpal tunnel syndrome. During that same time, I realized how much I love programming. When I saw Tavis Rudd’s Pycon talk, I thought to myself, “That’s awesome,” then, “I wonder if I can make that work.” I have, and I’ve learned a...
        </description>
        <pubDate>Sat, 07 Feb 2015 22:44:22 -0800</pubDate>
        <link>/wp/introduction-to-voice-programming-part-one-dns-natlink/</link>
        <guid isPermaLink="true">/wp/introduction-to-voice-programming-part-one-dns-natlink/</guid>
      </item>
    
      <item>
        <title>Ergonomic Alternatives Review 2014</title>
        <description>
          
          In 2013, my carpal tunnel was beginning to become unbearable. Every day, I would come home with wrists burning and fingertips tingling. In an effort to alleviate my symptoms, I started to try alternate input hardware. In this article, I will describe my experiences with some of these alternate setups. The “Minority...
        </description>
        <pubDate>Sat, 03 Jan 2015 14:08:26 -0800</pubDate>
        <link>/wp/ergonomic-alternatives-review/</link>
        <guid isPermaLink="true">/wp/ergonomic-alternatives-review/</guid>
      </item>
    
      <item>
        <title>Story of a Betting Bot</title>
        <description>
          
          This article recounts the story of how I became one of the wealthiest 100 players on a virtual betting site with over 10,000 active users. I was looking to sharpen up my JavaScript skills when I came across a mention on Hacker News of what turned out to be the...
        </description>
        <pubDate>Sun, 16 Nov 2014 02:03:56 -0800</pubDate>
        <link>/wp/story-of-a-betting-bot/</link>
        <guid isPermaLink="true">/wp/story-of-a-betting-bot/</guid>
      </item>
    
      <item>
        <title>Dissecting an OBJ File</title>
        <description>
          
          Previously, I went over the process of writing an Away3D parser but skipped how to actually interpret the data in a file. In this article, I’m going to talk about the structure of an OBJ file (less complicated than SOUR), how it’s typical of all 3D files, and how in...
        </description>
        <pubDate>Sun, 17 Feb 2013 16:29:12 -0800</pubDate>
        <link>/wp/dissecting-an-obj-file/</link>
        <guid isPermaLink="true">/wp/dissecting-an-obj-file/</guid>
      </item>
    
      <item>
        <title>How to Create a 3D Avatar Manually in Blender</title>
        <description>
          
          MakeHuman is a great tool for generating humanoid character models quickly. Still, it has its limitations. At present, the hair and clothing options are extremely limited, it can’t do non-humanoid avatars, and even its “proxies” are too high-poly for mobile games. Before I discovered MakeHuman, I learned how to create...
        </description>
        <pubDate>Sun, 17 Feb 2013 16:15:31 -0800</pubDate>
        <link>/wp/how-to-create-a-3d-avatar-manually-in-blender/</link>
        <guid isPermaLink="true">/wp/how-to-create-a-3d-avatar-manually-in-blender/</guid>
      </item>
    
      <item>
        <title>Writing an Away3D Parser</title>
        <description>
          
          A big part of creating the SOUR format was writing a parser to get the models into Away3D. (A parser is a part of a program which reads data in a storage format and changes it into a usable format.) In this article, I’m going to go through the basics...
        </description>
        <pubDate>Sun, 17 Feb 2013 15:52:34 -0800</pubDate>
        <link>/wp/writing-an-away3d-parser/</link>
        <guid isPermaLink="true">/wp/writing-an-away3d-parser/</guid>
      </item>
    
      <item>
        <title>SOUR Update: Attachment Points</title>
        <description>
          
          Note: SOUR was created during my time with Kumoshi. Our custom 3D format, SOUR, has gotten an upgrade. SOUR now has the capability to include “attachment points”, which will allow us to put things in avatars’ hands, things on their heads, etc. Behold: The mechanism is pretty simple. See the...
        </description>
        <pubDate>Sun, 17 Feb 2013 15:43:26 -0800</pubDate>
        <link>/wp/sour-update-attachment-points/</link>
        <guid isPermaLink="true">/wp/sour-update-attachment-points/</guid>
      </item>
    
      <item>
        <title>Introducing SOUR, a custom 3D Format</title>
        <description>
          
          SOUR is a custom 3D file format designed to bridge the gap between Blender and Away3D. Aren’t there other formats which Blender exports and Away3D reads? Yes there are: OBJ, 3DS, MD2, MD5, AC3D, DAE. However, none of these formats except for DAE can save vertex tangents, and the DAE...
        </description>
        <pubDate>Sun, 17 Feb 2013 07:48:37 -0800</pubDate>
        <link>/wp/introducing-sour-a-custom-3d-format/</link>
        <guid isPermaLink="true">/wp/introducing-sour-a-custom-3d-format/</guid>
      </item>
    
  </channel>
</rss>
