<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Beet Box</title>
    <link>https://beetbox.dev/</link>
    <description>Recent content on Beet Box</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>&amp;copy; 2020 &amp;ndash; 2025 Beet Box.</copyright>
    <lastBuildDate>Thu, 07 Aug 2025 17:10:41 -0400</lastBuildDate>
    <atom:link href="https://beetbox.dev/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>OpenGL is needlessly hard... but not impossible</title>
      <link>https://beetbox.dev/games/spacemail/devlog01/</link>
      <pubDate>Thu, 07 Aug 2025 17:10:41 -0400</pubDate>
      <guid>https://beetbox.dev/games/spacemail/devlog01/</guid>
      <description>&lt;p&gt;Since around 2020, I&amp;rsquo;ve tinkered with writing a custom game engine three separate times, each time in an attempt to create a new 2D game.&#xA;Why a custom engine?&#xA;Because I wanted to learn how to do it.&lt;/p&gt;&#xA;&lt;p&gt;I began with moderngl in Python.&#xA;By the time I was able to render a tilemap and move a character around the screen, I tired of the project and couldn&amp;rsquo;t find motivation to continue.&#xA;More than a year later, I gave a different game a shot with raylib bindings for Go, and I made a bit more progress.&#xA;But to my own detriment, I&amp;rsquo;m a picky person.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The Family Compute Center</title>
      <link>https://beetbox.dev/posts/the-family-compute-center/</link>
      <pubDate>Thu, 19 Jun 2025 20:24:25 -0400</pubDate>
      <guid>https://beetbox.dev/posts/the-family-compute-center/</guid>
      <description>&lt;p&gt;This article is written for those who are unfamiliar with Plan 9 and the 9P protocol, especially if you manage the devices for your household.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-family-computer&#34;&gt;The Family Computer&lt;/h2&gt;&#xA;&lt;p&gt;If you grew up some time between 1980 and 2010, you likely had a family computer.&#xA;Around the year 2004, as the PC became more popular, my family went from having two computers in the house to three.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&#xA;For just about every family I know, computing trends followed this path, to a fault.&#xA;As a result of this blind rush towards personal computing, the way we use computers has become expensive, finicky, and artificially limited.&#xA;We just don&amp;rsquo;t think of it that way.&lt;/p&gt;</description>
    </item>
    <item>
      <title>You Don&#39;t Need All That Code</title>
      <link>https://beetbox.dev/posts/you-dont-need-all-that-code/</link>
      <pubDate>Thu, 05 Jun 2025 10:53:16 -0400</pubDate>
      <guid>https://beetbox.dev/posts/you-dont-need-all-that-code/</guid>
      <description>&lt;p&gt;Many blog articles and social media posts are shared online to demonstrate programming &amp;ldquo;patterns&amp;rdquo;.&#xA;This isn&amp;rsquo;t a new phenomenon, but I only recently realized that most of these posts include code that accomplishes nothing.&#xA;In the following sections, I will share examples I&amp;rsquo;ve found (written in Go) juxtaposed with the code actually required to accomplish the task.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-singleton-pattern&#34;&gt;The singleton pattern&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code class=&#34;language-go&#34;&gt;type Service interface {&#xA;&#x9;Do()&#xA;}&#xA;&#xA;type EmailService struct{}&#xA;&#xA;func (e *EmailService) Do() {&#xA;&#x9;fmt.Println(&amp;quot;Sending email...&amp;quot;)&#xA;}&#xA;&#xA;// Service Registry holds registered services&#xA;type ServiceRegistry struct {&#xA;&#x9;services map[string]Service&#xA;}&#xA;&#xA;func NewRegistry() *ServiceRegistry {&#xA;&#x9;return &amp;amp;ServiceRegistry{&#xA;&#x9;&#x9;services: make(map[string]Service),&#xA;&#x9;}&#xA;}&#xA;&#xA;func (r *ServiceRegistry) Register(name string, s Service) {&#xA;&#x9;r.services[name] = s&#xA;}&#xA;&#xA;func (r *ServiceRegistry) Get(name string) Service {&#xA;&#x9;return r.services[name]&#xA;}&#xA;&#xA;// Usage&#xA;func main() {&#xA;&#x9;reg := NewRegistry()&#xA;&#x9;reg.Register(&amp;quot;email&amp;quot;, &amp;amp;EmailService{})&#xA;}&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If you don&amp;rsquo;t look too closely, this looks pretty impressive.&#xA;I mean, it&amp;rsquo;s a &lt;em&gt;lot&lt;/em&gt; of code!&#xA;It has to be doing something useful, right?&#xA;If we take the poster&amp;rsquo;s word for it, this demonstrates the singleton pattern.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simple Software</title>
      <link>https://beetbox.dev/posts/to-new-graduates/simple-software/</link>
      <pubDate>Thu, 15 May 2025 16:01:59 -0400</pubDate>
      <guid>https://beetbox.dev/posts/to-new-graduates/simple-software/</guid>
      <description>&lt;p&gt;In my previous post, I remarked that the unifying concept behind my development philosophy is simplicity.&#xA;Of the many considerations in writing software, performance, reliability, and predictable orthogonal features readily come to mind.&#xA;How might simplicity be a unifying concept to these considerations and dozens of others?&lt;/p&gt;&#xA;&lt;p&gt;It comes down to the fact that software is produced by and for people.&#xA;If software is to be well understood, it needs to be simple enough for a person to grasp.&#xA;Is it possible to make software performant if you don&amp;rsquo;t understand it?&#xA;Is it possible to make software reliable if you don&amp;rsquo;t understand it?&#xA;Is it possible to add predictable orthogonal features to a program if you don&amp;rsquo;t understand it?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Things I Appreciate About Plan 9</title>
      <link>https://beetbox.dev/posts/things-i-appreciate-about-plan9/</link>
      <pubDate>Sun, 16 Feb 2025 22:08:45 -0500</pubDate>
      <guid>https://beetbox.dev/posts/things-i-appreciate-about-plan9/</guid>
      <description>&lt;p&gt;A few weeks ago I got a hold of a Dell OptiPlex and installed 9front on it.&#xA;I&amp;rsquo;d like to share some things I appreciate about the system after having used it for around twenty hours.&lt;/p&gt;&#xA;&lt;h2 id=&#34;rio&#34;&gt;rio&lt;/h2&gt;&#xA;&lt;p&gt;Having used tiling window managers for several years, I was surprised at how much I enjoy rio.&#xA;The transition to a mouse controlled workflow was made easy by its thoughtful design.&#xA;For those unfamiliar, window operations are mostly handled through a menu brought up by clicking and holding button three on the mouse.&#xA;Of course, this eliminates noise and redundancy from window decorations, but there is something more I like.&#xA;Rio remembers what option you picked last, and preselects it for you upon initializing the menu.&#xA;That means repeated window operations become easier.&#xA;This is contrary to the interface presented by Windows, macOS, and many X11 desktop environments, where decorations on the window require precision clicks for each interaction.&#xA;On those systems, closing two windows in a row is no easier than closing a single window.&#xA;The same can be said for resizing them as well.&#xA;If you&amp;rsquo;re curious as to what that looks like, here is a quick recording.&lt;/p&gt;</description>
    </item>
    <item>
      <title>To New Graduates: Introduction</title>
      <link>https://beetbox.dev/posts/to-new-graduates/introduction/</link>
      <pubDate>Wed, 03 Jul 2024 15:29:49 -0400</pubDate>
      <guid>https://beetbox.dev/posts/to-new-graduates/introduction/</guid>
      <description>&lt;h2 id=&#34;simple-software&#34;&gt;Simple Software&lt;/h2&gt;&#xA;&lt;p&gt;Embarking on a career in software development presents new challenges, goals, and rewards, regardless if you&amp;rsquo;ve completed any formal software engineering program.&#xA;I received a bachelors degree in computer science in 2020, and spent months interning during the four-year program.&#xA;Despite this, the things I came to learn from working full-time have built upon the fundamentals of my college education in ways I could never have predicted.&#xA;Over the course of the next six posts in this series, I hope to make an impression of how my values and mentality have developed in the four years since completing my degree.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Do Not Fear Systems Programming</title>
      <link>https://beetbox.dev/posts/do-not-fear-systems-programming/</link>
      <pubDate>Tue, 12 Mar 2024 00:00:00 +0000</pubDate>
      <guid>https://beetbox.dev/posts/do-not-fear-systems-programming/</guid>
      <description>&lt;h2 id=&#34;first-time-with-low-level-networking&#34;&gt;First time with low level networking&lt;/h2&gt;&#xA;&lt;p&gt;In my junior year of college, I took a computer networking course.&#xA;It was my introduction to C++, glibc, sockets, and other topics, covered in around six assignments.&#xA;These assignments included making a chat program, and a client and server for a subset of FTP.&lt;/p&gt;&#xA;&lt;p&gt;At that point, I had written HTTP servers, but had never dealt with raw bytes going over sockets.&#xA;The beginning was intimidating, but the course and professor primed my intrigue.&#xA;After the final, I had changed from avoiding systems programming to being distantly interested.&lt;/p&gt;</description>
    </item>
    <item>
      <title>What to Test</title>
      <link>https://beetbox.dev/posts/what-to-test/</link>
      <pubDate>Thu, 30 Nov 2023 00:00:00 +0000</pubDate>
      <guid>https://beetbox.dev/posts/what-to-test/</guid>
      <description>&lt;h2 id=&#34;what-to-test-with-examples-in-go&#34;&gt;What to test (with examples in Go)&lt;/h2&gt;&#xA;&lt;p&gt;When first exposed to automated testing, many people wonder &lt;em&gt;what&lt;/em&gt; code they should test.&#xA;The following article focuses on what to test and is not a guide to using the Go testing package.&#xA;The code comes from real solutions to a &lt;a href=&#34;https://www.codewars.com/kata/54da5a58ea159efa38000836/go&#34;&gt;kata&lt;/a&gt; on &lt;a href=&#34;https://codewars.com&#34;&gt;codewars.com&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-kata&#34;&gt;The Kata&lt;/h2&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s imagine we are writing code for our startup that provides software for making computations with odd numbers.&#xA;Our first task is to write a function that finds which integer within a slice appears an odd number of times.&#xA;Here is our solution:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Work Updates</title>
      <link>https://beetbox.dev/posts/may-work-reflection/</link>
      <pubDate>Sun, 07 May 2023 00:00:00 +0000</pubDate>
      <guid>https://beetbox.dev/posts/may-work-reflection/</guid>
      <description>&lt;h2 id=&#34;a-pleasant-work-reflection-in-may&#34;&gt;A Pleasant Work Reflection in May.&lt;/h2&gt;&#xA;&lt;p&gt;I last wrote about some frustrations I encountered with a new project and database at work.&#xA;Towards the end of my post, I remarked on using an ML inspired language like OCaml for extra compile time guarantees.&#xA;I couldn&amp;rsquo;t be happier to say that since February, I have been working almost exclusively in Go and F#.&lt;/p&gt;&#xA;&lt;p&gt;This post may be informational, but mostly serves as a way for me to express gratitude for languages and tools I&amp;rsquo;ve been using recently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Languages Blocking Language</title>
      <link>https://beetbox.dev/posts/language-blocking-language/</link>
      <pubDate>Sun, 20 Nov 2022 00:00:00 +0000</pubDate>
      <guid>https://beetbox.dev/posts/language-blocking-language/</guid>
      <description>&lt;p&gt;Software developed for businesses is usually comprised of many layers.&#xA;Many are familiar with the concept of front end, authentication, back end, and database layers.&#xA;Front end, back end, and databases allow many choices of language, framework, or hosting.&#xA;Authentication has its fair share of choices, but as far as I&amp;rsquo;ve seen, few protocols are promoted.&lt;/p&gt;&#xA;&lt;h2 id=&#34;a-standard-authentication-pattern&#34;&gt;A standard authentication pattern&lt;/h2&gt;&#xA;&lt;p&gt;The best supported authentication protocols I&amp;rsquo;ve come across for intracompany services include&lt;/p&gt;</description>
    </item>
    <item>
      <title>I Love Errors</title>
      <link>https://beetbox.dev/posts/i-love-errors/</link>
      <pubDate>Wed, 28 Sep 2022 00:00:00 +0000</pubDate>
      <guid>https://beetbox.dev/posts/i-love-errors/</guid>
      <description>&lt;h2 id=&#34;i-love-errors-i-love-errors-i-love-errors&#34;&gt;I LOVE ERRORS. I LOVE ERRORS. I LOVE ERRORS.&lt;/h2&gt;&#xA;&lt;p&gt;Seriously, I do.&#xA;In an environment where errors are inevitable, how do we embrace them?&#xA;Errors permeate every part of our programs, but usually this isn&amp;rsquo;t easy to notice.&#xA;Often, potential errors hide in our programs, and leap out at inopportune moments during runtime.&lt;/p&gt;&#xA;&lt;p&gt;Provided we cannot eliminate errors, it would be great to know exactly when they can happen, and make guarantees about our programs.&#xA;We want to avoid hiding errors with syntax and language rules if these practices confuse our understanding of a program&amp;rsquo;s execution.&#xA;Luckily this is simple, and it can be done in any language, but is only considered idiomatic in a handful of popular ones.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Open Source Without GitHub</title>
      <link>https://beetbox.dev/posts/open-source-without-github/</link>
      <pubDate>Fri, 26 Aug 2022 00:00:00 +0000</pubDate>
      <guid>https://beetbox.dev/posts/open-source-without-github/</guid>
      <description>&lt;p&gt;For better or for worse, GitHub has become a ubiquitous part of open source software.&#xA;In this post, I&amp;rsquo;m going to talk about how to break away from GitHub, and federalize open source.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-convenience-of-one-platform&#34;&gt;The convenience of one platform&lt;/h2&gt;&#xA;&lt;p&gt;It&amp;rsquo;s impossible to deny that one of the reasons GitHub is so popular is likely because many features are packaged together.&#xA;Forking projects, publishing personal repos, contributing changes, and tracking issues are all included on the platform.&#xA;To break away from GitHub, I&amp;rsquo;ve personally had to give up some of this perceived convenience.&#xA;My projects, hosted on a personal &lt;a href=&#34;https://gitea.beetbox.io&#34;&gt;Gitea server&lt;/a&gt;, have issue tracking, pull requests, and forks.&#xA;But, of course, no one would want to create yet another online account on my site to contribute changes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ruby Footguns</title>
      <link>https://beetbox.dev/posts/ruby-footguns/</link>
      <pubDate>Sat, 02 Jul 2022 00:00:00 +0000</pubDate>
      <guid>https://beetbox.dev/posts/ruby-footguns/</guid>
      <description>&lt;h2 id=&#34;exploring-ruby-metaprogramming-footguns&#34;&gt;Exploring Ruby Metaprogramming Footguns&lt;/h2&gt;&#xA;&lt;p&gt;The last few weeks, I&amp;rsquo;ve been learning different languages to see what&amp;rsquo;s popular outside my regular sphere.&#xA;My journey took me to lots of articles written by Ruby enthusiasts, and the common usage of metaprogramming.&#xA;Plenty of languages support metaprogramming, but I&amp;rsquo;ve seen very &lt;em&gt;few&lt;/em&gt; communities use and encourage it actively.&#xA;It&amp;rsquo;s even used in considerably &amp;ldquo;Enterprise Projects&amp;rdquo; such as &lt;a href=&#34;https://rspec.info/&#34;&gt;RSpec&lt;/a&gt; and &lt;a href=&#34;https://guides.rubyonrails.org/active_record_basics.html&#34;&gt;Active Record&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In an effort to have fun with metaprogramming, I&amp;rsquo;ve created a project of &lt;strong&gt;intentional&lt;/strong&gt; Ruby Footguns.&#xA;This project is not a point against metaprogramming or meant to showcase potential problems, it is simply meant to make me laugh&amp;hellip; or facepalm.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Go, One Year Later</title>
      <link>https://beetbox.dev/posts/go-one-year-later/</link>
      <pubDate>Mon, 21 Mar 2022 20:00:00 -0400</pubDate>
      <guid>https://beetbox.dev/posts/go-one-year-later/</guid>
      <description>&lt;h2 id=&#34;three-years-of-go-one-year-of-rigorous-use-whats-the-lesson&#34;&gt;Three years of Go, one year of rigorous use. What&amp;rsquo;s the lesson?&lt;/h2&gt;&#xA;&lt;p&gt;When I began learning Go, I generally avoided languages that felt different from what I knew.&#xA;I had mainly been developing in Python and Java, and the lack of Exceptions in Go stopped me from giving it a serious attempt for years.&#xA;In a completely expected 180, after 4 years of using Go, it&amp;rsquo;s style of error handling has become one of my favorite features.&#xA;In this article, I want to share several of my other favorite things I&amp;rsquo;ve been taught while practicing with Go.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Favorite ECS Game Engines</title>
      <link>https://beetbox.dev/posts/my-favorite-ecs-game-engines/</link>
      <pubDate>Sat, 29 May 2021 15:00:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/my-favorite-ecs-game-engines/</guid>
      <description>&lt;h2 id=&#34;personal-favorite-ecs-game-engines&#34;&gt;Personal Favorite ECS Game Engines&lt;/h2&gt;&#xA;&lt;p&gt;Over the last 8 months, I&amp;rsquo;ve been writing an &lt;a href=&#34;https://beetbox.dev/posts/my-introduction-to-ecs/&#34;&gt;ECS engine&lt;/a&gt; in Python for Happy Wizard. It&amp;rsquo;s been a great learning experience, and I&amp;rsquo;ve managed to happily surpass my expectations.&lt;/p&gt;&#xA;&lt;p&gt;Though I will continue developing the engine and Happy Wizard, I&amp;rsquo;ve had the desire to complete a game and focus on developing game mechanics rather than an engine.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve opted to look for a simple, existing ECS engine to use and share my thought process of considering each for you to adapt or critique.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Considering Debian and Arch</title>
      <link>https://beetbox.dev/posts/considering-debian-and-arch/</link>
      <pubDate>Mon, 12 Apr 2021 09:00:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/considering-debian-and-arch/</guid>
      <description>&lt;h2 id=&#34;deciding-between-two-great-distributions&#34;&gt;Deciding between two great distributions&lt;/h2&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve used many Linux distributions over the last 4 years, and as I learned more, their differences narrowed to just:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;The package manager&lt;/li&gt;&#xA;&lt;li&gt;The available packages&lt;/li&gt;&#xA;&lt;li&gt;The frequency of package updates and system upgrades&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;I love the &lt;a href=&#34;https://wiki.archlinux.org/index.php/Pacman&#34;&gt;Arch package manager&lt;/a&gt;, and between the official packages and the AUR, I have access to every package that I need. I appreciate how up to date everything is, but lately, I&amp;rsquo;m feeling the trade-off of needing to update so frequently.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Error Handling in Rust and Go</title>
      <link>https://beetbox.dev/posts/error-handling-in-rust-and-go/</link>
      <pubDate>Sat, 27 Mar 2021 19:00:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/error-handling-in-rust-and-go/</guid>
      <description>&lt;h2 id=&#34;handling-errors-in-popular-languages&#34;&gt;Handling errors in popular languages&lt;/h2&gt;&#xA;&lt;p&gt;The first three years I spent programming, the only error handling I knew was the exception. Raising, throwing, or catching exceptions was &lt;em&gt;the&lt;/em&gt; way I handled bad input in my programs.&lt;/p&gt;&#xA;&lt;p&gt;It wasn&amp;rsquo;t until I took a course using C++ that I saw other methods of signaling errors. C++ has exceptions, but we often used C libraries that would return error codes as integers. I thought this was odd, but put up with the constraints of the &amp;ldquo;old language&amp;rdquo;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Saving Time With the Unix Philosophy</title>
      <link>https://beetbox.dev/posts/saving-time-with-the-unix-philosophy/</link>
      <pubDate>Sun, 28 Feb 2021 17:00:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/saving-time-with-the-unix-philosophy/</guid>
      <description>&lt;h2 id=&#34;how-unix-programs-save-me-time&#34;&gt;How Unix programs save me time&lt;/h2&gt;&#xA;&lt;p&gt;In the last six months or so, I&amp;rsquo;ve been delving into minimalist programs provided in my distributions default packages. By minimalist programs, I mean that they do one task well, and interact with other programs, just as the &lt;a href=&#34;https://en.wikipedia.org/wiki/Unix_philosophy&#34;&gt;Unix Philosophy&lt;/a&gt; dictates. They are extensible, and become more useful when interacting with other programs. By doing so, they never need to duplicate features of other programs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Code Formatting in Neovim for Beginners</title>
      <link>https://beetbox.dev/posts/code-formatting-in-neovim-for-beginners/</link>
      <pubDate>Fri, 23 Oct 2020 10:00:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/code-formatting-in-neovim-for-beginners/</guid>
      <description>&lt;h2 id=&#34;easing-the-cluttered-mind&#34;&gt;Easing the cluttered mind&lt;/h2&gt;&#xA;&lt;p&gt;When developing software, I like to remove choices from my workflow. This may sound limiting, but if you remove the right choices from your development process will be maximally streamlined.&lt;/p&gt;&#xA;&lt;p&gt;Recently, I noticed that formatting my code style was taking up too much of my development time. In pertinence to whitespace, curly braces, ternary operations, import order, and identifier names I&amp;rsquo;ve always had a consistent style, but enforcing it was a chore. The less time I spend worrying about those tasks, the more &amp;ldquo;brain cycles&amp;rdquo; I can spend on writing features, tests, and bug fixes. If linting and formatting is not new to you, you can skip &lt;a href=&#34;#lintingandformattinginneovim&#34;&gt;here&lt;/a&gt; to see how to accomplish it in neovim.&lt;/p&gt;</description>
    </item>
    <item>
      <title>4 Great Qualities of Codewars</title>
      <link>https://beetbox.dev/posts/4-great-qualities-of-codewars/</link>
      <pubDate>Sun, 17 May 2020 10:00:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/4-great-qualities-of-codewars/</guid>
      <description>&lt;h2 id=&#34;my-experience-with-codewars&#34;&gt;My experience with Codewars&lt;/h2&gt;&#xA;&lt;p&gt;I was recommended by a professor early in my final semester to participate on websites such as &lt;a href=&#34;https://www.codewars.com/&#34;&gt;Codewars&lt;/a&gt;, &lt;a href=&#34;https://www.topcoder.com/splash/&#34;&gt;TopCoder&lt;/a&gt;, and other programming challenge websites with our ACM chapter. Since the semester ended up being so busy and coming to an early end, I was only able to try out these websites a few weeks ago. I&amp;rsquo;ve spent the most time on Codewars and want to share a few things that I appreciate about the site with you.&lt;/p&gt;</description>
    </item>
    <item>
      <title>My Introduction to ECS</title>
      <link>https://beetbox.dev/posts/my-introduction-to-ecs/</link>
      <pubDate>Thu, 14 May 2020 10:00:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/my-introduction-to-ecs/</guid>
      <description>&lt;h2 id=&#34;my-discovery-of-ecs-entity-component-system&#34;&gt;My discovery of ECS (entity component system)&lt;/h2&gt;&#xA;&lt;p&gt;I developed my first game, SpaceMail, with GameMaker Studio and GameMaker Studio 2. During the rework, I decided to use the Godot engine to cut my dependency on Windows. On both implementations, I used an object-oriented approach, as that&amp;rsquo;s what I had been taught in college.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-amethyst-game-engine&#34;&gt;The Amethyst game engine&lt;/h2&gt;&#xA;&lt;p&gt;I hadn&amp;rsquo;t heard of any other approach to game development and hadn&amp;rsquo;t imagined there would really be another simple approach. I only discovered ECS when my interest in Rust began. After using C++ in my networking class in college, I wanted to harness the power of low-level languages. I had nothing against the language C or C++, but what I struggled with was my inability to find proper documentation for libraries I wanted to use. Every reference or guide seemed either too antiquated or assumed I knew more than I did. This is where Rust shined for me. The Rust book itself was a massive help in picking up the language, and it seemed like every library I was interested in had decent documentation as well!&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Beginnings</title>
      <link>https://beetbox.dev/posts/new-beginnings/</link>
      <pubDate>Mon, 11 May 2020 20:51:00 -0500</pubDate>
      <guid>https://beetbox.dev/posts/new-beginnings/</guid>
      <description>&lt;h2 id=&#34;introduction-to-the-rebranding-of-beetbox&#34;&gt;Introduction to the rebranding of BeetBox&lt;/h2&gt;&#xA;&lt;p&gt;Hello, everyone! I&amp;rsquo;ve just recently completed my final semester of college, and I am looking forward to the time I will have in the evenings to work on my own projects again.&lt;/p&gt;&#xA;&lt;p&gt;You may also notice that I am in the process of rebranding from beetboxgames.com to beetbox.io. I feel that change better reflects the official DBA and also gives me room to develop different kinds of software under this name.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
