Johan Eklöf
Data science for fun and profit
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." - [24]7.ai, a leader in virtual chat agents
My favourite *DD
Behaviour Driven Development,
aka TDD done right
Number crunching and stuff
Here are some of the projects I've worked on:
Machine learning
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.
Pikkoserver Architecture
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.
Freq
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.
sevendeadlysins.js
WebGL, javascript and shaders
I made an invitation demo to the computer festival Birdie in Uppsala, Sweden. It is a javascript demo where most effects are rendered in WebGL through ray marching written in the OpenGL Shader Language. You can run sevendeadlysins.js in your own browser.
I'm also a member of the Birdie Scene Crew who organises the creative competions at Birdie.
Manycore processing
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
Runtime info
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.
index.png.html
A javascript-in-png trick, ray marching and metaballs.
I did my own implementation of a neat png trick. It uses the .png image format to compress the source code of a small javascript demo. The final source code was 7 kB, which was minified to 4 kB and then compressed with png to a final self-contained demo size of only 2 kB.
The animation is a webgl shader with a procedurally generated annoying tune. The whole javascript-in-png trick might not work in all browsers.
shared_state<T>
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.
LET'S CHAT!
CONTACT ME
Feel like doing creative number crunching together?
© 2019