<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Amédée d&#39;Aboville</title>
    <link>/</link>
    <description>Recent content on Amédée d&#39;Aboville</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 07 Oct 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>500x Faster Theseus Plots with Rust and Gitoxide</title>
      <link>/introducing-gix-of-theseus/</link>
      <pubDate>Tue, 07 Oct 2025 00:00:00 +0000</pubDate>
      <guid>/introducing-gix-of-theseus/</guid>
      <description>One of my favorite types of graphs of all time is Git of Theseus by Erik Bern, which shows a Git repository&amp;rsquo;s composition over time. It&amp;rsquo;s a stacked plot showing, for any given moment in time, the amount of code that was written in each year. It has a really &amp;ldquo;natural&amp;rdquo; feel, it looks like layers of sedimentary rock accumulating and weathering over time:&#xA;A Theseus stacked plot of the Linux repository</description>
    </item>
    <item>
      <title>Group Theory with Zoombinis: Part 2</title>
      <link>/group-theory-zoombinis-2/</link>
      <pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate>
      <guid>/group-theory-zoombinis-2/</guid>
      <description>Recap: We&amp;rsquo;re on Zoombini island, full of cute little zoombinis, which are metaphors for group elements. The zoombinis have a magical cloning /merging machine that works like the binary operation for a group and follows the group laws. Last time, we described how we could study a zoombini group and came to some isomorphisms:&#xA;We had started from a group of zoombinis, assigned each zoombini a number, then written a notebook page per zoombini, with the numbers 1 through N in a different order.</description>
    </item>
    <item>
      <title>Group Theory with Zoombinis: Part 1</title>
      <link>/group-theory-zoombinis-1/</link>
      <pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate>
      <guid>/group-theory-zoombinis-1/</guid>
      <description>I was learning group theory recently, and it&amp;rsquo;s very fun, but it&amp;rsquo;s also abstract, and that makes it confusing. &amp;ldquo;Groups are symmetries&amp;rdquo;, but groups can be anything that follows the group laws. Groups permute themselves in some way??&#xA;So I thought I&amp;rsquo;d explain it in a fun setting that makes it clear what everything is. Zoombinis are from a videogame that teach children math concepts like algebra, so the metaphor is fitting, but for copyright reasons I may rename these later (maybe goombinis?</description>
    </item>
    <item>
      <title>Category Theory is Overrated for Programmers. Study Abstract Algebra Instead</title>
      <link>/ct-overrated/</link>
      <pubDate>Tue, 30 Apr 2024 00:00:00 +0000</pubDate>
      <guid>/ct-overrated/</guid>
      <description>For some reason, when I was a younger programmer, I developed the belief that I needed to learn Haskell and Category Theory to become a better programmer. It would be a long, arduous challenge, but then one day, I&amp;rsquo;d finally get it. I&amp;rsquo;d grok the pure math of function composition and use it to design perfect systems, entirely free of bugs. Once I learned what a monoid in the category of endofunctors was, I would be slinging those around all day, cranking out provably correct code with mathematically optimal API surfaces, instead of throwing another ad-hoc unit test on the pile and trying to unflake my integration tests for the 1000th time, like a schmuck.</description>
    </item>
    <item>
      <title>The Missing Middle in Tech Education</title>
      <link>/missing-middle/</link>
      <pubDate>Mon, 21 Nov 2022 00:00:00 +0000</pubDate>
      <guid>/missing-middle/</guid>
      <description>Disclaimer: I have no background in education. I&amp;rsquo;ve just been a programmer for 7 years, interviewed &amp;amp; hired programmers, and care about the future of the industry.&#xA;Today, to break into software development you have two main options, a 4 year degree or a 3 month bootcamp:&#xA;The CS degree is expensive, long, and gives you a &amp;ldquo;deeper&amp;rdquo; background 1. The bootcamp is 12x shorter, comparatively cheap, and aimed at getting you a job by getting you coding small projects in modern technologies.</description>
    </item>
    <item>
      <title>Debugging Is Science</title>
      <link>/2022/11/09/debugging/</link>
      <pubDate>Wed, 09 Nov 2022 00:00:00 +0000</pubDate>
      <guid>/2022/11/09/debugging/</guid>
      <description>Debugging is one of the most difficult parts of working with computers. Worse, you have to do more and more of it over time as you become responsible for mountains of code you didn&amp;rsquo;t write.&#xA;(At least we don&amp;rsquo;t have to deal with God-tier bugs like my car doesn&amp;rsquo;t start after buying vanilla ice cream)&#xA;At work my last promotion was due in part to my problem solving abilities&amp;mdash;my boss called me &amp;ldquo;a world-class debugger&amp;rdquo;.</description>
    </item>
    <item>
      <title>Patio11&#39;s Don&#39;t Call Yourself a Programmer, and Other Career Advice</title>
      <link>/2022/11/08/dont-call-yourself-a-programmer/</link>
      <pubDate>Tue, 08 Nov 2022 00:00:00 +0000</pubDate>
      <guid>/2022/11/08/dont-call-yourself-a-programmer/</guid>
      <description>A blog post I keep coming back to is Patio11&amp;rsquo;s Don&amp;rsquo;t Call Yourself A Programmer, And Other Career Advice. It&amp;rsquo;s a smattering of different opinions that come together as kind of a &amp;ldquo;map of your career as a programmer&amp;rdquo; that wouldn&amp;rsquo;t be out of place in a commencement speech. You could call it the Wear Sunscreen of programming advice.&#xA;The thread that flows through the post is the author&amp;rsquo;s point of distancing yourself from your identity as a &amp;ldquo;programmer&amp;rdquo;, both at work and at home.</description>
    </item>
    <item>
      <title>Forget about localhost:3000 with zoxy</title>
      <link>/2022/11/06/zoxy/</link>
      <pubDate>Sun, 06 Nov 2022 00:00:00 +0000</pubDate>
      <guid>/2022/11/06/zoxy/</guid>
      <description>Zoxy is an app that lets you type hugo.z, next.z, jupyter.z, or kibana.z instead of remembering localhost:1313, localhost:3000, localhost:8888, or localhost:5601.&#xA;Here&amp;rsquo;s me going to the local version of this blog by typing http://hugo.z&#xA;Convinced? Skip down to here to download and use it.&#xA;What is the point of this, you ask? Why save a couple seconds typing out a port number? the thing is, each trick saves a lot more than the 2s it takes to type out something longer: it keeps your mind from overheating and makes interacting with the computer less like talking to a screeching alien, and more like expressing your creative intent.</description>
    </item>
    <item>
      <title>The 7 Powers in Programming Language Adoption</title>
      <link>/2022/08/22/7-powers-programming-languages/</link>
      <pubDate>Mon, 22 Aug 2022 00:00:00 +0000</pubDate>
      <guid>/2022/08/22/7-powers-programming-languages/</guid>
      <description>I recently picked up 7 Powers: The Foundations of Business Strategy by Hamilton Helmer (based on this glowing recommendation). The book analyzes several different forces (the author calls them &amp;ldquo;Powers&amp;rdquo;) that lead businesses to long term strategic advantages, like economies of scale, network effects, and high switching costs. These simultaneously give a business an economic benefit and create a barrier against replication by potential competitors.&#xA;I thought it&amp;rsquo;d be interesting to analyze programming language adoption through this lens.</description>
    </item>
    <item>
      <title>Compiling LibPDQ to JS with Emscripten Part 4: Writing Docs &amp; Emitting Typescript</title>
      <link>/2021/02/13/pdq-emscripten-4/</link>
      <pubDate>Sat, 13 Feb 2021 00:00:00 +0000</pubDate>
      <guid>/2021/02/13/pdq-emscripten-4/</guid>
      <description>I&amp;rsquo;m not too sure about this blog post, because I&amp;rsquo;m not sure this is The Right Way to do this, but I wanted to at least document my progress.&#xA;Previously PDQ.js was compiled with emscripten, and the functions were exported as&#xA;Module.init = Module.cwrap(&amp;#39;PDQ_Init&amp;#39;, ...&amp;#39;) which exposed the C PDQ_Init function by using Emscripten&amp;rsquo;s Module.cwrap, and exports it to the Module object.&#xA;But this had no documentation, and I constantly found myself forgetting how to use the lib and having to consult the C documentation.</description>
    </item>
    <item>
      <title>Compiling LibPDQ to JS with Emscripten Part 3: All in JS → Pushing to NPM</title>
      <link>/2021/01/28/emscripten-libpdq-3/</link>
      <pubDate>Thu, 28 Jan 2021 00:00:00 +0000</pubDate>
      <guid>/2021/01/28/emscripten-libpdq-3/</guid>
      <description>In part 1 I explained the PDQ library and its book. I managed to run the C library in the browser with Emscripten. In part 2 I got the same model to run, but written in javascript. Here we&amp;rsquo;ll be writing all JS and pushing it to NPM.&#xA;I&amp;rsquo;ve read more of the book, and really liking it. The part on Mean Value Analysis is very cool! I started an Observable Notebook with almost every single Perl listing translated to Javascript.</description>
    </item>
    <item>
      <title>Compiling LibPDQ to JS with Emscripten Part 2: Using C functions in JS</title>
      <link>/2020/12/28/emscripten-libpdq-2/</link>
      <pubDate>Mon, 28 Dec 2020 00:00:00 +0000</pubDate>
      <guid>/2020/12/28/emscripten-libpdq-2/</guid>
      <description>In the previous part I wrote about compiling a C program to run in the browser with Empscripten, by using its -o output.html feature. The post centered around tribulations due to a stack overflow in the browser version, because Emscripten&amp;rsquo;s default 5MB stack size of was smaller than the example program assumed it could use.&#xA;Now instead of compiling C code to JS and running it, I want to export the C functions from the library header file Lib_pdq.</description>
    </item>
    <item>
      <title>Compiling LibPDQ to JS with Emscripten: First steps</title>
      <link>/2020/12/13/emscripten-libpdq/</link>
      <pubDate>Sun, 13 Dec 2020 00:00:00 +0000</pubDate>
      <guid>/2020/12/13/emscripten-libpdq/</guid>
      <description>I love the book Analyzing Computer System Performance with Perl::PDQ. It&amp;rsquo;s the clearest applied Queuing Theory book I&amp;rsquo;ve found.&#xA;The book in question&#xA;IMO I think the Universal Scalability Law should be called Gunther&amp;rsquo;s law, given how much the author has done to popularize it. (Plus it sounds less grandiose than the Universal Scalability Law, and it would be clearer that it&amp;rsquo;s on the same level as Amdahl&amp;rsquo;s Law).&#xA;Sadly, I hate to say it, but the book sounds outdated with Perl in the title.</description>
    </item>
    <item>
      <title>The 2 Data structures you need in a Scrabble AI</title>
      <link>/2020/11/04/fst-gaddag/</link>
      <pubDate>Wed, 04 Nov 2020 00:00:00 +0000</pubDate>
      <guid>/2020/11/04/fst-gaddag/</guid>
      <description>I got into making a Scrabble game because I thought it&amp;rsquo;d be a relatively easy to enumerate the possible moves on a board and have an algorithm for finding the best move. But it turns out there a lot of possible moves on a typical board! You can play a large number of words in different places and orientations!&#xA;As I mentioned in the last post, Scrabble is not a solved problem.</description>
    </item>
    <item>
      <title>Starting to Build a Scrabble Game in Rust</title>
      <link>/2020/09/25/scrabblers/</link>
      <pubDate>Fri, 25 Sep 2020 00:00:00 +0000</pubDate>
      <guid>/2020/09/25/scrabblers/</guid>
      <description>I&amp;rsquo;ve been playing too much Scrabble Go recently, the new version of Scrabulous. The app is full ads &amp;amp; annoyances, but I like playing with my friends, so I decided to build my own personal version to play with friends.&#xA;I also wanted to build a training mode into the app, and also later on try my hand at a Scrabble AI. Apparently, Scrabble is unsolved. Quackle, the best open source Scrabble AI is &amp;ldquo;competitive&amp;rdquo; with tournament players, but hasn&amp;rsquo;t dominated like other AIs have in Chess and Go, presumably because the randomness and imperfect information make it more difficult to reason about the game.</description>
    </item>
    <item>
      <title>Getting started with BPF on Ubuntu 20.04 Focal</title>
      <link>/2020/06/17/bpf-on-ubuntu-20/</link>
      <pubDate>Wed, 17 Jun 2020 11:29:05 -0400</pubDate>
      <guid>/2020/06/17/bpf-on-ubuntu-20/</guid>
      <description>I believe that reasoning about a program, and knowing where to insert &amp;ldquo;probes&amp;rdquo;, is a key part of development that can make the difference between &amp;ldquo;stuck all afternoon&amp;rdquo; and finishing a task on time.&#xA;This is why I love the idea of BPF: you can instrument any part of your computer. Any function in your program, any syscall, the filesystem, virtual memory, network, you name it. It should really level up my debugging, and is why I&amp;rsquo;m reading BPF Performance Tools.</description>
    </item>
    <item>
      <title>Concept: Flexchat</title>
      <link>/2020/04/17/concept-flexchat/</link>
      <pubDate>Fri, 17 Apr 2020 00:00:00 +0000</pubDate>
      <guid>/2020/04/17/concept-flexchat/</guid>
      <description>So I&amp;rsquo;ve had this idea for a while now that I want to try out. I want to re-create a conference, or a meetup over video-conferencing, but the problem is that these events aren&amp;rsquo;t * just * webinars:&#xA;1. There&amp;#39;s usually time at the beginning or end where you get to meet the other people interested in the topic. 2. The format can vary. It can be one person talking, a panel.</description>
    </item>
    <item>
      <title>Paint By Numbers in Rust and Webassembly</title>
      <link>/2020/04/17/paint-by-wasm/</link>
      <pubDate>Fri, 17 Apr 2020 00:00:00 +0000</pubDate>
      <guid>/2020/04/17/paint-by-wasm/</guid>
      <description>When I got to the Recurse Center I wanted to write a lot of Rust, and get back into frontend development. I found a good balance between the two by writing an SPA with a background Web Worker in Rust.&#xA;I had the idea of making an automatic Paint-By-Number app, where you upload a picture and the app would turn it into one of these:&#xA;I didn&amp;rsquo;t know if this app existed before starting, so I googled around, and found ~2.</description>
    </item>
    <item>
      <title>Some nice cargo subcommands</title>
      <link>/2020/01/30/cargo-subcommands/</link>
      <pubDate>Sat, 29 Feb 2020 00:00:00 +0000</pubDate>
      <guid>/2020/01/30/cargo-subcommands/</guid>
      <description>Cargo is a fantastic tool. It&amp;rsquo;s number 1 or 2 on my list whenever someone asks me to describe the benefits of Rust.&#xA;This post is about little crates that you can install to extend cargo&amp;rsquo;s day-to-day functionality. They add things that may be a little opinionated, making the core developers leave them out of the main tool and instead available as community maintained addons.&#xA;First I&amp;rsquo;ll mention 3 great tips for cargo itself:</description>
    </item>
    <item>
      <title>Linking against static and extern in C</title>
      <link>/2020/01/30/static-extern-c/</link>
      <pubDate>Thu, 30 Jan 2020 00:00:00 +0000</pubDate>
      <guid>/2020/01/30/static-extern-c/</guid>
      <description>Earlier this week I was writing some code that used a statically linked C library, and I was trying to use a default the library documentation used in its examples, DEFAULT_CAMERA_CONFIGURATION.&#xA;I was able to use everything else in the library itself just fine, but when I&amp;rsquo;d try to use this constant, my program wouldn&amp;rsquo;t compile and give a linker error instead SYMBOL_NOT_FOUND.&#xA;When you compile code into a library or an executable, the names (variables, functions, constants) are called symbols.</description>
    </item>
    <item>
      <title>RC Day 3</title>
      <link>/2020/01/08/rc-day-3/</link>
      <pubDate>Wed, 08 Jan 2020 00:00:00 +0000</pubDate>
      <guid>/2020/01/08/rc-day-3/</guid>
      <description>RC Day 3 Not that much to talk about today.&#xA;In the morning, I had a minor epiphany about wasm importing this morning after some sleep. rust-wasm-template makes an npm package, and create-wasm-app can import it directly as JS, whereas rust-wepback-template makes a wasm bundle that your js has to import like wasm. *I think*, and I&amp;rsquo;m not sure yet, that&amp;rsquo;s why I&amp;rsquo;m trying both.&#xA;I created an event tomorrow afternoon to meet Rust interested people.</description>
    </item>
    <item>
      <title>RC Day 2</title>
      <link>/2020/01/07/rc-day-2/</link>
      <pubDate>Tue, 07 Jan 2020 00:00:00 +0000</pubDate>
      <guid>/2020/01/07/rc-day-2/</guid>
      <description>RC Day 2 Note: This post isn&amp;rsquo;t going to be as informative, more stream of thought/work-like.&#xA;I wasn&amp;rsquo;t as productive today. I didn&amp;rsquo;t sleep well last night, and pretty much didn&amp;rsquo;t move on my Rust/Wasm project. I also tired myself out talking&amp;amp;pairing a lot (but I want to get practice!)&#xA;There are chatbots that match you for pair programming and for coffee chats, and I signed up for both of them.</description>
    </item>
    <item>
      <title>RC Day 1 Field Notes</title>
      <link>/2020/01/06/rc-day-1/</link>
      <pubDate>Mon, 06 Jan 2020 00:00:00 +0000</pubDate>
      <guid>/2020/01/06/rc-day-1/</guid>
      <description>The morning and RC itself The first half of the day was overwhelming because there were a lot of people to meet and talk to. But RC is really nice! Lots of nice people, and nice in a way I hadn&amp;rsquo;t experienced before.&#xA;First, there were a few intro speeches. I really liked the Social Rules sketches because it&amp;rsquo;s one thing to hear &amp;ldquo;no well actuallies&amp;rdquo;, it&amp;rsquo;s another to watch an example play out.</description>
    </item>
    <item>
      <title>RC Day 1 Field Notes</title>
      <link>/2020/01/06/rc-day-1/</link>
      <pubDate>Mon, 06 Jan 2020 00:00:00 +0000</pubDate>
      <guid>/2020/01/06/rc-day-1/</guid>
      <description>The morning and RC itself The first half of the day was overwhelming because there were a lot of people to meet and talk to. But RC is really nice! Lots of nice people, and nice in a way I hadn&amp;rsquo;t experienced before.&#xA;First, there were a few intro speeches. I really liked the Social Rules sketches because it&amp;rsquo;s one thing to hear &amp;ldquo;no well actuallies&amp;rdquo;, it&amp;rsquo;s another to watch an example play out.</description>
    </item>
    <item>
      <title>Starting the Recurse Center Tomorrow</title>
      <link>/2020/01/05/pre-recurse/</link>
      <pubDate>Sun, 05 Jan 2020 00:00:00 +0000</pubDate>
      <guid>/2020/01/05/pre-recurse/</guid>
      <description>Ok, tomorrow I start the recurse center. Sooo exciting! Here are my current plans:&#xA;Write a lot of Rust! (Port existing projects first). I&amp;rsquo;m going start with porting this Javascript Paint-By-Number app to Rust, and then wasm so it can be used from the browser.&#xA;This will be good Rust practice, and also very fun. I&amp;rsquo;m curious about the tricks in image processing to make this better (different kinds of smoothing, image flooding, etc), and also parallelizing this with Rayon.</description>
    </item>
    <item>
      <title>Exactly Solving Smallish TSP instances</title>
      <link>/post/2019-09-02-onetree/</link>
      <pubDate>Mon, 02 Sep 2019 00:00:00 +0000</pubDate>
      <guid>/post/2019-09-02-onetree/</guid>
      <description>I was deep in a side-project rabbit hole. It turns out that the outer edge of a jigsaw puzzle form a TSP instance&amp;hellip; I was thinking of solving medium sized TSP instances, and reading the web.&#xA;This wasn&amp;rsquo;t even related; technically I didn&amp;rsquo;t even have a complete graph (most jigsaw pieces don&amp;rsquo;t fit with each other), and I could apply some constraints like the puzzle must be rectangular. And my TSP was actually asymmetric!</description>
    </item>
    <item>
      <title>Implementing a Text-File Parser with nom</title>
      <link>/post/2019-09-01-tsplib-nom-parser/</link>
      <pubDate>Sun, 01 Sep 2019 00:00:00 +0000</pubDate>
      <guid>/post/2019-09-01-tsplib-nom-parser/</guid>
      <description>Implementing a Text-File Parser with nom&#xA;This is a cleaned up overview of what I did to implement at text based parser with Nom, which should serve as maybe 35% tutorial and 90% Live-journal, train of thought rambling.&#xA;Nom is a parser combinator based parser library in Rust. Other parser libraries in Rust are (pest)[https://github.com/pest-parser/pest] which is PEG based, and (LALRPOP)[https://github.com/lalrpop/lalrpop] which generates LR(1) parsers.&#xA;###Parser Combinators Parsing is an unsolved problem, there&amp;rsquo;s no right answer like ISO 8609 for dates or serializable isolation for DBs.</description>
    </item>
    <item>
      <title>PCA On Large Matrices: You don&#39;t need Spark.</title>
      <link>/post/pca-large-matrices/</link>
      <pubDate>Tue, 11 Oct 2016 00:00:00 +0000</pubDate>
      <guid>/post/pca-large-matrices/</guid>
      <description>The other day I found this post on the Domino Data Science blog that covers calculating a PCA of a matrix with 1 million rows and 13,000 columns. This is pretty big as far as PCA usually goes. They used a Spark cluster on a 16 core machine with 30GB of RAM and it took them 27 hours.&#xA;I read up a bit on PCA and realized you can do PCA on large (several billion element) matrices much faster and without using any Big Data tech like Spark by using better algorithms and more RAM.</description>
    </item>
    <item>
      <title>About</title>
      <link>/about/</link>
      <pubDate>Thu, 23 Jul 2015 00:00:00 +0000</pubDate>
      <guid>/about/</guid>
      <description>Background I&amp;rsquo;ve worked for ~8 years programming a &amp;ldquo;full-stack&amp;rdquo; variety of systems, from embedded to React, as well as backend, and everything in between, with a fix of data processing &amp;amp; analysis. I spend a lot of time these days in React/Node apps.&#xA;I graduated from McGill with a BSc. in Software Engineering and currently live in Montréal, Canada.&#xA;Projects A smattering of my projects can be found here.&#xA;Work I&amp;rsquo;m currently in between jobs.</description>
    </item>
    <item>
      <title>Some Data Processing</title>
      <link>/post/2015-03-26-learning-ml/</link>
      <pubDate>Thu, 26 Mar 2015 00:00:00 +0000</pubDate>
      <guid>/post/2015-03-26-learning-ml/</guid>
      <description>This post is from my old blog. It&amp;rsquo;s about a weekend project where I downloaded a bunch of football match data and did some light analysis of it. I had further plans to use it for &amp;ldquo;Machine Learning&amp;rdquo; and try my hand at a prediction engine, but I didn&amp;rsquo;t get that far. Sadly, I couldn&amp;rsquo;t get the pictures back. It&amp;rsquo;s a great example of where I was 4 years ago and reminds me of the progress I&amp;rsquo;ve made.</description>
    </item>
    <item>
      <title>Why Hackers Should Study Communications</title>
      <link>/2014/10/22/why-hackers-should-study-communications/</link>
      <pubDate>Wed, 22 Oct 2014 00:00:00 +0000</pubDate>
      <guid>/2014/10/22/why-hackers-should-study-communications/</guid>
      <description>When we build new tech, we focus extensively on the topology and hierarchies we use, and the effects of certain requirements on these. For example, building a distributed, fault tolerant system requires a certain structure of computers and makes certain demands on our systems. We think about these technical requirements extensively, but why do we stop there?&#xA;Our downtime-proof systems themselves exist in the lives of people. Our requirements comes out of a massive, fuzzy network of social relations that these people live in, and how will fulfill the requirements shapes their lives and their social networks.</description>
    </item>
    <item>
      <title>Projects</title>
      <link>/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/projects/</guid>
      <description>Projects An incomplete list in semi-chronological order.&#xA;Repotracer Ever wanted to plot, eg how many tests you had in your codebase over time? Repotracer automates the process of collecting stats on your repo by checking out the last commit of each day, and running whichever stat collection script you want to measure. It&amp;rsquo;s invaluable for long-running technical debt projects so you can plot eg, number of deprecated function calls as you are removing them.</description>
    </item>
  </channel>
</rss>
