2 Meter, 2 Mark

In the last 3 – 4 month, I finally took the time to implement an idea that has been in my mind for years now. Admittedly, it is not a revolutionary idea, but on the one hand, I always wanted to have my own app in all app stores and on the other hand I’ve always been annoyed that there is no easy-to-use Time Tracking app. I don’t want to use a complex software to track my work, even if it’s one of the important tasks in my daily business, but it should not be in the way and keep me from my actual work. And even worse: I don’t want to use my time tracking app to track the time spend in the time tracking app itself. That would result in a deadlock and I’ll never earn money again ;-)

Motivation

In my opinion most of the time tracking apps out there are way to complex and full of features I do not need. For example:

Timers: I really do not need an accuracy down to seconds or minutes. And therefore there is no need for a timer I have to start and stop and eventually forget to start or stop. If I split up my day in hourly intervals it would be precise enough for me.

Complex creation: If I would like to quickly track my work, I don’t want to go through complex creation dialogs first. I don’t want to setup a project first, then a task and after that I can actually track my time on that task / project.

Reminder: An app should support me and I don’t want to remind myself to track the time. There’s a great chance that I forget to track my work and postpone the time tracking until I actually forget what I was doing.

NATTT

So my main idea was to create a simple and easy to use time tracking app which is also fun to use and is available on every platform, including desktop and mobile. And that is exactly what NATTT is.

NATTT only consists of two main screens:

Daily view: On the daily view you just select existing tasks or create new tasks to track your work for this specific day. The most used tasks are always on top and if you select a task, it will add one or more hours of it to the day. On task creation you can also define a project this task is assigned to. The project can be used in the calendar view to filter your trackings.

Calendar view: The calendar view is an overview of your monthly work. You see at a glance which days you have worked for 100% or less. You can also filter based on your projects and of course export this data to use it for invoicing or other reports.

Another Developer Week conference is over and like the year before it was a fantastic experience as a speaker and as a participant. It is always fun to talk about frontend stuff with all the CSS haters out there ;-)

Here’s how to use Alexa to securely control a Raspberry Pi running on your local network using Amazon Lambda, AWS IoT, MQTT and Node-RED.

If you would like to control your smart home or other devices on your local network with Alexa you are depending on available Alexa Skills on the Amazon App Store. If there is no Skill for your device or the available Skill is not good enough, you are lost (that’s currently the case in Germany). Here’s a way to get full control and flexibility for your smart home using Alexa and a local Raspberry Pi.

Architecture

To establish an easy and secure communication between the different services we use the following architecture:

User <-> Alexa <-> AWS Lambda <-> AWS IoT <-> Raspberry Pi

The communication between AWS IoT and the local Raspberry Pi is based on MQTT so you do not need to host your own https service to communicate directly with AWS Lambda. The communication between your Alexa Skill (in AWS Lambda) and AWS IoT is secure and very easy to do. You can think of the IoT thing as a “bridge” to your local device (e.g. Raspberry Pi).

AWS IoT

Interact with your “thing” (and copy the Rest API Endpoint for later use) and click on “connect a device”

Download the connection kit and unzip it to your device. If you are using a Raspberry Pi unzip the content to the users root directory:

Create Alexa Skill in AWS Lambda

Create a new Alexa Skill (Alexa Skill Kit) and use the AWS SDK to communicate with your AWS IoT thing. You can download my sample project here: Alexa-Skill-Fernseher. Basically you use the AWS.IoTData Service to communicate with your virtual device:

You can now define a MQTT topic (like “/fernseher”) and use this endpoint to push messages to the AWS IoT “thing” (which will forward it to your real device).

Node-RED

In my case I use Node-RED on my device (a Raspberry Pi 2) to react on any MQTT message pushed to the topic (e.g. “/fernseher”). So I have the flexibility on the client side to do whatever I would like to do. In my sample project I react on the MQTT payload to turn on / off my tv and change channels or the volume via a Node-RED harmony node.

To establish the connection to the AWS IoT thing via MQTT you can use the MQTT-Node in Node-RED. Important: Make sure to change the default port to 8883! Create a new server (use the endpoint url from the interact page) and provide the path to the certificates:

There’s a new rising star in the world of package managers: Yarn (by Facebook).

It promises some cool features (especially in comparison to NPM):

Ultra fast / Optimized network performance

Offline mode / Caching of packages

This sounds good so I tested it with a new Angular 2 application (created with Angular CLI). Unsurprisingly Yarn with cached packages beats them all, but the “normal” first run of Yarn was noticeable slower than the good old NPM install.

Yesterday was “world usability day 2016” and we were very proud to celebrate it at the “Dortmunder U” with tons of interesting talks and discussions about UX, usability & the future of our digital world. I was especially happy as this event took place in my hometown at this history-charged place.

Martin Hoppe and I talked about 3D in current business applications and how to integrate 3D models in existing applications. We tried to cover all the interesting topics like unity 3D, WPF & HTML Integration, CAD models and HoloLens: