<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Misc on CuriousCoding</title><link>https://curiouscoding.nl/categories/misc/</link><description>Recent content in Misc on CuriousCoding</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 05 May 2026 00:00:00 +0200</lastBuildDate><atom:link href="https://curiouscoding.nl/categories/misc/index.xml" rel="self" type="application/rss+xml"/><item><title>List of interesting blogs</title><link>https://curiouscoding.nl/posts/list-of-blogs/</link><pubDate>Tue, 05 May 2026 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/list-of-blogs/</guid><description>&lt;div class="ox-hugo-toc toc"&gt;
&lt;div class="heading"&gt;Table of Contents&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#april-2026-the-fall-of-the-theorem-economy-david-bessis" &gt;April 2026: The fall of the theorem economy - David Bessis&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--endtoc--&gt;
&lt;p&gt;These are some links to interesting posts around the web, with some quick quotes/notes.&lt;/p&gt;
&lt;h2 id="april-2026-the-fall-of-the-theorem-economy-david-bessis"&gt;
 April 2026: &lt;a href="https://davidbessis.substack.com/p/the-fall-of-the-theorem-economy" class="external-link" target="_blank" rel="noopener"&gt;The fall of the theorem economy&lt;/a&gt; - David Bessis
 &lt;a class="heading-link" href="#april-2026-the-fall-of-the-theorem-economy-david-bessis"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;from the moment I conceived of Theorem 0.5, I knew it was true and that proving it would be straightforward.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Too long but wow:&lt;/p&gt;</description></item><item><title>NordVPN refund dark patterns</title><link>https://curiouscoding.nl/posts/nordvpn-refund/</link><pubDate>Tue, 03 Mar 2026 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/nordvpn-refund/</guid><description>&lt;p&gt;Tl;dr: if you want to refund your NordVPN payment, go to
&lt;a href="https://my.nordaccount.com/billing/billing-history?intent_rf=true" class="external-link" target="_blank" rel="noopener"&gt;my.nordaccount.com/billing/billing-history?intent_rf=true&lt;/a&gt;. The last part,
&lt;code&gt;?intent_rf=true&lt;/code&gt;, is the important bit. (If that doesn&amp;rsquo;t work, you&amp;rsquo;ll probably
have to go through the full chat-bot flow first, see below. Or maybe they
changed the magic bit.)&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I have a NordVPN subscription since many years.&lt;/p&gt;
&lt;p&gt;Recently I have been getting mails that my card is expired and that I
should update it to keep the service:&lt;/p&gt;</description></item><item><title>HPRC v2 stats</title><link>https://curiouscoding.nl/posts/hprc-v2-stats/</link><pubDate>Fri, 26 Dec 2025 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/hprc-v2-stats/</guid><description>&lt;p&gt;The Movi 2 paper (&lt;a href="#citeproc_bib_item_3"&gt;Zakeri et al. 2025&lt;/a&gt;) builds a fast index on HPRCv2 (&lt;a href="#citeproc_bib_item_1"&gt;Human Pangenome Reference Consortium 2025&lt;/a&gt;), a collection of
466 human genomes. This posts
collects some statistics on the number of BWT runs (\(r\)) of this dataset, and
makes an estimate on the number of unique mutations based on that.&lt;/p&gt;
&lt;div class="ox-hugo-table small"&gt;
&lt;div class="table-caption"&gt;
 &lt;span class="table-number"&gt;Table 1:&lt;/span&gt;
 Number of BWT runs and average run length for a random 3.2Gbp string, a human genome, and HPRCv1 and v2. The average run-length in HPRC is taken from Zakeri et al. (&lt;a href="#citeproc_bib_item_3"&gt;2025&lt;/a&gt;).
&lt;/div&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;dataset&lt;/th&gt;
 &lt;th&gt;copies&lt;/th&gt;
 &lt;th&gt;rc?&lt;/th&gt;
 &lt;th&gt;length (Gbp)&lt;/th&gt;
 &lt;th&gt;avg run-len&lt;/th&gt;
 &lt;th&gt;runs (G)&lt;/th&gt;
 &lt;th&gt;est total mut&amp;rsquo;s&lt;/th&gt;
 &lt;th&gt;unique mut rate&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;random&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;no&lt;/td&gt;
 &lt;td&gt;3.2&lt;/td&gt;
 &lt;td&gt;1.33&lt;/td&gt;
 &lt;td&gt;2.40&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;CHM13v2.0&lt;/td&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;no&lt;/td&gt;
 &lt;td&gt;3.2&lt;/td&gt;
 &lt;td&gt;1.85&lt;/td&gt;
 &lt;td&gt;1.72&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;td&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;HPRCv1&lt;/td&gt;
 &lt;td&gt;94&lt;/td&gt;
 &lt;td&gt;yes&lt;/td&gt;
 &lt;td&gt;2x 301&lt;/td&gt;
 &lt;td&gt;134&lt;/td&gt;
 &lt;td&gt;2.25&lt;/td&gt;
 &lt;td&gt;33M&lt;/td&gt;
 &lt;td&gt;1/8900&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;HPRCv2&lt;/td&gt;
 &lt;td&gt;466&lt;/td&gt;
 &lt;td&gt;yes&lt;/td&gt;
 &lt;td&gt;2x 1500&lt;/td&gt;
 &lt;td&gt;535&lt;/td&gt;
 &lt;td&gt;2.80&lt;/td&gt;
 &lt;td&gt;68M&lt;/td&gt;
 &lt;td&gt;1/22000&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;TODO: Update for the fact that HPRC run-lengths are for the version &lt;span class="underline"&gt;with&lt;/span&gt; rc!
(Include single human genome with rc)&lt;/p&gt;</description></item><item><title>Asymptotic elevators</title><link>https://curiouscoding.nl/posts/asymptotic-elevators/</link><pubDate>Mon, 22 Dec 2025 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/asymptotic-elevators/</guid><description>&lt;p&gt;I was listening to an episode of the &lt;em&gt;well there&amp;rsquo;s your problem&lt;/em&gt; podcast about
pencil towers (&lt;a href="https://www.youtube.com/watch?v=BvMYplJ59TE&amp;amp;t=11297s" class="external-link" target="_blank" rel="noopener"&gt;youtube&lt;/a&gt;), and it had a section on how elevators are a problem because they
require a lot of space. So here&amp;rsquo;s a mathematical version of that.&lt;/p&gt;
&lt;h3 id="problem-statement"&gt;
 Problem statement
 &lt;a class="heading-link" href="#problem-statement"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Given are \(n\) people that need to go to floors \(1, 2, \dots, n\).&lt;/li&gt;
&lt;li&gt;Elevators have constant acceleration, and must be standing still to
enter/exit.&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Possible elevator configurations:
&lt;ol&gt;
&lt;li&gt;single elevator over entire height&lt;/li&gt;
&lt;li&gt;partition the height in disjoint intervals, and then one elevator per interval&lt;/li&gt;
&lt;li&gt;double-deck: a single elevator that is \(h\) floors high&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Not&lt;/em&gt; allowed: two free-moving elevators above each other that make sure to
never bump into each other.&lt;/li&gt;
&lt;li&gt;Elevators have infinite capacity.&lt;/li&gt;
&lt;li&gt;There are \(k\) elevator shafts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Question:&lt;/strong&gt; How much total travel time do you need to get everyone home, if
everybody arrives at the same time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Harder(?):&lt;/strong&gt; What if the people arrive in a random permutation (1 per time
step), and their clock starts ticking as soon as they arrive?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="observations"&gt;
 Observations
 &lt;a class="heading-link" href="#observations"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Going \(n\) floors up takes at least \(O(\sqrt n)\) time.&lt;/li&gt;
&lt;li&gt;Total travel time is at least \(\sum_{i=0}^n O(\sqrt i) = O(n \sqrt n)\)&lt;/li&gt;
&lt;li&gt;\(1\) elevator carrying everyone going 1 step at a time: \(O(n^2)\) total time&lt;/li&gt;
&lt;li&gt;$2$-elevator sqrt-decomposition: one elevator stops every \(\sqrt n\) floors,
and then a (set of) second elevators for the final up to \(\sqrt n\) floors.
&lt;ul&gt;
&lt;li&gt;first elevator: \(n\) people times \(n/(\sqrt n)/2\) &amp;lsquo;big steps&amp;rsquo; on average
times \(\sqrt{\sqrt n}\) time per big step is \(O(n^{7/4})\)&lt;/li&gt;
&lt;li&gt;second elevator: \(n\) people times \((\sqrt n)\) &amp;lsquo;small steps&amp;rsquo; on average
times \(1\) per small step is \(O(n^{3.2})\)&lt;/li&gt;
&lt;li&gt;so overall the big steps dominate&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;$2$-elevator, one that stops every \(B\) floors and then \(B\) that stop every
one floor:
&lt;ul&gt;
&lt;li&gt;the first one: \(n \cdot (n/B) \cdot \sqrt B = n^2/\sqrt B\)&lt;/li&gt;
&lt;li&gt;the second one: \(n \cdot B = nB\).&lt;/li&gt;
&lt;li&gt;solve for equality: \(B = n/\sqrt B\) =&amp;gt; \(B = n^{2/3}\)&lt;/li&gt;
&lt;li&gt;so \(n^{1+2/3}\) solution&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;\(\lg n\) elevator binary tree:
&lt;ul&gt;
&lt;li&gt;\(2^k \leq n \leq 2^{k+1}\)&lt;/li&gt;
&lt;li&gt;Take first elevator to \(2^k\) if needed: time \(\sqrt{2^k} = O(\sqrt n)\)&lt;/li&gt;
&lt;li&gt;There take second elevator that goes up \(2^{k-1}\) floors if needed.&lt;/li&gt;
&lt;li&gt;Then \(2^{k-2}\) levels up&lt;/li&gt;
&lt;li&gt;and so on until the last floor.&lt;/li&gt;
&lt;li&gt;Total time per person averages \(\sqrt{2^k}/2 + \sqrt{2^{k-1}}/2 + \dots + \sqrt{2}/2 + \sqrt{1}/2 =
O(\sqrt{2^k}) = O(\sqrt n)\), so up-to-a-constant optimal total travel
time \(O(n \sqrt n)\).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Open questions:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>[WIP] Feynman problems</title><link>https://curiouscoding.nl/posts/feynman-problems/</link><pubDate>Mon, 12 Aug 2024 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/feynman-problems/</guid><description>&lt;div class="ox-hugo-toc toc has-section-numbers"&gt;
&lt;div class="heading"&gt;Table of Contents&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class="section-num"&gt;1&lt;/span&gt; &lt;a href="#space-dust" &gt;Space dust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--endtoc--&gt;
&lt;h2 id="space-dust"&gt;
 &lt;span class="section-num"&gt;1&lt;/span&gt; Space dust
 &lt;a class="heading-link" href="#space-dust"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;What is the total mass of space dust hitting the earth during the Perseids
meteor shower?&lt;/p&gt;
&lt;h2 id="references"&gt;
 References
 &lt;a class="heading-link" href="#references"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;style&gt;.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}&lt;/style&gt;&lt;div class="csl-bib-body"&gt;
&lt;/div&gt;</description></item><item><title>Links for talks &amp; posters</title><link>https://curiouscoding.nl/posts/links/</link><pubDate>Mon, 01 Jul 2024 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/links/</guid><description>&lt;div class="ox-hugo-toc toc"&gt;
&lt;div class="heading"&gt;Table of Contents&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#a-pa" &gt;A*PA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pa-bench" &gt;PA-Bench&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mod-minimizers" &gt;Mod-minimizers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--endtoc--&gt;
&lt;p&gt;There are links for my talks and posters.&lt;/p&gt;
&lt;h2 id="a-pa"&gt;
 A*PA
 &lt;a class="heading-link" href="#a-pa"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;A*PA (bioinformatic)&lt;/dt&gt;
&lt;dd&gt;Groot Koerkamp, Ragnar, and Pesho Ivanov. 2024. “Exact Global Alignment Using A* with Chaining Seed Heuristic and Match Pruning.” Edited by Tobias Marschall. &lt;i&gt;Bioinformatics&lt;/i&gt; 40 (3). &lt;a href="https://doi.org/10.1093/bioinformatics/btae032"&gt;&lt;a href="https://doi.org/10.1093/bioinformatics/btae032" class="external-link" target="_blank" rel="noopener"&gt;https://doi.org/10.1093/bioinformatics/btae032&lt;/a&gt;&lt;/a&gt;.&lt;/dd&gt;
&lt;dt&gt;A*PA2 (WABI24)&lt;/dt&gt;
&lt;dd&gt;Groot Koerkamp, Ragnar. 2024. “A*PA2: Up to 19 Faster Exact Global Alignment.” In &lt;i&gt;Wabi 2024&lt;/i&gt;, 312:17:1–17:25. Lipics. &lt;a href="https://doi.org/10.4230/LIPIcs.WABI.2024.17"&gt;&lt;a href="https://doi.org/10.4230/LIPIcs.WABI.2024.17" class="external-link" target="_blank" rel="noopener"&gt;https://doi.org/10.4230/LIPIcs.WABI.2024.17&lt;/a&gt;&lt;/a&gt;.&lt;/dd&gt;
&lt;dt&gt;Code&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://github.com/RagnarGrootKoerkamp/astar-pairwise-aligner" class="external-link" target="_blank" rel="noopener"&gt;github.com/RagnarGrootKoerkamp/astar-pairwise-aligner&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Slides&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://docs.google.com/presentation/d/1_wF9SE8k-sWn6cEqns2I54NYpRbJLt8ev2ip02WMWOA" class="external-link" target="_blank" rel="noopener"&gt;slides.google.com/&amp;hellip;&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Poster&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://curiouscoding.nl/upload/astarpa-poster.pdf" &gt;curiouscoding.nl/upload/astarpa-poster.pdf&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="pa-bench"&gt;
 PA-Bench
 &lt;a class="heading-link" href="#pa-bench"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Poster&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://curiouscoding.nl/upload/pabench-poster.pdf" &gt;curiouscoding.nl/upload/pabench-poster.pdf&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Code&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://github.com/pairwise-alignment/pa-bench" class="external-link" target="_blank" rel="noopener"&gt;github.com/pairwise-alignment/pa-bench&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="mod-minimizers"&gt;
 Mod-minimizers
 &lt;a class="heading-link" href="#mod-minimizers"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Mod-minimizer (WABI24)&lt;/dt&gt;
&lt;dd&gt;Groot Koerkamp, Ragnar, and Giulio Ermanno Pibiri. 2024. “The Mod-Minimizer: A Simple and Efficient Sampling Algorithm for Long $k$-Mers.” In &lt;i&gt;Wabi 2024&lt;/i&gt;, 312:11:1–11:23. Lipics. &lt;a href="https://doi.org/10.4230/LIPIcs.WABI.2024.11"&gt;&lt;a href="https://doi.org/10.4230/LIPIcs.WABI.2024.11" class="external-link" target="_blank" rel="noopener"&gt;https://doi.org/10.4230/LIPIcs.WABI.2024.11&lt;/a&gt;&lt;/a&gt;.&lt;/dd&gt;
&lt;dt&gt;Code (C++)&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://github.com/jermp/minimizers" class="external-link" target="_blank" rel="noopener"&gt;github.com/jermp/minimizers&lt;/a&gt;&lt;/dd&gt;
&lt;dt&gt;Code (Rust)&lt;/dt&gt;
&lt;dd&gt;&lt;a href="https://github.com/RagnarGrootKoerkamp/minimizers" class="external-link" target="_blank" rel="noopener"&gt;github.com/RagnarGrootKoerkamp/minimizers&lt;/a&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="references"&gt;
 References
 &lt;a class="heading-link" href="#references"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;style&gt;.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}&lt;/style&gt;&lt;div class="csl-bib-body"&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_1"&gt;&lt;/a&gt;Daily, Jeff. 2016. “Parasail: SIMD C Library for Global, Semi-Global, and Local Pairwise Sequence Alignments.” &lt;i&gt;Bmc Bioinformatics&lt;/i&gt; 17 (1). &lt;a href="https://doi.org/10.1186/s12859-016-0930-z"&gt;https://doi.org/10.1186/s12859-016-0930-z&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_2"&gt;&lt;/a&gt;Dijkstra, Edsger W. 1959. “A Note on Two Problems in Connexion with Graphs.” &lt;i&gt;Numerische Mathematik&lt;/i&gt; 1 (1): 269–71. &lt;a href="https://doi.org/10.1007/bf01386390"&gt;https://doi.org/10.1007/bf01386390&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_3"&gt;&lt;/a&gt;Groot Koerkamp, Ragnar. 2024. “A*PA2: Up to 19 Faster Exact Global Alignment.” In &lt;i&gt;Wabi 2024&lt;/i&gt;, 312:17:1–17:25. Lipics. &lt;a href="https://doi.org/10.4230/LIPIcs.WABI.2024.17"&gt;https://doi.org/10.4230/LIPIcs.WABI.2024.17&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_4"&gt;&lt;/a&gt;Groot Koerkamp, Ragnar, and Pesho Ivanov. 2024. “Exact Global Alignment Using A* with Chaining Seed Heuristic and Match Pruning.” Edited by Tobias Marschall. &lt;i&gt;Bioinformatics&lt;/i&gt; 40 (3). &lt;a href="https://doi.org/10.1093/bioinformatics/btae032"&gt;https://doi.org/10.1093/bioinformatics/btae032&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_5"&gt;&lt;/a&gt;Groot Koerkamp, Ragnar, and Giulio Ermanno Pibiri. 2024. “The Mod-Minimizer: A Simple and Efficient Sampling Algorithm for Long $k$-Mers.” In &lt;i&gt;Wabi 2024&lt;/i&gt;, 312:11:1–11:23. Lipics. &lt;a href="https://doi.org/10.4230/LIPIcs.WABI.2024.11"&gt;https://doi.org/10.4230/LIPIcs.WABI.2024.11&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_6"&gt;&lt;/a&gt;Hirschberg, Daniel S. 1975. “A Linear Space Algorithm for Computing Maximal Common Subsequences.” &lt;i&gt;Communications of the Acm&lt;/i&gt; 18 (6): 341–43. &lt;a href="https://doi.org/10.1145/360825.360861"&gt;https://doi.org/10.1145/360825.360861&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_7"&gt;&lt;/a&gt;Ivanov, Pesho, Benjamin Bichsel, and Martin Vechev. 2022. “Fast and Optimal Sequence-to-Graph Alignment Guided by Seeds.” In &lt;i&gt;Recomb&lt;/i&gt;, 306–25. Springer International Publishing. &lt;a href="https://doi.org/10.1007/978-3-031-04749-7_22"&gt;https://doi.org/10.1007/978-3-031-04749-7_22&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_8"&gt;&lt;/a&gt;Li, Heng. 2018. “Minimap2: Pairwise Alignment for Nucleotide Sequences.” Edited by Inanc Birol. &lt;i&gt;Bioinformatics&lt;/i&gt; 34 (18): 3094–3100. &lt;a href="https://doi.org/10.1093/bioinformatics/bty191"&gt;https://doi.org/10.1093/bioinformatics/bty191&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_9"&gt;&lt;/a&gt;Liu, Daniel, and Martin Steinegger. 2023. “Block Aligner: an adaptive SIMD-accelerated aligner for sequences and position-specific scoring matrices.” &lt;i&gt;Bioinformatics&lt;/i&gt;. &lt;a href="https://doi.org/10.1093/bioinformatics/btad487"&gt;https://doi.org/10.1093/bioinformatics/btad487&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_10"&gt;&lt;/a&gt;Marco-Sola, Santiago, Jordan M Eizenga, Andrea Guarracino, Benedict Paten, Erik Garrison, and Miquel Moreto. 2023. “Optimal Gap-Affine Alignment in $O(s)$ Space.” Edited by Pier Luigi Martelli. &lt;i&gt;Bioinformatics&lt;/i&gt; 39 (2). &lt;a href="https://doi.org/10.1093/bioinformatics/btad074"&gt;https://doi.org/10.1093/bioinformatics/btad074&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_11"&gt;&lt;/a&gt;Marco-Sola, Santiago, Juan Carlos Moure, Miquel Moreto, and Antonio Espinosa. 2021. “Fast Gap-Affine Pairwise Alignment Using the Wavefront Algorithm.” &lt;i&gt;Bioinformatics&lt;/i&gt; 37 (4): 456–63. &lt;a href="https://doi.org/10.1093/bioinformatics/btaa777"&gt;https://doi.org/10.1093/bioinformatics/btaa777&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_12"&gt;&lt;/a&gt;Myers, Gene. 1986. “An $O(ND)$ Difference Algorithm and Its Variations.” &lt;i&gt;Algorithmica&lt;/i&gt; 1 (1–4): 251–66. &lt;a href="https://doi.org/10.1007/bf01840446"&gt;https://doi.org/10.1007/bf01840446&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_13"&gt;&lt;/a&gt;———. 1999. “A Fast Bit-Vector Algorithm for Approximate String Matching Based on Dynamic Programming.” &lt;i&gt;Journal of the Acm&lt;/i&gt; 46 (3): 395–415. &lt;a href="https://doi.org/10.1145/316542.316550"&gt;https://doi.org/10.1145/316542.316550&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_14"&gt;&lt;/a&gt;Suzuki, Hajime, and Masahiro Kasahara. 2018. “Introducing Difference Recurrence Relations for Faster Semi-Global Alignment of Long Sequences.” &lt;i&gt;BMC Bioinformatics&lt;/i&gt; 19 (S1). &lt;a href="https://doi.org/10.1186/s12859-018-2014-8"&gt;https://doi.org/10.1186/s12859-018-2014-8&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_15"&gt;&lt;/a&gt;Ukkonen, Esko. 1985. “Algorithms for Approximate String Matching.” &lt;i&gt;Information and Control&lt;/i&gt; 64 (1–3): 100–118. &lt;a href="https://doi.org/10.1016/s0019-9958(85)80046-2"&gt;https://doi.org/10.1016/s0019-9958(85)80046-2&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_16"&gt;&lt;/a&gt;Šošić, Martin, and Mile Šikić. 2017. “Edlib: a C/C++ library for fast, exact sequence alignment using edit distance.” Edited by John Hancock. &lt;i&gt;Bioinformatics&lt;/i&gt; 33 (9): 1394–95. &lt;a href="https://doi.org/10.1093/bioinformatics/btw753"&gt;https://doi.org/10.1093/bioinformatics/btw753&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>A*PA talk @ CWI</title><link>https://curiouscoding.nl/posts/astarpa-talk-cwi/</link><pubDate>Wed, 27 Dec 2023 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/astarpa-talk-cwi/</guid><description>&lt;p&gt;I recently gave a talk about A*PA at CWI.
Sadly the recording doesn&amp;rsquo;t show the blackboard, but either way, find it &lt;a href="https://ragnargrootkoerkamp.nl/upload/astarpa-talk-cwi.mp4" class="external-link" target="_blank" rel="noopener"&gt;here&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>ALPACA/PANGAIA winter workshop notes</title><link>https://curiouscoding.nl/posts/winter-workshop-2023/</link><pubDate>Mon, 20 Nov 2023 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/winter-workshop-2023/</guid><description>&lt;div class="ox-hugo-toc toc"&gt;
&lt;div class="heading"&gt;Table of Contents&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#monday" &gt;Monday&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#fimpera-bloom-filter-for-kmers" &gt;Fimpera: bloom filter for kmers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#progress-of-tools" &gt;Progress of tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#order-preserving-mphf-of-minimizers" &gt;Order-preserving MPHF of minimizers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#algorithmic-bottlenecks-in-sshash" &gt;Algorithmic bottlenecks in SSHash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#fourier-transform-of-the-human-genome" &gt;Fourier transform of the human genome?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#tuesday" &gt;Tuesday&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#variant-types" &gt;Variant types&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#wednesday" &gt;Wednesday&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#sshash" &gt;SSHash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pthash" &gt;PTHash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#de-bruijn-graphs" &gt;de Bruijn Graphs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--endtoc--&gt;
&lt;p&gt;These are notes of discussions at the ALPACA/PANGAIA conference in
November 2023.&lt;/p&gt;
&lt;h2 id="monday"&gt;
 Monday
 &lt;a class="heading-link" href="#monday"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;I had interesting discussions with Giulio, Paul, and Lucas Robidou.&lt;/p&gt;</description></item><item><title>Notes on writing course</title><link>https://curiouscoding.nl/posts/writing-course/</link><pubDate>Tue, 14 Nov 2023 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/writing-course/</guid><description>&lt;div class="ox-hugo-toc toc"&gt;
&lt;div class="heading"&gt;Table of Contents&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#lecture-1-14-november" &gt;Lecture 1, 14 November&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#resources" &gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#reader-friendlyness" &gt;Reader friendlyness&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#typical-problems" &gt;Typical problems&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#lecture-2-21-november" &gt;Lecture 2, 21 November&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#paragraph-level-expectations" &gt;Paragraph level expectations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#flow" &gt;Flow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#assignment-for-next-week" &gt;Assignment for next week&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#lecture-3-28-november" &gt;Lecture 3, 28 November&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#bad-organization" &gt;Bad organization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#figures" &gt;Figures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#references-to-figures" &gt;References to figures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#indicative-vs-informative--ex-dot-7" &gt;Indicative vs Informative (ex. 7)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#lecture-4-december-5" &gt;Lecture 4, December 5&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#introduction" &gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#conclusion" &gt;Conclusion&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#tense" &gt;Tense&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#lecture-5-december-12" &gt;Lecture 5, December 12&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#abstracts" &gt;Abstracts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#titles" &gt;Titles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#punctuation" &gt;Punctuation&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#comma" &gt;Comma&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#dashes" &gt;Dashes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--endtoc--&gt;
&lt;p&gt;Some notes from the writing course I&amp;rsquo;m taking.&lt;/p&gt;</description></item><item><title>BAPCtools instruction</title><link>https://curiouscoding.nl/posts/bapctools-demo/</link><pubDate>Tue, 17 Oct 2023 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/bapctools-demo/</guid><description>&lt;p&gt;Steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Clone &lt;a href="https://github.com/RagnarGrootKoerkamp/BAPCtools" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/RagnarGrootKoerkamp/BAPCtools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Make an alias to the executable:
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -s ~/git/BAPCtools/bin/tools.py ~/bin/bt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Create a new problem:
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/problems
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bt new_problem my_problem_name
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/problems/my_problem_name
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;You now have the following:
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;span class="lnt"&gt;21
&lt;/span&gt;&lt;span class="lnt"&gt;22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── data
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── sample
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── 1.in # Sample testcase input
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   │   └── 1.ans # Sample testcase output
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── secret
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── generators # for later
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── input_validators # for later
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── output_validators # for later
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   └── ...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── problem_statement
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── figure.tex.template
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│   ├── problem.en.tex # The problem statement
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── problem.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── submissions
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── accepted
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │   └── name.cpp # A submission
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── run_time_error
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├── time_limit_exceeded
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └── wrong_answer
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Edit the statement &lt;code&gt;problem.en.tex&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Make some samples by hand in &lt;code&gt;data/samples/*.{in,ans}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Write a solution in &lt;code&gt;submissions/accepted/&amp;lt;yourname&amp;gt;.{py,cpp,java}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;bt run&lt;/code&gt; or &lt;code&gt;bt run submissions/accepted/&amp;lt;submission&amp;gt;&lt;/code&gt; to test your submission.&lt;/li&gt;
&lt;/ol&gt;</description></item><item><title>DSB 2023</title><link>https://curiouscoding.nl/posts/dsb-2023/</link><pubDate>Mon, 20 Mar 2023 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/dsb-2023/</guid><description>&lt;p&gt;These are notes for &lt;a href="https://dsb-meeting.github.io/DSB2023/" class="external-link" target="_blank" rel="noopener"&gt;DSB 2023&lt;/a&gt;. They&amp;rsquo;re not very structured though. I usually find
methods more interesting than results.&lt;/p&gt;
&lt;h2 id="day-1-tuesday"&gt;
 Day 1, Tuesday
 &lt;a class="heading-link" href="#day-1-tuesday"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="practical-data-structures-for-longest-common-extensions-alexander-herlez"&gt;
 Practical data structures for longest common extensions, Alexander Herlez
 &lt;a class="heading-link" href="#practical-data-structures-for-longest-common-extensions-alexander-herlez"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;LCE: longest common extension: given \(i\), \(j\), the max \(k\) s.t. \(A[i, i+k) = A[j, j+k)\).&lt;/li&gt;
&lt;li&gt;alg:
&lt;ul&gt;
&lt;li&gt;compare first k&lt;/li&gt;
&lt;li&gt;if same: sample a subset and use black-box datastructure.&lt;/li&gt;
&lt;li&gt;similar idea to minhash/mash kmer selection methods, same(?) as syncmers&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;string synchronizing sets (SSS):
&lt;ul&gt;
&lt;li&gt;rolling hash. sample a position when it has minimal hash in it&amp;rsquo;s window&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/herlaz/alx" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/herlaz/alx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;useful for constant time LCE when extensions are length 1000 or longer. Not
faster for shorter LCEs.&lt;/li&gt;
&lt;li&gt;note: WFA uses this &lt;strong&gt;a lot&lt;/strong&gt; and it&amp;rsquo;s actually the bottleneck, but really only
for short extensions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="pan-genome-de-bruijn-graph-using-the-bidirectional-fm-index-lore-depuydt"&gt;
 Pan-genome de Bruijn graph using the bidirectional FM-index, Lore Depuydt
 &lt;a class="heading-link" href="#pan-genome-de-bruijn-graph-using-the-bidirectional-fm-index-lore-depuydt"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Goal: graph of pangenome with correspondences to reads&lt;/li&gt;
&lt;li&gt;Implicit graph by Beller and Ohlebusch: build on top of FM-index of concatenation&lt;/li&gt;
&lt;li&gt;New in Nexus:
&lt;ul&gt;
&lt;li&gt;Bidirectional FM-index for bidirectional traversal
&lt;ul&gt;
&lt;li&gt;down/upstream neighbourhoods can be visualized efficiently using traversal&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Search schemes for lossless approximate pattern matching (separate talk)
&lt;ul&gt;
&lt;li&gt;query -&amp;gt; candidate matches -&amp;gt; graph paths -&amp;gt; read paths&lt;/li&gt;
&lt;li&gt;Lossless aligner; reports many more occurrences than PuffAligner, although
this does make it slower for &amp;gt;0 edit distance&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;checkpoints k-mers inside long nodes
&lt;ul&gt;
&lt;li&gt;this way, to find the start of a long (compressed) node goes down significantly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Memory usage: Bidirectional FM-index is &amp;gt;80%.
&lt;ul&gt;
&lt;li&gt;Bidir FM is linear in total size of pangenome.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Future: r index, which uses less memory.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="indexing-large-metagenomics-projects-with-abundances-pierre-peterlongo"&gt;
 Indexing large metagenomics projects with abundances, Pierre Peterlongo
 &lt;a class="heading-link" href="#indexing-large-metagenomics-projects-with-abundances-pierre-peterlongo"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Indexing read sets with abundance in &amp;lt;100GB with fast querying with low ram.&lt;/li&gt;
&lt;li&gt;Uses counting bloom filters&lt;/li&gt;
&lt;li&gt;&lt;code&gt;fimpera&lt;/code&gt; decreases the overestimation, allowing less memory usage.&lt;/li&gt;
&lt;li&gt;Once k-mers are sorted, all processes are sequential! 1000x speedup&lt;/li&gt;
&lt;li&gt;instead of querying k-mers, store all slightly smaller s-mers and query all of
them for much better false positive rates&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="µ-pbwt-enabling-the-storage-and-use-of-uk-biobank-data-on-a-commodity-laptop-davide-cozzi"&gt;
 µ-PBWT: Enabling the Storage and Use of UK Biobank Data on a Commodity Laptop, Davide Cozzi
 &lt;a class="heading-link" href="#%c2%b5-pbwt-enabling-the-storage-and-use-of-uk-biobank-data-on-a-commodity-laptop-davide-cozzi"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;r-index equivalent of PBWT, using run-length encoding&lt;/li&gt;
&lt;li&gt;10-100x less memory than PBWT.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/dlcgold/muPBWT" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/dlcgold/muPBWT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="genome-on-diet-taming-large-scale-genomic-analyses-via-sparsified-genomics-mohammed-alser"&gt;
 Genome-on-Diet: Taming Large-Scale Genomic Analyses via Sparsified Genomics, Mohammed Alser
 &lt;a class="heading-link" href="#genome-on-diet-taming-large-scale-genomic-analyses-via-sparsified-genomics-mohammed-alser"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Building an index on spaced kmers/patterns&lt;/li&gt;
&lt;li&gt;Only some positions are sampled. i.e.: sample every other basepair and build
kmers on those.&lt;/li&gt;
&lt;li&gt;Index is built on the fly; not preprocessed&lt;/li&gt;
&lt;li&gt;to 2x faster and 2x less memory than minimap2.&lt;/li&gt;
&lt;li&gt;to 50x faster and 700x less memory than other tools.&lt;/li&gt;
&lt;li&gt;summary: subsample 1 in m bits and run minimap on top of that.&lt;/li&gt;
&lt;li&gt;similar to spaced seeds, but additionally subsamples the number of kmers.&lt;/li&gt;
&lt;li&gt;Faster and better accuracy than spaced seeds.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="spectrum-preserving-tilings-enable-sparse-and-modular-reference-indexing-giulio-ermanno-pibiri"&gt;
 Spectrum preserving tilings enable sparse and modular reference indexing, Giulio Ermanno Pibiri
 &lt;a class="heading-link" href="#spectrum-preserving-tilings-enable-sparse-and-modular-reference-indexing-giulio-ermanno-pibiri"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Spectrum preserving tiling: Given a set of reads and their DBG, we can for
each read store location information per unitig in this larger graph&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;SSHash&lt;/code&gt; to store all unitigs.&lt;/li&gt;
&lt;li&gt;Sample a subset of unitigs to store location information for. Non-sampled
unitigs can still be recovered by querying adjacent unitig locations instead.&lt;/li&gt;
&lt;li&gt;Main contribution: reducing space usage of the reverse index: mapping kmers to locations.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/COMBINE-lab/pufferfish2" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/COMBINE-lab/pufferfish2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="towards-a-lower-memory-chunked-graph-data-structure-inspired-by-minecraft-fawaz-dabbaghie"&gt;
 Towards a lower-memory chunked graph data structure inspired by Minecraft, Fawaz Dabbaghie
 &lt;a class="heading-link" href="#towards-a-lower-memory-chunked-graph-data-structure-inspired-by-minecraft-fawaz-dabbaghie"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Chunk big graphs as in minecraft chunks.&lt;/li&gt;
&lt;li&gt;First approach: split human genome graph in 1000 parts using BFS&amp;rsquo;s from random positions&lt;/li&gt;
&lt;li&gt;Already big speedup!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TODO: simple idea and super effective. Maybe play around with this at some point&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="optimal-worst-case-design-of-gapped-k-mer-masks-sven-rahmann"&gt;
 Optimal Worst-Case Design of Gapped k-mer Masks, Sven Rahmann
 &lt;a class="heading-link" href="#optimal-worst-case-design-of-gapped-k-mer-masks-sven-rahmann"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Gapped kmers are better in the worst case than normal kmers:
&lt;ul&gt;
&lt;li&gt;If you can make \(x\) substitutions in a length \(n\) strings, gapped kmers need
a higher \(x\) to mutate (break) all of them.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Second optimization goal: count number of recovered positions, instead of
number of kmers.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#########_#########_#########&lt;/code&gt; (27,29)-mer: in a \(n=100\) window, lack of such
matches implies at least 4 errors. Normal 27-mers imply at least 3 errors.&lt;/li&gt;
&lt;li&gt;boundary effects (changing \(n\)) are not super strong.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TODO: read old papers and see if this could be used for A*PA&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;How about inexact spaced matches?&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="locality-preserving-hashing-of-k-mers-yoshihiro-shibuya"&gt;
 Locality-Preserving Hashing of k-mers, Yoshihiro Shibuya
 &lt;a class="heading-link" href="#locality-preserving-hashing-of-k-mers-yoshihiro-shibuya"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Mapping of kmers to \([0, 4^n)\) such that kmers with same minimizer are close.&lt;/li&gt;
&lt;li&gt;Split mapping based on whether the minimizer is &lt;em&gt;left-maximal&lt;/em&gt; and/or
&lt;em&gt;right-maximal&lt;/em&gt; inside its super-k-mer.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jermp/lphash" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/jermp/lphash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Less than 1.44 bits/element for large k (which is the generic lower bound).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="space-efficient-k-mer-counting-using-an-implicit-sequence-representation-miika-leinonen"&gt;
 Space-efficient k-mer counting using an implicit sequence representation, Miika Leinonen
 &lt;a class="heading-link" href="#space-efficient-k-mer-counting-using-an-implicit-sequence-representation-miika-leinonen"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Map kmers into a hashtable storing at each index:
&lt;ul&gt;
&lt;li&gt;count of kmers mapping here&lt;/li&gt;
&lt;li&gt;the last character of the kmer&lt;/li&gt;
&lt;li&gt;the index of the preceding kmer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Memory usage: 25%-50% of normal hash table&lt;/li&gt;
&lt;li&gt;saves more memory for larger k.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="vechat-correcting-errors-in-long-reads-using-variation-graphs-alexander-schönhuth"&gt;
 VeChat: correcting errors in long reads using variation graphs, Alexander Schönhuth
 &lt;a class="heading-link" href="#vechat-correcting-errors-in-long-reads-using-variation-graphs-alexander-sch%c3%b6nhuth"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Error correction using graph cleaning&lt;/li&gt;
&lt;li&gt;Clean using repeated steps of:
&lt;ul&gt;
&lt;li&gt;remove edges with low coverage&lt;/li&gt;
&lt;li&gt;clean edges with low &lt;em&gt;confidence&lt;/em&gt;: the relative weight this edge has with
respect to total weight of edges going out of predecessor or going into successor&lt;/li&gt;
&lt;li&gt;clean isolated nodes and leaf edges&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Up to 10x less remaining errors than other tools.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="fixing-homopolymer-errors-in-hifi-reads-using-dictionary-compression-diego-diaz-dominguez"&gt;
 Fixing homopolymer errors in HiFi reads using dictionary compression, Diego Diaz-Dominguez
 &lt;a class="heading-link" href="#fixing-homopolymer-errors-in-hifi-reads-using-dictionary-compression-diego-diaz-dominguez"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Encode sequence recursively using grammer based&lt;/li&gt;
&lt;li&gt;Grammar compression is good on its own&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TODO: read paper&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="orthanq-orthogonal-evidence-based-haplotype-quantification-hamdiye-uzuner"&gt;
 Orthanq: orthogonal evidence based haplotype quantification, Hamdiye Uzuner
 &lt;a class="heading-link" href="#orthanq-orthogonal-evidence-based-haplotype-quantification-hamdiye-uzuner"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Variant calling pipeline&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/orthanq" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/orthanq&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="day-2-wednesday"&gt;
 Day 2, Wednesday
 &lt;a class="heading-link" href="#day-2-wednesday"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;h3 id="random-wheeler-graphs-riccardo-maso"&gt;
 Random Wheeler graphs, Riccardo Maso
 &lt;a class="heading-link" href="#random-wheeler-graphs-riccardo-maso"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;missed it :(&lt;/p&gt;</description></item><item><title>A Combinatorial Identity</title><link>https://curiouscoding.nl/posts/a-combinatorial-identity/</link><pubDate>Sun, 16 Oct 2022 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/a-combinatorial-identity/</guid><description>&lt;p&gt;Some notes regarding the identity&lt;/p&gt;
&lt;p&gt;\begin{equation}
\sum_{k=0}^n \binom{2k}k \binom{2n-2k}{n-k} = 4^n
\end{equation}&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gould has two derivations:
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20171225173015/http://math.wvu.edu/~gould/Vol.5.PDF" class="external-link" target="_blank" rel="noopener"&gt;The first&lt;/a&gt;, from Jensens equality, (18) in (&lt;a href="#citeproc_bib_item_2"&gt;Jensen 1902&lt;/a&gt;; &lt;a href="#citeproc_bib_item_3"&gt;Shijie 1303&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://web.archive.org/web/20171118022119/http://www.math.wvu.edu/~gould/Vol.4.PDF" class="external-link" target="_blank" rel="noopener"&gt;A second&lt;/a&gt; via the Chu-Vandermonde convolution:&lt;/p&gt;
&lt;p&gt;\begin{equation}
\sum_{k=0}^n \binom{x}k \binom{y}{n-k} = \binom{x+y}n
\end{equation}&lt;/p&gt;
&lt;p&gt;using \(x=y=-\frac 12\) and using the &lt;em&gt;$-\frac 12$-transform&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;\begin{equation}
\binom{-1/2}{n} = (-1)^n\binom{2n}{n}\frac 1 {2^{2n}}
\end{equation}&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Duarte and de Oliveira (&lt;a href="#citeproc_bib_item_1"&gt;2012&lt;/a&gt;) has a combinatorial proof.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="references"&gt;
 References
 &lt;a class="heading-link" href="#references"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;style&gt;.csl-entry{text-indent: -1.5em; margin-left: 1.5em;}&lt;/style&gt;&lt;div class="csl-bib-body"&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_1"&gt;&lt;/a&gt;Duarte, Rui, and António Guedes de Oliveira. 2012. “New Developments of an Old Identity.” &lt;a href="https://doi.org/10.48550/ARXIV.1203.5424"&gt;https://doi.org/10.48550/ARXIV.1203.5424&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_2"&gt;&lt;/a&gt;Jensen, J. L. W. V. 1902. “Sur Une Identité D’abel et Sur D’autres Formules Analogues.” &lt;i&gt;Acta Mathematica&lt;/i&gt; 26 (0): 307–18. &lt;a href="https://doi.org/10.1007/bf02415499"&gt;https://doi.org/10.1007/bf02415499&lt;/a&gt;.&lt;/div&gt;
 &lt;div class="csl-entry"&gt;&lt;a id="citeproc_bib_item_3"&gt;&lt;/a&gt;Shijie, Zhu. 1303. &lt;i&gt;Jade Mirror of the Four Unknowns&lt;/i&gt;.&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>Competitive Programming Lecture</title><link>https://curiouscoding.nl/posts/competitive-programming-lecture/</link><pubDate>Wed, 28 Sep 2022 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/competitive-programming-lecture/</guid><description>&lt;div class="ox-hugo-toc toc"&gt;
&lt;div class="heading"&gt;Table of Contents&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#contest-strategies" &gt;Contest strategies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pairwise-alignment-using-a" &gt;Pairwise Alignment using A*&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#exercises" &gt;Exercises&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--endtoc--&gt;
&lt;h2 id="contest-strategies"&gt;
 Contest strategies
 &lt;a class="heading-link" href="#contest-strategies"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Preparation&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;Thinking costs energy!&lt;/li&gt;
&lt;li&gt;Sleep enough; early to bed the 2 nights before.&lt;/li&gt;
&lt;li&gt;No practising on contest day (and the day before); it just takes energy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;dt&gt;During the contest&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;Eat! At the very least take a break halfway with the entire team and eat some snacks.&lt;/li&gt;
&lt;li&gt;Make sure to read &lt;strong&gt;all&lt;/strong&gt; the problems before the end of the contest. In the
beginning, split the problems to find the simple ones, but towards the end,
find a problem you think you can solve (because of the scoreboard or because
you like it), and work on it as a team.&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;dt&gt;Coding&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;Ideally, use C++. Otherwise, Python can be used too.
&lt;ul&gt;
&lt;li&gt;For big-integer problems, prefer Python.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use a TCR (e.g. &lt;a href="https://github.com/TimonKnigge/TCR" class="external-link" target="_blank" rel="noopener"&gt;https://github.com/TimonKnigge/TCR&lt;/a&gt;): a 25 page document
containing algorithms. Ideally, implement all of them yourself so you know
how they work. Otherwise download one.&lt;/li&gt;
&lt;li&gt;Make a template, and add it to your TCR. One person should type this in the
first minutes of the contest and copy it to &lt;code&gt;A.cpp&lt;/code&gt;, &lt;code&gt;B.cpp&lt;/code&gt;, &amp;hellip; .&lt;/li&gt;
&lt;li&gt;When you think you solved a problem:
&lt;ul&gt;
&lt;li&gt;Decide &lt;em&gt;exactly&lt;/em&gt; how the code will look. Maybe write pseudocode on paper.&lt;/li&gt;
&lt;li&gt;For hard problems: verify your solution with a teammate.&lt;/li&gt;
&lt;li&gt;Once the keyboard is free, start typing it out. If needed, ask one
teammate to look while you code.&lt;/li&gt;
&lt;li&gt;Typical distribution:
&lt;ul&gt;
&lt;li&gt;1 person typing&lt;/li&gt;
&lt;li&gt;1 person solving a new problem&lt;/li&gt;
&lt;li&gt;1 person helping the other 2: spotting typos or working on problems.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="pairwise-alignment-using-a"&gt;
 Pairwise Alignment using A*
 &lt;a class="heading-link" href="#pairwise-alignment-using-a"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Some resources you can use:&lt;/p&gt;</description></item><item><title>Paper styleguide</title><link>https://curiouscoding.nl/posts/styleguide/</link><pubDate>Sat, 06 Aug 2022 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/styleguide/</guid><description>&lt;div class="ox-hugo-toc toc"&gt;
&lt;div class="heading"&gt;Table of Contents&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#notation" &gt;Notation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#naming-and-style" &gt;Naming and style&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;!--endtoc--&gt;
&lt;p&gt;This is a growing list of notation and style decisions Pesho and I made during the
writing of our paper, written down so that we don&amp;rsquo;t have to spend time on it again
next time.&lt;/p&gt;
&lt;h2 id="notation"&gt;
 Notation
 &lt;a class="heading-link" href="#notation"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Math&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;Modulo: \(a\bmod m\) for remainder, \(a\equiv b\pmod m\) for equivalence.&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;dt&gt;Alphabet&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;\(\Sigma\), \(|\Sigma| = 4\)&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;dt&gt;Sequences&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;\(A = \overline{a_0\dots a_{n-1}} \in \Sigma^*\), \(|A| = n\)&lt;/li&gt;
&lt;li&gt;\(B = \overline{b_0\dots b_{m-1}} \in \Sigma^*\), \(|B| = m\)&lt;/li&gt;
&lt;li&gt;Edit distance \(\mathrm{ed}(A, B)\)&lt;/li&gt;
&lt;li&gt;\(A_{&amp;lt;i} = \overline{a_0\dots a_{i-1}}\)&lt;/li&gt;
&lt;li&gt;\(A_{\geq i} = \overline{a_i\dots a_{n-1}}\)&lt;/li&gt;
&lt;li&gt;\(A_{i\dots i&amp;rsquo;} = \overline{a_i\dots a_{i&amp;rsquo;-1}}\)&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;dt&gt;Edit graph&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;
&lt;li&gt;State \(\langle i, j\rangle\)&lt;/li&gt;
&lt;li&gt;Graph \(G(V, E)\) where \(V = \{\langle i,j\rangle | 0\leq i\leq n, 0\leq j\leq m\}\)&lt;/li&gt;
&lt;li&gt;Root state \(v_s = \langle 0,0\rangle\)&lt;/li&gt;
&lt;li&gt;Target state \(v_t = \langle n,m\rangle\)&lt;/li&gt;
&lt;li&gt;Distance \(d(u, v)\)&lt;/li&gt;
&lt;li&gt;Path \(\pi\)&lt;/li&gt;
&lt;li&gt;Shortest path \(\pi^*\)&lt;/li&gt;
&lt;li&gt;Cost of path \(cost(\pi)\), \(cost(\pi^*) = d(v_s, v_t) = \mathrm{ed}(A, B)\).&lt;/li&gt;
&lt;/ul&gt;
&lt;/dd&gt;
&lt;/dl&gt;
&lt;h2 id="naming-and-style"&gt;
 Naming and style
 &lt;a class="heading-link" href="#naming-and-style"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Vertex, not node&lt;/p&gt;</description></item><item><title>IGGSY 22 Slides</title><link>https://curiouscoding.nl/posts/iggsy-presentation-slides/</link><pubDate>Sun, 12 Jun 2022 12:04:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/iggsy-presentation-slides/</guid><description>&lt;p&gt;These are the slides Pesho Ivanov and I presented at IGGSY 2022 on Astarix and A*PA.&lt;/p&gt;
&lt;p&gt;Drive: &lt;a href="https://docs.google.com/presentation/d/1VHM0GADifQ6COi4VpUn3FNTtt-NxwFLHa7itAbx1GJM/edit?usp=sharing" class="external-link" target="_blank" rel="noopener"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Pdf: &lt;a href="http://ragnargrootkoerkamp.nl/upload/A%20for%20optimal%20sequence%20alignment.S1vgF6CTik.pdf" class="external-link" target="_blank" rel="noopener"&gt;here&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Glossary</title><link>https://curiouscoding.nl/posts/glossary/</link><pubDate>Thu, 14 Apr 2022 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/glossary/</guid><description>&lt;p&gt;This is a growing list of ambiguous terms and their definitions.
More of a place to store random remarks than a complete reference for now.&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;diagonal transition&lt;/dt&gt;
&lt;dd&gt;name introduced by Navarro (&lt;a href="#citeproc_bib_item_1"&gt;2001&lt;/a&gt;)&lt;/dd&gt;
&lt;dt&gt;approximate&lt;/dt&gt;
&lt;dd&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;approximate algorithm&lt;/em&gt;: an algorithms that does not always give the
&lt;em&gt;correct&lt;/em&gt; answer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;$k$-approximate string matching&lt;/em&gt;: variant semi-global alignment where we
find all matches of a pattern in a reference with at most \(k\) mistakes.&lt;/p&gt;
&lt;p&gt;Also &lt;em&gt;approximate string matching&lt;/em&gt;: alternative name for global pairwise alignment.&lt;/p&gt;</description></item><item><title>Hello, World!</title><link>https://curiouscoding.nl/posts/hello-world/</link><pubDate>Wed, 13 Oct 2021 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/hello-world/</guid><description>&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-cpp" data-lang="cpp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;cout&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;Hello, World!&amp;#34;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;std&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;endl&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;</description></item><item><title>SE Endurance: Early game</title><link>https://curiouscoding.nl/posts/factorio-early-game/</link><pubDate>Mon, 26 Apr 2021 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/factorio-early-game/</guid><description>&lt;p&gt;&lt;strong&gt;Backlinks&lt;/strong&gt;: &lt;a href="https://www.reddit.com/r/factorio/comments/myt05k/se_endurance_early_game/" class="external-link" target="_blank" rel="noopener"&gt;Reddit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is the start of a series of posts on our (&lt;code&gt;philae&lt;/code&gt;, &lt;code&gt;winston&lt;/code&gt;) play
through Factorio with the Space Exploration mod.&lt;/p&gt;
&lt;p&gt;After lots of struggling, we recently finished our first SE world after
624 in-game hours. Since this was also our first/second Factorio world,
the start was very inefficient and we learned a lot of things along the
way. In this new map, which we call &lt;em&gt;Endurance&lt;/em&gt; (after the
interplanetary spaceship in &lt;em&gt;Interstellar&lt;/em&gt;), we will apply what we
learned, and share it with the world :)&lt;/p&gt;</description></item><item><title>Hashcode 2021 Finals</title><link>https://curiouscoding.nl/posts/hashcode-2021-finals/</link><pubDate>Sat, 24 Apr 2021 00:00:00 +0200</pubDate><guid>https://curiouscoding.nl/posts/hashcode-2021-finals/</guid><description>&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt; &lt;a href="https://hashcodejudge.withgoogle.com/#/rounds/5879728443490304/" class="external-link" target="_blank" rel="noopener"&gt;Problem&lt;/a&gt; | &lt;a href="https://hashcodejudge.withgoogle.com/scoreboard" class="external-link" target="_blank" rel="noopener"&gt;Scoreboard&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Team:&lt;/strong&gt; &lt;code&gt;cat /dev/random | grep &amp;quot;to be or not to be&amp;quot;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;Who:&lt;/strong&gt; Jan-Willem Buurlage, Ragnar Groot Koerkamp, Timon Knigge, Abe Wits&lt;br /&gt;
&lt;strong&gt;Score:&lt;/strong&gt; 274253375&lt;br /&gt;
&lt;strong&gt;Rank:&lt;/strong&gt; 19 of 38&lt;/p&gt;
&lt;p&gt;Not good.&lt;br /&gt;
Not bad.&lt;br /&gt;
Definitely ugly.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Linkerrijtje&lt;/em&gt; (aka top half).&lt;/p&gt;
&lt;p&gt;I would have liked to write that I&amp;rsquo;m happy with the result, but to be
fair&amp;ndash;I&amp;rsquo;m not. Just the fact that I can&amp;rsquo;t sleep and feel the need to
write this in the middle of the night surely is indication of this.
Plenty of things could have gone better, and there are so many things we
(I) could have done differently to actually break that elusive 300M
barrier (and potentially get that top 10 place we were hoping for), that
I&amp;rsquo;ll definitely be sad for a little while.&lt;/p&gt;</description></item><item><title>Hashcode 2021: A lucky ride</title><link>https://curiouscoding.nl/posts/hashcode-2021/</link><pubDate>Mon, 01 Mar 2021 00:00:00 +0100</pubDate><guid>https://curiouscoding.nl/posts/hashcode-2021/</guid><description>&lt;p&gt;&lt;strong&gt;Links:&lt;/strong&gt; &lt;a href="https://hashcodejudge.withgoogle.com/#/rounds/5879728443490304/" class="external-link" target="_blank" rel="noopener"&gt;Problem&lt;/a&gt; | &lt;a href="https://hashcodejudge.withgoogle.com/scoreboard" class="external-link" target="_blank" rel="noopener"&gt;Scoreboard&lt;/a&gt; | &lt;a href="https://codeforces.com/blog/entry/88188" class="external-link" target="_blank" rel="noopener"&gt;Codeforces announcement&lt;/a&gt;, &lt;a href="https://codeforces.com/blog/entry/88328" class="external-link" target="_blank" rel="noopener"&gt;this blog&lt;/a&gt; | &lt;a href="https://news.ycombinator.com/item?id=26319076" class="external-link" target="_blank" rel="noopener"&gt;Hacker News&lt;/a&gt;&lt;br /&gt;
&lt;strong&gt;Team:&lt;/strong&gt; &lt;code&gt;cat /dev/random | grep &amp;quot;to be or not to be&amp;quot;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;Who:&lt;/strong&gt; Jan-Willem Buurlage, Ragnar Groot Koerkamp, Timon Knigge, Abe Wits&lt;br /&gt;
&lt;strong&gt;Score:&lt;/strong&gt; 10282641&lt;br /&gt;
&lt;strong&gt;Rank:&lt;/strong&gt; 16&lt;/p&gt;
&lt;p&gt;Since we did quite well, here is a write-up of our participation in
Hashcode 2021.&lt;/p&gt;
&lt;h2 id="prep"&gt;
 Prep
 &lt;a class="heading-link" href="#prep"&gt;
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading"&gt;&lt;/i&gt;
 &lt;span class="sr-only"&gt;Link to heading&lt;/span&gt;
 &lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;All four of us had previously participated in Hashcode, but this was the
first time in the current composition. Since we estimated our chances of
getting through to the finals to be more than nothing, we decided to
practice some previous Hashcode problems. Not all test sessions were
equally successful, but we did manage to get a good division of work:
while I start by immediately writing the IO &lt;code&gt;Input&lt;/code&gt; and &lt;code&gt;Output&lt;/code&gt;
classes, and the &lt;code&gt;Output::score()&lt;/code&gt; function, the others always start
with reading the statement, analysing the testcases, and writing at
least one greedy solution. This already is a big step up from previous
years/teams, where usually everybody would write the IO themselves.&lt;/p&gt;</description></item></channel></rss>