davejs

davejs

Hi everyone,

I’ve been building BetterTyping (https://bettertyping.org) on and off since 2021. It’s a free typing game: practice alone, race other people, do a daily challenge where everyone types the same text, or run a timed test. No account needed, English and German.

The part I enjoyed most is the bots. On a small site there’s often nobody to race, so if you’re alone in a lobby for 15 seconds, a bot joins. It’s a small GenServer that subscribes to the lobby like a player’s LiveView would, types one character at a time at roughly your average speed of the last 100 races, and sends its progress through the same path as a human player.

Getting there took three bugs: two bots joining the same lobby (a check-then-act race between timers), bots coming back after the race (the default restart: :permanent restarts a GenServer even after a normal exit), and a deadlock once the lobby process started the bot itself while the bot called the lobby from init/1. Moving every lobby into its own process made the first one impossible, restart: :temporary fixed the second and handle_continue/2 the third.

Most of the code was written with AI coding agents. I’d like feedback on the game and on the design. And if you have ideas on how to make the bots feel more human, I’m all ears.

The full post, with what else changed this year:

Showing Posts 18 to 9

AstonJ

AstonJ

Awesome, started one of those threads here :023:

linusdm

linusdm

Ha! Nice. I’ll see if I can get him to try it. Thx for adding it.

davejs

davejs OP

Your comment got me thinking, and I couldn’t resist: BetterTyping now speaks Dutch.

  • The whole site is translated.
  • The lessons, timed tests and weak key practice use Dutch words.
  • The typing tests, the daily challenge and races use Dutch proverbs (“Na regen komt zonneschijn.” was today’s daily challenge).
  • Visitors from Belgium get AZERTY lessons with the right finger guides; the layout can be switched in the profile.

The translation hasn’t been checked by a native speaker yet, so if you and your son give it a try, I’d love to hear what sounds off. And of course whether it actually helps him learn.

linusdm

linusdm

I’m in Belgium indeed. I speak Dutch. Multi-language support is a big thing here (Dutch, French and German are the three official languages in our small country, and English spoken by most too).
I think it intertwines with the locale support you already have (I saw you have German already). But if kids are not in your target group, I think English support suits a lot of people already.

davejs

davejs OP

yeah i can see that for kids especially their native tongue would make a lot of sense. What is your mother tongue, Belgium?

linusdm

linusdm

My kid also wants to learn touch typing, but for his age (13) and not being native English, exercises in his mother tongue would be more appealing. Not a feature request, but just thinking out loud :slight_smile:

davejs

davejs OP

That’s great to hear! Challenging each other works well for that: after a race, “Challenge a friend” gives the other person the exact same text to beat. Let me know how the kids like it, I’m curious what kids think of it

davejs

davejs OP

Thanks, that really means a lot! 111 WPM with crab technique is seriously impressive :wink:

davejs

davejs OP

Thanks again, that’s a really helpful perspective. I hadn’t thought about it from the admins’ side. It’s live now: “Share image” opens a small dialog like Speedtest’s, with the image link first, then the link to the challenge, and BBCode that links the image back to the challenge. Copying the image itself is still there at the bottom for chats.

Your comment also made me look at the WPM badge in the profile: it’s now available as PNG too, with BBCode for forum signatures, since a lot of forums don’t allow SVG.

nathanl

nathanl

Great site! I’m going to have my kids use it to practice typing. I love the idea of getting them to challenge each other.

Where Next? Top

Trending in Blog Posts Top

New
fuelen
I finally found time to write down my journey away from ExMachina, including the workaround I tried first and the API experiments that fo...
New
T0ha666
An automated trigger fired every two minutes for 8 hours. 243 agent runs. 31M tokens. $63 wasted. The problem: nobody noticed until morni...
New
lawik
The words are insufficient to describe what transpired. What we tried to do met what the people wanted it to be. It became beautiful. Th...
New
davejs
Hi everyone, I’ve been building BetterTyping (https://bettertyping.org) on and off since 2021. It’s a free typing game: practice alone, ...
New
funboy
Turns out a 1ms network hiccup is enough to silently lose broadcasts for a node and that node is just quietly wrong forever Wrote it up ...
New
AstonJ
If you’ve found an interesting or cool Elixir related blog post and think it’s worth sharing please add it to this thread :icon_biggrin: ...
New

Other Trending Topics Top

dominicletz
Hey there, I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first. ...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
OndrejValenta
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly) AI dream has many faces, but general...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews