Sharpening Rusty things
It’s been a long time since I dove into a brand new language and built something new. I think the last time was when I joined my current employer and was suddenly thrown into working with Go. I don’t mind Go, but it does a few things that confuse me to this day.
Recently, I switched my laptop from Windows to Linux. It’s something I’ve been toying with for a long time, but I’ve struggled to make the move, mostly due to still wanting to play games from time to time, without jumping through hoops. Yes, it’s all gotten much better on Linux recently, but it’s still not as smooth an experience. But anyway, so I switched. All was going great. I installed all the things, including .Net, which was nice. And then I went to install a Git client. GitHub desktop works, just about, but was a bit of a hassle to actually get installed. Git Kraken is probably my favourite Git client, but I use private repos, and that means I need to pay for a subscription.
Now, don’t get me wrong. It’s absolutely worth it – if you’re developing day in, day out. But while I do this for a living, I’d only be using Git Kraken for personal projects, which happen infrequently and nowhere near as often enough to make yet another subscription value for money.
So, stupidly, I thought “how hard could a Git client actually be to build?”
Answer, really fucking hard. Especially when you’re an idiot and think “hey, why don’t I also use a language I don’t know?”
Did I mention the goal was also cross-platform compatibility, too? No. Well, yeah. I had a go.
Rusty everything.
I didn’t know what I wanted to write it in. So, I asked Claude. It suggested three options; C++ (potentially…), Javascript / NodeJS as an Electron app (abso-fucking-lutely not – nobody can afford to run Electron apps these days; have you seen the price of RAM?), or Rust. Huh. I’d wanted to dip my toes into that for a while. So, it was decided. I was going to build a desktop Git client. In Rust.
Have I ever built a Git client before? Obviously not. Have I ever used Rust before? Nope. And was I attempting all of this on an operating system I was only vaguely familiar with? 100%. Game one.
Rise of the Rusty Machines
Not knowing where to even start, I did enlist the assistance of Claude for this project. I handed it a list of requirements and got it to plan the project out for me, and then scaffold the app framework. But the rest of it (I’d say about 65%, at least) was me. I’d ask questions, of course. I’d even let it do some autocomplete work for me. And when things just stopped working, of course I called in the cavalry. But, I’m not yet ready to let AI do all the work. Not quite yet. But, I’ll tell you something – it’s absolutely made a huge difference. Do I now know Rust – absolutely not. But, I now feel much more comfortable working within a Rust codebase, at least. So much, that I definitely intend on continuing learning it. It’s actually quite nice to work with.
So, did it work? Where is it?
Oh, it absolutely works. I now have my own, fairly fully-featured desktop Git client. It does all the things I need it to do and, this is my favourite part, it’s soooooo fast. Much faster than Github desktop. Faster, I’d say, than even Git Kraken (although, not as polished as either of those). And, well, here it is:

It supports all your usual Git-client things, but I’m almost certain there are features that “power users” use that I have missed here. But for my purposes, it does everything I need.
I’ve been using it during it’s own development, which is a bit weird, but it’s meant I’ve actually been working through bugs and usability features AS I find them, which has been a real eye-opener for me, as it’s shortened that feedback loop to, well, about 30 seconds.
What’s next? Can I try it?
Well. No, you can’t try it. Not yet, anyway.
I’m going to keep testing it, improving it, and making sure it’s all working properly for a couple of months, and I’m going to get a few people to give it a go for me first, too, just to get some real-world feedback. But, once I’m happy it’s usable and stable enough, I’ll most likely release it. Possibly as an open source project – but we’ll see. The code isn’t the most elegant, so I’m not 100% that I want proper Rust devs scrutinising it!!
But, if you are interested in giving it a go when the time comes, drop me a note below. When I do finally release it, I’ll be writing up another blog post, so keep an eye out for that (both of you who read this).
0 Comments