commit 0e8ee6debbd0bc6cee932dd25d31cc3e25645f3a Author: Sander Vocke Date: Fri Aug 21 21:20:14 2020 +0200 Initial version. diff --git a/README.md b/README.md new file mode 100644 index 0000000..fd95f4d --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# Codefolio +A minimal one-page HTML portfolio. + +# Inlining +Can be done with "inliner": + + npm install -g inliner + inliner portfolio.html + +External dependencies: +W3.css (https://www.w3schools.com/w3css/4/w3.css) +W3.css "black" theme (https://www.w3schools.com/lib/w3-theme-black.css) diff --git a/img/BBStudio-anim.gif b/img/BBStudio-anim.gif new file mode 100644 index 0000000..bbd9e5c Binary files /dev/null and b/img/BBStudio-anim.gif differ diff --git a/img/Cuber-anim.gif b/img/Cuber-anim.gif new file mode 100644 index 0000000..5ddfc74 Binary files /dev/null and b/img/Cuber-anim.gif differ diff --git a/img/bbstudio_1.jpg b/img/bbstudio_1.jpg new file mode 100644 index 0000000..6a7ba8b Binary files /dev/null and b/img/bbstudio_1.jpg differ diff --git a/img/brap_1.jpg b/img/brap_1.jpg new file mode 100644 index 0000000..d0c1ee7 Binary files /dev/null and b/img/brap_1.jpg differ diff --git a/img/brap_2.jpg b/img/brap_2.jpg new file mode 100644 index 0000000..e8bd8d6 Binary files /dev/null and b/img/brap_2.jpg differ diff --git a/img/cuber_1.jpg b/img/cuber_1.jpg new file mode 100644 index 0000000..864c66c Binary files /dev/null and b/img/cuber_1.jpg differ diff --git a/img/digikam-fatclient.png b/img/digikam-fatclient.png new file mode 100644 index 0000000..3254734 Binary files /dev/null and b/img/digikam-fatclient.png differ diff --git a/img/evc_1.jpg b/img/evc_1.jpg new file mode 100644 index 0000000..1c3f531 Binary files /dev/null and b/img/evc_1.jpg differ diff --git a/img/halideipu_1.jpg b/img/halideipu_1.jpg new file mode 100644 index 0000000..172038b Binary files /dev/null and b/img/halideipu_1.jpg differ diff --git a/img/halideipu_2.jpg b/img/halideipu_2.jpg new file mode 100644 index 0000000..64df186 Binary files /dev/null and b/img/halideipu_2.jpg differ diff --git a/img/intergalactic_1.jpg b/img/intergalactic_1.jpg new file mode 100644 index 0000000..e33918f Binary files /dev/null and b/img/intergalactic_1.jpg differ diff --git a/img/leash_1.jpg b/img/leash_1.jpg new file mode 100644 index 0000000..7c3a360 Binary files /dev/null and b/img/leash_1.jpg differ diff --git a/img/mudbase.png b/img/mudbase.png new file mode 100644 index 0000000..1ef7dc5 Binary files /dev/null and b/img/mudbase.png differ diff --git a/img/octiron.jpg b/img/octiron.jpg new file mode 100644 index 0000000..82819d1 Binary files /dev/null and b/img/octiron.jpg differ diff --git a/img/qi_1.jpg b/img/qi_1.jpg new file mode 100644 index 0000000..3d8bb37 Binary files /dev/null and b/img/qi_1.jpg differ diff --git a/img/transpara.png b/img/transpara.png new file mode 100644 index 0000000..b01d490 Binary files /dev/null and b/img/transpara.png differ diff --git a/portfolio.html b/portfolio.html new file mode 100644 index 0000000..b96f1a0 --- /dev/null +++ b/portfolio.html @@ -0,0 +1,658 @@ + + +Sander Vocke: Codefolio + + + + + + + + +
+
+

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

+
+
+ + + + + + \ No newline at end of file