Mein 19. GP

Am Samstag bin ich zum 19. Mal den GP gerannt. Dank etwas intensiviertem Training gegenüber anderen Jahren habe ich mein Ziel voll und ganz erreicht: Wenn möglich unter 1:15 und danach noch einen gemütlichen Abend haben.

Weil ich beim Graben in meinen Daten eine XLS-Datei mit einer Zusammenstellung von alten GP-Zeiten gefunden habe und mit der GP-Resultate-Datenbank diese ergänzen konnte, habe ich das Ganze versucht etwas schön darzustellen.

Das Resultat daraus ist untenstehendes Bild, die Zeiten aller meiner bisher gerannten GPs.
Von links nach rechts die Zeit, von unten nach oben die Jahre.

Auf ein nächstes, 20. Mal!

Keine ‘recommended readings’ mehr

In naher Zukunft wird es hier keine ‘recommended readings’ mehr geben.
Irgendwas am Zusammenspiel der verschiedenen Komponenten funktioniert nicht mehr.

Ich vermute mal, dass der Hauptteil der Schuld bei del.icio.us liegt, denn mein RSS-Feed dort funktioniert nicht mehr.
Das heisst auch, dass das IFTTT-Rezept oder das WordPress-Plugin nichts mehr machen können.
Und ohne die Automatisierung ist mir das Ganze dann doch etwas zu aufwändig.

Wer weiterhin wissen will, was ich gerne gelesen habe, findet drüben bei Instapaper die Zusammenstellung. Ich bin auch dankbar für Tipps, um die Automatisierung wieder zu beleben, gerne auch mit einem anderen Dienst als del.icio.us. Das scheint nämlich schon länger auf dem absteigenden Ast zu sein…

Mit 3D-gedrucktem Zeugs rum(ve)lölen

Ich hab’ ja letzthin schon mal über den 3D-Drucker geschrieben, den wir im Büro haben.
Zum Selbstkosten-Preis kann ich mir da ab und zu auch ‘was ausdrucken, auch so Dinge, die nicht an den Kinderwagen passen.

Zusätzlich bin ich schon eine Weile etwas aktiv bei Mapillary dabei, das mit User-Fotos hilft, unter anderem OpenStreetMap zu verbessern.
Dass ich gerne Velo fahre und seit neuerem eine kleine GoPro-Kamera habe, wissen die Mitlesenden hier.

Wenn mensch das mit etwas reverse engineering (Schublehre und iterative Verbesserung) und der Velolicht-Halterung an meinem Lenker kombiniert, kommt dabei das unten eingebundene Objekt raus; ein Zwischenstück, um die Kamera am Lenker zu befestigen.

Das heisst, ich kann jetzt ohne grossen Aufwand mit dem Velo rumfahren und so etwas die Welt OpenStreetMap verbessern.
Angewendet bei einem Ausflug an den Wohlensee vor ein paar Tagen sieht das Ganze dann so aus.

Where was I in 2016

Hier einer weiterer Post zum Rückblick aufs 2016. Die anderen sind unter dem Tag jahresrückblick16 zu finden.

Weil ich dieses Jahr viel mehr mit Python gearbeitet habe, habe ich meinen Geodaten-Jahresrückblick von R in Python transferiert. In einem Jupyter-Notebook arbeitet es sich einfach viel schneller und iterativer :)

Leider habe ich es nicht geschafft, den Markdown- oder HTML-Export der “Analyse” so klein zu machen, dass dieser von WordPress-Editor geschluckt wird (> 4 MB ASCII-Text ist scheinbar zuviel).
Deshalb sind die Details meines Bewegungs-Profils von 2016 (in Englisch) entweder hier auf GitHub, hier mit den Jupyter Notebook Viewer oder unten eingebunden zu finden.

2016 in Bildern

Hier einer weiterer Post zum Rückblick aufs 2016. Die anderen sind unter dem Tag jahresrückblick16 zu finden.

Das Jahr war voll von wunderbaren Momenten mit Bekannten, Freunden und Familie. Hier eine kleine Auswahl von Fotos, die mir beim Blättern im Archiv aufgefallen sind.

 

Januar 2016
Die Diveleader des DCK putzen im Blausee. Auf dem Weg dahin fahre ich das erste Mal in einem Tesla, dem von Sacha. Doppelt cool!

Februar 2016
Mit Mark und Jo und Nina und A. in dem Bergen. Wunderschön.

März 2016
Eine (Ski)Woche auf der Bettmeralp. Das war die Aussicht vom Balkon.

April 2016
Grandioser Saisonabschluss mit Yves (und freier Ferse).

Mai 2016
Die traditionelle Auffahrt-Ausfahrt mal zu dritt. Ein paar Tage um den Murtensee rum.

Juni 2016
Lange gesucht, endlich gefunden :)

Juli 2016
Eine Woche in Thun auswärts schlafen und trotzdem schaffen. Wie Ferien, nur viel näher.

August 2016
Sonntags-Spaziergang auf der Moosalp. Bei Kaiserwetter.

September 2016
Zu dritt über den Pragelpass. Nachdem wir am Tag davor [zu siebt über den Klausenpass] fuhren. Danke freipass.ch!

Oktober 2016
Den Sommer verlängern in Marokko. Unglaublich schön, nicht nur am Strand.

November 2016
Skisaisonstart in Zermatt. Leider nur am Sonntag statt das ganze Wochenende, aber dafür gefahren wie Wilde.

Dezember 2016
Der Blick auf den Thunersee beim Runterwandern vom Niederhorn. Einer der vielen Lichtblicke im 2016.

PS: Habt ihr die Jahresrückblicke von Mark und Jan auch gesehen?

Der Rückblick auf mich selbst im 2016

Hier einer meiner Post zum Jahresrückblick aufs 2016. Die anderen (kommenden) sind unter dem Tag jahresrückblick16 zu finden.

Wie im 2014 und 2015 habe ich mit der Everyday App praktisch jeden Tag ein Selfie gemacht. Mit dem gleichen Skript wie letztes Jahr habe ich meine 332 Selfies ausgerichtet. Zusammengesetzt mit der Zeitraffer-App kommt schlussendlich dieses Video hier raus.

So seh’ ich aus, wenn mensch den Durchschnitt aus allen 332 ausgerichteten Bildern macht. Mein durchschnittliches Gesicht im 2016.

Habis average face for 2016

Making of: Neujahrskärtli 2017

Wie letztes Jahr, für die, die’s wunder nimmt. Das ‘Making Of’ meines Neujahrskärtlis.

Zutaten:
– Ein Fieldpapers-Ausdruck, Blofi und Radiergummi.
myTracks zum Aufzeichnen von GPX-Tracks, Velo und zwei Mittagspausen.

Zubereitung:
– Etwas Python-Code in einem Jupyter Notebook.
– Das Endresultat zusammen mit einer Rückseite aus ein paar Emojis und etwas Text auf Postkarten mit WebStamp drucken und ab die Post.

Resultat:
– Happy New Year: davidhaberthür.ch/2017

Wer sich für die komplette Entstehungsgeschichte interessiert, findet die ganze Geschichte in diesem GitHub-Repository.

Geld weitergeben

Wer mir bei Twitter folgt, hat’s letzthin evtl. schon gesehen, ich habe mit Lizenzierungsgebühren von meinen zwei Panoramafotos vom Times Square in New York [1] und [2] 250 € verdient.

Das ist schön, aber für ein Auswärts-Essen mit Nina brauche ich nicht so viel Geld.
Also habe ich den Rest gespendet (per PayPal, wo der Original-Betrag auch hinkam).

Und zwar

  • 100$ an die Syrischen Weisshelme, damit die weiter helfen können, wo es nötig ist.
  • 50 CHF an die Caritas Bern, um das Lädeli im Quartier neben uns etwas zu unterstützen.
  • 25 CHF an Public Eye/EVB, damit das mit der Globalisierung evtl. doch noch gut kommt.
  • 15 CHF an die Wikimedia-Stiftung, damit ich weiterhin von der unglaublichen Enzyklopädie Gebrauch machen kann.
  • 10$ an das Internet Archiv, weil mir das am Herzen liegt.

Spenden

Einfache Probleme, völlig over-engineered

Ich weiss, ich hab’ schon lange versprochen, ich schreibe mal über meine neue Arbeit. Was ich letzte Woche mal so nebenbei gemacht habe, gibt mir die Gelegenheit dazu. 3 Dinge kommen zusammen, die diesen Blog-Eintrag ausmachen: Die neue Arbeit, 3D-Drucker und ein Flug zurück von Marokko.

Seit Juni arbeite ich nicht mehr am PSI, sondern wieder an der Uni Bern, speziellerweise im selben Haus, in dem ich die Doktorarbeit geschrieben habe. Ich beschäftige mich immer noch mit hochauflösender Röntgen-Tomographie, einfach nicht mehr mit einer Synchroton-Röntgenquelle und einem krassen Aufbau auf einem Labortisch, sondern arbeite an zwei kommerziell erhältlichen Tisch-MikroCT-Geräten. Da kommt es z.B. mal vor, dass ein kleiner Fisch genauer angeschaut wird…

Coolerweise haben wir dort einen primasuprigen 3D-Drucker, mit dem ich einiges an angepassten Probenhaltern ausgedruckt habe, damit wir allerlei verschiedene Proben in unseren Geräten mikro-tomografieren können.

Und eben, letzthin waren wir in Marokko in den Ferien. Das war wunderbar, auch mit der Kleinen. Beim Rückflug ist an unserem Kinderwagen ein Kleinteil abgebrochen, irgendwo beim Ein- oder Ausladen, oder bein Zusammenlegen oder Auseinanderklappen, spielt ja keine Rolle…

Und jetzt kommt alles zusammen: Glücklicherweise ist das Kleinteil symetrisch an unserem Kinderwagen vorhanden. Also habe ich vom noch ganzen Teil im MikroCT eine Röntgentomographie-Aufnahme gemacht. Mit etwas Bildbearbeitung entsteht aus dieser Tomografie-Aufnahme das untenstehende Bild.
Phil und Teds-Stück, animiert
Dieser Datensatz kann dann in ImageJ als STL-Datei exportiert werden, ein Datenformat, welches der 3D-Drucker versteht. Nach gut 2 Stunden Warten sieht das Ding dann – frisch aus dem Drucker – so aus.

Fertiger print, 1
Fertiger print, 2

Farblich nicht ganz passend, aber von der Form her passt’s perfekt. Nachdem die Stützstrukturen entfernt wurden kann das Ding endlich montiert werden und sieht dann so aus. Alles viel einfacher als das Ersatzteil im Laden besorgen, oder?

Montiert

Also, Herr Chm, falls bei Ihnen dasselbe Teil abbricht, melden Sie sich, ich kann’s gerne nochmals ausdrucken…

Die Aussicht vom Balkon

Mitte März waren wir für eine Woche auf der Bettmeralp, im Chalet Rosemarie. Eine Woche mit viel Skifahren (Free Heel), Spazieren und Sonne. Und kaum zu glauben, dass wir schon den ersten Geburtstag der Kleinen gefeiert haben.

In zwei Nächten war extrem klare Sicht vom Balkon und ich hab’ meine Kamera rausgestellt. Dabei entstand folgende kurze Zeitraffer-Sequenz.

Wer ein paar Fotos sehen will, findet diese hier.

Cargo

Ein kurzer Zombie-Film, der etwas anders ist als alle anderen Zombie-Filme. Und mir fast ein Träänli in die Augen trieb. Aber seht selbst.

Was wäre, wenn die Sterne still stehen würden?

Über Neujahr waren wir in Unterbäch. Vom Dachfenster aus hatten wir eine prima Sicht aufs Bietschhorn, leider war der Himmel nur an einem Abend halbwegs wolkenlos.

Weil ich den Fotoapparat aufs Dach gestellt habe, ist diese kurze Zeitraffer-Sequenz herausgekommen. Gut zwei Stunden, komprimiert auf 10 Sekunden.

Dann habe ich mich gefragt, wie es ächt aussehen würde, wenn die Sterne stillstehen und habe die Fotos als Fingerübung mit hugin ao ausgerichtet, dass die Sterne fixiert bleiben (Wen’s interessiert wie, der/die fragt in den Kommentaren nacht).

Mit still stehenden Sternen sieht das dann so aus.

Und – wie schon in der Konkordia-Hütte – hab’ ich auch ohne Kompass wieder recht gut gegen Norden gezielt

StarStaX__DerBergStehtStill0000-_DerBergStehtStill0202_lighten

Where have I been in 2015

Hier ein weiterer meiner Jahresrückblick 2015-Posts. Die anderen sind unter dem Tag jahresrückblick15 zu finden.

Weil das letzte Mal schon auf Englisch, hier grad wieder.


I’ve updated the RMarkdown-document of the “analysis” of my yearly Geodata a bit. Namely, I parametrized the shizzle out of it, switched to the freely available Stamen maps (based on OpenStreetMap data) and – something which I’m quite prowd of myself – implemented a function to automagically extract the name of a location based on its latitude and longitude from the GeoNames database.

The original file with the full code can be found either on GitHub or on RPubs, the result is pasted below.


Introduction

I tracked my location data with OpenPaths since the beginning of 2014.
OpenPaths comes as an application for your phone, which tracks its location, uploads it to the OpenPath servers.
You can then donate your data for scientific research and also look at the data yourself, which is what we do here.

To be able to do this, we grab a .CSV file with the location data.
Log in to OpenPaths, and click on CSV under Download my data, which gives you a comma separated list of your location data, which can then visualize with R, which is what we’ve done here.

Data

We want to plot the location points on a map, which we can do with the wonderful ggmap library.
To get the place names from the GeoNames Web Services, we need the RCurl library, to parse the output XML, we obviously need the XML library.

First, we load the data file and then remove all the datapoints where we have an altitudes of ‘0’ (which is probably a fluke in the GPS data)
Obviously, we only want to look at this years data, we thus save a subset of the dataset for further processing.

library(ggmap)
library(RCurl)
library(XML)
data <- read.csv("/Users/habi/Dev/R/openpaths_habi.csv")
data$alt[data$alt == 0] <- NA
whichyear <- 2015
thisyear <- subset(data, grepl(whichyear, data$date))

Since we’re going to use it often, we’re making a function to grab the name of a place based on its latitude and longitude.

geoname <- function(lat,lon){
  # Grab GeoNames XML from their API, according to location
  txt = getURL(paste0("http://api.geonames.org/findNearbyPostalCodes?lat=", lat, "&lng=", lon, "&username=habi", collabse = NULL), .encoding = 'UTF-8', .mapUnicode = TRUE)
  # Parse XML tree
  xmldata <- htmlTreeParse(txt, asText=TRUE)
  # Extract <name> node (with empirically found location)
  Name <- xmldata$children[[2]][[1]][[1]][[1]][[2]][[1]]
  # Since we're only using the name as string, we can return it as such
 return(unlist(Name)[[2]])
}

Then, we display a summary of the geographical points.

summary(thisyear$lat)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   45.92   46.94   47.01   47.14   47.45   50.05
summary(thisyear$lon)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   6.562   7.432   7.695   7.826   8.211   9.999
summary(thisyear$alt)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   84.85  363.10  533.00  541.90  554.20 3400.00     228

In 2015 I was in the mean somewhere close to Auswil.
I’ve lived at 541.9 m AMSL in the mean.

The .csv file also contains information about the iPhone we’ve used to collect the data.
Let’s look at these.

summary(thisyear$device)
## iPhone4,1 iPhone6,2 
##         0      8290

We see that in 2015 I have only used one phone, my iPhone 5S (iPhone6,2) and went through 9 different iOS version numbers.

summary(thisyear$os)
## 7.0.4 7.0.6   7.1 7.1.1 7.1.2   8.0 8.0.2   8.1 8.1.1 8.1.2 8.1.3   8.2 
##     0     0     0     0     0     0     0     0     0   614   933   347 
##   8.3   8.4   9.0   9.1   9.2 9.2.1 
##  1653   374  1365  1808   997   199

If we assume that I’ve tracked my location consistently, then I’ve used iOS 9.1 the longest, with 1808 saved data points.

Location data

Extremes

Interesting points in my yearly location data:

  • The minimal and maximal latitudes of 45.917 and 50.047, South and North respectively.
  • the minimal and maximal longitudes of 6.562 to 9.999, East and West respectively.
  • as well as the altitude, which ranges from 84.8 m AMSL to 3399.9 m AMSL.

We can get the extreme points out of the data pretty easily.
To do so, we subset the data depending on the value we want to have, construct a Location from these points, grab the map tile from that location, put a marker on top of it and display this is an image.

For the northmost point, this goes like so:

NLocation = c(lon=subset(thisyear, lat==max(thisyear$lat))$lon[1],
              lat=subset(thisyear, lat==max(thisyear$lat))$lat[1])
mapImage<- get_map(location= NLocation, source='stamen', maptype='toner-hybrid', zoom=10)
ggmap(mapImage) +
  geom_point(aes(x = subset(thisyear, lat==max(thisyear$lat))$lon[1],
                 y = subset(thisyear, lat==max(thisyear$lat))$lat[1]),
             alpha = .125,
             color="darkred",
             size = 10) +
  ggtitle(paste("Northmost point in", whichyear))

North

The northmost point in 2015 is in Kiedrich, which is true.
Even though I’ve not been in Kiedrich exactly, my mobile phone was probably connected to a tower there.
I spent two days in Ingelheim in January, at the International Masters competition in Swimming, which is close by.

The rest of the extremes can be extracted accordingly.

East

The most eastern point was in the Rehmen, during the first vacation with our (then) newborn daughter in the Bregenzer Wald.

South

The most southern point was in Breuil, while skiing in Zermatt.

West

The most western point was in St-Sulpice VD, during a meeting at the EPFL in Lausanne for working on the GlobalDiagnostiX project.

High

The highest point in 2015 at 3399.9 m AMSL was close to Zermatt on the Furgsattel.

Low

The lowest point at 84.8 m AMSL was in Gau-Algesheim, close to Ingelheim.

Where was I in Switzerland?

To plot the obtained data on a map, we have to center the resulting map location.
Since I only want to show the data points in Switzerland, we center the map on that.
Afterwards, we can simply plot all the thisyear geolocation points on top of that image, and you can see where I was in Switzerland in 2015.

HomeBase <- get_map(location= 'Switzerland', source = 'stamen', maptype='toner-hybrid', zoom=8)
AllPoints <- data.frame(lon=thisyear$lon, lat=thisyear$lat)
ggmap(HomeBase) + geom_point(aes(x = lon, y = lat),
                             data = AllPoints,
                             size = 3,
                             alpha = 0.125,
                             color="darkred") +
    ggtitle(paste("Where was Habi in Switzerland in", whichyear))

Switzerland