Hi, my name is Nat

Also known as "njms" and "natjms" where that username isn't available. I'm a programmer and artist who goes by they/them pronouns. Here's an abridged list of the things I do:

  • Server-side scripting in Elm
  • Software in Rust
  • React Native app development
  • Websites and web apps using Elm
  • I also write about society and its intersection with technology

Ethical anti-design, or designing products that people can't get addicted to.

2021-02-21 12:00:00 +0100

In the photo above, a Wii Remote is sitting on a table next to an open window. People who grew up playing the Wii might remember it; while playing Wii Sports, the game would give you a pop up window of it with a message politely reminding you that you can always take a break. While it might seem a bit counterintuitive, there's a couple of different reasons why a game would tell you to stop playing. In the case of online, subscription-based games, the company might actually benefit from you logging off every once in a while (don't worry, I'll get to social media eventually). It's not like you're cancelling your subscription, and every second you're online chews up valuable bandwidth. In other games, things like level-grinding, while tempting, might ruin the experience. In a game like Pokémon, for example, if you get your entire team up to level 60 before taking on the Elite Four, you'll win, but not in the most glamorous or satisfying way. The case of the Wii was a bit different. It seemed like Nintendo was aware that their audience was mostly younger children, and they felt the need to intervene when the player spends too much time playing the game out of interest for the player themself (and maybe the appeasement of the parents). That's not the sort of thing we see often anymore, and I always wondered why.


The Fediverse only solves half the problem.

2021-02-14 12:00:00 +0100

I first got into Mastodon about four years ago. Back then, we were feeling proud of ourselves for having brought the Fediverse to over a million users; today it appears that number has quadrupled. ActivityPub has given us the tools to create social media platforms large enough to overcome the network effect, and the Fediverse seems like the FLOSS community's best and perhaps only bet at seriously challenging the likes of Twitter and Facebook. Getting over a million people into the Fediverse was a huge accomplishment, because for the first time, we finally had a half decent platform we knew wasn't spying on us. We had proved that building a grass roots social media platform entirely on volunteer effort wasn't impossible; in fact, it was very much the reality we found ourselves in. The technolibertarians and FLOSS lovers rejoiced, and it felt pretty amazing to be there with them.


The 7 Habits of Highly Efficient People

2020-09-13 20:00:00 +0100

If you've been around leftist social media recently, you've probably heard about what some call the productivity pay-gap. Simply put, the productivity pay-gap is the idea that despite a drastic increase in worker productivity since the late 1970s (69.3% to be exact), workers haven't seen nearly as great of an increase in their average hourly pay (just 11.6%). It's no surprise workers are getting more productive: the late 20th century came with enormous technological developments that radicalized the way we work. Today, everything that can be automated is automated, and the number of different tasks we know how to automate only seems to grow by the day. Futurists are split on what this progress will ultimately bring about, but one thing is for sure: we need to change the way we think about work.


"Yeah I'll do it", and why your team sucks

2020-05-15 13:00:00 +0100

Despite the impending threat of a global pandemic, our economy hasn't stopped just yet. While many critical jobs in supply chains have come to a halt, lots of higher level jobs that would have otherwise involved online collaboration are running in full swing. This sort of environment puts all kinds of new pressures on teams, and teams that have thus far chosen not to emphasize the importance of team development are being put to the test. Can YOU survive the pandemic, even with your negligence of team building?

Well, yeah, probably. You'll survive for all of the wrong reasons.


The dark web could be a really great place.

2018-09-09 12:00:00 +0100

Recently, I've been working on this essay about Tor and the dark web in general. This has really got me thinking about how (or rather, why) the dark web is painted with such a horrid image. Sure, there are black markets operating over Tor Onion Services, but surely there's also plenty of black markets operating on the clearnet, down my street and all across the country.

So what's the big deal?


Closures in programming: What are they and how do they work?

2017-12-28 12:00:00 +0100

Any avid programmer would likely have heard the term “closure” a handful of times, though many newcomers may struggle trying to understand how they work, or even what they are. Let's take a look at a definition taken from Wikipedia:

In programming languages, closures (also lexical closures or function closures) are techniques for implementing lexically scoped name binding in languages with first-class functions.

That’s, well, not very intuitive. To be fair, closures aren’t an incredibly intuitive thing when you define them like that. I’m certain, however, that though breaking this definition down things will become much clearer. Let’s take a look:


Modern JS concepts: Arrow functions, the new and improved function literals

2017-12-28 12:00:00 +0100

In the past, we would see a lot of this:

someFunction(param, function() {
  // do something
});

Now, this gets a little bit cumbersome after a while. Not only are function expressions long, they include a kitchen sink of features that you probably won't need in all cases, like the this or a new constructor.

Thankfully, in EMCAScript 6, we got this whole new and improved arrow function. Let's take a look.