Skilled Frontend Dev
Building AmazingApps for the Web
Frontend Engineer & Team Lead
With 5+ years of experience building high quality applications for the web and mobile, and my strong communication skills, I bring both technical expertise and leadership to every project.
I specialize in frontend development with React/Next.js and TypeScript, creating user-friendly, responsive, high-performance and scalable web applications. I also build backend solutions using NestJS and Express for full-stack projects.
My core expertise lies in the React ecosystem. I've spent years mastering Next.js to deliver lightning-fast applications using Server Side Rendering (SSR) and Static Site Generation (SSG). I obsess over web vitals, bundle sizes, and rendering patterns to ensure users have the smoothest possible experience.
Recently, I have expanded my scope to the backend to become a truly product-focused engineer. I build robust APIs using NestJS and Express, allowing me to own features from the database schema (using Prisma or TypeORM) all the way to the UI component. This full-stack perspective helps me write better frontend code that anticipates backend constraints.
Performance Optimization
Achieved 30% load time improvements through code optimization
System Architecture
Designed scalable monorepos and microservices handling high-volume traffic.
My Tech Stack
Building type-safe, end-to-end and scalable applications using modern technologies and best practices
Frontend Development
Backend Development
Mobile Development
Cloud & DevOps
Tools & Testing
State Management & APIs
Frontend Development
Backend Development
Mobile Development
Cloud & DevOps
Tools & Testing
State Management & APIs
Technologies I Work With Daily
Constantly learning and adapting to new tools
Projects
I've Worked on
From startups to enterprise solutions, here are some of my recent works
Modern E-Commerce Platform
A complete e-commerce solution with real-time inventory, payment processing, and admin dashboard.
Mobile Fitness App
Cross-platform fitness tracking app with workout plans, nutrition tracking, and social features.
AI-Powered Analytics Dashboard
Real-time analytics platform with AI-driven insights and predictive analytics for business intelligence.
SaaS Project Management Tool
Collaborative project management platform with team communication, task tracking, and time management.
Real Estate Marketplace
Property listing platform with virtual tours, advanced search filters, and integrated booking system.
Social Media Platform
Modern social networking app with real-time messaging, content sharing, and community features.
Latest from my Blog
Sharing knowledge, insights, and experiences from the world of web development
Binary search is O(log n): but that's not the whole story
Everyone learns binary search as the textbook example of O(log n) efficiency. Halve the search space, halve it again, find your answer in logarithmic time. Clean. Elegant. Fast. That framing isn't wrong. It's just incomplete and the parts it omits are exactly what bite you in production. The Big-O notation tells you how the algorithm scales. It says nothing about when it's the wrong tool entirely, or why a "slower" algorithm sometimes wins in practice. Let me walk through what's actually happening under the hood, where the standard mental model breaks down, and how to make the right call in real code.
Read Full ArticleReact Server Components: what they actually are (and why most explanations get it wrong)
Most RSC articles teach you a mental model that was accurate for Next.js 14. Ship that code in 2025 against Next.js 15 or 16, and you'll hit runtime errors on day one. The framework moved; the tutorials didn't. Let's fix that.

Segment trees: answer any range query in O(log n) and update just as fast
The last two articles in this series dealt with flat, mostly static data. Binary search requires your array to be sorted and unchanged. Quickselect mutates the array and works best as a one-shot operation. Both fall apart the moment your data is dynamic, elements changing, queries arriving continuously, and correctness required after every mutation. This is the problem segment trees solve. And they solve it elegantly: O(log n) per query, O(log n) per update, and the same structure handles a surprisingly wide family of problems: range sums, range minimums, range maximums, and beyond.

Quickselect: find the k-th smallest element in O(n), no sorting required
The previous article on binary search ended with a claim that probably raised an eyebrow: you can find the k-th smallest element in an unsorted array in O(n) average time, without sorting. If sorting is O(n log n), how does selection get away with O(n)? The answer is quickselect, and understanding it will permanently change how you think about the divide-and-conquer family.
Subscribe to My Newsletter
Get the latest articles, tutorials, and insights delivered straight to your inbox. No spam, unsubscribe anytime.
Let's Work Together
Have a project in mind or just want to chat? I'd love to hear from you.
Location
Available for remote work
Kampala, UG
Send Me a Message
Currently Available for New Projects
I'm currently accepting new freelance projects and full-time opportunities. Let's build something amazing together!
