If You Build It, You Will Learn
Throughout the entire language learning journey, acquiring and expanding your vocabulary is an essential part of the process. When I first began learning Turkish I filled notebooks with the unfamiliar words I came across while watching TV shows, navigating life in Ankara and during my fledgling attempts at reading Turkish novels.
Although the act of writing down a new word and looking up its meaning does a lot to help committing these words to memory, the chances of returning to review these handwritten lists is quite slim. Instead, over the last year or so I’ve been using a simple Airtable base to conveniently record new vocabulary words, as well as to revisit these words more frequently. I wanted to recap how I’ve set up this system and what I learned along the way.
Adding New Vocabulary with iOS Shortcuts
One of the most important features I’ve implemented is the ability to add new words and phrases easily using iOS shortcuts, which allow me to add new entries to my Airtable base from the “Share” dialog on my iPhone. Minimizing the time and effort it takes to add a new word to my vocabulary list makes me more likely to actually do it—which is of course the entire point.
Setting up your own Shortcuts is fairly straightforward using Shortcutify to interface with the Airtable API.
Enriching Vocabulary Entries with Auto-Generated Context Sentences
When I add a new word or phrase, the system I’ve set up uses Reverso’s Context API to generate example sentences in Turkish and English. While the auto-generated example sentences are helpful, they are not always perfect. That’s why I added a feature that allows me to choose my own example sentence for each vocabulary item. I achieved this through an Airtable Script that presents me with a list of potential example sentences generated by Reverso’s Context API. I can then choose the one that best fits the meaning of the word in question.
Implementing this feature was a fun challenge which required me to set up my first custom API service with Node.js/Express. Luckily, there’s a very easy-to-use wrapper package which provides access to Reverso’s internal APIs, so the only real learning curve was setting up and hosting the single-endpoint app to integrate with Airtable. For hosting this microservice, I went with Render’s free tier as there’s no issue waiting for the server to restart from sleep, and because setting up the app from a Github repository was dead simple. For the time being I’ve just added very simple (and certainly not production ready!) authentication to prevent any unauthorized users from getting my IP banned by Reverso’s servers. Getting my hands dirty with my first ‘back end’ application was definitely a good learning opportunity, and now I’m on the lookout for the next personal project which could benefit from a similar microservice.
Monthly Recaps of Newly-Added Vocabulary
To remind myself to revisit words I’ve added to my list, I set up an automated monthly summary via Airtable’s automation features. The end-of-month recap includes a list of all the words I’ve learned that month, or nudges me to continue adding words to the list if I fall out of the habit and don’t add any new terms in any given month.
One unexpected bonus of this approach is that, upon receiving these monthly updates, I’m often surprised to see the picture painted by the words that I’ve come across. Usually, it’s a clear reminder of the source material that I was reading and which brought me these new terms, and I really appreciate how that encourages me to seek to expand the kinds of materials I’m reading.
I’ve always found it rewarding to expand my technical skill set by bridging gaps between my various interests, and language-learning has been a life-long passion. There are already so many built-to-suit flashcard/vocabulary solutions out there (Anki being one that I’ve used before and certainly recommend), but there’s also so much value to building your own tools and the experience this brings on its own right.
For example, I’ve been able to build a little flashcard application with Nuxt/Vue3 to review vocabulary, drawing directly from my Airtable base. In the process, I’ve had a chance to apply some of the new skills I’ve been learning. For example, my flashcard SPA uses fuzzy matching (Levenshtein Distances) to identify where in each example sentence the relevant vocabulary term or phrase is used and wraps the word(s) in a
<span> element for styling. That way, it’s easy for the user to scan the example sentence and see where the vocabulary word is being used—even when the word or phrase has been conjugated or declinated in the example sentence and therefore is not an exact string match to the vocab word.