Blog Posts
Notes, write-ups, and the occasional deep dive: research from my PhD years, home automation, and side projects.
Jul 2023
Jan 2023
Jan 2022
Jul 2020
Jun 2020
May 2020
Apr 2020
Feb 2020
Oct 2019
Aug 2019
Jul 2019
Jul 2019
Feb 2019
Jan 2019
Jan 2019
Jan 2019
Dec 2018
Oct 2018
Jun 2018 Apr 2018 Oct 2017
Sep 2017
Jun 2017 May 2017 Apr 2016 Mar 2016 Feb 2016 Jan 2016 Dec 2015 Oct 2015 Sep 2015 Sep 2015 Jun 2015 Feb 2015 Feb 2015 Feb 2015 Feb 2015
Home Automation / Home Assistant setup with recommended hardware: The four-year update Overview of my current hardware for my smart home powered by Home Assistant. An update on my previous post of four years ago (!) when I had just started with home automation.
Automatically turn on tv when streaming to a Chromecast Quick Node-RED tutorial on automatically turning on a TV when streaming media.
AI for diagnosis of prostate cancer: the PANDA challenge Artificial intelligence (AI) for prostate cancer analysis is ready for clinical implementation, shows a global programming competition, the PANDA challenge.
Automatic dark mode for Home Assistant Quick tutorial on setting up an automatic dark mode for Home Assistant.
Local face recognition for Home Assistant using TensorFlow.js, Part 2: Learning to recognize faces Second post of my series on face recognition for presence detection in Home Assistant. In this post, I create a face recognition system.
Local presence detection using face recognition and TensorFlow.js for Home Assistant, Part 1: Detection Face recognition can be a cool addition to a smart home but has potential severe privacy issues. In this post, I start building on a completely local alternative to cloud-based solutions. This first part focusses on face detection.
Improve prostate cancer diagnosis: participate in the PANDA Gleason grading challenge Can you build a deep learning model that can accurately grade prostate biopsies? Participate in the PANDA challenge
The potential of AI in medicine: AI-assistance improves prostate cancer grading In a completely new study we investigated the possible benefits of an AI system for pathologists. Instead of focussing on pathologist-versus-AI, we instead look at potential pathologist-AI synergy.
Setting up Home Automation with Docker Compose: Home Assistant, Node-RED, and more Docker-compose is a convenient way to setup and configure your home automation system. In this post, I describe my setup and the configuration needed to run the containers.
Epithelium segmentation using deep learning and immunohistochemistry We developed a new deep learning method to segment epithelial tissue in digitized hematoxylin and eosin (H&E) stained prostatectomy slides using immunohistochemistry (IHC) as reference standard.
The public PESO dataset: prostate H&E whole-side images for epithelium segmentation Public dataset of prostatectomy whole-slide images for epithelium segmentation, licensed under a BY-NC-SA Creative Commons license.
Pathologist-level Gleason grading using artificial intelligence (AI) & deep learning We developed a fully automated deep learning system to grade prostate biopsies using 5759 biopsies from 1243 patients, and showed that this system achieved pathologist-level performance.
My Home Assistant Smart Home setup with hardware list Continuously updated overview overview of the tech I use in my smart home.
Node-RED based custom full-room wake-up light Using Node-RED and Home Assistant and would you like to build a custom full room wake-up light? In this post I show my setup and explain how to build a wake-up light using Node-RED.
Simple and efficient data augmentations using the Tensorfow tf.Data and Dataset API The tf.data API of Tensorflow is a great way to build a pipeline for sending data to the GPU. In this post I give a few examples of augmentations and how to implement them using this API.
Setting color temperature and brightness of IKEA Tradfri lights simultaneously with Home Assistant A small trick to set the color temperature and brightness of IKEA Tradfri lights simultaneously using Home Assistant and/or Node-RED.
Talking to my house: Building a chat bot with Home Assistant, AppDaemon and Telegram In this blog post I discuss talking (or chatting) to your home using a Telegram bot. I cover making a new Telegram bot, connecting it to Home Assistant and then building functionality using AppDaemon.
Unsupervised Cancer Detection using Deep Learning and Adversarial Autoencoders Prostate cancer is graded based on distinctive patterns in the tissue. At MIDL2018 I presented an unsupervised deep learning method, based on clustering adversarial autoencoders, to train a system to detect prostate cancer without using labeled data.
Epithelium segmentation in H&E-stained prostate tissue using deep learning Building systems to detect tumor, in this case prostate cancer, is often hard due to a lack of data. Tumor annotations made by pathologists are often coarse due to time constraints. With this project we want to automatically refine these annotations by building a system that can automatically filter out irrelevant parts of the data.
Room wake-up light: Custom room-wide wake-up light using Home Assistant In this post I will show you how to build a custom wake-up light system. The automation will be configurable (on/off, time) and has a switch to disable it on weekends.
Getting started with GANs Part 2: Colorful MNIST In this post we build upon part 1 of 'Getting started with generative adversarial networks' and work with RGB data instead of monochrome. We apply a simple technique to map MNIST images to RGB.
Getting started with generative adversarial networks (GAN) Generative Adversarial Networks (GANs) are one of the hot topics within Deep Learning right now and are applied to various tasks. In this post I'll walk you through the first steps of building your own adversarial network with Keras and MNIST.
Import/Adding Instagram posts to Jekyll To integrate Instagram posts in to my website I created a small helper script that does the importing. In this post I'll explain how it works.
Website upgrade & Jekyll blog optimizations It has been over two years since the last full update of my website itself and it was time for an upgrade!
IoTDI/IC2E 2016 Presentation: Human SLAM Last week I gave a presentation at IoTDI 2016 regarding my Human SLAM research. My presentation can be viewed online.
Blog Optimization: Replacing Font Awesome with SVG My blog is hosted using Jekyll which is a static site generator. Static sites are inherently fast, but I took some extra measures to achieve an even faster website. This is part 1 of the series: replacing Font Awesome.
Website status monitor using Jenkins Jenkins is a great tool for continuous integration and deployment. It can also be used for monitoring websites that are live. In this post I'll show you my approach using a simple shell script.
Building a Sous Vide temperature monitor (Part 1, Hardware) Part one of my custom built external water bath monitor for sous vide. Running on a Spark Core and using DS18B20 temperature sensors for measurements.
Publishing an ES6/ES2015 package to NPM How to take an ES6/ES2015 library, transpile it with Babel, and publish it to npm so it runs on ES5 systems without elaborate build tooling.
Kalman filters explained: Removing noise from RSSI signals Why RSSI signals are noisy, why that matters for indoor localization, and how a one-dimensional Kalman filter cleans them up in real time.
Lightweight Javascript library for Noise filtering using Kalman filters KalmanJS, a tiny dependency-free Kalman filter for one-dimensional signals in the browser. Built originally for an indoor localization project.
Human SLAM, Indoor localization using particle filters A particle-filter approach to indoor localization that maps a building and locates the user at the same time, using only a phone and Wi-Fi RSSI.
SLAC.js Indoor localisation using Javascript SLAC.js, a JavaScript implementation of FastSLAM for indoor localisation. Locates the user and the access points around them at the same time.
Diving in into the Model with GPy A closer look at the inner workings of GPy models, decomposing the Gaussian Process Latent Variable model parameter by parameter.
First steps with GPy A practical introduction to Gaussian processes through GPy, the Python framework maintained by the Sheffield machine learning group.
Simple WSN Simulation with Matplotlib Animations A small Python simulator for wireless sensor networks I wrote during my graduation internship, with Matplotlib animations of the result.
Hello, World! The mandatory first post of the blog. Nothing technical here, just a marker for the day the site went live in February 2015.