November – ingen anledning att deppa

Färgerna försvinner och regnet kommer. Man kan lätt tycka att det är läge att kapitulera för de mörka krafterna men det finns en ljusning! Om tio dagar (14 november) ordnar vi i Symfony Sverige en endagskonferens om modern php/Symfony och årets talarlista är riktigt spännande. Tycker vi har fått ihop en bra variation och jag ser fram emot alla föreläsningar. Har du inte redan köpt biljett så skynda skynda och hoppas vi ses där!

Stängd data

Örebro kommun ligger långt fram med öppen data för offentliga uppgifter. Örebro kommun, tillsammans med Länsstyrelsen och universitetet, ordnar dessutom en tävling i hur man använder öppen data bäst. Det är riktigt kul och jag kommer såklart att följa tävlingen. Hade jag haft tid hade jag gärna varit med men antalet projekt jag driver bör snarare minska än öka.

Ett miniprojekt jag kodade ihop häromkvällen använder data från Örebro kommun som dessvärre inte är öppen. Jag scrapar uppgifter om bibliotekslån och sammanställer på familjenivå. Givetvis går det inte att ha personers boklån som öppen data men det hade varit riktigt snyggt om konton man skapar på kommunens sajter kan använda OAuth för att tillåta tredjepartsapplikationer att komma åt datan.

I mitt boklåneprojekt sammanställer jag hela familjens boklån och skickar ett mejl till mig om vi inom familjen har en eller flera böcker som ska lämnas tillbaka inom några dagar.

screenshot

För den som är intresserad finns koden på Github.

Optimera allt

En för mig stor fördel med min gräsklipparknivsbutik är att den är så enkel att driva. Jag lägger minimalt med tid på den dagliga orderhanteringen. Det hade inte gått att driva den ”vid sidan av” om jag skulle behöva spendera mycket tid med paketerandet. Sedan jag gick över till min egen butikslösning har jag kunna optimera flödet maximalt.

Här kommer en genomgång över vad jag gjort för att behöva hantera varje beställning i så kort tid som möjligt.

kuvert

kuvert2
En gång per dag skriver jag ut alla beställningar som inte är skickade på min etikettskrivare (Brother P-Touch QL-720NW). Etiketterna klistrar jag på hårda C5-kuvert. På etiketten har jag all information som behövs för att färdigställa beställningen. Förutom det självklara har jag en qr-kod som jag scannar för att markera beställningen som skickad. Oftast scannar jag genom datorn och använder då Scan. Använder jag telefonen använder jag QRReader. På etiketten skriver jag även ut om kuvertet ska innehålla en faktura och hur många frimärken jag ska sätta på (de svarta fyrkanterna). Jag använder givetvis 14kr-frimärken för att halvera tiden det tar att sätta på dem :-).

Nu återstår optimeringen att få kuverten till postlådan. Än så länge går det ganska bra att övertala 6-åringen att cykla med kuverten de dagar jag ändå inte ska till affärn och handla.

Payex vs PayPal/Payson

I min gräsklipparknivsbutik kan man välja om man vill betala med kort eller mot faktura. Fakturorna hanterar jag manuellt och jag har ett påslag på 19kr. Givetvis hämtar jag adressinformation mm automatiskt men fakturan ska ändå skapas, skrivas ut och stoppas med i beställningen. Krånglet med fakturor gör att jag mycket hellre vill att beställningar görs med kort. Tidigare hade jag Payson och PayPal som betalsätt för kort. Men för en tid sedan gick jag över till Payex som kortbetallösning. Bland annat i förhoppning att fakturaköpen skulle minska. Sen jag bytte till Payex har jag inte märkt någon direkt skillnad så jag kollade nyss upp hur det låg till. Av de 100 ordrar som jag jämförde har fakturaköpen tom ökat(!). 39% fakturaköp på senaste 100 beställningarna jämfört med 35% på 100 beställningar precis innan bytet.

Jag tror att bytet till Payex lönar sig ändå. Butiken ger ett seriösare intryck med en ”riktig” betallösning. Pga säsongsbetoningen i produkten kan jag inte jämföra perioder och se om fler handlar nu men jag vill i alla fall hoppas på det. En annan fördel är att det är enklare att bokföra Payextransaktioner än PayPal och Payson.

Nu är frågan hur jag ska kunna konvertera fakturaköparna till kortköpare. Höja priset på fakturaköp? Införa pdf-fakturor som kostar 19kr och ett dyrare pris på pappersfakturor? Eller ska jag låta Payex ta hand om fakturorna också? Vad tycker du?

Setup invoicer.se

I förra inlägget skrev av lite om idén bakom invoicer.se. Nu tänkte jag skriva lite om tekniken bakom.

Själva sajten är skriven i php och ramverket Symfony2. Speciella bundles vi använder är

  • KnpSnappyBundle – för fakturapdfgenerering
  • CloudBackupBundle – för dagliga backupper till Dropbox
  • EkinoNewRelicBundle – för rapportering till New Relic
  • VreshTwilioBundle - för smsutskick (min fork för att bara skicka sms till ett valt nummer på stagingmiljön)
  • BCCResqueBundle – tillsammans med Redis är det ett väldigt bra kösystem.
  • Samt Doctrine migration-, fixture- och extensionbundle och andra självklara bibliotek.

Givetvis använder vi git och Github för versionshanteringen. Phpci är uppsatt att köra testsviten vid varje pushning så man får ett tydligt svar om branchen är ok att merga eller inte. Jenkins är såklart bättre men eftersom vi bara kör med en server kan vi använda Phpci utan att något ytterligare behöver installeras på servern.

Släpp av ny kod till antingen staging- eller produktionsmiljön görs enkelt med ett terminalkommando tack vare Capifony. Vid släpp till stagingmiljön laddas fixaturerna om och till produktionsmiljön sker en databasbackup och migrationerna körs.

För logghantering använder vi Loggly. Jag har satt upp lite sökningar så vid tex fatal error så får jag ett mejl. Eftersom testsviten innehåller funktionstester för (i princip) alla controllers actions och deras olika http status så fångas det mesta innan koden når produktionsmiljön. Det har faktiskt bara hänt en gång att Loggly mejlat för ett fel.

En annan tjänst vi använder är New Relic. Nu har vi inte speciellt mycket trafik och sajten är väldigt stabil så har inte jättenytta av tjänsten just nu. Men det är ändå en väldigt bra tjänst för att kolla hälsostatus på applikationen.

Vid något riktigt kritiskt så hela sajten går ner har vi Pingdom som larmar.

Än så länge klarar vi oss på gratisversionerna av alla tjänster. När vi når gränserna för att behöva betala har vi förhoppningsvis också ökat våra intäkter så de kostnaderna inte blir speciellt tunga.

Mitt nya projekt

När det blev klart att det skulle bli förändringar på E-butik började jag fundera på vad jag skulle göra istället. En gammal idé jag haft om ett betalsystem för ridskolor dammades av tillsammans med två kollegor. När vi blev uppsagda från E-butik jobbade vi intensivt i 1-2 veckor men sen fick ”tyvärr” både jag och Jocke nya jobb så vi fick dra ner på hastigheten. (Jag jobbar nu på zoozoo.com för er som inte vet.) På ca tre månader har vi lanserat invoicer.se och skickat fakturor åt vår första kund.

Tjänsten går ut på att vi hjälper ridskolor (eller vilka lektionsverksamheter som helst) att få betalt av sina elever. Min äldsta dotters ridskola hanterade elevregistret och betalningarna med kollegieblock och manuella sms. De fick bli vår första kund. På sitt konto hos oss fyller de i elevens namn, telefonnummer och när hen har lektioner och vad de kostar. Vi ser till att eleven skapar konto hos oss och fyller i sina adressuppgifter. Ca en månad innan första lektionstillfället skickar vi en faktura till eleven som denne betalar till oss. En gång i månaden betalar vi ut pengar till ridskolan som då bara får ett verifikat att bokföra.

November camp 2013

November camp 2013November camp 2013 är över. En heldag med intressanta föreläsningar med blandade ämnen. Intressantast för mig var de som rörde test och monitorering. Speciellt Spec BDD blev jag sugen på att testa i något projekt. Utöver alla föreläsningar var det så klart givande  att träffa andra som jobbar med Symfony. Öl är också trevligt och tillsammans med andra Symfonyaner blev det extra trevligt.

De flesta föreläsningar spelades in så håll koll på konferenssajten om du missade konferensen eller bara vill se föreläsningen igen.

Foto av @cakper.

Phpkonferens coming up

symfonyseOm 11 dagar, den 22 november, hålls den första(?) phpkonferensen i Stockholm. Arrangörer är Symfony Sverige och platsen är Hilton Slussen. Även om konferensen anordnas av Symfony Sverige är endast 3 av 7 föreläsningar om Symfony så konferensen är verkligen något för alla som är intresserade av modern php-utveckling.

Priset för hela konferensen går på ynka 498:- och programmet och resten av allt du behöver veta finns på symfony.se/november-camp.

Hoppas vi ses där!

8 bra podcasts

De flesta verkar maxa sin podcastdos under sommaren. För mig är det tvärt om. Jag har knappt lyssnat öht under sommarledigheten men nu när jag är igång och jobbar igen blir det desto mer. Speciellt under måndagar när jag har 4 timmar podcasttid i bilen. Förutom en del SR-poddar är följande lista bloggar jag lyssnar regelbundet på.

Maktministeriet

Om makt och strukturer på internet. Fördjupande samtal om något aktuellt ämne.
maktministeriet.se

Mediespanarna

Reflektioner över medierna och deras roll i samhället.
www.kultmed.umu.se/samverkan/mediespanarna

Palmemordspodden

En podcast om Palmemordet. Liten chans att de kommer fram till vem som mördade Palme men väldigt lyssningsbar ändå. Extra plus för att lyckas ha 50% kvinnor i en podcast om Palmemordet.
palme.libsyn.com

Pappapodden med Nisse och Manne

Skön podcast om livet som pappa.
itunes.apple.com/se/podcast/pappapodden-med-nisse-och/id633020970

Slashat

Teknikpodcast som hållt på i flera år. Bra podcast för att hålla sig uppdaterat på teknikfronten men även internetrelaterade nyheter. Lite för utdragna avsnitt för mitt tycke.
slashat.se

Veganprat

En podcast om djurrätt och att vara vegan.
www.veganprat.se

Venture Cups podcast

Podcast om entreprenörskap. Tyvärr har de paus (eller slutat!) men tidigare avsnitt rekommenderas.
venturecup.se/ideutveckling/venture-cup-podcast

Webbradion

Jobbar du med webb ska du lyssna på webbradion.
webbradion.net

Beställningar på en karta

Jag var lite nyfiken på var i Sverige mina gräsklipparknivar säljer bäst så jag kodade snabbt ihop en liten tjänst som använder E-butiks api och placerar beställningarna på en Googlemaps-karta.

karta

För den som är intresserad finns koden på Github. Förutom att importera ordrar från E-butik går det att importera ordrar från en egen json-fil.