Idea: using a helpdesk app as an Applicant Tracking System (ATS)

I recently found myself in the position of having to hire a new colleague for the first time in a long while. This means, I get lots of emails with attached PDFs from people I’ve never heard of, I have to filter out the good ones, invite those and send a thank-you-email to all the other ones. I then evaluate the candidates after their first conversation, maybe invite them for a second interview. A classical funnel workflow. Surely this can be automated and optimised, I told myself (as I caught myself adding colours to Outlook mails in my ‘Applicants’ folder, in order not to forget who I invited and/or answered.)

Continue reading Idea: using a helpdesk app as an Applicant Tracking System (ATS)

Idea: short-term unified group messaging enterprise

I was driving for 6 hours the other day and my wife was asleep, so what does one do: work out the details for a new kind of hosted communication service in my head.

If you are a user of AirBNB, you might have noticed that when you get messages from your hosts in the app, you also get an SMS/text with (the first 140 chars) of the message. The number you get it from, is not the phone number of the host. In my case it was more often a US number. So I started thinking: how does this work? Obviously this is not a phone number per customer, since that would be impossible/unaffordable. If they use N phone numbers to send these messages, when someone replies, how do they know who to forward the message to? It’s not rocket science.

A typical user has one ‘current’ transaction with AirBNB (i.e. ‘where do I sleep tonight?’). If that user (whose phone number we know) sends a message, we know it is concerning that transaction. In the worst case the person stays in a different AirBNB place every night, and you want the group chat to be available 2 weeks before until 1 week after the transaction. That can be managed with 21 different phone numbers. For the hosts that manage several apartments or rooms, they might have up to 100 group chats that are active at the same time. Still, 100 different phone numbers, that’s still doable.

So then I thought, what if you would have a service that allows any company to do this? They want to set up a temporary group chat with different channels (their own app, email, SMS, WhatsApp, Messenger, …) but not manage the details. So that idea crystallised into a short-term unified group messaging enterprise – STUGME.

Continue reading Idea: short-term unified group messaging enterprise

Idea: Extended MRTG format

Every tech geek has his/her preferred tools and one of mine is without doubt Tobi Oetiker’s MRTG (Multi Router Traffic Grapher), which I’ve used to make pretty trend lines of much more than routers or traffic.

MRTG is a Perl program that grabs some measurement values (typically via SNMP) and plots them as time series. It creates ‘daily’, ‘weekly’, ‘monthly’ and ‘yearly’ graphs and the HTML page that shows the graphs and some min/max/average statistics to accompany the graphs. You’ve probably seen the typical MRTG output images before:

Example of MRTG

But MRTG can do more than just SNMP. In fact MRTG can plot any trend, as long as it gets its input in the form of 4 text lines:

[I value]
[O Value]
[server name]

The I value becomes the green bar graph, the O value becomes the blue line, and the rest is only used to generate the following line in the generated HTML pages:

The statistics were last updated Tuesday, 13 October 2015 at 10:40, at which time ‘[server name]’ had been up for [uptime].

Continue reading Idea: Extended MRTG format

Getting rid of “Google Play Services has stopped” on OnePlus

One week after complete reinstallation of my OnePlus I started getting one “Unfortunately, Google Play Services has stopped” error message after the other. I tried a lot of solutions proposed online (“clear the app cache”/Goto Privacy guard/…) but none worked. Until I found this one from ‘ianyeo’:

Continue reading Getting rid of “Google Play Services has stopped” on OnePlus

Reset your OnePlus One to factory settings

About half a year ago I switched from an iPhone to an Android smartphone: the OnePlus One. In the beginning it was splendid and super fast and everything. But recently it has become flaky. I suspect the apps ‘Swiftkey’ and ‘Atooma’ have something to do with it. Swiftkey seemed to drain the battery really fast (5hrs of battery life max – charging requyired 3 or more times a day), and when I started testing Atooma instead of Tasker (for automation), a lot of programs started crashing, including the essential ‘Messages’ and ‘Dialer’ applications. Even after uninstalling a bunch of other applications, I still couldn’t pick up phone calls half of the time. And I got the error message ‘Unfortunately, Google Play Services has stopped‘ once every 10 to 30 minutes. So I decided, I need to reinstall Android on my phone!

Continue reading Reset your OnePlus One to factory settings

Wifi in my car: proof of concept

Some drivers love fancy chrome wheel rims, some add a huge wing spoiler on their car, or fuzzy dice hanging from their rear-view mirror. Me, when I bought my new car, I decided that I wanted a Wifi network in my car. So that any passenger with a laptop/iPod could read his email. And I imagined driving to distant holiday locations while my passenger where watching movies streamed from a NAS disk built into the car.

This weekend I finished episode one: Internet in the car. I used the following components:

The important details here are:

  • The Huawei stick is compatible with the TP-Link router.
  • The Huawei stick can be configured with ‘Save my PIN’, so that when it starts up, it connects to the 3G network without any manual intervention.
  • The TP-Link router runs on 12V DC (which is what a car has)

For the rest, the exercise was quite straight-forward: I configured the Huawei stick on my laptop with the right PIN code, popped it in myTP-Link router, configured the right 3G settings for Telenet (see here). Then I took an old 12V power transformer, chopped off the connector and linked it up to an old car cigarette lighter type of plug (sometimes it’s good to have an archive of obsolete cables and power supplies). I then hid the router under the base plate of my trunk, where there is also the battery (the BMW X1 stores the battery in the back, where you would normally have the spare tyre). I switch on the car and 20 seconds later, I have a Wifi network “OnTheRoadAgain” that is connected to the Internet. Proof of concept is OK!

The next step now is to add a (Synology) NAS, which also runs on 12V, and hook up my iPad to the car Wifi to view my collection of backed-up DVDs from that disk. And maybe run some extra programs (e.g. MRTG for monitoring) on that NAS. To be continued!

Convert Black/White footage to thermographic-like video

I am doing some really cool research lately concerning video conversion and one of the issues I ran into concerns infrared imaging. In short: all the ‘cool’ thermographic (colour is dependent on radiated temperature) images are in color, and the images you get from cheap IR cameras is black and white. How do you convert the B/W into colour?

First of all: we’re talking about two different imaging technologies: the ‘real’ thermographic cameras measure only infra-red (not visible) light, are very precise, expensive and are created by companies like FLIR. They make the cameras that you might have seen in CSI.

On the other hand, you have the cheaper webcam/IP-cam devices that have ‘night-vision’. This means that, in addition to all visible light, the cameras are also sensitive to a part of the IR spectrum, and with some additional IR-lighting, one is capable of seeing in very dark places. They produce B/W images or colour, but then sometimes they show green grass as a bit purple/pink.

What I was trying to do is convert a ‘cheap’ B/W video into the coloured thermographic equivalent, but without expecting that e.g. orange will always mean 38°-39°. Since we start from a mixed visible/IR light video, brightness does not correlate perfectly with temperature. Still, the end result might be easier to interpret.

So this is my source material: a Foscam FI8918W video from Youtube: two cats playing in a kitchen.

I find some inspiration from a guy who did something similar with ImageMagick. The dark/cold areas are supposed to be black/blue, the medium areas more green, then going to yellow, orange, red and white. This seems like a job for the FFMPEG video filter.

I use the ‘curves’ filter and try first with really strong contrast colours:

The color scheme is kind of OK, but we lose a lot of detail (the cats become hard to distinguish). So then I try a more gradual approach:

And this is rather OK. I like it. The cats come out nice.

For the record: the curves used are approximately this:

curves=r='0.4/0 0.6/1':g='.25/1 .75/.5 .9/0 1/1':b='0/1 .25/0 .75/0 1/1'

All scripts and parameters are on my GitHub account:


Status page for telecom/internet providers

My mobile provider Telenet had a partial outage today. Sometimes calls would go though, sometimes not. Same things with SMS and 3G. I wanted to check if there was a page I could check to see if it was just for me, just for that location on globally in Belgium. You know, a proper status page like Google and Apple have. Or in Belgium, like Combell. It appears Telenet has one, but it’s for the Internet division. They also have a Twitter account that is well followed up. How does this compare to the other providers? Here is an overview of who offers what:

Mobile Telephony/Data

Belgacom Proximus


Telenet (on Mobistar network)

Base (part of KPN)

Mobile Vikings (on Base network)

Broadband Internet



Scarlet (part of Belgacom)

Kudos to

Idea: LL and RR glasses on a 3D screen – Double Vision

(I had this idea in June 2011 and wrote this post in Oct 2011, but I decided to wait with publishing until my lovely colleague Sylvia could get the scoop and use it for a marketing action).

3D display lets you experience 3D images by letting your left eye see something different than your right eye (‘stereoscopy’). Most technologies for this (certainly the ones used in cinema) use special glasses. Active/passive, based on colours, polarisation, timing… It’s fascinating, but that’s not what I want to address here. What intrigues me, are less common usages: what if instead showing something different to eye1 (left) and eye2 (right), you show something different to person1 and person2?

Continue reading Idea: LL and RR glasses on a 3D screen – Double Vision

Cleaning up an infected PHP server (Mal/Badsrc-M – Troj/PHPShll-B)

I recently discovered that a number of sites of mine were considered unsafe by Google, Firefox, Yandex … The reason was they had detected malware being served to visitors of the site. I checked a bit further and I discovered it was the Mal/Badsrc-M – Troj/PHPShll-B trojan. In each of my (WordPress and other) PHP files, the first line had been changed to

<?php /* */ eval(base64_decode("...(bad stuff)"));?><?php ...
The file is easy to clean up: you remove the eval statement and that’s it. Only, on this server several hundreds of PHP files (WordPress, MediaWiki, …) were affected. So I made a script to go through all of them and clean up. It uses the fact that

  • the whole injected statement is on 1 line
  • no ‘decent’, trustworthy program uses eval(base64_decode(" ... ")) in its PHP code
  • it moves the second <?php to the second line and then removes the whole first line

So if you have the same problem, use a bash script like this and run it in the root of all your websites: