I don't have a CS degree. I never took a data structures class. I can't explain Big O notation beyond "faster is better." Three weeks ago, I didn't know what a borrow checker was.
Last week, my first Rust project got listed in This Week in Rust #650.
This is the story of how that happened — not as a tutorial, but as proof that you don't need to be a "real programmer" to ship something useful.
I take a lot of screenshots. And I kept losing them. On Linux, there's no clean "screenshot → file" pipeline like macOS or Windows. You screenshot something, it goes to the clipboard, you copy some text, and the screenshot is gone forever.
I tried wrapping xclip in shell aliases. I tried cron jobs that dumped the clipboard every 30 seconds. Nothing stuck — they were too fragile and too platform-specific.
I wanted a single tool: one binary, every platform, zero config. Just silently save every clipboard image.
I had zero Rust experience. What I had was a problem and the stubbornness to solve it properly.
I looked at what I needed:
Rust checked every box. The arboard crate handles clipboard access across Windows, Linux, and macOS. cargo build --release with LTO gives you a ~1.5MB static binary. You download it, you run it. Done.
So I opened The Rust Book on a Saturday morning and started reading.
imgclip — a tiny CLI (~1,100 lines of Rust) that moves images between your clipboard and files.

Four modes:
--watch: auto-save every new clipboard image in the background--interactive: single-keypress save/discard for each image--copy: send any image file back to clipboardThe one I use every day is imgclip --watch --install. It auto-starts on login and silently saves every screenshot to ~/Pictures/imgclip/. I don't think about screenshots anymore.
6 prebuilt binaries: x86_64 + aarch64 for Windows, Linux, and macOS. MIT-licensed.
Let's be honest — the first week was brutal.
The borrow checker rejected everything I wrote. I fought with lifetimes for two days before realizing I didn't actually need them for this project. I wrote clone() more times than I'd like to admit. My first attempt at the watch loop had a race condition that ate 100% CPU.
But here's the thing nobody tells you about Rust: the compiler teaches you. Every error message explained what I did wrong and often suggested the fix. It's like having a very strict but very patient teacher.
By week two, things clicked. The type system started feeling like a safety net instead of a cage. I could reason about my code because the compiler wouldn't let me write the subtle bugs I'd been writing in other languages.
Ship early. My first version was a 200-line main.rs that could only save PNGs to the current directory. It was ugly. It worked. I used it for three days before adding features.
Scope ruthlessly. imgclip does one thing: move images between clipboard and files. No GUI. No cloud sync. No image editing. Every feature request I've gotten, I've asked: "Does this help save a clipboard image?" Most don't make the cut.
The community is incredible. I submitted my project to This Week in Rust thinking nobody would notice. Not only did they include it, but I got genuine, helpful feedback from people who actually tried the tool. The Rust community genuinely wants newcomers to succeed.
"Real programmer" is a myth. I'm not a systems programmer. I don't have a CS background. I had a problem, I found the right tool, I read the docs, and I shipped. That's it. There's no secret.
If you're on the fence about learning Rust — or about building your first tool — just start. Read the book, write bad code, let the compiler teach you, and ship something. The bar for "useful" is lower than you think.