TypingFast: My Journey Into Generative AI Through Open-Source Exploration
Why I Left Traditional GenAI Courses to create a project and what's next?
This is my first post on Substack, so here’s a quick introduction: I’m a software engineer with nearly eight years of experience, specializing in full-stack development.
Why I Left Traditional GenAI Courses
It gets boring quickly for me when I follow courses designed in the traditional way. Watch the videos, try to grasp the concept, and maybe (sometimes) work on a project. But more often than not, the projects are too basic or uninteresting, and I lose my excitement early on. (Maybe that’s why I’ve given up on writing so many times, too!)
However, in the past, my most successful learning experiences have come from starting with an idea and working on it while learning along the way. To be honest, I sometimes feel like I might be borderline ADHD. Passion—and sometimes money—are the only things that can keep me engaged. Otherwise, it’s a no-go.
The Vision Behind Type Fast
Now, let’s talk about this project. I’ve known for a while that I’m not a particularly fast typist (I top out at 70-75 WPM), and I hate making mistakes while typing. For some reason, I find learning to touch-type a waste of time, so I never stuck with it. As a result, I’ve been stuck in a mid-zone until now.
This frustration inspired the need for an app to help me type faster and make fewer mistakes as I type. Until now, I never took it seriously. But with AI-powered apps transforming the software world, I realized that today’s AI capabilities are good enough for me to build an app personalized to my (or any user’s) needs.
I also want this project to be open-source. I believe that an app like this should be accessible, with a transparent codebase that others can contribute to. Since I use multiple operating systems, I’m aiming to make it cross-platform, supporting macOS, Windows, and Linux (Debian-based distros). Privacy is another important factor, so the app will be local-first (or local-only). I’m not building this to make money; it’s purely an educational tool and something I need for myself.
Engineering Challenges in Type Fast and the POC Phase
Like any learning or exploration project, I’ve divided this one into two major phases: a Proof of Concept (POC) phase and a production-ready phase.
POC Phase: Engineering Challenges
In the POC phase, my goal is to explore the unknowns by building small functionalities without focusing too much on code quality. I’ve broken this phase into two parts: engineering and generative AI.
On the engineering side, this is my first time working on desktop applications, so I’m exploring that as well. I’m using Electron.js but without diving too deep into desktop technologies. This phase involves several tasks:
Setting up the Electron app (I generally prefer boilerplates and CLI tools for this).
Running the app as a background service.
Detecting keyboard events across the system when the app is active.
Showing predictive text ahead of the cursor as the user types.
Tackling the most challenging aspect: maintaining context—determining where the user is typing (the current app) and tracking previously typed data in the active input field.
Ensuring the app works across all platforms.
Enabling auto-start on system boot.
Facilitating communication between my Electron app and the Python service (I’m leaning toward WebSockets for now).
POC Phase: GenAI Challenges
On the generative AI side, I’m exploring:
Which AI models are most suitable for predictive text and autocorrection.
How to store user data in a vector database for personalized predictions.
Implementing two main features:
Correcting previously typed text with personalized accuracy (like Gboard).
Displaying predictive text ahead of the cursor.
Forgive my usage of AI terms as I am still a novice and in exploration phase :)
Additionally, I’m leveraging AI coding tools to offload some of the less interesting coding tasks. Tools like Codeium, Vo, Cursor, and Bolt are on my list to explore.
Reflections
I’m rediscovering the joy of learning and development, feeling like a newbie on a mission—but with less stress and more ambition to grow in this field.
I’ve realized that while slow progress is fine during exploration, stopping midway (even when I’m interested) is something I deeply regret when looking back. Hopefully, that won’t be the case with this project. I’ve always had a passion for building and learning, but traditional methods can feel intimidating or dull. Aligning the work with my interests has been the best way to stay motivated.
Invitation to Future Contributors
Once the POC phase is complete, I’ll release the project on GitHub and plan to actively maintain it for the foreseeable future. If anyone is interested, feel free to reach out to me here or on GitHub. Let’s collaborate and make something meaningful together!