My first commit to github, yay!

It’s a rudimentary GUI system, optimized for touchscreen use. Very lightweight and totally OOP (except for properties, zomg!). Plus, about every second line of the source is a comment, because it was written to support an educational project. The basic Idea is this: GUI System -> GUI Pages -> GUI Elements. No other documentation so far, although there’s a built-in numerical keypad –  which will also give you an idea of how to use the code.

Find it on

Here are some screenshots of an embedded project using




SDD Reloaded :-)

Can’t post details, but I can post a photo of my desk!


One more Software Defined Device. This time with Python and 7″ touchscreen, baby! Yes, there’s a raspi mounted behind. Yes, that’s a bladeRF in front. No, it’s not even remotely related to anything audio.

Sleek-looking GUI? Wrote it in my spare time, so I’m allowed to share that one: Next Post

IoT Blinkenlights!

Niston Cloud’s WiFi IoT Signaleer is -you guessed it- an Internet-of-Things signal lamp. It can visualize a great many things: Internet connection availability, NAGIOS alarms, home automation indicators, (3D) printer job status – you name it. My use case is to monitor the order queue of a webshop we run at work. So, the current Signaleer Firmware uses HTTP polling. I plan to write an MQTT version for some other use cases.

Niston Cloud's IoT Signaleer

Niston Cloud’s WiFi IoT Signaleer – The Internet-of-Things Blinkenlights

The heart of the IoT Signaleer consists of a nodeMCU board. This integrates an ESP8266 Microcontroller (has built-in WiFi), 4MB FLASH memory, a 3v3 regulator and an USB-TTL Serial bridge onto a tiny, ridiculously cheap board. Thanks to the nodeMCU firmware, the ESP can be programmed in LUA. I had some previous experience in writing LUA code, dating back to my World-of-Warcraft days. So, getting going with nodeMCU wasn’t much involving. I found that it’s event-driven approach is very similar to writing event-driven programms in (ancient) Visual Basic 6 – Which is something I once used to be extremely comfortable with.

Stripeboard PCB, Revision 1

Stripeboard PCB, Revision 1

The light stack used in this project has incadescent lamps. As you can see, I took to some rather very, totally and extremely beefy MOSFETS (IRFP064N) to blink ’em lights. Because, you know, Overkill! The MOSFETS do not fully turn on @ 3v3, so I used pairs of BC547 transistors as non-inverting gate drivers (thx SpeedEvil). Due to the relatively high MOSFET slew rate, I had to take some measures to prevent ringing (which would emit unwanted RFI) and so used a 100KOhm gate resistor. Filament protection is provided by a bunch of 470Ohm bias resistors across the MOSFETs, which pre-heat the bulb filaments with roughly 30mA each (thx Kludge & _abc_).

Incandescent Lamp Driver w/ Softstart Option

Incandescent Lamp Driver (1 Channel shown) w/ Softstart Option

To further extend bulb life, I implemented softstart on all lamp channels, paralleling a 4.7uF capacitance with each MOSFETs Gate. Going overkill++ on the MOSFETs allows for this mode of operation (slowly ramping down RDS) without using any heatsinking or even considering thermal management.  Considering thermal management: I had to rewire the beeper inside the lamp stack, for common anode operation. Doing so, it came to light that the manufacturer had put unsuitable wiring in place, rated for 105°C only. But I measured the inside of the stack to reach 103°C @ 24°C ambient. Thus, some new 180°C rated SiF wiring finally fixed this potential fire hazard. There’s also a little piezo beeper inside the lamp stack; it is driven by a single BC547.

MOSFET sofstart curve (5V,20ms / div)

MOSFET sofstart curve (Gate Voltage – 5V, 20ms / Div)

MOSFET shutdown curve (5V, 10us / Div)

MOSFET shutdown curve (Gate Voltage – 5V, 10us / Div)

I mostly used ESPlorer to code the Firmware, which you can obtain from here. ESPlorer is a tad bit cumbersome to use, and some of the features don’t work at all while others do work, but just not quite right. Still: It got the job done, nonetheless! I need to look around for a suitable dev environment though. Something VS-ish would be nice indeed.

Using ESPlorer as a *rudimentary* IDE.

Using ESPlorer as a *rudimentary* IDE.


CHF Rounding in MSSQL – CHF Runden in MSSQL

In Switzerland, the smallest unit of currency is the 5 cent piece. So, for business purposes, we usually often need to round numbers accordingly. Here’s a simple MSSQL function to do just that:

CREATE FUNCTION dbo.ufnRoundCHF (@number money)
    RETURN Round(2.*@number, 1) / 2

This gives the following results:

SELECT dbo.ufnRoundCHF(1.02)  ==> 1.00
SELECT dbo.ufnRoundCHF(1.03)  ==> 1.05
SELECT dbo.ufnRoundCHF(1.06)  ==> 1.05
SELECT dbo.ufnRoundCHF(1.075) ==> 1.10
SELECT dbo.ufnRoundCHF(1.12)  ==> 1.10
SELECT dbo.ufnRoundCHF(1.16)  ==> 1.15
SELECT dbo.ufnRoundCHF(1.19)  ==> 1.20

Building Stream One

As a little review on the making of Stream One, this is the PPT for a presentation I held at school today. Looking into aspects like: The idea behind it all, prototyping, cross platform development with mono, building and evolving the firmware, some of the software patterns used during design as well as some reflection about what has been done so far and where it’s all heading to.


You can view/download the PDF version: Building Stream One (PDF).