2024-01-25T15:47:00-08:00Jon Sangsterhttps:///Final Fantasy 1–6 Pixel Remastershttps:///games/final-fantasy-pixel-remaster/2022-03-17T00:00:00-08:002024-01-25T00:00:00-08:00<p>
Like many millennials, I grew up loving Final Fantasy. My family didn’t own any
of them, sadly, so I would play the earlier editions whenever I could during
visits with our extended family who did. In `98, I hauled-ass, mowing lawns and
painting fences all summer, to save up to buy a Playstation 1 and Final
Fantasy 7. Worth it!
</p>
<p>
Recently, SquareEnix (Squeenix?) released new versions of the first six games,
known as “pixel remasters.” They rebuilt each game on the same Unity-based
engine, with new sprites, updated music, and modern particle effects. Moreover,
they’ve added a few quality-of-life features that make certain aspects of the
game less tedious.
</p>
<p>
I feel that they’ve done a great job modernising these classic games and
recreating the feeling I had when I first played them as a kid. The Pixel
Remasters are certainly now my favourite editions of the first 6 games.
</p>
I Published my Emacs Confighttps:///blog/2022/03-17-emacs-config/2022-03-17T00:00:00-08:002024-01-25T00:00:00-08:00<p>
I published the org-mode version of my Emacs config to GitHub: <a href="https://github.com/sangster/emacs">sangster/emacs</a>.
</p>
<p>
I think it may be a right-of-passage for all Emacs converts to put their config
online. Over the years, I’ve found a lot of great snippets from the config files
of others, and now it’s time to pay it forward! My config is incredibly
personalised, so I doubt you’ll find it useful to use it wholesale, but there
may be a few good bits and pieces that you can pick out of there.
</p>
Nix: Using symlinkJoin with nodePackageshttps:///blog/2022/01-12-nix-symlinkJoin-nodePackages/2022-01-12T00:00:00-08:002024-01-25T00:00:00-08:00<p>
NixOS’s <kbd><nixpkgs></kbd> repository comes with a handy function for combining
different packages (derivations) into a single, large derivations:
<a href="https://github.com/NixOS/nixpkgs/blob/b2737d4980a17cc2b7d600d7d0b32fd7333aca88/pkgs/build-support/trivial-builders.nix#L386-L452"><kbd>symlinkJoin</kbd></a>. It replicates the directory structure of a list of derivations,
creating symlinks to the original files each source derivation. Unfortunately,
as we’ll discuss in this post, it chokes badly if you try to join an NPM package
into your derivation.
</p>
Signing Git Commits on the Terminalhttps:///blog/2022/01-10-git-gpg-ssh/2022-01-10T00:00:00-08:002024-01-25T00:00:00-08:00<p>
Signing your git commits with GPG works perfectly fine, until that fateful day
when you need to commit some code in a non-X11 session. Most likely, you’ll
encounter this when you’ve brought your laptop on the road, and need to SSH into
your dev-machine at home and commit a few quick changes. Unfortunately for you,
after entering your <a href="https://cbea.ms/git-commit/">well-formatted commit message</a>, <kbd>git</kbd> blocks for about 30
seconds then spits out the following error:
</p>
<pre class="example">
error: gpg failed to sign the data
fatal: failed to write commit object
</pre>
Ruby: Implicit Conversionhttps:///blog/2021/10-03-ruby-implicit-conversion/2021-10-03T00:00:00-08:002024-01-25T00:00:00-08:00<p>
<a href="https://en.wikipedia.org/wiki/Type_conversion#Implicit_type_conversion">Implicit conversion</a> doesn’t come up very often in ruby. It’s a duck-typed
language, so as long as an object has the right instance methods defined,
everything should be fine. Sometimes though, when you’re dealing with system
libraries or linking with other languages, ruby really does need a way to
convert your objects into fundamental types, like strings, hashes, and arrays.
</p>
Patching <nixpkgs>https:///nix/patch-nixpkgs/2021-09-22T00:00:00-08:002024-01-25T00:00:00-08:00<p>
Every Nix flake implicitly gets <kbd>nixpkgs</kbd> as an input, but what if it contains a
show-stopping bug? It may have been fixed upstream, but these fixes can
sometimes take days or weeks to even reach the <kbd>nixos-unstable</kbd> branch.
</p>
<p>
In this article, we’ll describe way one easy way to create a <kbd>nix.flake</kbd> that
patches <kbd>nixpkgs</kbd>.
</p>
A Nix Merge Requesthttps:///blog/2021/08-07-a-nix-merge-request/2021-08-07T00:00:00-08:002024-01-25T00:00:00-08:00<p>
Most everyone I talk to about computers and software want things that <em>“Just
work!”</em> The older I get, the more sympathetic I am to this view. There just
isn’t enough time in the day to be futzing around with broken things; however,
when it comes to my <em>personal</em> computers, I tend to run in the opposite
direction. I just <em>love</em> to tinker, and my PCs provide the perfect playground
for that. Whenever I find that they “Just work,” why, that’s perfect time to
break them with some new project! As a consequence, these days I find myself
running the unstable branch of <a href="https://nixos.org/">NixOS</a>.
</p>
<p>
One of the neat things about running on the unstable branch of an new-ish distro
is that I often get to see bugs pop up before too many other people. When I used
to run a very popular distro, like <a href="https://archlinux.org/">Arch Linux</a>, solving a bug was mostly a matter
of tracking down the forum post containing its fix. With so many nerds on the
case, all the fun bugs are fixed before I’ve even finished my work day. With
NixOS, if your system configuration is… unique enough, you could easily bump
into a bug a day or two before anyone else does.
</p>
<p>
Earlier this week I ran into such a bug. When doing a system upgrade, I
encountered an error for a package that I’m somewhat familiar with, and the
error looked pretty easy, so why not take a shot at fixing it?
</p>
Shell Scripts with Nixhttps:///nix/shell-scripts/2021-08-03T00:00:00-08:002024-01-25T00:00:00-08:00<p>
The goal of this page is to explore and document “best practises” for writing
shell scripts and packaging them for the <a href="https://nixos.org/">Nix package manager</a>.
</p>
<div class="notes" id="orgf3cb7ea">
<ul class="org-ul">
<li>This article describes software which is both: unstable, and something I’m
still learning about. As a consequence, this advice may change over time.</li>
</ul>
</div>
Red Dead Redemption 2https:///games/red-dead-redemption-2/2021-07-21T00:00:00-08:002024-01-25T00:00:00-08:00<p>
I played <em>Red Dead Redemption 1</em> on the PS3, back in 2011, and absolutely loved
it. Well, <em>Red Dead Redemption 2</em> (RDR2) was released a few years ago now, but
this time I decided to wait for its PC release. I never did wind up buying a PS4
and rumours online are that RDR2 runs pretty well on Linux, via <a href="https://www.protondb.com/">Proton</a>, so why
not?
</p>
A First Post!https:///blog/2021/07-16-first-post/2021-07-16T00:00:00-08:002024-01-25T00:00:00-08:00<p>
Hello, world! Welcome to my new blog. I plan to use this blog to document
technical tips, hacks, bugs, coding “best practises,” and the like. Like many
programmers, I spend heaps of my day, not implementing features, but trying to
get a constellation of libraries, services, tools, and code to play nicely
together. Normally, once I fix something, I immediately get back to whatever I’m
<em>supposed</em> to be doing; however, I think it would be much more interesting to
collect these in a blog!
</p>