Der Quantenwatch Blog

Immer schön auf deine Schritte achten, aber nicht nach unten schauen.

Web-App: Meldeformular Vogelsicherheit an Glas

Fundmeldung von Vogelschlag
Handy-freundliches Web-Formular für vogelsicherheit-an-glas.de

Die Projektgruppe zur Vermeidung von Vogelschlag an Glas des BUND NRW sammelt Bilder von Vogelopfern und deren Fundort. Das Meldeformular ist bislang an den statischen Aufbau der Webseite gebunden und daher mit Smart-Phones nicht gut bedienbar (sehr klein). Das neue Formular zur Fundmeldung von Vogelschlag an Glas ist an die Bedienung via Tablet und Smart-Phone angepasst. Datum und Zeit werden automatisch ausgefüllt. Mit Lokalisations-Diensten lässt sich auch der ungefähre Standort automatisch finden. Eine Karte von OpenStreetMap ist in dem Formular eingebunden, um den Fundort zu markieren.

Ich habe dieses Formular kostenfrei und unter Absprache mit der Projektgruppe erstellt und werde es, so lange wie ich kann und so lange wie es nötig ist auf meinem Server beherbergen. Die Verarbeitung und die Speicherung der Bilder geschieht weiterhin über die Webseite vogelsicherheit-an-glas.de. Das Thema Vogelschlag an Glas ist mir persönlich sehr wichtig, nachdem ich dazu eine Doku über die Stadt New York sah. New York liegt leider in einer Flugroute und tausende von Vögeln verenden dort zwischen den spiegelnden Hochhäusern. Besonders traurig war auch die Installation von Licht-Spots am Ground-Zero: In der Nacht wurden viele Vögel dadurch geblendet und flogen - gefangen im Lichtstrahl - bis zum Erschöpfungstod.

Publizieren im FOSS f-Droid Store

FOSS (Free Open Source Software) ist eine feine Sache, wo ich mich beteiligen will. Ich versuche gerade, einen Texteditor in f-Droid zu bekommen. Das ist alles sehr eigenartig, denn das was ich hab "kompilieren" können funktioniert nicht zwangsläufig bei den Leuten von f-Droid. Der Ablauf zum Publizieren in f-Droid schaut in etwa so aus:

Im Grunde geht es nur darum, dass die eine "Matadaten"-Datei zur deiner App bei fdroiddata aufnehmen. Die Tools zum Testen und Erstellen aus fdroidserver stellen nur sicher, dass später deren Server keine Probleme mit der Erzeugung der APK-Datei hat.

So, der Quellcode wurde bei mir dort abgelegt:

github.com/no-go/TextThing

The App Icon TextThing
TextThing is a simple text file editor for Android. You can use it via a file manager app. I use it to write some notes. The fixed default file path is Documents/click.dummer.textthing/notes.txt . If you open the app, this file will be opened, created and used for store. There is no file manager integrated!

Als Lizenz entschied ich mich für FreeBSD (2-clause). Das Kürzel dafür muss man per Hand in die Metadaten Datei einbinden und sollte mit denen auf gnu.org/licenses/license-list.html übereinstimmen. Die notwendigen fdroid-Tools hole ich mir mit git clone https://gitlab.com/fdroid/fdroidserver.git

Um auf sie zugreifen zu können, mache ich export PATH="$PATH:$PWD/fdroidserver" Hierbei muss man wissen, dass diese Anpassung des Applikations-Suchpfads nur für diese offene Shell+Login gilt. Macht man Terminal zu, ist es vergessen :-D

Außerdem müssen die Tools mein Android SDK finden können. Dazu mache ich export ANDROID_HOME=/home/tux/Android/Sdk/ denn da liegt es bei mir, bzw beim User "Tux" im Home-Verzeichnis.

Überraschend konnte ich mich mit dem github-Account bei gitlab einloggen. Nur so ist es möglich, an dem "fdroiddata" Projekt mit zu wirken. Über die Webseite kann man recht leicht eine Kopie/Branch von fdroiddata für eigene Zwecke erstellen. Im Original hat man ja keine Schreibrechte. Nun hole ich mir mit clone den soeben erzeugten Branch: git clone git@gitlab.com:deadlockz/fdroiddata.git cd fdroiddata touch config.py

Der erste Versuch, die Punkte von CONTRIBUTING.md durch zu gehen, scheiterte. Ich musste noch python-yaml python-requests apache-ant nachinstallieren. Jetzt sollte es aber gehen: fdroid import --url https://github.com/no-go/TextThing --subdir app

Und dann ging der Ursel los! Zum Glück konnte ich in die anderen Pakete reinschauen (Merges, Code, Metadaten) so dass ich glaube, nach ca. 5 Stunden Arbeit endlich etwas brauchbares hin bekommen zu haben. Mit Android Studio eine APK machen ist halt etwas total anderes, als es mit deren Tools zu machen. Dann kommt noch hinzu, dass man in den Metadaten zu seiner App neben der Versionsnummer noch einen Versionscode hinterlegen muss, das Ganze automatisch durch Tags in git erkannt werden sollte (aber die Angabe auch in build.gradle steht) und es Ärger bezüglich Target Version (4.1.1 - 6.0.1) und Zielplattform gab. Da passte irgendwas mit den Default-Android-Themes nicht ... den tatsächlichen Fehler hab ich nicht begriffen - unter Android Studio tat ja alles immer ?!

Das Schlimmste war, dass ich kein brauchbares Konzept zur zum Debuggen hatte. Es lief immer so ab: Anpassung in Android Studio, Git commit, tag, push nach github, dann wieder mit fdroid checkupdates (oder war es zuerst den commit Code in metadata/click.dummer.textthing.txt eintragen?), hoffen, dass der neue Versions Tag erkannt wird, ... Kurz: es war eine Tortur. Am Ende (so gegen 3 Uhr Nachts) lief der Build endlich durch. Hurra!

Nun muss das Ganze (eigentlich nur die click.dummer.textthing.txt Datei) zurück nach Gitlab: git add * git commit -m "add TextThing" git push

Die Meta-Datei schaut nun so aus (viel mit der Hand angepasst):
Categories:Development,Writing License:FreeBSD Web Site:http://dummer.click Source Code:https://github.com/no-go/TextThing Issue Tracker:https://github.com/no-go/TextThing/issues Auto Name:TextThing Summary:Text editor Description: TextThing is a simple text file editor for Android. You can use it via a file manager app. I use it to write some notes. The fixed default file path is Documents/click.dummer.textthing/notes.txt . If you open the app, this file will be opened, created and used for store. There is no file manager integrated. . Repo Type:git Repo:https://github.com/no-go/TextThing Build:1.7,17 commit=5608476 subdir=app gradle=yes target=android-23 Auto Update Mode:Version v%v Update Check Mode:Tags Current Version:1.7 Current Version Code:17

Mein Merge Request war aber wieder über die Gitlab Seite ganz leicht zu erstellen. Das ist er:
merge requests 1517
Jetzt bin ich mal gespannt, ob ich am Ende alles richtig gemacht hab.

Do It Yourself Smartwatch

Ich habe mir für unter 60 EUR eine Smartwatch aus einem oLED Display, einem Bluetooth Low Energy Modul (Bluefruit UART) und einem Trinket Pro (vergleichbar mit Arduino Nano) selber gebaut. Zu dem Chip des Bluetooth-Moduls hat der Hersteller ein paar Beispiel Apps incl. Quellcode für Android und iPhone zur Verfügung gestellt. Den UART-Terminal von diesen Apps habe ich gründlich verändert: Alle Android Meldungen (eMail Betreff, SMS, Telegram, WhatsApp, ...) werden sofort auf die Smartwatch gesendet. Drückt man eine Taste an der Watch, kann man die ersten 120 Zeichen lesen. Eine Akkustands-Anzeige ist auch implementiert (mit 170mA Akku ca 10h Laufzeit). Drückt man die Taste etwas länger, sendet die Watch den Buchstaben t an das Smartphone. Dieses antwortet dann mit einer Uhrzeit, die auch als Analoge Uhr auf der Watch dargestellt wird. Dass das alles auch mit abgeschalteten Display des Handys tut, versteht sich von selbst.

Die Uhr ist ca. 23mm breit und an der dicksten Stelle 14 mm hoch. Obwohl es richtige Smartwatches für 10 EUR gibt, ist es trotzdem ein Spannendes Projekt. Es sind z.B. einige Pins für Analogwerte offen und für weitere Tasten. Dank dem Quellcode für App und Firmware (Arduino IDE) sind keine kreativen Grenzen gesetzt!

Details:
vibora.de
Kopie auf github.com
Version auf meinem Gogs git Server

Adafruit Bluefruit LE UART Friend

Das Bluetooth Modul ist eine feine Sache. Mit Software-Serial kann man auch mit dem ATtiny85 bereits Sachen via App Steuern und Sensorwerte erfassen bzw. Übertragen. bleSensor ist ein schönes, kleines Beispiel, was ich einmal für einen Freund konzipiert habe:

(15MB, mp4-Video)

1,30 EUR Microcontroller als USB-Keyboard

Nervt euch das, dass Ihr einen kleinen Raspberry-Pi als MediaCenter oder sowas nimmt, und zur Bedienung eine gigantisch große Tastatur anschließen müsst? Vielleicht ist das Projekt hier eine Lösung für euch: Trinket3v 2keys mit Poti

Strenggenommen muss man nicht für ca 7 EUR ein Trinket kaufen, da es für den ATtiny85 als Microcontroller auch eine USB-Bibliothek (vusb) gibt. Aber mit dem Trinket hat man 2 Vorteile: Es ist ein Bootloader darauf installiert, so dass man keinen Programmer (also zusätzliche Hardware) braucht, um sein Programm darauf zu installieren. Mit der Arduion IDE kann man den Trinket auch sehr komfortabel Programmieren - und das unter Mac, Linux und Windows.

Mini Bachelorarbeit

Für die Module "Verteilte Systeme" und "Wissensbasierte Systeme" bei Professor Rethmann an der Hochschule Niederrhein in Krefeld erstellte ich ein Beispiel (Code und Dokumentation), in dem die Verwendung von GLPK und Apache Thrift gezeigt wird. Das Ganze ist bei sourceforge zu finden (oder sehr bald auf der Webseite von Prof. Rethmann). Die html-Doku des Codes wurde mit doxygen erzeugt und ist auch hier zu finden.

Mandelbrot Menge 3D

Weil an der HS scheinbar nur openGL tadellos klappt, werde ich mein PAC-Projekt wohl weder mit openCV oder openMPE machen. Deswegen habe ich einen alten Code von mir reaktiviert und neu zusammengestellt, der sehr übersichtlich ist und die MAndelbrotmenge in 3D mit openGL darstellt. Mit + und - und je position der Maus kann man schon reinzoomen.

Der Code zu diesem Video ist hier zu finden.

DuinoMite IO

PIC DuinoMite Board selber verkabeln

Sollte mal jemand das selbe Problem haben und ein DuinoMite Board mit einem PIC Microcontroller an VGA anschließen: Hier ist ein Plan (auf eigene Gefahr!) zur Verkabelung. Leider gibt es zu meiner Verwunderung nur Weiss/Schwarz - also keine Farben! Mein Problem beim ersten Verkabelungsversuch war ein total verraustest VGA Bild. Die unterscheidung VGA-GND und GND war wohl sehr wichtig. Ich orientierte mich danach am Pinout des Mini-Boards und Hurra: eindlich kann ich mit Basic auf dem Board den Microcontroller programmieren. Der eingebaute 260 kB Flash zum Speichern ist auch super.

Entwurf und Implementierung verteilter Lösungsansätze für Capital Budgeting Probleme mit GLPK und Apache thrift

Meine Bachelorarbeit

Das Toolkit glpk enthält Methoden der gemischt-ganzzahligen linearen Programmierung (MILP). Diese Methoden lassen sich zur Lösung von Capital Budgeting Problemen (CBP) nutzen. Da glpk weder multithreaded fähig ist noch eine Verteilung auf mehrere Rechner implementiert ist, kann es sein Potential auf heutigen Computern und in vernetzten IT-Systemen nicht voll entfalten. Um bei der Lösung von CBP mit kommerziellen Toolkits wie CPLEX und Gurobi mithalten zu können, haben wir mit dem Verteilungs-Framework Apache thrift und der C-API von glpk eine Möglichkeit geschaffen, um CBP auf beliebig viele Kerne und Rechner zu verteilen. Durch Last-Balancierung und Berücksichtigung der Methoden der MILP bei der Verteilung war es uns sogar möglich, die Verarbeitung um mehr als das Vielfache der genutzten Prozessor-Kerne zu beschleunigen. Der Branch-and-Cut-Algorithmus von glpk, mit dem primär gearbeitet wird, liefert bei einer ausgewogenen Unterteilung in Teilprobleme, paralleler Verarbeitung und regelmäßigem Austausch der bisher besten Lösung unter den Teilproblemen deutlich schneller eine Lösung, als eine sequenzielle Verarbeitung der Teilprobleme.

PDF CBP-Verteilung-mit-GLPK-und-thrift.pdf
md5sum 0d01f4c4c773fc62837d062c97bf3d76

Quellcode CBP-Verteilung-mit-GLPK-und-thrift_CODE.tgz
md5sum 7934a9ca8818a4a3f60519180e7abd06

HTML Entwurf und Implementierung verteilter Lösungsansätze für Capital Budgeting Probleme mit GLPK und Apache thrift

Alternative findest du meine Bachelorarbeit zur Verteilung des CBP mit apache thrift und glpk auch bei bat2015.sourceforge.net.