Featured Work
What each problem was, what I decided, and how it turned out
About
I'd rather work where the constraints are real and the answer isn't obvious yet.
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.
- 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
From WebGL's state machine to WebGPU's explicit pipelines
Open a WebGL codebase that's a few years old and you'll find something odd. Before almost every draw call, the code re-binds a texture, re-sets a blen...
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...



