<?xml version="1.0" ?><entry xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom" xmlns:planet="http://planet.intertwingly.net/"><id>https://blog.nelhage.com/post/reflections-on-performance/</id><link href="https://blog.nelhage.com/post/reflections-on-performance/" rel="alternate" type="text/html"/><title>Reflections on software performance</title><summary>At this point in my career, I’ve worked on at least three projects where performance was a defining characteristic: Livegrep, Taktician, and Sorbet (I discussed sorbet in particular last time, and livegrep in an earlier post). I’ve also done a lot of other performance work on the tools I use, some of which ended up on my other blog, Accidentally Quadratic.
In this post, I want to reflect on some of the lessons I’ve learned while writing performant software, and working with rather a lot more not-so-performant software.</summary><updated planet:format="February 03, 2020 01:00 AM">2020-02-03T01:00:00Z</updated><source><id>https://blog.nelhage.com/post/</id><author><name>Nelson Elhage</name></author><link href="https://blog.nelhage.com/post/" rel="alternate" type="text/html"/><link href="https://blog.nelhage.com/post/atom.xml" rel="self" type="application/rss+xml"/><subtitle>Recent content in Posts on Made of Bugs</subtitle><title>Posts on Made of Bugs</title><updated planet:format="September 06, 2026 03:37 AM">2026-09-06T03:37:04Z</updated><planet:format>rss20</planet:format><planet:bozo>false</planet:bozo><planet:items_per_page>60</planet:items_per_page><planet:name>Nelson Elhage</planet:name><planet:css-id>nelson-elhage</planet:css-id><planet:days_per_page>0</planet:days_per_page><planet:http_etag>&quot;5b2ae9eec2e293572f6ae5a000bd0161-ssl-df&quot;</planet:http_etag><planet:http_status>200</planet:http_status><planet:encoding>utf-8</planet:encoding></source></entry>