Sonntag, 31. Mai 2015

BLG - der ultimative Geocaching Log Generator

Welcher Geocacher kennt das nicht: den ganzen Tag zum Geocaching unterwegs gewesen und dabei etliche Cache gemacht. Und aufgrund des Leistungsdrucks - die Statistik muss ja stimmen! - waren das so richtig viele Caches. Die müssen auch noch alle online geloggt werden - was eine Arbeit!

Da man schließlich nicht als langweilige und total unkreative Person auffallen möchte, kommen stupide Copy & Paste Logs nicht in Frage.

Also, was tun?

Keine Sorge - hier ist DAS Tool zur Lösung dieses Problems: BLG (ausgesprochen: bi-el-dschi).

BLG ist ein Generator für Geocaching Logs. Diese passen garantiert immer, weil die Logs zwar plausibel, aber völlig nichtssagend sind. Und, da die Logs aus einer Auswahl von vordefinierten Textbausteine per Zufallsgenerator zusammengebaut werden, ist die Anzahl der doppelten Logs gering.

BLG ist in Python geschrieben, und die Bedienung ist total simpel: eine installierte Version von Python 3 vorausgesetzt lädt man BLG einfach herunter, speichert die drei Dateien in ein beliebiges Verzeichnis und führt BLG aus. Und in Nullkommanichts hat man seine Logtexte. Genial einfach, einfach genial.

Hier mal ein Beispiel:

$ python3 blg.py -n 5

Heute ging es nochmal raus ins Freie zwecks Geocaching.
Ohne Probleme gesucht und geloggt.
TFTC
-------------------------
Heute wieder auf Cache-Tour gewesen.
Einer der besuchten Caches war dieser hier.
Danke für's Legen und Pflegen des Caches.
-------------------------
Heute wieder auf Cache-Tour gewesen.
Die Tour führte auch zu diesem Cache.
Danke für's (Pf-) Legen dieses Caches.
-------------------------
Heute nochmal zum Cachen unterwegs gewesen.
Dabei wurde auch diese Dose besucht.
Danke für's Legen und Pflegen des Caches.
-------------------------
Heute unterwegs gewesen, um den eine oder anderen Cache zu machen.
Ohne Probleme gesucht und geloggt.
DFDC
-------------------------


Wie zu sehen ist, werden über die Option -n=5 direkt fünf Logtext generiert.

Du bist öfter im Ausland unterwegs? Kein Problem, denn der BLG kann auch englische Logs generieren, einfach über die Option -l en:

$ python3 blg.py -l en
 

Been today on tour again for some caches.
One of the caches visited was this one.
Thanks for hiding and maintaining this cache.
-------------------------


Wem die hinterlegten Textbausteine auf Dauer zu langweilig sind - auch kein  Problem! Einfach die Datei "template_de.py" (welche die deutschen Textbausteine enthält) um eigene erweitern. Das geht ganz einfach mit jedem beliebigem Texteditor.

Hier nochmal der Download-Link für BLG: Link

Ach ja, zum Schluss noch eine Anmerkung: BLG steht für "Bullshit Log Generator" - womit dann alles gesagt wäre ;-)


Nachtrag: am 2.6. ist eine neuer Version von BLG erschienen. Mehr dazu in diesem Blogartikel.

Donnerstag, 28. Mai 2015

Cache legen und Müll sammeln - einfach so, ohne CITO

Heute haben wir den 140. Cache gelegt und trotzdem gab's noch ein Novum: wir haben vorher Müll im Wald eingesammelt. Also den Müll, der auf dem Weg zum Cache lag. Einfach so, ohne CITO Event.

Das ganze kam so: vor zwei Tagen, als die Koordinaten für den Cache eingemessen wurde, fiel auf, dass da an einigen Stellen Fetzen von Plastikfolie herum lagen. Da das Fleckchen, wo der Cache liegt, sonst sehr schön und idyllisch  ist, wurde der Beschluss gefasst, den Müll dann beim Platzieren des Caches direkt einzusammeln.

Heute machten sich 50% von DerSchnelleLinus auf, genau dies zu tun. Bewaffnet mit zwei Müllgreifzangen, einem Müllsack, ein paar Gummihandschuhen und einem legebreiten Cachebehälter ging's los.

Es ist schon erstaunlich, wie viel Müll so im Wald rumliegt, wenn man genauer hinschaut. Zumal an dieser Stell im Wald eher wenig Leute unterwegs sind.
Und so dauert es auch nur ca. 10 min, bis der Müllsacke voll war. In erster Linie mit Fetzen von Plastikfolie, Reste von Polystyrol-Platten, aber auch ein paar Flaschen, Schokoriegelverpackungen und eine alte, leere Öldose.

Müllsack voll mit Müll, der vor Ort eingesammelt wurde.
Nachdem das erledigt war wurde dann natürlich noch der Cache gelegt (GC5WAHH). Was ja kein Problem ist, darin haben wir Übung ;-)

Jedenfalls war das Müll sammeln kein großer Akt - und die Cachearena ist für die Geoacher, die den neuen Cache besuchen, auch sauber. Mal ganz abgesehen davon, dass der Wald das einem natürlich auch Danke.
Sollte man vielleicht öfters machen... auch ohne CITO Event.

Donnerstag, 14. Mai 2015

Besuch des GPS Maze in Mainz

Heute haben wir  - in voller vierer Teamstärke - das GPS Maze in Mainz besucht. Das GPS Maze ist eine Art spezielles (Geocaching-) Event, welches entwickelt wurde, „um Menschen jeden Alters etwas über die GPS-Technologie und Geocaching durch interaktive Nutzung beizubringen.“ (Quelle).
Das GPS Maze findet erst zum 2. Mal in Europa statt (das erste war 2013 in Prag).

Mainz ist von unserer Homebase ja nicht so weit weg und so waren wir nach ca. 40 min Autofahrt auch schon an der Rheingoldhalle in Mainz, wo das GPS Maze (und auch das Giga Event am Samstag) stattfindet. Geparkt haben wir im Parkhaus unter der Halle, welches ziemlich leer war (liegt vielleicht auch daran, dass das Parken da eher teuer ist...).

Banner an der Rheingoldhalle
Das Parkhaus wurde dann Richtung Rheinufer verlassen. Hier fielen direkt schon einige Menschen mit typischer Geocacher-Haltung auf (d.h. ein Arm angewinkelt, GPSr in der Hand, gesenktes Haupt, Blick auf's GPSr), welche ebenfalls auf der Uferpromenade unterwegs waren.

Am Eingang zum GPS Maze stand schon eine kleine Schlange von ca. 15 Personen. Grund: der Einlass in die Ausstellung wird reguliert. Dafür ist wiederum der Grund, dass drinnen ziemlich wenig Platz ist. Dazu später noch mal mehr.

Nach ein paar kurzen Minuten warten wir dann aber drin. Vom Konzept her gibt es nur eine Laufweg durch die Ausstellung. Dieser Laufweg ist links und rechts durch Infotafeln, Poster und Stationen zum Anfassen und Lernen flankiert. Der Gang ist ca. 3 m breit.

Auf den ersten Tafel gab's dann auch Infos zum Thema GPS, geographischen Referenzsystemen etc. Aber der (deutlich) größere Teil des GPS Maze widmet sich dem Thema Geocaching - Dosengrößen, Verstecke, Verhalten beim Klettern, Verhalten beim Cachen in Höhlen etc. Also eigentlich alles das, was Geocacher, die schon ein bisschen dabei sind, kennen.

Außerdem gab es noch noch ein paar Stationen, wo man aktiv Aufgaben lösen konnte, wie z.B. das Dekodieren von Morsecode, Suchen einer Dose an einer Leitplanke sowie zwei sehr schön gemachten Stationen mit Taschenlampen in einer Art Dunkelkammer.

Groß ist die Ausstellung aber nicht, und so waren wir nach ca. 25 Minuten auch fertig bzw. durch. Am Ausgang liegt dann noch ein Logbuch aus, in das sich eingetragen wurde.

75% von DerSchnelleLinus beim Loggen
Insgesamt ist das GPS Maze gut gemacht - die Infotafel und Poster sind textlich sehr gut und auch design- und drucktechnisch einwandfrei.

Aber: das GPS Maze bietet für Geocacher wenig neues bzw. unbekanntes. Vieles ist eher auf Besucher ausgelegt, die sich mit Geocaching nicht auskennen. Da der Besuch des GPS Maze kostenlos ist (=kein Eintritt), könnten "Muggel" die Ausstellung natürlich auch besuchen. Aber zumindest als wir da waren, waren gefühlt ausschließlich Geocacher dort.

Was wir auch nicht erwartet hatten ist, dass keine Hersteller von GPS-Geräten (wie Garmin oder Magellan) vor Ort waren. Was ja bei einer Veranstaltung zum Thema GPS naheliegend wäre.

Und der dritte Kritikpunkt: das GPS Maze ist ziemlich klein, bezogen auf die Räumlichkeiten. Da wir noch nie auf einem anderen Maze waren haben wir natürlich keinen Vergleich, aber es wäre wesentlich "lockerer" gewesen, wenn man z.B. die einzelnen Stationen inselartig in einem größeren Raum verteilt hätte.

Heute war die Enge kein Problem, aber am Samstag, wenn zeitgleich das Gutenberg Giga läuft, wie tausende von Leuten mehr unterwegs sind, kann man sich wohl auf längere Wartezeiten vor dem Eingang und Gedränge innen drin einstellen.

Unter Strich war der Besuch aber voll ok und kurzweilig. Allerdings würden wir wohl für ein GPS Maze keine größere bzw. weitere Anreise in Kauf nehmen - das lohnt sich dann nämlich nach unserer Meinung nach nicht.

Montag, 4. Mai 2015

Mysterykeeper - gelöste Rätsel-Caches verwalten

Bei Mysterycaches kommt es ja durchaus öfters vor, dass man ein Rätsel löst, aber nicht direkt bzw. zeitnah zum Suchen und Loggen kommt. Also muss man sich die Lösung und die Finalkoordinaten irgendwo speichern.

Klar gibt es das "Anmerkungen zu diesem Listing" Feld in jedem Listing bei geocaching.com, wo man Notizen jeglicher Art hinterlegen kann, die nur für einen selber sichtbar sind. Das ist zwar ganz praktisch, hat aber zwei Nachteile: Erstens muss man online sein, um die Notizen zu sehen und zweitens weiß man so noch nicht, welche Mysteries man gelöst hat, aber noch nicht geloggt. Letzteres könnte man zwar über ein eigene Liste lösen (so fern man Premium Mitglied bei gecaching.com ist), was aber auch ein zusätzlicher Arbeitsschritt wäre - und Listen sind auch noch online abrufbar.

Bis vor kurzem haben wir unsere Lösung für Mysteries (und auch andere Caches wie Multis) in einer JSON-Datei gespeichert (siehe dazu auch unseren Blogbeitrag "Speichern von Lösungen für Mystery- und Multi-Caches" aus Oktober 2013). Das hat auch ganz gut funktioniert, wurde zum Ende hin aber ein bisschen unübersichtlich, weil die JSON-Datei ziemlich lange wurde, eben weil (zu) viele Caches drin enthalten waren.

Also sollte was besseres und vor allem Dingen übersichtlicheres her. Mit GSAK ginge das wohl, aber hier im Hause seit vielen Jahren keine Windows-Lizenz mehr vorhanden, also fällt jede Windows-only Lösung aus.

Da sich 25% von DerSchnelleLinus gerade so wie so mit Django (dem Webframework Nr. 1 für Python) beschäftigten, war das natürlich eine guten Gelegenheit, eine Python- / Django-basierte Lösung zu Basteln.

Gesagt, getan. Das Projekt wurde "Mysterykeeper" getauft, weil es ja in erster Linie um das Speichern von Mysterylösungen geht. Aus heutiger Sicht, also nach dem Hack der geocheck.org Datenbank Ende Januar 2015,  hat der Namen natürlich eine gewisse "Ironie" - aber gut, die Programmierarbeit an "Mysterykeeper" hat bereits 2014 begonnen.

Da Mysterykeeper für die persönliche Nutzungen konzeptioniert ist, ist das ganze auch recht einfach gestrickt: die Eingabe von neuen Daten (=Lösungen) erfolgt über das Admin-Backend, welches Django standardmäßig an Bord hat. Die Abfrage und die Anzeige der Lösungen erfolgt als HTML-Seite, welche von dem Webserver ausgeliefert wird, welcher ebenfalls bei Django an Bord ist.

Da wir das ganze "nur" lokal auf unseren Laptops benutzen gibt es keine zusätzlich Authentifizierung oder Benutzerverwaltung. Diese könnte (bzw. sollte) man aber einbauen, wenn man das ganz über eine  "richtigen" Webserver laufen lässt, welcher über das Internet erreichbar ist.  Was mit und Dank Django auch kein Problem wäre. Ist aber wie gesagt unsererseits aktuell nicht geplant.

Wie das ganze so aussieht wird im folgenden anhand eines Beispiels gezeigt. Der Cache, der für das Beispiel verwendet wird, ist ein Mystery von uns, der bereits im Archiv ist - also kein Spoiler-Alarm.

Wie gesagt erfolgt die Eingabe einer Lösung über das Admin-Backend von Django. Bei laufendem Server ist es unter http://localhost:8000/admin/mysterykeeper/ zu erreichen. Ruft man diese URL auf, sieht man die Startseite der Admin-Backend für Mysterykeeper:

Startseite des Admin-Backends
Wie zu sehen ist, gibt es zwei Tabellen in der Datenbank von Mysterykeeper:
  • "Solution" zum Speichern der Cache-bezogen Daten / Lösungen
  • "Attachment" zum Speichern von Anhängen zum einem Cache (z.B. Bilder u.ä.)
Nach einem Klick auf "Add" gelangt man in die Eingabemaske, welche so aussieht:

Eingabemaske für neue (gelöste) Caches
Aktuell ist die Datenbank so aufgebaut, dass man die folgende Daten eingeben kann:
  • GC-Nummer
  • Cachename
  • Cachetyp
  • Notizen (beliebig langer Text)
  • Finalkoordinaten
  • geloggt (Checkbox - ausgewählt = ja)
  • Ort

Als Cachetyp kann man - neben "Unknown Cache" (der offiziellen Bezeichnung von Groundspeak für Mysteries), wie im obigen Beispiel - auch noch einige andere Cachetypen auswählen, wie im folgenden Bildschirmfoto zu sehen ist:

Cachetypen, welche man in Mysterykeeper speichern kann
Ein Klick auf "Save" speichert die Daten und man gelangt automatisch auf die Übersichtsseite aller gespeicherten Caches. Der zuletzt hinzugefügt steht immer als oberstes in der Liste:

Liste der in Mysterykeeper gespeicherten Lösungen
Wie oben erwähnt, kann man zu jeder Lösung auch noch (beliebig viele) Anhänge hinterlegen, und zwar über die folgende Eingabemaske:

Eingabemaske für Anhänge für gespeicherte Lösungen
So weit, so gut. Wie gesagt erfolgt die Anzeige und Abfrage der gespeicherten Lösung über HTML-Seiten, welche vom Django-Server ausgeliefert werden. Ruft man die URL http://localhost:8000/mysterykeeper/ auf, so erscheint folgende Startseite:

Liste der gelösten, aber noch nicht geloggten Caches

Aufgelistet werden, sortiert nach GC-Nummer, alles gelösten, aber noch nicht geloggten (=gefundenen) Caches. Die Sortierung lässt sich durch eine Klick auf die Spaltenüberschrift auch nach anderen Tabellenspalten sortieren.

Klick man auf die GC-Nummer, erscheinen die Details zum Cache:

Details zu einem in Mysterykeeper hinterlegtem Cache
Hier sieht man alles, was man in der Eingabemaske des Admin-Backends eingegeben hat. Die drei Schaltfläche "Show at Google Maps", "Show at OSM", "Show Listing" sind wohl selbsterklärend: Die ersten beiden rufen Google Maps bzw. Open Street Map auf und zeigen eine Karte, wo das Final des Caches mit einem Marker markiert ist. Letztere Schaltfläche ruft das Listing bei geocaching.com auf.

Ein Klick auf "Mark as logged" markiert den Cache als geloggt. Als Sicherung gegen versehentliches Anklicken erfolgt danach noch eine Sicherheitsabfrage, ob man den Cache wirklich als "geloggt" markieren möchte.

Sicherheitsabfrage, ob man einen Cache wirklich als "geloggt" kennzeichnen möchte.

Neben der Standardanzeige der gelösten, aber ungeloggten Caches, kann man sich auf der Startseite auch noch alles Caches (unabhängig davon, ob geloggt oder nicht) anzeigen lassen bzw. man kann sich auch nur alle geloggten Caches ausgeben lassen.

Ein weiteres Feature des Mysterykeepers ist die Suche nach gelösten, aber nicht geloggten Caches in einem frei bestimmbaren Umkreis um vorzugebende Koordinaten:

Suche nach gelösten Cache im Umkreis nach vorzugebenden Koordinaten
Das Ergebnis sieht dann z.B so aus:


So weit, so gut. Von der Funktionalität her bietet der Mysterykeeper alles, was wir für uns brauchen. Und wenn mal irgendwann noch was fehlt wird's halt dazu programmiert.

Wir selber haben das Programm seit einiger Zeit im Einsatz und es ist: praktisch. Vor allem haben wir nach der Datenübernahme aus der alten JSON-Datei erst Mal gesehen, wie viele gelöste aber noch nicht gesuchte und nicht geloggte Mysteries wird so haben...

Ob der Programmcode irgendwann auch mal in einem öffentlich zugänglichem Repositry liegen wird steht noch nicht fest. Nicht, weil er closed source oder streng geheim wäre oder so - aber in erster Linie nutzen wird Mysterykeeper ja für uns selber.

Falls jemand Interesse am Code hat und diesen haben möchte - kein Problem, können wir zusenden. Dazu uns einfach kontaktieren. Wer eine leise Ahnung von Python und Django hat sollte auch keine Probleme haben, den Mysterykeeper bei sich lokal zum Laufen zu bringen.

Und wenn sich noch jemand fragt, warum das Programm (noch) komplett auf Englisch ist: das ist a) die Macht der Gewohnheit und b) ein gegebener Anlass, später auch mal das i18n-Modul von Django zur Übersetzung / Eindeutschung zu nutzen.


Nachtrag: Mysterykeeper kann (natürlich) auch mit Caches umgehen, die bei opencaching.de gelistet sind. Bei einem Klick auf "Show Listing" wird dann halt die Seite von opencaching.de (statt geocaching.com) aufgerufen.