<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software Design on Jonathan Warden's Blog</title><link>https://jonathanwarden.com/tags/software-design/</link><description>Recent content in Software Design on Jonathan Warden's Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 21 Jul 2026 00:00:00 -0600</lastBuildDate><atom:link href="https://jonathanwarden.com/tags/software-design/index.xml" rel="self" type="application/rss+xml"/><item><title>Developing the Seven Stems Method for Spanish Verb Conjugation</title><link>https://jonathanwarden.com/developing-the-seven-stems-method/</link><pubDate>Tue, 21 Jul 2026 00:00:00 -0600</pubDate><guid>https://jonathanwarden.com/developing-the-seven-stems-method/</guid><description>&lt;style>
.seven-stems-formula {
display: flex;
flex-wrap: wrap;
align-items: baseline;
gap: 0.42em;
margin: 1.25em 0;
line-height: 1.4;
}
.seven-stems-formula--lead {
justify-content: center;
padding: 0.8em 0.7em;
font-size: 1.1em;
}
.seven-stems-formula-term {
display: inline-flex;
align-items: baseline;
gap: 0.42em;
white-space: nowrap;
}
.seven-stems-spill {
display: inline-flex;
align-items: baseline;
overflow: hidden;
white-space: nowrap;
}
.seven-stems-formula-stem {
font-family: Arial, Helvetica, sans-serif;
font-style: normal;
font-weight: 700;
}
.seven-stems-formula-ending {
display: inline-block;
padding: 0.01em 0.18em 0.05em;
border-radius: 0.18em;
color: #222;
font-family: ui-monospace, "SFMono-Regular", Menlo, monospace;
font-size: 1em;
font-weight: 400;
line-height: 1.18;
}
.seven-stems-formula-plus {
color: var(--card-text-color-secondary);
font-weight: 700;
}
.seven-stems-ending-ar { background: #f1ecf5; }
.seven-stems-ending-er { background: #f3eee6; }
.seven-stems-ending-ir { background: #e6f1f2; }
.seven-stems-ending-boot { background: #98d9f3; }
.seven-stems-ending-l { background: #f8bacc; }
.seven-stems-ending-gerund { background: #9fdec2; }
.seven-stems-ending-preterite-i { background: #fabea9; }
.seven-stems-ending-preterite-j { background: #e4beed; }
.seven-stems-ending-future { background: #baccff; }
.seven-stems-ending-imperfect { background: #eec698; }
&lt;/style>
&lt;div class="seven-stems-formula seven-stems-formula--lead" role="img" aria-label="Stem formula for caber: cab-er, quep-a, cup-iera, cabr-ía">
&lt;span class="seven-stems-formula-term">&lt;span class="seven-stems-spill">&lt;span class="seven-stems-formula-stem">cab·&lt;/span>&lt;span class="seven-stems-formula-ending seven-stems-ending-er">er&lt;/span>&lt;/span>&lt;/span>
&lt;span class="seven-stems-formula-term">&lt;span class="seven-stems-formula-plus" aria-hidden="true">+&lt;/span>&lt;span class="seven-stems-spill">&lt;span class="seven-stems-formula-stem">quep·&lt;/span>&lt;span class="seven-stems-formula-ending seven-stems-ending-l">a&lt;/span>&lt;/span>&lt;/span>
&lt;span class="seven-stems-formula-term">&lt;span class="seven-stems-formula-plus" aria-hidden="true">+&lt;/span>&lt;span class="seven-stems-spill">&lt;span class="seven-stems-formula-stem">cup·&lt;/span>&lt;span class="seven-stems-formula-ending seven-stems-ending-preterite-i">iera&lt;/span>&lt;/span>&lt;/span>
&lt;span class="seven-stems-formula-term">&lt;span class="seven-stems-formula-plus" aria-hidden="true">+&lt;/span>&lt;span class="seven-stems-spill">&lt;span class="seven-stems-formula-stem">cabr·&lt;/span>&lt;span class="seven-stems-formula-ending seven-stems-ending-future">ía&lt;/span>&lt;/span>&lt;/span>
&lt;/div>
&lt;p>I have been living part-time in Madrid for the past three years, and my Spanish is still not as fluent as I want it to be. The thing that trips me up most is irregular verb conjugation.&lt;/p>
&lt;p>So I decided to start studying deliberately. My goal was to conjugate every irregular verb confidently in every tense I was likely to use.&lt;/p>
&lt;p>At first, the task felt daunting. A Spanish verb table has six pronouns across seven simple-tense columns, which gives you 42 verb forms before you get to imperatives, compound tenses, and less common forms I sometimes hear older people use, like &lt;em>hubiese&lt;/em>. Most of those forms are regular. Many irregular forms follow common patterns; others follow rarer ones. A few seem like true one-off exceptions.&lt;/p>
&lt;p>I wanted to understand these patterns well enough to find &amp;ldquo;patterns to the patterns&amp;rdquo; and minimize what I had to memorize. Put another way, I wanted to &lt;em>compress&lt;/em> each irregular conjugation table into the smallest representation I could.&lt;/p>
&lt;p>This is an appealing problem for a software engineer. Much of software design is compression: finding a smaller, cleaner representation of apparent complexity. When it works, you not only save space; you understand the problem better.&lt;/p>
&lt;p>I sat down with a notebook, a pencil, and the conjugation tables for a few common verbs that kept tripping me up. Then I marked the irregular stems and spelling changes and began categorizing the patterns.&lt;/p>
&lt;p>I started with &lt;em>regar&lt;/em>. I remembered my stepmother saying “riego las plantas” (“I’m watering the plants”) and wondered why she said &lt;em>r&lt;strong>ie&lt;/strong>go&lt;/em> rather than “&lt;em>r&lt;strong>e&lt;/strong>go&lt;/em>.” Its conjugation table revealed a simple pattern: the stem &lt;em>&lt;strong>reg-&lt;/strong>&lt;/em> changes to &lt;em>&lt;strong>rieg-&lt;/strong>&lt;/em> in present and present-subjunctive forms except &lt;em>nosotros&lt;/em> and &lt;em>vosotros&lt;/em>:&lt;/p>
&lt;p>&lt;img src="https://jonathanwarden.com/developing-the-seven-stems-method/regar-conjugation.svg"
loading="lazy"
alt="The Seven Stems conjugation table for regar, with Boot-stem forms highlighted in blue"
>&lt;/p>
&lt;p>This pattern is extremely common in Spanish. These positions are called the “boot” positions because, when marked on a classroom conjugation table, they form a rough boot shape:&lt;/p>
&lt;p>&lt;img src="https://jonathanwarden.com/developing-the-seven-stems-method/boot-stem-pattern.png"
width="2702"
height="1568"
srcset="https://jonathanwarden.com/developing-the-seven-stems-method/boot-stem-pattern_hu_9f1dccec7fbff8f.png 480w, https://jonathanwarden.com/developing-the-seven-stems-method/boot-stem-pattern_hu_f91122c4f72bb8b4.png 1024w"
loading="lazy"
alt="A classroom present-tense table for regar with the four boot positions outlined in the shape of a boot"
class="gallery-image"
data-flex-grow="172"
data-flex-basis="413px"
>&lt;/p>
&lt;p>Many other verbs change &lt;em>e&lt;/em> to &lt;em>ie&lt;/em> in the boot positions: p&lt;strong>e&lt;/strong>nsar → p&lt;strong>ie&lt;/strong>nsa, ent&lt;strong>e&lt;/strong>nder → ent&lt;strong>ie&lt;/strong>nde, and so on. This and a handful of other &lt;a class="link" href="https://7stems.net/learn/model-verbs/#boot-stem-vowel-change-models" target="_blank" rel="noopener"
>&lt;strong>Boot&lt;/strong> stem vowel change patterns&lt;/a> account for a large portion of the irregularity in Spanish verbs.&lt;/p>
&lt;h2 id="patterns-to-the-patterns">Patterns to the Patterns
&lt;/h2>&lt;p>Other irregular verbs showed the same basic structure: their stems changed only in specific tenses. For example, &lt;em>conocer&lt;/em> uses the stem &lt;em>&lt;strong>conozc-&lt;/strong>&lt;/em> for present indicative &lt;em>yo&lt;/em> and throughout the present subjunctive:&lt;/p>
&lt;p>&lt;img src="https://jonathanwarden.com/developing-the-seven-stems-method/conocer-conjugation.svg"
loading="lazy"
alt="The Seven Stems conjugation table for conocer, showing the Subjunctive stem conozc-"
>&lt;/p>
&lt;p>This &lt;strong>Subjunctive stem&lt;/strong> pattern is extremely common. It appears in forms such as &lt;em>venga&lt;/em>, &lt;em>tenga&lt;/em>, &lt;em>quepa&lt;/em>, and &lt;em>construya&lt;/em>.&lt;/p>
&lt;h2 id="key-insight-the-stem-type-determines-the-ending">Key Insight: The Stem Type Determines the Ending
&lt;/h2>&lt;p>More significantly, &lt;strong>Subjunctive stems&lt;/strong> always take the same endings: &lt;em>-o&lt;/em> for present &lt;em>yo&lt;/em> and endings beginning with &lt;em>-a-&lt;/em> in the present subjunctive, regardless of the verb’s regular type.&lt;/p>
&lt;p>This means you don&amp;rsquo;t need to conjugate the verb regularly and then swap in the subjunctive stem. Instead, you can &lt;strong>conjugate the stem&lt;/strong>: start with &lt;em>veng-&lt;/em>, &lt;em>dig-&lt;/em>, or another subjunctive stem and add the appropriate ending. Some research suggests that fluent speakers do exactly this.&lt;/p>
&lt;p>The same held for every irregular stem pattern I found: an irregular stem’s conjugation is independent of the regular stem type. In the forms where it applies, each stem behaves like a verb of its own type and is conjugated the same way: &lt;strong>by adding an ending to the stem&lt;/strong>.&lt;/p>
&lt;p>In this model, what makes a Spanish verb irregular is that &lt;strong>it has more than one stem&lt;/strong>. To conjugate it, you need to know:&lt;/p>
&lt;ol>
&lt;li>which stem applies to the tense you want to use&lt;/li>
&lt;li>the stem&amp;rsquo;s type&lt;/li>
&lt;li>which ending that stem type takes for the desired person and tense&lt;/li>
&lt;/ol>
&lt;p>With relatively few exceptions, almost all irregularity in Spanish verb conjugation can be explained by &lt;strong>seven irregular stem types&lt;/strong>. Each stem type has a table showing where it applies and which endings it takes. Because each table covers only a subset of forms, I call it a &lt;strong>conjugation card&lt;/strong>. Here they are.&lt;/p>
&lt;p>&lt;img src="https://jonathanwarden.com/developing-the-seven-stems-method/stem-cards-reference.svg"
loading="lazy"
alt="The seven irregular conjugation cards arranged as a compact reference"
>&lt;/p>
&lt;!--
## Stem Formulas
To remember a verb’s irregular stems, **you just need to remember one conjugated form for each stem type**. If you remember *venga* for the present subjunctive of *venir*, then it is easy to remember *vengo* in the present indicative, *tú vengas* in the present subjunctive, and so on.
This means we can break down an irregular verb’s conjugation table into a **stem formula** with one form for each stem type, including the regular stem. For example, *valer* has three stems. Its stem formula is:
&lt;div class="seven-stems-formula" role="img" aria-label="Stem formula for valer: val-er, valg-a, valdr-ía">
&lt;span class="seven-stems-formula-term">&lt;span class="seven-stems-spill">&lt;span class="seven-stems-formula-stem">val·&lt;/span>&lt;span class="seven-stems-formula-ending seven-stems-ending-er">er&lt;/span>&lt;/span>&lt;/span>
&lt;span class="seven-stems-formula-term">&lt;span class="seven-stems-formula-plus" aria-hidden="true">+&lt;/span>&lt;span class="seven-stems-spill">&lt;span class="seven-stems-formula-stem">valg·&lt;/span>&lt;span class="seven-stems-formula-ending seven-stems-ending-l">a&lt;/span>&lt;/span>&lt;/span>
&lt;span class="seven-stems-formula-term">&lt;span class="seven-stems-formula-plus" aria-hidden="true">+&lt;/span>&lt;span class="seven-stems-spill">&lt;span class="seven-stems-formula-stem">valdr·&lt;/span>&lt;span class="seven-stems-formula-ending seven-stems-ending-future">ía&lt;/span>&lt;/span>&lt;/span>
&lt;/div>
-->
&lt;!--
## Spelling Rules Are Regular
Some apparent irregularities are really regular **spelling changes** that apply consistently in certain situations. For example, a silent *u* is added after the *g* in *llegar* whenever the ending begins with *e*. Otherwise, the *g* would be pronounced with a different sound.
But this does not make *llegar* irregular. If the added *u* were an irregularity, you would need to remember which verbs it applied to. Instead, you just need to remember the situation in which the spelling rule applies.
This spelling rule does not change the pronunciation. It prevents the pronunciation from changing, ensuring that the *g* in the stem sounds the same with every ending.
There are also spelling rules that create small pronunciation changes. For example, *leer* has forms such as *leyó*. Spanish spelling does not allow an unstressed *i* to sit between two vowels in that position, so the vowel *i* becomes the consonant *y*: *le**i**ó* becomes *le**y**ó*. The result has a slightly different pronunciation, especially in regions where consonant *y* has a strongly fricated sound. Because of this, the Real Academia Española considers *leer* irregular—but in my opinion, it is a rather regular kind of irregular.
-->
&lt;h2 id="visualizing-the-conjugation-tables">Visualizing the Conjugation Tables
&lt;/h2>&lt;p>Once I understood these patterns, I found myself lying in bed one day—really—imagining conjugation tables as overlapping cards. I pictured each stem type as a different-colored piece of laminated cardstock bearing a partial conjugation table. Beneath them sat the full table for the regular stem type.&lt;/p>
&lt;p>I fired up my favorite AI coding agent and built them. They looked great! Here are some examples:&lt;/p>
&lt;p>&lt;strong>decir&lt;/strong>&lt;/p>
&lt;p>&lt;img src="https://jonathanwarden.com/developing-the-seven-stems-method/decir-conjugation.svg"
loading="lazy"
alt="The Seven Stems conjugation table for decir, showing its Boot, Gerund, Subjunctive, Preterite-J, and Future stems and its participle and imperative exceptions"
>&lt;/p>
&lt;p>&lt;strong>pedir&lt;/strong>&lt;/p>
&lt;p>&lt;img src="https://jonathanwarden.com/developing-the-seven-stems-method/pedir-conjugation.svg"
loading="lazy"
alt="The Seven Stems conjugation table for pedir, showing its Boot and Gerund vowel changes"
>&lt;/p>
&lt;p>&lt;strong>tener&lt;/strong>&lt;/p>
&lt;p>&lt;img src="https://jonathanwarden.com/developing-the-seven-stems-method/tener-conjugation.svg"
loading="lazy"
alt="The Seven Stems conjugation table for tener, showing its Boot, Subjunctive, Preterite, and Future stems and its imperative exception"
>&lt;/p>
&lt;p>You can find a table for virtually any Spanish verb at &lt;a class="link" href="https://7stems.net/" target="_blank" rel="noopener"
>7stems.net&lt;/a>.&lt;/p>
&lt;h2 id="the-algorithm">The Algorithm
&lt;/h2>&lt;p>Together, these seven irregular stem types and a handful of spelling rules gave me an elegant model of most Spanish verb irregularities. In software terms, it builds a conjugation table from layered matrices: start with the regular stem card, layer the irregular cards on top in precedence order, apply spelling rules, and finish with any true exceptions.&lt;/p>
&lt;p>I implemented the model as &lt;a class="link" href="https://github.com/johnwarden/seven-stems-conjugator" target="_blank" rel="noopener"
>seven-stems-conjugator&lt;/a>, a Python library that builds a complete conjugation table for any verb.&lt;/p>
&lt;p>In keeping with my goal of &lt;strong>compression&lt;/strong>, each verb requires only a small data structure containing its irregular stems and exceptions. Here are a few examples:&lt;/p>
&lt;p>&lt;em>&lt;strong>Sample Verb Conjugation Data&lt;/strong>&lt;/em>&lt;/p>
&lt;div class="highlight">&lt;div class="chroma">
&lt;table class="lntable">&lt;tr>&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code>&lt;span class="lnt"> 1
&lt;/span>&lt;span class="lnt"> 2
&lt;/span>&lt;span class="lnt"> 3
&lt;/span>&lt;span class="lnt"> 4
&lt;/span>&lt;span class="lnt"> 5
&lt;/span>&lt;span class="lnt"> 6
&lt;/span>&lt;span class="lnt"> 7
&lt;/span>&lt;span class="lnt"> 8
&lt;/span>&lt;span class="lnt"> 9
&lt;/span>&lt;span class="lnt">10
&lt;/span>&lt;span class="lnt">11
&lt;/span>&lt;span class="lnt">12
&lt;/span>&lt;span class="lnt">13
&lt;/span>&lt;span class="lnt">14
&lt;/span>&lt;span class="lnt">15
&lt;/span>&lt;span class="lnt">16
&lt;/span>&lt;span class="lnt">17
&lt;/span>&lt;span class="lnt">18
&lt;/span>&lt;span class="lnt">19
&lt;/span>&lt;span class="lnt">20
&lt;/span>&lt;span class="lnt">21
&lt;/span>&lt;span class="lnt">22
&lt;/span>&lt;span class="lnt">23
&lt;/span>&lt;span class="lnt">24
&lt;/span>&lt;/code>&lt;/pre>&lt;/td>
&lt;td class="lntd">
&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;caber&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;stems&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Subjunctive&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;quep&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;PreteriteI&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;cup&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Future&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;cabr&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;saber&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;stems&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Subjunctive&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;sep&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;PreteriteI&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;sup&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Future&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;sabr&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;exceptions&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{(&lt;/span>&lt;span class="mi">0&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">PRESENT&lt;/span>&lt;span class="p">):&lt;/span> &lt;span class="s1">&amp;#39;sé&amp;#39;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="s1">&amp;#39;tener&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;stems&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;BootE&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;tien&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Subjunctive&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;teng&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;PreteriteI&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;tuv&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;Future&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s1">&amp;#39;tendr&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="s1">&amp;#39;exceptions&amp;#39;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="p">{(&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="n">IMPERATIVE&lt;/span>&lt;span class="p">):&lt;/span> &lt;span class="s1">&amp;#39;ten&amp;#39;&lt;/span>&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">},&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/td>&lt;/tr>&lt;/table>
&lt;/div>
&lt;/div>&lt;h2 id="validating-the-system">Validating the System
&lt;/h2>&lt;p>Before publishing the system, I needed to know it was correct. So I wrote an automated test that compares my library’s output against 462,348 forms from an independent conjugation library. When discrepancies revealed numerous errors in that library, I used the Real Academia Española as my source of truth.&lt;/p>
&lt;h2 id="the-book-and-website">The Book and Website
&lt;/h2>&lt;p>Eventually, I decided to self-publish the method and the model-verb conjugation tables as a book. &lt;a class="link" href="https://7stems.net/book/" target="_blank" rel="noopener"
>&lt;em>Seven Stems Spanish Verb Conjugation&lt;/em>&lt;/a> is now available in paperback from Amazon and several online retailers. I&amp;rsquo;ve also made the book&amp;rsquo;s core content and searchable conjugation tables available for free on the &lt;a class="link" href="https://7stems.net/" target="_blank" rel="noopener"
>Seven Stems website&lt;/a>.&lt;/p>
&lt;p>I never expected to sell a huge number of copies, but it would be gratifying to get the method into the hands of people who would use it. After trying the method, an honest Amazon review would help other learners decide whether it is right for them. I also welcome detailed feedback.&lt;/p></description></item></channel></rss>