Ben Kuhn Profile picture
16 Feb, 16 tweets, 4 min read
I just finished *Creative Selection* by Ken Kocienda, which is largely the story of how he came to build the iPhone keyboard.

It’s a great example of how many twists and turns it can take to come up with something that seems so incredibly normal!

v1 started out looking like...
some wacko phone-keypad variant, because the developers were super worried about touch targets being small. The input method for this was: tap to get the top letter, swipe left/right to get the bottom letters.
Except instead of the letters being organized like a phone keyboard, they’re jumbled up. (Presumably to make sure that common letters were taps, not swipes? But that plus the gestures seems impossible to learn.)
The first key idea for v2 was realizing that you could make it tap-only by using a dictionary to figure out which of the 3^n possible things you might have meant was actually a word. (The “T9” feature phone autocorrect software already did this, iirc.)
The second key idea was realizing that you could arrange it like a traditional QWERTY keyboard, but still group keys into larger buttons. This made it way, way easier to learn because people had QWERTY in muscle memory already.
Apparently the way they settled on this approach was by having a competition where a whole team of 5-10 people each built their own keyboard ideas. I guess that makes sense as a thing to do when you’re limited by idea quality and not execution speed!
Anyway, after the competition people loved this, but some problems came up in dogfooding: typing words that weren’t in the dictionary was too hard, and if you zoned out during a long word, you had no cues to remind you what letter came next. (Example from T9.)
The author got stuck on this until, during a demo where he explained why this was an inevitable consequence of multi-letter keys + dictionary, someone yelled at him to just go back to single letter keys, and he realized that autocorrect was now good enough for that to work.
Breaking up the keys led to a design that was pretty close to the final product.
Autocorrect was good enough to make this design workable, but still rough, so they spent most of the rest of the time improving it further.

Finally, it got good enough that they could simplify again by killing the suggestion bar, because the first option was almost always right.
So in retrospect, what it looks like happened is that they started out with a totally wacky design, which was the best they could do with crappy autocorrect. Then, as autocorrect improved, they progressively removed the weird/complex bits until ending up with something “normal.”
One thing I found super surprising is that when Apple committed to no hardware keyboard, they were still at the “totally wacky” stage. Seems like an amazing leap of faith to bet the iPhone on the assumption that they’d come up with something that worked well!
Another thing that surprised me is that the author spent ~0 time trying to do the text prediction in the “principled”/“optimal” way. He got people to explain Markov chains to him, but the math went over his head so he homebrewed his own prediction algorithm. Worked fine anyway!
I thought the stage in the middle with the QWERTY layout but big keys was interesting. It reminded me of similar things I’ve seen on a smaller scale that we’ve had at Wave—a design that checks all the boxes, but my reaction to it is still “huh, seems kinda weird but ok.”
Almost always in these cases, we later discover some problem with the design, fix it, and the fixed version doesn’t trigger my “seems kinda weird” intuition. Unfortunately I’m still really bad at turning “seems weird” into actual critiques though!
Anyway, mostly I thought this was a really instructive example of how many twists, turns, false starts, and rabbit holes it can take to get to a product design that seems obvious in retrospect—even for the pros :)

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Ben Kuhn

Ben Kuhn Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @benskuhn

15 Feb
People sometimes ask me whether Wave has any plans involving crypto, presumably because of the narrative that crypto is supposed to help with financial inclusion.

Unfortunately, in reality it doesn’t and we don’t. Crypto does not solve any hard financial inclusion problems.
Wave needs to solve, roughly, 3 problems in order to financially include someone:
1. track their balance
2. comply with regulations
3. convert balance to/from cash

Crypto is a very exciting solution to 1, but Postgres is a boring solution to 1 that is much faster.
People sometimes think crypto helps with 2, because it’s *technically* not currency. This is... not a great assumption about how governments/regulators work. It turns out that if you follow the letter but not the spirit of the rules, people eventually notice and tell you to stop.
Read 8 tweets
10 Jan
It feels like every couple days, I learn a new Git trick. (Sigh.)

I'm going to start a running thread indexing them, because (Git's defaults are so bad that) some of them are pretty big quality of life improvements!
A fun one I noticed recently is that they added `git switch <branch>` as a more intuitive replacement for checkout. Extra fun: `switch -m` moves your uncommitted changes (no more `stash/pop` dance!). Hoping this is a sign of more UI improvements to come!
Maybe my favorite: `git log --first-parent` shows history but *only merge commits*. Even if your repo doesn't squash-merge, this still gives a clean view of your history. A former coworker liked (our use of) this so much he wrote an explainer: …om.s3-website-us-east-1.amazonaws.com
Read 18 tweets
15 Dec 20
Happy @threadapalooza! 100 (tweet-sized chunks of) stories from trying to build mobile money in Ethiopia, Ghana, Nigeria, Senegal and Cote d’Ivoire.

(Minus the ones I’m not supposed to talk about :P)

It all starts in ~Sep 2015 with me pretending to be an accountant.
“Huh?” It turns out doing the accounting for an international money transfer business is hard. There is a normal way of doing this, but instead of trying to find out what that was, we were like, “this seems like it should be 100% automated! We’ll just do that.”

LOL
(This was part of our general take that hiring was for chumps, instead we’d scale ourselves by building internal tools)

So that’s how I ended up closing Wave’s 2015 books by spelunking through a homegrown database for 3mo with handwritten SQL and a half-baked Flask-Admin UI.
Read 69 tweets
13 Dec 20
How come there's pair programming and not pair... anything else?

Pair design! Pair writing! Pair data-analysis! Pair management!
The advantages of pair programming are things like:
• Reducing risk of mistakes / doing things sub-optimally
• Sharing knowledge between the people who are pairing
• Making it easier to stay focused
None of these are programming-specific, except maybe that knowledge-sharing is unusually important (because benkuhn.net/blub/). I'd argue that the point about focus is *anti*-programming-specific: programming is much more conducive to flow states than most activities.
Read 5 tweets
28 Nov 20
Today @Delta both:
(a) made me remove the p100 I was wearing underneath my valve-less cloth mask;
(b) let people around me wear masks under chins for hours 🤦‍♂️

So I was surrounded by maskless people + had a much less safe mask myself. 0/10 idiotic safety theater, fly elsewhere.
(Why try a p100? Based on a microcovid.org rec—it's easier to get a good seal with a P100 respirator than an N95, and they are better filters. The cloth mask protected others from outflow. But, silly me to do something that needed *thinking* to verify it was ok.)
Classic case of rules based on socially-approved talismans rather than effects on reality:
1. As I pointed out at the time, (their interpretation of) the policy was instructing me to *just remove* a layer of protection and this couldn't possibly make anyone safer.
Read 7 tweets
27 Sep 20
Whew! After *way* too much putzing around with my video call setup, I've written up all my recs into a guide: benkuhn.net/vc/

The impact has been pretty big—when talking to other people w/ similar setups I've gone 4+ hours without getting tired. Some surprising bits:
1. Open-back headphones made calls WAY less exhausting:
2. Webcams seem nearly pointless—even the best ones probably look worse than the smartphone camera you already have:
Read 5 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!