<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Rhys Rustad‑Elliott</title><link>https://rhysre.net/</link><description/><atom:link href="https://rhysre.net/feeds/all.rss.xml" rel="self"/><lastBuildDate>Wed, 31 Aug 2022 00:00:00 -0700</lastBuildDate><item><title>How an Obscure ARM64 Link Option Broke Our BPF Probe</title><link>https://rhysre.net/how-an-obscure-arm64-link-option-broke-our-bpf-probe.html</link><description>&lt;p&gt;Here's a fun debugging story involving a quick-to-find proximate cause and a
dreadful-to-find root cause.&lt;/p&gt;
&lt;p&gt;Here at Elastic, we use &lt;a href="https://ebpf.io/"&gt;eBPF&lt;/a&gt; (often known less officially
as simply BPF) to gather security-related events on Linux for our &lt;a href="https://www.elastic.co/security/cloud-security"&gt;cloud
security&lt;/a&gt; solution. To
accomplish this, we hook into a variety of points in …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Wed, 31 Aug 2022 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2022-08-31:/how-an-obscure-arm64-link-option-broke-our-bpf-probe.html</guid><category>articles</category></item><item><title>The Curious Incident of the -EINVAL in the libbpf</title><link>https://rhysre.net/the-curious-incident-of-the-einval-in-the-libbpf.html</link><description>&lt;blockquote&gt;
&lt;p&gt;"Is there any point to which you would wish to draw my attention?" &lt;br/&gt;
"To the curious incident of the libbpf in the night-time." &lt;br/&gt;
"The libbpf returned &lt;code&gt;-EINVAL&lt;/code&gt; in the night-time." &lt;br/&gt;
"That was the curious incident," remarked &lt;a href="https://en.wikipedia.org/wiki/The_Adventure_of_Silver_Blaze"&gt;Sherlock
Holmes&lt;/a&gt;. &lt;br/&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Recently at work, we found ourselves trying to diagnose a persistent bug …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Thu, 01 Jul 2021 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2021-07-01:/the-curious-incident-of-the-einval-in-the-libbpf.html</guid><category>articles</category></item><item><title>A Heisenbug of My Own Creation</title><link>https://rhysre.net/a-heisenbug-of-my-own-creation.html</link><description>&lt;p&gt;In doing some work on a personal project today, I came across one of the
nastiest &lt;a href="https://en.wikipedia.org/wiki/Heisenbug"&gt;heisenbugs&lt;/a&gt; I've ever had
the displeasure of dealing with. In hindsight, the root-cause is obvious, but
it certainly wasn't a few hours ago when I was on the verge of drop-kicking my
laptop across …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Thu, 20 May 2021 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2021-05-20:/a-heisenbug-of-my-own-creation.html</guid><category>articles</category></item><item><title>Debugging a Slow VM on a 2007 Era Xeon</title><link>https://rhysre.net/debugging-a-slow-vm-on-a-2007-era-xeon.html</link><description>&lt;p&gt;Recently I've been involved in a project that requires a lot of kernel-space
work on Linux. This of course means frequent re-builds of the Linux kernel.
Taking about fifteen minutes for a build from scratch on my laptop, this
provided &lt;a href="https://xkcd.com/303/"&gt;too many opportunities to justify slacking
off&lt;/a&gt;, and I decided …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Mon, 17 Aug 2020 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2020-08-17:/debugging-a-slow-vm-on-a-2007-era-xeon.html</guid><category>articles</category></item><item><title>Writing Hello World in C Without the Dynamic Linker</title><link>https://rhysre.net/writing-hello-world-in-c-without-the-dynamic-linker.html</link><description>&lt;p&gt;As C/C++/Rust/OCaml/(insert other language usually compiled to native code here)
programmers, when writing code targeting Linux, our toolchains usually produce
as final output, a dynamically linked binary in the  &lt;a href="https://en.wikipedia.org/wiki/Executable_and_Linkable_Format"&gt;ELF
format&lt;/a&gt;. While
this covers almost all use cases when writing code meant to run in userspace …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Tue, 03 Sep 2019 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2019-09-03:/writing-hello-world-in-c-without-the-dynamic-linker.html</guid><category>articles</category></item><item><title>Fast Chess Move Generation With Magic Bitboards</title><link>https://rhysre.net/fast-chess-move-generation-with-magic-bitboards.html</link><description>&lt;p&gt;One of my larger personal projects is &lt;a href="https://github.com/GunshipPenguin/shallow-blue"&gt;a chess
engine&lt;/a&gt; called Shallow Blue
that's been under on and off development since I started it a few years ago.
Almost since I started writing Shallow Blue, &lt;a href="https://www.chessprogramming.org/Magic_Bitboards"&gt;magic
bitboards&lt;/a&gt; have been sitting
in the feature backlog. That changed the past few weeks …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Tue, 15 Jan 2019 00:00:00 -0800</pubDate><guid>tag:rhysre.net,2019-01-15:/fast-chess-move-generation-with-magic-bitboards.html</guid><category>articles</category></item><item><title>Running Altair BASIC on a Modern Computer, Part 3: Emulating a Teletype</title><link>https://rhysre.net/running-altair-basic-on-a-modern-computer-part-3-emulating-a-teletype.html</link><description>&lt;p&gt;In &lt;a href="https://rhysre.net/running-altair-basic-on-a-modern-computer-part-2-emulating-the-intel-8080.html"&gt;part two&lt;/a&gt; of this series, I
described my lib8080 library, which can be used to emulate an Intel 8080 CPU. In
this final post, we're going to use lib8080 to emulate an Altair 8800 connected
to a teletype machine and get Altair BASIC up and running.&lt;/p&gt;
&lt;p&gt;If you just …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Sun, 10 Jun 2018 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2018-06-10:/running-altair-basic-on-a-modern-computer-part-3-emulating-a-teletype.html</guid><category>articles</category></item><item><title>Running Altair BASIC on a Modern Computer, Part 2: Emulating the Intel 8080</title><link>https://rhysre.net/running-altair-basic-on-a-modern-computer-part-2-emulating-the-intel-8080.html</link><description>&lt;p&gt;As stated in &lt;a href="https://rhysre.net/running-altair-basic-on-a-modern-computer-part-1-background.html"&gt;part one&lt;/a&gt;, I decided to
write my 8080 emulation code as a library that could be used to emulate more
8080 based systems in the future. This post gives an overview of the Intel 8080
and then delves into the library and its implementation details. If you …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Tue, 05 Jun 2018 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2018-06-05:/running-altair-basic-on-a-modern-computer-part-2-emulating-the-intel-8080.html</guid><category>articles</category></item><item><title>Running Altair BASIC on a Modern Computer, Part 1: Background</title><link>https://rhysre.net/running-altair-basic-on-a-modern-computer-part-1-background.html</link><description>&lt;blockquote&gt;
&lt;p&gt;If any immediate problems with MITS software are encountered, feel free to
 give us a call at (505) 265-7553. The Software Department is at Ext. 3; and the
 joint authors of the ALTAIR BASIC Interpreter, Bill Gates, Paul Allen and Monte
 Davidoff, will be glad to assist you&lt;/p&gt;
&lt;p&gt;-- &lt;a href="https://rhysre.net/pdf/altair_basic_reference_manual.pdf"&gt;The ALTAIR …&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Rhys Rustad-Elliott</dc:creator><pubDate>Sun, 03 Jun 2018 00:00:00 -0700</pubDate><guid>tag:rhysre.net,2018-06-03:/running-altair-basic-on-a-modern-computer-part-1-background.html</guid><category>articles</category></item></channel></rss>