Mein Handy-Sleeve aus Kirgistan

Juhu, das Sleeve ‚Awesome‘ für mein IPhone von Kancha ist angekommen. Es sieht edel aus, fühlt sich gut verarbeitet an und wurde unter fairen Bedingungen in Kirgistan hergestellt. Das passende Utensil für urbane Nomaden :-).

Kancha Sleeve 'Awesome'

Kancha Sleeve ‚Awesome‘

Ich höre regelmäßig den Schwarmtaler-Podcast von David Scribane. In der ersten Folge stellte Tobias Gerhard sein Crowdfunding-Projekt ‚KANCHA – Design Accessoires für Urbane Nomaden‚ vor, das erfolgreich das benötigte Geld auf der Crowdfunding-Plattform startnext.de einsammeln konnte. Die Idee hinter Kancha wird im Podcast ausführlich erläutert und auf der Webseite folgendermaßen beschrieben: Weiterlesen

GAS – was ist Google Apps Script?

Das Unternehmen office:control + setzt für die Büroarbeit verschiedene Google-Anwendungen ein und der Geschäftsführer, Michael Witte, fragte mich, ob ich dafür schon mal etwas programmiert hätte. Ich habe zwar in mehreren Unternehmensprojekten Google Web Toolkit (GWT) eingesetzt und auch mal mit der Google App Engine rumgespielt, aber das meinte er offenbar nicht. Für kollaboratives Arbeiten soll sich ja Google Documents, Spreadsheets und Drive gut eignen, aber wie und was soll man da programmieren?

Er meinte, die Büroarbeit habe er mit einem einfachen papierlosen Workflow schon gut automatisiert und einige Optimierungen wären noch möglich:

  • eintreffendes Dokument scannen, abheften und nie wieder raussuchen müssen
  • Verzeichnis der eingescannten Dateien mit Google Drive synchronisieren
  • Google Documents für selbst geschriebene Dokumente nutzen und unter Google Drive ablegen
  • Nutzung der Google Drive – Volltextsuche zum Auffinden von eigenen oder eingescannten Dokumenten
  • Erfassung von Dokument-Zusatzdaten (Adresse, Datum) mit dem Formulardesigner Google Forms
  • Bereitstellen des Formulars auf einer Website (Google Site)
  • Abspeichern der Formulardaten in einer Tabelle (Google Forms -> Google Spreadsheet)

Das funktioniert schon alles direkt mit den Google-Anwendungen. Und wenn wir etwas wollen, was Google noch nicht anbietet? Dann verwenden wir GAS (Google Apps Script) und die APIs der verschiedenen Google-Anwendungen (Documents, Calendar, Contacts, Drive, Forms, Gmail, Maps, Sites, Spreadsheets):

Weiterlesen

30. Chaos Communication Congress (30C3) in Hamburg ohne Motto

Ich habe mir wieder den ersten Tag beim 30. Chaos Communication Congress (30C3) des Chaos Computer Clubs (CCC) in Hamburg gegönnt, der mit über 9000 Besuchern und weiteren Vortragsräumen des CCHs (Congress Centrum Hamburg) größer denn je war.

Während letztes Jahr noch das Motto „Not my department“ dem Ereignis einen Rahmen gab, war der erste Kongress im Jahr Null der Post-Snowden-Ära mottofrei. In der Eröffnungsrede des Jubiläumstreffens erläuterte Tim Pritlove, dass kein Motto den Überwachungsalbtraum und die herrschende Sprachlosigkeit fassen könne.

Als Besucher sind die Ausarbeitungen der vielen Projektgruppen spannend, die von engagierten Menschen gerne erklärt werden (beispielsweise Lockpicking, Seidenstraße oder die Electronic Frontier Foundation). Und natürlich gab es wieder zahlreiche (düstere) Vorträge – ich habe folgende verfolgt: Weiterlesen

Neue JRebel Lizenz – weiterhin keine Redeployments mehr

Meine einjährige „JRebel Personal Lizenz“ (kostete 156 Dollar) läuft jetzt im Dezember ab und staunend musste ich feststellen, dass die Lizenz abgeschafft wurde und Zeroturnaround stattdessen die „JRebel Base Lizenz“ für 265 Dollar (+ 20% Steuern) anbietet. Eine Verlängerung der Lizenz wollte ich mir nach der erheblichen Preiserhöhung noch überlegen, aber als Besitzer einer „JRebel Personal Lizenz“ bekommt man von Zeroturnaround eine ermäßigte „JRebel Base Lizenz“ für 154 Dollar (+ 20% Steuern) – da musste ich natürlich gleich zuschlagen.

Wer JRebel nicht kennt, fragt sich sicherlich: „Warum gibt ein Java-Entwickler für Entwicklungswerkzeuge heutzutage noch Geld aus?“. Wir haben doch schon so viele gute kostenlose Frameworks, Werkzeuge und Servers: Spring, Eclipse, Git, Jenkins, Tomcat, JBoss usw.

JRebel: Vergleich mit JVM Hot Swap

JRebel: Vergleich mit JVM Hot Swap (Quelle: Zeroturnaround)

JRebel bietet nach der Vergleichsmatrix offenbar einige Features, für die Entwickler auch gerne bezahlen. Doch was bedeutet JRebel für den Alltag eines Java-Entwicklers? Weiterlesen

GoldieBlox – Technikspielzeug für Mädchen

Unter den Slogans „More than just a Princess“, „Disrupting the pink aisle“ und „Toys for future inventors“ versucht das Technikspielzeug GoldieBox die rosa Mädchen-Zonen in Spielzeugläden für zukünftige Erfinderinnen zu erobern. Während technische Spielsachen zumeist für Jungen konzipiert sind, richtet sich GoldieBox speziell an Mädchen. In einer kleinen Geschichte erzählt die Titelfigur Goldie von technischen Geräten, die man mit unterschiedlichen Bausteinen und Figuren (ähnlich wie FischerTechnik oder Lego) nachbauen kann.

GoldieBox wurde per Crowdfunding finanziert und hatte innerhalb weniger Tage die angestrebten 150.000 Dollar auf der Kickstarter-Plattform eingesammelt. Leider ist GoldieBlox nicht in Deutschland erhältlich und unsere im Internet bestellte Version ist entsprechend in englischer Sprache. Spielvergnügen bereitet die GoldieBlox-Tüftelei natürlich trotzdem. Im Netz gibt es auch allerhand lustige und inspirierende Videos zu GoldieBlox.

GoldieBlox-SpinningMachine

Einbruch bei Toys R Us:

Weiterlesen

CloudBees – Continuous Integration & Delivery leicht gemacht

Wenn man als SW-Entwickler eine kleine Webanwendung für Freunde, Kollegen oder die ganze Menschheit bereitstellen möchte, müssen oft einige Herausforderungen gemeistert werden. Das eigentliche Programmieren der Anwendung geht vielleicht noch recht problemlos. Aber es entsteht ja leider noch allerhand weiterer Aufwand, um beispielsweise die benötigte Infrastruktur zu installieren:

  • Verwendung einer Quellcodeverwaltung (z.B. Git)
  • Installation einer Datenbank (z.B. MySQL, PostgreSQL)
  • Ausführen von Entwickler-Tests (z.B. mit Ant oder Maven)
  • Bauen der Anwendung (z.B. mit Ant oder Maven)
  • Bereitstellung der Anwendung auf einem Server (z.B. mit ssh-Skripte)
  • Testen der bereitgestellten Anwendung (z.B. manuell durch den Entwickler)

Sobald wir öfters neue Anforderungen oder Bugfixes ausliefern müssen, sollten wir diese Schritte nicht mehr manuell durchführen sondern automatisiert haben. Das Zauberwort heißt hier natürlich Continuous Integration und falls wir fehlerfreie Software auch gleich deployen, sind wir schon bei Continuous Delivery. Der CI-Server Jenkins (vormals Hudson) leistet dabei gute Dienste. Den müssen wir uns noch nicht einmal selber installieren, sondern wir bekommen ihn als Platform as a Service (PaaS) von CloudBees bereitgestellt. Dazu liefert uns CloudBees auch alle weiteren Werkzeuge, sodass Continuous Delivery problemlos realisierbar ist:

CloudBees: Continuous Cloud Delivery

Weiterlesen

Luke – ein Blick in den Lucene-Index

Wer für seine Anwendung Volltextsuche benötigt, sollte den Einsatz der Java-Bibliothek Apache Lucene oder der darauf basierende Webanwendung Apache Solr ernsthaft in Erwägung ziehen. Egal für welche Technik man sich von beiden entscheidet, letztlich werden die indizierten Daten in einem Lucene-Index abgelegt. Der Lucene-Index kann zwar im Speicher gehalten werden, aber bei großen Datenmengen und für die Fehlersuche sollte man den Index im Dateisystem ablegen.

Mit dem Programm Luke kann sich der Entwickler die abgelegten Daten des Lucene-Index anschauen. Auch wenn das Programm etwas altbacken ausssieht, bietet es wertvolle Hilfe, wenn Dinge mal nicht wie erwünscht funktionieren:

  • Übersicht zu den wichtigsten Begriffen
  • anzeigen von Dokumenten mit den zugehörigen Index-Werten
  • ausführen von Suchen und anzeigen der Suchergebnisse
  • bearbeiten und optimieren des Lucene-Indexes

Luke: Übersicht

Luke: Übersicht

Weiterlesen

Meteor – ein neuer Webframework-Stern

Als SW-Entwickler erlebt man bei der Nutzung von Web-Technologien immer mal wieder dieses Aha-Gefühl, sodass einem sofort deutlich wird: „Diese Technologie wird die Web-Entwicklung maßgeblich beeinflussen“. Die Programmiersprache, das Web-Framework oder die Denkweise, mit der man aktuell ein Web-Projekt umsetzt, wird in wenigen Jahren als schwergewichtig und veraltet angesehen werden.

Dieses Aha-Gefühl hatte ich gerade wieder, als ich die Meteor-Plattform ausprobiert hatte. Es scheint mir einen ähnlich wegweisenden Einfluss zu haben, wie andere bekannte Technologien:

Mit meiner kleinen Beispiel-Anwendung kann ein Anwender (passend zur Bundestagswahl 2013) seine Wahlstimme abgeben, welche Partei er wählt und einen entsprechenden Marker auf einer Karte in der Nähe seines Heimatortes setzen. Als clientseitige Standalone-Lösung läßt sich das einfach mit OpenLayers realisieren, allerdings sollen die Wahlstimmen serverseitig gespeichert werden und andere Clients automatisch benachrichtigt werden! Das Beispiel besteht gerade einmal aus 60 Zeilen HTML-Code und 160 Zeilen JavaScript-Code (davon 100 Zeilen für OpenLayers) !!! Ja, bei so wenig Code kann man sich drei Ausrufezeichen mal leisten.

Meteor: Wahlstimmen auf OpenStreetMap-Karte

Meteor: Wahlstimmen auf OpenStreetMap-Karte

Weiterlesen

Lucene: Volltextsuche leicht gemacht

Wenn man in einem Datenbestand bestimmte Daten sucht, wird man zumeist die Möglichkeiten der jeweils eingesetzten Datenbank nutzen. Sobald man jedoch eine Volltextsuche benötigt, wird es mit einer reinen Datenbanklösung kompliziert. Dann sollte man im Java-Bereich einen Blick auf Apache Lucene und Apache Solr werfen.

Während es sich bei Lucene um eine Java-Bibliothek für Volltextsuche handelt, nutzt die Webanwendung Solr die Funktionen von Lucene und bietet komfortable Anfrage- und Verwaltungsmöglichkeiten über HTTP-Schnittstellen. In diesem Artikel stelle ich ein kleines Projekt mit Lucene vor, allerdings sollte man vor dem Einsatz von Lucene abwägen, ob sich die Anforderungen nicht mit Solr noch einfacher realisieren lassen. Lucene bietet für die Volltextsuche eine Vielzahl von Funktionen an:

  • wie DB-Suche: Felder, boolsche Ausdrücke, Wildcards: title:“rot“ AND desc:“Schuh“
  • Fuzzy Search (Unscharfe Suche): mahlen -> mahlen, malen, Wahlen
  • Stemming von Wörtern (Verwendung des Wortstamms): rote Schuhe -> rot, Schuh
  • Verstärkungsfaktoren (z.B. Produkt): Name*4, Eigenschaften*2, Beschreibung*1
  • Ignorieren von ‚Stopwords‘, z.B: einer, eine, eines, der, die“, das, wie, ohne
  • Unterstützung von vielen Sprachen: Klasse StandardAnalyzer ersetzen durch Klasse GermanAnalyzer für deutsche Sprache
  • vieles mehr

Weiterlesen