My biggest gripe with smart keyboards is that it doesn't work well for multiple languages.
I speak three that uses the english alphabet, and the keyboards get annoying when it starts predicting english words when I'm typing something in a different language altogether.
Most of the time I even disable the dictionary on normal keyboards.
I came here to say the same thing. I have friends I text in a mixture of English and Portuguese, and just my simple iPhone keyboard drives me nuts. I don't want to have to cycle through the language button on every other word.
And I think that's the experience for a lot of people who live in a foreign country, or still have friends from other countries. Languages get mixed all the time.
> And I think that's the experience for a lot of people who live in a foreign country, or still have friends from other countries. Languages get mixed all the time.
It is a terrible design flaw, that is primarily due to the fact that a lot of software designers assume that the average person speaks one language; in fact there are more multilingual people than monolingual people in the world (cf first paragraph of [0]).
Ideally, software keyboards would be designed to take that fact into account - a few smart things could be done! But no, a lot of software is designed by upper middle class westerners which tend to only speak a single language, and the designs we have are victims of their creators' biases.
In the meantime, I have 5 different keyboards on my iPhone, and I find texting extremely painful.
I completely agree that as software makers, keyboard makers in particular, we have to be understand how prevalent and important multilingualism is. ASCII and the subsequent long road to Unicode is a fantastic example of this western centric bias.
The Minuum team includes a number of multilingual people; I mix french and english on a daily basis, others on the team speak slavic languages regularly. Similarly being based in Toronto, near the bilingual province of Quebec, our friends and family early user network included many multilingual people.
I think that more than almost any other type of software designers, keyboard makers are acutely aware of the importance and the myriad of issues surrounding multilingual support. We've known since very early on that language support is a major factor that will eventually make or break us.
For us, each new language actually brings a surprising number of exciting new technical challenges. Hopefully we'll be able to gain insights from the process and find those "few smart things" that can be done to get you from 5 keyboards to 1.
Funny you mentioned Québec when you're in Toronto: I wouldn't be surprised if there were more multilingual people in the GTA as there are in all of Québec.
I meant to suggest that between toronto's multiculturalism and Quebec's bilingualism we had a lot of early users who were multilingual. Sorry if that was unclear.
> It is a terrible design flaw, that is primarily due to the fact that a lot of software designers assume that the average person speaks one language;
In countries where people have to deal with two or more system on a daily basis (i.e: any country that is not on ASCII like alphabet) there is no such assumption, but there is still no very good solution for this problem after decades of trying.
I don't think it's laziness or short-sighness that impedes progress. We might need a big breakthrough in some field or disrupting idea to have thing move faster.
I suspect it is more the bias than the technical difficulty. You can you the same techniques used to predict words to predict the language they are in, especially if you limit it to a user-defined set of languages. I would be tempted to try it but I don't speak multiple languages so I would be a terrible test subject.
If think you could experiment with an interface that actually does to solve this problem and does auto detect the language:
http://translate.google.com/#auto
Once a language is detected it won't reevaluate the input, so you have to paste whole sentences in it. The implementation really goes above and beyond to guess the input, I think that's what you and other mean by matching several languages at ounce.
For instance "J'aime pas la philosophie du 'just do it'" will translate both french and english parts at the same time.
The thing is, 'just do it' is a ready made english sentence, but you could autocorrect it to 'juste doit' or 'jus doit', both of which are valid single words in french. There's no way to know what you really meant on the autocorrection front (we have to assume you made a mistake to suggest something), and you'll need an interface constantly suggesting correction that you'll dismiss 99% of the time. This feels like hell in a popup to me.
And the fix is so simple: just detect when something you're typing makes (some degree) more sense in another one of your frequently used languages and then switch over.
Even just training the markov chain on two language corpuses simultaneously should be able to handle that quite decently already.
Not to be flippant or anything. I think these words that can cause the most visceral reaction in engineering when uttered by clients or 'idea' people. There can be a very huge gap between something simple to put in words, and a concept that is actually simple (both in the easy to understand, and in the low technical complexity sense).
For the point at hand, detecting which words belong to what language is an insanely difficult problem. Even excluding words that are purely invented but still make sense (like a new fad, a technical world, proper nouns, abbreviations, short hands etc.). Even within a single language you'll still have a hard time coming up with heuristics about what the user is typing 80% of the time (my personal experience with IMEs), especially when the user makes awful typos all the time.
Up until now, the best system I've ever seen is to use a dedicated switching button on your keyboard to switch between the language contexts. Japanese mac keyboard's 'eiji' and 'kana' buttons are really good for that, a lot better than the Control+Shift kind of pattern mainly used in linux distros for instance. It's fast, fool proof, very simple to understand from the user POV, and the input system is always focused on one kind of input only. But it translates very badly to touch screens I guess.
Not be flippant or anything; but one of the most visceral reactions I get is when someone tells me something is massively complex only because it's something nobody has cared enough about to really look into it.
I have a near 50/50 split between two languages in my day to day usage and I would already derive massive benefit from some very small tweaks, ranging from autocorrect accepting words for two languages at the same time to, like I mentioned, just offering prediction with a Markov model trained on two languages simultaneously.
These are fixes that are very easy to implement and would offer a significant benefit, yet they aren't being implemented because the developers just don't care enough.
>from autocorrect accepting words for two languages at the same time
I agree this. This is so important and so easy. I have basically gotten used to those red markers to the point I barely notice them anymore. It is easier to ignore them than to change language every time.
I'm not sure. Imagining the current iOS autocorrect for instance working on french and english at the same time would be a mess. or a mass, or messe, or mers, or messes, or miss, or moss, or Messieurs. And now I feel like playing scrabble.
And most IMEs already work with several languages in a way, since they use the sentence context coupled with a system and user dictionary that contains the most common and some set of arbitrary words from any language you want/use regularly enough to have the IME remember the words.
My comment referred to the typical Markov chain type word prediction, which is the mechanism behind the 'sentence context' you referred to in those custom IMEs.
What I described is basically taking that mechanism and baking it into the standard OS without all the custom personalization options the IMEs offer and just offer a ready to use "English + OtherLang" option.
I don't think iOS does anything like that, but there you can still reduce the threshold at which you'll auto-correct and get a significant improvement.
Just goes to show that on all platforms there are still plenty of trade-offs to be explored.
My cofounder (spaky here) seems to be comment-limited on HN, but here are his thoughts on this:
I completely agree. I speak two languages regularly (English/French) and I also find it to be a pain point.
It's something that I hope we can address over time with Minuum. Certainly the first step will be making it really fast and painless to switch languages.
We've also considered having a quick way to disable auto-correction/disambiguation on the fly.
Do you have a favoured solution? Sounds like maybe simultaneous language support doesn't quite cut it for you.
I don't really have a favoured solution, as of now, other than not using predictive typing.
I can see that Minuum works well using Bayes to predict a certain english word given the user input.
If you guys generate/use a language model for other languages that would give us around the same accuracy/prior probability as the english model, then I think it shouldn't be a problem.
Having quick settings and options that you can setup and choose which languages to include in the prior probability.
Being able to quickly turn off/turn a language, add/remove languages to the priori, etc.
This might not work at all but I wonder how it would work if you supplied it with a "mixed" language model. That is, a language model based around a person using multiple languages interchangably on the fly, simultaneously, instead of doing this modal switching stuff that causes so many headaches.
Given it's the name, I understand that one of the main objectives of your keyboard is to save space. However an option to simply stack two or three boards for those who could compromise screen space for multiple languages would be nice.
Switching languages does not work for me well. I type in 3 languages, two of them has accents. I usually type in different language than is set in the keyboard, because I forgot to set it. My phone keyboard (default on galaxy s3) has learned it well, so it is not problem. I have another recomendation:
Let user to check which languages he is using (somewhere in settings) and then allow him to use them as he wish. Mix all selected languages into one, previous (or two previous word) should be enough to predict correct next word.
disclaimer: I haven't used minuum yet, so I do not know if this is already possible.
I speak a few languages and often use words from other languages with SMSs etc. I'd estimate 90-95% of being english with other words thrown in between.
If I analyse my message history I will most likely find that I use less than 100-150 words from the other languages pretty often.
So, if there is a feature to quick way to disable auto-correction/disambiguation on the fly like you mentioned with an added feature to automatically add words that I use when auto-correct is turned off to a dictionary, my need to turn auto-correct off would decrease quite rapidly, to the point where I may not need it at all.
I find the exact opposite problem on my old WinPhone - since I'm Canadian, I automatically must need the language-switcher button on my keyboard so that I can switch to french. And unlike the letter-keys, there is no autocorrect for this status-toggle. So I accidentally hit the "ENU/FRC" toggle when I meant to hit N and suddenly the autocorrect is turning my words into French.
I haven't written or typed a word of French since high-school.
"I automatically must need the language-switcher button on my keyboard so that I can switch to french.
[...]
I haven't written or typed a word of French since high-school"
So, which is it? Should I read "must need" as "Microsoft assumes I need two layouts?" Isn't is possible to disable the French keyboard on the phone?
They all allow to mix multiple languages and are pretty awesome virtual keyboards. Using them with two or more languages at the same time is a very smooth experience. Couldn't imagine to go back to a single language keyboard.
A quick overview:
- Swiftkey has probably the best prediction capabilities and with its cloud sync it has many advanced features.
- Touchpad is very close to swiftkey
- Kii is the keyboard with the most configuration possibilities. You can change really everything with this keyboard, from the size of the buttons
over padding, click sounds, prediction behaviors to gestures and many, many more. It's definitely the most powerful and fastest keyboard. On par with swiftkey except the cloud sync feature. Once you you set it up to your needs your type as fast as with a blackberry either with one hand (by swiping) or with two hands (by tapping). But again swiftkey and touchpad are very powerful too and at the end it's a matter of taste.
Swype is still quite popular but doesn't have good multi language support and the experience is not that smooth compared to the other ones.
I don't know about Kii (seemed pretty bad long time ago) nor TouchPal X, but although I love SwiftKey, I hate its model.
I'm almost positive they use an n-gram Markov model, which is pretty cool. But, and the big but (might be wrong but it's my feeling) is that they share the model across languages.
I suspect so because I normally keep English/Spanish on and switch between Portuguese and French, and even when I'm writing Spanish in E/S/F mode I get Portuguese suggestions (because of identical and very similar words to Spanish).
No, you should be way, way stricter to tell languages apart and use different models for each one, probably using another model to adjust the probability of each language.
Example annoyance: After I type 3 words in Spanish that happen to be 2 words in Portuguese and 1 in English, I certainly don't want the English suggestion, even if I use that word more frequently in English.
I haven't tried it, but do answer this. does it support only pre-defined languages? What if my language isn't based on the roman alphabet, but i use them phonetically. Does it support that?
I run Danish, English and Spanish on Swifthkey, and it works very well. As soon as I have typed one or two words, it knows exactly what language I'm typing.
But they're very different languages that share very few words, aren't they? Try speaking a few romanic languages that share a bigger proportion of their words and you'll see where the problem is.
Swype is getting better at this, you can type in English + [language of your choice]. Predictably, its guess become less precise because now it has to choose from a data set twice as large, but one can swap between setups...
Well android's default keyboard learns it pretty well. Not only does it learn words, but also their usage by observing patterns in sentences. One time i had to type a fb comment 3 times because the sending kept failing . On the third time, the keyboard was predicting entire words of the sentence, sometimes even before i wrote a single letter!
"Incidentally, this is also why the Dvorak keyboard layout is exactly the opposite of what you want in a highly ambiguous scenario; Dvorak places all the vowels adjacent to each other, significantly increasing ambiguity. Intuitively it rearranges word-space to put many common words right next to each other."
I suspected as much when it came to Swype; it's nice to see someone who has actually done the work verify this intuition. I use Dvorak on my physical keyboards, but I find it sort of... ironic, for lack of a better word... that the suboptimality of QWERTY is itself the key to how these alternate sloppy-keyboards work. It's sort of nice that my QWERTY skills don't entirely go to waste...
I think a big part of the appeal of Dvorak in the dev community is that there's something very satisfying about a keyboard based on real research. That research was done for 10 finger full-size keyboards though, and doesn't really map to the current generation of keyboards. As I allude to in that footnote, we've actually done some really cool research into optimal keyboard layouts in ambiguous scenarios. We'll probably do a follow up post diving into that! (also stay tuned, there should be a paper coming out soon).
it is unlikely that QWERTY is optimal for this use case
since it certainly was never designed for this
QWERTY was designed to minimize jams on manual typewriters. You get a jam when you press two nearby keys in quick succession. This is actually extremely similar to the layout constraint swype operates under.
I was talking about Minuum, not Swype there. For Minuum, "maximizing alternation" is not a priori obviously the same as "maximizing the information theory distinction" between two subsequent keypresses. In fact, the fact that you are trying to maximize separation tends to imply that you are thereby tending to make the next keystroke more predictable than it should be, which is to say that the likely next keystrokes have clumps where too many of the most likely "next letters" are all on one side, which is suboptimal from the information theory perspective. QWERTY is not likely to be optimal for this use case; it may even turn out that the optimal keyboard resembles it as little as QWERTY resembles Dvorak.
There's been research done on Dvorak? I remember a few years ago, when I was trying to learn it, I ended up looking into it and finding nothing but "this person can type faster on Dvorak than QWERTY!", ie. no actual studies with controls and all that, so I wound up giving up.
It makes a certain amount of sense, when you think about where QWERTY came from - the problem has changed, but the solution is the same - to spread out the most common letters as much as possible in the uh... register thing where the hammers lived (don't know the technical term).
The "visualize some words" graph is awesome; took me a minute to realize it was interactive. I'd be interested in another post about how Minuum incorporates personal typing habits over time.
The video of this working on the smartwatch is crazy. I've always wondered how smart watches would deal with text input, looks like there's finally a solution. Is it possible to run this on the Pebble or Samsung watches right now?
Author here: That video is an in-house demo of an early prototype on a Samsung Galaxy Gear, so yes it works on those! Minuum isn't yet shipping on any smart watches, but we're hoping to have something out as soon as possible.
We will be setting up an alpha with some Galaxy Gear users in the next week. Some technical know how will be required, but if you're interested send us an e-mail at developers@minuum.com.
Why does a keyboard need permissions that include:
1) Network communication (full network access)
2) Your social information (read your contacts)
?
The first makes it sound like it's a keylogger, and stops me in my tracks.
The second... just why on Earth would a keyboard need to have a list of contacts? Are you going to spam my friends?
If #2 was asked for without #1, I could charitably hope that the contacts are just used for word suggestions based on names and addresses. But due to #2 being asked for in addition to #1 I really just think this is a spam machine at best, and a leaking of private contacts at worse.
Is anyone from Minuum on here who can explain why those permissions would be required.
I asked the very same question about #1 on the Play store, and the developers did respond quite quickly: the network access is required to download new language packs. This makes perfect sense to me, as much as I'd like to see something like keyboards split off into two apps: the keyboard, with no/minimal permissions; and the 'helper' app, for settings, dictionary building/importing, downloading language packs, etc.
As far as reading my social information, I have no idea why it requests that. However, upon checking XPrivacy, I can see that it has never even attempted to access accounts, contacts, SMS/MMS, etc. Which would lead me to speculate that this is either a mechanism for recommendations, or used to build up dictionaries. (Edit: I never have the keyboard build up dictionaries, so I never told Minuum to try to do anything along those lines.)
Under settings there is an option for you to import your android dictionary, as well as import contacts. I like that they it's opt in, and going by your comment it seems like they're being honest.
I emailed them just in case they didn't see the above, and their response is:
We require network access in order to collect analytics on how the
keyboard is used. This information is completely user anonymous
and we only use it so we can improve the experience for our users.
We request social contact information so that the app can import the
names of your contacts into our dictionary locally on your phone.
This information does not leave your phone.
We think it is of utmost importance to respect the privacy of our
users and only request certain information to improve the user
experience. For further information about privacy, please see:
http://minuum.com/data/
Please let us know if you have anymore questions,
Please check out our data collection policy at http://minuum.com/data/ . We actually wrote a fair amount of it ourselves to try and reduce the “legalese” aspect. Hopefully, as you suggest, we can work to increase transparence more in the future.
As someone below mention the key reason we introduced network access was to enable language packs.
We also collect some analytics, but it's limited to data which is inherently anonymous. We really want to build an amazing keyboard that people will want to use every day so it’s critical we be able to answer basic questions like “Is the keyboard installed?” and “Was it used today?”. Otherwise we couldn't validate our design decision.
As stated in our data collection policy, if we ever want to collect anonymized typing statistics or other data related to what you type, that would be strictly opt-in and we would be as transparent as possible about it.
And yes, as others mentioned, we only access contact information if you use the import contacts feature in the settings.
I use Minuum and have Swiftkey, although I have to say I never liked it as much as swype or the google keyboard. I used to use Fleksy full-time because it just seemed way more responsive that Swiftkey and the gesture typing is pretty awesome. The two biggest pros for me are as follows:
1 - Small keyboard makes it hard to look at the keyboard itself as you type forcing me to actually touch type on my phone. This has allowed me to catch way more typos as I write and has also helped my writing as I can focus more on the flow of the words than on the act of typing.
2 - Screen real estate. I know that phone screens are huge, but if you want to write something longer being able to read more of what you have written without having to constantly stop and scroll is great. Responding to emails and incorporating details from prior messages is much, much easier.
Cons:
1 - I find the space gesture to sometimes result in the backspace gesture being selected if I go too quick. Compared to the speed and effortlessness of fleksy this is much more finicky.
2 - The swipe up/down to pick different word corrections from fleksy is not present meaning that choosing a different word completion requires you to leave the "home row" and click on a small target. Way less convenient.
3 - The swiftkey style "start typing and just select completions to finish the sentence" style doesn't really exist, but most of my sentences weren't as canned so I didn't really use this feature.
In summary, I use minuum and like it a lot. At most you've lost like 4-5 bucks or something or like 1/2 of a footlong sub. So you really can't go wrong by just trying it out. I would also recommend fleksy if you don't like minuum as I find both to be better than swiftkey. If minuum could grab some of the fleksy features I mentioned above it would be unstoppable.
I went from using SwiftKey to Minuum. I would say SwiftKey has better prediction, at least for predicting the next word. Minuum isn't very good right now at predicting the next word you want to type based on the previous words, though I think it has been improving. However, I think on average I probably type at about the same speed on both because Minuum allows you to be much sloppier and there is only 1 dimension.
Overall, the only real advantage of Minuum currently is its smaller size which allows you to see more of the screen... which is point. SwiftKey has more languages and currently allows for faster switching between 3 of them. And since its been around for longer is probably slightly more polished (less weird behavior when encountering weird input fields).
Oh, the other thing about Minuum is that people who haven't used it might have trouble borrowing your phone :P
I tried. Swiftkey is very resilient to errors, so I just swipe the finger over keyboard quite vaguely and know it will cope somehow, I have to be much more precise for minuum. Guess that's because of one lost dimension. Also, my phone is huge (htc one) and it feels unstable when hold it low enough to type where a spacebar used to be.
They're both predictive typing, so they both fall on their face when it comes to two things. Proper nouns and slang.
Whenever I try to write one of those two thing (often, think email addresses, friends names , "yo", etc) I have to fall back on regular input.
With swiftkey, this means just going back to pecking. With minuum, it means going into a menu and switching to minuum's full sized view or long pressing each region to get a zoomed in view of the keys around there to pick out the one I want.
The compactness of minuum is great, though. And when I'm entering non-proper nouns it's as fast as any keyboard (given a few days to adjust).
I paticuraly like the "swipe left for space" function.
It makes me want to try even more radical keyboards. Maybe something chord based.
A quick point: you can actually access the 2d keyboard with a gesture by long-pressing two fingers on the keyboard. Not a very discoverable gesture, unfortunately, we'll definitely need to improve that.
Do they not let you add to the dictionary? Honest question, I've only used Swype, but you can definitely add things to the Swype dictionary and they work just like any other word after that.
They do, but in order to enter a custom word, you have to switch typing modes to a full-screen keyboard, which is a 2 second action. With sliding keyboards, you just start pecking because you already have a full-screen keyboard.
I wonder if typing on watches will be someday as normal as typing on phones. I would rather bet on speech recognition.
Off-topic, but I'm hoping one day programming won't be a desk job. You'll get to walk around, interact with a touch screen and just have a conversation with the computer about what should your program do.
By nestling the EEG inside the ear, the engineers avoid a lot of signal noise usually introduced by body movement. They can also ensure that the electrodes are always placed in exactly the same spot, which, they say, will make repeated readings more reliable.
I agree! I love the thought processes of programming, but I hate staring at a glowing rectangle 2 feet ahead of me to actually synthesize those thoughts. My blue-sky hope for wearables is that they get me up, moving around, and interacting with reality while also producing great code.
For input touch screens aren't as fun or nice as mechanical buttons. Even perfect speech recognition wouldn't be what you want in a noisy environment, for texting privately, or for eyes free operation. So take a look at this http://blog.russnelson.com/chordite/index.willison Proves my argument is correct :) Okay, so maybe the hinges aren't super sexy.
Okay, I'm typing on Minuum right now. It's extremely accurate but I feel slow. You sort of have to shut your brain off and pretend you're playing a letter hunting arcade game.
It seems like I miss the space bar about five percent of the time.
To the developers, nice job and thanks for putting it on sale in the Play store.
Shame about the spacing issue, out of curiosity, how large is your device?
We actually prefer to use the right slide gesture for a space, the added bonus being that then you can disable the space bar in the settings and save even more screen space.
After you've used it for a few days, I'd love to get your impressions. You can get in touch with me at xavier@whirlscape.com if you're interested in sending any thoughts.
Hi, thanks for getting back to me! I didn't realize that the right swipe existed, but it's amazing! It actually solves both of my problems: now I can keep my thumbs in pretty much the same spot, which is great.
I'm using an HTC First (please don't make fun of me), which has a 4.3 inch screen.
I tried it out as an exercise, just imagining a vague area of my desk as the single row of keys. It took a minute, but I was quickly able to shut off the "Y axis" part of my touch typing skills. Obviously, I wasn't actually testing on the real software, but I suspect I would be able to achieve reasonably good accuracy and speed.
"Dasher is an input method and computer accessibility tool which enables users to write without using a keyboard, by entering text on a screen using a pointing device such as a mouse, a touchpad, a touch screen, a roller ball, a joystick, a Push-button, a Wii Remote, or even mice operated by the foot or head."
Hard to tell how much success it ever had in terms of adoption, although I could imagine there may be users out there who find it invaluable. Certainly worth a look though as it gives a very nice visualisation of the text prediction algorithm as it goes.
I just got this and tried it out.... awesome. recommend it. My friend and I watched the amusing video and i said, what's 2 bucks. It is just as fast as normal typing but gives me more real estate to see the convo!
also: took me all of 5 seconds to get fluent at it. no joke.
Hey, that's great to hear, we'd love to get feedback from you after you've had a chance to use it for a few days. My email's in my profile, drop me a message in a few days!
In addition to popular SwiftKey and Swype, it's great to see all these new experimental keyboards coming out. Between KALQ for speed and Minuum for saving screen real estate, there are so many great options to choose from on the Android platform.
When do you think we'll get to the point where the blog header will link to the actual product. I know there's a lil button up there in the corner but I intuitively just click that header.
It would have been interesting to see how well this would work with that canonical phone that was going to have the side-scroll sensor in the side of the phone, completely off the screen.
Basically the way Dvorak is optimized is sub-optimal for the Minuum disambiguation engine and so it reduces the accuracy. It turns out you're much better off with QWERTY or better yet something specifically optimized for Minuum.
I speak three that uses the english alphabet, and the keyboards get annoying when it starts predicting english words when I'm typing something in a different language altogether.
Most of the time I even disable the dictionary on normal keyboards.