<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ryan Hunt's Blog</title><link>https://eqrion.net/</link><description>Recent content on Ryan Hunt's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 07 Jul 2026 09:00:00 -0600</lastBuildDate><atom:link href="https://eqrion.net/index.xml" rel="self" type="application/rss+xml"/><item><title>Just Keep At It: A Decade at Mozilla</title><link>https://eqrion.net/ten-years-at-mozilla/</link><pubDate>Tue, 07 Jul 2026 09:00:00 -0600</pubDate><guid>https://eqrion.net/ten-years-at-mozilla/</guid><description>&lt;p&gt;Well, that went by quick!&lt;/p&gt;
&lt;p&gt;I joined Mozilla as an intern in 2016. I wouldn&amp;rsquo;t believe you if you told me I&amp;rsquo;d still be here in 2026, working on their WebAssembly engine and contributing to the WebAssembly standards process.&lt;/p&gt;
&lt;p&gt;Ten years at one company is a long time in this industry. I&amp;rsquo;m feeling a bit sentimental, so I thought I&amp;rsquo;d share how that happened, and why I&amp;rsquo;m still here.&lt;/p&gt;</description></item><item><title>Saying goodbye to asm.js</title><link>https://eqrion.net/saying-goodbye-to-asmjs/</link><pubDate>Wed, 20 May 2026 09:00:00 -0600</pubDate><guid>https://eqrion.net/saying-goodbye-to-asmjs/</guid><description>&lt;p&gt;I wrote a &lt;a href="https://spidermonkey.dev/blog/2026/05/20/saying-goodbye-to-asmjs.html"&gt;post on the SpiderMonkey blog&lt;/a&gt; about retiring asm.js now that WebAssembly has taken its place.&lt;/p&gt;</description></item><item><title>Why is WebAssembly a second-class language on the web?</title><link>https://eqrion.net/webassembly-second-class-language/</link><pubDate>Thu, 26 Feb 2026 09:00:00 -0600</pubDate><guid>https://eqrion.net/webassembly-second-class-language/</guid><description>&lt;p&gt;I wrote a &lt;a href="https://hacks.mozilla.org/2026/02/making-webassembly-a-first-class-language-on-the-web/"&gt;piece for Mozilla Hacks&lt;/a&gt; on why WebAssembly is a second-class citizen on the Web.&lt;/p&gt;</description></item><item><title>JS String Builtins on the WasmAssembly podcast</title><link>https://eqrion.net/wasmassembly-podcast/</link><pubDate>Mon, 05 Aug 2024 09:00:00 -0600</pubDate><guid>https://eqrion.net/wasmassembly-podcast/</guid><description>&lt;p&gt;I sat down with Thomas Steiner on the &lt;a href="https://www.youtube.com/watch?v=ZDmHGKKSWPQ"&gt;WasmAssembly podcast&lt;/a&gt; to talk about the &lt;a href="https://github.com/webassembly/js-string-builtins"&gt;JS String builtins&lt;/a&gt; proposal and how I ended up on the SpiderMonkey team.&lt;/p&gt;</description></item><item><title>Panel Discussion: Browsers &amp; Wasm at WasmCon 2023</title><link>https://eqrion.net/wasmcon-2023-panel/</link><pubDate>Wed, 06 Sep 2023 09:00:00 -0600</pubDate><guid>https://eqrion.net/wasmcon-2023-panel/</guid><description>&lt;p&gt;I joined a panel at WasmCon 2023 alongside Conrad Watt, Adam Klein, David Degazio, and Bailey Hayes to talk about the state of WebAssembly in browsers.&lt;/p&gt;
&lt;p&gt;Check out the recording &lt;a href="https://www.youtube.com/watch?v=x6X2-UUxEZM"&gt;on YouTube&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>A tour of compiling a WebAssembly Module</title><link>https://eqrion.net/web-engines-hackfest-2021/</link><pubDate>Wed, 05 May 2021 09:00:00 -0600</pubDate><guid>https://eqrion.net/web-engines-hackfest-2021/</guid><description>&lt;p&gt;I gave a talk at the &lt;a href="https://webengineshackfest.org/2021/"&gt;2021 Web Engines Hackfest&lt;/a&gt; on how SpiderMonkey compiles a &lt;code&gt;WebAssembly.Module&lt;/code&gt;, covering compiler tier selection, streaming parallel compilation, background tier-up, lazy stubs, and code caching.&lt;/p&gt;
&lt;p&gt;You can watch the recording &lt;a href="https://www.youtube.com/watch?v=lnGj_3E2yBs"&gt;on YouTube&lt;/a&gt; or check out the &lt;a href="https://webengineshackfest.org/2021/slides/a-tour-of-compiling-a-webassembly-module-by-ryan-hunt.pdf"&gt;slides&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Implementing a pin-to-bottom scrolling element with only CSS</title><link>https://eqrion.net/pin-to-bottom/</link><pubDate>Thu, 28 Mar 2019 05:08:02 -0600</pubDate><guid>https://eqrion.net/pin-to-bottom/</guid><description>&lt;p&gt;Have you ever tried implementing a scrollable element where new content is being added and you want to pin the user to the bottom? It&amp;rsquo;s not trival to do correctly.&lt;/p&gt;
&lt;p&gt;I recently worked on a new CSS feature called &amp;lsquo;scroll anchoring&amp;rsquo; that shipped in &lt;a href="https://www.mozilla.org/en-US/firefox/66.0/releasenotes/"&gt;Firefox 66&lt;/a&gt; (for an introduction, check out my post on &lt;a href="https://hacks.mozilla.org/2019/03/scroll-anchoring-in-firefox-66/"&gt;Mozilla Hacks&lt;/a&gt; or the summary on &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/overflow-anchor/Guide_to_scroll_anchoring"&gt;MDN&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;While implementing this feature, &lt;a href="https://twitter.com/nicolaschevobbe"&gt;Nicolas Chevobbe&lt;/a&gt; and I were debugging an issue and discovered that scroll anchoring can be used to create a pin-to-bottom scrolling element without any Javascript.&lt;/p&gt;
&lt;p&gt;It&amp;rsquo;s a neat trick, so I thought I&amp;rsquo;d post the snippet here and explain how it works.&lt;/p&gt;</description></item><item><title>Scroll Anchoring in Firefox 66</title><link>https://eqrion.net/scroll-anchoring/</link><pubDate>Thu, 28 Mar 2019 05:07:02 -0600</pubDate><guid>https://eqrion.net/scroll-anchoring/</guid><description>&lt;p&gt;I wrote an &lt;a href="https://hacks.mozilla.org/2019/03/scroll-anchoring-in-firefox-66/"&gt;article&lt;/a&gt; about the work on scroll anchoring that I did for Firefox 66.&lt;/p&gt;
&lt;p&gt;Check it out!&lt;/p&gt;</description></item><item><title>Updated Blog</title><link>https://eqrion.net/updated-blog/</link><pubDate>Wed, 26 Dec 2018 21:52:02 -0600</pubDate><guid>https://eqrion.net/updated-blog/</guid><description>&lt;p&gt;I’ve been intending to write some new content on my blog, so I thought I should also update the site while I’m at it.&lt;/p&gt;
&lt;h3 id="https"&gt;&lt;code&gt;Https&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The first and most important change is &lt;code&gt;https&lt;/code&gt; support. I’ve been a bit lazy here, but I finally decided to just do it.&lt;/p&gt;
&lt;p&gt;This site is hosted on AWS as a &lt;a href="https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html"&gt;static website&lt;/a&gt;. I followed this nice &lt;a href="https://medium.com/@sbuckpesch/setup-aws-s3-static-website-hosting-using-ssl-acm-34d41d32e394"&gt;guide&lt;/a&gt; which describes how to use Cloudfront as a CDN for S3 to get &lt;code&gt;https&lt;/code&gt; support.&lt;/p&gt;</description></item><item><title>EdgeHTML and control of the web platform</title><link>https://eqrion.net/edgehtml/</link><pubDate>Mon, 10 Dec 2018 08:08:20 -0500</pubDate><guid>https://eqrion.net/edgehtml/</guid><description>&lt;p&gt;There&amp;rsquo;s been a lot of discussion this past week around Microsoft&amp;rsquo;s decision to abandon EdgeHTML and its implication on the future of the Web.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;ve missed this news, take a look at this post by &lt;a href="https://blogs.windows.com/windowsexperience/2018/12/06/microsoft-edge-making-the-web-better-through-more-open-source-collaboration/"&gt;Microsoft&lt;/a&gt; and this response by &lt;a href="https://blog.mozilla.org/blog/2018/12/06/goodbye-edge/"&gt;Mozilla&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Future directions for cbindgen (rust-ffi)</title><link>https://eqrion.net/future-directions-for-cbindgen/</link><pubDate>Fri, 05 Oct 2018 08:08:20 -0500</pubDate><guid>https://eqrion.net/future-directions-for-cbindgen/</guid><description>&lt;link href="https://eqrion.net/css/prism.css" rel="stylesheet" /&gt;
&lt;script src="https://eqrion.net/js/prism.js"&gt;&lt;/script&gt;
&lt;p&gt;It&amp;rsquo;s been over a year since I first wrote about &lt;a href="https://github.com/eqrion/cbindgen"&gt;&lt;code&gt;cbindgen&lt;/code&gt;&lt;/a&gt;. A lot has happened since then.&lt;/p&gt;
&lt;p&gt;We&amp;rsquo;ve had a few new features added (&lt;a href="https://twitter.com/Gankro/status/958071737492627457"&gt;tagged enums!&lt;/a&gt;), it&amp;rsquo;s seen some good use (&lt;a href="https://crates.io/crates/cbindgen"&gt;25k all time downloads!&lt;/a&gt;), and there was a talk given at a &lt;a href="https://youtu.be/-IQ62T0bllw?t=5631"&gt;rust berlin meetup&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;This project started out as a quick fix for a problem we were facing at Mozilla. I thought others might find it useful so I open sourced it. It&amp;rsquo;s the first time I&amp;rsquo;ve ever ran an open source project, and I&amp;rsquo;ve learned a lot.&lt;/p&gt;
&lt;p&gt;To this day, I&amp;rsquo;m continually surprised to see people using this tool and going through the effort to improve it. To everyone who&amp;rsquo;s helped out, thank you!&lt;/p&gt;
&lt;p&gt;There is one issue I&amp;rsquo;d like to write about though.&lt;/p&gt;</description></item><item><title>Generating C bindings for Rust crates with cbindgen</title><link>https://eqrion.net/announcing-cbindgen/</link><pubDate>Wed, 30 Aug 2017 21:51:26 -0500</pubDate><guid>https://eqrion.net/announcing-cbindgen/</guid><description>&lt;p&gt;Rust is a great language for doing tasks normally done in C/C++. While it has a minimal runtime and zero-cost abstractions, it also has guaranteed memory safety and high level language features that make programming easier.&lt;/p&gt;
&lt;p&gt;Another neat thing about Rust is its ability to have a C FFI. Rust can be used to rewrite parts of an existing C/C++ application without having to rewrite the whole thing.&lt;/p&gt;
&lt;p&gt;This means that you can get some of the benefits of Rust, without having to rewrite the whole world (which is often infeasible and tends to introduce new bugs).&lt;/p&gt;</description></item><item><title>Solving Wordament Boards in Rust</title><link>https://eqrion.net/solving-wordament/</link><pubDate>Wed, 06 Apr 2016 21:51:26 -0500</pubDate><guid>https://eqrion.net/solving-wordament/</guid><description>&lt;p&gt;After a short break from coding for school, I finally got enough free time to finish a project. One of my favorite puzzle games is game called &lt;a href="http://www.wordament.com/"&gt;Wordament&lt;/a&gt;. It&amp;rsquo;s a bit old now, but it still has an active community. The game is like Boggle, you get points for building a word across tiles.&lt;/p&gt;
&lt;p&gt;To be honest, I&amp;rsquo;m not very good at it. So I thought, why not write a program to give me some answers? So I did. I know that there are other solvers out there, but I just thought it&amp;rsquo;d be fun to hack together.&lt;/p&gt;</description></item><item><title>Dash, a simple programming language written in C</title><link>https://eqrion.net/dash-lang/</link><pubDate>Wed, 12 Aug 2015 21:51:26 -0500</pubDate><guid>https://eqrion.net/dash-lang/</guid><description>&lt;p&gt;In my spare time this summer I set out to write a programming language from scratch. I&amp;rsquo;ve always been interested in learning about how programming languages worked, and sometimes the best way to learn something is to get your hands dirty. So after quite a few nights of work, I created &lt;a href="https://github.com/eqrion/dash/"&gt;Dash&lt;/a&gt;, a very simple procedural language, virtual machine, and bytecode.&lt;/p&gt;
&lt;p&gt;Dash is nothing extraordinary. It won&amp;rsquo;t be the next Python or Javascript. But it was a great learning experience and is pretty cool. I thought it would neat if others could see the end result, so I&amp;rsquo;ve hooked up a web server to run the compiler and virtual machine.&lt;/p&gt;</description></item><item><title>Reliable Networking with a Sliding Window Protocol</title><link>https://eqrion.net/reliable-networking/</link><pubDate>Sun, 15 Feb 2015 21:51:26 -0500</pubDate><guid>https://eqrion.net/reliable-networking/</guid><description>&lt;p&gt;I&amp;rsquo;ve always been interested in how networking protocols work, and how they can be reliable and also efficient. After some reading, I decided the best way to learn about it would be for me to have to write one.&lt;/p&gt;
&lt;p&gt;It turned out to be much more difficult than I anticipated, and I only really &amp;lsquo;got&amp;rsquo; the idea on my third try.&lt;/p&gt;
&lt;p&gt;If you do research on this topic, you&amp;rsquo;ll find guides that describe all the important ideas, such as &lt;a href="https://en.wikipedia.org/wiki/Automatic_repeat_request"&gt;ARQ&amp;rsquo;s&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/Sliding_window_protocol"&gt;sliding window protocols&lt;/a&gt;, and they do a good job at describing the general idea of what they accomplish and how. But all the references I found used very opaque terminology and didn&amp;rsquo;t go into enough detail to actually implement the protocols.&lt;/p&gt;
&lt;p&gt;This was especially true for Sliding Window Protocols. I wrote this to try and provide an end to end guide on how some reliable networking protocols operate. It goes into enough depth to cover most of the implementation details that arise, but code is not actually discussed.&lt;/p&gt;
&lt;p&gt;If you are looking for code, the c++ library created along with this article can be found &lt;a href="https://github.com/eqrion/netmod"&gt;here&lt;/a&gt;. Hopefully this will provide some help for anyone else seeking to do this in the future!&lt;/p&gt;</description></item><item><title>About</title><link>https://eqrion.net/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://eqrion.net/about/</guid><description>&lt;p&gt;My name is Ryan Hunt. I&amp;rsquo;m a software engineer at &lt;a href="https://mozilla.org"&gt;Mozilla&lt;/a&gt;. I currently work on &lt;a href="https://webassembly.org/"&gt;WebAssembly&lt;/a&gt; and &lt;a href="https://spidermonkey.dev/"&gt;SpiderMonkey&lt;/a&gt;, and previously worked on graphics and process isolation.&lt;/p&gt;
&lt;p&gt;You can find me on &lt;a href="https://github.com/eqrion"&gt;GitHub&lt;/a&gt;, or follow me on &lt;a href="https://social.eqrion.net/@ryan"&gt;Mastodon&lt;/a&gt;, &lt;a href="https://bsky.app/profile/eqrion.bsky.social"&gt;Bluesky&lt;/a&gt;, or &lt;a href="https://x.com/eqrion/"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="projects"&gt;Projects&lt;/h2&gt;
&lt;p&gt;Every once in a while I also get to work on a side project. Sometimes it&amp;rsquo;s interesting enough to put online!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eqrion.github.io/wasm-explorer"&gt;wasm-explorer&lt;/a&gt; - a tool for exploring WebAssembly compiler output&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/eqrion/cbindgen"&gt;cbindgen&lt;/a&gt; - A project for generating C/C++ bindings for Rust code&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/eqrion/wordament"&gt;wordament&lt;/a&gt; - A cracker for wordament boards written in Rust&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/eqrion/dash"&gt;dash&lt;/a&gt; - an end to end implementation of a programming language and companion vm, written in C&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/eqrion/netmod"&gt;netmod&lt;/a&gt; - C++ reliable networking protocol experiment&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/eqrion/sensor"&gt;sensor&lt;/a&gt; - a C software rasterizer experiment&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The source for all of my projects can be found on &lt;a href="https://github.com/eqrion"&gt;Github&lt;/a&gt;. This site is made with &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt;, and you can view the source &lt;a href="https://github.com/eqrion/this"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>