Featured Work
What each problem was, what I decided, and how it turned out

MCQ Karamu
MCQ practice app on Google Play for Sri Lankan students sitting A/L and O/L exams. Built with Akila Kavinda.
Past paper practice here is a stack of PDFs, and students sit the exam in Sinhala, Tamil, or English depending on where they went to school. Language is the first thing an exam app drops, and most of these students have no card to pay with.

Ideamart & MSpace Subscription Service
Open source Express service that puts Dialog Ideamart and Mobitel MSpace subscription billing behind one API. Pulled out of MCQ Karamu and released on its own.
Carrier billing is the only realistic way to charge a Sri Lankan student with no bank card, and each telco has its own OTP flow and documentation that is hard to follow. I wanted one set of endpoints the app could call without knowing the network, and a way to stop one subscription being passed around a class.

XR Room
This site as a WebXR space. Every section stands as a panel in a ring around you, in a VR headset, through a phone camera in AR, or turned by a phone's gyroscope.
My research asks how much AR a mobile browser can do when the user installs nothing, and until now this site only said so. The room had to carry the whole site into AR with no app, cost the home page nothing, and keep its text readable through a phone camera.
About
I finished two bachelor's degrees, software engineering at SLIIT and information systems at UCSC, and I'm working through a master's at UCSC now while engineering full time. My production work is full-stack web and mobile software, in whatever domain the client is in. My research is VR and AR in the browser, which is a stranger problem than it sounds, because a browser gives you almost none of what a native XR app takes for granted. What connects the two is that I'd rather work where the constraints are real and the answer isn't obvious yet.
Production delivery
Features shipped end to end on platforms clients use daily
Not tied to a domain
Lab data, live sports gaming, team messaging. The engineering carries over
Applied research
VR and AR that run in a browser, with nothing for the user to install
Engineering Domains
What I can do, and the tools I do it with.
Architecture & System Design
Splitting a system into services and contracts that survive the next requirement change.
In practice: I designed a reservation platform as microservices behind an ESB, and a multi-role system where a passenger mobile app and an agent web portal share one API. In my final-year project I split the work between an IoT device, an inference service, and a mobile app.
Core Engineering
Typed, reviewable code, and fundamentals that move with me between languages.
In practice: I deliver features end to end on production client platforms, review peers' code, and mentor junior engineers. Four language ecosystems so far, and the switch costs less each time.
Data & Infrastructure
Modeling state, then keeping the client and the server in agreement about it.
In practice: Implemented NextAuth authentication flows and built on a TanStack Query server-state layer for a LIMS used by Australian testing laboratories. Across projects I have modeled both relational and document schemas, choosing between them per access pattern.
Immersive & Emerging Interfaces
Getting VR and AR to run in the one place every user already has: the browser.
In practice: I research browser-based VR and AR, work that started as a research internship under Dr. Damitha Sandaruwan at UCSC. I also developed UI for META11's AI-driven virtual cricket platform.
Experience & Education
My academic and professional journey so far
Behaviol (Pvt) Ltd | Colombo, Sri Lanka
Senior Software EngineerOwn delivery of features end to end on client products. The current one is a laboratory information management system for Australian testing laboratories. Review peers' code and mentor the junior engineers on the team.
Software EngineerBuilt JSON-driven forms for a laboratory information management system, so a new test type reaches lab analysts without a code release. Implemented the NextAuth authentication flows and the TanStack Query server-state layer.
Associate Software EngineerBuilt UI components for META11, an AI-driven virtual cricket platform.
University of Colombo School of Computing (UCSC) | Colombo, Sri Lanka
Research InternResearched browser-based augmented reality under Dr. Damitha Sandaruwan. The question was how much AR a mobile browser can do when the user installs nothing.
CreativeHub Global | Colombo, Sri Lanka
Software Engineer InternBuilt a React Native messaging app for business teams. Used Redux-Saga for state and Firebase for push notifications on both iOS and Android.
Education
- Master of Computer Science
University of Colombo School of Computing (UCSC)
Part time, alongside full-time engineering work.
- BSc (Hons) in Information Technology, specializing in Software Engineering
Sri Lanka Institute of Information Technology (SLIIT)
- BSc in Information Systems
University of Colombo School of Computing (UCSC)
Latest from My Blog
Notes on how the tools I use every day work underneath
Should you proxy through Server Actions or call APIs directly?
You've got a Next.js app, and it needs to talk to a backend that isn't Next.js, maybe a Python service, a Rails app, or plain Express. The first archi...
How JavaScript's event loop really works
Click a button on a page while a network request is still loading in the background, and nothing freezes. The click registers right away, an animation...
Beyond the breakpoint: how media queries actually work
You're on a site, the layout looks fine, and then you drag the browser corner to make the window smaller. The sidebar disappears, the nav collapses in...
How useEffect works behind the scenes in React
You've probably called useEffect hundreds of times and wrestled with its dependency array at least once. But what does React actually do when it hits ...
