<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Finnish on Andrew Quinn&#39;s TILs</title>
    <link>https://til.andrew-quinn.me/tags/finnish/</link>
    <description>Recent content in Finnish on Andrew Quinn&#39;s TILs</description>
    <image>
      <title>Andrew Quinn&#39;s TILs</title>
      <url>https://til.andrew-quinn.me/papermod-cover.png</url>
      <link>https://til.andrew-quinn.me/papermod-cover.png</link>
    </image>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 10 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://til.andrew-quinn.me/tags/finnish/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Replacing a 3 GB SQLite database with a 10 MB FST (finite state transducer) binary</title>
      <link>https://til.andrew-quinn.me/posts/replacing-a-3-gb-sqlite-database-with-a-7-mb-fst-finite-state-trandsucer-binary/</link>
      <pubDate>Sun, 10 May 2026 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/replacing-a-3-gb-sqlite-database-with-a-7-mb-fst-finite-state-trandsucer-binary/</guid>
      <description>&lt;p&gt;&lt;em&gt;Note for
&lt;a href=&#34;https://www.youtube.com/watch?v=aOJOfh2_4PE&#34;&gt;numberphiles&lt;/a&gt;:
all numbers have been rounded to their first significant
digit, because I&amp;rsquo;m a fan of Rob Eastaway&amp;rsquo;s
&lt;a href=&#34;https://robeastaway.com/blog/introducing-zequals&#34;&gt;&amp;ldquo;zequals&amp;rdquo; method&lt;/a&gt;
of getting to the point when it comes to estimation. It&amp;rsquo;s much
more valuable to walk away with the heuristic &amp;ldquo;some dude got
a 300x memory reduction by swapping out a database he hacked
together for a tiny, static, specialized data structure that
does exactly what he needs it to and no more.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Using LLMs to generate small semantic perturbations for language learning writing practice</title>
      <link>https://til.andrew-quinn.me/posts/using-llms-to-generate-small-semantic-perturbations-for-language-learning-writing-practice/</link>
      <pubDate>Fri, 04 Jul 2025 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/using-llms-to-generate-small-semantic-perturbations-for-language-learning-writing-practice/</guid>
      <description>&lt;p&gt;Still images of this GIF are at the bottom.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://github.com/user-attachments/assets/3022e8c0-81db-4aa6-9af4-72b26ad6aebc&#34; alt=&#34;output-sentence-perturbations&#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;Learning to read a language is mostly a game of getting massive quantities of
comprehensible input. Learning to &lt;em&gt;write&lt;/em&gt; that same language is a whole &amp;rsquo;nother
ballgame. But, using the
&lt;a href=&#34;https://til.andrew-quinn.me/posts/the-language-learning-delta-anki-card-pattern/&#34;&gt;4-quadrant Anki card setup from my earlier post&lt;/a&gt;,
I think I&amp;rsquo;m finding more and more ways to make this as amenable to spaced
repetition as possible.&lt;/p&gt;
&lt;p&gt;One thing I&amp;rsquo;ve been experimenting with with surprising success is the idea of
using LLMs to generate &amp;ldquo;semantic perturbations&amp;rdquo; on sentences I already &amp;ldquo;know&amp;rdquo;
how to write, where &amp;ldquo;know&amp;rdquo; = &amp;ldquo;have in active review in Anki&amp;rdquo;, for our purposes.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The language learning &#34;Delta&#34; Anki card pattern</title>
      <link>https://til.andrew-quinn.me/posts/the-language-learning-delta-anki-card-pattern/</link>
      <pubDate>Sat, 28 Jun 2025 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/the-language-learning-delta-anki-card-pattern/</guid>
      <description>&lt;div class=&#34;highlight&#34;&gt;&lt;div style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;
&lt;table style=&#34;border-spacing:0;padding:0;margin:0;border:0;&#34;&gt;&lt;tr&gt;&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-1&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-1&#34;&gt;1&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-2&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-2&#34;&gt;2&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-3&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-3&#34;&gt;3&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-4&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-4&#34;&gt;4&lt;/a&gt;
&lt;/span&gt;&lt;span style=&#34;white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f&#34; id=&#34;hl-0-5&#34;&gt;&lt;a style=&#34;outline:none;text-decoration:none;color:inherit&#34; href=&#34;#hl-0-5&#34;&gt;5&lt;/a&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td style=&#34;vertical-align:top;padding:0;margin:0;border:0;;width:100%&#34;&gt;
&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+--------------------------+------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|       L2, fixable        |              L1, intention               |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;+--------------------------+------------------------------------------+
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;|        L2, fixed         |   L1, (fixable -&amp;gt; fixed) explanation     |
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&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;p&gt;The above 2x2 layout for Anki cards, which I call a &amp;ldquo;comprehensible
delta&amp;rdquo;, is one of the best things I&amp;rsquo;ve happened upon in a while for
learning another language. Let&amp;rsquo;s say you are learning Finnish, and you
want to say&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>LLM tutored writing practice for secondary language acquisition</title>
      <link>https://til.andrew-quinn.me/posts/llm-tutored-writing-practice-for-secondary-language-acquisition/</link>
      <pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/llm-tutored-writing-practice-for-secondary-language-acquisition/</guid>
      <description>&lt;p&gt;Language learning for the contemporary adult learner can be broken down roughly
into four highly correlated, but distinct, skillsets.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;Passive understanding&lt;/th&gt;
          &lt;th&gt;Active production&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;The written word&lt;/td&gt;
          &lt;td&gt;Reading&lt;/td&gt;
          &lt;td&gt;Writing&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;The spoken word&lt;/td&gt;
          &lt;td&gt;Listening&lt;/td&gt;
          &lt;td&gt;Speaking&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;You may know from &lt;a href=&#34;https://finbug.xyz/&#34;&gt;my FOSS software&lt;/a&gt; that I have been
learning Finnish for the past 4 years or so. For the first few years I pretty
much focused exclusively on reading comprehension, as I consider that to be the
easiest quadrant to skill up in first. This focus put me in the interesting
position for some time of being able to read most YA fiction and tax documents
while being unable to order a pizza for myself on the phone.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Cross-platform TUIs are easier than cross-platform GUIs</title>
      <link>https://til.andrew-quinn.me/posts/cross-platform-tuis-are-easier-than-cross-platform-guis/</link>
      <pubDate>Tue, 20 May 2025 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/cross-platform-tuis-are-easier-than-cross-platform-guis/</guid>
      <description>&lt;p&gt;Below is a GIF of
&lt;a href=&#34;https://github.com/hiAndrewQuinn/tsk&#34;&gt;&lt;code&gt;tsk&lt;/code&gt;, my pocket Finnish-to-English dictionary&lt;/a&gt;,
running in my terminal emulator of choice under Linux.
It&amp;rsquo;s what the kids call a
&lt;a href=&#34;https://github.com/rothgar/awesome-tuis&#34;&gt;TUI&lt;/a&gt;,
a graphical program that just happens to drive its graphics
using terminal graphics instead of graphics-graphics.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Insert GIF here.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You can probably tell that this program fits neatly into the
&lt;a href=&#34;https://bradfrost.com/blog/link/an-app-can-be-a-home-cooked-meal/&#34;&gt;&amp;ldquo;home-cooked meal&amp;rdquo;&lt;/a&gt;
clade of programs. There is a very straightforward problem I want solved -
fast, single-executable-portable dictionary lookup, with a few conveniences
for the busy language learner layered on top. I am quite happy with &lt;code&gt;tsk&lt;/code&gt; in
its current iteration and don&amp;rsquo;t plan to add much more to it anytime soon.
It would still save me a lot of time and hassle if I were the only person who
could use it.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The highest personal ROI program I have written so far</title>
      <link>https://til.andrew-quinn.me/posts/the-highest-personal-roi-program-i-have-written-so-far/</link>
      <pubDate>Tue, 30 Jul 2024 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/the-highest-personal-roi-program-i-have-written-so-far/</guid>
      <description>&lt;p&gt;It would have to be
&lt;a href=&#34;https://github.com/hiAndrewQuinn/finstem&#34;&gt;finstem&lt;/a&gt;,
a simple command-line program I wrote to
reduce Finnish words down to their root form.&lt;/p&gt;
&lt;p&gt;Finnish is a lot like Latin or Russian in that its words
often become lumbering behemoths of rewritten consonants,
suffixes upon suffixes, and this makes it hard to look up
in a dictionary &amp;ndash; that is, until you factor in its
very regular orthography and the phenomenal
efforts of the Finnish programming industry: &lt;code&gt;finstem&lt;/code&gt; is
basically a very specialized UI for
&lt;a href=&#34;https://voikko.puimula.org/&#34;&gt;the OpenOffice spell checker&lt;/a&gt;,
and I have no shame in admitting that.&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>The 10 sentences heuristic for foreign vocabulary acquisition</title>
      <link>https://til.andrew-quinn.me/posts/the-10-sentences-heuristic-for-foreign-vocabulary-acquisition/</link>
      <pubDate>Mon, 01 Apr 2024 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/the-10-sentences-heuristic-for-foreign-vocabulary-acquisition/</guid>
      <description>&lt;pre&gt;&lt;code&gt;In order to learn a word, we need to come across it several times.
It seems that the minimum amount of times we need to meet a word is
somehwere around 7 or 8 meetings, but it&#39;s very hard to put a figure
on it.

-- Paul Nation, [2020 Victorial University of Wellington](https://www.youtube.com/watch?v=FlJj8vpJxfE)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;He&amp;rsquo;s right, but that never stopped me. I say &lt;strong&gt;10 sentences&lt;/strong&gt; in a specific practice: When you come across a word you don&amp;rsquo;t know enough times for it to bother you,&lt;/p&gt;</description>
    </item>
    
    <item>
      <title>Been quiet - studying Finnish</title>
      <link>https://til.andrew-quinn.me/posts/been-quiet-studying-finnish/</link>
      <pubDate>Tue, 12 Dec 2023 00:00:00 +0000</pubDate>
      
      <guid>https://til.andrew-quinn.me/posts/been-quiet-studying-finnish/</guid>
      <description>&lt;p&gt;Hei kaikki. I&amp;rsquo;m going dark for the rest of the year as I switch my attention to reading a lot of
Finnish, since Free Voluntary Reading is the best way to learn a language.&lt;/p&gt;
&lt;p&gt;Hyvää joulua ja onnellista uutta vuotta!&lt;/p&gt;</description>
    </item>
    
  </channel>
</rss>
