Why I built a dictionary app
wordnote.app
wordnote.app
It is an offline, ad free, dictionary that remembers words you look up. It gives a word of the day and provides (admittedly underfeatured atm) flashcards to review your word lists. It includes optional syncing to keep your word lists across devices. I've been holding off posting about it while i complete the website[2].
Love to see someone else had such a similar idea. Great confirmation of the unmet need in the space. Really awesome execution as well. Congrats on the launch!
On a personal note, i built Stictionary after tracking all the words i looked up manually for years. Now i have an app that does it for me (and was a blast to build).
1: https://apps.apple.com/us/app/stictionary/id1613214660?platf...
I had the opposite experience when visiting the US for the first time. I saw a bag of 'luh-too-ché' in the store. For about 10 second my mind was wondering what it was. Then I realized that the word that is (to my Dutch brain) pronounced as 'ledice' is not spelled that way, it's spelled 'lettuce'. I came to the US with C2 level proficiency (thanks to subtitled media and MMORPGs), but I still had a lot to learn!
But if you're sure you know what it means (albeit incorrectly), because that's what you've picked up or been taught and no-one has ever corrected or queried you, where would the impetus to look it up in a dictionary come from?
You might have a case for "deliberately misusing words [...] is stupid" but there's a long comedic and literary tradition there...
I also think there is a shared sense of how fancy, big or difficult a word or phrase is considered. Look up the fancier words more often!
Another possibility of course is wanting to correct somebody else, but double checking the definition just to be sure before you do!
Misusing words may or may not be stupid—without more information, including some nebulous stuff about intent and interpretation, I have no way of saying for sure in a given encounter.
What I would say instead is that many people seem to see “misuses words because [cocky/pretentious/know-it-all/careless]” as a heuristic for stupid. It isn’t a great heuristic, but knowing that people use it to rank you and choosing speech accordingly…isn’t stupid.
That's for the ML algorithms to decide.
But for dictionary/thesaurus I usually use spotlight to access MacOS' built-in resources, which is faster.
Apps that work offline are my favourite as even though I have 4g and wifi, these connections can sometimes be slow or just down and it’s sad seeing apps just not work in those scenarios.
Edit: I know you said it’s not finished, but that website is impressively broken!
Hmmm, I've been using a dictionary app for years that is offline, ad-free, remembers words you look up, and has a word of the day feature. Also has favorites and you can add personal notes on entries. It's also free. It's based on Wictionary. I use the ones for Spanish and Portuguese but I think they have versions for many languages. The name is fairly generic "Spanish Dictionary - Offline" by Livio.
Adding to the long list of features,... full verb conjugation tables and audio for most words.
By the way, you may be aware but there's a typo in the iOS app in the "Your Words" tab when your list is empty.
> You can swipe words off your list later if [you] add a word you'd rather not see.
Great execution, thanks for sharing it with the world
Same goes for the OP?
When I need to look up a word, I create a new note from control center, type in the word, double tap to bring up the contextual menu and then the dictionary.
It pretty much checks all the boxes. For distraction-free reading, turn off "Content from Apple" in the Siri settings to avoid those obnoxious Siri knowledge panels.
I was a Windows user at the time and the _consistency_ of this dictionary lookup throughout the UI just blew me away
This, combined with a spaced repetition feature would be fantastic to have on board.
I always wondered if there is a private API/event to listen for to capture the lookups and store them for later.
I'm thrilled to read all the comments with ideas and improvements. I will try to answer and keep up with the thread.
Kudos to all the similar initiatives trying to solve the problems I outline in the article. It's wonderful to see a zeitgeist about dictionaries.
Who wants to jump the article and try the version I built, feel free to download the iPhone [1] or Android [2] version or run it by itself with the open source repo [3]
1: https://apps.apple.com/app/wordnote-dictionary/id1596537633
2: https://play.google.com/store/apps/details?id=com.zehfernand...
3: https://github.com/zehfernandes/wordnote
Cheers!
Scraping, even via an api, is way less efficient imho.
==English==
===Etymology===
{{prefix|en|sub|bureau}}
===Noun===
{{en-noun|s|subbureaux}}
# A [[district]]-level public security bureau in [[China]].
so as long as one can parse wikitext, it's split pretty well up!In case you’ve never read it, this 2014 blog post is an all time favourite of mine. It really opened up my thinking about words and definitions:
You’re probably using the wrong dictionary - http://jsomers.net/blog/dictionary
Ever since reading that, I have tended to use the 1913 Webster’s as my primary dictionary, supplemented by various modern ones where necessary. I found an acceptable iOS app for it - the UI is not good, but at least it has those shimmering definitions.
My dream would be if you could make a version of Wordnote that uses 1913 Webster’s as a dataset.
For those who haven't read the blog post yet, it also includes an archive.org link to the out-of-copyright 1913 Websters, and ways to install it on Mac, iPhone, Android, and Kindle.
Where the blog post compares the very different definitions of "pathos" in 1913 Webster's & 2010 New Oxford American, I'm reminded of Orwell's "Principles Of Newspeak" appendix at the end of Nineteen Eighty-Four. The appendix imagines how the definitions of words kept being further narrowed until the final Eleventh Edition of the Newspeak Dictionary, to diminish the range of possible thought.
Agreed that the UI on the present iOS app is less than ideal. That said easy mobile access to those sublime definitions is super helpful. Gratitude to the dev.
Will definitely be using Wordnote (great work!) and I echo the wish that the 1913 Webster's be incorporated somehow.
Which one do you use? I think there might be a few that use 1913 Webster's. I use this one [1]. It could be a lot better, but it works.
[1] https://apps.apple.com/us/app/websters-writers-dictionary/id...
I very much like this adaptation of the term noise. I’m starting to realize a growing angst against intrusive noisy products that present junk to me I did not ask for. I realize there’s a non-zero cognitive load to ads and variable UI that’s unrelated to the product and it increasingly a source of minor frustration in my life I could do without. Social media has socialized the UI to dump suggestions and guides and other junk that gets tossed out in times that are inappropriate, one of those “not now please” moments. That noise can at times break my concentration and then it becomes a strong negative in my mind with a cost to it all. It’s like coming home and finding your desk surface not how you left it then you realize someone moved something trivial or some solicitor left you a note. These visual deltas no mater their motivation, should all be permission opt in settings.
The worst ones are suggested content feeds. They're everywhere, including in your operating system.
This unexpected change to the windows taskbar broke my concentration on some task I was doing the other day, and right away I stopped what I was doing to go chase down how to disable the thing so I wouldn't lose more moments of concentration in the future. https://superuser.com/questions/1725905/get-rid-of-decorativ...
Such a crazy idea of our own OS's being the source of interruptions. Even iOS is getting in on this with the Maps app I noticed the other week, I'd even count iTunes displaying a bunch of random album titles that are on the ugly end of the spectrum in my opinion. At least iTunes uses the same batch of images so one can train to ignore it. It's kind of interesting to conceptualize the OS as like this pesky idle assistant just hungry for attention and with nothing to do who likewise feels its owner is just as idle as them with free time and free attention to spare. "My owner isn't doing anything special or fun, let me bug him with this visual distraction". It's even funny at a meta level to even observe myself getting riled up over this growing assault.
It's interesting you say impossible to use without it, I wonder if a certain subpopulation of folks are more prone to these traps. Basically those with a high degree of attention to detail, those with sharp powers of observation, and those juggling a ton of things in their lives where spare mental capacity is on the short end of the spectrum.
Non-monetized good apps are few and far between. One of which is actually related, by thai-language.com: https://apps.apple.com/us/app/thai-english-dictionary-tl/id7...
It's clean, it has whole sentences mixed in the vocabulary, it links phrases parts to their sub-definitions, and lets you paste a whole sentence at once, defining word by word.
One of my favorite apps. Updated 5 months ago.
I agree that some apps are feature-complete enough to be both useful and left without updates for years, but sadly they will eventually bitrot after some time and be increasingly annoying to use. This is usually the moment the maintainer is nowhere to be found as they lost interest, are busy, or dead.
I’d love for this to become a well-recognised badge of honor, bringing more visibility to lesser known tools.
I built a couple of iOS apps that happen to use org as their portable file format. The fact that its org is less relevant. The iOS apps stand on their own with mobile-friendly UI. If you want to peek at the org content, you can too of course:
There are a handful of other org-based tools out there. Org apps are great for those with an org background, but these apps can be equally recommended for new-comers. What’s important is these apps serve a purpose while also respecting privacy, portability, etc.
Support your local tool maker building on text!
My thoughts: https://braintool.org/2022/04/29/Tools4Thought-should-use-Or...
I built an offline mobile dictionary app about 10 years ago for a language where there was no existing app - New Zealand Sign Language. Fortunately, the dictionary work had already been done by the Deaf Studies Research Unit at Victoria University of Wellington [1]. They kindly gave permission for me to use the dictionary data (and images for every entry, because it's a visual language). As a result they properly licensed the dictionary data as CC-BY-NC-SA, so anybody can use it now.
All the dictionary entries and images were built in to the initial download of the app. This was a bit amusing in 2012 when there were still 50 MB app download size limits, I had to sacrifice some image quality (converting PNG to JPEG, among other things) to get the file size small enough. I had always intended to add an optional download of all the sign videos, but never did get around to it, and online on-demand access to the videos always seemed to work well enough for users. (My #1 user is my wife, I built this app at the start of her studies and she is now a qualified NZSL interpreter and still uses the app every day.)
Since then, the DSRU has done a lot of work on the online dictionary web site [2], and I have passed on the responsiblity of app maintenance onto them. All their work (website, apps, conversion scripts) is now open source [3].
It would be really neat (and educational) to have the option to view a word's definition after you play it.
Proceeds to list 6 pretty high requirements.
The author’s not wrong, those are good requirements, but not to be expected from any standard app these days.
To dig on the first: “ Offline support”, this in itself requires a lot of work.
Going the technically easy way will often go in direct opposite to your business model (mobile ads or access info sales). Going for subscriptions or other mechanisms will have you do harder technical solutions, making that specific innocent requirement a decently high hurdle.
What work are you talking about? How is accessing local filesystem more work than calling external API with authorization?
So I wrote a offline dictionary with a friend of mine based on wordnet and J2ME polish. It was my first real world project - http://cornucopia.sourceforge.net/
Just fyi, "Donwload" at the bottom is a typo. Figured as a dictionary app, you'd want someone to flag that
It used a DICT server for lookups: https://en.wikipedia.org/wiki/DICT
And 14 years ago, some servers still existed. They're hard to find now.
It always struck me as something fantastic to a) learn how to interface with a server b) learn cocoa/objective-c/etc c) redesign a simple app (https://www.omnigroup.com/assets/img/app/graffle-7/mac/full-...). Something you've just described in detail. Well, most of it.
How much does it cost to maintain a dictionary anyway? A few million dollars at best? It is crazy that a ton of projects don't even get started, because these APIs are so expensive and unfriendly
The Académie Française is not a ruling body anymore, however, there is a committee that decides on which words to use, following a very bureaucratic process. French people are still free to use French as the way they want (thankfully!), but it is mandatory for official government communication.
And in case you are wondering, the ones who decide are usually famous French writers who got a honorific position for their past work. They tend to be completely out of touch with the modern world, and with a bureaucratic process that doesn't help the result is more silly than manipulative.
> Unless you are a plusgood citizen making agitprop for the proles.
what?They won't they would fund some other org or dept to do the work. Same way you have a public education system, or public health care.
It is not a given that such work is best handled through the public purse.
Governments fund the arts all the time. Why is there automatically an assumption that this will end with the government editing the dictionary to control speech?
Scraping government sites for glossaries, mashing up the definitions to create a free comparative international dictionary.
It also, turns requests for some words, like "rolling" into definitions for their root word like "roll", even when wiktionary has distinct and useful definitions for the word, which makes it less than ideal for me.
I'm also a little surprised they didn't think Wiktionary was sufficient for languages apart from English. I could be wrong, but my impression is that it's pretty good for major languages[1].
It seems to put the "transitive verb" definition at the top, followed by the noun, even if the verb-usage is less common. Is there metadata that indicates which is more common, to adjust the order?
For those interested in alternative dictionary apps for the English language I'd also recommend checking out the advanced english dictionary [1] as well. It certainly checks all the boxes the author asked for and then some more.
EDIT: Just noticed the author was kind enough to share the source code. That's super cool - kudos for doing that.
https://apps.apple.com/us/app/advanced-english-dictionary/id...
It’s my most favourite and most useful dictionary, only second to the Oxford pocket dictionary I owned as a child and later as a teenager while I learnt English as my second language.
Currently trying to learn Spanish and having to select Spanish as the language for each word makes the app a pain to work with.
My simplistic solution was a command-line script which googles "define {word}" and extracts the definition into the console. The query history is appended to a text file (partitioned by date) saved in Dropbox.
Someone tried to use it in an Alfred workflow. Don't know if they made it or not. It seems it's hard to query google in a script now.
The Longman brand was associated with English as a second language, so all our digital products came with audio pronunciations, plus a lot of photos/illustrations. In some products we also had a simple quiz engine to test comprehension. So a lot of data to cram into each app.
Like now, it seems that SQLite does a lot of heavy lifting. A lot of time was spent making a pipeline that could get lexicographic material in to a searchable database, plus the associated sound and image assets. I recall that the SQLite lib built-in to iOS wasn't good enough, so I had to compile my own build and bundle within each app.
The Longman dictionary data was really good. At the time a lot of the free dictionary apps were using WordNet (which isn't even a typical dictionary) because wikitionary wasn't where is it now. I bet there are more avenues to acquire decent, free, lexical resources.
For example, I would LOVE to have a dictionary app that allows me to paste in some text, and have it build a custom dictionary that defines every single word in that text - with the option to do it recursively so that the user ends up with a dictionary containing all the definitions for all the words in the dictionary - that is, the user can construct a complete dictionary, rather than a partial one, for any particular text - which, when used with the text, will allow the user to understand any word in the original text, plus any they encounter in the definitions themselves.
This would be immensely useful for technical documentation writers and other authors for whom it is necessary to use uncommon terms.
Anyway, off to parse the rest of the thread to discover everyone elses' dictionary projects before I .. start my own .. ;)
Work's pretty well. I use it every day. It's only in french.
https://git.ache.one/dfr/about/
The web version:
(My use case was that I need pronunciation of the words)
The pre-color dictionary models would wake from sleep instantly after opening the cover. Then you type your word in on a physical keyboard, glance at the definition, and then close it again. The AAA batteries would several months. Compare with a phone where you have to put in your password to unlock it, you type on a screen, the keyboard takes precious screen space where you need to display definitions, you have to recharge every day, etc.
But I absolutely love the ideas expressed in the post. Offline-first, data freedom, basic study support, simple layout. Data freedom, in particular, is something Casio's never had (using Oxford, etc.).
Done well, a good dictionary makes collecting words as fun as collecting Pokemon was.
Since the dictionary works as a pop-up on any selectable text, then if I look up a word and there's a "see other word", there is no way to jump to the next word. If the definition contains a word I don't understand, there is no way to click through to that word.
This is the dictionary I'd like to see on my phone.
There are a lot of dictionary apps out there but I think most developers miss the forest for the trees. I don't know why there's still not a single dictionary app that is blazing fast, use the built-in dictionary and have some common sense design choices (literally not came across a single dictionary app that doesn't enable keyboard as soon as you open it -- it's a dictionary app, why do they think I open the app?!).
Kotoba (https://github.com/willhains/Kotoba) is almost perfect but there's no way to download it from the App Store and I don't want to deal with the hassle of sideloading on iOS as a non-developer.
It has the added benefit of being integrated with the system dictionary, so if you add any extra dictionaries to the system, such as foreign languages, they will also be immediately supported in Kotoba.
Unfortunately: "App Store guidelines disallow using the built-in system dictionary to create a dictionary app"
Write up on daring fireball here: https://daringfireball.net/linked/2018/06/19/kotoba
Related: what do people use for bilingual (translation) dictionaries (i.e. X-English or English-X)? Most of the apps I have found for the languages I use are full of ads and not very usable. (Translation apps like Google Translate are much better and more usable, but there are some use-cases where a dictionary really is better).
https://www.livio.app/p/introduction-free-offline-english.ht...
You can see a little demo of it here - I'm planning on open sourcing the core soon.
Demo https://www.youtube.com/watch?v=MMpSpaMMdp4
Dictionary https://dictionary.lingdocs.com
https://play.google.com/store/apps/details?id=v1.f1nd.com.f1...
The blog for the same, https://medium.com/@iBharath462/android-paridhabangal-make-f...
https://play.google.com/store/apps/details?id=com.xtreak.not...
I loved that you built the context menu it's something I was thinking to. Congratulations.
Tried? Mind elaborating? I'm working on a flutter app atm - do you mean it didn't work out? / you didn't end up liking flutter?
I never really saw the need to look up words in a dictionary though, you just eventually learn what the words mean as they are repeated throughout the book in various contexts (most authors appear to like using the same words over ans over). I think it's actually more valuable to learn like this since it develops your ability to infer meaning from the various bits of context that you have, as well as the grammar and word structure.
For example the guy looked up "stiffened". That's a fairly weird thing to look up, why didn't he look up "stiff"?
It's a new app, shit happens, and if there's a way I can do to help you diagnose the issue on my end, I'd be happy to.
Flashcards is such a natural extension for such an app and I had just pitched flashcards to someone asking me for ideas for a new Dictionary app for Math. Thank you for the validation haha
Do look into one app I especially like called Memorize on iOS using flashcards very effectively for vocab learning.
https://apps.apple.com/in/app/memorize-learn-sat-vocabulary/...
The doc has a short and distinct name so can quickly be accessed via command + L (to go to address bar) and the distinct 5 character name for chrome to auto suggest it.
It's now ~10 years old. I used to add to it often, but the pace slowed as my vocabulary grew. It contains around 1-2000 words. I occasionally review it. One day I'll parse/analyse it.
And no, it doesn't seem like iOS gives us access to its dictionary as developer, unfortunately.
I often have similar concerns when writing code. Then I remember that "normal" applications send the query over the network to another continent, where a server has to query a HUGE database, and relay the result back.
It's amazing how we have such powerful devices, but are so accustomed to underestimating their capacity.
Yes it takes more space, but phones can affordably be configured with 256GB and laptops with multiple TB of high speed storage nowadays.
or does the sqllite not support LIKE 'word%' queries?
You must write the full name "Wordnote Dictionary" to find it.
That would be one way to approach the lack of available data sets for languages that are not English.
but wow, this is very eerie—i have not written an app but thought about it!
i am using a combination of three iOS applications right now to achieve what both these apps are offering. the built-in dictionary of course, notes, and reminders. after looking up words using the built-in dictionary, i put them in notes. then about once a week, i do a review and set reminders for a few select words.
i have been doing this for a few years now. it's heartwarming to see these ideas validated not in one but two applications.
Voice lookups might also be a good thing.
A - aardvark...
Our "extreme" view is that no amount of optimization and local storage will save your mind from dark patterns of your smartphone.
P.S. We love to be downvoted to oblivion on HN. Thanks.:)
It seems like if you're limiting yourself to 300k words starting with the most common ones isn't the best heuristic for filtering. Surely people are going to look up less common words more often? Or maybe even the most likely words to be misspelled.
> Not really the invetor of the dictionary but the well famous for combine alphabetic and topic order
https://github.com/vthommeret/glossterm
Specifically it can understand and execute 21 different wiki text templates (e.g. "cog", "borrow", "gloss", "prefix", "qualifier”), e.g. {{inh|es|la|gelātus}}:
https://github.com/vthommeret/glossterm/tree/master/lib/tpl
And eventually parse it into this structure, which has a list of all definitions (distinguished into nouns, adjectives, verbs, adverbs, etc...), etymology, links, and descendants for a given word:
https://github.com/vthommeret/glossterm/blob/master/lib/gt/p...
Further parts of the pipeline turned different relationships into edges that I could stick into a graph database and do certain graph queries. This allowed me to do certain queries like find French, Spanish, and English words that share a Latin root.
I ended up parallelizing this specific query using Apache Beam and then dumping the results into Firestore so they could be queried via a web app. Here's an example for the Spanish word: helado
https://cognate.app/words/es/helado
Under the "Cognates" section, it knows that it comes from the Latin root "gelatus" from which English has borrowed the word "gelato".
I originally started this project when I was learning Spanish. If you just look up the definition of helado (ice cream) it doesn't necessarily help you learn it. But I found that if I could relate it to languages I already knew (e.g. English and French), it was easier to remember. In this case helado is related to gelato, but you won't find that in e.g. Google Translate or SpanishDict.
Ultimately, I found that while the Wiktionary data is amazing, it’s also a bit of a quagmire for finding cognates. I would miss certain etymologies where you had to follow a descendant tree 2 or 3 levels deep. Or a definition would just mention a word it was related to. But if I expanded the query to include these instances, then it significantly increased the amount of non-cognates that showed up in the results.
So I created a useful set of tools (which I never wrote about until now), but I realized the end result of a web UI that showed the relationships between words would require a significant investment in data quality that likely wasn’t possible without changing Wiktionary itself / community investment.
I'm working on similar dictionary app and found wiktionary insanely usable as dictionary source.
Here is one more project aiming to make wiktionary data usable as json data structure: https://github.com/tatuylonen/wiktextract.
It has a link to a site https://kaikki.org/ which hosts dictionary data dumps.
I don't have up-to-date benchmarks but my project is written in Go and everything was designed to be as highly parallel as possible, broken up into multiple pipeline steps (splitting the Wiktionary dump, lexing, parsing, resolving, etc...) with a high emphasis on performance so I would assume it's faster but would need to do a head-to-head test.