For over a decade, my identity was rooted in being a hands-on software architect and developer. I spent most of my time designing systems, shipping features, and keeping production services stable. Machine learning was something I used occasionally through APIs or prebuilt models—but I treated it as a black box.
Starting my MSc in Artificial Intelligence changed that.
I wanted to go beyond “calling the model” and instead understand how models learn, why they sometimes fail, and what it really means to optimise them. My early MSc modules introduced me to the foundations of machine learning: supervised learning, optimisation, generalisation, and probabilistic reasoning.
What surprised me most was how many ML ideas felt familiar from my engineering background:
- Hyperparameters reminded me of system configuration tuning.
- Overfitting looked like over-engineering a solution.
- Regularisation felt similar to constraints we impose in system design.
This blog series is my way of documenting that transition—from treating ML as a tool, to understanding it as a field of study. I’ll cover both the mathematical side and the implementation side, reflecting my dual background as a developer and an emerging researcher.