Business values From Mathematics
Designing system architectures from first principles. Training for the next trail marathon in the mountains to clear my head in between.
"Johan has done a great job in building the first version of [[a novel deep learning model for virtual chat agents]] that will be significant in augmenting our Reinforcement Learning paradigm in future." - 7.ai, a leader in virtual chat agents
Number crunching and stuff
Here are some of the projects I've worked on:
Signal processing on EEG data
About finding potential electroencephalography parameters for identifying clinical depression. My report describes the process of using visualisation in Freq to understand the shape of the signal which helps with interpreting results and helps with the development of model parameters. The project also improved Freq to cope with the size of the weeklong EEG datasets.
Massive multiplayer server architecture
I designed the server architecture of a game winning a Guinness World Record for the largest online first-person shooter battle (MMOFPS). The video shows the server architecture in action.
See this other video for more details on the server architecture.
Shaders, big data, signal processing, multicore processing, C++, Cross platform, Qt and QML
Freq is a modern approach to frequency analysis. It is a cross-platform application that makes it easy to explore the contents of long and detailed time-series.
I'm also a member of the Birdie Scene Crew who organises the creative competions at Birdie.
GPGPU Computing, Big Data, Internet of things, Realtime Cloud Computing, Heterogeneous Computing
Many of the projects I've worked on have been about pushing through hardware limitations. Sometimes I design a brand new architecture to juggle tons of simultaneous communication channels. Other times I redesign the code flow to better suit the underlying architecture and carefully consider bandwidth versus latency to decide what to precompute and what to recompute, where in one assignment I was able to deliver a 3000x speed-up. Yet other times I use mathematical transformations to find alternate ways of computing the same results with fewer operations.
C++ exception backtraces
My Backtrace class wraps compiler specific calls for traversing the call stack and translating it to symbol names. It is typically used together with boost exceptions or when catching segmentation fault signals in order to log the complete call stack upon unexpected behaviour.
C++ smart pointer and mutex monitor
shared_state<T> is a smart pointer in C++ that acts as an object monitor. For objects shared between threads shared_state ensures that the object is always protected with mutually exclusive access while being syntactically similar to a regular C pointer.