<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>UW PLSE Blog Posts</title>
        <link>https://uwplse.org/blog/</link>
        <atom:link href="https://uwplse.org/blog/feed.xml" rel="self" type="application/rss+xml" />
        <description>Blog posts from the researchers of the PLSE group at the University of Washington.</description>
        <lastBuildDate>2026-03-10T22:22:55+00:00</lastBuildDate>
        
        <item>
            <title>How To Work With LLMs Without Losing Your Mind</title>
            <link>
                /2026/03/10/llm-advice.html
            </link>
            <description>
                &lt;p&gt;LLMs are increasingly used in software engineering research as researchers explore ways to
    incorporate them into tools and traditional development workflows such as testing and
    verification.
My research for the past year or so has involved LLMs in one way or another,
    and I wanted to share some of the tips and tricks that have helped me keep what little
    remaining sanity I have...
            </description>
            <pubDate>2026-03-10T00:00:00+00:00</pubDate>
            <guid>
                /2026/03/10/llm-advice.html
            </guid>
        </item>
        
        <item>
            <title>Custom Data Structures in E-Graphs</title>
            <link>
                /2026/02/24/egglog-containers.html
            </link>
            <description>
                &lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/E-graph&quot;&gt;E-graphs&lt;/a&gt; are a data structure used to reason about program equivalence.
Combined with specialized algorithms they can be used to build optimizers or compilers. However,
their performance can struggle as the number of equivalent expressions explodes if we include on algebraic identities, such as
associativity, commutativity, and distributivi...
            </description>
            <pubDate>2026-02-24T00:00:00+00:00</pubDate>
            <guid>
                /2026/02/24/egglog-containers.html
            </guid>
        </item>
        
        <item>
            <title>When is a Verified Program Secure?</title>
            <link>
                /2026/02/16/verification-and-security.html
            </link>
            <description>
                &lt;p&gt;Early in my research trajectory, before I developed a narrower focus, I often told people at programming languages conferences that I worked on “security and programming languages”.
The most common response: “Oh, you mean verification?”&lt;/p&gt;

&lt;p&gt;Looking back now, this reaction makes me wince.
Not because it’s inaccurate to my research—I do, in fact, spend a lot of time on verification!—but be...
            </description>
            <pubDate>2026-02-16T00:00:00+00:00</pubDate>
            <guid>
                /2026/02/16/verification-and-security.html
            </guid>
        </item>
        
        <item>
            <title>Takeaways from My Experience Moving Computer Science Outreach from the Lab to K-12 Classrooms</title>
            <link>
                /2026/01/27/classroom-outreach.html
            </link>
            <description>
                &lt;p&gt;This past December, the PLSE lab had some exciting new outreach opportunities where volunteers from our lab visited classrooms for &lt;a href=&quot;https://en.wikipedia.org/wiki/Code.org#Hour_of_Code&quot;&gt;Hour of Code&lt;/a&gt;, a nationwide program for promoting computer science education in K-12 schools.&lt;/p&gt;

&lt;p&gt;While PLSE has hosted &lt;a href=&quot;https://uwplse.org/2024/01/22/Dragon-Curves.html&quot;&gt;outreach activi...
            </description>
            <pubDate>2026-01-27T00:00:00+00:00</pubDate>
            <guid>
                /2026/01/27/classroom-outreach.html
            </guid>
        </item>
        
        <item>
            <title>Program Synthesis in Spreadsheets and CAD</title>
            <link>
                /2026/01/13/synthesis-no-programming.html
            </link>
            <description>
                &lt;p&gt;Program synthesis is a popular topic in programming languages research: the
idea of specifying the desired behavior or some part of a program, then having a synthesizer
magically fill in the rest of it is very exciting. Many popular program synthesis
applications are geared toward traditional programmers: for example,
&lt;a href=&quot;https://people.csail.mit.edu/asolar/StreamBit/pldi05-streambit.pd...
            </description>
            <pubDate>2026-01-13T00:00:00+00:00</pubDate>
            <guid>
                /2026/01/13/synthesis-no-programming.html
            </guid>
        </item>
        
        <item>
            <title>S-expressions: A Minimal Introduction to Minimal Syntax</title>
            <link>
                /2025/12/09/S-expressions.html
            </link>
            <description>
                &lt;p&gt;S-expressions (symbolic expressions) are one of the simplest ways to represent
structured data and code. Originally from Lisp, they’re just atoms and lists:&lt;/p&gt;

&lt;div class=&quot;language-lisp highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;mi&quot;&gt;42&lt;/span&gt;

&lt;span class=&quot;nv&quot;&gt;hello&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; ...
            </description>
            <pubDate>2025-12-09T00:00:00+00:00</pubDate>
            <guid>
                /2025/12/09/S-expressions.html
            </guid>
        </item>
        
        <item>
            <title>A few things to be thankful for</title>
            <link>
                /2025/12/02/Thankfulness.html
            </link>
            <description>
                &lt;p&gt;That I wrote this post near Thanksgiving was coincidence.
I wasn’t volun-told to do this.
There’s no official holiday edition of the PLSE blog.
I just happened to get this date.
Unfortunately, this is my first Thanksgiving away from my family in 8 years.
I skipped intentionally to run the Seattle marathon.
I’ve been training since last May but, tragically,
hurt my knee too late to change pla...
            </description>
            <pubDate>2025-12-02T00:00:00+00:00</pubDate>
            <guid>
                /2025/12/02/Thankfulness.html
            </guid>
        </item>
        
        <item>
            <title>Exploring Level Editors with Video Souls</title>
            <link>
                /2025/11/18/level-editors.html
            </link>
            <description>
                &lt;p&gt;I love level editors, and try to include them in most of my games.
They make level design way easier for developers and allow players
  to add brand new content to a game.
We wrote &lt;a href=&quot;https://cuposoft.itch.io/orblorgo-command&quot;&gt;Orblorgo Command&lt;/a&gt; with a level editor,
  and more recently designed a fancy level editor for our new game called &lt;a href=&quot;https://videosouls.com/&quot;&gt;Video Souls...
            </description>
            <pubDate>2025-11-18T00:00:00+00:00</pubDate>
            <guid>
                /2025/11/18/level-editors.html
            </guid>
        </item>
        
        <item>
            <title>Proof Terms in Rocq</title>
            <link>
                /2025/11/04/ProofTerms.html
            </link>
            <description>
                &lt;p&gt;In this blog post, we’re going to take a deep dive into looking at &lt;em&gt;proof terms&lt;/em&gt;
in Rocq.&lt;/p&gt;

&lt;p&gt;When we write proofs in a proof assistant like Rocq, we’re used to thinking in
  terms of goals and tactics (&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;intros&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;apply&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge...
            </description>
            <pubDate>2025-11-04T00:00:00+00:00</pubDate>
            <guid>
                /2025/11/04/ProofTerms.html
            </guid>
        </item>
        
        <item>
            <title>Flippin&apos; Dots</title>
            <link>
                /2025/10/21/Flippin-Dots.html
            </link>
            <description>
                &lt;p&gt;The Starbucks Reserve Roastery near me abruptly closed. This news was a big bummer, but not necessarily because of the coffee quality. They had this huge split flap sign whose pleasant waterfall patter washed over the cafe when its message changed, and served as lovely background noise when you were bringing your tourist family around to shop for souvenirs or nibbling on a croissant sandwich...
            </description>
            <pubDate>2025-10-21T00:00:00+00:00</pubDate>
            <guid>
                /2025/10/21/Flippin-Dots.html
            </guid>
        </item>
        
        <item>
            <title>Recursive Types and Infinite Trees (Part 1 of 2)</title>
            <link>
                /2025/10/10/recursive-types-part1.html
            </link>
            <description>
                &lt;p&gt;Types in programming languages correspond to sets of semantic objects. Simple types, like int or string, have a clear meaning. However, recursive types, whose descriptions are self-referential with the \(\mu\) operator, can be challenging to grasp. This PLSE blog post aims to clarify the concept of recursive types by grounding the meaning of the \(\mu\) operator in terms of regular infinite ...
            </description>
            <pubDate>2025-10-10T00:00:00+00:00</pubDate>
            <guid>
                /2025/10/10/recursive-types-part1.html
            </guid>
        </item>
        
        <item>
            <title>2Sum Algorithms</title>
            <link>
                /2025/08/04/two-sum.html
            </link>
            <description>
                &lt;p&gt;Time for yet another floating-point blog post!
Since this is my third blog post of the year,
  I’d like to keep this one brief.
This time,
  I’ll be discussing “2Sum” algorithms,
  an obsession of mine for a number of years now,
  consuming a large part of an internship I did
  at Intel during the summer of 2023.
The classic 2Sum algorithm&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; ...
            </description>
            <pubDate>2025-08-04T00:00:00+00:00</pubDate>
            <guid>
                /2025/08/04/two-sum.html
            </guid>
        </item>
        
        <item>
            <title>On Consistency: A Response to &quot;Response to &apos;Response to &quot;Ramen, Beans, and Potatoes, Oh My!&quot;&apos;&quot;</title>
            <link>
                /2025/07/10/consistency-plse-austerity.html
            </link>
            <description>
                &lt;p&gt;The only way to find an error is to compare two different things.  In software
engineering, the two things are often the behavior of a program and the
&lt;em&gt;intended&lt;/em&gt; behavior of the program.&lt;/p&gt;

&lt;p&gt;For example, &lt;em&gt;testing&lt;/em&gt; finds errors by using the &lt;em&gt;test suite&lt;/em&gt; as the intended
behavior.  In the worst case, the intended behavior exists only in the mind of
the developer, and fi...
            </description>
            <pubDate>2025-07-10T00:00:00+00:00</pubDate>
            <guid>
                /2025/07/10/consistency-plse-austerity.html
            </guid>
        </item>
        
        <item>
            <title>Response to &quot;Response to &apos;Ramen, Beans, and Potatoes, Oh My!&apos;&quot;</title>
            <link>
                /2025/07/09/response-to-response-to-plse-austerity.html
            </link>
            <description>
                &lt;p&gt;Dear editors,&lt;/p&gt;

&lt;p&gt;Many in the lab know me as the congenial Canadian,
    and I’ve always been happy to play the role of the friendly neighbour from
    up north.
Did I ride polar bears to and from school?
Yes, but only when the family moose wasn’t available.
Do I love Tim Hortons&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;?
About as muc...
            </description>
            <pubDate>2025-07-09T00:00:00+00:00</pubDate>
            <guid>
                /2025/07/09/response-to-response-to-plse-austerity.html
            </guid>
        </item>
        
        <item>
            <title>Response to &quot;Ramen, Beans, and Potatoes, Oh My!&quot;</title>
            <link>
                /2025/07/08/response-to-plse-austerity.html
            </link>
            <description>
                &lt;p&gt;To the editors,&lt;/p&gt;

&lt;p&gt;During breakfast,
  I was reading a recent edition of the PLSE blog,
  titled “Ramen, Beans, and Potatoes, Oh My!”
I found myself having a good laugh—what
  a great way to start the day—as
  I took in the author’s perspective on the lab’s financial situation:
  from instant ramen and canned beans,
  to survival food and potatoes
  (perhaps the author meant “&lt;em&gt;or&lt;/em...
            </description>
            <pubDate>2025-07-08T00:00:00+00:00</pubDate>
            <guid>
                /2025/07/08/response-to-plse-austerity.html
            </guid>
        </item>
        
        <item>
            <title>Ramen, Beans, and Potatoes, Oh My!</title>
            <link>
                /2025/07/07/ramen-beans-and-potatoes-oh-my.html
            </link>
            <description>
                &lt;p&gt;Unparalleled work-life balance,
    frequent travel to exotic locales for conferences,
    and plentiful free food.&lt;/p&gt;

&lt;p&gt;These are some of the few reasons that would entice anyone in their right mind
    to choose grad school over a cushy life with a &lt;em&gt;real&lt;/em&gt; job;
    filled with wifi-enabled corporate shuttles,
    quarterly KPIs and OKRs,
    and your very own access card with a sp...
            </description>
            <pubDate>2025-07-07T00:00:00+00:00</pubDate>
            <guid>
                /2025/07/07/ramen-beans-and-potatoes-oh-my.html
            </guid>
        </item>
        
        <item>
            <title>Parameterized Complexity of Running an E-Graph</title>
            <link>
                /2025/06/16/egraph-complexity.html
            </link>
            <description>
                &lt;p&gt;E-Graphs are a data structures that allow
  us to represent many equivalent programs at once.
This post won’t get into background on
  e-graphs, so check out previous blog posts
  or the &lt;a href=&quot;https://www.youtube.com/watch?v=LKELTEOFY-s&quot;&gt;original egg talk&lt;/a&gt;.
A variety of research projects at PLSE use e-graphs because
  they are a powerful
  and flexible tool for performing program optim...
            </description>
            <pubDate>2025-06-16T00:00:00+00:00</pubDate>
            <guid>
                /2025/06/16/egraph-complexity.html
            </guid>
        </item>
        
        <item>
            <title>Programming with Initial Value Problems</title>
            <link>
                /2025/06/16/IVP-in-PLSE.html
            </link>
            <description>
                &lt;p&gt;I like compilers.
I like how they whittle away
  inefficiencies into a tight core of
  &lt;a href=&quot;https://developer.arm.com/documentation/den0013/d/Introducing-NEON/NEON-architecture-overview&quot;&gt;NEON&lt;/a&gt; instructions.
There’s something satisfying about opening
up &lt;a href=&quot;https://godbolt.org/&quot;&gt;Compiler Explorer&lt;/a&gt; and seeing
your code snippet turned into unfathomably fast vectorized
code.&lt;/p&gt;

...
            </description>
            <pubDate>2025-06-16T00:00:00+00:00</pubDate>
            <guid>
                /2025/06/16/IVP-in-PLSE.html
            </guid>
        </item>
        
        <item>
            <title>Managing Research Data with Databases and Interactive Visualization</title>
            <link>
                /2025/05/29/managing-research-data.html
            </link>
            <description>
                &lt;p&gt;Every project needs to store and visualize data. Most of us have generated a static plot with matplotlib from data in a CSV file. However, when the data format becomes slightly more complicated and the data size increases, both correctness and performance issues arise. This blog post will try to convince you that &lt;strong&gt;databases&lt;/strong&gt; and &lt;strong&gt;interactive visualization&lt;/strong&gt; provi...
            </description>
            <pubDate>2025-05-29T00:00:00+00:00</pubDate>
            <guid>
                /2025/05/29/managing-research-data.html
            </guid>
        </item>
        
        <item>
            <title>Solving Concurrency Puzzles with Harmony Model Checker</title>
            <link>
                /2025/05/16/harmony.html
            </link>
            <description>
                &lt;p&gt;Despite most programming tasks today usually reasoning about concurrency at a higher abstraction level, such as transactions or managed thread pools, low-level concurrent programming maneuvers that fiddle with atomic instructions and locks never go out of fashion. In my humble opinion, the challenge of designing and debugging those programs perfectly resembles that of solving a mathematical ...
            </description>
            <pubDate>2025-05-16T00:00:00+00:00</pubDate>
            <guid>
                /2025/05/16/harmony.html
            </guid>
        </item>
        
        <item>
            <title>How does torch.compile work?</title>
            <link>
                /2025/04/28/torchdynamo.html
            </link>
            <description>
                &lt;p&gt;PyTorch is a popular open-source tensor library for machine learning (ML) and scientific computing in Python.
It’s especially popular among the research community because of its active open-source community and its flexibility for experimenting with new ML architectures.
For all of its benefits, it has a clear downfall compared to other ML frameworks like TensorFlow.
&lt;strong&gt;It’s slow!&lt;/stro...
            </description>
            <pubDate>2025-04-28T00:00:00+00:00</pubDate>
            <guid>
                /2025/04/28/torchdynamo.html
            </guid>
        </item>
        
        <item>
            <title>What is the phase ordering problem and can equality saturation help?</title>
            <link>
                /2025/04/14/Phase-ordering.html
            </link>
            <description>
                &lt;p&gt;This is the first part of a two-part blog post.
In this post, I’ll set up the problem we’re trying to solve, and a future post
will go into more detail about how our solution works.&lt;/p&gt;

&lt;p&gt;Compiler optimizations are typically implemented as a sequence of passes,
each designed to transform the program in a particular way.
For example, constant folding computes the result of constant expressi...
            </description>
            <pubDate>2025-04-14T00:00:00+00:00</pubDate>
            <guid>
                /2025/04/14/Phase-ordering.html
            </guid>
        </item>
        
        <item>
            <title>Algebraic Semantics for Machine Knitting</title>
            <link>
                /2025/03/31/Algebraic-Knitting.html
            </link>
            <description>
                &lt;p&gt;As programming languages researchers, we’re entitled to a certain level of mathematical
rigor behind the languages we write and analyze. Programming languages have &lt;em&gt;semantics&lt;/em&gt;, which are
definitions of what statements in the language mean. We can use those semantics to do all
sorts of useful things, like error checking, compiling for efficiency, code transformation,
and so on.&lt;/p&gt;

&lt;p...
            </description>
            <pubDate>2025-03-31T00:00:00+00:00</pubDate>
            <guid>
                /2025/03/31/Algebraic-Knitting.html
            </guid>
        </item>
        
        <item>
            <title>Most influential Papers in Programming Languages</title>
            <link>
                /2025/03/17/most-influential.html
            </link>
            <description>
                &lt;p&gt;&lt;em&gt;This post is also available as a &lt;a href=&quot;https://github.com/yihozhang/most-influential-pl-papers&quot;&gt;GitHub repo&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Inspired by &lt;a href=&quot;https://rmarcus.info/blog/2023/07/25/papers.html&quot;&gt;Ryan Marcus’s blog post&lt;/a&gt; that explores what are the most influential papers in the field of databases, I wanted to explore the most influential papers in PL.
Following Ryan’s approach, th...
            </description>
            <pubDate>2025-03-17T00:00:00+00:00</pubDate>
            <guid>
                /2025/03/17/most-influential.html
            </guid>
        </item>
        
        <item>
            <title>An Introduction to Memory Consistency Models</title>
            <link>
                /2025/03/03/Memory-Consistency.html
            </link>
            <description>
                &lt;p&gt;As a follow up to &lt;a href=&quot;/2025/02/03/Speculative-Semantics.html&quot;&gt;Alexandra’s recent post&lt;/a&gt; about speculative execution and how your mental model of a computer is probably wrong, I thought I’d follow up with another example of how our programming abstraction has drifted from the underlying hardware implementation—this time with respect to &lt;em&gt;when&lt;/em&gt; shared memory operations are visible...
            </description>
            <pubDate>2025-03-03T00:00:00+00:00</pubDate>
            <guid>
                /2025/03/03/Memory-Consistency.html
            </guid>
        </item>
        
        <item>
            <title>Taxonomy of Small Floating-Point Formats</title>
            <link>
                /2025/02/17/Small-Floats.html
            </link>
            <description>
                &lt;p&gt;As part of my responsibilities
  as an industrial PhD student with PLSE and Intel,
  I develop and maintain, alongside my colleague and
  PLSE alumni Bill Zorn, a reference implementation
  of floating-point arithmetic.
Hardware designers use this reference model
  to formally specify the behavior of floating point
  in hardware designs and verify the correctness of
  their implementations o...
            </description>
            <pubDate>2025-02-17T00:00:00+00:00</pubDate>
            <guid>
                /2025/02/17/Small-Floats.html
            </guid>
        </item>
        
        <item>
            <title>A brief introduction to speculative semantics</title>
            <link>
                /2025/02/03/Speculative-Semantics.html
            </link>
            <description>
                &lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Speculative_execution&quot;&gt;Speculative execution&lt;/a&gt;,
aka &lt;em&gt;speculation&lt;/em&gt;, is a form of computation that increasingly underlies every
program our computers run. If your mental model of a CPU is a device that
&lt;a href=&quot;https://en.wikipedia.org/wiki/PDP-11&quot;&gt;runs every instruction given to it, in the order given, with all prerequisite
inputs gathered befor...
            </description>
            <pubDate>2025-02-03T00:00:00+00:00</pubDate>
            <guid>
                /2025/02/03/Speculative-Semantics.html
            </guid>
        </item>
        
        <item>
            <title>Two-Space Copying Garbage Collection</title>
            <link>
                /2025/01/20/two-space-copying-gc.html
            </link>
            <description>
                &lt;p&gt;When choosing a programming language to use for a project—or when implementing one—there are many considerations to keep in mind.
One of those is whether or not the programming language uses any sort of garbage collection.
Today, I’m going to talk about one method of garbage collection that we can implement ourselves fairly easily: two-space copying garbage collection.&lt;/p&gt;

&lt;h2 id=&quot;what-is-t...
            </description>
            <pubDate>2025-01-20T00:00:00+00:00</pubDate>
            <guid>
                /2025/01/20/two-space-copying-gc.html
            </guid>
        </item>
        
        <item>
            <title>Equivalent mutant suppression in Java programs</title>
            <link>
                /2025/01/06/ems.html
            </link>
            <description>
                &lt;p&gt;In this post, I will relate some of the key findings and lessons learned in our
2024 ISSTA publication
&lt;a href=&quot;https://dl.acm.org/doi/pdf/10.1145/3650212.3680310&quot;&gt;Equivalent Mutants In The Wild: Identifying and Efficiently Suppressing Equivalent Mutants for Java Programs&lt;/a&gt;
(that’s a mouthful so I’ll just call it EMIW).
In EMIW, my co-authors and I performed an extensive manual analysis of...
            </description>
            <pubDate>2025-01-06T00:00:00+00:00</pubDate>
            <guid>
                /2025/01/06/ems.html
            </guid>
        </item>
        
        <item>
            <title>Finding and fixing accessibility issues with axe</title>
            <link>
                /2024/12/23/accessibility-testing-axe.html
            </link>
            <description>
                &lt;p&gt;Hi friends! I’m back to discuss more accessibility improvements we’ve made to the PLSE website: how we found more issues, how we fixed them, and how we’ll (hopefully) not make these same mistakes in the future! In particular, this post touches on running automated browser tests across our entire website to flag specific types of accessibility issues. Along the way, we’ll learn about some spe...
            </description>
            <pubDate>2024-12-23T00:00:00+00:00</pubDate>
            <guid>
                /2024/12/23/accessibility-testing-axe.html
            </guid>
        </item>
        
        <item>
            <title>Doing research at PLSE as an undergraduate</title>
            <link>
                /2024/11/25/undergrad-research.html
            </link>
            <description>
                &lt;p&gt;Do you wonder what it’s like to do research at PLSE?
If you are a student without prior research experience, the PLSE lab may seem intimidating at first.
However, PLSE supports a diverse body of undergraduates working on various research topics, from software engineering questions like “How good is a test suite” all the way to compilers for hardware.
Our undergrads play an integral part in t...
            </description>
            <pubDate>2024-11-25T00:00:00+00:00</pubDate>
            <guid>
                /2024/11/25/undergrad-research.html
            </guid>
        </item>
        
        <item>
            <title>Using Odyssey to Analyze Floating Point Expressions</title>
            <link>
                /2024/11/11/Odyssey.html
            </link>
            <description>
                &lt;p&gt;For the last 8 months, I’ve been working on Odyssey, a tool for analyzing floating point expressions by integrating floating point tools into one dynamic workbench. One of our big milestones is approaching, as we’ll present Odyssey at the Supercomputing Conference (SC 2024) in less than a week.&lt;/p&gt;

&lt;p&gt;This blog serves as an overview of recent updates to Odyssey, including feature improvemen...
            </description>
            <pubDate>2024-11-11T00:00:00+00:00</pubDate>
            <guid>
                /2024/11/11/Odyssey.html
            </guid>
        </item>
        
        <item>
            <title>Designing a Data Reproduction Artifact</title>
            <link>
                /2024/10/28/designing-data-reproduction-artifact.html
            </link>
            <description>
                &lt;p&gt;I recently submitted a
&lt;a href=&quot;https://zenodo.org/doi/10.5281/zenodo.11522277&quot;&gt;data reproduction artifact&lt;/a&gt;
accompanying our paper
&lt;a href=&quot;https://homes.cs.washington.edu/~jmsy/pubs/optional-checker-ase2024.pdf&quot;&gt;“Verifying the Option Type with Rely-Guarantee Reasoning&lt;/a&gt;.”
There are things that I wish I had done from the get-go next time,
so I’m writing them down in this post.
Hopefully...
            </description>
            <pubDate>2024-10-28T00:00:00+00:00</pubDate>
            <guid>
                /2024/10/28/designing-data-reproduction-artifact.html
            </guid>
        </item>
        
        <item>
            <title>Understanding Curry-Howard through Rocq</title>
            <link>
                /2024/09/30/Curry-Howard-in-Rocq.html
            </link>
            <description>
                &lt;p&gt;Before I ever started my PhD, I could have recited to you the Curry-Howard Isomorphism: proofs are programs, and programs are proofs. But it was only when I started working on proof compilation in the interactive theorem prover Rocq (formerly known as Coq) that I feel that I truly understood it – along with why it works, why theorem provers work, and all sorts of cool tricks and connections ...
            </description>
            <pubDate>2024-09-30T00:00:00+00:00</pubDate>
            <guid>
                /2024/09/30/Curry-Howard-in-Rocq.html
            </guid>
        </item>
        
        <item>
            <title>How to Knit Objects Weird</title>
            <link>
                /2024/09/16/Unfolding.html
            </link>
            <description>
                &lt;p&gt;If you saw &lt;a href=&quot;/2024/03/18/Illusion-Knitting.html&quot;&gt;my last blog post&lt;/a&gt;, you know that I work on design tools for knitting unusual things. Today I’m introducing my new project, which is a design tool to support knitting things in unusual ways. I’m also introducing my new amazing collaborator, Marlena!&lt;/p&gt;

&lt;p&gt;So let’s say you’re a knitter (some of you probably are!). If you knit or cro...
            </description>
            <pubDate>2024-09-16T00:00:00+00:00</pubDate>
            <guid>
                /2024/09/16/Unfolding.html
            </guid>
        </item>
        
        <item>
            <title>Theorem Proving with Differential Equations</title>
            <link>
                /2024/09/02/ODEs-and-theorem-proving.html
            </link>
            <description>
                &lt;p&gt;Once UW kicks off the school year at the end of this month, I’ll officially be a second-year PhD student
It’s a scary, yet exciting, thought! There will be loads of new incoming students, interesting research, and &lt;em&gt;many&lt;/em&gt; surprises in store!
This is also the perfect time to think critically about my goals in the PhD. One of them is building a larger theme for my research.
I’m not commi...
            </description>
            <pubDate>2024-09-02T00:00:00+00:00</pubDate>
            <guid>
                /2024/09/02/ODEs-and-theorem-proving.html
            </guid>
        </item>
        
        <item>
            <title>Working with Equivalent Definitions in Rocq</title>
            <link>
                /2024/08/19/Equivalent-Rocq.html
            </link>
            <description>
                &lt;p&gt;This summer, I’ve been interning at &lt;a href=&quot;https://www.sandia.gov/&quot;&gt;Sandia National Labs&lt;/a&gt;, working on extending &lt;a href=&quot;https://compcert.org/&quot;&gt;CompCert&lt;/a&gt; for concurrent programs.  We represent program states as a list of threads &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;t :: ts&lt;/code&gt; and a memory state &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;m&lt;/code&gt;. Much of my ...
            </description>
            <pubDate>2024-08-19T00:00:00+00:00</pubDate>
            <guid>
                /2024/08/19/Equivalent-Rocq.html
            </guid>
        </item>
        
        <item>
            <title>Improving our website&apos;s accessibility with static analysis + CI</title>
            <link>
                /2024/08/06/static-accessibility.html
            </link>
            <description>
                &lt;p&gt;Over the past year (and … mostly right before this post was published), I’ve been working with our wonderful website chair &lt;a href=&quot;https://effect.systems/&quot;&gt;Yihong&lt;/a&gt; to make small web accessibility improvements to the PLSE website. I wanted to spend a bit of time writing up what we’ve done for a couple of reasons, which will coincidentally also sketch out the structure of this post:&lt;/p&gt;

&lt;...
            </description>
            <pubDate>2024-08-06T00:00:00+00:00</pubDate>
            <guid>
                /2024/08/06/static-accessibility.html
            </guid>
        </item>
        
        <item>
            <title>Verilog Programs Have Stream Semantics (Verilog basics 2)</title>
            <link>
                /2024/07/22/verilog-2.html
            </link>
            <description>
                &lt;p&gt;&lt;a href=&quot;/2024/02/19/verilog.html&quot;&gt;First post.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the second (and likely last)
  of two posts
  explaining Verilog basics
  from a programming languages angle.
In the &lt;a href=&quot;/2024/02/19/verilog.html&quot;&gt;first post&lt;/a&gt;,
  we explained how
  Verilog programs are pure expressions.
This gives a basis for understanding
  not only the basic syntax of Verilog programs,
  but also th...
            </description>
            <pubDate>2024-07-22T00:00:00+00:00</pubDate>
            <guid>
                /2024/07/22/verilog-2.html
            </guid>
        </item>
        
        <item>
            <title>Exploring In-Synthesis Verification of Hardware</title>
            <link>
                /2024/07/01/gator-in-synthesis-verification.html
            </link>
            <description>
                &lt;p&gt;Getting hardware right is crucial – without correct hardware,
there’s no way to guarantee that software will work as intended.
To raise the stakes even higher, hardware designers
really only have one shot to get it right – once
the hardware’s made, you can’t really patch it!
To address this importance, there are many tools
which use formal methods to give strong guarantees that
hardware is c...
            </description>
            <pubDate>2024-07-01T00:00:00+00:00</pubDate>
            <guid>
                /2024/07/01/gator-in-synthesis-verification.html
            </guid>
        </item>
        
        <item>
            <title>Tratto&amp;#58; Neuro-Symbolic Oracle Generation</title>
            <link>
                /2024/06/24/neuro-symbolic-oracle-generation.html
            </link>
            <description>
                &lt;h2 id=&quot;crossing-the-threshold&quot;&gt;Crossing the Threshold&lt;/h2&gt;

&lt;p&gt;In 1931, Kurt Godel stunned the world of mathematics when he published his “Incompleteness Theorem.”
To summarize, the theorem stated that, no matter what set of rules we believe to be true about our world, there will always be statements that are… &lt;em&gt;unprovable&lt;/em&gt;.
This infuriated various mathematicians, who had believed that m...
            </description>
            <pubDate>2024-06-24T00:00:00+00:00</pubDate>
            <guid>
                /2024/06/24/neuro-symbolic-oracle-generation.html
            </guid>
        </item>
        
        <item>
            <title>Partial Rely&amp;mdash;Guarantee Reasoning for Pluggable Types</title>
            <link>
                /2024/06/10/rely-guarantee-for-pluggable-types.html
            </link>
            <description>
                &lt;p&gt;Every programmer &lt;em&gt;loves&lt;/em&gt; writing tests, but tests can’t say much about the
correctness of your program.
Wait a minute, &lt;em&gt;what&lt;/em&gt;?
You mean I’ve been writing tests all this time for absolutely nothing?
I’ve been lied to in my undergrad software engineering course?
Unfortunately, it seems like we’ve known this fact since at least 1969.
A transcript from a
&lt;a href=&quot;http://homepages.c...
            </description>
            <pubDate>2024-06-10T00:00:00+00:00</pubDate>
            <guid>
                /2024/06/10/rely-guarantee-for-pluggable-types.html
            </guid>
        </item>
        
        <item>
            <title>Weaving Compilers</title>
            <link>
                /2024/05/27/Weaving-Compilation.html
            </link>
            <description>
                &lt;p&gt;The past few weeks, I’ve been learning more about a few different kinds of weaving. One form of weaving is card weaving (also called tablet weaving), where the loom is instead replaced by square pieces of cardboard with holes punched in each corner. You may be wondering: how does a bunch of pieces of cardboard with holes weave cloth? I wondered the same thing myself! It seemed bonkers to thi...
            </description>
            <pubDate>2024-05-27T00:00:00+00:00</pubDate>
            <guid>
                /2024/05/27/Weaving-Compilation.html
            </guid>
        </item>
        
        <item>
            <title>Herbie, the Numerical Compiler</title>
            <link>
                /2024/05/09/Herbie-Numerical-Compiler.html
            </link>
            <description>
                &lt;p&gt;Ten years since its inception,
  the &lt;a href=&quot;https://herbie.uwplse.org/&quot;&gt;Herbie&lt;/a&gt; project remains
  an active source of research
  and is a marquee project of PLSE.
It directly spawned four publications:
  &lt;a href=&quot;https://herbie.uwplse.org/pldi15-paper.pdf&quot;&gt;Herbie&lt;/a&gt; at PLDI 2015,
  &lt;a href=&quot;https://herbie.uwplse.org/arith21-paper.pdf&quot;&gt;Pareto-Herbie&lt;/a&gt; (Pherbie) at ARITH 2021,
  &lt;a hre...
            </description>
            <pubDate>2024-05-09T00:00:00+00:00</pubDate>
            <guid>
                /2024/05/09/Herbie-Numerical-Compiler.html
            </guid>
        </item>
        
        <item>
            <title>Simplifying Addition and Multiplication in Polynomials</title>
            <link>
                /2024/04/30/Simplifing-Polynomials.html
            </link>
            <description>
                &lt;p&gt;In my own research on Computer Algebra Systems (CAS), I often work some pretty cool data structures 😎.
In this post, I want to show off one that’s responsible for simplifying polynomials. But first, I have a little secret…In high-school, I thought polynomials were boring! The hours I spent finding roots dragged on and on. They didn’t make pretty graphs like the trig functions. It’s only at t...
            </description>
            <pubDate>2024-04-30T00:00:00+00:00</pubDate>
            <guid>
                /2024/04/30/Simplifing-Polynomials.html
            </guid>
        </item>
        
        <item>
            <title>Assembly transformations against side channels</title>
            <link>
                /2024/04/15/Instruction-Centric-Optimizations.html
            </link>
            <description>
                &lt;p&gt;Have you ever wondered why hardware security isn’t a solved problem?
It’s been six years since &lt;a href=&quot;https://meltdownattack.com/&quot;&gt;Spectre and Meltdown&lt;/a&gt;
sent tech companies scrambling to fix the vulnerabilities that hardware
manufacturers created with their own optimizations. Everyone involved–chip
manufacturers, big tech, the security community–seems to agree that
hardware security bug...
            </description>
            <pubDate>2024-04-15T00:00:00+00:00</pubDate>
            <guid>
                /2024/04/15/Instruction-Centric-Optimizations.html
            </guid>
        </item>
        
        <item>
            <title>Pluggable type inference for free</title>
            <link>
                /2024/04/02/pluggable-type-inference.html
            </link>
            <description>
                &lt;p&gt;Testing cannot ensure correctness, but verification can.  The problem with a specify-and-verify approach is the first part:  the specification.  Programmers are often reluctant to write specifications because it seems like extra work, beyond writing the code.&lt;/p&gt;

&lt;p&gt;In the context of pluggable type-checking, the specifications are annotations.  Writing &lt;code class=&quot;language-plaintext highli...
            </description>
            <pubDate>2024-04-02T00:00:00+00:00</pubDate>
            <guid>
                /2024/04/02/pluggable-type-inference.html
            </guid>
        </item>
        
        <item>
            <title>Designing Knitted Illusions</title>
            <link>
                /2024/03/18/Illusion-Knitting.html
            </link>
            <description>
                &lt;p&gt;One of the great joys of being a researcher is observing an interesting phenomenon and deciding that you want to understand it and recreate it. Then there’s the additional joy of being a knitting researcher, and having that phenomenon be a cool object you can also display in your house or wear!&lt;/p&gt;

&lt;p&gt;In the vein of spelunking for natural phenomena, one of my advisors, Zachary Tatlock, disc...
            </description>
            <pubDate>2024-03-18T00:00:00+00:00</pubDate>
            <guid>
                /2024/03/18/Illusion-Knitting.html
            </guid>
        </item>
        
        <item>
            <title>The Science of Code Formatting (Part I)</title>
            <link>
                /2024/03/04/code-formatting.html
            </link>
            <description>
                &lt;!-- markdownlint-disable no-hard-tabs --&gt;

&lt;p&gt;Code formatters are tools to make source code in a programming language easy to read.
This series of blog posts presents a systematic analysis of code formatters.
We aim to answer the following questions:
What are the advantages and disadvantages of different kinds of code formatters (for both users and implementers)?
How do they work?
And what are...
            </description>
            <pubDate>2024-03-04T00:00:00+00:00</pubDate>
            <guid>
                /2024/03/04/code-formatting.html
            </guid>
        </item>
        
        <item>
            <title>Verilog Programs are Pure Expressions (Verilog basics 1)</title>
            <link>
                /2024/02/19/verilog.html
            </link>
            <description>
                &lt;p&gt;&lt;em&gt;After reading this, check out the &lt;a href=&quot;/2024/07/22/verilog-2.html&quot;&gt;second post.&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;div class=&quot;language-verilog highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;module&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;counter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kt&quot;&gt;input&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;clk&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;output&lt;/sp...
            </description>
            <pubDate>2024-02-19T00:00:00+00:00</pubDate>
            <guid>
                /2024/02/19/verilog.html
            </guid>
        </item>
        
        <item>
            <title>The Theoretical Aspect of Equality Saturation (Part II)</title>
            <link>
                /2024/02/05/Eqsat-theory-ii.html
            </link>
            <description>
                &lt;p&gt;In the last post, we showed the connections
 between chase and techniques developed in databases literature and tree automata literature,
 and how these connections help us understand equality saturation (EqSat).
In this blog post,
 we will focus on a specific problem EqSat faces:
 the termination problem&lt;sup&gt;&lt;a href=&quot;#footnote-1&quot; id=&quot;footnote-1-ref&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;,
 something my collaborators ...
            </description>
            <pubDate>2024-02-05T00:00:00+00:00</pubDate>
            <guid>
                /2024/02/05/Eqsat-theory-ii.html
            </guid>
        </item>
        
        <item>
            <title>PLSE Outreach- Dragon Curves!</title>
            <link>
                /2024/01/22/Dragon-Curves.html
            </link>
            <description>
                &lt;!-- ## PLSE Outreach- Dragon Curves! --&gt;

&lt;p&gt;Every quarter PLSE hosts an outreach event to teach high school
students about programming languages research!
This quarter we hosted a lab tour as part
of UW’s &lt;a href=&quot;https://www.cs.washington.edu/outreach/CSEdWeek&quot;&gt;CS Education Week&lt;/a&gt;.
The event helps interested students get a taste of computer science,
and learn about the cool research we do ...
            </description>
            <pubDate>2024-01-22T00:00:00+00:00</pubDate>
            <guid>
                /2024/01/22/Dragon-Curves.html
            </guid>
        </item>
        
        <item>
            <title>Programming in Space and Time</title>
            <link>
                /2024/01/08/Spacetime.html
            </link>
            <description>
                &lt;p&gt;While “Goto Considered Harmful” (Dijkstra, 1968) is one of the most famous pieces of writing in Computer Science, its enduring relevance to programming languages is almost wholly unappreciated or — at best — misunderstood. Historically, supporters and detractors from the original letter have addressed themselves to the conclusion that use of the goto statement should be avoided. (Including K...
            </description>
            <pubDate>2024-01-08T00:00:00+00:00</pubDate>
            <guid>
                /2024/01/08/Spacetime.html
            </guid>
        </item>
        
        <item>
            <title>Welcome to the PLSE Blog!</title>
            <link>
                /2023/11/14/Welcome.html
            </link>
            <description>
                &lt;p&gt;Hello, and welcome to the first edition of the official UW PLSE blog!&lt;/p&gt;

&lt;p&gt;In case you’re not familiar (yet!), PLSE is the UW &lt;strong&gt;P&lt;/strong&gt;rogramming &lt;strong&gt;L&lt;/strong&gt;anguages and &lt;strong&gt;S&lt;/strong&gt;oftware &lt;strong&gt;E&lt;/strong&gt;ngineering lab, where we work on all sorts of cool stuff, from &lt;a href=&quot;https://egraphs-good.github.io&quot;&gt;e-graphs&lt;/a&gt;, &lt;a href=&quot;https://ztatlock.net&quot;&gt;program veri...
            </description>
            <pubDate>2023-11-14T00:00:00+00:00</pubDate>
            <guid>
                /2023/11/14/Welcome.html
            </guid>
        </item>
        
        <item>
            <title>slice of life content in undergrad PL</title>
            <link>
                /2023/11/14/Slice-of-life.html
            </link>
            <description>
                &lt;p&gt;Hi! My name is &lt;a href=&quot;https://mattx.wang&quot;&gt;Matt&lt;/a&gt; (he/him), one of the new teaching faculty at the Allen School this fall. I’ve been given a warm welcome by the community at UW, including at PLSE – where I’ve already met some wonderful people who do all things software engineering, programming languages, and running!&lt;/p&gt;

&lt;p&gt;Rather than a typical research blog post, I’ll instead touch on ...
            </description>
            <pubDate>2023-11-14T00:00:00+00:00</pubDate>
            <guid>
                /2023/11/14/Slice-of-life.html
            </guid>
        </item>
        
        <item>
            <title>The Theoretical Aspect of Equality Saturation (Part I)</title>
            <link>
                /2023/11/14/Eqsat-theory-i.html
            </link>
            <description>
                &lt;p&gt;The phase-ordering problem is a long standing problem in program optimization:
Consider program \((a\times 2)/2\).
A program optimizer may readily optimize the subexpression
 \(a\times 2\) into \(a\ll 1\) and get \((a\ll 1)/2\),
 at which stage it cannot optimize the program further.
Or it can also realize that the multiplication and division operators
 can be simply canceled out, yielding \...
            </description>
            <pubDate>2023-11-14T00:00:00+00:00</pubDate>
            <guid>
                /2023/11/14/Eqsat-theory-i.html
            </guid>
        </item>
        
    </channel>
</rss>
