
Hi, I’m Nicholas Kariuki — Full-Stack Developer & ML Engineer
I engineer reliable web apps and ML solutions using Python, FastAPI, Vue/Nuxt, Docker, PostgreSQL, and PyTorch. Based in Murang’a, Kenya, I design systems from concept to deployment.
About Me
Full-stack developer and aspiring ML/AI engineer with a strong background in building web applications and intelligent systems.
I design and deploy scalable solutions with FastAPI, Nuxt 4, Tailwind CSS, Docker, PostgreSQL, PyTorch, and modern CI/CD workflows.
Work Experience
2021 - 2022
Full-Stack DeveloperFreelance Projects
Nicholas' engineering mindset transformed our product pipeline. He balances robust architecture with clean implementation, which improved deployment reliability and user satisfaction.
BM
Brian Macharia
CTO of Tera-In
Working with Nicholas was the best decision we made for our startup. He didn't just deliver software—he proposed architecture improvements, optimized our pipeline, and made collaboration seamless.
BM
Brian Macharia
Backend Engineer at MuTech Community
Nicholas stands out in his ability to translate complex ML concepts into production-ready features. His work in sustainability analytics made data actionable and accessible to users.
SK
Steve Kariuki
Lead Data Scientist at GreenTech Solutions
Frequently Asked Questions
Insights into how I think, work, and approach creative & technical tasks.
I start by breaking the task down into small, actionable steps. First, I clarify the goal (what “done” looks like). Then I research possible solutions, pick the simplest viable approach, and build a quick prototype or outline. I iterate based on feedback or self-review, and I always document my learnings along the way. For me, process is personal — I adapt it to fit the task, not the other way around.
I use a mix of digital and analog systems: a task board (like Trello or Notion) for tracking progress, a personal wiki for notes and decisions, and time-blocking for deep work. I also practice weekly reflection to see what worked and what didn’t. My goal is to reduce context switching and keep my mental energy focused.
I treat hard problems as learning opportunities. I start by defining what I don’t know, then break the problem into sub-questions. I use documentation, forums, and small experiments to test hypotheses. If I’m stuck, I simplify the problem or take a deliberate break. I’ve learned that patience and curiosity almost always unlock the next step.