Slacktime: SoundBoard App

Die App „SoundBoard“

Am letzten Mayday habe ich meine mobile App „SoundBoard“ für Android fertiggestellt und bei Google Play released. Die App etabliert einen Hintergrundservice, der alle über das Mikrofon empfangenen Spracheingaben analysiert, gesprochene Sätze erkennt und daraufhin mit entsprechenden Soundeffekten reagiert.

Auf die Idee zu dieser App hatte mich ein Freund gebracht, der ein großer Brettspielfan ist und regelmäßig Spieleabende im Freundeskreis organisiert. Somit kann das Smartphone nun am Rande des Spielfeldes verweilen und beispielsweise beim Erkennen des ausgesprochenen Satzes „Ich greife an!“ die Spielrunde mit einem lustigen Fanfaren-Sound überraschen. Weiterlesen

Slacktime: Anti-Pattern App

Slacktime. Im Rahmen dieses Konzepts sind wir bei Mayflower alle zwei Wochen für einen Tag von unseren Projekten freigestellt. Zeit, die wir dafür nutzen, uns (uns selbst, uns als Team, uns als Firma) mit Experimenten, eigenen Projekten oder der Vorbereitung auf Workshops und Konferenzvorträge weiterzuentwickeln. Intern nennen wir den Tag bei uns Mayday, aber wichtig ist eigentlich nur, dass wir die Freiheit haben — nun, uns die Freiheit zu nehmen.

Mein aktuelles Projekt ist eine kleine App für den Umgang mit Agile Anti-Patterns. Die haben meine Scrum-Master-Kollegen über die Zeit hinweg im internen Wiki gesammelt; Anfang Februar habe ich die Anti-Patterns testweise als Kartenstapel drucken lassen (übrigens auch im Rahmen eines Slacktime-Projekts — ich selbst finde unsere Slacktime wunderbar, um für mein Bauchgefühl „solche Karten dürften super in Kundenteams ankommen, die gerade neu in agile Prozesse hineinkommen möchten“ über Experimente zu belastbaren Erfahrungswerten zu kommen).

Nun gut, agile Anti-Patterns im Wiki, Spielkarten für Kundenteams und zuletzt positives Feedback („Die reißen die uns aus den Händen, kann ich noch welche mitnehmen?“) — was kann ich noch aus den Anti-Patterns machen? Eigentlich wollte ich ja immer schonmal eine App entwickeln …

MAPA — Die Mayflower Anti-Pattern App

Leider (oder vielleicht zum Glück, kommt ganz darauf an, wen Ihr fragt) bin ich kein Softwareentwickler. Was kann jemand wie ich also tun, um zu einer App zu kommen?

Zum Glück muss ich ja nicht alles allein stemmen und zum Glück ist die Slacktime auch dazu da, Ideen im Team/in der Firma zu pitchen.

MAPA - Main Screen

Ich habe zunächst mit etwas Doku angefangen, um ein Bild der Idee zu bekommen, das ich später mit meinen Kollegen diskutieren konnte. Für mich selbst habe ich mir meinen Elevator Pitch notiert und anschließen einen kleinen Klick-Dummy gebastelt. Der wirft noch ein paar Bedienkonzepte durcheinander (mir lag zunächst Windows Phone als Zielplattform am Herzen, die Kollegen wollten aber lieber iOS und aktuell vielleicht doch besser Android, aber das ist eine andere Geschichte …). Immerhin — ich kann zeigen, welche Funktionen ich wie in welcher Bildsprache verpackt haben möchte und ich sehe, ob sich die Theorie auch als App noch so anfühlt, wie gedacht. Eine erste wichtige Grundlage für die weitere Planung. Und eine Gelegenheit, sich schon vor Beginn der Entwicklung Feedback aus dem Kollegenkreis zu holen. Das Open Device Lab nutzen wir dann später für den Feinschliff …

Elevator Pitch für Scrum Master

Die nächste Scrum-Aktivität (Meeting) steht vor der Tür. Klar, wie Scrum geht, weißt Du. Aber wie schnell führt eine vermeintlich gute Absicht als Anti-Pattern langfristig zu unangenehmen Konsequenzen? Mit MAPA, der Mayflower Anti-Pattern App, kannst Du Dir gezielt typische Anti-Pattern aus Grooming/Refinement, Planning, Daily, oder auch der Retrospektive analysieren – und Dich so optimal auf das nächste Meeting vorbereiten.

Als besonderes Highlight trackt MAPA jedes von Dir bemerkte Anti-Pattern mit. Über die Zeit erkennst Du so, über welche Aktivität Du mit Deinem Team noch einmal sprechen solltest. Und kannst so Euer Scrum-Know-how nach und nach perfektionieren.

Elevator Pitch für das Team

Siehe den Pitch für den Scrum Master. Nur eben, dass die App Euch hilft, Fettnäpfchen auch dann zu vermeiden, wenn der Scrum Master einmal verhindert ist.

So geht es jetzt weiter

Inzwischen haben sich die ersten drei Kollegen gefunden, die die App softwareseitig weiter unterstützen möchten. Windows Phone ist mangels Begeisterung (leider) erst einmal vom Tisch, wir konzentrieren uns aktuell auf Android; später vielleicht eine Version für iOS. Das ist aber gar nicht schlimm, im echten Leben wär es sicher nicht anders — Du entwickelst halt für die Plattform, die Deine Anwender bevorzugen.

Für mich selbst steht dabei zwar MAPA im Vordergrund, meine Kollegen schätzen das Slacktime-Projekt, weil sie sich näher mit Android und iOS auseinandersetzen können. Selbst, wenn die App an sich nur sehr einfache Konzepte verlangt — das Setup für mobile Apps so zu perfektionieren, dass es für künftige Projekte wiederverwertbar ist oder vielleicht zu den Continuous-Deployment-Prozessen unserer Kundenprojekte kompatibel ist, dürfte ein wichtiges Learning sein. Das in einer Slacktime mit abzufrühstücken, ist doch nett. Ich bin jedenfalls schon sehr gespannt, wie sich die App am Ende anfühlen wird.

Open Device Lab: 12 gute Gründe dafür, eines zu besuchen

Seit der Eröffnungsveranstaltung des Würzburger Open Device Lab (Anmeldung und weitere Informationen hier) im Mayflower Office konnten wir bereits erste Besucher empfangen, die ihre Applikationen auf unseren fast 20 Geräten getestet haben. Um von Best Practices oder Lessons Learned berichten zu könnten waren es allerdings noch nicht wirklich genug. Und das finden wir sehr schade.

Vielleicht können sich Entwickler, Studenten, Website-Betreiber, Agenturen, Firmen, Schüler, … in der Region einfach noch zu wenig darunter vorstellen, welche Vorteile der Besuch eines Open Device Lab für sie haben kann. Deshalb haben wir eine Liste zwölf wirklich guter Gründe zusammengestellt, die dafür sprechen, ein Open Device Lab zum Testen mobiler Applikationen aufzusuchen:

1. Vielzahl an Geräten

Mobile-Testing wird im Rahmen der Softwareentwicklung zwangsläufig vernachlässigt, da kaum ein Unternehmen/Entwickler es sich leisten kann, ausreichend (gibt es ohnehin nicht) Testgeräte zur Verfügung zu haben. Open Device Labs schaffen hier Abhilfe – als öffentlich zugängliche Testlaboratorien, in denen eine Vielzahl von Geräten zur Verfügung steht. Weiterlesen

Open Device Lab. In Würzburg. Bei Mayflower.

Jippiiiiie!! Es ist so weit! Am vergangenen Donnerstag hat das erste Open Device Lab in Würzburg endlich seine Pforten geöffnet. Und zwar bei uns im Mayflower Office :)

Bei einem Open Device Lab geht es darum, freien Zugang zu möglichst vielen mit dem Internet verbundenen Devices zu haben, um Webseiten und Apps breit aufgestellt testen zu können. Nicht jeder einzelne Entwickler oder jede Company können massenhaft Geräte zu Testzwecken anschaffen. Open Device Labs versuchen diese Lücke zu füllen, indem sie möglichst breit aufgestellt (Hersteller, Betriebssystem, Betriebssystemversion) Handys, Tablets und andere Geräte mit Browser und Internetzugang zum Testen zur Verfügung stellen. Weiterlesen

A sane architecture for Android apps

Building native Android apps is fairly simple: just throw some Java code together, add some XML to it and there you have it: a cool new Android app. But also sadly in most cases an unmaintainable Android app in the long run.

For many developers this seems to be just fine but I often asked myself why the code I wrote got more and more messy with every feature I added. I refactored a lot of the code step by step but it still felt very ugly.

Weiterlesen

TestFlight & Titanium Mobile: Einfaches Testen von iOS-Apps

In den letzten Monaten habe ich eine native iOS-App mit dem Titanium Mobile SDK erstellt. Ab einem gewissen Zeitpunkt wollte ich die App einigen Freunden zum Testen und für das Sammeln von Feedback zur Verfügung stellen. Leider macht Apple einem hier das Leben nicht gerade einfach, es sei den man hat das iOS Developer Enterprise Program. Auf der Suche nach Alternativen bin ich auf TestFlight gestoßen, welches ich bis heute sehr zufrieden einsetze.

Was ist TestFlight?

Der kostenlose Service ermöglicht es, iOS Builds gleichzeitig an mehrere Personen oder Teams zu verteilen, um Feedback zu sammeln bevor die App im App Store landet. Sobald man bei TestFlight einen neuen Build hochlädt, erhalten registrierte Nutzer automatisch eine E-Mail mit einem Link zum bequemen Installieren bzw. Aktualisieren der App.

TestFlight bietet noch weitere Funktionen wie Tracking, In-App-Fragen, Remote-Logging, In-App-Updates und den Zugriff auf Crash-Logs an. Dieser Artikel wird sich jedoch zunächst auf den Einsatz von TestFlight in Verbindung mit Titanium Mobile konzentrieren. Weiterlesen

Buchvorstellung: Titanium-Mobile – Multi Platform Apps mit JavaScript

Titanium Mobile eBook - Multi Platform Apps mit JavaScriptDank der Webtechnologien stehen Ihnen viele Möglichkeiten bereit, auf dem mobilen Markt präsent zu sein. Da sind unter anderem W3C Widgets, mobile Webseiten, Webapplikationen und als native App verpackte Webapplikationen. Eine weitere Möglichkeit stellt das Titanium-Mobile-SDK dar. Das besondere: Mit Titanium erstellte Apps sind nativ. Aus nur einer Codebasis können Sie eine native Anwendung für iOS, Android, BlackBerry und Tizen generieren, sowie eine Webapplikation. Nativ bedeutet, die Apps werden nicht nur sehr schnell ausgeführt, sondern es stehen Ihnen für eine optimale Usability auch native UI Widgets zur Verfügung. Interessant ist das SDK daher nicht nur für Webentwickler, sondern auch für Entwickler, die ihre Apps bisher aufwändig individuell nativ entwickelt haben. Mit Titanium benötigen Sie lediglich JavaScript-Kenntnisse. Weiterlesen

Android-Apps mit dem Samsung Remote Test Lab testen

Als Android-Developer hat man zwangsweise mit der Fragmentierung der Geräte und Versionen zu kämpfen. Gerade für Open-Source-Developer wie mich, die nicht über ein großes Sortiment an Geräten verfügen, ist das ein Problem. Um dennoch auf ein breites Angebot an Testhardware zurückgreifen zu können, kann man nun Bekannten grundsätzlich Geräte empfehlen, die noch kein anderer Bekannter hat, oder sich Services suchen, über die sich Geräte via Internetverbindung fernsteuern lassen. In dem Fall liegt die Hardware beim Serviceanbieter und ist quasi bedienbar, als hätte man sie selbst in der Hand. Die Ausgabe des Gerätes sieht man auf dem eigenen Bildschirm. Dieser Artikel wird den kostenlosen Service der Samsung Remote Test Labs vorstellen. Weiterlesen

10.12. Lösungen für Debugging von Mobile Web Apps

Webkit Web Inspector (Remote)

Dass Firebug in JavaScript programmiert wurde dürfte den meisten bekannt sein. Das gleiche gilt für den WebInspector von WebKit, wie er in Safari oder Google Chrome zu finden ist. Es dürfte also nicht wundern, dass für mobile Geräte mit Weinre von Patrick Mueller bereits 2010 eine Portierung des WebInspectors geschaffen wurde, die über eine JS-Include auf der im Website-Header im Mobilen Browser Remote Debugging Funktionalität zur Verfügung stellt. Somit kann bequem über dem Desktop eine Mobile Webseite debugged werden. Weinre läuft heute als PhoneGap Projekt, ist sozusagen Standard und ist natürlich auf GitHub zu finden.

Das Ganze hat aber leider eben leider Grenzen, was Features wie Breakpoints, Backtraces und Profiling angeht, d.h. genau die nützlichen Features, die normalerweis unter dem “Script”-Tab im Debugger-Panel zu finden sind.

JavaScript Remote Debugging mit WebKit/Chrome

Der nächste konsequente Schritt war also, den Debugger direkt in den Browser Runtime zu heben und eine Remote API anzubieten bzw. eine Verbindung zu dem ohnehin schon existierenden V8 DebuggerProtocol zu schaffen, dass sich allerdings nur auf JavaScript Debugging beschränkt. Das Gesamtpaket nennt sich dann WebKit Remote Debugging Protocol. Währenddessen arbeitete Google auch am ChromeDevToolsProtocol was aber mittlerweile deprecated ist.

Seit Frühjahr diesen Jahres bietet nun WebKit sein Remote Debugging Feature an, welcher praktisch alle bekannten WebInspector Features unterstützt – dazu zählen:

  • JavaScript Console & JS Debugger
  • CSS Debugging & Live Änderungen
  • DOM Manipulation & Debugging – z.B. DOM Knoten auf Änderungen durch JS Events überwachen (DOM Mutation Events)
  • Netzwerk & Timeline – Verfolgung von Netzwerk-Aktivitäten auf der Seite (HTTP, WebSocket, Timings)
  • Resourcen – LocalStorage, ApplicationCache, Cookies

Das Feature kann bereits seit einigen Chrome Versionen getestet werden. Eine aktuelle Chrome Version bevorzugt kann eine Debugger-Instanz mit chrome --remote-debugging-port=9222 gestartet wird.

Sodann ist eine zweite Browserinstanz für den Remote Web Inspector nötig – diese muss jedoch Ihr eigenes Nutzerprofil verwenden, um Probleme zu vermeiden: chrome –user-data-dir=<existierendes Verzeichnis>

Mit Navigation auf http://localhost:9222 im zweiten Browserfenster findet sich nun eine Thumbnail-Übersicht der geöffneten Tabs des zu debuggenden Browsers. Ein weiterer Klick auf das ein Thumbnail lädt nun den Debugger auf die komplette Seite, mit dem wie gewohnt gearbeitet werden kann.

Somit kann zusammenfassend folgendes zur Funktionsweise gesagt werden:

  • Der Web Inspector ist eine Web Application.
  • Der Debugger Server lieftert per HTTP HTML, JavaScript wie CSS aus.
  • Sobald die Application geladen ist wird ein WebSocket zu http://localhost:9222/json geöffnet
  • Der Debugging Port ist für jeden offen, insofern nicht durch Firewall geschützt.
  • Neue Remote Debugging Sessions ersetzen evtl. bereits laufende Debug-Sessions
  • Web Inspector Remote läuft derzeit nur in WebKit Browsern einwandfrei

In iPhone oder Android-WebKits sucht man den Debugger derzeit noch vergebens (about:debug), auch wenn es bereits einige ROMs für Android mit Web Inspector Support gibt. Blackberrys Playbook hingegen besitzt schon entsprechende WebKit Funktionalität.

Der Debugger bietet für den Browser eine vereinfachte, aber noch experimentelle JavaScript API, die z.B. auch durch Chrome Extensions angesprochen werden kann. Nach Google’s Vorstellungen sollen damit auch WebIDEs wie Cloud9 zum bereits integrierten JavaScript Debugger (lib-v8debug) einen vollwertigen “WebInspector” erhalten.

Google/Webkit sind nicht die ersten

Opera demonstrierte bereits 2008 mit DragonFly und Scope einen funktionierenden Remote Debugger, mit dem es möglich ist sich an an einen Opera Mobile oder auch Desktop Opera via TCP-Port ranzuhängen und nicht nur JavaScript zu debuggen. Nachteil an der ganzen Sache: Im Mobile Web dominiert derzeit WebKit.

Firebug Crossfire

Ein ähnliches Projekt existiert seit Anfang diesen Jahres mit Firebug Crossfire, was ähnliche Möglichkeiten bieten soll. Zudem unterstützen die JavaScript Development Tools (JSDT) für Eclipse bereits Crossfire. Derzeit befindet sich das Projekt jedoch noch in der Alpha-Phase, aber darf bereits getestet werden.

Weitere JavaScript Debugging Plugins

Für den, der nodejs debuggen muss, gibt es mit dem NodeInspector eine schicke Lösung, mit der es möglich ist, dies bequem im Browser zu erledigen. NodeInspector ist wie ebenfalls wie Weinre eine Adaption von WebInspector.

Für JavaScript Debugging in der IDE, d.h. bequem Breakpoints in den Quelldateien des geöffneten Projekts setzen, haben wir zum einen die ChromeDevTools als Eclipse-Plugin. Zum anderen hat IntelliJ mit IDEA 10.5 und PHPStorm 3 das V8 DebuggerProtocol bereits implementiert.

Eine weitere einfache JavaScript-Konsole stellt z.B. JSConsole bereit, dass zum Debuggen von iPhone oder Android-Mobile Apps benutzt werden kann.

Mobile Apps: Welches SDK ist das Richtige für mich? Vortrag@Mayflower-München

Am kommenden Donnerstag, den 18.02.2010 findet wieder ein öffentlicher Vortrag im Mayflower Büro in München statt (Mannhardtstraße 6, S-Bahn Isartor).
Beginn ist um 18:00 Uhr, Thema des Vortrags ist „Mobile Apps: Welches SDK ist das Richtige für mich?„.

Tobias Schlüter geht in seinem Vortrag auf die verschiedenen mobilen Plattformen (Android, Symbian, iPhone OS usw.) ein und beschreibt, wie man mit Cross-Plattform-SDKs eine App für mehrere Plattformen schreiben kann.

Die „Donnerstags-Vorträge“ werden sowohl in München als auch in Würzburg gehalten. Bei Interesse einfach das Blog beobachten, um auf dem Laufenden zu bleiben!
Wir freuen uns auf viele Teilnehmer!