geo­da­ten-vi­be-co­ding

felix schwenzel in über wirres

ich gebe zu, ich ma­che hier nicht al­les selbst. ich las­se mir hel­fen. zu­min­dest bei der tech­nik. aber das ma­chen fast alle. man stellt sich auf die schul­tern von gi­gan­ten und nutzt das, was an­de­re ge­baut ha­ben. word­press, drup­al, hugo, yekyll, mi­cro­blog, wha­te­ver. un­zäh­li­ge plug­in er­wei­tern uns al­len die mög­lich­kei­ten. die we­nigs­ten bau­en sich ihr CMS selbst, aus­nah­men be­stä­tiugen die re­geln.

ich habe mich für kir­by ent­schie­den, habe da­für eine be­sch­ei­de­ne li­zenz­ge­bühr be­zahlt und zah­le auch für ein paar plug­ins. und ich zah­le mitt­ler­wei­le auch ei­nen pro­gram­mier-as­sis­ten­ten — dem git­hub ko­pi­lo­ten — ein statt­li­ches mo­nats­ge­halt von um die 50 €. aber ich fin­de das lohnt sich. ich schrau­be täg­lich ir­gend­wo am blog rum und der ko­pi­lot hilft mir die sa­chen bes­ser zu ver­ste­hen, bes­se­re lö­sun­gen zu fin­den und klei­ni­ge­kei­ten zu per­fek­tio­nie­ren. ich bin kein gu­ter pro­gram­mie­rer, aber ich ver­ste­he ei­ni­ger­mas­sen um was es geht, was wich­tig ist und habe eine gute vor­stel­lung da­von wo ich hin will. der ko­pi­lot hilft mir we­ni­ger schlecht zu pro­gram­mie­ren (frei nach pas­sig).

in den letz­ten ta­gen hat mir der ko­pi­lot auch da­bei ge­hol­fen über­haupt zu ver­ste­hen was mein der­zei­ti­ges lieb­lings­plug­in kir­by-seo über­haupt kann und wie man es im­ple­men­tiert. ich hat­te zwar so eine ah­nung, aber mit der doku wäre ich nie dar­auf ge­kom­men, wie ein­fach es da­mit ist mei­ne blog ma­schi­nen­les­ba­rer zu ma­chen. und wie ele­gant das al­les im­ple­men­tiert und zu nut­zen ist.

// Blog­Pos­ting Sche­ma
$sche­ma = $page->sche­ma('Blog­Pos­ting')
      ->url($page->me­ta­da­ta()->ca­no­ni­cal­Url())
      ->da­te­Pu­blished($page->date()->to­Da­te('c'))
      ->da­te­Mo­di­fied($page->mo­di­fied('c'))
      ->de­scrip­ti­on($page->me­ta­da­ta()->me­ta­De­scrip­ti­on())
      ->in­Lan­guage('de')
      ->head­line($page->title());

if ($aut­hor) {
    $sche­ma->aut­hor(
        sche­ma('Per­son')
            ->name($aut­hor->name()->va­lue())
            ->url($aut­hor->url())
    );
}

// OG-Bild hin­zu­fü­gen falls vor­han­den
$ogI­mage = $page->me­ta­da­ta()->get('ogI­mage')->to­Fi­le();
if (!$ogI­mage && $co­ver1) {
    $ogI­mage = $co­ver1;
}
if ($ogI­mage) {
    $sche­ma->image($ogI­mage->url());
}

ge­le­gent­lich sass ich vorm bild­schirm und sag­te aus­ver­se­hen zu mir selbst: „wow!“ ob­wohl ich ei­gent­lich gar nicht mit mir selbst spre­che.

an­de­rer­sei­te: oft ist der ko­pi­lot über­for­dert, noch öf­ter baut er scheis­se, über­sieht de­tails, ver­gisst dass ich kir­by 5.1 nut­ze und nicht die kir­by-ver­si­on, die ge­ra­de ak­tu­ell war, als er in der leh­re war.

aber manch­mal über­rascht er mich auch. eben habe ich es ge­fragt:

ich habe fol­gen­de idee:

ein php script das ein­mal pro tag alle lo­ca­ti­on da­ten aus al­len ar­ti­kel klaubt und in ei­ner json da­tei si­chert.

dar­aus wür­de ein an­de­res script eine da­tei ma­chen, mit der ich für jede lo­ca­ti­on ei­nen mar­ker auf ei­ner kar­te dar­stel­len könn­te. am bes­ten ir­gend­wie mit open street map, ger­ne auch ex­tern ge­hos­tet. hast du ideen für die um­set­zung?

aus die­ser an­for­de­rung hat der ko­pi­lot in­ner­halb von 2 mi­nu­ten ei­nen funk­tio­nie­ren­den pro­to­ty­pen ge­baut: wir­res.net/kar­te. da war ich ziem­lich baff.

wir ha­ben noch ein stun­de ge­mein­sam et­was an der kar­te ge­feilt, da­tums­for­mat ein­deut­schen, clus­ter­ring der lo­ca­ti­on pins, bild-thum­nails hin­zu­fü­gen — und das wars mehr oder we­ni­ger.

screenshot der karte die ich zusmamen mit dem kopiloten (einem LLM) gebaut habe. im grossraum berlin sieht man um die 1200 gepinnte orte, in schottland um die 100, in hamburg um die 150.

die geo­da­ten samm­le ich seit 2008. gröss­ten­teils stam­men sie von in­sta­gram und check­ins, aber auch frei-hand habe ich vie­le ar­ti­kel mit geo­da­ten ver­se­hen. ak­tu­ell liest kir­by auch geo­da­ten aus hoch­ge­la­de­nen fo­tos aus, wes­halb die ak­tu­el­le­ren geo­da­ten et­was aku­ra­ter sind als das was von in­sta­gram kommt.

wenn ich auf in­sta­gram fo­tos von spa­zier­gän­gen in den reh­ber­gen pos­te, lan­det der lo­ca­ti­on pin im­mer auf der cat­cher-wie­se.

das ist na­tür­lich al­les ein rab­bit hole ohne ende. ir­gend­wann muss ich den in­sta­gram lo­ca­ti­on-scheiss auf­räu­men, die th­umb­nails könn­te qua­dra­tisch sein und ich ver­mis­se fo­tos die ich dach­te, sie sei­en ei­gent­lich mit geo­tags ver­se­hen.

aber es ist schön so im ei­ge­nen œu­vre zu stö­bern. und ohne hil­fe vom ko­pi­lo­ten, hät­te ich die­sen ar­ti­kel erst in 6 bis 8 mo­na­ten ge­schrie­ben. weil ich dann erst da­mit fer­tig ge­wor­den wäre.

p.s.: die kar­te ist ei­ner der we­ni­gen orte hier auf wir­res.net, an dem ex­ter­ne da­ten (ja­va­script, open-street-map kar­ten-ka­cheln, etc.).

p.p.s.: den ar­ti­kel zu schrei­ben hat dop­pelt so lan­ge ge­dau­ert wie die kar­te zu bau­en.