Most active commenters
  • absoluteunit1(7)
  • pseufaux(3)

←back to thread

439 points david927 | 17 comments | | HN request time: 1.027s | source | bottom

What are you working on? Any new ideas which you're thinking about?
1. absoluteunit1 ◴[] No.44418988[source]
Building https://www.typequicker.com

Long-term, passion project of mine - I'm hoping to make this the best typing platform. Just launched the MVP last month.

The core idea of the app is focusing on using natural text. I don't think typing random words (like what some other apps do) is the most effective way to improve typing.

We offer many text topics to type (trivia, literature, etc) where you type text snippets. We offer drills (to help you nail down certain key sequences). We also offer:

- Real-time visual hand/keyboard guides (helps you to not look down at keyboard) - Extremely detailed stats on bigrams, trigrams, per-finger performance, etc. - SmartPractice mode using LLMs to create personalized exercises - Topic-based practice (coding, literature, etc.)

I started this out of passion for typing. I went from 40wpm to ~120wpm (wrote about it here if you're interested: https://www.typequicker.com/blog/learn-touch-typing) and it completely changed my perspective and career trajectory. I became a better programmer and writer because I no longer had to think about the keyboard, nor look down at it.

Currently, we're doing a lot of analysis work on character frequencies and using that to constantly improve the SmartPractice feature. Also, exploring various LLM output testing/observability tools to improve the text generation features.

Approaching this project with a freemium model (have paid AI powered features; using AI to generate text that targets user weakpoints) while everything else in the app is completely free. No ads, no trackers, etc. (Hoping to have sufficient paid users so that we can run the site and never have to even think about running ads).

I've received a lot of feedback and am always looking for ways to improve the site.

replies(6): >>44419061 #>>44419392 #>>44420907 #>>44426017 #>>44427084 #>>44427663 #
2. pseufaux ◴[] No.44419061[source]
What an incredibly interesting use of LLMs (generating text to practice typing). It leans in on what LLMs are good at. That said. I would love to see a middle tier pricing which had some features but avoided the AI use.
replies(2): >>44419332 #>>44419594 #
3. llbbdd ◴[] No.44419332[source]
Why avoid AI use? Genuine question, I see this around and it seems usually based on a mental model of the environmental cost of AI that does not match impact in the real world.
replies(1): >>44421942 #
4. haneul ◴[] No.44419392[source]
Hah that's pretty fun. I got tossed about by the animated hands for a few, but grabbed a 194 after that.

Dunno about the trigrams though, mostly it's on the "token group" level for me - either the upcoming lookahead feels familiar or it doesn't, and I don't much get bothered by the specific letters as much as "oh I don't have muscle memory on that word, and it's sadly nestled between two easy words, so it's going to be a patchy bit of alternating speed".

replies(1): >>44419673 #
5. absoluteunit1 ◴[] No.44419594[source]
Thanks!

Yeah, LLMs are indeed really good for this use case.

> That said. I would love to see a middle tier pricing which had some features but avoided the AI use.

Only paid features are AI features. Everything else is free and no ads :)

You can type anything and as much as you want, you have access to all the advanced stats, you can create a custom theme from a photo of your keyboard, etc.

Everything but AI features is free right now. (Might change in future as we’re adding a lot more features so we will definitely consider a mid tier price )

replies(1): >>44421986 #
6. absoluteunit1 ◴[] No.44419673[source]
Thank you - glad you liked it and thanks for sharing your impressions and feedback; helps me understand what the users like.

> Dunno about the trigrams though, mostly it's on the "token group" level for me - either the upcoming lookahead feels familiar or it doesn't, and I don't much get bothered by the specific letters as much as "oh I don't have muscle memory on that word, and it's sadly nestled between two easy words, so it's going to be a patchy bit of alternating speed".

Could you elaborate a bit on this part - not sure I fully follow.

The trigrams/bigrams is mostly to help the user discover if there are some patterns that really slow them down or have a lot of mistakes. This is something I wanted that I didn’t see in any other apps.

This also what we use under the hood for SmartPractice weak point identification. We look at what the most relevant character sequences (for example the ta sequence is way more common than za) are and what the user struggles with the most. This is just one of the weak points we use in the user weakness profile.

7. pseufaux ◴[] No.44421942{3}[source]
Environmental cost is a concern, though for me not the main one. In this case it's two things.

1. AI interactions cost the service money, which is inevitably passed on to the consumer. The if it's a feature I do not wish to use, I like to have options to avoid paying for that feature. So in this case, avoiding AI use is a purely economic decision.

2. I am concerned about the content LLMs are trained on. Every major AI has (in my opinion) stolen content as training material. I prefer not to support products which I believe are unethically built. In the future, if models can be trained solely on ethically sourced material where the authors have been properly compensated, I would think this position.

replies(1): >>44422320 #
8. pseufaux ◴[] No.44421986{3}[source]
Got it. That makes complete sense. I'll definitely check it out.
9. azeirah ◴[] No.44422320{4}[source]
I'm active in the /r/localllama community and on the llama.cpp GitHub. For this use-case you absolutely do not need a big LLM. Even an 8B model will suffice, smaller models perform extremely well when the task is very clear and you provide a few shot prompt.

I've experimented in the past with running an LLM like this on a CPU-only VPS, and that actually just works.

If you host it on a server with a single GPU, you'll likely be able to easily fulfil all generation tasks for all customers. What many people don't know about inference is that it's _heavily_ memory bottlenecked, meaning that there is a lot of spare compute left over. What this means in practice is that even on a single GPU, you can serve many parallel chats at once. Think 10 "threads" of inference at 20 Tok/s.

Not only that, but there are also LLMs trained only on commons data.

10. weepinbell ◴[] No.44426017[source]
This is very neat. One piece of feedback and a gripe I have with a lot of these is that missed or extra characters throw off the entire next sequence and essentially require backing up to deal with them, as opposed to wrong characters which are fine to just be mistakes you move on from. It'd be great to have some detection for when the user is continuing that re-aligns their string.
replies(1): >>44426921 #
11. absoluteunit1 ◴[] No.44426921[source]
Thank you :)

> One piece of feedback and a gripe I have with a lot of these is that missed or extra characters throw off the entire next sequence and essentially require backing up to deal with them, as opposed to wrong characters which are fine to just be mistakes you move on from. It'd be great to have some detection for when the user is continuing that re-aligns their string.

Thank you for the feedback! I’m not entirely sure I can visualize exactly what you mean by this:

> It'd be great to have some detection for when the user is continuing that re-aligns their string.

Could you give an example of this?

I curious because I’ve been exploring alternative and unique UI ideas for typing practice so this could lead me into a new direction

replies(1): >>44427582 #
12. artur_makly ◴[] No.44427084[source]
very cute. good luck!
replies(1): >>44429073 #
13. weepinbell ◴[] No.44427582{3}[source]
I pulled up the first text I found from the site:

> according to its archive...

Let's say I mistype and don't double the first "c", but otherwise type entirely correctly.

> acording to its archive...

This would be counted as having everything wrong except the first 2 characters, which doesn't feel like a good reflection of my accuracy.

I know this is a hard problem because I don't think there's any simple guaranteed way to re-align the string to account for a possible deletion or insertion, particularly if there are more mistakes in the following text, but finding and using some sort of accuracy-maximizing alignment would be great to have.

replies(1): >>44429071 #
14. flysand7 ◴[] No.44427663[source]
So I've got some things that seem a little bit weird to me:

1. Typing uppercase characters counts as a mistake

I'm not sure how that got to be the case, but somehow typing an uppercase letter instead of the lowercase is a mistake, despite the fact that sentences start with a lowercase letter. This conflicts with my muscle memory of starting sentences with a capital letter.

2. WPM is not a useful metric on its own

WPM can rise and fall depending on the length of the word. The bigger the word the less likely you are to type that word correctly from muscle memory, so the speed drops. The speed also drops due to the word being longer. I believe having both metrics would yield more useful data, such as when do you slow down etc.

Speaking of which, there are some more statistic things that could help, like measuring how fast you are at fixing the mistakes, or measuring three-letter combinations instead of two-letter combinations, because the context of the third letter might help, but you do need more data to gain a statistically significant result. Maybe trying to classify mistakes by the side of keyboard they happen on -- i.e. are they simple typos or a miscoordination of your hands.

---

Also, as pointed out by another commenter, hands also threw me off. I've been observing them and it's interesting that I don't use my little finger for the left row -- it's used in case I need to press shift.

replies(1): >>44429028 #
15. absoluteunit1 ◴[] No.44429028[source]
Hi, thanks for checking out the app and for the feedback!

> 1. Typing uppercase characters counts as a mistake. I'm not sure how that got to be the case, but somehow typing an uppercase letter instead of the lowercase is a mistake, despite the fact that sentences start with a lowercase letter. This conflicts with my muscle memory of starting sentences with a capital letter.

So if you click on the topics (or whatever mode you're on), you will see the Options menu on the side. Capitalization is off by default but you can flip that back if you prefer capitalization. I've had folks request that capitalization be off by default hence the current state but I might change the default settings.

> 2. WPM is not a useful metric on its own

All typing sites generally use the same formula to calculate WPM - the length of the word doesn't matter. Most (pretty much all sites I've tried) sites use this formula: https://www.speedtypingonline.com/typing-equations. By all typed entries it's characters in this case. So it always assumes a length of 5 (avg. word length) and that's how it's calculated acorss all typing sites.

We have VERY detailed metrics. I may add a CPM toggle (toggle between both) but it seems most people prefer WPM as that's what they're used to on other sites.

> measuring three-letter combinations instead of two-letter combinations,

We measure both - see trigrams tab in the stats section.

> Also, as pointed out by another commenter, hands also threw me off. I've been observing them and it's interesting that I don't use my little finger for the left row -- it's used in case I need to press shift.

The hands are mostly there for folks learning correct touch typing practice - it's based on the most recommended general guidance for touch typing. It can be toggled off with the hand-icon button :)

16. absoluteunit1 ◴[] No.44429071{4}[source]
Oh I see what you meant!

Yes - this is a very, very good point and something I actually spent so much time analyzing how I could implement a solution to this.

I think I spent over a week at one point. I refer to this issue as an off-by one or off-by two inaccuracy. Just as in the example you provided, the user only misses one character but types the rest of the word correctly (however because they missed one, the whole word is not mistyped).

This is indeed a very hard problem and in addition to the example you provided there are many other cases where this type of off-by one (or off-by two) mistyping can occur. At this time, I've put that problem on hold. I tried a few solutions but my friends said the UI was too confusing - the general initial feedback I received is to just keep typing as natural as possible; no stopping a user when they make a mistake, no guard-rails of any kind. Just mimic real typing as much as possible.

Issue is, it's one thing to implement the solution to this but another is how to correctly display this to the user. In essence, the text is just a collection with each character having an index. Per each character we measure everything; milliseconds taken to type, errors made for that character, whether it was corrected or not, etc. But if we're handling off-by one or off-by two, displaying this to the user in a non-confusing way is really hard. UX is hard haha

17. absoluteunit1 ◴[] No.44429073[source]
Thank you very much! :)