Timo Korinth

2 Meter, 2 Mark

06.10.2017
by Timo Korinth
0 comments

NATTT – Not Another Time Tracking Tool

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.

NATTT is an Angular application using electron (https://electron.atom.io/) and cordova (https://cordova.apache.org/) to export applications for all devices and OS’s. Feel free to try it and leave a comment or feedback on what you think: NATTT App.

03.07.2017
by Timo Korinth
0 comments

Developer Week 2017

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 ;-)

My slides: Flexbox again

And some impressions:

01.02.2017
by Timo Korinth
4 Comments

Using Alexa to control a local Raspberry Pi

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.

The whole idea is based on the fantastic videos of Kurt Braun (especially “Voice Control of Raspberry Pi using Alexa Node-RED & AWS IoT MQTT” & “Amazon Web Services (AWS) IoT MQTT Node-RED Raspberry Pi & PLC“) and some other good resources: e.g. Using Alexa Skills Kit and AWS IoT to Voice Control Connected Devices.

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

First create a “thing” representing your physical (local) device:

  1. Log into AWS IoT Console
  2. Create a new “thing”
  3. Interact with your “thing” (and copy the Rest API Endpoint for later use) and click on “connect a device”
  4. 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:

var iotData = new AWS.IotData({endpoint: config.IOT_BROKER_ENDPOINT});
var topic = "/fernseher";

var params = {
    topic: topic,
    payload: payload,
    qos:0
};
iotData.publish(params, (err, data) =&amp;amp;amp;amp;gt; {
    if (!err){
        this.emit(':tell', tell);
    }   
});

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:

20.12.2016
by Timo Korinth
0 comments

Yarn vs. NPM

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.

I’ve created a short video to show you the results:

09.11.2016
by Timo Korinth
0 comments

World Usability Day 2016

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:

wuddemo2016

See our slides (in german): Was bringt 3D?

Thanks to everyone who made this possible and hope to see you all next year at the same place!