DIY: my bamboo USB SSD disk bay

This is the story of how I made my own pretty bamboo USB SSD disk expansion support for my laptop, hereby possibly inventing the gadget category “disk expansion laptop coaster

2017 Peter Forret

As a photographer, I need a lot of storage space. As a travelling photographer, I also need it on my laptop. My current 13″ MacBook Pro is plenty fast, but it only has a 512GB SSD drive. I quickly found out that is way too small. So I bought an external SSD disk. The Samsung Portable 500GB version is affordable and it’s almost as fast as the internal drive. But it’s only 500GB. So I bought a second and a third. Now, travelling with 3 USB disks and a USB hub (since my MBP only has 2 USB ports, and I need one for reading CompactFlash cards) is quite a hassle. There’s cables everywhere, you’re always afraid you’ll drop one, or forget one. So I decided to kind of tape them together.

2017 Peter Forret

After travelling for months with this beta version (made out of a plastic table cover and lots of tape), I decided to make a real one, a version 1.0. Here’s what happened:

Continue reading DIY: my bamboo USB SSD disk bay

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

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

Idea: 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

Continue reading Idea: Emoticon for innuendo: &-)

Idea: Experimenting with movie hashing/fingerprinting

Neal Krawetz wrote an interesting article on image fingerprinting, or how to search for images that are similar. He proposes an algorithm to do image fingerprinting and reproduce the functionality of TinEye, a service that allows to give one image and get back all the web pages where that picture, or a slightly modified version of it, is included. By resizing the image to 8×8 pixels, creating a B/W version, and then a binary (only black or white pixels, no grey levels), he reduces a picture to a hash that is 8 x 8 = 64 bits. This can then be compared to a database of hashes of millions of other pictures found on the web (by calculating the “Hamming distance” – read the article for details).
On the other hand, something similar can be done on segments of audio. Youtube has been doing it for years (using technology from Audible Magic) and recently the Echo Next has released Echo Print, a music fingerprint and identification service that does the same thing for free.

Since I work (and play) a lot with video, I was thinking about how to extend the ideas Neal proposes to video. Video material consists of audio (which I will ignore for now) and a sequence of images (typically between 24 and 30 per second). I’ve taken a video clip from Youtube as inspiration, but I won’t tell you yet which one, let’s discover it while I create the fingerprint of 1 of the frames, using the method described by Neal:

first we reduce the frame to a small format, e.g. 16×8 pixels
then we desaturate: make the picture grayscale
then we normalize it: we maximize the contrast, the darkest pixel become the new black, the lightest becomes the new white
we calculate the average darkness and any pixel that is darker we make black, and the others become white -this is what is proposed in the article. Total size of fingerprint: 16 pix * 8 pix * 1 bit = 96 bits = 16 bytes
I found the details in the above fingerprint too coarse, so I used 4 color levels instead of 2. Total size of fingerprint = 16 pix * 8 pix * 2 bits = 32 bytes

Continue reading Idea: Experimenting with movie hashing/fingerprinting

Idea: email as a platform

146354021_1c0f548dfe_m[1]Something has been bothering me for a while. I have a colleague that needs to post some files on a site every week, and she needs to do it via FTP. FTP is ‘geeky’ for most people. Their PC does not come with an FTP program installed, they never need it for daily web usage and they’re not sure how it is different from email/web upload. I ended up installing Filezilla for her and she manages, but it would be so much easier if I could tell her: just email it to and it will arrive on that FTP server. Sending email, everyone can do.

Another issue I had is that I would like to offer a service (that involves audio manipulation of WAV files) and I would like people to send an email with the file attached and I send back the result. In both cases, the problem is the same: email now arrives in a mailbox and is expected to be handled manually. I would like a platform service: I pay for the usage of an email address, and every mail that arrives there triggers a number of actions that are automatic.

Not just a service, a platform

Of course I’m not the first one to think of this. Flickr allows for posting pictures via email (I use that a lot), you can send your blog posts via email with Tumblr, Posterous and even WordPress. Customer support services allow auto-responding on incoming emails with suggestions for resolutions. It’s just that all these services are specific to the provider. To do it, you have either poll for incoming email (check your POP3 box every N minutes) or build/configure an SMTP server that handles incoming email. If you’ve ever encountered the black magic involved in configuring a sendmail/postfix/qmail server, you know that’s not for everyone. Me as a web developer/hacker, I want to configure: mails sent to are posted to my web page with the email body, sender, attachments (as URL), or published via a private RSS feed, and that’s how I get them into my workflow.

The funny thing is that a much more limited communication method, SMS/texting, has these platforms. There’s Twilio, Fortumo, Tropo, that allow you to receive text messages and make them trigger things. The US providers even allow for setting up automated IVR (Interactive Voice Response – a.k.a. “Press 1 for …”) application through these services.

So, the idea

So what could this platform look like?

  • I register for the service and I get the prefix ACME
  • I then start defining my services:,,
  • I configure acme.upload to save attachments to an FTP server and send a confirmation email.
  • I configure to send a confirmation email with a unique number and forward the email with this unique number in the subject. Also, I get an SMS.
  • I configure acme.register to take .XLS files, convert them to TEXT and post them to a web service I have created. I also get the sent emails in an RSS feed.
  • I now create my ‘public’ addresses: / / and forward these to the email addresses I created above.
  • I get daily/weekly reporting, spam detection, and unlimited scaling.

Do anything like this exist?

Idea: hosted classification service

Yesterday evening I was watching “How to replace yourself with very small shell script” by Hilary Mason.

In short: she uses some scripts to process incoming mail and send outgoing reminders. The part that really interested me is the one where she uses classification, probably naive Bayes, to extract topics from the tweets of her friends.

That made me think about Paul Graham’s famous spam essay (2002), which boosted the development of Bayesian spam filters for email. A Bayesian spam filter will, in very broad terms, analyze the words in a message, compare them to words typically used in a ‘spam’ or ‘ham’ collection, and come back with either a binary classification (spam/ham) or a spamminess score. The first time I read that article must have been back in 2003 or 2004. I recall installing one of the early versions of POPFile, a spam filter written in Perl. It worked as a POP3 proxy and did a pretty good job. POP3 made sense, because at that time, the only spam we had was email spam. Now there’s blog spam, comment spam, trackback spam, Twitter spam …

But these are the cloud days, right? If you think about it, Akismet (WordPress) and Mollom (Drupal) offer cloud-based spam filtering. Before them, Postini (now part of Google) offered hosted spam filtering services for email. But would it be possible to offer a very generic web service-like document classification service? Imagine the service

  • you register and get your own subdomain at
  • you choose whether your service will return one of a number of classes (ham/spam or urgent/normal/ignore …) or a numerical score.
  • you choose a tokenizer: defines what words will be extracted from your input: e.g. you can ignore, include or reformat email headers, you can ignore or transform HTML code, …
  • you create a corpus per category, the service will tell you if you have enough input
  • you call the service with an HTTP POST with an API key and the new document content to be classified, and you get back (in JSON/XML) the result

Sounds like something Google would offer? Well, they do, in some way: Now if someone would develop a nice and easy interface around it …

Idea: preview service for URL shorteners

I was using my iPhone to read my Twitter feed (Twitterrific) and Facebook and when comparing the two, I liked one thing about Facebook that Twitter/Twitterific does not have: when some one posts a URL, you get a preview icon and a short text. This way you can have a rough idea of what the link is about, and whether or not you’re interested to click it. In Twitter it is even worse, since the service uses URL shorteners (bitly, …) so that you don’t even have the original URL to guess what the link is about, like e.g.… => it’s a video!

So imagine that there is a service that accepts a URL as input and comes back with

  • a destination URL (the actual URL you end up on)
  • a summary text (short text) about this page
  • a preview (small image) of this page

So for a YouTube video, it comes back with a video screenshot and the video comments, for a blog post that includes a video/image, it comes back with a thumbnail for that and the start of the blog post text.

Most importantly, for shortened URLs, it comes back with a preview of the ‘real’, original URL.

A Twitter client like Twitterific, Tweetie, Tweetdeck, … could use this service every time it encounters a (shortened) URL in a tweet, and add the thumbnail next to it, and maybe the summary text as a mouse-over window.

Coming up with the metadata

Creating a summary text: either based on the web page itself, the META description, if it’s a blog, the first X words of the RSS item in its feed that points to this page.

Creating a preview thumbnail: for YouTube, DailyMotion, Vimeo: a video screenshot, for Flickr, Picasaweb: an image thumbnail, for Wikipedia: an image that is used in the article or just the Wikipedia favicon, for a corporate site: the web site thumbnail as created by e.g. thumbalizr.

Extend it with even more metadata

This might be an interesting service to run for Google: they could add some indicator of importance or trustworthiness (Pagerank, incoming links), or warn for shady URLs.