<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>A. H. Zakai&apos;s Blog</title>
    <description>Compiling to the Web, Emscripten, Binaryen, WebAssembly, etc.
</description>
    <link>http://kripken.github.io/blog/</link>
    <atom:link href="http://kripken.github.io/blog/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 02 May 2026 14:54:26 +0000</pubDate>
    <lastBuildDate>Sat, 02 May 2026 14:54:26 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>My &quot;A House of Dynamite&quot; Ending</title>
        <description>&lt;p&gt;(&lt;em&gt;Massive spoilers below for &lt;a href=&quot;https://en.wikipedia.org/wiki/A_House_of_Dynamite&quot;&gt;A House of Dynamite&lt;/a&gt;&lt;/em&gt;)&lt;/p&gt;

</description>
        <pubDate>Mon, 03 Nov 2025 07:00:00 +0000</pubDate>
        <link>http://kripken.github.io/blog/movies/2025/11/03/dynamite-end.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/movies/2025/11/03/dynamite-end.html</guid>
        
        
        <category>movies</category>
        
      </item>
    
      <item>
        <title>When is an Alien NOT an Alien?</title>
        <description>&lt;p&gt;&lt;em&gt;(spoilers for&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Alien: Earth&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;Season 1 and the rest of the franchise)&lt;/em&gt;&lt;/p&gt;

</description>
        <pubDate>Sun, 28 Sep 2025 07:00:00 +0000</pubDate>
        <link>http://kripken.github.io/blog/scifi/2025/09/28/alien.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/scifi/2025/09/28/alien.html</guid>
        
        
        <category>scifi</category>
        
      </item>
    
      <item>
        <title>My Game of Thrones Ending</title>
        <description>&lt;p&gt;Sometimes, when a TV show is almost complete, I write up how I would end it. Then I watch the final season or episode, and compare. Usually the show is much better! But, in my personal opinion, I prefer my own ending to Game of Thrones, and that is what is written up here.&lt;/p&gt;

</description>
        <pubDate>Sun, 31 Aug 2025 07:00:00 +0000</pubDate>
        <link>http://kripken.github.io/blog/fantasy/2025/08/31/got-end.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/fantasy/2025/08/31/got-end.html</guid>
        
        
        <category>fantasy</category>
        
      </item>
    
      <item>
        <title>WasmBoxC&amp;colon; Simple, Easy, and Fast VM-less Sandboxing</title>
        <description>&lt;p&gt;The software ecosystem has a lot of useful but unsafe code, and the easier it is to sandbox that code, the more
often that’ll happen. If it were as simple as passing the compiler a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--sandbox&lt;/code&gt; flag
that makes an unsafe library unable to see or affect anything
outside of it, that would be incredible! We can’t get it quite that easy,
but this post describes &lt;strong&gt;WasmBoxC&lt;/strong&gt;, a sandboxing approach that is
very simple to use. All you need to do is:&lt;/p&gt;

</description>
        <pubDate>Mon, 27 Jul 2020 07:00:00 +0000</pubDate>
        <link>http://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/wasm/2020/07/27/wasmboxc.html</guid>
        
        
        <category>wasm</category>
        
      </item>
    
      <item>
        <title>Pause and Resume WebAssembly with Binaryen&apos;s Asyncify</title>
        <description>&lt;p&gt;Pausing and resuming code can be useful for various things, like implementing &lt;a href=&quot;https://en.wikipedia.org/wiki/Coroutine&quot;&gt;coroutines&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Async/await&quot;&gt;async/await&lt;/a&gt;, limiting how much CPU time untrusted code gets, and so forth. If you are customizing a WebAssembly VM then you have various ways to instrument the compiled code to do this. On the other hand, if you want to do this in “userspace”, that is, if you are running inside of a standard WebAssembly VM and you want to transform some WebAssembly so that it can be paused and resumed, then Binaryen’s &lt;a href=&quot;https://github.com/WebAssembly/binaryen/blob/master/src/passes/Asyncify.cpp&quot;&gt;Asyncify&lt;/a&gt; provides a solution. For example, you can use it to pause and resume WebAssembly that you run on the Web. If you have some synchronous code that you need to be asynchronous, but it’s hard to rewrite, then Asyncify can do that for you automatically!&lt;/p&gt;

</description>
        <pubDate>Tue, 16 Jul 2019 17:52:56 +0000</pubDate>
        <link>http://kripken.github.io/blog/wasm/2019/07/16/asyncify.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/wasm/2019/07/16/asyncify.html</guid>
        
        
        <category>wasm</category>
        
      </item>
    
      <item>
        <title>Fuzzers &amp; Reducers as Productivity Tools</title>
        <description>&lt;p&gt;Fuzzers generate random testcases in order to find interesting ones, like an input that causes a crash, and reducers take interesting testcases and find equally-interesting ones which are smaller and easier to debug. Fuzzers in particular are extremely important to modern software security, with massive amounts of fuzzing going into hardening important codebases like web browsers. But aside from background and introduction, this post is &lt;strong&gt;NOT&lt;/strong&gt; about that stuff! Instead, it’ll talk about how fuzzers and reducers can be good for &lt;strong&gt;developer productivity&lt;/strong&gt;, that is, helping programmers - most obviously compiler developers, but maybe others. Specifically, I’ll talk about how I use the &lt;a href=&quot;https://github.com/WebAssembly/binaryen/&quot;&gt;Binaryen&lt;/a&gt; fuzzer and reducer.&lt;/p&gt;

</description>
        <pubDate>Tue, 11 Jun 2019 17:52:56 +0000</pubDate>
        <link>http://kripken.github.io/blog/binaryen/2019/06/11/fuzz-reduce-productivity.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/binaryen/2019/06/11/fuzz-reduce-productivity.html</guid>
        
        
        <category>binaryen</category>
        
      </item>
    
      <item>
        <title>Small WebAssembly Binaries with Rust + Emscripten</title>
        <description>&lt;p&gt;The Rust language is one of the earliest adopters of WebAssembly, and it has more than one way to compile to it:&lt;/p&gt;

</description>
        <pubDate>Wed, 18 Apr 2018 17:52:56 +0000</pubDate>
        <link>http://kripken.github.io/blog/binaryen/2018/04/18/rust-emscripten.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/binaryen/2018/04/18/rust-emscripten.html</guid>
        
        
        <category>binaryen</category>
        
      </item>
    
      <item>
        <title>A Silly Binaryen Optimization</title>
        <description>&lt;p&gt;The &lt;a href=&quot;https://github.com/WebAssembly/binaryen&quot;&gt;Binaryen&lt;/a&gt; optimizer compiles wasm to better (smaller, faster) wasm. A lot of the &lt;a href=&quot;https://github.com/WebAssembly/binaryen/tree/master/src/passes&quot;&gt;optimizations&lt;/a&gt; it has are very specific to WebAssembly, which is maybe not surprising since wasm is an ‘odd’ compiler target in many ways. So many of the optimization tricks are also odd!&lt;/p&gt;

</description>
        <pubDate>Fri, 13 Apr 2018 17:52:56 +0000</pubDate>
        <link>http://kripken.github.io/blog/binaryen/2018/04/13/a-silly-optimization.html</link>
        <guid isPermaLink="true">http://kripken.github.io/blog/binaryen/2018/04/13/a-silly-optimization.html</guid>
        
        
        <category>binaryen</category>
        
      </item>
    
  </channel>
</rss>

