Im James…

I am a developer & designer with a focus in front-end architecture and interaction design. I have eclectic range of interests that currently include: IoT UI Design, 80's vintage computers (IBM PCjr, Apple //e, C64), embedded computing, video codecs, and retro-styled pixel-art.

Until mid-2019 I was Director of Innovation at niolabs, where I developed prototypes, tools, and designs for future IoT development and deployment. To me, there isn't a line between engineering and design; I'm equally comfortable in Sketch as I'm in Sublime Text.

You can find me doodling on CodePen, helping developers on StackOverflow, pushing code to GitHub, or posting on Twitter about my other hobbies/interests.

…to get in touch, e-mail me at j@holmes.codes.



    After a long hiatus, I've decided to redesign/reboot my previous personal site refactorman.com. Let's talk about a couple quick reasons why…
    …about a 3 minute read

    Typographic Unicode

    Often, I find myself skipping over typography when writing content in HTML. It's even harder, sometimes, when dealing with CSS. Here is a quick reference some common typographical characters, and how to express them in both HTML and CSS.
    …about a 6 minute read

    Better Color Gradients with HSLuv

    Color is tricky! It's often more complicated than I expect; when I underestimate it, I usually end up taking a dive down into some serious color theory and math. Let's take a closer look at an interesting challenge when generating color ramps and gradients.
    …about a 5 minute read

    Exploring the Discrete Cosine Transform

    The DCT is used extensively in lossy audio and image compression. It can be found in MP3 audio compression, JPEG image compression, and MPEG-1/2 video compression. Let's take a closer look the fundamentals of how a DCT is practically used.
    …about a 11 minute read

    Understanding Delegated JavaScript Events

    Have you ever been curious how delegated events work in JavaScript? How they can be implemented? Let's take a look...
    …about a 9 minute read

    The magical world of the JavaScript arguments object

    So, I've known for a long time that the object that is available in a function is a bit "odd", but until recently I didn't realize how odd.
    …about a 3 minute read

    Fun with pseudo‑elements

    I've known for quite a while that, you could inject content into HTML elements using CSS pseudo‑elements: and . But, they are way more useful than I originally thought…
    …about a 2 minute read


  • github.com/32bitkid/mpeg
    [Author] golang, video, mpeg-2
    A pure-Go implementation of a MPEG-2 decoder.
  • github.com/32bitkid/bitreader
    [Author] golang, bits
    Provides basic interfaces to read and traverse an io.Reader as a stream of bits, rather than a stream of bytes.
  • github.com/32bitkid/sci
    [Author] Sierra On-Line, sci01, EGA
    A small collection of utilities/structures for parsing and manipulating SCI0/SCI01 resources from classic Sierra adventure games.
  • github.com/kefirjs/kefir
    [Contributor] JavaScript
    A Reactive Programming library for JavaScript.
  • github.com/gonum/gonum
    [Contributor] Go
    Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more.