En konkurrent til Flere i bilen er Statens vegvesens Spontan samkjøring. I følge deres nettsider er..

..Spontan samkjøring et prosjekt iverksatt av Statens Vegvesen for å stimulere til økt bruk av samkjøring for å redusere belastningen på eksisterende infrastruktur og for å spare miljøet for CO2 utslipp.

De har med andre ord relativ lik målsetting som Flere i bilen, men så langt jeg skjønner det legger de mer vekt på den spontane biten; sjåfører skal i det øyeblikk de setter seg inn i bilen melde inn hvor og når de kjører. Det samme gjelder passasjerer som i øyeblikket de trenger skyss sender en forespørsel til systemet som forhåpentligvis returnerer en av de sjåførene som er ute å kjører akkurat nå. Flere i bilen tar mer sikte på å finne varige sjåfør- og passasjerforhold slik at man får noe litt mer fast å forholde seg til. Hvilke av de to innfallsvinklene som fungerer best i praksis får være opp til en hver å vurdere.

Men, nå skulle ikke denne blogg-posten handle om Spontan samkjøring generelt. Dette innlegget skulle handle om mine øyebryn som hevet seg et par hakk (ca ett hakk per tiende sekund) i de få minuttene jeg var på deres nettside.

Teknisk (fravær av) kvalitet på hentmeg.no

Så, her følger en liten gjennomgang av feil og mangler jeg snublet over på hentmeg.no.

GET-parameter og lesing fra disk

Nettsiden deres er skrevet i PHP noe som i seg selv så klart er mer enn greit. Jeg jobber selv daglig med PHP og har ingen motforestillinger mot det, i allefall ikke når det er gjort riktig! Men, når det er tydelig at de benytter GET-parameter for å direkte bestemme hvilke filer det skal leses fra på disk bør varsellamper begynne å lyse. Glemt-passord siden deres gir en god indikasjon på dette da man får en fin PHP feil ut i dokumentet. Når man videre leker litt med pg-parameteren er det tydelig at det ikke skjer særlig vasking av denne før PHP prøver å åpne filen man etterspør. Dette er ikke den tryggeste måten å styre hva PHP skal gi ut til alle og en hver..

Innlogging.. uten brukernavn og passord!

Nettsiden har også resurser som er beskyttet av autentisering. Går du til f.eks. hentmeg.no og klikker på 6 nye dokumenter er delt blir du pent bedt om å logge inn. Det som er alarmerende er at du tilsynelatende blir logget inn selv med blankt brukernavn og passord! Tilgang til dokumenter får du også.

Merkelig menystruktur

Menystrukturen i topp består av Hjem | Min profil | Bedriftsportal | Bakgrunn | Om oss | Forum. Forsåvidt greit nok, men hvorfor ligger disse vertikale skillelinjene som tegnet ‘|’ i hvert sin A-tag?! Dette ser for meg ut som kunnskapsløs bruk av HTML, noe også validering av HTML-en tyder på.

Er brukere av Opera svaksynte?

Og mens vi er inne på menyen. Hva i alle dager skjer med menyen i Opera?

Jeg tror dette er slik de har tatt sikte på at menyen normalt sett bør se ut:

..og slik ser samme meny ut i Opera:

Jeg har problemer selv med å begynne og forestille meg hvordan de har fått dette til uten å se nærmere på HTML koden!

Alt i alt virker denne nettsiden som gjennomført dårlig kvalitet. La oss håpe de har mer hell med Iphone-applikasjonen de utvikler.

Ahh, noen ganger blir jeg litt ekstra fornøyd når jeg ser hvordan enkle grep i Ruby gjør småting som i utgangspunktet skurrer mye bedre. Ikke at det er spesielt avanserte ting, men dette gjør at jeg sover litt bedre om natten:

I Flere i bilen har jeg et par modeller Route og RouteSearch. Reisen (Route) har attributtene mandag, tirsdag, onsdag, torsdag, fredag, lørdag, og søndag. På reiser kan det krysses av for hvilke dager de kjøres og følgelig blir korrespondere dager satt til true. I Reise-modellen gjøres også disse dagene tilgjengelige for masse-tilordning via attr_accessible, og jeg har lagt på mulighet for å hente ut for eksempel alle reiser som går på mandager med Route.mondays via named_scope. En liten hjelpefunksjon svarer på om noen dager er valgt i det hele tatt. Denne funksjonaliteten er definert ca som følger:

class Route < ActiveRecord::Base
  DAY_ATTRIBUTES = [:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday]

  attr_accessible *DAY_ATTRIBUTES

  DAY_ATTRIBUTES.each do |day|
    # Oppretter mondays, tuesdays etc, SQL condition monday = true
    named_scope day.to_s.pluralize, :conditions => {day => true}
  end

  def any_days_selected?
    DAY_ATTRIBUTES.each {|day| return true if send("#{day}?")}
    false
  end

  # mer kode her..
end

Som nevnt har jeg et par modeller, og modellen som står for Reisesøk har også ukedager som attributter. Når mandag blir satt til true på et reisesøk vil route_search.routes kun returnere reiser som kjøres på mandager osv. Et reisesøk skal også ha dagene tilgjengelig via masse-tilordning, den skal kunne svare på om en eller flere dager er valgt i det hele tatt og det kan godt ha funksjonalitet så jeg kan hente ut alle Reisesøk som søker etter reiser på mandager. Med andre ord er funksjonaliteten til de to modellene når det gjelder ukedager like. Det enkleste løsningen, men samtidig den som bør få folk til å sove dårligst om natten, er litt klipp og lim. En annen mulighet kunne vært via arv, men en reise og et reisesøk er strengt tatt ikke en type av den andre.

Ruby støtter moduler der funksjonalitet kan grupperes og etter en liten ommøblering (noen som har et godt ord for refactor?) i koden ser Route-klassen nå slik ut:

class Route < ActiveRecord::Base
  include CommonBehaviourForWeekdays
end

class RouteSearch < ActiveRecord::Base
  include CommonBehaviourForWeekdays
end

Mye bedre enn klipp og lim! ..og hva har vi i CommonBehaviourForWeekdays?

module CommonBehaviourForWeekdays
  DAY_ATTRIBUTES = [:monday, :tuesday, :wednesday, :thursday, :friday, :saturday, :sunday]

  module HelperMethods
    class << self
      def attach_named_scope_for_day_names_on(base)
        DAY_ATTRIBUTES.each do |day|
          base.named_scope day.to_s.pluralize, :conditions => {day => true}
        end
      end

      def make_days_attr_accessible_on(base)
        base.attr_accessible *DAY_ATTRIBUTES
      end
    end
  end

  # Hook som blir kjørt når denne modulen blir inkludert
  def self.included(base)
    HelperMethods.attach_named_scope_for_day_names_on base
    HelperMethods.make_days_attr_accessible_on base
  end

  def any_days_selected?
    DAY_ATTRIBUTES.each {|day| return true if send("#{day}?")}
    false
  end
end

Vi har nå delt samme funksjonalitet over flere klasser, men samtidig holdt implementasjonen av denne funksjonaliteten på ett sted.

En stund siden forrige innlegg nå. Hva har jeg gjort siden sist, lurer du på? Vel.. Ingen nettjeneste som tar sikte på å få flere folk til å kjøre sammen i bilene er komplett uten mulighet for faktisk å kunne søke etter reiser å sitte på med! ;-)

Søk etter reise er nå på plass i Flere i bilen og fungerer ved at du velger en tid for avreise eller ankomst. Deretter plasserer du markører i kartet for ønsket start- og stoppested, samtidig som du også velger radius for søket. Finn reiseKlikk Finn reise og ut får du forhåpentligvis reiser som tilfredsstiller ditt søk. …Forutsatt at nettjenesten får et par flere brukere enn den har nå :-)

En annen ting som er gjort for å få flest mulige til å kjøre sammen er at vi søker etter liknende reiser når du registrerer deg som sjåfør på en ny reise. Dersom liknende reiser finnes vil du få opp en liste med disse og forhåpentligvis velger du å sitte på med en av reisene som alt eksisterer slik at vi får flere i bilene :-) Lik reise eksisterer

Enn så lenge er det dog ikke mulig å faktisk søke om å være passasjer på en reise, men dette kommer nok på plass så snart jeg har litt tid til overs!

I går skulle jeg egentlig bare gjøre en liten forbedring på flereibilen.no. Jeg skulle få inn et statisk bilde av reiser på reiseoversiktssiden slik at man lettere kunne se hvor de går til og fra.

Reiseoversikt

Google har et fint API  som kan levere både dynamisk og statiske kart, og jeg tenkte at det passet fint med kart som enkle bilder på en oversiktsside for å spare nettleserene for litt javascript arbeid. Googles statiske kart genereres enkelt ut fra en URL og jeg kunne relativt enkelt, men stygt, ha implementert genereringskoden inn i kodebasen til flereibilen.no. En bedre løsning ville være om det fantes en gem som genererte URL-en for meg. Jeg fant en, men dessverre var denne laget for en eldre versjon av API-et. Det endte med at jeg laget mitt eget lille grensesnitt Google Static Maps Helper for å generere statiske google kart URL-er.

Den største utfordringen for å få Flere i bilen til å bli en suksess tror jeg er oss sjåfører. Er vi villige til å ta med ukjente mennesker i vår bil til- og fra jobb? Generelt sett har vel de fleste av oss en underliggende skepsis til å ta med haikere i bilen, og selv om dette er en noe mer kontrollert form for haiking er det jo fortsatt det det er. Hvertfall den første turen man har med seg en ny passasjer. Er det mulig å fjerne denne skepsisen? Høyst sannsynlig ikke, men det kan kanskje være mulig å bøte på den ved å innføre litt teknologi alla ebay, qxl og så videre. På disse tjenestene er en avgjørende funksjonalitet at brukerene legger igjen en liten tekst om hvordan de opplever hverandre etter å ha gjort en handel. På denne måten kan man øke tilliten til ukjente hvis andre har gått god for personen før. Et liknende tiltak kan være aktuelt for Flere i bilen. Et annet tiltak er at du som sjåfør har kontrollen på å godkjenne passasjerer. Er du kvinne og kun ønsker andre kvinner som passasjer så er det opp til deg å bestemme.

Et annet problem som kan dukke opp er for eksempel hva man gjør om en sjåfør er syk? Å tilrettelegge for at Flere i bilen på en effektiv måte kan formidle slik informasjon vil være avgjørende. Det kan også tenkes at sjåføren må jobbe overtid en dag, noe som igjen vil skape problemer for passasjerene. En løsning kan være at Flere i bilen søker opp og setter deg i kontakt med andre sjåfører i samme området dersom en slik situasjon oppstår. Hvis ikke har man jo alltids NSB man kan stole fullt og helt på..

Så, er det utfordringer ved tjeneste? Uten tvil. Er de mulig å løse? De er i allefall mulig å bøte på en del av de via teknologi. Kom gjerne med flere mulige utfordinger ved tjenesten jeg ikke har tenkt på i dette lille innlegget.

Jeg tenkte det kunne være passende, som et første blogginnlegg, å skrive noe om bakgrunnen til flereibilen.no Hvordan jeg fikk ideen og hva jeg håper å oppnå. Jeg vil mer enn gjerne ha kommentarer på ideen og hva de som eventuelt måtte ha klart å forville seg inn på denne siden syntes om ideen.

Ideen fikk jeg kanskje ikke så overraskende en dag jeg satt i bilen min på vei til jobb. Min jobb befinner seg i Oslo og som en glad innbygger i Asker deler jeg reisevei med ikke så rent få. Vi sitter i vår egen lille verden med bilen full av Jan Normann, Silje Stang og Bjørn Faarlund. Av og til smetter Jens Stoltenberg innom, men som regel blir vi akkompagnert av hvertfall disse tre. De tar ikke opp så stor plass i bilen på vei til jobb, men de får hvertfall tiden til å gå litt fortere der vi snegler oss av gårde i 10km/t.

Sett bort fra besøket jeg har av P4 i bilen har jeg relativt god plass. Faktisk så er det hele fire* ubrukte sitteplasser som kjører mellom Asker til Oslo hver dag. Når den tanken slo meg, samtidig som jeg tittet på bilene rundt meg, så jeg raskt at de aller fleste var i samme bå.. bil. Det er særdeles få bilder på vei inn- og ut fra Oslo som har flere enn en person i bilen.  Hva om vi kunne få flere i bilen?

Motivasjonen for å utvikle flereibilen.no er todelt. Som en relativt nerdete person syntes jeg det er gøy å lære nye ting. “Nye ting” relatert til flere i bilen er plattformen som applikasjonen utviklse på; Ruby on Rails. Uten å bli for teknisk er Ruby on Rails “motoren” i flereibilen.no.  Den andre motivasjonsbiten er selfølgelig et ønske om å skape noe som andre kan ha nytte av og jeg håper mange vil bruke.

Hvordan skal tjenesten fungere? Kort fortalt har flereibilen.no har to mål; du skal kunne registrere dine reiser dersom du har bil og du skal kunne søke etter reiser dersom du ønsker å sitte på med noen.  Klarer flereibilen.no å få to personer som skal samme vei inn i samme bil er hovedmålet nådd.

Hva syntes du? ..ikke at jeg regner med å få så veldig mange tilbakemelding, men man kan jo håpe!

* Skal vi være ærlige og ikke overvurdere størrelsen til min lille Yaris er det vel strengt tatt kun tre behagelige passasjererplasser i bilen min.

Follow

Get every new post delivered to your Inbox.