<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Jake&#39;s Blog</title>
    <link>https://www.jakef.science/</link>
    <description>Recent content on Jake&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 28 Apr 2024 17:53:43 -0400</lastBuildDate>
    <atom:link href="https://www.jakef.science/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Microcorruption Mania</title>
      <link>https://www.jakef.science/posts/microcorruption-mania/</link>
      <pubDate>Sun, 28 Apr 2024 17:53:43 -0400</pubDate>
      <guid>https://www.jakef.science/posts/microcorruption-mania/</guid>
      <description>At first, Microcorruption was just a diversion. Whenever I was bored with my main project, I could spend a few hours on a fun puzzle, learn about buffer overflows, and get a nice hit of endorphins when I solved it. But as the levels became more involved I got sucked in deeper. I would start first thing in the morning, racing against the clock because I wouldn&amp;rsquo;t be able to fall sleep until I solved it.</description>
    </item>
    <item>
      <title>A Recurse Center Return Statement</title>
      <link>https://www.jakef.science/posts/return-statement/</link>
      <pubDate>Thu, 11 Apr 2024 15:22:32 -0400</pubDate>
      <guid>https://www.jakef.science/posts/return-statement/</guid>
      <description>I recent completed 18 weeks at the Recurse Center, &amp;ldquo;the retreat where curious programmers recharge and grow&amp;rdquo;. It&amp;rsquo;s customary to write a Return Statement1 reflecting on your experience. Here&amp;rsquo;s mine.&#xA;My vague goal when I started RC was to learn &amp;ldquo;how computers work&amp;rdquo; at a basic level. I wanted to explore topics in security and low-level systems, and I wanted to stretch my abilities in thinking adversarially, being creative, and designing software.</description>
    </item>
    <item>
      <title>SIMD &#43; Parallelism: Ray Tracer Optimization Part 3</title>
      <link>https://www.jakef.science/posts/simd-parallelism/</link>
      <pubDate>Fri, 29 Mar 2024 13:24:38 -0400</pubDate>
      <guid>https://www.jakef.science/posts/simd-parallelism/</guid>
      <description>Ok, so I sort of buried the lede in the last post: after removing recursion the ray tracer renders the image in 37 seconds, a long ways from the 3+ hours we started with. By the end of this post it will get down to 24.7 seconds, a ~500x overall speedup. The main changes that led to this are:&#xA;Improvement Speedup Compiler optimization flag 15x Multithreading 6.2x SIMD 2.4x Recursion 1.</description>
    </item>
    <item>
      <title>A Recursion Riddle: Ray Tracing Optimization Part 2</title>
      <link>https://www.jakef.science/posts/recursion-riddle/</link>
      <pubDate>Mon, 25 Mar 2024 17:20:08 -0400</pubDate>
      <guid>https://www.jakef.science/posts/recursion-riddle/</guid>
      <description>Since I learned about compiler optimization levels, I&amp;rsquo;ve gone down a deep rabbit hole of CPU performance optimization to make this ray tracer faster. I&amp;rsquo;ve implemented multi-threading and SIMD. I&amp;rsquo;ve learned about instruction-level-parallelism and CPU pipelines and memory hierarchy. I&amp;rsquo;ve read instruction timing tables and disassembled and reassembled.&#xA;I&amp;rsquo;ve made a lot of changes that I thought were really clever but instead made my program slower. I&amp;rsquo;ve also made some changes that I didn&amp;rsquo;t think would make a difference but led to significant gains.</description>
    </item>
    <item>
      <title>gcc -wtf: Optimizing my Ray Tracer, Part I</title>
      <link>https://www.jakef.science/posts/gcc-wtf/</link>
      <pubDate>Fri, 22 Mar 2024 21:47:16 -0400</pubDate>
      <guid>https://www.jakef.science/posts/gcc-wtf/</guid>
      <description>Inspired by others at the Recurse Center, I recently built a ray tracer by working through the excellent book Ray Tracing in a Weekend. I&amp;rsquo;ve been learning C and was attracted to this project because it was complex enough to be interesting but small enough to be time-constrained (my implementation is ~1,000 lines of code); there&amp;rsquo;s minimal dependencies so I can focus on learning C instead of learning APIs; and the end result is a pretty picture:</description>
    </item>
    <item>
      <title>About</title>
      <link>https://www.jakef.science/about/</link>
      <pubDate>Mon, 11 Mar 2024 22:30:02 -0400</pubDate>
      <guid>https://www.jakef.science/about/</guid>
      <description>Hi, I&amp;rsquo;m Jake. I&amp;rsquo;m an aspiring security professional, an experienced data scientist, and a former physicist. I like backpacking and bikes and I have two funny cats.</description>
    </item>
    <item>
      <title>Starting Up</title>
      <link>https://www.jakef.science/posts/starting-up/</link>
      <pubDate>Mon, 11 Mar 2024 19:00:00 -0500</pubDate>
      <guid>https://www.jakef.science/posts/starting-up/</guid>
      <description>I&amp;rsquo;ve never written anything on the internet before. Sure I&amp;rsquo;ve sent emails, but I&amp;rsquo;ve never had a website or blog and I don&amp;rsquo;t post on forums or social media (I&amp;rsquo;m perhaps the only former Twitter employee who has never sent a tweet). I&amp;rsquo;ve just never had much to say that hadn&amp;rsquo;t already been said. And 2024 feels like a weird time to start a blog, given how the internet works these days.</description>
    </item>
  </channel>
</rss>
