Nintendo 64 Modernisation

Nintendo 64 Modernisation

Nintendo 64 controller with gaming in the background

For the 5th generation of consoles, our mum surprised us for Christmas. I still remember the feeling of shock and amazement as we unwrapped something we couldn’t have even asked for: a Sony PlayStation. What an amazing console! We had such a blast playing that. Crash Bandicoot, Spyro, Warhawk, Metal Gear Solid, and dozens more.

Having a PlayStation meant that there was one downside, if you can even call it that: I didn’t experience Nintendo 64 in its heyday. In the early 2000s I did get one from a friend for some reason – I think I traded him for a modded Xbox? But I never really played it.

Banana Brancake

Banana Brancake

Why a brancake?

For as long as I can remember I’ve been the “always hungry” type. I could eat a meal, have seconds, have a food coma, and then be hungry again.

I wanted to break out of this pattern for the primary reasons of:

  • Keeping my waistline in check.
  • Avoiding the afternoon slump i.e. food comas.
  • Not being a hangry monster.

I watched some good videos with titles like Why diets fail and Eliminating stubborn belly fat. I also enjoyed the book How to Eat.

Sun Ultra 24 - Reborn

Sun Ultra 24 - Reborn

The Sun Ultra 24 is objectively one of the most beautiful enterprise workstations ever created. I picked one up last year but its hardware is rather dated and needs an upgrade to keep it as a daily driver. Let’s do it.

Background

The Sun Ultra 24 was one of the last workstations from Sun Microsystems. In their final years of making workstations they started offering x86-based systems with AMD Opteron or Intel Core 2 64-bit CPUs. Compared to UltraSPARC-based hardware of the past, these systems were pretty much bog-standard PCs. ATX* motherboards, SATA drives, DVI, DisplayPort, etc.

Improving static data performance with metaprogramming

In my previous post Generating static data with Elixir comprehensions I showed how you can use comprehensions to generate static data in your Elixir application. That static data was stored as a Map in a module attribute and accessible with a function that returns the Map itself.

When building your application, you probably know how the static data will be accessed. Elixir has various ways of accessing data in a List, Keyword, or Map, and there are big differences in performance based on the size of tha data set. We’ll use the library benchee to measure the differences between the built-in access functions and compare that to approaches based on metaprogramming.

Generating static data with Elixir comprehensions

A common requirement in software is to have a static data resource in your application or library. These are typically resources that changes so infrequently that releasing a new version for a data change is fine. Of course you can build these data by hand, but this is error-prone and makes rebuilding the static data more labour intensive. These problems are exacerbated by larger data sets. As good lazy (i.e. efficient) developers we can use code to solve these problems.