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.

Effe SMS'en

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

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]
[uptime]
[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 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’:

Seems like lots of users getting this annoying pop up. Here is the fix. No data will be lost.
1. Go to “Settings”
2. Select “Apps”
3. Swipe left until you in the ‘All’ column
4. Click on the 3 dots in top right
5. Select “Reset app preferences”
6. Reboot OnePlus
7. Reselect preferred launcher
8. Thank me
9. Done! Enjoy!

via https://forums.oneplus.net/

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: https://github.com/pforret/pfor_ffmpeg/tree/master/thermography

 

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

Mobistar

Telenet (on Mobistar network)

Base (part of KPN)

Mobile Vikings (on Base network)

Broadband Internet

Belgacom

Telenet

Scarlet (part of Belgacom)

Kudos to http://www.ionasj.com/welk-netwerk-voorziet-de-beste-dekking/

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:

iOS6 losing its 3G cellular data settings – fix for Belgium

I upgraded my iPhone 4S to the new iOS6 the day it came out. As I expected, I had to reconfigure the cellular data settings (‘APN’). For some reason they always get lost during major OS updates. However, I have noticed the last weeks that, every now and then, my 3G connection stops working, and when I check the APN settings, they have disappeared. My colleagues, with iPhones and iPads on different cellular operators also have this problem. So for them, for me, and for anyone else who has this problem: here are the settings for the Belgian operators.

PROXIMUS/BELGACOM
APN: internet.proximus.be
Username: (empty)
Password: (empty)
MOBISTAR
APN: APN: iphone.mobistar
Username: (empty)
Password: (empty)
BASE
APN: gprs.base.be
Username: base
Password: base
MobileVikings
APN: web.be
Username: web
Password: web
Telenet
APN: telenetwap.be
Username: (empty)
Password: (empty)
Scarlet
APN: internet.bmbpartner.be
Username: (empty)
Password: (empty)

These are the most common ones.

The procedure is: goto General/Cellular/Cellular Data Network, verify they are all empty, fill in the correct values, leave the Cellular menu, switch your phone to “Airplane Mode” for 10 seconds, and then switch that back off. You should see the 3G logo appear again.

Emoticon for innuendo: &-)

Do you often find yourself in a situation where you are using some kind of word play in a written (chat or text message) conversation, but feel that you need to make this second level of comprehension clear? This is why emoticons exist: pictorial representations of a facial expression using punctuation marks and letters, written to express a person’s mood. Emoticons were already used in the 18th century and adopted with mucho gusto in electronic communication since 1982. These days, if you don’t know that a “:-)” means that the writer is happy, you’re missing a lot of the meaning of SMS or emails.

It doesn’t stop there, there is also the :-p tongue-sticking-out, the %-) I’m-so-drunk and even *<|:-) Santa Claus. But there is one often-used ironical level that I find is not well covered by the ;-) I’m-only-joking emoticon, and that is the dangerous stylistical weapon called innuendoan indirect remark about somebody or something, usually suggesting something bad, mean or rude. We need an emoticon that says if-you-know-what-I-mean-wink-wink-nudge-nudge in 3 characters. I hereby propose the …

&-)   = if-you-know-what-I-mean

  • “My parents are coming over tomorrow and I still have to dust off the silverware &-)” = have to clean up dishes for the last 2 weeks and remove all clothes from the living room
  • “Can’t talk right now, my girlfriend is here and we’re studying &-)” = no actual studying is done
  • “Is your wife a goer? &-)” = say no more

What could be a proper response to a &-) ? Depending the recipient’s sense of humor:

  • &-D oh-I-*know*-what-you-mean
  • &-O OMG-you-didn’t-just-say-that-did-you
  • &-? not-really-sure-what-you-mean
  • &-/ I-get-it-but-am-not-that-amused
  • &-( this-is-totally-inappropriate-and-I-am-disappointed-in-you

I think there is also one variation necessary for the most versatile joke on earth: that’s what she said! This is expressed with &-)! – as in “make sure it’s long enough” > “&-)!

And to end, I leave you with this: Uncyclopedia’s definition for sexual innuendo. Just don’t read it aloud in the office.

TL;DR:

  • &-) if-you-know-what-I-mean
  • &-D oh-I-know-what-you-mean
  • &-)! that’s-what-she-said!!