Spendee: Farbenprächtiges Haushaltsbuch

Mich bringt Spendee in die Bredouille, mich wohl von dem ebenfalls tollen Next zu verabschieden. Next ist eine tolle App, die sich in der letzten Zeit noch deutlich verbessert hat. Für Spendee spricht eine Menge an kleinen Punkten, die für mich den Ausschlag geben.

Einzig beim Erfassen einer Ausgabe ist Next einen Klick schneller, denn in Spendee muss ich erst den Betrag bestätigen, bevor ich ihn einer Kategorie zuordnen kann. Danach hat aber Spendee die Nase vorn. Wie auch in Next kann ich die Ausgabe mit Notizen versehen, zudem aber noch wiederkehrende Ausgaben und Erinnerungen anlegen. Im Zweifel kann ich auch noch ein Bild anhängen, sofern ich mir davon einen Nutzen verspreche. Da ich auch noch Einnahmen in eigenen Kategorien erfassen und planen kann, ist Spendee besser als umfassendes Haushaltsbuch geeignet.

Vor allem bestechen Spendees Auswertungen. Diese lassen sich deutlich einfacher skalieren und geben dann auch noch gut gestaffelt Auskunft, wohin mein Geld im gewählten Zeitraum fließt. Spendee stellt auch gleich einen Vergleich mit dem Vormonat an oder stellt die teuersten Ausgaben heraus. Die Daten sind übersichtlich und hübsch dargestellt, wobei ich sagen muss, dass in diesem Falle das Auge mit spart. Next ist keinesfalls ein Schmerz in den Augen, Spendee ist aber noch gefälliger in seinen feinen Farben und flachen Formen.

Einer der wichtigsten Punkte ist eine Exportfunktion für meine Daten, damit sie auch wirklich meine sind. Next hätte ich die Daten umständlich aus dem Verzeichnis reißen müssen. Spendee verwöhnt mich mit einem bequemen Export per Mail oder Google Drive, bei dem ich zwischen einem Excel- oder CSV-Format entscheiden kann. Hinzu kommt eine Sicherung in iCloud, die ich nicht nutze, anderen aber vielleicht doch willkommen ist.

Spendee hat also alle Stärken von Next, setzt aber noch deutlich an Funktionalität obendrauf. Lediglich bei den Kategorien hätte ich mir. och mehr Freiheit gewünscht. Im Gegensatz zu Next kann ich den meisten Kategorien auch einen eigenen Titel geben, wobei die Standardkategorien nicht änderbar und auch noch auf Englisch sind. Das ist zwar noch immer flexibler als in Next, kommt mir aber immer noch etwas stur vor.

Es fiel mir also doch nicht so schwer, Spendee den Vorzug zu geben, selbst wenn Next eine tolle App bleibt. Spendee ist noch immer einfach genug, fährt aber noch mehr sinnvolle Funktionen auf, mit denen ich doch deutlich besser die Kontrolle meiner Einnahmen und Ausgaben vornehmen kann.

Viz – Ich mach da mal ein Diagramm draus

Normalerweise habe ich nicht unbedingt den Bedarf, mal eben unterwegs ein Kreisdiagramm zusammenklöppeln zu müssen. Mit Viz könnte ich das aber locker auf meinem iPhone machen.

Es ist nicht reichlich komplex. Vizsoll aber gar nicht so überfrachtet wie eine Tabellenkalkulation sein. Umfassende Datenverarbeitung ist absichtlich nicht drin. Die Daten haben einen Namen und einen Wert. Mehr geht nicht. Dann noch schnell mal auswählen, welcher der fünf Diagrammtypen es denn sein soll. Dazu noch aus der Handvoll fertiger Farbpalette diejenige auswähleb, die am besten aussieht. Schon ist das Diagramm fertig. Am Ende habe ich dann ein flaches, aber schickes Diagramm für einfache Daten, das ich schnell in den großen sozialen Netzwerken verteilen kann. Ist mir nicht danach, das Diagramm öffentlich zu verbreiten, kann ich es auch in der App für später speichern. Oder auch als Bild in die Fotogalerie exportieren.

Umfassend ist also anders. Für Viz spricht, wie schnell ich ein paar simple Datensätze in Form gebracht habe. Das lässt sich durchaus sehen. Sehr viel mehr will ich auf einem Mobilgerät auch nicht machen. Daher ist Viz für mich eine nützliche Ergänzung. Aber schon bei größeren Datenmengen wird es lästig werden, diese alle einzeln einzuhacken. Viz ist also eer für kleine Appetithäppchen von Daten, die durch eine schnelle Visualisierung aufgelockert werden sollen. Alles über diese Beschreibung hinaus wäre eine Überforderung der App. Das kann sie einfach nich leisten.

Heute ist ein Versuch sogar besonders lohnenswert: Viz ist gerade kostenlos im App Store zu haben.

Bild: App Store

Drafts-Rezepte VIII: Down or just me?

Ein ganz kleines Rezept, um mal schnell zu checken, ob eine Seite wirklich down sein könnte oder der Fehler irgendwo auf meiner Seite liegt. Ich hatte das leidige Thema diese Woche zu oft, da war es ganz gut, mit Drafts schnell losschlagen zu können. Um den Service in Safari zu öffnen, sieht das alles so aus:

http://www.isup.me/[[draft]]

Will ich es in Chrome öffnen, ist das auch schnell erledigt:

googlechrome://www.isup.me/[[draft]]

Die Idee sollt also klar sein. Ist euer Browser nicht dabei sein, ist sein Handle vielleicht hier zu finden.

Will ich jetzt mal sehen, ob kultprok down ist, würde ich inDrafts einfach

kultprok.de

eingeben und dann die Action feuern. Okay, das ist natürlich reichlich dämliches Beispiel, weil ich zuverlässigere Wege habe, um festzustellen, ob mein Server noch läuft. Aber na ja, der Gedanke zählt.

Gistacular: Ein mobiles Zuhause für Gist

Was für eine prächtige Ergänzung das kleine Gistacular zu iOctocat ist. Zwar kann ich Gists auch dort ansehen, aber nicht bearbeiten. Gistacular schließt diese Lücke auf einfache Weise.

Die App ist ein stromlinienförmiger Client für Gists. Alles ist übersichtlich angeordnet. Ich kann Favoriten verwalten, Skripte anderer Leute durchforsten, neben den eigenen Skripten natürlich. Der Texteditor ist spartanisch, aber ausreichend. Aber Gistacular zeigt in der Vorschau auch Syntax-Highlighting.

Ich sehe langsam, dass ich meine Desktoprechner nur noch für wirklich umfassende Schreibarbeiten oder eben Spiele brauchen werde. Alles andere kann ich immer besser auch von mobilen Geräten erledigen.

Übrigens, der Quellcode von Gistacular ist freundlicherweise auch auf Github.

Bilder: iTunes

Drafts-Rezepte VII: Postleitzahlen mit Zippopotamus II

Der zweite Teil zu Postleitzahlen mit Zippopotamus geht in die entgegengesetzte Richtung. Statt nun also eine Postleitzahl zu ermitteln, geht es nun um die Städte oder Stadtteile hinter eine Postleitzahl.

Das Script ist wieder genauso einfach wie das erste. In Drafts muss eine neue Notiz nur die folgende Syntax einhalten:

[PLZ],[LÄNDERKÜRZEL]

Beispielsweise würde die folgende Eingabe der berühmten Postleitzahl eine Markdown-Liste in Drafts öffnen.

90210 , us

Auch hier kommt ein kleiner Haken ins Spiel, auch wenn er nicht ganz so lästig ist. Denn die API von Zippopotamus erlaubt es derzeit nicht, das Land nicht anzugeben. Unter Umständen müssen wir also mehr Infos angeben, als wir haben. Das Python-Script sieht derzeit so aus:

# -*- coding: utf-8 -*-
from console import alert
from json import loads
from sys import argv, exit
from urllib import urlopen, quote
import webbrowser

def error_dialog(title, message):
    '''
    a diaolog box for error messages.
    '''
    try:
        alert(title, message)
    except KeyboardInterrupt:
        pass
    webbrowser.open('drafts://')
    exit(message)

def handle_data(data):
    '''
    process json response from zippopotamus.
    will return a markdown list of items.
    '''
    city_json = loads(data)
    output = ''
    for item in city_json['places']:
        output += '- Ort: {place}, Region: {state}\n'.format(place=item['place name'], state=item['state'])
    return output

def get_by_postalcode(data):
    '''
    get all possible cities for a postal code in
    the given country.
    '''
    api_url_base = 'http://api.zippopotam.us/{country}/{postcode}'
    try:
        postcode_, country_= [item.strip() for item in data.split(',')]
    except Exception as err:
        error_dialog(str(err.__class__), err.message)

    try:
        response = urlopen(api_url_base.format(country=country_, postcode=postcode_))
    except IOError:
        error_dialog('Connection Error', 'Unable to perform request.')
    if response.getcode() == 200:
        postcode_data = handle_data(response.read())
        webbrowser.open('drafts://x-callback-url/create?text={0}'.format(quote(postcode_data)))
    else:
        error_dialog('Error', 'Status code: {0} - Message: {1}'.format(response.getcode(), response.read()))

if __name__ == '__main__':
    get_by_postalcode(argv[1])

Gist

Die dazugehörige Action für Drafts ist:

pythonista://city-by-postalcode?action=run&argv=[[draft]]

Import-Link

Drafts-Rezepte VI: Postleitzahlen mit Zippopotamus I

Den kleinen Gag kann ich mir nicht verkneifen. Ich mache zu Zippopotamus, einem guten, kleinen Dienst für Postleitzahlen in einer Vielzahl von Ländern, zwei Teile. Damit artet die Kleinteiligkeit aus wie der überbordende Song-Kosmos von Coheed & Cambria.

Das Script ist wieder sehr einfach. In Drafts muss eine neue Notiz nur die folgende Syntax einhalten:

[STADT], [REGIONSKÜRZEL], [LÄNDERKÜRZEL]

Beispielsweise würde die folgende Eingabe die berühmte Postleitzahlen für die Stadt als Markdown-Liste in Drafts öffenen.

beverly hills, ca, us

Leider kommt diese Sache nicht ohne einen kleinen Haken aus. Denn die API von Zippopotamus erlaubt es derzeit nicht, die Region und das Land nicht anzugeben. Unter Umständen müssen wir also mehr Infos angeben, als wir haben. Ich bin dabei, mir dafür eine Lösung zu überlegen. Das Python-Script sieht derzeit so aus:

# -*- coding: utf-8 -*-
from console import alert
from json import loads
from sys import argv, exit
from urllib import urlopen, quote
import webbrowser

def error_dialog(title, message):
    '''
    a diaolog box for error messages.
    '''
    try:
        alert(title, message)
    except KeyboardInterrupt:
        pass
    webbrowser.open('drafts://')
    exit(message)

def handle_data(data):
    '''
    process json response from zippopotamus.
    will return a markdown list of items.
    '''
    city_json = loads(data)
    output = ''
    for item in city_json['places']:
        output += '- City: {place}, Post code: {postcode}\n'.format(place=item['place name'], postcode=item['post code'])
    return output

def get_by_city(data):
    '''
    get all possible post codes for a city in
    the given country.
    '''
    api_url_base = 'http://api.zippopotam.us/{country}/{state}/{city}'
    try:
        city_, state_, country_= [item.strip() for item in data.split(',')]
    except Exception as err:
        error_dialog(str(err.__class__), err.message)

    try:
        response = urlopen(api_url_base.format(country=country_, state=state_, city=city_))
    except IOError:
        error_dialog('Connection Error', 'Unable to perform request.')
    if response.getcode() == 200:
        city_data = handle_data(response.read())
        webbrowser.open('drafts://x-callback-url/create?text={0}'.format(quote(city_data)))
    else:
        error_dialog('Error', 'Status code: {0} - Message: {1}'.format(response.getcode(), response.read()))

if __name__ == '__main__':
    get_by_city(argv[1])

Gist

Die dazugehörige Action für Drafts ist hier:

pythonista://postalcode-by-city?action=run&argv=[[draft]]

Import-Link

TickTick: Auf der Suche nach Alleinstellungsmerkmalen

Vergeht in dieser Welt auch ein Tag, an dem keine Todo-Anwendung erscheint? Gibt es da irgendeinen mir unbekannten Erlass, der eine Todo-Schwemme verlangt? Vorschrift oder nicht, TickTick ist auch so ein Dienst, der angespült wurde.

Mir ist es besonders wichtig, flexibel und unabhängig zu sein, daher sollte ein Todo-Manager eine große Breite an Plattformen abdecken und zuverlässig zwischen ihnen synchronisieren. TickTick ist diesbezüglich überaus zuverlässig und bietet neben der webbasierten Anwendung noch Apps für Android und iOS. Zwischen diesen konnte ich ohne jede Probleme wechseln, ich war auf dem aktuellen Stand, allerhöchstens musste ich das Synchronisieren von Hand abrufen. Damit ließ sich aber gut auskommen.

Die kostenlose Anmeldung und Mitgliedschaft bringt darüber hinaus alle erwartbaren Features eines Todo-Managers. Die Aufgaben werden in Listen geordnet, sie können selbst wieder in Listen mit Teilaufgaben unterteilt werden. Alles bekannte und notwendige Features für eine solche Anwendung. Erinnerungen und wiederkehrende Aufgaben werden als selbstverständlich vorausgesetzt und sind dementsprechend auch in dieser App da.

Es ist schwer, ein Alleinstellungsmerkmal TickTicks herauszustellen. Womöglich ist es die Zuverlässigkeit. Alles ist auf die effiziente Todo-Verwaltung ausgerichtet. Die Menüs sind schlank, TickTick hat kaum Kanten. Es läuft über alle Geräte hinweg einfach wie versprochen.

Bildquelle: iTunes App Store

Thunderspace: Im Auge des Sturms

Mit einer Beschreibung wie „stereoscopic 3D audio“ weiß ich herzlich wenig anzufangen. Höre ich aber über die Kopfhörer meines Telefons einem Gewitter in aller Räumlichkeit zu, verstehe ich, was gemeint ist. Das Donnern rollt plastisch durch meinen Kopf, der beständige Nieselregen prasselt so lebendig auf meine Ohren ein, ich glaube, jeden einzelnen Tropfen zu hören.

In gewissen Sinne ist Thunderspace das Muster für eine richtig gute App. Nur ein einziger, einzelner Zweck wird schnörkellos umgesetzt. Thunderspace entspannt mit beeindruckenden Tonaufnahmen von Unwettern. Zugegeben, dafür muss man der Typ sein, sich in Hintergrundrauschen zu verlieren. Ich bin es. Deshalb bin ich so begeistert von Thunderspace, wo Stürme eine sichere und beruhigende Klangkulisse sind.

Drumherum gibt es nicht viel Ablenkung, das finde ich hervorragend. Zwei Klangbetten sind kostenlos enthalten*, sechs weitere sind über IAP zu haben. Das ist alles in allem fair. Thunderspace kommt im zugegeben schicken iOS7-Design daher, auch wenn die Gradients jetzt schon beliebig zu werden drohen. Aber egal, es geht ums Gewitter in den Ohren, das Ruhe im Kopf machen soll. Die Illusion vom Unwetter soll durch über die Gerätleuchte simulierte Blitze verstärkt werden, aber das brauche ich nicht wirklich. Nützlicher ist der Sleep-Timer. In meinen Ohren ist das eine der besten Entspannungsmöglichkeiten, die der App-Store bislang zu bieten hat.

* Update 21.08.2013: Da war ich etwas verwirrt. Thunderspace ist prinzipiell im unteren Preissegment angesiedelt, war nur vorübergehend kostenlos. Ich halte die Freemium-Variante prinzipiell für besser, aber selbst für die kleine Einstiegshürde bieten die zwei Klangbetten ordentlich Entspannung.

10000000: Schlachte-drei-Monster-oder-mehr

Warum heißt 10000000 so? Simpel. Der namenlose Held des Spiels benötigt zehn Millionen Punkte. Sobald er diese in einem Retroverlies erspielt hat, kann er aus seinem Gefängnis fliehen. Hm, das reicht schon als Motivation, also her mit den Monstern.

Für manchen alteingesessenen Spieler ist die Entwicklung der mobilen Spiele ein retrograder Prozess. Fossilien der Spiele leben neu auf, werden auch noch für ihre spartanische Aufmachung gelobt. Ein Graus, für AAA-Spielesnobs. Denn es gibt so kleine Schätze. 10000000 ist so ein Spiel, das sich zwei altbekannte Muster schnappt und sie hybridisiert.

Das recht simple Konzept der Match-3-Spiele wird mit der Mechanik von Rollenspielen kombiniert. Der Held wird nich direkt gesteuert, er läuft zielstrebig durch die Gewölbe. Als Spieler müssen wir dafür sorgen, dass ihm nicht die Kraft ausgeht. Dafür hält das Match-3 her, auf dem Spielfeld sind Zeichen für Ressourcen, Angriffstechniken und das Öffnen von Schlössern verteilt. Je nach Aufgabe, der sich der Held gegenüber sieht, müssen mindestens drei der entsprechenden Felder verbunden werden, damit deren Kraft freigesetzt wird. Je länger der Held überlebt, desto näher kommt er dem Punktziel. Zwischen den einzelnen Läufen im Dungeon kann der Held die Ressourcen auch noch in kleinen Shops auf den Kopf hauen. Die Verbesserungen lassen das Ziel der zehn Millionen Punkte dann nicht mehr ganz so utopisch klingen, wie es anfangs erscheint.

Als Hybrid macht 10000000 vieles richtig. Ein gut umgesetzter Rollenspiel- und Leveling-Anteil macht jedes Spiel attraktiver; und hier ist es sehr gut umgesetzt, wenn der Fortschritt auch ein wenig zu linear verläuft. Bis das Ziel des erreicht ist, vergehen so ein paar Stunden. Überwiegend auch wie im Flug, denn nur selten kommt Langeweile auf. Dennoch bezweifle ich, dass es ein sehr langlebiges Spiel ist, denn dafür ist es langfristig zu monoton. Aber sehr gut für das, was es sein will.

Rise Alarm Clock – Aufstehen

Aufgepasst, Freunde des gepflegten Minimalismus, heute ist Rise Alarm Clock kostenlos. Eigentlich ist sie überflüssig, iOS bringt doch einen Wecker schon mit. Aber wie so oft, die native App bringt nur die allernötigsten Funktionen mit.

Bei Rise ist jedes Fett sorgsam abgeschnitten, die App ist vorbildlich designt. Die Weckzeit kann per Touch einfach eingestellt werden, da ist es nur bedauerlich, dass Rise immer bloß einen Wecker erlaubt. Komfortabler ist da schon, dass die Klingeltöne erlesen sind und auch noch aus der eigenen Bibliothek ergänzt werden können. Ein weiteres Plus, ich weiß beim besten Willen nicht, warum das so oft unter den Tisch fällt, ist der skalierbare Snooze-Button. Aber am besten einfach mal ausprobieren, schadet ja nichts.