Category: Software Development
-

Sargasso: A Realtime WebGL2 Ocean Topography Simulation
Embedded above is something I’ve been working on over the past couple of months that I thought people might find pretty interesting to play with. This is a WebGL2 simulation of the topography of an ocean simulated via Gerstner waves, rendered entirely on the GPU. My project is called Sargasso and the source code can be found on Codeberg (and on GitHub if you prefer). The initial idea that got me interested in building this was that I needed a way to play with the very complex parameters for Gertner wave simulations to try to create realistic and interesting ocean…
-

Becalmed
Anybody who has known me for any of the last six or so years should know that Sea of Thieves is perhaps my favorite video game of my life. Minecraft held that position for a long time, but during those lonely years just after the pandemic began, Sea of Thieves took a very special place in my heart. Hell, it’s obviously a huge inspiration for the game I’m making even now. I’d be lying if I didn’t admit that it was a huge part of my current dream to live near the ocean someday. For those who haven’t played Sea…
-

Going Upon the Account
“Going upon the account” is what it was called when people people decided to embark on the dangerous journey of joining up with a pirate crew during the Golden Age of Piracy. Most of those who did it had been experienced sailors who had been successful privateers or soldiers during the wars that preceded the era, but found themselves unemployed and cast off without much in the way of a soft landing. Merchant captains were notoriously brutal and paid very poorly, and some decided they’d rather live a short life, and a merry one. Well we’re in a rough economy…
-
The Problem with Geography-Based Pay
Some remote companies such as Atlassian have begun altering their pay structure to pay workers different amounts depending on the geographic region where employees live. No doubt the company leadership responsible for such decisions has correctly determined that the cost of living is not the same everywhere, and has naively assumed that the way to address this imbalanced cost of living is simply to pay people more who live in higher cost areas. However, I’d like to make the case that this “solution” solves one issue and introduces several others in the process, arguably resulting in a worse outcome for…
-
Why I Will Always Choose Firefox
Unlike most people who may be reading this, when I install a browser, it’s always Firefox. Being a software developer, and working around other tech-literate people, this simple fact seems to draw a fair bit of confusion, as everybody else seems to think of Google Chrome as their go-to option. I’ve had a great many friends over the years try to convince me to switch to Chrome, usually, I presume, as an instinctive aversion to difference, and once because they wanted to prank me by installing the NCage chrome extension. On that last occasion, I installed it just to see…
-
HyperTrace 1.0 – My First Android Development Experience
This week, my company Danger Interactive LLC launched its first app, one for which all of the programming and art was done by myself, so in a sense, I launched my first app. Learn more about that here, by the way: https://dangerzonegames.com/apps/hypertrace/ Experience My preexisting experience with android development was very limited prior to developing this app. I had followed a tutorial one time over five years prior, before I even understood programming well. On another occasion, I planned to build an app for a friend, but once again, this was before my understanding of programming was sound enough to…
-
Ludum Dare 41 Postmortem
Ludum Dare 41 came to an end just a little more than a week ago. I believe I’ve finally recovered from the mayhem and come through the better in the end. Project Status Unfortunately, my Ludum Dare 41 project, a “turn-based AI battle-royale game” called “Turn-by-Turn Deathmatch” was not finished when the 72-hour deadline hit. This was, unfortunately, my expectation for this one. I may continue working on the game in the future, but I am particularly averse to the theme and not satisfied with the idea that I was able to come up with. The Theme My struggle for…
-
The Scourge of Global Mutable State
I’m not a perfect programmer, but I like to think that I’m getting better every day. I’ll admit that one of the things that I’ve had the most difficult time adapting to was what I perceived as other programmers being somewhat pedantic about avoiding what they called “global state” or sometimes more specifically “global mutable state.” In the past, I held onto some conviction that while this is something to be avoided where possible, there are actually cases where it is appropriate. Recently I’ve decided to not only better conform to this well-known best-practice, but also to understand why it…
-
Ludum Dare 38-40 Postmortem
It’s been nearly a year since I participated in Ludum Dare 38, which was my first ever game jam. I finished the game, and received decent ratings (I mean, not great over all, but given it was my first one), placing me between the 500th and 700th place in the rankings. I also participated in Ludum Dare 39, which unfortunately never made it to the playable stage by the 72 hour deadline. Ludum Dare 40 I likewise did not finish, however it was much more finished than 39, and was more technically advanced than either of the previous attempts. Ludum…
-
Software Architecture and the YAGNI principle
I consider myself a developer with a good appreciation for a well-designed and carefully implemented architecture. I like to do things the “right” way whenever possible, instead of the quick way. I try my best to make everything I write modular, with minimal dependencies, and adaptable to any platform. Over the years I’ve been programming, however, I’ve learned that while that is a noble goal, there are certain occasions where the effort to conform to the aforementioned goal is not actually worth it. The key driving principle behind what I am referring to is the “YAGNI principle.” YAGNI, meaning “You…