Lakshitha Vikum Dayasena, Developer in Pannipitiya, Western Province, Sri Lanka
Lakshitha is available for hire
Hire Lakshitha

Lakshitha Vikum Dayasena

Verified Expert  in Engineering

API Design Developer

Location
Pannipitiya, Western Province, Sri Lanka
Toptal Member Since
April 12, 2021

Lakshitha has 11 years of experience in software development, with eight years in charge of architecture. He has designed and developed COTS simulation products used by various militaries and an integration platform for uncrewed vehicles. He is a specialist in C++ and has experience developing with C#, Java, JavaScript, and NSIS. Multithreading, cache optimizations, and performance optimizations are some of Lakshitha's strengths. He has trained more than 30 developers.

Portfolio

TENGRI UAV
Yocto, GNU Debugger (GDB), GCC, NetBeans, Linux, Valgrind, ARM...
SimCentric Technologies
C++11, C#, JavaScript, NSIS, Java, Visual Studio, Windows...
SimCentric Technologies
C++, API Design, Windows, Visual Studio, Cppcheck, Intel Parallel Studio...

Experience

Availability

Part-time

Preferred Environment

Windows, Visual Studio, Linux, NetBeans, GCC, Cppcheck, Intel Parallel Studio, Valgrind, GNU Debugger (GDB), Jenkins

The most amazing...

...thing I've designed and developed is an uncrewed vehicle integration platform helping custom builders add gimbals, control stations, and redundant comms meshes.

Work Experience

Technical Director

2018 - PRESENT
TENGRI UAV
  • Designed and developed TengriWifi, a wifi-based mesh network with less than 1ms latency end to end. Supports encrypted and unencrypted traffic with configurable redundancy and bandwidth strategies.
  • Optimized application memory bandwidth usage to reduce video capture jitter and latency. Zero copy (DMA transfer-based) libraries from NXP were used. Composite video capture latency was around 30ms, and HDMI input was around 60ms.
  • Architected, designed, and developed Tengri firmware for the in-house designed and manufactured custom hardware. This includes a safe and secured update system, four composite video inputs, an HDMI input, an HDMI output, and a composite video output.
  • Designed a GUI with CEGUI to be navigated with a radio controller joystick. It shows up to five video feeds with the main video feed at 720P 30FPS. This also overlays telemetry (attitude, altitude, and battery information) from the uncrewed vehicles.
  • Designed and developed an action system to control GUI and uncrewed vehicles with joysticks and other input devices. This allows builders to use switches and joysticks of their choice in creating easy-to-use control stations for their systems.
Technologies: Yocto, GNU Debugger (GDB), GCC, NetBeans, Linux, Valgrind, ARM, i.MX6 Processors, OpenGL, OpenGL ES, WiFi, GStreamer, Cppcheck, Software Architecture, Reverse Engineering, ArduPilot, MAVLink, C++20, Standard Template Library (STL), Linux Device Driver, API Design, C, C++, Boost, Object-oriented Programming (OOP), Subversion (SVN), GUI Design, XML, Concurrency, Optimization, Profiling, RESTful Development, REST APIs, Embedded Systems, Embedded Software, C++14, C++17, C++11, OpenCV, JSON, Distributed Systems, Multithreading, Bash, RS-232, Pair Programming, Test-driven Development (TDD), Continuous Integration (CI), Continuous Delivery (CD), Code Review, Model View ViewModel (MVVM), Architecture, Leadership

Software Architect

2014 - 2018
SimCentric Technologies
  • Designed and developed the Ambience product suite to add civilians and vehicles to simulations running on VBS3. This included a game AI engine based on Entity systems. This also had behavior trees and recast-based navigation.
  • Designed and developed the InstructorMate product for training. This supported up to 40 Windows PCs to be viewed and controlled by a trainer.
  • Created coding standards for C++, C++/C API development, and NSIS development.
  • Designed and oversaw the implementation of continuous integration pipelines. This included a Microsoft symbol server to support internal and external crash dump analysis and easier debugging of software.
  • Designed multiple APIs for easy usage while having versioning and robust error handling. Some APIs were made thread-safe if required.
Technologies: C++11, C#, JavaScript, NSIS, Java, Visual Studio, Windows, Distributed Interactive Simulation (DIS) protocol, Recast Navmesh, Jenkins, Jira, Artifactory, Microsoft Symbol Server, Intel Parallel Studio, Cppcheck, API Design, C, Standard Template Library (STL), Software Architecture, C++, Boost, Object-oriented Programming (OOP), Subversion (SVN), GUI Design, WinDbg, Eclipse IDE, XML, Concurrency, Optimization, Profiling, C++14, Linux, NetBeans, GCC, GNU Debugger (GDB), Yocto, ARM, i.MX6 Processors, OpenGL, OpenGL ES, Reverse Engineering, ArduPilot, MAVLink, OpenCV, Microsoft App-V, NuGet, DirectX, Eclipse, Windows Presentation Foundation (WPF), XAML, JSON, FFmpeg, JavaScript 6, React, Redux, Babel, Atom, Data-driven Programming, Lock-Free Programming, REST APIs, RESTful Development, Distributed Systems, .NET, Embedded Systems, Embedded Software, Multithreading, Bash, Pair Programming, Test-driven Development (TDD), Continuous Integration (CI), Continuous Delivery (CD), Doxygen, Agile, Scrum, Kanban, Code Review, Microsoft Visual Studio, Model View ViewModel (MVVM), Architecture, Leadership

Associate Architect

2014 - 2014
SimCentric Technologies
  • Designed and implemented the Ambience product suite.
  • Trained employees in C++, debugging, and API design.
  • Oversaw setting up symbol servers and source servers.
Technologies: C++, API Design, Windows, Visual Studio, Cppcheck, Intel Parallel Studio, Jenkins, Software Architecture, Standard Template Library (STL), C++11, Distributed Interactive Simulation (DIS) protocol, Recast Navmesh, Jira, Artifactory, Microsoft Symbol Server, C, Object-oriented Programming (OOP), Boost, WinDbg, Microsoft App-V, Subversion (SVN), Windows Presentation Foundation (WPF), GUI Design, XAML, Bamboo, Data-driven Programming, Concurrency, Lock-Free Programming, Optimization, Profiling, REST APIs, RESTful Development, Distributed Systems, .NET, Multithreading, Pair Programming, Continuous Integration (CI), Continuous Delivery (CD), Doxygen, Agile, Scrum, Kanban, Code Review, Microsoft Visual Studio, Model View ViewModel (MVVM), Architecture, Leadership

Senior Software Engineer

2012 - 2013
SimCentric Technologies
  • Designed and implemented the Ambience product suite.
  • Implemented a behavior tree and created behaviors used by the products.
  • Optimized the engine for lower memory and processor usage.
Technologies: C++, Multithreading, Windows, Visual Studio, Cppcheck, Software Architecture, Standard Template Library (STL), Distributed Interactive Simulation (DIS) protocol, Recast Navmesh, Jira, Object-oriented Programming (OOP), Boost, Subversion (SVN), Windows Presentation Foundation (WPF), GUI Design, Bamboo, API Design, Data-driven Programming, Concurrency, Optimization, Profiling, Distributed Systems, .NET, Pair Programming, Continuous Integration (CI), Continuous Delivery (CD), Doxygen, Agile, Scrum, Kanban, Code Review, Microsoft Visual Studio, Leadership

Software Engineer

2011 - 2012
SimCentric Technologies
  • Initiated a rewrite of Urban Ambience product to have better performance and to be reusable.
  • Architected, designed, and implemented a multithreaded game AI engine based on entity systems. This included a plugin system as well.
  • Introduced unit testing to the company. This helped speed up the development of the Ambience engine.
Technologies: C++, Windows, Visual Studio, NetBeans, Standard Template Library (STL), Java, Distributed Interactive Simulation (DIS) protocol, Jira, Object-oriented Programming (OOP), Boost, Subversion (SVN), Bamboo, Concurrency, Optimization, Profiling, Distributed Systems, Multithreading, Pair Programming, Continuous Delivery (CD), Agile, Scrum, Code Review, Microsoft Visual Studio

Associate Software Engineer

2010 - 2010
SimCentric Technologies
  • Designed and implemented Maritime Pattern of Life product.
  • Implemented the XML loader for Urban Ambience and Maritime Pattern of Life.
  • Implemented Bently-Ottmann algorithm to combine sea lane data into a graph.
Technologies: C++, XML, Windows, Visual Studio, NetBeans, Standard Template Library (STL), Distributed Interactive Simulation (DIS) protocol, Jira, Boost, Subversion (SVN), Agile, Scrum, Microsoft Visual Studio

Tengri Platform

A platform helping uncrewed vehicle builders integrate gimbal cameras, redundant communications systems, control stations, and flight controllers. This is installed on an in-house designed small embedded device based on i.MX6 processor. I architected, designed, developed, and managed the software development team. This supports safe updates, a factory reset, 15s startup, redundant communications low latency (less than 1ms) with COTS USB wifi modules supporting monitor mode, visualize up to 5 video streams together, video recording, controlling flight controllers and other payloads with joysticks and other input devices. A lot of optimizations were done to support 5 video streams with low latency as the processor memory bandwidth is a bottleneck. This was developed as a multithreaded application heavily dependent on property classes similar to that in C#. This sped up development by reducing the complexity of multi-threaded code. A CEGUI front end with frame buffer mode allows the user to control the GUI using an RC joystick or a keyboard.

Ambiance Product Suite

https://www.simct.com/ambience/
A C++ application to add civilians and vehicles to VBS3 simulations. This supports up to 1,000 entities. The entities go about tasks that can be assigned or can move around the area randomly while reacting to threats. A large map support was implemented with dynamic tile generation. This is based on an entity-systems-style game AI engine. It is multithreaded. A Java NetBeans platform-based editor is also included.

Live Guppy Fish Sorter

A machine for binning live Guppies based on length. This uses video from a camera to measure the length when the fish is going down a channel of water. The fish are lured into the channel with various tactics like pulsing water jets and incoming water flows. The machine consists of a PC, camera, water pump, water tank, fish bins, and a solenoid-based fish sorting gate system.

Artifactory Plugin for Jenkins

This is an internal plugin to integrate Artifactory with Jenkins build plans. I designed the plugin and mentored the developer. This supports adding and removing items from the Artifactory server with build plans.

Crash Dump Support

A symbol server was set up and integrated to build processes to support C++ DLL debugging with components from NuGet packages. This also enabled remote debugging and crash dumps sent by customers to be easily debugged. This reduced the time to identify issues on the customer side from four days to less than a day. Also, debugging on developer PCs was faster as they did not need to build all libraries to get debug information. Customers were provided with private symbol stripped PDBs. Internally PDBs were source indexed to show source files from the repository.

GuiMate

https://www.youtube.com/watch?v=GFpKeAsU9hI
This product adds GUI generation to VBS3 using C++ plugins. This is developed in C++ on Microsoft Visual Studio and uses the CEGUI library. I designed the API. The product DLL is developed in C++ and shows a C API wrapped to C++ on the customer side with a header-only library. This was done to avoid Visual Studio C++ runtime dependence. This also helps with porting to other languages.

Installer Revamp

A common installer codebase was created with unit-tested components. This was done to reduce bugs and speed up development. The time to create a new installer went from two weeks to one day. It was done in NSIS. I mentored the developer and designed the functions.

InstructorMate

https://www.youtube.com/watch?v=3e5F0fyoJMU
This is a tool for training for computer labs. The instructor can monitor the trainees' PCs. The instructor can view the low latency screen captures from all PCs and also control a PC if required. This can support up to 40 PCs. This was done in C# WPF for GUI and C++ for windows related functions. The system works out of the box without configuration for a local lab and only needs configuration for use through the internet.

MediaMate

https://www.youtube.com/watch?v=z8oFJh5WCMk
MediaMate helps stream and record the VBS3 screen. This was developed in C++ on Visual Studio. This used VBS3Fusion, GuiMate, and FFMpeg libraries. I designed the application and was involved with implementation.

NetRTE

This is a web-based real-time editor for Virtual Battle Space 3(VBS3) military simulator. A C++ DLL communicates with VBS3 via VBS3Fusion, and a node server connects to it, providing the web app. This uses C++ and JavaScript (ES6) and Node.js, React, Redux, Babel, and Atom editor as an IDE. Minifying was also done.

StrikeFusion

This is the C++ and VBS3Script API for close air support training tool Strike. This was developed as a C++ DLL exposing a C API wrapped into C++ with a header-only library. It was done to remove Microsoft visual C++ runtime dependence leaking through the API. This used Java, C++, and VBS3script for development.

Set up Delivery Pipeline

The delivery pipeline consists of Jenkins, Artifactory, and NuGet. Any product can be built and released with a few clicks. This included storing debug symbols and encryption for licensing. It also involved other projects to develop the needed Jenkins plugins and tools to fix issues with Microsoft Symbol Server. This was initially implemented with Bamboo but was later changed due to changing requirements.

Symbol Server Plugin for Jenkins

This was an internal project to add the Microsoft symbol server functionality to Jenkins. I mentored the developer and designed the plugin. This is a Java-based plugin. It can add and remove PDB files to a symbol server.

Hexapod Uncrewed Vehicle (First Place)

A hexapod uncrewed vehicle was built for the Arthrobot competition organized by IIT Bombay. This had 12 servo motors driven by a PIC microcontroller. This had two different gaits for fast movement and clearing obstacles. This was remotely controlled. It can blend directional and turning movements to generate PWM for all 12 motors.

Compression and Tensile Strength Testing Machine

A lightning strike damaged a 200-ton strength testing machine at the university. This was a charity project. The control system was damaged beyond repair. We created new circuits for load cell processing. A PC was used instead of a custom device. A PIC microcontroller did the A/D conversion and sent the data to a PC via RS232. It also controlled the hydraulics. A WPF application controlled the system. It allowed various waveforms to be generated in addition to the standard way of measuring.

Toptal React Academy

The Toptal React Academy is an exclusive learning program that teaches the React framework to select members of the Toptal network. After a month of study, all graduates are tasked with completing a 30-40 hour final project to build and deliver a React app from scratch.
2005 - 2009

Bachelor of Science Degree in Electronics and Telecommunication

University of Moratuwa - Sri Lanka

AUGUST 2021 - PRESENT

Toptal React Academy Graduate

Toptal, LLC

Libraries/APIs

Standard Template Library (STL), REST APIs, OpenCV, OpenGL, OpenGL ES, DirectX, FFmpeg, React

Tools

Visual Studio, Cppcheck, Intel Parallel Studio, Microsoft App-V, Subversion (SVN), MikroC PRO, Microsoft Visual Studio, GCC, Valgrind, GNU Debugger (GDB), Jenkins, Jira, Artifactory, WinDbg, NSIS, Eclipse IDE, NuGet, Babel, Atom, Bamboo

Languages

C++20, C++11, C, C++, XML, C++14, C++17, C#, JavaScript, Java, XAML, JavaScript 6, Bash

Paradigms

Object-oriented Programming (OOP), Data-driven Programming, Pair Programming, Test-driven Development (TDD), Continuous Integration (CI), Continuous Delivery (CD), RESTful Development, Agile, Scrum, Kanban, Model View ViewModel (MVVM)

Platforms

Linux, NetBeans, Windows, Eclipse

Storage

JSON

Frameworks

GStreamer, Boost, Windows Presentation Foundation (WPF), Redux, .NET

Other

WiFi, Software Architecture, Distributed Interactive Simulation (DIS) protocol, Recast Navmesh, Microsoft Symbol Server, API Design, Concurrency, Optimization, Profiling, Embedded Systems, Embedded Software, Multithreading, RS-232, Code Review, Architecture, Leadership, ARM, i.MX6 Processors, Reverse Engineering, GUI Design, Distributed Systems, Doxygen, Computer Architecture, Yocto, ArduPilot, MAVLink, Linux Device Driver, Lock-Free Programming

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring