<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://www.nmichaels.org/musings/</id>
  <title>Nathan's Musings</title>
  <updated>2026-08-04T19:14:37.859546+00:00</updated>
  <link href="https://www.nmichaels.org/musings/"/>
  <link href="https://www.nmichaels.org/musings/blog/atom.xml" rel="self"/>
  <generator uri="https://ablog.readthedocs.io/" version="0.11.13">ABlog</generator>
  <entry>
    <id>https://www.nmichaels.org/musings/good-docs/</id>
    <title>Good Documentation</title>
    <updated>2026-08-02T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/good-docs/"/>
    <summary>Tearing apart bad
documentation
may be cathartic, but there’s good documentation out there too. It
deserves recognition. Today, I’m going to pick on SDL. I’m not talking
about the quality of the API itself, just its documentation.</summary>
    <category term="programming" label="programming"/>
    <published>2026-08-02T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/comments/</id>
    <title>Bad Comments</title>
    <updated>2026-07-25T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/comments/"/>
    <summary>I first came across ThreadX somewhere around 2021, during its stint as
Azure RTOS. I guess Microsoft thinks blue is cool or something. Maybe
they really want to emulate another blue-themed company. I don’t
know. Anyway, it’s 62304-certified and I was working on a class B
medical device at the time. While using it, I found a bunch of things
that look like this:</summary>
    <category term="programming" label="programming"/>
    <category term="rant" label="rant"/>
    <published>2026-07-25T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/language/</id>
    <title>Foreign Accents</title>
    <updated>2026-07-17T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/language/"/>
    <summary>There’s a phenomenon that I’ve been observing, and I think it’s time
to share my thoughts. In my experience, when someone goes to visit a
place and tries to learn some of the language and speak it, the
reaction comes in two flavors: people either (type I) act delighted
and try to help with the learning, or (type II) switch to English.</summary>
    <category term="life" label="life"/>
    <published>2026-07-17T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/coding-style/</id>
    <title>Weird Coding Styles</title>
    <updated>2026-07-02T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/coding-style/"/>
    <summary>I’ve been working in the software industry for 20 years (counting as
conservatively as I can) this year, and sometimes people come up with
weird styles and enforce them on everyone who touches their
codebase. These are a few examples.</summary>
    <category term="programming" label="programming"/>
    <published>2026-07-02T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/fudge/</id>
    <title>Fudge</title>
    <updated>2026-02-07T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/fudge/"/>
    <summary>Recipe first, commentary later. About an
hour total.</summary>
    <category term="candy-making" label="candy-making"/>
    <published>2026-02-07T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/shortbread/</id>
    <title>Shortbread Cookies</title>
    <updated>2026-01-12T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/shortbread/"/>
    <summary>Recipe first, commentary later. About 1 hour
total.</summary>
    <category term="baking" label="baking"/>
    <published>2026-01-12T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/toffee/</id>
    <title>Toffee</title>
    <updated>2026-01-08T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/toffee/"/>
    <summary>Recipe first, commentary later. Should take
between 30 minutes and an hour.</summary>
    <category term="candy-making" label="candy-making"/>
    <published>2026-01-08T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/meringue/</id>
    <title>Meringue Cookies</title>
    <updated>2025-11-14T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/meringue/"/>
    <summary>Recipe first, commentary later. 15 minutes of work and 2.5 hours of
baking.</summary>
    <category term="baking" label="baking"/>
    <published>2025-11-14T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/cookies/</id>
    <title>Chocolate Chip Cookies</title>
    <updated>2025-10-18T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/cookies/"/>
    <summary>Recipe first, commentary later.</summary>
    <category term="baking" label="baking"/>
    <published>2025-10-18T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/hiring/</id>
    <title>Hire Lucky</title>
    <updated>2025-09-03T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/hiring/"/>
    <summary>Jeff Atwood wrote about
FizzBuzz in 2007. Google used to use weird brain teasers, but no
longer does. That hasn’t stopped a plethora of companies who think
they’re copying Google from asking tricky puzzle questions. No matter
what the approach, though, interview questions measure how well
someone answers interview questions.</summary>
    <category term="hiring" label="hiring"/>
    <category term="humor" label="humor"/>
    <published>2025-09-03T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/slashdot/</id>
    <title>Hello, Hacker News Readers</title>
    <updated>2025-08-24T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/slashdot/"/>
    <summary>The other day, a friend of mine brought this to my attention:</summary>
    <category term="meta" label="meta"/>
    <published>2025-08-24T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/druggist/drugs/</id>
    <title>Druggist</title>
    <updated>2025-07-12T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/druggist/drugs/"/>
    <summary>Due to some recent events, I’ve found myself in the position of
needing to track medicine intake. There are medicines that have to be
taken daily, which have to be audited (“Did I remember to take my
bufaximol?”) and others taken as needed to manage symptoms (“How much
metryptine have I taken today?”).</summary>
    <category term="programming" label="programming"/>
    <published>2025-07-12T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/d4d4/d4d4/</id>
    <title>D4D4</title>
    <updated>2025-05-11T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/d4d4/d4d4/"/>
    <summary>A co-worker of mine (the incomparable Yohei Manabe) was looking at
some disassembled ARM code the other day, and discovered something
weird. Lots of d4d4 instructions, scattered about. LLVM’s objdump
says this is a relative branch to -0x58. The weird part is that
they were always unreachable.</summary>
    <category term="programming" label="programming"/>
    <published>2025-05-11T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/prn/</id>
    <title>Magic File Names</title>
    <updated>2025-05-10T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/prn/"/>
    <summary>A co-worker discovered an amazing thing the other day. He needed to
check out our codebase on a Windows machine (for real, not inside WSL)
to do something model-y with Matlab. It’s worked before, and it looked
like it was going fine until he got this error:</summary>
    <category term="programming" label="programming"/>
    <published>2025-05-10T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/immigration/immigrant/</id>
    <title>Immigration</title>
    <updated>2025-04-13T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/immigration/immigrant/"/>
    <summary>Sometimes people ask me questions about what it’s like living in a
different country. The Netherlands is not all that different from the
US, as these things go, but it’s still different enough. This is a
collection of things I miss from life in Boston and things that make
this place feel foreign.</summary>
    <category term="life" label="life"/>
    <published>2025-04-13T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/simple-syndication/</id>
    <title>Really Simple Syndication</title>
    <updated>2025-04-06T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/simple-syndication/"/>
    <summary>If you don’t already, you should use an RSS(/Atom) reader.</summary>
    <category term="technology" label="technology"/>
    <published>2025-04-06T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/notebook/</id>
    <title>Notebooks</title>
    <updated>2025-03-01T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/notebook/"/>
    <summary>First, context. Skip to the next section for the important bit.</summary>
    <category term="organization" label="organization"/>
    <published>2025-03-01T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/design/toothbrush/</id>
    <title>Electric Toothbrushes</title>
    <updated>2025-02-16T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/design/toothbrush/"/>
    <summary>I’ve got an electric toothbrush. We had a very similar one before
leaving the US, but since it wasn’t rated for 240V AC, we got a new
one after arriving here.</summary>
    <category term="design" label="design"/>
    <published>2025-02-16T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/econ/gorging/</id>
    <title>Gorging</title>
    <updated>2024-04-28T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/econ/gorging/"/>
    <summary>When I tried to search for the demand version of dumping, I found a
lot of articles about regular dumping. A few of those had good
definitions, so here’s one:</summary>
    <category term="economics" label="economics"/>
    <published>2024-04-28T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/do-not-lie/</id>
    <title>Don’t Lie To Your Build System</title>
    <updated>2024-04-14T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/do-not-lie/"/>
    <summary>Yesterday, in make, I talked about what Make does. Today, I’m
going to talk about how Make gets abused.</summary>
    <category term="make" label="make"/>
    <category term="programming" label="programming"/>
    <published>2024-04-14T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/make/</id>
    <title>Make Concepts</title>
    <updated>2024-04-13T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/make/"/>
    <summary>There are many resources out there for how to use make and some of them are
very good. However, they mostly focus on details of syntax and how to
spell the different text manipulation functions. This document is not
that. This document is about why Make is the way it is, and how to
help it do its job.</summary>
    <category term="make" label="make"/>
    <category term="programming" label="programming"/>
    <published>2024-04-13T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/zig/why/</id>
    <title>Why I like Zig</title>
    <updated>2024-02-11T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/zig/why/"/>
    <summary>I’ve been writing C code professionally since about 2006, and while I
look at a lot of languages (I have varying levels of familiarity with
Python, Erlang, Ada, Haskell, Go, Rust, C++, OCaml, D, Javascript,
Prolog, Lua, Lisp, Bash, Perl, Forth…you get the idea) I have yet to
find one that I would rather use in cases where C is appropriate. Part
of this inclination is that I mainly write for embedded systems where
a lot of the features of higher level languages either don’t help or
cost too much.</summary>
    <category term="programming" label="programming"/>
    <category term="zig" label="zig"/>
    <published>2024-02-11T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/zig/memory/</id>
    <title>Memory Management With Zig</title>
    <updated>2023-12-01T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/zig/memory/"/>
    <summary>This post is aimed at people who come from languages with automatic
garbage collection and want to get a sense for how to approach memory
management in a lower level language. I’ll be using Zig (and a bit of
Python) to demonstrate, but the concepts apply to C and other
languages where you have to care if your data is going on the stack or
the heap.</summary>
    <category term="programming" label="programming"/>
    <category term="zig" label="zig"/>
    <published>2023-12-01T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/zig/pointers/</id>
    <title>Pointers in Zig</title>
    <updated>2020-12-18T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/zig/pointers/"/>
    <summary>This post is going to explain how pointers, arrays, and slices work in
Zig, without depending on knowledge of other languages that use
pointers. If you’re trying to learn Zig and your only programming
experience is in a language with managed memory, this is for you. If
you’re struggling to understand pointers in C, this might help. If
you’re coming from C or C++ and just want to know the differences, you
might be better off reading the official documentation for arrays, slices,
and pointers. zig.guide is
another good resource.</summary>
    <category term="programming" label="programming"/>
    <category term="zig" label="zig"/>
    <published>2020-12-18T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/zig/c-library/</id>
    <title>Extending C with Zig</title>
    <updated>2020-12-18T00:00:00+01:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/zig/c-library/"/>
    <summary>This guide was last updated in July of 2026 with an 0.17.0-dev
build. Zig is a moving target, and stuff written about it may fall
out of date. If you find something broken about this, feel free to
let me know.</summary>
    <category term="programming" label="programming"/>
    <category term="zig" label="zig"/>
    <published>2020-12-18T00:00:00+01:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/zig/interfaces/</id>
    <title>Interfaces, or: Runtime Polymorphism in Zig</title>
    <updated>2020-06-26T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/zig/interfaces/"/>
    <summary>Update: April 2024 - A lot has happened since I originally wrote this
article. I may still update it in to cover the current state of
things, but Killian Vounckx wrote an update
in February of 2022 and Issue 130 has been closed. I’m not
porting the original version of this article to the Sphinx site, so if
you want to read it, you can find it here.</summary>
    <category term="programming" label="programming"/>
    <category term="zig" label="zig"/>
    <published>2020-06-26T00:00:00+02:00</published>
  </entry>
  <entry>
    <id>https://www.nmichaels.org/musings/zig/wrap-sodium/</id>
    <title>Wrapping a C Library with Zig</title>
    <updated>2020-06-13T00:00:00+02:00</updated>
    <author>
      <name>Nathan</name>
    </author>
    <link href="https://www.nmichaels.org/musings/zig/wrap-sodium/"/>
    <summary>This post is going to look at wrapping a C library in Zig. The library
to wrap will be libsodium, a “modern, easy-to-use software library for
encryption, decryption, signatures, password hashing and more.”</summary>
    <category term="programming" label="programming"/>
    <category term="zig" label="zig"/>
    <published>2020-06-13T00:00:00+02:00</published>
  </entry>
</feed>
