10,000 hours
Even projects that seem to go nowhere contribute to progress through exploration. It's about messing around and seeing what happens.
This blog reflects my past few months. I'm not a developer, but after everything I've explored so far, I can confidently say that the gap between designers and developers is closing fast. It's only a matter of time now.
Now, the concept of 10,000 hours, which Andrej Karpathy references in his talk, suggests that even projects that seem to go nowhere contribute to progress through exploration. Below, I've embedded an audio clip from his talk where he discusses the snowball effect related to the idea of investing 10,000 hours.
Opening
I was really afraid to use a terminal. Maybe it was due to the fear of bricking my PC. I didn’t know much about it, and I doubted everything when a terminal opened, executed something, and closed itself in just a second while installing software. In my mind, it's like malware trying to install itself. But all that changed when one day I decided to go all into Ubuntu.
Trying out Ubuntu was the best decision I made in my current journey. I knew nothing about it. All I had were access to LLMs and my ability to describe my requirements or the problems I was facing.
Initial development
While setting up Ubuntu again after bricking it for the nth time, I ran into a problem where the internal storage wouldn’t be detected. I got a solution from an LLM. I needed to run the script below after booting or set it as a startup app to streamline the process.
#!/bin/bash
sudo mount -t ntfs /dev/sdb1 /media/user/InternalHDD
This was my stepping stone into the world of terminal commands!
I think that’s when I started to see the real potential of interacting with LLMs to troubleshoot problems. So, I began to explore and share my thoughts on Bluesky.
Since this was my first time, I had no clue whether some paths might lead to a dead end. My choice was simple - mess around and see what happens. This approach led to many things, including finding what I truly care about and how to run LLMs locally.
Every decision I took led to one another, sometimes it ended up in frustration, and other times it got exciting and I forgot even to sleep. And on some rare occasions, some days felt like what am I doing with all these?!
Transition
My decision to run LLMs locally opened the door to scripts, especially batch scripts (.bat) since my primary operating system is still Windows. I plan to fully switch to Linux with my next laptop purchase, so the money that would normally go to Microsoft can be spent on a better GPU.
Anyway, one day I started creating scripts entirely with the help of LLMs. LLMs make creating them easy, even for non-coders like me. It was Anthropic’s Claude Artifacts that sparked the idea for me to get started.
Some workflows don't need to be complicated. Scripts automate repetitive tasks, saving time and effort. My primary goal was to meet my personal needs. Then I began to think, even though I’ve been in the tech field for a long time, I only recently started using scripts. I decided to make the most of its potential. So, I thought why not share everything as open source and provide a README for each script, making it easy for beginners to use without any hassle?
Early middlegame
I started to share these resources as open with an MIT license. My intention is straightforward. I just want to make the process simpler. I've also included in each README the platform I used to create that resource.
Scripts for basic chess analysis, including an extension and web front end for combined game statistics.
Several image handling scripts.
Telegram bots, including one for fetching RSS feeds and an extension + frontend for working with Telegram's Bot API.
Productivity tools:
Automated file organizer.
Duplicate file/folder finder.
Encrypt/decrypt tool.
File/folder naming script.
Hash value checker.
Text case converter: A simple idea I always wanted to build but never knew where to start. Through experimenting with LLMs, I turned it into a batch script, Python script, Telegram bot, Chrome extension, and a frontend tool.
Numerous other small and simple scripts.
Open source philosophy is something we need right now. I’ve always been a fan of open-source projects, but we need more of them today more than ever - to reduce the costs of running software, obviously, and because the collective trust of developer communities brings more security, innovation, and collaboration.
Surprisingly, right now, in the AI field, Zuckerberg is the one leading that journey with his Llama models. I never thought in my wildest imagination that one day I’d endorse his approach.
Middle game
During my exploration with batch scripts, LLMs started suggesting Python and JavaScript. I’ve tried many times to learn the basics of frontend development, but for some reason, the gap always felt too big. Maybe it's because of my experience with no-code tools like Framer. Still, as my requirements grew more complex, I eventually decided to try everything.
I am a non-coder who uses LLMs (Claude, Mistral, Meta AI, ChatGPT, and Gemini) to generate resources tailored to my needs. I decided to make full use of all the LLMs available for free right now. The more I use them, the better I get at spotting when a chatbot starts hallucinating, which helps me steer the conversation to get more useful results. Sometimes, in the middle of troubleshooting something, it derails everything.
Crisis
LLMs derailing a conversation is one of the biggest challenges. At some point, either we hit the context limit and it starts drifting from the main topic, or it decides to end the conversation altogether. This can be frustrating, especially when you're excited and fully invested in building something. Some projects involve a lot of lines of code, which makes it harder to stay within the context limits, restricting both input and output.
With the launch of ChatGPT about two years ago, a lot changed. Many other LLMs entered the market, and the competition is tight now. The AI experience is completely different today. I’ve figured out which LLM to use based on my unique needs, and if one derails, I know which one to switch to next.
Each platform has its pros and cons. One of the most annoying issues is that everything happens in a single thread. I wish I could create branches within the chat. I discussed this more in a blog back in March.
In most cases, it’s not a one-time chat to generate a working solution. You need to spend time troubleshooting. In rare cases, if you're lucky, you might get the desired output after just a few back-and-forth exchanges. But that’s not typical. We need patience, and when frustration builds after multiple attempts, it’s best that we have to give ourselves a break and maybe approach it with a fresh mind.
And with coding (HTML/CSS), I feel like there’s a lot to fill. Maybe I feel this way because of my experience with Framer. The editor should be a tool that writes code visually. For someone new like me, it’s hard to know all the declarations, their use cases, and limitations. But with visual tools, you can just toggle features on and off to see how things work. Yes, tools like Webflow exist, but I’m not interested in that because platforms like these lock you into their ecosystem. I’m looking for something that can happen directly in VS Code, without vendor lock-in. And yes, there are tools like Cursor, that solve the problem of switching tabs. But I’m still waiting for that visual development inside the code editor.
Fun fact: Reading development documentation helps 80% of the time. Yet, many of us rush in too quickly, which has become a fun fact and meme in the developer community.
Maneuvering
During these explorations, one day I decided to try out public APIs, which sparked a chain of ideas. I ended up building a few projects. For example, I chose to work with the Space category and used NASA's API to experiment with different possibilities. Eventually, that project became an automated Telegram channel for daily NASA images. A bot deployed in Google App Script runs on a time-based trigger. It will send two images per day. You see, bots work like personal assistants, fetching data and performing tasks on schedule or just ping them, and they’re ready to go.
The interesting thing I discovered was that I always assumed building and maintaining a Telegram bot was a task for high-end developers. Maybe that assumption was wrong, or the gap has now been filled. I realized I could simply run a script on my PC and let the bot do its job. I wanted to deploy these projects on a VPS but wasn’t ready to spend money until I figured out exactly what I needed. That's when I found Google App Script, which has some limitations and quotas but worked fine for me.
After creating bots, I shifted focus to building Chrome extensions. Browser extensions add useful features directly to your browser, making tasks easier without needing to switch between tools or tabs. My first one was a text case converter, similar to what I had done with scripts and the bot, and it’s now available in various modes.
With my renewed interest in chess, I started building tools for that community as well. From there, I moved on to creating web tools that work offline and static ones that run on the client side with the help of JavaScript.
That’s when I realized I was several years late to the party! Why hadn’t anything inspired me earlier? Or maybe I just wasn’t looking.
Anyway, I don’t have any specific endgame right now. The only limitation and challenge there is the context length. I think in the coming months issues like this will be resolved.
I actually enjoy using the terminal. Seeing results there feels more rewarding. I’ve realized that if I can create something that works in the terminal, it’s not that hard to build an interface for it.
I also understand why some developers don’t prioritize design in the initial development stage. But I believe we should meet halfway—a balance between accessible, usable design and functionality. Making it look fancy should come second in my opinion. A good example of this is Figma’s redesign, where they had to revert a part of it to the old design while still incorporating new changes after users pushed back.
On a side note, check out these quotes from prominent figures in the AI field. There are many predictions, assumptions, popular and unpopular opinions about the progress of this field. But I’m going to stay optimistic about it.
Future of programming
The hottest new programming language is English
Andrej Karpathy | Director of AI @ Tesla, founding team @ OpenAI
1:44 AM · Jan 25, 2023
It is our job to create computing technology such that nobody has to program, and that the programming language is human. Everybody in the world is now a programmer. This is the miracle. This is the miracle of artificial intelligence. For the very first time, we have closed the gap.
Jensen Huang | NVIDIA Founder, President and CEO
04:48 PM · Feb 12, 2024
You know, when I was getting started with my company, you know, I needed to know all this stuff about coding in order to be able to build the idea that I had. And in the future, you may not even need to. You might just be able to, like, you know, express what you're trying to build and an AI system will be able to help you with the code and all of that.
Mark Zuckerberg | The founder, Chairman and CEO of Meta
09:30 PM · Jul 23, 2024
Everyone should be getting ready for the cost of intelligence to go to $0.00. It’s coming sooner than you would expect.
Logan Kilpatrick | Lead product for Google AI Studio
12:29 AM · Jul 7, 2024