Surface Extension: Omniverse
Surface Team Lead. 2025 to present. AI & ML, Digital Twin, Web & Native Apps. ongoing.
Lesson: Seeing is believing; but GPU are expensive; and WebRTC is a pain
Omniverse for high-fidelity 3D remote-rendering and simulation. This require deep integration with both 3rd party services as well as internal AI orchestration engine.
While the technical challenge is not trivial, the biggest hurdle is the cost of GPU cloud rendering and licensing. However, even with that in mind, to be able to see physically-accurate rendering of your asset with thousands of light source really give a different sense of 'being there', compared to typical real-time 3D engine.
Outcome: Remote rendering with Kognitwin data in Omniverse
Technologies: AI Orchestration, NVIDIA Omniverse, WebRTC, Remote Rendering.
Built on lessons from: Kognitwin Surface & Design System, Portal Application for Kognitwin, WebRTC Video Call in XR, Agentic AI for Reasoning Engine.
Non-Chat / Standalone AI Agents
Surface Team Lead. 2025 to present. AI & ML, Digital Twin, Web & Native Apps. shipped.
Lesson: It's amazing how skilled teams go to great lengths to create silos when context is missing, all with best intention
While most interaction of AI in Kognitwin is via chat interface, there are situations where 'chat message in a channel with a user' is not the ideal paradigm. This project created a 'standalone execution environment' for AI Agents, with the Chat being one of such execution environments. Includes REST endpoint with SSE for streaming, task pipeline integration, SDK examples, and experimental MCP Server support.
That lesson is not new by any mean, but it usually a much longer, political process. By this point in time, my 'gatekeeper/pioneer' role for AI work in Kognitwin (purely by the % of the code base I authored) have turned to be a disadvantage, as multiple team either assumed that 'chat channel is THE way' or 'I don't wan to involve/bother Thanh' to build their own solution; fueled by the massive interest and mandate to work with AI. This also on me as 'standalone AI Agent' was not documented as part of the original Reasoning Engine architecture. This lead me to double down even more on the new way of documenting and using AI as integral tool not just for our user, but for all internal teams as well.
Outcome: AI Agents beyond chat interface
Technologies: MCP, Agent Skills, WebSocket, SSE.
Built on lessons from: Reasoning Engine - AI Orchestration, Agentic AI for Reasoning Engine, Chat and Messaging System for Kognitwin.
OpenAI Chatkit as Surface Extension
Surface Team Lead. 2025 to present. AI & ML, Digital Twin, Web & Native Apps. shipped.
Lesson: Why not try thing out when there's many AI Agents to help you?
Building on top of the 'extension paradigm' that both the Portal and Surface applications are built upon, this project focuses on external-focus extension: OpenAI Chatkit for AI-powered chat interface. Includes wrapping Reasoning Engine for Chatkit-compatible responses via REST/SSE, creating Surface extension for context construction, and bidirectional translation of ReasoningEngine concepts to Chatkit concepts.
There's a tendency to make 'custom/in house' solution for a lot of things in KDI, for very valid reason: to create maximum synergy with the other parts of the product. That is how our Reasoning Engine is still very much custom. This usually come at the cost of not able to leverage speed of 3rd party innovation. Especially ones by big players like OpenAI, Claude, Meta, etc. With the helping hands of AI Agents, the scale is tipped when it come to justifying time/effort to try thing out.
Outcome: Chatkit with custom backend: Reasoning Engine
Technologies: OpenAI Chatkit, WebSocket, SSE.
Built on lessons from: Reasoning Engine - AI Orchestration, Kognitwin Surface & Design System, Portal Application for Kognitwin.
Drive AI Adoption as Work Tool
Innovation Department Tech Lead. 2025 to present. AI & ML. ongoing.
Lesson: Every human has their own way of thinking and absorbing information, AI can help bridge the gap
Treating AI as a 'friend/colleague' that can maintain a massive context window. This fundamentally changed documentation approach: instead of omitting details, include all of them for AI to filter; instead of writing conclusions only, include the entire thought process with rationale and trade-offs; instead of writing what code does, focus on why and the value. Adopted AGENTS.md and Agent Skills standards.
While the outcome of this approach remain to be seen, but me and my direct team have fully embraced this way of working and accelerated our work. From starting multiple session locally, spinning up cloud agents to validate and refined ideas to realizing the gap in what we have not written down, this have become an integral part of our workflow. This also flip the scale on certain 'exploration' tasks that would have been put on hold otherwise.
Outcome: AI as a colleague and target audience for documentation
Metrics: Adopted AGENTS.md and Agent Skills for full Surface repository; Partially adopted into the main Kognitwin Monorepo.
Technologies: GitHub Copilot, AGENTS.md, Agent Skills, Coding Agents.
Built on lessons from: Reasoning Engine - AI Orchestration, Agentic AI for Reasoning Engine, Slack Catbot - AI Test Bed.
Kognitwin Surface & Design System
Surface Team Lead. 2025 to present. Digital Twin, Web & Native Apps. ongoing.
Lesson: Sometime, going back to basics is the only way forward
A complete UX overhaul of the Kognitwin digital twin application, completely rethink the user flow, interaction paradigms, and visual design to make a consistent and value-focused experience. This include creation of a internal design system instead of relying on Angular Material. This is the 4th app in the application, after the main 'twin', 'admin' and 'portal' applications.
After years of rapid development and scaling, the Kognitwin product have accumulated a lot of technical debt, inconsistent UX patterns, fragmented concepts and teams forming silos. This effort is no where near complete due to the scale and ambition. Beside the technical challenges, aligning this with our existing customers is no small feat, and was only possible with everyone wanting to move forward together.
Outcome: Re-establish the foundation of Kognitwin, UX and Core Concepts
Technologies: Angular, Design System, UX, Zero-to-One, B2B.
Built on lessons from: Kognitwin Digital Twin Platform, Portal Application for Kognitwin, Situation Awareness Cockpit.
Lessons carried into: Surface Extension: Omniverse, OpenAI Chatkit as Surface Extension.
Agentic AI for Reasoning Engine
Innovation Department Tech Lead. 2025 to present. AI & ML, Digital Twin. shipped.
Lesson: Continuous adaptation is key in AI space, and require a different way of working
The 3rd version of the Reasoning Engine, now running with multiple AI Agents instead of the previous plugins- and tools-based approach. This allow for much more flexible and dynamic behavior, as now the system behave more like a human team of collaborators instead of a pre-defined workflow. While the agents still have access to tools created from RTS (v2), the core architecture changed from a semi-linear, predetermined flow with clear start and end; to an open-ended, event-driven system where agents can start, pause, request for input, execute tools, handoff to other agents, etc. before replying to user. This, again, is co-authored with our CTO. This also introduced together with a new Chat UI that support multi-agent conversation, with reasoning bar (display thoughts, actions) and a thought process panel that visualize the entire logical flow inside the agent (for transparency). This aspect is co-authored with my team member in Surface team, who is also the Application Framework Tech Lead.
Willingness to delete code and pivot architecture is easier said than done, and usually only apply to 'legacy' code that have been around for a while. In this case, the code base is ~1 year old, and still 'fresh'. While I'm very comfortable with this, it's a different story for the rest of the team; with some of them still learning/familiarizing with the 2 previous versions. This problem have mostly been smooth out now (Jan 2026) but there are still resistance till this date, especially with the team in other locations (India).
Outcome: Multi-agent architecture for AI orchestration
Metrics: Included as part of standard Kognitwin Package for all facilities; 90%+ of code and architecture ownership.
Technologies: Multi-Agent Systems, AI Orchestration, LLM.
Built on lessons from: Reasoning Engine - AI Orchestration, Slack Catbot - AI Test Bed, Talk to My Document.
Lessons carried into: Surface Extension: Omniverse, Non-Chat / Standalone AI Agents, Drive AI Adoption as Work Tool.
WebRTC Video Call in XR
Innovation Department Tech Lead. 2024. Digital Twin, Extended Reality, Web & Native Apps. shipped.
Lesson: WebRTC is still hard, especially cross-region and network complexity
A WebRTC-based video call system integrated with the same 'Chat' backbone of the Kognitwin platform. As we also deliver XR solutions on the web via the same application, this function also works in VR headsets like Quest 3. In other words, a desktop user can see their colleague moving around in 3D space (as they are in VR) and then call them while collaborating on a piece of equipment together, and vice versa.
While WebRTC have been around for a while, but building a robust, scalable video call system is still hard. The complexity of network condition, NAT traversal, multi-region latency, etc. all add up to unpredictable user experience. While there's TURN/STUN server to help with some of these problems, but going there require major investment, which is not feasible for a innovation project -> have to land somewhere in the middle.
Outcome: Since there's chat, why not video call too?
Technologies: WebRTC, WebSocket, VR, Video Call, 3D Collaboration.
Built on lessons from: Chat and Messaging System for Kognitwin, 2D/3D Collaboration & Chat, VR Video Player.
Lessons carried into: Surface Extension: Omniverse.
Talk to My Document
Innovation Department Tech Lead. 2024 to 2025. AI & ML, Digital Twin. shipped.
Lesson: Knowing about AI models is not the same as using them to solve real-world problems
Documents of all types are one of the biggest data sources in Kognitwin with 100K to 3 million documents in each facility, depending on size. Before this project, document search was keyword-based, focusing on metadata (title, linked equipment, tags) not the content itself. This project enabled search on document content and uses that as grounding for AI Copilots/Agents. Key technical challenges: JSON-izing unstructured documents (PDF, Word, Excel, Images), creating chunks on structured JSON document trees for embedding, retrieving and ranking relevant documents for grounding, and indexing millions of documents within reasonable time and cost. This project was also co-engineered with a team of 15+ developers and data scientists from Microsoft.
Beyond the obvious insight on embeddings and vector search, the biggest lesson: knowledge of AI/ML and applied application in real-world usage are 2 very different things. Take 3D world for example, the ones that create the 3D engines (Unity, Unreal) and the ones that use them (game developers) are 2 distinct groups. I still remember the GPT-3 document included a line 'turn-based text structure can exhibit assistant behaviour', and that was 8 months before ChatGPT was released. Knowing that GPT-3 can complete text is not the same as building the application layer for ChatGPT.
Outcome: Embedding-based document search in Kognitwin, co-engineered with Microsoft
Metrics: Indexed 600K documents for 1 facility in 1 week; 8 million+ vectors during POC; Issue tracking and code via Github across KDI and Microsoft team.
Technologies: Vector Embeddings, Vector Search, LLM, Qdrant, Multimodal, OCR, Azure Cognitive Services.
Built on lessons from: Slack Catbot - AI Test Bed, Reasoning Engine - AI Orchestration.
Lessons carried into: Agentic AI for Reasoning Engine.
Reasoning Engine - AI Orchestration
Innovation Department Tech Lead. 2023 to present. AI & ML, Web & Native Apps, Digital Twin. pivoted.
Lesson: AI world move fast, if we not moving at the same pace, might as well not move at all
An AI Orchestration Engine to enable AI capabilities in Kognitwin. The goal is to create a system that can answer questions with grounded facts, autonomously perform complex tasks by orchestrating multiple AI models and tools. This involves integrating various AI services, managing workflows, and ensuring seamless communication between different components. In a way, this is the biggest project I responsible for. To this date (Jan 2026) I still own 90%+ of the code base and architecture. The orchestration system is originally co-authored between me and our chief architect (who then became our CTO and CPO), and is introduced together with the revised chat system. Before we pivoted to agentic (v3), this system went through 2 major versions: Plugin-based (v1, internally called SAR: Select plugin > Activate plugin > Respond), and Tool-based (v2, internally called RTS: Reasoning Tool Strategy).
After shipping the first version of the Reasoning Engine, which is based on plugins (v1), the AI landscape continue to change drastically. New reasoning/thinking models, structured output, multimodal, MCP, etc. are all released in a rapid pace. While we take pride in our architecture, moving on is the only option, including deleting and refactoring a majority of the orchestration code base.
Outcome: Ground AI responses with deep integration to Kognitwin concepts
Metrics: Shipped AI Copilot to Production for 3 regions.
Technologies: RAG, Zero-to-One, AI Orchestration, LLM.
Built on lessons from: Slack Catbot - AI Test Bed, Chat and Messaging System for Kognitwin.
Lessons carried into: Non-Chat / Standalone AI Agents, OpenAI Chatkit as Surface Extension, Drive AI Adoption as Work Tool, Agentic AI for Reasoning Engine, Talk to My Document.
Slack Catbot - AI Test Bed
Hacker. 2023 to 2025. AI & ML, Web & Native Apps. ongoing.
Lesson: Fast prototyping is invaluable to move fast
A response to a simple question: 'How hard can it be to have ChatGPT-like (GPT-3 at the time) function to test things out'. The Catbot (and its sibling Hatbot) is an internal Slack App created to quickly prototype and test AI capabilities before taking lessons learned into the main product. Built with a simple architecture: a Slack App with Slack Bolt SDK that replies via OpenAI API. Features implemented: long-term memory (recall, remember, forget per user using Text-3 and Qdrant), embedding-indexed emoji reactions with GIF sequences using 200+ custom emojis, multimodal support (image/voice input and output), personalized voice from Azure with custom voice model, custom personalities (Yoda, Caveman, etc.), and multi-user conversations with dedicated memory and personality for each agent.
Having a low-friction, low-stakes environment to prototype and test new ideas is very fun and indispensable. Here I can both allow myself to 'play' and experiment with new ideas, as well as using it as the proving ground for 'real' product features. It's always easier to talk about something that you can see and use, rather than abstract ideas.
Outcome: Self-created Prototyping/Hacking Space
Technologies: Slack Bolt App, Zero-to-One, LLM, Prototyping, TTS, Qdrant, Vector Embeddings, FFmpeg, Multi-Agent Systems, Image Generation.
Built on lessons from: SDK & CLI Deployment Tool for Kognitwin, Chat and Messaging System for Kognitwin.
Lessons carried into: Drive AI Adoption as Work Tool, Agentic AI for Reasoning Engine, Talk to My Document, Reasoning Engine - AI Orchestration.
Chat and Messaging System for Kognitwin
Foundation Team Tech Lead. 2023. Digital Twin, Web & Native Apps. shipped.
Lesson: Before AI, chat was trivial feature, but now it is fundamental in many products
A complete chat and messaging architecture for Kognitwin. This is the backbone for both internal chat and AI copilot chat system. Built with scalability and performance in mind, with load balancing work distributed across multiple worker nodes. This took the lessons learned from the previous 'live collaboration and chat' system, Slack architecture to avoid reinventing the wheel. This was introduced at the same time as the 'Reasoning Engine' project to enable AI-powered chat experience in Kognitwin.
While chat used to be a trivial feature as part of our collaboration suite, the introduction of AI use case mean chat need to be taken much more seriously. Especially on how AI chat show transparency, reasoning steps, etc.
Outcome: Scalable chat backbone for Kognitwin
Technologies: WebSocket, Chat System, Load Balancing.
Built on lessons from: Kognitwin Digital Twin Platform, 2D/3D Collaboration & Chat.
Lessons carried into: Non-Chat / Standalone AI Agents, WebRTC Video Call in XR, Reasoning Engine - AI Orchestration, Slack Catbot - AI Test Bed.
Portal Application for Kognitwin
Foundation Team Lead. 2023 to 2024. Digital Twin, Web & Native Apps. ongoing.
Lesson: VS Code and OSs are great inspiration for complex applications
This is the fully revisited admin application of the Twin, but not for 'configuration management'. It is a re-think of how admin and super users will set up and manage the digital twin for their assets. Going from Zero to Hero within a few hours, with self-serve data pipelines and standardized package/feature deployment. This complete shift to a new look and feel and relies on new core concepts/architecture, and is fundamentally a different 'build' from both the 'twin' and 'admin' application described previously. The project is heavily inspired by VS Code and the extensibility architecture. This project targets all problems mentioned in the 'CLI Tool' and 'Admin Portal' experiences.
Having good UX for managing complex systems is hard, even harder than the end-user application itself. This fact is mostly an after thought for B2B applications but eventually become a bottleneck to truly scale a 'good' product. Surprisingly, looking at OSs (Windows, MacOS, Linux) and VS Code for inspiration provide a lot of valuable insights. Best learning is watching master at work.
Outcome: Rethink admin experience for digital twin
Technologies: Angular, TypeScript, VS Code Architecture, Zero-to-One, B2B.
Built on lessons from: Kognitwin Digital Twin Platform, SDK & CLI Deployment Tool for Kognitwin, Admin for Digital Twin.
Lessons carried into: Surface Extension: Omniverse, OpenAI Chatkit as Surface Extension, Kognitwin Surface & Design System.
Situation Awareness Cockpit
AoTF Tech Lead. 2023. Digital Twin, Web & Native Apps. shipped.
Lesson: Wary of telephone game; Dare to rethink the entire experience, while navigating challenging politics
My temporary return to the deployment role after 2 years away (since Trinidad & Tobago in 2021), for LNG Canada (LNGC). The original discussion was: 'When changing shift, one has to read a paper that the previous shift wrote, to be aware of what happened'. Due to telephone game of product management, that led to less than ideal feature development where teams were trying to 'replace the paper' with digital twin features, trying to tick boxes. As both sides sat together in the same office, we realized it's not the paper that users care about—it's the transfer of context to be aware of the situation. This led to a complete UX rethink: how the 'at a glance' experience should be designed. This project introduced many new core concepts for Kognitwin focusing on the time dimension: shift, handover, process roles, operation rounds, etc.
Stepping into the 'full-stack' role again gave me new perspective on what happens when the end user is not an integral part of the development cycle. The 'telephone game' effect is dangerously real in B2B context, where multiple layers of product management, sales, deployment team, development team can distort original user needs. What's even harder is dealing with the consequences of such distortion—keeping everyone happy, understanding the root of user needs and finding ways to deliver real value.
Outcome: Instead of 'replace a paper', rethink how context is transferred
Technologies: Zero-to-One, UX, B2B.
Built on lessons from: Kognitwin Digital Twin Platform, Digital Twin Deployment in Trinidad & Tobago, SDK & CLI Deployment Tool for Kognitwin.
Lessons carried into: Kognitwin Surface & Design System.
SDK & CLI Deployment Tool for Kognitwin
Foundation Team Lead. 2022. Digital Twin. pivoted.
Lesson: A tool's value is not measured by its features or vision, but by how users adopt it to solve problems
A command line tool to manage Kognitwin deployment repositories, automate repetitive tasks, provide consistency and enforce validation. After 2 years of scaling up and deploying Kognitwin to multiple customers in multiple regions, the 'extreme flexibility' that make the product unique begin to show its downside: managing multiple deployment repositories with copy-paste pasta with slight modifications become extremely error-prone and time consuming. The tool was built with many sub-commands to handle different aspects of the deployment process, including setting up new data sources, stamping out standard configurations for newly deployed facilities, validating configuration and applying changes to different environments, and triggering task pipelines for data clean up, import, and contextualization.
The tool performed as intended with planned features. However, observed problems remained mostly the same and got worse as we waited for adoption for ~6 months. Three main reasons: the CLI tool allowed 'legacy' mode for transition which became an easy/no-action-needed path; no time was allocated beyond 'getting started' phase; adoption was measured on usage, not understanding of root problems. Result: near 100% 'adoption' with majority simply replacing 'script A' with 'ktw command A --legacy'.
Outcome: Pivoted to part of original scope after evaluation
Metrics: Full adoption across deployment teams; Pivoted to 2 of 8+ sub-commands; For in-use commands, fully replaced duplicated scripts.
Technologies: CLI, TypeScript, SDK, DevOps, B2B.
Built on lessons from: Kognitwin Digital Twin Platform, Digital Twin Deployment in Trinidad & Tobago, Admin for Digital Twin.
Lessons carried into: Slack Catbot - AI Test Bed, Portal Application for Kognitwin, Situation Awareness Cockpit.
2D/3D Collaboration & Chat
Foundation Tech Lead. 2022. Digital Twin, Web & Native Apps. shipped.
Lesson: Realtime is fun, but to take the last 20% to production is hard
Live collaboration in 2D, 3D and Chat in Kognitwin. The inspiration came from two places: the need to support 'remote operation' use-cases in heavy asset industries where teams are distributed across multiple locations and time zones, and consumer-grade collaboration tools like Figma and Google Docs. This was the first time Kognitwin supported real-time multi-user collaboration, where multiple users can see each other's presence, cursor, annotations, etc. in both 2D and 3D space. Built on top of a WebSocket-based architecture with different channels for various data sources, with backend supporting load broadcasting to multiple clusters/regions around the world. This was NOT comparable with products like Figma and other Chat applications. The support was minimal and targeted for specific use-cases, but it worked and we learned a lot from building it.
While the real-time collaboration feature works and is very fun to demonstrate, to mature it requires company-level investment. Take chat for example, we can chat without storing any message and have a 'default facility' channel only, which is nowhere near a production-grade chat system.
Outcome: First real-time collaboration in Kognitwin
Technologies: WebSocket, 3D Visualization, Real-time Collaboration, Multi-region Broadcasting.
Built on lessons from: Kognitwin Digital Twin Platform, Digital Twin Deployment in Trinidad & Tobago.
Lessons carried into: WebRTC Video Call in XR, Chat and Messaging System for Kognitwin.
Point Cloud Streaming Optimization
Foundation Team Member. 2021. Digital Twin, Media & Camera, Web & Native Apps. shipped.
Lesson: Performance can tip the feasibility scale even for B2B, not just nice-to-have
After handling deployment lead role, this is one of the projects I worked on as part of the Foundation Team of Kognitwin. The goal is simple: make point cloud data fun and smooth to use and performant enough for both most desktops and some tablet devices. While our internal 3D engine already supported streaming point cloud data to a browser, there was a critical bottleneck on the web that the desktop client did not have: file API performance and resource caching. To solve this, I implemented 2 batching and caching layers on the client side with LRU cache and IndexedDB, coupled with server endpoint that operate on partial content request (206). The end result basically brought the performance to mostly on par with desktop client, which tipped the feasibility scale on most point cloud use-cases.
While working in B2B context, performance is usually lower on the list and not a make-or-break factor. However, enterprise users are consumers too and expectations are increasingly set by consumer-grade applications. Sometimes it's worth taking on complex/full-stack challenges to create experiences that truly bring value to users: the ones that they actually use without frustration.
Outcome: Desktop-like point cloud performance in browser
Technologies: Point Cloud, Performance Optimization, B2B, IndexedDB, LRU Cache, HTTP 206 Partial Content.
Built on lessons from: Kognitwin Digital Twin Platform, Digital Twin Deployment in Trinidad & Tobago, Spatial Inspection Video.
Digital Twin Deployment in Trinidad & Tobago
Deployment Lead. 2020 to 2021. Digital Twin. shipped.
Lesson: Full-stack can mean more than code or front- & back-end
After the successful Enterprise Framework Agreement, the first 'global' facility for Kognitwin outside of Norway was in Trinidad & Tobago for 5 facilities. I took on the deployment lead role for ~1 year, working closely with the end user on a daily basis with a team spanning 3 continents. Key aspects included: direct customer communication requiring close collaboration; data integration with both 'offline' data (3D models, video, 360 images) and 'live' data via webhooks and third party APIs; feature development including PnID Quality Dashboard, Iframe with synchronized camera, HTML Overlays for internal 3D engine; and multi-region resource management and synchronization in Azure.
While I considered myself a full-stack developer before, this experience dramatically expanded my perception of that term: interpreting customer needs and feedback cycles on the 'front'; data integration, contextualization, ever-green delta pipelines on the 'back'; multi-region synchronization and images deployment on the 'infrastructure'. The downside: doing full-stack in such 'end-to-end' requires a big 'context-window', making handover extremely complicated.
Outcome: First Kognitwin deployment outside Norway
Metrics: Deployed to 5 off-shore facilities in Trinidad & Tobago; Scale out of singular customer thinking; Architecture and pipeline framework for data integration.
Technologies: Data Integration, Webhooks, Multi-region Infrastructure, Azure, B2B.
Built on lessons from: Kognitwin Digital Twin Platform, Admin for Digital Twin.
Lessons carried into: Situation Awareness Cockpit, SDK & CLI Deployment Tool for Kognitwin, 2D/3D Collaboration & Chat, Point Cloud Streaming Optimization.
Spatial Inspection Video
Software Engineer. 2020. Digital Twin, Web & Native Apps, Media & Camera, AI & ML. shipped.
Lesson: You can't connect the dots looking forward, trust they will somehow connect in your future
While being evaluated for the EFA (Enterprise Framework Agreement) for digital twin, the POC team received an open challenge: 'We have TBs of inspection footage, underwater, taken by ROVs. What can you do with it?'. Using the intersection of my experience in video processing, 3D visualization and AI/ML, I built a pipeline to extract geospatial metadata that was burned into video frames via OCR, reconstruct the 3D path of the ROV, visualize the video in 3D coordinate of the facility and synchronize the video playback with the 3D position of a 'ROV sphere' in the 3D model. After the POC phase, this feature was further developed to support practical features like raw telemetry data, points of interests, and multiple cameras per ROV.
I would not have guessed that the dots of handling big video data, working with YOLO models and building 3D experiences would connect in this way, but they did. Downside: while it worked, the road to production and scale was tough as resources needed to process and serve such videos at scale is non-trivial.
Outcome: Video with a seek bar in 3D, powered by OCR. TBs of such.
Metrics: Deployed to off-shore facilities in Trinidad & Tobago, Norway; 40+ TBs of video processed; Contributed to winning Enterprise Framework Agreement.
Technologies: OCR, ML, FFmpeg, Video Processing, 3D Visualization, Zero-to-One, B2B.
Built on lessons from: Kognitwin Digital Twin Platform, 360 Video Production, AI for 360 Video, VR Video Player.
Lessons carried into: Point Cloud Streaming Optimization.
Admin for Digital Twin
Software Engineer. 2019. Digital Twin, Web & Native Apps. shipped.
Lesson: It doesn't need to be complex to showcase unique value
The first version of admin portal in the early days of the Digital Twin product. My first major contribution to Kognitwin after joining KDI, working with folks that later became the core team for the product. A very naive application built to edit JSON configuration for front end application, start contextualization tasks and monitor the status of such tasks. While simple, this focused on highlighting the 'extreme flexibility' of the Kognitwin product. This flexible aspect directly targeted a key challenge in heavy asset industries (B2B): Products are made to extremely rigid specs, which works well for whoever created the specs but not so much for similar-but-different facilities/assets.
Even if the product is highly complex under the hood, the storytelling that resonates with customers is often simple and direct. And to tell such story while the product is being constructed, what matters is that each element of the flow exists, enough to prove the future potential.
Outcome: Proving point for 'flexible' digital twin
Metrics: Contributed to winning Enterprise Framework Agreement for Kognitwin.
Technologies: Angular, TypeScript, WebSocket, Zero-to-One, B2B.
Built on lessons from: Kognitwin Digital Twin Platform.
Lessons carried into: Portal Application for Kognitwin, SDK & CLI Deployment Tool for Kognitwin, Digital Twin Deployment in Trinidad & Tobago.
Kognitwin Digital Twin Platform
Multiple Roles. 2019 to present. Digital Twin, Web & Native Apps, AI & ML, Extended Reality. ongoing.
Lesson: End-to-end workflow that connecting dots across data silos, domains, and disciplines is key to delivering real value
My journey at Kongsberg Digital (KDI) building Kognitwin—an enterprise-grade digital twin platform for heavy asset industries like oil & gas, LNG, and energy. What started as building an admin portal to prove 'extreme flexibility' during the early product days has evolved into leading cross-functional initiatives spanning frontend, backend, infrastructure, AI, and UX. Over 6+ years, I've worn many hats: shipping the first international deployment (Trinidad & Tobago), solving browser performance bottlenecks for point cloud streaming, building and pivoting internal CLI tooling, leading next-gen UX reboots, and architecting agentic AI orchestration.
This ongoing journey at KDI have reinforced my belief that true full-stack ownership goes beyond just code. It requires understanding the entire ecosystem: from data sources, integration pipelines, user workflows, to infrastructure and AI capabilities. Only by connecting these dots can we deliver solutions that truly resonate with users and solve their complex problems.
Outcome: Multi-year journey building and scaling a flexible digital twin platform
Metrics: Adopted by more than 3 major global energy companies; Deployed to 10+ regions globally; 10K+ engineering users.
Technologies: Angular, TypeScript, WebAssembly, 3D Visualization, Data Integration, Azure.
Built on lessons from: Web Development.
Lessons carried into: Kognitwin Surface & Design System, Chat and Messaging System for Kognitwin, Portal Application for Kognitwin, Situation Awareness Cockpit, SDK & CLI Deployment Tool for Kognitwin, 2D/3D Collaboration & Chat, Point Cloud Streaming Optimization, Digital Twin Deployment in Trinidad & Tobago, Spatial Inspection Video, Admin for Digital Twin.
Magic Leap BIM Viewer
AR Developer. 2019. Extended Reality. shipped.
Lesson: Cross-platform AR collaboration adds real value to traditional workflows
In collaboration with Nordic Architecture, I built an AR experience to display BIM models (50% simplified in Maya) on the Magic Leap One headset. The ecosystem included companion apps on Android (ARCore) and iOS (ARKit) for real-time collaboration, plus a PC app for mixed reality recording. The experience was designed to be short and intuitive for use at client meetings and show floors. Featured in Norwegian Technical Magazine.
Multi-device ecosystem (Magic Leap + iOS + Android + PC recording) enabled stakeholders to collaborate in real-time regardless of hardware
Outcome: AR BIM viewer for architecture meetings
Metrics: Featured in Norwegian Technical Magazine.
Technologies: Maya, Magic Leap One, ARCore, ARKit, Mixed Reality Recording.
Built on lessons from: WWF AR Proposal, AR Video Portal.
Lessons carried into: WWF AR Proposal.
WWF AR Proposal
AR Developer. 2019. Extended Reality. shipped.
At Stargate Media, I collaborated with Qvisten Animation to create an AR storytelling prototype for WWF Norway. The project aimed to spread awareness of wildlife and the threats they face. Qvisten handled modeling and animation while I was responsible for the app development, including effects, interactions, and mixed reality recording.
Outcome: AR wildlife awareness prototype for WWF
Technologies: Unity, AR Storytelling, Mixed Reality Recording.
Built on lessons from: Magic Leap BIM Viewer, AR Video Portal.
Lessons carried into: Magic Leap BIM Viewer.
Skavlan Memoji
iOS Developer. 2018. Extended Reality. shipped.
Lesson: Fine-tuning tracking data to match personality matters more than raw accuracy
TV talk show host Fredrik Skavlan requested a more expressive custom Memoji for his show. While Qvisten Animation handled modeling and blendshapes, I was responsible for the rest of the app: shading options, UI/UX, video recording, file sharing, and fine-tuning the face tracking data to match Skavlan's unique expressions and personality.
Generic face tracking needed significant adjustment to capture Skavlan's specific expressions and comedic timing
Outcome: Custom face-tracking avatar for TV talk show
Metrics: Used on live TV show.
Technologies: iPhone X, Blendshapes, Video Recording, Face Tracking.
Built on lessons from: VR Video Player.
Photogrammetry
Technical Artist. 2018. Extended Reality. shipped.
Lesson: Full freedom of movement dramatically amplifies immersion
Inspired by Valve's 'Mountain Top' demo in The Lab, I added photogrammetry with RealityCapture to my toolset. This enabled full 6DoF support to amplify immersion and helped clean up stereo videos with reconstructed scenes. A notable project was scanning Preikestolen, a famous Norwegian cliff, for a 'balancing-on-a-chair' VR experience. Data gathering leveraged Stargate Media's camera and drone equipment.
RealityCapture scans of Preikestolen cliff enabled a 'balancing-on-a-chair' VR experience with true 6DoF
Outcome: 6DoF photogrammetry for immersive VR scenes
Technologies: RealityCapture, 6DoF, Drone, Camera Rigs.
Built on lessons from: 360 Video Production, VR Video Player.
AI for 360 Video
ML Developer. 2018. AI & ML. shipped.
Lesson: Combining emerging tech (AI + VR) creates unique demos
Driven by curiosity about AI and its potential, I completed Coursera's Deep Learning specialization and combined that knowledge with 360 VR. The result: an auto-navigation system for 360 video using YOLO object detection on TensorFlowJS. Similar to how Facebook Portal's camera automatically zooms and follows people, this demo does the same in 360 video.
Deep Learning specialization on Coursera led to this practical application - camera auto-follows people in 360 video like Facebook Portal
Outcome: YOLO-powered auto-navigation for 360 video
Technologies: TensorFlowJS, YOLO, Deep Learning.
Built on lessons from: VR Video Player, 360 Video Production.
Lessons carried into: Spatial Inspection Video.
Links: Demo.
AR Video Portal
AR Developer. 2018. Extended Reality. shelved.
Lesson: Early ARCore/ARKit experiments built foundation for later AR work
An early ARCore/ARKit experiment: step through an AR portal into a different location (recorded in 360 video). Built in Unity, reusing shaders and transport effects from previous VR projects. A fun Doraemon-inspired demo that explored the intersection of AR and 360 video.
Simple demo reusing shaders from old VR projects - step through a door into a 360 video location
Outcome: Doraemon-inspired AR portal experiment
Technologies: ARCore, ARKit, Unity, Shaders.
Built on lessons from: VR Video Player, 360 Video Production.
Lessons carried into: Magic Leap BIM Viewer, WWF AR Proposal.
Low-light Live Stream VR Camera
Hardware Prototyper. 2017 to 2018. Media & Camera, Extended Reality. shelved.
Lesson: Hardware is hard
An attempt to assemble a compact low-light VR camera using off-the-shelf Sony sensor and Nvidia Jetson to live stream 360 video. The goal was to create a more capable alternative to existing consumer 360 cameras for professional live streaming in challenging lighting conditions.
There's a working prototype, but the project ran into various issues about driver compatibility and big names like GoPro, Insta360 releasing updated products that made our approach less viable.
Outcome: Shut down after ~6 months - driver compatibility issues and market timing
Metrics: Working prototype completed; ~6 months of development before shutdown.
Technologies: Sony Sensor, Nvidia Jetson, 360 Video, Live Streaming, Hardware Prototyping.
Built on lessons from: 360 Video Production, 3D Modeling in Fusion 360, VR Video Player.
VR Soccer Room
VR Developer. 2017. Extended Reality. shipped.
Lesson: Wow factor + simplicity is the sweet spot for VR newcomers
This project explored the question: 'How do you enjoy a soccer match from any angle in VR?' In 2017, VR audiences were new to the medium, so the goal was to impress while keeping things simple. The experience had three elements: a 'VIP Lounge' with a 360-view window and a grabbable floating 2D screen, a menu to switch camera positions, and sample volumetric video from 4DViews for free-angle viewing.
Combined traditional 360 video, floating 2D screens, and volumetric video from 4DViews to create an accessible yet impressive demo
Outcome: Multi-angle VR soccer viewing with volumetric video
Technologies: Unity, VR, Volumetric Video, 4DViews.
Built on lessons from: VR Video Player, 360 Video Production.
Drone Controlling via VR
VR Developer. 2017. Extended Reality, Web & Native Apps. shipped.
Lesson: VR is more intuitive than flat screens for 3D path planning
Created for the Connected Drone conference to demonstrate how drone and VR can intersect. In VR, users set waypoints for a Mavic Pro within a bounding box—a far more intuitive experience than a flat screen. The drone then flies the defined path in reality. The challenge: this was indoors without GPS, requiring deep use of the DJI SDK to solve an uncommon positioning problem.
DJI SDK deep-dive to solve indoor positioning without GPS - demoed at Connected Drone conference
Outcome: VR waypoint interface for GPS-less indoor drone flight
Technologies: DJI SDK, Mavic Pro, VR, Waypoints, Indoor Positioning.
Built on lessons from: VR Video Player, 3D Modeling in Fusion 360.
3D Modeling in Fusion 360
Technical Artist. 2016. Media & Camera. shipped.
Lesson: Functional CAD skills fill gaps when off-the-shelf doesn't exist
I learned functional 3D modeling in AutoCAD Fusion 360 to address Stargate Media's need for custom camera housings and parts. Designs were manufactured via 3D printing or CNC machining in aluminum.
Fusion 360 modeling for camera housings, cases, and production equipment - output via 3D printing or aluminum CNC
Outcome: Custom housings and parts via 3D printing and CNC
Technologies: AutoCAD Fusion 360, 3D Printing, CNC.
Built on lessons from: 360 Video Production.
Lessons carried into: Low-light Live Stream VR Camera, Drone Controlling via VR.
360 Video Production
Technical Director. 2015 to 2019. Media & Camera. shipped.
Lesson: Mastering the full pipeline (hardware → stitching → encoding) is a competitive moat
Video production was core to Stargate Media's business. To achieve cinematic quality in 360 video, I overcame numerous technical challenges. On the hardware side, this meant selecting, operating, and sometimes designing complex 360 camera rigs. On the software side, it required mastering video stitchers (AutoPano, Mistika, Nuke & Cara) and various codecs to optimally encode video for different devices.
Technical expertise across camera rigs, stitching software, and device-specific encoding became core company differentiator
Outcome: End-to-end cinematic VR production capability
Technologies: 360 Camera Rigs, AutoPano, Mistika, Nuke, Cara, Codecs.
Built on lessons from: Web Development.
Lessons carried into: Spatial Inspection Video, Photogrammetry, AI for 360 Video, AR Video Portal, Low-light Live Stream VR Camera, VR Soccer Room, 3D Modeling in Fusion 360.
VR Video Player
Software Developer. 2015 to 2019. Extended Reality. shipped.
Lesson: Simple, intuitive UX wins over feature count in VR
At Stargate Media, I owned the VR video player development. Starting in 2015 with WebGL/Three.js and native Android (NDK), the codebase evolved to Unity with advanced features: 8K video playback on PC and non-linear storytelling (checkpoints for branching storylines or training). The UX principle throughout was to keep everything simple and intuitive.
Platform evolved from WebGL/Three.js to Unity, adding 8K playback and non-linear storytelling while keeping UX minimal
Outcome: Custom VR player with 8K and branching narratives
Metrics: 8K video support; Non-linear storytelling.
Technologies: WebGL, Three.js, Android NDK, Unity, 8K Video, Non-linear Storytelling.
Built on lessons from: Web Development.
Lessons carried into: WebRTC Video Call in XR, Spatial Inspection Video, Skavlan Memoji, Photogrammetry, AI for 360 Video, AR Video Portal, Low-light Live Stream VR Camera, VR Soccer Room, Drone Controlling via VR.
Web Development
Web Developer. 2010 to present. Web & Native Apps. shipped.
Lesson: Web skills opened door to VR industry early
Web development was my first professional skill set, and it got me hired at Stargate Media in 2014 to build 360 video web players—back when YouTube, Vimeo, and Facebook lacked VR support. I built embeddable players for client sites. The stack evolved over time: ES6, React, and visualization libraries like A-Frame and PixiJS.
Built embeddable 360 players for clients when YouTube/Vimeo/Facebook lacked VR support - foundational skill that led to hire at Stargate Media in 2014
Outcome: 360 video web players before mainstream support
Metrics: Hired at Stargate Media 2014.
Technologies: ES6, React, A-Frame, PixiJS, WebGL, Three.js.
Lessons carried into: Kognitwin Digital Twin Platform, 360 Video Production, VR Video Player.