After over a decade of building software professionally, I’ve decided to embark on something new. Not entirely new, mind you - it’s still code at the end of the day - but different enough to make me feel like a beginner again. And honestly? That’s quite refreshing.
Why Machine Learning?
The simple answer is curiosity. The longer answer involves late-night rabbit holes reading System Cards, tinkering with models, and realising there’s enormous potential here to make a genuine difference.
Software engineers aren’t going anywhere - I firmly believe that. But it’s undeniable that there’s a seismic shift in the how the industry works. With agentic code assistants utilising LLMs and natural language processing, generative AI has dramatically changed the game. All of this is powered by machine learning, and I believe it has become essential for engineers to embrace this in order to remain relevant.
As someone who’s spent years writing C# professionally and enjoys experimenting with Rust and Go in my spare time, I’ve always appreciated well-structured, deterministic code. Machine learning throws a delightful spanner into the works - suddenly we’re dealing with probabilities, training loops, and models that sometimes surprise even their creators. Dr. Frankenstein himself would be proud.
What to Expect
This series will document my journey - the successes, the head-scratching moments, and everything in between.
Some areas I’m particularly interested in exploring:
- Practical applications: How can we actually use ML to solve real problems?
- Engineering challenges: How does ML work in production systems? Scaling for training, research or inference, how do these differ and what do they entail?
- Tool exploration: From PyTorch to TensorFlow or whatever is relevent now, and maybe some Rust-based ML libraries
- Project builds: I’d like to actually build things too, because theory only goes so far. I’ve got some fun ideas that I’m working on, I’ll be weaving these into my learning to try and produce something tangible.
- Generative AI: This has really hit the spotlight in recent years and I’d like to explore how ML drives these kinds of applications.
The Plan
My current plan is to start with the fundamentals - understanding neural networks from first principles, implementing basic algorithms from scratch, and gradually working up to more complex architectures.
This may seem quite basic, but I find that building things from the ground up helps to cement understanding better than jumping straight into high-level frameworks. It also helps shake off assumptions and keeps you open to approaches you might otherwise overlook.
I’ll share my first proper experiment: implementing a simple neural network in Rust. Why Rust? Well, it’s a popular modern language which is very performant, with built-in safety guarantees and a philosophy of zero-cost abstractions.
Following on from that, I’ll take a look into proper tools too, how these are using in production and deployed at scale.