How coding led me to my goal of typing 100 words per minute

I am officially certified as a typist who can record at least 100 words per minute thanks to a Javascript-based typing game, which you can play here.

Thanks to understanding Javascript as well as learning how to code, this was possible. Sure, typing more helped. Having a specific game that helped me practice to get to this point was key, and it came in handy at just the right time.

I mentioned recently that I went into a deep think about why I was building a specific typing game tailored to me. Initially, it was about creating a practice guide so I could reach 100 words per minute. But the true reason was to see that something built through coding could help me achieve a personal task.

I had the framework of a typing game that had quite a few flaws. The original concept:

— 30 second timer
— Press start, wait a few seconds for the first word
— Type as many words as possible
— Receive a score
— Game ends

Each word, when completed, would disappear, and the next one appeared. This continued until the game ended. Secretly, there was a good thing about the game, in that I would not be alerted to when I made a mistake. I would have to pay attention to the moment a mistake was made and then make the change.

However, there were quite a few flaws. Among them:

— Fast clock, with more time taken away for every key pressed (WTF??!?!)
— Misspelled words in the database
— Game was played in all caps

Although the game was flawed in its code and structure, there was enough there to turn it into the game I envisioned. This is how I saw how the framework could be altered:

— Press start
— Buffered beginning
— Get a block of text that correlates to a word-per-minute rate
— Complete the text in 30 seconds
— Receive a link to go to the next round
— Continue playing rounds until a block of text isn’t completed

Instead of trying to hack away at as many words as possible, the only goal was to complete one block of text, which would correlate with a word-per-minute rate.

The initial round would be 80 words per minute (easy for me), then go up by five words per minute. Round 5 would be 100 words per minute, and by then, I should be warmed up to win that challenge or at least come close to it.

I’m not a Javascript pro, so to keep the game going, each round was its own individual page. Sounds painful, but the only real change with each page are the blocks of text, the links to the next round, and the text of whatever pre-round message I wanted to put in between the body tags. I imagine with more Javascript knowledge everything will be within one HTML page.

First I altered the code to correct the timer. Then, I cleaned up the unnecessary code that made no sense to be in the backend game.

With the timer fixed and the extra code eliminated, the game was virtually ready to go. All I had to do was add or change a couple of other issues:

— Create an ‘if’ statement as mentioned in my previous post. The ‘if’ was reaching a score of ‘1’ which meant I completed the block of text, thus receiving a congrats statement and a link to the next round. The ‘else’ would be a game over statement with a link to go back to Round 1. This was the biggest priority.
— Prevent the game from registering a player’s typing in all caps. This, I didn’t know how to fix. It was also low on the importance scale because the game more is about warming up for other games. Down the line, when the game is working, I can go back and attempt to figure this out.
— Make the game accept more than one non-letter when typed. Currently, only dash was accepted, because one of the words in the array was “X-ray.” This would be, at the very least, changed to period (keyCode 190).

I wasn’t able to find how the game registered all caps, but that wasn’t important. What frustrated me was finding the place to put the ‘if’ statement. I believed it was to be put within the function that triggered when the 30 seconds was up. But after several attempts of placing the statement — and even in my head I knew exactly how it should be written — I had no luck.

In the meantime, I changed the results text to show both links, which is not what I wanted. That’s scouts honor on advancing. But it was the only way I knew to advance and reset the game.

At a local coding meetup, I presented the game and the if statement I wanted to add — to make sure that I wasn’t just begging for help with no knowledge of what the code should be, I recited the exact code of the if statement twice — and they helped pinpoint where I needed to place it.

I tried the game after adding the code, and it was perfect. It followed the exact blueprint I imagined in my mind. I wanted to run out of the room and scream in celebration, and then I wanted to run home, which was about a 2-mile walk from the meetup spot, and start fixing the code on the rest of the pages.

That night, that’s all I did.

Forget about the all-caps issue — a meetup member figured out the code that was making that happen, and taking it out broke the game — or the extra punctuations. I had my framework, and I could live off of just the game that I had. It’s all I needed for a warmup for the other games I would play.

I created pages up to 120 words per minute, using quotes from Paul Graham’s essays (my favorite is about my favorite startup term, “Ramen Profitable“) as well as Jason Zook and Ramit Sethi.

I probably played the game 20 times after configuring all of the pages, going as fast as possible and then intentionally losing to make sure it all worked, but I knew it was going to work after the first try. It’s one of those things where it just felt good to see the product work the way I envisioned it.

= = =

Two days after configuring the game, I scheduled an official typing certification test at Long Beach City College. They offered free testing, and at the end, I would receive a certificate with whatever my best score was. That’s all I knew about the test ahead of time.

“But Glenn, why not just do one of those online tests and get verified there?”

Long Beach City College is accredited. It’s an actual facility. There’s going to be a human being watching me do this test. I’m not going to be using my own equipment.

Imagine yourself trying to find clients to work for and you say one of the two …

“I took an online typing test to see how fast I was, and I finished with a score of ____ words per minute. My speed should give you confidence in hiring me.”

“I can type ___ words per minute, and I have been officially verified by (insert college institution).”

What’s crazy is that I have done the former. There were people on Upwork who needed typists that could take a .pdf and get it typed out. A lot of these people needed the work done as soon as possible.

My pitch?

“Dear _____, I want to spare you the time of my background because I know you need the typing work done now. I play on TypeRacer and average between 101 and 106 words per minute. My speed, of which is consistently tested because it is a race and I don’t like to lose, gives me the confidence to get your project done within the next few hours. I am available to chat at hello@gcravens.com Please consider me for your job. Thank you.”

(quick note, this was also as I was trying to completely understand and implement the book “Nobody Wants to Read Your Shit”)

The afternoon of the test, I attended a Toastmasters meetup. Took my computer because I wasn’t sure what to expect. I didn’t get to play the game, or even use the computer.

After the meetup, I went to Long Beach City College to take the scheduled test. I entered the computer lab, and it hit me that I hadn’t played the game or done any typing at all. Luckily, I had my chromebook in hand with the game, and I played a few rounds, reaching 95 words per minute, but not 100.

The lab tech prepared the test. It was 5 minutes, with no visible timer. I had to type out one sheet of text and repeat it when done. I would not be warned if I made a mistake, but the errors would be revealed at the end of the round.

The test was four rounds doing the same sheet of text, at my own pace. The best score of the four would count. However, any score with five or more errors was disqualified. The crazy part of the test? If it ended while I was typing mid-word, that counted as an error. Realistically, I had four mistakes before potentially failing.

The results of the four tests?

99 WPM, 2 mistakes (1 at the end)
99 WPM, 2 mistakes
101 WPM, 0 mistakes
104 WPM, 7 mistakes (1 at the end)

After Round 2, I thought I reached my limit because the pace felt faster than Round 1. I looked over the text to see exactly where there was a chance to speed up a little bit. Then came Round 3 and the triple digits.

I felt content with 101 words per minute, but I wanted to really go for it in the final round. And all seven mistakes were in the final paragraph I typed out. That was a little frustrating to find out.

The lab tech handed me a certificate — a small card — that had the score. I am verified for one full year.

Who knows how the exam goes if I didn’t have the game in my Chromebook and played a few rounds. At least for me, I feel the difference when I go into games warmed up vs. cold. It’s not just the speed, but the accuracy and the feel for how I’m typing.

= = =

Every successful entrepreneur I follow mentions the same thing about ideas that lead into successful companies. The difference between companies that succeed and all the rest can be broken down into a lot of reasons. But there’s one that stands out — the successful companies solved a problem the founder had, found others who had a similar issue, and then the founder built on the core of solving that problem.

Over the past 10 years and even to this day, I’ve heard tons of different business ideas pitched to me and notable venture capitalists. A lot of these business ideas do not solve problems the founders have, they’re instead pie-in-the-sky ideas with the purpose of making money.

My ‘problem?’ I wanted to type faster. So I created something that would help me do just that, and it worked.

I’m already thinking of ways I can make it better. Obviously, the default all-caps text has to go. But I can easily expand to more rounds. I’d also like to add some math to put in a word-per-minute result.

I’m very happy of the progress I’ve made so far. There’s a lot more to do, but for now, I have the game that has helped me achieve a goal.