Sander Vocke

CODEFOLIO

×

ScreenPoint Transpara

I have spent about three years at !!LINK!! Screenpoint Medical in Nijmegen, The Netherlands. ScreenPoint's sole product, Transpara, is an artificial intelligence tool capable of helping radiologists make more accurate diagnoses reading mammograms for breast cancer.

In a small team of developers I took on many hats. My activities included:

  • Writing and optimizing image processing code in C++.
  • Developing DICOM communications code in C++.
  • Improving ScreenPoint's DevOps infrastructure.
  • Developing Windows-based interactive medical image viewing applications.

While I am not free to publish details about these projects, I would be happy to provide some more details on request.

Keywords

C++11, DICOM, Python, DevOps, Docker

Available?

No. This is proprietary software, property of ScreenPoint Medical.

×

BBStudio

This takes me back... BBStudio was a project I did alone back in high school for coursework. I was interested in graphics, game programming and physics engines, so decided to "roll" my own - literally, because to keep it manageble for myself I limited it to only spherical objects. My basic knowledge of Newtonian physics was enough to get the ball rolling! And I learned a lot in the process.

I added 3D graphics rendering with the OGRE 3D engine and a UI that allowed the user to design and store small ballular physics experiments.

By far the coolest Eureka moment for me: I added the option to define a force toward a fixed point in space, and found out that if applied in combination with initial motion, the spheres actually started following stable elliptical orbits! That to me was awesome, since the physics engine itself was not much more than an implementation of Newton's second law.

Keywords

C++, graphics, physics, UI

Available?

No, but only because it's old and back then I was unaware of the concept "open source". I can send or publish the code on request.

×

Intergalactic

Another high-school personal project. This was from even before BBStudio. As I'm sure was true for some other teenagers, my interest in programming stemmed partly from the fantasy of creating my own computer games.

Although the project proved too ambitious for my own attention span, Intergalactic was a pretty cool 3D game. It used the Irrlicht 3D engine. It had two of my own spaceship designs and a castle floating in space (taken directly from a Quake map).

The player could fly around in third-person with mouse controls, control the throttle and shoot lasers. You could crash into the castle and explode. Enemies could be spawned - unfortunately, the most sophisticated AI I came up with was for them to fly in circles forever. The climax was being able to "lock on" to an enemy and fire a missile, which would turn towards the target to hit it.

Keywords

C++, graphics

Available?

No, but only because it's old and back then I was unaware of the concept "open source". I can send or publish the code on request.

×

Cuber

During my BSc period, I got increasingly interested in electronics and microcontrollers, and decided to learn more about it by starting another personal project.

Cuber is a 8x8x8 LED cube. The first skill I honed with this project was soldering: getting all those LEDs in place and reliably connected was hard! I went for an ambitious wiring scheme, where one microcontroller (programmed in optimized assembly) was required to rapidly control 128 shift registers and switch power to subsets of LEDs to create the illusion of continuous light. The other controller provided a UI through an LCD screen and buttons, and accepted the serial control stream from a PC.

I designed the Cuber circuit board in Eagle and etched it myself. It even had a "simulator" on PC which could consume the exact same serial control stream from a virtual serial port as the real Cuber, and showed all the LED states in an OpenGL rendering window. This allowed me to focus on creating cool animations and a 3D Snake game.

Keywords

Microcontrollers, C, ASM, Circuit Design, Board Layout

Available?

No, but only because it's old and back then I was unaware of the concept "open source". I gave the cube away, and can't even find my cool video shots of it in action - but I can send or publish the code and board design on request.

×

Brap

My girlfriend and I love to travel. We have built up a huge amount of photos and videos because of this.

My brother and I got together and cooked up a plan. We would both build a world map with built-in photo/video viewer. He would design the hardware and I would design the user interface. The project never quite got off the ground, but we still use "Brap" to view our collection from our NAS.

Brap has a HTML5+CSS+Javascript web front-end, PHP+SQLite back-end and a suite of Python scripts for database management. All that together makes for a pretty good web design learning project.

Keywords

HTML, CSS, Javascript, PHP, SQL

Available?

No, I kept this on my private BitBucket pending the time I would deem it "ready". That being said, I can send or publish the code on request.

×

Embedded Visual Control

This coursework project during my MSc program is worth mentioning, because we took it pretty far.

With three other students, we designed and built a solar-powered rover which could track and follow colored objects. Some of my personal contributions:
- The design choice to use a 360 degree bubble lens, giving the rover omni-vision.
- The effort to squeeze every drop of performance from the Raspberry Pi by implementing object segmentation for GPU in OpenGL ES, which is not at all meant to be used for computer vision.
- The deep-dive into the Pi's memory management abstraction layer to make it possible to do zero-copy streaming from the rover's GPU output over to a control station over WiFi.
- A Python simulator which we could use to develop the rover's driving behaviour.

Keywords

OpenGL ES, Computer Vision, Motor Control

Available?

The full suite: no, because it is written for a specific rover that no-one is likely to replicate. However, here are links to a few small parts like the Pygame rover movement simulator, motor driver and a condensed example of the camera to GPU memory on GitHub.

×

Halide for IPU

Halide is an emerging domain-specific language for image processing. It is seeing increasing adoption in the industry - most notably at Google and Adobe.

During my MSc thesis at Intel's Imaging and Camera Technologies Group (ICG), I extended Halide with a code generation back-end and syntax extensions for Intel's imaging DSPs, which are found in Intel IPU subsystems. In the process, I showed that high-performance code generation from Halide for such targets is feasible.

The project has been, and still is a joy to work on. Halide's relatively low complexity (compared to full-fledged back-end compilers such as LLVM) and high extensibility made for a great way to get acquainted with compiler techniques, code generation and automatic optimization. It has also opened my eyes to domain-specific languages as a solution for the problem of maintaining portable, fast code for increasingly specialized and diverse computing platforms.

The paper I authored about the topic is set to appear in ACM Transactions on Architecture and Code Optimization. Until it is published, an abridged early version can be found at the TU/e university repository.

Keywords

C++11, Halide, DSP, Imaging, Compiler

Available?

Unfortunately, no. The codebase is closed to protect Intel sensitive information.

×

Qi Wireless Charging

I spent about a year at PowerByProxi in Auckland, New Zealand, working on a new generation of Qi wireless smartphone chargers.

That involved getting previous products designed by PowerByProxi to comply to the existing Qi standard, while at the same time expanding its capabilities to include multi-phone charging and free placement.

Inventor on patents:
Foreign object detection in inductive power transfer field
System and method for power transfer

The most memorable moment in this pursuit was when I teamed up with a colleague specialized in power transfer circuitry, who had an ambitious idea for controlling AC power flowing through the inductive link. So far, the idea had only worked in circuit simulation, where all signals could be set perfectly to control the phases and amplitudes in the system. After days of pushing, on New Year's Day, we suddenly got the concept running on the real thing - just before I was set to leave for a month-long holiday.

Keywords

Power Control, ARM, C

×

Leash Debugger

During three months of internship at Mindtribe Product Engineering in San Francisco, I created Leash Debugger (GitHub). Finally, an open-source project in the list!

It is a JTAG debugger for the Texas Instruments CC3200 development board, which can be used over WiFi to debug a target remotely.

The solution is described in more detail here.

Keywords

JTAG, C, ARM, WiFi

×

Octiron

I joined the Soleus association to tinker with my own VPS, Octiron. Octiron runs a few web applications and serves as a test deployment server for my own web projects. You may be reading this codefolio on Octiron!

Octiron runs Arch Linux with microk8s Kubernetes. I have deployed a small personal DevOps pipeline on it, consisting of !!!LINK!!! Gitea for source code management and !!!LINK!!! Drone for automatic builds. It's all secured via HTTPS with a LetsEncrypt certificate.

Feel free to visit e.g. my Gitea to have a look, although you won't see much since my repositories are private; my public repositories are still on GitHub.

Keywords

Kubernetes, DevOps, Gitea, Drone

×

Digikam-Fatclient

My photo collection at home is quite large, and it is stored on a NAS device. The NAS can run a webserver, but it is excruciatingly slow. Despite this, I want the NAS to host my photos in a web application with modern features such as searching and querying for photos by date, location or album.

I also manage my photo collection using digiKam.

That is why I decided to make digiKam-fatClient. Instead of having a front-end and a back-end, it is a statically hosted web app that does all the fancy stuff in the front-end.

To do that, it downloads the photo metadata database in its entirety to RAM and accesses it there using SQL.js (a Javascript/Webassembly build of SQLite). The app can show the Digikam albums and filter photos, for example based on their geolocation.

Keywords

Front-end, React, SQLite, Javascript

×

MuDBase

Recently, Google announced that its music service Google Play Music is shutting down.

I loved this service and I am not sure what to do with my music preferences after it is gone. While I could (and probably will) move to another streaming service, I don't want to be dependent on such services for remembering what music I like. I want to be able to make back-ups.

I also would like to keep a bit more metadata about songs I like so that I can, for example, create playlists for jazz dancing more effectively.

This is where the idea for !!!LINK!!! MuDBase came from. MuDBase is going to remember my music tastes, including playlists, but with additional metadata added (such as beats per minute for jazz songs). Instead of using it to play music, it will only be for keeping track of music, providing scripts to sync it up with my music library on streaming services.

This is an early-stage WIP, but a working prototype can be found on my Gitea.

Keywords

Work- / Study-Related

A small selection of projects I have created or worked on in the work or study environment.

ScreenPoint Transpara


Full-stack development work on a medical analysis aid for breast cancer.

C++11, DICOM, Python, Dev-Ops, Docker

Halide for Intel IPU


Created a DSP compiler back-end for the emerging programming language Halide, targeted towards Intel image processing accelerators.

C++11, Halide, DSP, Imaging, Compiler

Qi Wireless Charging


Contributed to embedded software which controls inductive power transfer to smartphones.

Power Control, ARM, C

Leash Debugger


Created a JTAG microcontroller debug adapter which works over WiFi.

JTAG, C, ARM, WiFi

Embedded Visual Control


A solar-powered rover with 360 degree vision and object tracking capability.

OpenGL ES, Computer Vision, Motor Control

Personal

I am a tinkerer by nature. I have spent countless hours on hobby projects of all shapes and sizes. Here are a few examples.

Digikam-FatClient


Fast-feeling photo exploration from a dead-slow NAS device.

Front-end, React, SQLite, JavaScript

MuDBase


Making sure to never lose my favorite music.

Full-stack, React, Node.js, TypeScript

Octiron


My own VPS running microk8s Kubernetes and a simple open-source DevOps pipeline.

Kubernetes, DevOps, Gitea, Drone

Brap


Web- and Python-based management and viewing system for my personal photos and videos.

HTML, CSS, Javascript, PHP, SQL

Cuber


A 8x8x8 cube of dual-color LEDs, controlled by a custom board using two ATMega microcontrollers.

Microcontrollers, C, ASM, Circuit Design, Board Layout

BBStudio


A simple physics engine with spheres as the only kind of object.

C++, graphics, physics, UI

Intergalactic


A 3D space shooter game.

C++, graphics