Tag Archives: DIY

Holiday Project: Philips Hue Goes System Tray

Every year around Christmas I start a little DIY project, that most of the time involves some programming and some real hardware (e.g., TI chronos: My watch controls my bedroom lights). With most light bulbs in my apartment being Philips Hue light bulbs, I decided I wanted to be able to control them from my PC. So this Christmas I created “Hue System Tray”, a tiny program that lives in the system tray and lets me check the status of my hue lights as well as control them.

Hue System TrayInstead of using Java, which I’ve used for most of my GUI programs (e.g., jdotxt), I did this little project in C++ using Qt. The only down-side is that Philips does not offer a C++ SDK. To keep things simple I decided not to implement a full-blown SDK myself. At this point in time the program basically makes hard-coded RESTful API calls to the Hue bridge directly. It would of course be much nicer if the list of rooms would be populated automatically from the list of rooms stored on the bridge and if all API calls were derived automatically. But hey, holiday time is limited ;)

This was my first encounter with Qt and a rather pleasant one I have to say. The signals and slots mechanism is rather intuitive, it features a nice collection of libraries (e.g., for networking or for parsing JSON), the documentation is good and the learning curve is not too steep. Actually I found programming Java for Android apps more difficult. Also deploying my program to another machine was not too difficult, once I had figured out which dlls to carry over.

I will probably have to do some more C++ coding at work in the near future, so I hope that dusting off my C++ skills and Qt will come in handy.

j d o t x t

jdotxt is an open source, cross-platform Desktop tool for managing your todo list. It’s geared towards Gina Trapani’s todo.txt file format and stores all of your stuff in two human readable text files. Having these files on your owncloud, dropbox or any other cloud storage makes it easy as pie to keep your todos in sync across multiple devices.

Download and Installation

  • Windows (Installer)

    Download installer. When you launch jdotxt, you may be asked to download and install Java, which you should do in that case.

  • Mac OS X

    1. Make sure you have Java JRE >= 7 installed. E.g., by downloading and installing it from http://www.java.com
    2. As always: download, mount, drag&drop this file
  • Ubuntu >= 12.10 (Repository)

    Open a terminal and execute the following three commands (line by line):

    sudo add-apt-repository ppa:chms/jdotxt
    sudo apt-get update
    sudo apt-get install jdotxt
  • Ubuntu 12.04 LTS

    First you must get JRE >= 7 by executing the following two commands (line by line):

    sudo apt-get install openjdk-7-jre
    sudo update-alternatives --config java

    After executing the second line you will be asked, which version of Java you would like to use by default. Select the one that has version number 7 or higher in its path name.

    Now continue with the instructions for Ubuntu >= 12.10 (see above)

  • Debian GNU/Linux

    Download and install the jdotxt Debian file. Of course this works on Ubuntu too, but it is highly recommended to use the repository, for automatic updates.

  • Generic (Works on Windows, GNU/Linux and Mac OS X)

    Download the jar file and execute it using Java JRE >= 7 (http://www.java.com)

Mastering jdotxt in 110 Seconds

Get Involved!

You are more than welcome to drop me a line via one of the online platforms I use, or to contribute by reporting bug reports or feature requests via github. The source code is also hosted on github.com so feel free to contribute!


Christian M. Schmid
Mikhail Kalkov


jdotxt is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Pebble ArcS+, a “Pebble, Hello World!”

I own a Pebble Steel for quite some time now, and I still love it. Good battery life and not too many, but useful features. It was a no-brainer that I joined their latest record-breaking kickstarter campaign for the new Pebble time as an early bird.

At the same time I had to do something that I do with almost any piece of hardware that I own and that lets me do it: Write some code for it! Sometimes it’s just the mandatory hello world, but this time it’s a watchface for the Pebble:

IMG_20150301_125316796_HDRI was amazed by how little time it took me to write (or should I say copy and paste) the code. I’ve uploaded the watchface to the Pebble app store so that it can be installed by everybody who owns a Pebble and the source code can be found on github. Please let me know what you think of it and keep the hacker spirit high by writing code for every piece of hardware that you own!


I am from Europe

“I am from Europe” is a phrase that I’ve found myself using quite frequently lately. I don’t just use it because Europe is much easier to explain than ___________ (fill in any European country you can think of), but because Europe is more than that.

I mean of course the statement is true from a geographical perspective, but then again it is more than that. Europe for me is the notion that there is this geographically large region that is so diverse in terms of culture and lifestyle but that still shares a set of unwritten core values, that every one of us can relate to and rely on.

I am aware of the stereotypes that all of use have. Germans are overly correct, the British can’t cook, Polish people are ueber-Catholic, Greeks are lazy and Spanish men are macho men on siesta. However if you dig deeper, if you are willing to immerse yourself in one or more of the “other” European cultures, you will find that there are more things that we have in common than those that separate us. – I mean except for the French, who I never really liked or understood. But then again, they enrich our union as much as you and I do.

Sometimes I am wondering what Europe must look like from the outside. Probably like someone suffering from Schizophrenia. Someone with so many voices inside and no clear, single voice to the outside. But that is alright, because when it comes to the important issues, everybody can and should rely on our common understanding. We do believe in human rights, in social welfare for those who need it and in an economic system that encourages everybody to thrive based on his or her personal talents but one that should leave nobody behind.

From the inside it is probably a little bit like marriage. – There are good times and bad times, and things are far from perfect. Every now and then we are put on trial, and at the same time we often don’t appreciate what we have because of the union. But even if one party has to give in and do something that might hurt, we are better off as a union.

At the end of the day it comes down to this: I am in awe of what Europe is and more than that of what it can become: A super-powered peace-keeping instrument and a diverse, flourishing system with shared values and the inherent ability to see challenges from multiple perspectives. It’s now on us to act and voice our vision for Europe, so don’t miss the elections http://www.elections2014.eu/

Planned Obsolescence

A while ago I learned about something called planned obsolescence. Today I found another example of it.

I can’t fight my genetics: my dad is bald, my dad’s dad was bald, my mom’s dad was bold – you get the idea. The only logical thing (at least for me) is to trim the little I have left regularly, for which I bought a Philips QC5055 about three years ago.

The clipper seems well built, no doubt. But I do see now where they have made design choices that I would classify as planned obsolescence.

  1. The battery is not replaceable and it does barely last for one cut after three years. – I always need a wall outlet nearby.
  2. The plastic combs that you need to adjust the hair length break easily. It’s not that I have handled the clipper super carefully, but they should at least provide replacements for those fragile parts. – Which they did, but are listed as out of stock in all web shops I could find. They even explicitly exclude the combs from their warranty in newer products.

In the interest of prolonging the life of my hair clipper, I have already fixed the comb with the help of superglue twice. Meet my new best friend (aka superglue):

What I take from this:

  1. Always look for products that have replaceable batters, even better if they are AAs or some other standard form factor. (E.g., keep your hands of those electronic devices that have the battery per-installed and are sealed like vaults. And yes that does include your iThings)
  2. Always have some superglue and some scotch tape around. They might come in handy, save you some money and give you the sensation of empowerment which you may find in fixing the things around you!
  3. Try fixing things, even if you risk breaking them entirely (which I did with a Samsung Galaxy S3 Mini 2 weeks ago, while trying to replace its display).

The Making of me.chschmid.com, Part 2: The Hardware

I recently blogged about why it makes sense to run your own server. Although I have a machine running at me.chschmid.com already, I decided to do a serious hardware upgrade.

serverNot because the old AMD E-350 CPU can’t keep up anymore, but because I’d like to use the new machine as my desktop PC as well. So here’s what I ordered (some parts of it are actually not new, but carry over from my old setup)

For all I know this system will be hopelessly over-powered, yet power-efficient, so that it can run 24/7. The parts are probably going to arrive by the end of the week. I’ll keep you posted about the assembly and everything else that’s going to happen.

The Making of me.chschmid.com, Part 1: The Problem

Privacy is a hot topic these days and part of virtually every coffee break discussion I know of. How much do they know? The Googles, Facebooks, Dropboxes, Wunderlists and above all the NSA.
Actually a lot of people who have no idea about the technology side of things have started asking me these questions lately. I can see that their not knowing about the hidden magic in the background that enables the services they use on a daily basis makes them feel really uneasy. The truth is, its simple.



First of all there is communication between computers, which, on a technical level, is the only thing the web itself allows us to do. When you ask google for search results, when you push your files to dropbox, when you have that Skype call with your mom – it’s all communication and exchange of information between two computers over the web.

Let’s take that Skype call for instance and lets picture the web as a city with you in your house (as a stand in for your computer) and the streets that connect all the houses as data highways. Lets also say there is one guy in every street who controls the street. What happens when you want to send a message to your mom is you tell the guy in your street (your provider) to dispatch the message – it’s wrapped in a nice envelope with your address and the destination on it so that he knows where it has to go. He will then walk to the next street, pass on your massage to the person controlling that street and this guy will do the same until the message arrives at your mom’s place.

There are two problems associated with this in terms of privacy

  1. Everyone who is part of the delivery chain might have opened the envelope and might have looked at message.
  2. Even if they have not read your message, they know that there was communication going on between you and your mom and they will also know how much data was exchanged.

Problem 1 can be solved by encrypting the message so that it does not make sense to anyone who might read it on its way. – There are still some issues here when it comes to technical implementations, but essentially, if you do it right, you can make your messages close to unreadable to the outsider. – This by the way is common practice in a lot of applications, which is good. E.g. always look for websites that come via “https” instead of “http”. The “s” really makes the difference!

Problem 2 is a little bit harder but still solvable. Say you transmit a secret message to your mom asking her to pass another message to someone else. If anyone wants to track your message to the final destination it will become really difficult as not knowing about the message to your mom asking her to dispatch something for you will make it unclear if any outgoing message from your moms was from you or from her or from anyone else. The more people you put between you and your final destination the harder it will be to track your messages. Essentially this is the idea that the Tor network is based on, however it is not widely used and not common practice.


The second aspect apart from communication is data. You do not only exchange information when storing your files on Dropbox, but you ask them to hold on to that data for you as you ask Google to store your e-mails and Wunderlist to store your todos. They might even store data that you do not ask them to store, like your seach history. The problem here is that those companies sometimes leak data (e.g., PlayStation Network outage) and sometimes share your data with other organizations such as the NSA.

To use the analogy with the city and the streets: If there is someone at your mom’s place or at Dropbox’s place who watches over their shoulder while they decrypt your message, your data will be available to them, even when the data transmission through the streets of your city was safe due to encryption.

If all you want to do is storing your data at someone else’s place you can give it to them in an encrypted way. E.g. only store encrypted zip files on dropbox. Or you can opt out and don’t give any data to them in the first place.

Obviously this does not work for your search terms, that Google has to know about in order to give you results.

The Solution

There is not one size fits it all solution, but on central aspect is to be aware of what data you share online and how others may be able to use it. The analogy with the city and the streets will give you a pretty good idea of who can access what. I don’t think sharing stuff is bad per se, you just have to know about the implications. To give you some examples.

  • Stuff that you put on a website, e.g., your blog, can be seen by absolutely everyone.
  • Stuff that you post to social networks may not be seen by anyone who happens to stand between you and the computers of that social network, but by whoever you allow it to see, by the social network itself and by anyone who they share this information with – willingly or by accident.
  • Even when you are just looking at stuff online you let others know about what you are looking at. This means amazon will learn about what you like simply from you browsing their website. – But to be honest: the employees at your local grocery store also know what you buy on a daily basis.

To be better off in terms of communication

  • Look for encryption so that at least your communication is secure. E.g., look for https instead of http, configurate your e-mail client so that it uses encrypted instead of unencrypted mail transfer.
  • Don’t use things such as FTP to transfer files.
  • and  finally:

Use Your Own Cloud Storage

About 1.5 years ago I set up my own Ubuntu GNU/Linux server, that hosts all my git repositories, files (webdav), calendars (caldav) and contact data (carddav) via owncloud and many other services that I use. The Server is currently running on an AMD E-350 APU, which is soon to be replaced by something better. And that’s the reason why this is just part 1. I’ll post information about my new server setup in the next couple of days, so stay tuned!

Geeking Out Again

I just can’t help myself: I have to geek out from time to time. And no, by geeking out I don’t mean reading comics or watching Star Wars. I mean BUILDING SOMETHING that is related to technology and, well, that is utterly useless most of the time ;) Here’s a video I made about my newest projects: pilight and pimorse.

pilight and pimorse let me control the lights in my apartment + they let you and everybody else in the world send out their personal messages in Morse code via the lights in my apartment!

Technically pilight and pimorse are centered around a Raspberry PI, which is connected to an 868-MHz radio via SPI and to my local network + the Internet. The 868 MHz signals control the three dimmer switches in my apartment. But enough of the tech talk, let’s send some stuff out into the world at http://pimorse.chschmid.com.