Reseplanering med Vilkenresa.se

Posted in Osorterad on september 2nd, 2012 by Clas – 1 Comment

I mitten av augusti började Samtrafiken publicera stora delar Sveriges kollektivtrafiktidtabeller på Trafiklab.se. Bara någon vecka tidigare så lanserdes en officiell reseplanerare för Portland, USA, utvecklad som open-source-mjukvaran OpenTripPlanner.

Mitt senaste projekt har varit att hämta dessa GTFS-data från Samtrafiken och stoppa in i OpenTripPlanner. Det gick fort. Det som behövdes var att ladda ned en version av OpenTripPlanner och GTFS-filen från Samtrafiken och lägga den i rätt katalog. Det enda kruxet är att GTFS-filen för Sverige är ganska stor, då den omfattar tidtabellerna från Sveriges kollektivtrafikoperatörer. Det OpenTripPlanner gör är att utifrån GTFS-data identifiera vilket område som täcks (hela Sverige), extrahera detta område från OpenStreetMap (OSM), och använda OSM-data för att bygga ett nätverk med resemöjligheter. OpenTripPlanner består också av en funktion för att hitta ”bästa rutt” i detta nätverk, vilket kan presenteras för användare endera som XML/JSON-feed, eller som en ruttplanering på en karta och med färdbeskrivning, ungefär som Google Maps.

För att sätta upp systemet på en webbserver krävs inte så mycket mer än detta, i alla fall inte om du redan har en server som kör en Java application server. Ett krav för att kunna använda Samtrafikens GTFS-data i OpenTripPlanner är, i princip, att du har en server med 8GB RAM. Då jag inte hade någon sådan så satte jag upp en Elastic Cloud Server hos Ipeer.se. Samtidigt som jag experimenterar med OpenTripPlanner provar jag alltså Ipeer för första gången.

Min ”svenska” reseplanerare finns på Vilkenresa.se.



Vilkenresa.se innehåller en grafisk reseplanerare, och ett API för att få förslag på resor i XML/JSON-format. Det Samtrafiken publicerar i sitt ”API” är en stor fil med kollektivtrafiktidtabeller; det Vilkenresa.se:s API ger är förslag på resor givet en tidpunkt och en start- och slutpunkt.

Den initiala planen är att kunna använda data from Samtrafikens GTFS-data, via mitt API på Vilkenresa.se, för att jämföra resor, och ge förslag på alternativa resor, till min Android-app Reslogg.

Medaljer till alla

Posted in Osorterad on augusti 5th, 2012 by Clas – Kommentering avstängd

Min resespårningsapp Reslogg har nu tagit ett första steg mot ”spelifiering” (gamifcation). Jag delar ut medaljer beroende på hur många resor, reslängd och restid som registreras. Det är inte så avancerat precis, utan det är mest en kul grej för att göra något av kod-snuttarna jag skrivit för att beräkna reslängder och restider. Min plan är att det ska bli mer ”spelifiering” i framtiden, och jag hoppas att jag kan jag få lite tips från Coursera-kursen Gamification som jag planerar att gå. Kursen startar den 27 augusti.



Njuice tillbaka igen

Posted in Osorterad on augusti 2nd, 2012 by Clas – 1 Comment

Under 2006 skrev jag om den nyhetsaggregeringssajt som då hette GeekBoys och som omlanserades som Njuice. För att par dagar sedan så re-lanserades Njuice. Andreas skriver själv lite mer om tekniken bakom sajten på sin blog. Samma snubbe driver även sajten Collected.info.

Njuice verkar ha gjort ett bra jobb med marknadsföringen, då det är relativt många som skrivit om sajten, t.ex. TheNextWeb.

Njuice använder tweet från Twitter och shares från Facebook för att hitta nyheter, och för att rangordna dem. Njuice visar mycket bilder, alla hämtade från källans nyhetssida. De har lagt på ett litet ”filter” som dels förminskar bilderna något, dels lägger på ett ”honungsmönster”; antagligen för att det inte ska betraktas som ren ”bildstöld”. Njuice har bara engelskspråkiga källor, och jag har inte hittat något svensk (eller dansk) sajt med bland källorna.

Njuice har även en sökfunktion (baserad på MySQL verkar det som, enligt bloggen). Sökningen vekar inte söka igenom hela artiklar, bara sådant som finns i RSS-data enligt mitt test, även om Andreas skriver att Njuice ”Extracts article content” på sin blogg.

När man klickar på en nyhetsrubrik så hamnar man på ”källsajten”, men får en list längst upp med Njuice logga och sökruta samt med möjlighet att visa nyheten utan reklam (med hjälp av ett så kallat ”readability”-script – en snygg lösning för användaren.

Njuice finns som app på iTunes (en web wrapper) för iPhone och Ipad.

Eniro tar bort nyhetssöket

Posted in Osorterad on juli 20th, 2012 by Clas – Kommentering avstängd

Eniro.se har sedan ett par år haft en ”flik” för nyhetssök, utöver sin person-, företags-, kart- och webb-sök. Eniro kör sin egen person-, kart-, och företagssök och webbsöket är från Google. Nyhetssöket var från AITellU, men Eniro har alltså slutat köpa in det från dem. Lite synd att denna publika nyhetssökmotor försvann, då det var en bra ”benchmark” för min nyhetr.se.



Sökstatistik

Posted in Osorterad on juli 19th, 2012 by Clas – Kommentering avstängd

Jag har gjort ett par sidor där lite statistik om nyhetr.se visas. Just nu finns två sidor. En sida med lite statistik på vilka källor som nyligen uppdaterats och hur många artiklar som indexeras på dag. Den andra sidan visar upp vilka sökningar som gjorts. Denna lista är helt ocensurerad, och omfattar de sökningar som görs på webbsidan, inte via API.

Statistiken om artikelkällorna finns på sidan med källor och listan med sökord på sökordssidan.

Har du förslag på någon mer statistik som du tycker vore intressant att se?

Tour de France 2012 Twitter tweets

Posted in Osorterad on juni 26th, 2012 by Clas – Kommentering avstängd

Jag har gjort en riktig ”old school”-sida, http://nyhetr.se/tdf/ som visar Twitter-inlägg från team och cyklister i kommande Tour de France 2012. Inte någon avancerad sida precis; den hämtar och visar Twitterinlägg. Utseendet är baserat på Twitter Boostrap-mallen så att den blir okej i mobilen också. Mest jobb var det att leta fram de 125 Twitter-konton för team:en och cyklisterna i Tour de France 2012. Twitter-listan är finns på @nicclas/tour-de-france-2012.



Uppdaterad: Jag har nu uppdaterat sidan så att den istället använder Javascript för att visa tweets:en. Javascriptet jag använder är LiveTwitter men där jag hämtar data från Twitter-listan via en cache, så att den inte behöver hämta data från Twitter så ofta.

Öppna data: Stockholmskarta i OpenLayers

Posted in Osorterad on maj 5th, 2012 by Clas – Kommentering avstängd

I samband med att Stockholms stad startade sin tävling ”Open Stockholm Award” så släppte de också lite ”öppna data” som kan/ska användas i tävlingsbidragen.

De flesta av de öppna data som de släppte är statisk information, och inte känns inte superspännande för att basera mobila tjänster på. Då de flesta data är kopplade till karta, på ett eller annat sätt, så kändes det rimligt att börja med att titta på hur kartbilderna som släpptes kan användas på en webbsida. Stockholms stads beskrivning av kartdata finns under geodata, och en beskrivningen av själva kartbilderna finns i en PDF. Eftersom de mellan raderna antyder att det bör vara enkelt att visa dessa Stockholmskarta med OpenLayers, så provade jag med det.

Då jag visserligen använt OpenLayers tidigare, men då med data från OpenStreetMap, som är lite av ”standardkartdata” för OpenLayers och som det finns massvis med exempel för, så anade jag att det skulle ta lite tid att få att fungera.

Efter några timmars experimenterande kom jag fram till koden nedan, som är ett minsta möjliga exempel för att visa kartbilderna. Dessa kartbilder är inte på något vis bättre än andra kartbilder som man kan använda ”mer eller mindre gratis”, som t.ex. Bing Maps, Google Maps, eller OpenStreetMap, och är dessutom begränsad till endast Stockholm.


<!-- Minimalt exempel på hur karta från http://open.stockholm.se/geodata
     kan visas med Javascript-bibliotektet OpenLayers
     Clas Rydergren, reslogg.se   -->
 
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="EN">
    <head>
<style>
html,body {
  text-algin: center;
  margin: 0 auto;
  padding-top: 20px;
  height: 90%;
  width: 90%;
}
#map {
  width: 100%;
  height: 100%;
  border: 1px solid black;
}
</style>
<script src='http://openlayers.org/api/OpenLayers.js'></script>
</head>
<body>
<div id='map'></div>
<script type="text/javascript">
var extent = new OpenLayers.Bounds(140300,6564000,165000,6595000);
var options = {
  projection: "EPSG:3011",  // SWEREF99 18 00
  displayProjection: "EPSG:3011",
  maxExtent: extent,
  maxResolution: 10
};
var map = new OpenLayers.Map('map',options);
var sthlmURL = "http://openmap.stockholm.se/bios/wms/app/baggis/web/"+
"WMS_STHLM_STOCKHOLMSKARTA_GRA_FORENKLAD?";
var m = new OpenLayers.Layer.WMS('MyMAP',sthlmURL, {layers: 'stockholmskarta_gra_forenklad', type: 'png',
transparent: true, tiled: false},{buffer: 0, visibility: true, isBaseLayer: true} );
map.addLayer(m);
map.setCenter(new OpenLayers.LonLat(161250,6577500));
map.zoomToMaxExtent();
</script>
</body>
</html>

Resultatet av koden finns tillfälligt upplagd på reslogg.se/map.php.

Jag misstänker att jag aldrig kommer att göra något mer med dessa kartor, men för den som vill sätta ihop någon form av ”webbtjänst” för deras tävling (som avslutas den 13 maj) kan kanske komma igång snabbare med detta är vad jag gjorde, med hjälp av detta exempel.

Reslogg version 0.92

Posted in Osorterad on april 11th, 2012 by Clas – Kommentering avstängd

Jag har uppdaterat min allra första Android-applikation till ”version 0.92″, vilket utseendemässigt innbär att jag försökt mig på att rita nya ikoner för appen. Jag kan väl inte riktigt säga att jag designat ikonerna själv, då inspiration har hämtats från diverse ”icon sets” jag hittat på nätet, men jag har i alla fal ritat dem själv – och det tog tid.




Grundfunktionen är exakt densamma som tidigare: starta appen och påbörja loggningen när du påbörjar en ”resa” och stoppa loggningen när du är framme. Under tiden resan pågår kan du markera med vilket färdmedel du reser. Det går naturligtvis att logga vilken typ av resa som helt, t.ex har jag loggat en cykeltur i bilden nedan, men tanken är att använda spåren för att titta på resor med olika färdmedel, framförallt kollektivtrafikresor.



Programmeringsmässigt har jag inte gjort så mycket modifieringar, men ett par i alla fall. Först och främst finns nu en ”timer” som gör att jag kan uppdatera data och gränssnitt utan att nya positioner loggats. Jag använder denna funktion just nu för att beräkna en ungefärlig ressträcka (med hjälp av Haversine-formeln) som visas under resans gång. Jag har också implementerat en funktion som automatiskt stoppar loggning om det är så att du ”glömt att stoppa den”, baserat på om mobilen inte registrerat någon förflyttning under den senaste timmen. Nu går det också att titta på spåren av resorna enkelt direkt från mobilen genom att klicka på ”gå till reslogg.se” som direkt loggar in dig och tar dig till resans sida på Reslogg.se.

Appen finns att ladda hem från Google Play. Gratis, ingen inloggning, och utan reklam.

Reslogg.se med Twitter Bootstrap

Posted in Osorterad on februari 26th, 2012 by Clas – 2 Comments

Jag har byggt min första webbsida baserad på Twitter Bootstrap. Twitter Bootstrap är ett knippe CSS-filer som gör att det går snabbt att få ihop en webbsida med ”modern design” och som anpassar fint även till mindre skärmar. Webbsidan är den till min Reslogg-app, som med Bootstrap ser ut såhär:


reslogg

Twitter Bootstrap lever verkligen upp till målet att bistå med CSS för att snabbt kunna skapa en stilren webbtjänst. Nu har jag kanske inte lyckats till 100% med den ”moderna designen”, men det gick fort och det ser mycket snyggare och modernare ut än när jag använda mig av min egen stil/CSS. Även själva Android-appen till Reslogg har fått en uppdatering, men mest med mindre justeringar av koden så att den ska fungera på några fler Android-versioner.

Min första Android-app Reslogg

Posted in Osorterad on februari 20th, 2012 by Clas – Kommentering avstängd

Jag har programmerat min första Android-app. Android-appar programmeras i Java, och använder man IDE:t Eclipse med Abdroid SDK-plugin så blir det väldigt lika att programmera en vanlig applikation i Java. I Eclipse finns stöd för en Android-mobil-emulator så att det är enkelt att provköra app-koden direkt från Eclipse, i emulatorn. I Eclipse finns också stöd för att konstruera layouter via grafiskt gränssnitt, istället för att skapa dem direkt i XML-kod. Stödet för att debugga sin kod när den kör på mobilen finns ocskå, även om det kanske inte är supersmidigt.

Det som gör Android-app-programmering lite mer komplicerat än kodning av normala applikationer är att Android är mer komplext när det gäller när ”programmet” kan avbrytas, startas, eller starta om. Själva livscykeln för en app är lite lurigare. Det märks t.ex. när ens första app (Activity) byter från stående till liggande format; då görs en ny ”onCreate” vilket är samma kod som när körs när applikationen startar för första gången. Det känns lite förvirrande. Men det finns naturligtvis lösningar på det. Det kan också skapas konstigheter när man vill komma tillbaka till appen t.ex. via en ”notificaton” i den där rullgardinsmenyn, vilket initierar en ”nystart”. Det sätt jag hittat på att ”lösa” det är att se till att det bara startas en instans av appen, vilket kan göras med android:launchMode=”singleTask” i manifest-filen. Den finns också saker som gör app-programmering enklare. Det finns t.ex. en ”färdig” SQL-databas som kör i din Android-mobil färdig att spara data i. Det finns också många bra bibliotek utvecklade för saker som asynkron uppladdning av data etc.

Appen jag programmerat heter Reslogg. Appen är enkel och består i princip bara av en service loggar din position via telefonens GPS. Tanken är att du ska starta appen när du påbörjar en resa, och stoppa den när du är framme. På så sätt delar du med dig av ett ”resespår”, vilket jag har tänkt använda för att kalibrera trafikmodeller. Under tiden som appen spårar en resa så finns det också möjlighet att ”mata” den med information om vilket färdmedel du just nu använder. Informationen är tänkt att användas för att ”lära” tjänsten hur de olika färdmedeln ”ser ut”, men det är inget krav att du matar in den.

Ditt resespår laddas upp till sajten Reslogg.se.

På sajten kan du titta på dina spår. Tanken är att sajten, automatiskt, ska hjälpa till med att beräkna restider med olika färdmedel och väntetider. Sajten är fortfarande under utveckling, och såhär långt finns bara möjlighet att titta på dina resor på en Google-maps-liknande karta. Med många resespår skulle det gå att t.ex. ge förslag på andra resor, eller ge dig en bild av hur mycket du skulle vinna på att t.ex. cykla till en annan hållplats.

Om du vill prova min app så finns den på Android Market med namnet reslogg. Det kostar $25 för att få möjlighet att publicera på Market, men genom att sprida den där så ges man också möjlighet att ”påminna” de som laddat ner en version av appen om uppdateringar. En god investering även vid mycket få nedladdningar känns det som, tycker jag.

I appens ”info-meny” hittar du det användar-ID som du behöver för att titta på dina resor på Reslogg.se. Logga ingen resa som du vill hålla hemlig bara!