Marcus Olsson

Frilansande webbutvecklare

22 april 2016 av Marcus Olsson

Bye bye Wordpress – for now

Wordpress

I nästan 10 år har jag på ett sätt eller annat jobbat med Wordpress (en av mina gamla bloggar hos Internet Archive), världens mest använda CMS alla kategorier (på gott och ont) – och ända sedan jag blev frilansande webbutvecklare för snart tre år sedan så har Wordpress varit någon form av grundpelare i min verksamhet där jag har utfört dussintalet projekt både från "scratch", vidareutvecklat befintliga webbplatser och skapat unika plugins. Men nu är det slut på det, i alla fall för stunden.

Förklaringen är egentligen ganska enkel; det senaste året har allt mer fokus hamnat på andra typer av projekt som har krävt andra verktyg, särskilt Laravel, Flight och även till viss del Jekyll för enklare webbplatser. Allt fler WP-förfrågningar har jag varit tvungen att tackat nej till.

Timmarna helt enkelt inte räckt till att hålla mig helt uppdaterad när det kommer till Wordpress och alla dess nya funktioner och uppdateringar, jag känner att jag har börjat halka efter i den relativt snabba utvecklingtakten som Wordpress har numera. Och ska jag vara helt ärlig så är det såklart en något självisk tanke som ligger bakom också; jag tycker helt enkelt att mer fristående nischade projekt som kräver andra lösningar än Wordpress är roligare att arbeta med.

Ingen lämnas i sticket

Befintliga kunder där jag i nuläget hanterar Wordpress-projekt för kommer jag självklart att fortsätta ge support till i framtiden och även hjälpa att implementera nya funktioner och liknande. Denna ändringen handlar helt enkelt om jag inte längre tar mig an nya WP-projekt – dessa kan jag dock hjälpa till att vidarebefordra till andra utvecklare och byråer som primärt jobbar med Wordpress.

Vi får se, om ett par år kanske man är tillbaka med Wordpress igen.

19 april 2016 av Marcus Olsson

Telia inför "surfa fritt" på sociala medier – nätneutraliteten är hotad

Igår (den 18:e april) införde Telia möjligheten för sina kunder att bruka sociala medier helt fritt1, utan att de behöver betala för den datamängden som går ut att använda dessa plattformar.

I fjol införde även 3 (Tre) samma typ av tjänst men där istället för fri musikstreaming2.

"En bra deal" tänker säkert de flesta, men om man ser efter vad som egentligen pågår så ser man ganska snabbt att detta kan få enorma konsekvenser i framtiden, både för företag och konsumenter.

Men vad är egentligen problemet?

Problemet i det stora hela är att detta bryter mot nätneutraliteten – som enkelt förklarat står för att all trafik och alla tjänster på nätet ska behandlas lika.

I Telias fall så har de själva valt ut sex stycken tjänster som de anser är sociala medier; Facebook, Instagram, Messenger (Facebook Messenger), Whatsapp, Twitter och Kik. Telia säger helt enkelt att e-post, Skype, YouTube, Reddit och många andra tjänster inte är en social media enligt deras definition.

Detta skadar konkurrensen och den fria marknaden. I praktiken innebär detta att de redan etablerade plattformar, handplockade av Telia får företräde i deras nätverk – vilket i sin tur betyder att alla plattformar inte längre konkurrerar på samma villkor.

Och det är här den stora problematiken börjar; många kommer nu säkert att börja skicka sina meddelanden via Messenger istället för t.ex. Skype – vilket så klart drabbar Skype. Skype inser rätt så snart att de självklart också vill vara med i Telias "Fri surf"-program och tar kontakt med Telia – en deal görs och ett par miljoner kronor flyttas mellan ett par bankkonton. Båda två är i slutändan kanske ganska glada.

Men, den nya lilla startup:en med sin egna messenger-app i Lund (eller för all del kanske i Malmö, Stockholm eller Tokyo) – de kommer inte att ha medel nog för att köpa in sig i Telias program, vilket betyder att de i princip utesluts ifrån marknaden (eller i alla fall just nu från Telias kunder).

Ha även i åtanke att program liknande dessa även innebär att ens trafik filtreras och granskas för att Telia ska ha möjligheten att sortera in ens trafik i rätt "kanal"; gratiskanalen eller betalkanalen.

Framtiden

Just nu verkar den här typen av tjänster endast innebära att användningen av de utvalda plattformarna enbart påverkar ens "surfpott", vilket är illa nog. Men tveka inte på att operatörerna sonderar terrängen för bättre deals för deras egen vinning, där t.ex. Netflix kan köpa prioritet i en operatörers nätverk, eller kanske ingå i exklusiva samarbeten där man begränsar eller t.o.m. stänger ute konkurrenter helt.

Internet ska hanteras som vilken annan infrastruktur i samhället, så som vägar och vatten. Alla ska kunna använda använda dessa efter likvärdiga villkor – både företag och privatpersoner.

Sverige behöver en lagstiftning som omöjliggör operatörerna att prioritera trafik i deras nät – och detta snart innan det är för sent.

15 april 2016 av Marcus Olsson

Laravel Spark ute nu

Ett par dagar tidigare än väntat släpptes idag Laravel Spark – det senaste projektet från samma utvecklare bakom PHP-ramverket Laravel, Taylor Otwell.

Spark är tänkt att hantera de mest grundläggande funktionerna som tenderar att repeteras i varje Saas (Service as a Service)-applikation.

Med Spark kan man snabbt sätta upp produkter, användargrupper och t.o.m. kopplingar till betalningstjänster så som Stripe och BrainTree. För oss svenskar (och övriga Européer) är det även fantastiskt smidigt att Spark har möjligheten att automatiskt hantera VAT i t.ex. fakturor och kvitton.

Man bygger helt enkelt sin tjänst och kopplar sedan på Spark för att hantera "allt det andra".

Spark utannonserades under hösten 2015 och var från början tänkt att vara helt open source precis som Laravel – men tidigare i år meddelade Taylor Otwell att det skulle bli en betald produkt med ett pris av $99 (ca. 800kr) per projekt, vilket fick många Laravel-användare att bli arga. Men om jag ska vara helt ärlig är 99 dollar ett fantastiskt pris för vad man får – Spark kommer utan tvekan att spara otaliga timmar i framtida projekt.

Självklart har Laracasts redan guider uppe för att snabbt komma igång.

12 april 2016 av Marcus Olsson

55 år sedan människan nådde rymden

Idag – den 12:e april 2016, är det 55 år sedan den första människan – Yuri Gagarin (eller Jurij Gagarin på TT-språk/svensk transkription) som blev både den första människan i yttre rymden och dessutom den första människan att kretsa kring jorden.

Vostok 1

Uppskjutningen av Vostok 1, 12 april 1961 Bild: Wikipedia

Mindre än en månad senare sköt amerikanerna upp deras första astronaut; Alan Shepard.

30 mars 2016 av Marcus Olsson

De bortglömda projekten – del 1

Satt här om dagen och rensade och kikade igenom mina projekt på Bitbucket där jag nu har en bra bit över 60 repositorier. Både sådana som innehåller kundprojekt och egna privata.

Riktigt kul att hitta ens gamla projekt – där vissa är i princip klara och andra knappt påbörjade. Ett par av dem är riktigt bra idéer, men där tyvärr alltför stor brist på tid har gjort att jag har varit tvungen att stoppa dem åt sidan och för att sedan aldrig återkomma.

Tänkte att man även behöver ge lite kärlek till de bortglömda projekten och inte bara de som har ett stadigt hem på nätet.

Du är varmt välkommen till att sno idéerna nedanför om du tycker att de tilltalar dig – eller annars bara skratta åt mina tafatta försök.

Teamsync.io

Ett verktyg som påbörjades 2013 för att enkelt låta mindre team (ofta utan en renodlad projektledare) låta varandra ha koll på vad man har jobbat på under dagen. Idéen kom från ett tidigare jobb jag hade där kommunikationen mellan utvecklarna var minst sagt undermålig.

Tanken var att man vid ett fast klockslag varje dag tog emot ett mail, som man kort svarade på om vad man hade jobbat på under dagen. Tidigt morgonen därpå fick man en sammanfattning på vad alla hade svarat för att kunna fatta bra beslut gällande sin planering. Byggde en fullt fungerande prototyp, men fick aldrig tiden att bygga ett riktigt gränssnitt för att lägga till/ta bort medlemmar och liknande.

(Släppte domänen nyligen – alltså inte jag som äger den längre).

"Shogun"

Shogun blog engine Testkörning av "Shogun".

Ett av mina mer ambitiösa misslyckade projekt – en fullfjädrad "bloggmotor". Var under utveckling till och från under 6 månader och var ett ganska imponerande bygge (om jag får säga det själv…).

Grunden byggde på micro-ramverket Flight (som jag tidigare skrivit om) och en rad andra open source-moduler som drogs in via Composer.

Stort fokus låg i kraftfull cache:ning och att göra inläggen/postningarna så "dynamiska" som möjligt där man enkelt i sina templates kunde lägga till egna fält och data.

<?php
return array(
  // Basic settings
  'author'     =>  'Marcus Olsson',          // Website author
  'url'        =>  'http://shogun.dev',      // Website URL
  'theme'      =>  'default',                // Selected theme
  'frontpage'  =>  'start',                  // Set the frontpage, "null" if to use standard template (index)
  'per_page'   =>  10,                       // Number of post per page for archives etc.

  // Cache settings
  'cache'        =>  false,                  // You wantz cache?
  'adapter'      =>  'file',                 // "file" and "apc" cache supported (in PHP 5.5 > simulated APC is used)
  'cache_ttl'    =>  3600,                   // TTL for cache (3600s = 1 hour)
  'cache_dir_a'  =>  './app/storage/cache',  // Directory to store cache files (for article data)
  'cache_dir_b'  =>  './app/storage/views',  // Directory to store cache files (for compiled views)

  // In most cases, no need to edit the settings below
  'themes'       =>  './themes',
  'articles'     =>  './articles',
  'pages'        =>  './pages',
  'plugins'      =>  './plugins',
  'extension'    =>  '.md',                  // Extension for posts/pages
  'timezone'     =>  'Europe/Stockholm',     // Supply a timezone to calm down the PHP date-function
  'debug'        =>  true                    // Wheter to show debug output
);

De globala inställningarna för Shogun, man kunde även lägga in egna inställningar för sitt tema/templates.

Just att göra allt dynamiskt var det som dödade projektet till slut då jag insåg att det inte fanns något slut och att allt blev väldigt "bloated". Sista commit:en gjordes i juli 2014.

Började därefter med statiska bloggmotorer istället, först SecondCrack och sedan Jekyll (som jag använder än idag).

Terse m.fl.

Under åren har jag byggt inte mindre än 3 olika verktyg för att göra diverse tekniska analyser på fonder och aktier. Inte direkt för att jag handlar mycket på börsen, utan mer om att det är ett område som jag tycker är ruskigt intressant.

Det första var ett mindre test från 2012 som körde simuleringar på en valbar aktie för att beräkna historisk avkastning om man gjorde köp/sälj vid EMA50 och EMA200-indikatorer (EMA på investopedia). Lade ner projektet när Nordea upptäckte luckan som möjliggjorde hämtningen av datan.

Det senaste experimentet är i från i vintras, "Terse", som skickar iväg ett mail till användaren när ett värdepapper slår om från en bull till bear-trend och tvärtom (även det baserat på EMA och SMA), samt ett enkelt gränssnitt för att granska dem. Fortfarande i experimentet-stadiet, men kommer förmodligen likt de andra att dö ut inom kort.

Terse Skärmdump från Terse mycket enkla gränssnitt.

Projekt Terrier / "Doggis"

Ett CMS, för hundar!

I slutet av 2013 kom jag på idén att bygga ett CMS för att hantera hundar (och deras ägare) som kunde användas av hunddagis och hundpensionat.

Kom aldrig längre än prototypstadiet där endast en del mockups och databasmigrations finns kvar – och en ganska värdelös domän.

Har på senare tid faktiskt sett att detta har varit en idé som nu har slagit ganska stort, men jag själv fick aldrig tiden till det. Eller kom på någon vettig affärsidé för den delen (visade sig att hunddagis i Sverige oftast har en väldigt tight budget, särskilt för datasystem).

Kommer senare även att publicera "del 2" där lite nyare "bortglömda" projekt presenteras.

21 mars 2016 av Marcus Olsson

Nytt från Apple 21:a mars 2016

Apple höll idag sitt "Let Us Loop You In"-event. Inget större överraskningar presenterades, men det är ändå intressant att se hur Apple tänker kring framtiden för deras iPhones och iPads.

iPhone SE

Apple iPhone SE

Det har varit känt i upp emot ett halvår att Apple jobbade på en ny telefon som passar in i mitten i deras produktlinje. iPhone SE är en upphottad iPhone 5 till utseendet, men med i princip likadan hårdvara som iPhone 6s. Positivt för de som saknar en lite mindre iPhone.

Som vanligt är namnet "sådär" dock och orsakar förmodligen mer förvirring än något annat. iPhone SE kommer i samma färger som iPhone 6s (Space Gray, Silver, Gold och Pink Gold).

Priset i Sverige blir från 4695kr, vilket är relativt "lågt" om man ser på prestandan och priset på övriga iPhone-modeller.

iPad Pro

iPad Pro, 12" iPad:en som lanserades i höstas har ni en lillebror. Samma features och hårdvara, men mindre till storleken. iPad Air 2 och övriga modeller verkar stanna kvar i line up:en precis som tidigare utan några ändringar.

Pris från 6695kr.

Apple Watch

Ingen ny klocka presenterades, men väl nya armband i nylon – vilket är lite av en "no brainer" (varför fanns inte detta från början?) samt ett gäng nya färger på de tidigare banden.

525kr kostar dessa, vilket är som allt annat med Apple Watch lite i överkant.

Övrigt

Apple inledde eventet med att ta upp deras nuvarande batalj med den amerikanska staten, där Tim Cook tackade för all support de har tagit emot och tog upp om hur Apple ser på deras kunder och deras säkerhet. Kul att de faktiskt tar upp frågan vid ett sådant här publikt event.

Tim Cook & Co. nämnde även kommande iOS 9.3 och nya tvOS som finns tillgängligt redan idag.

Kul kuriosa är också att detta var det sista eventet Apple höll i sitt högkvarter vid Infinite Loop 1, i framtiden kommer dessa hållas vid deras nybyggda campus.

25 februari 2016 av Marcus Olsson

Mailchimp ändrar modellen för Mandrill

Mandrill är en e-posttjänst från Mailchimp som används för att skicka vad man i branschen kallar för "transactional mails" – e-post som ofta skickas automatiskt beroende på användarens handlingar. Detta kan t.ex. vara olika typer av notifikationer, e-post för lösenordsåterställning, en orderbekräftelse etc.

Mandrill har i många år varit mitt förstaval när det kommer till den här typen av meddelanden och jag har rekommenderat dem till otaliga kunder – just för att de har varit billiga, stabila och enkla att komma igång med.

Ändringarna

I morse skickade Mailchimp ut ett ganska bryskt och förvirrande meddelande om att Mandrill numera kommer att ingå som en "add on" till deras huvudtjänst; Mailchimp som används för att skicka ut mer bearbetade meddelanden (tänk traditionella e-postlistor för t.ex. nyhetsbrev).

"We're writing to let you know about some significant changes that will affect your Mandrill account.
[…]
Mandrill is becoming a transactional email add-on to paid MailChimp accounts instead of a completely separate product".

I korthet innebär det här att alla som vill använda Mandrill numera måste skapa ett Mailchimp-konto (ca $10/månad), samtidigt som de höjer priserna på Mandrill – från att ha erbjudit en gratisnivå (upp till ett visst antal utskick per månad) till att nu minst kosta $20/månad. Alltså en total lägsta kostnad på $30 (ca. 250kr) i månaden plus eventuella kringavgifter.

Kostnaderna i sig är inga större problem och är i de flesta fallen rimliga och fullt överkomliga – och absolut, somliga har säkert användning av Mailchimp om de även önskar att ha möjligheten till att skicka nyhetsbrev.

Där problemen börjar här är att jag har många egna projekt och ovanpå det separata konton för olika kunder som använder sig av Mandrill. Det är helt enkelt inte logiskt eller praktiskt att tvinga in alla de kunderna i en tjänst de varken behöver eller har användning av. Dessutom kan det vara problematiskt rent administrativt med kontakten med olika IT-avdelningar för att hantera eventuella DNS-ändringar och kontoskapande.

Ändringarna träder i kraft redan den 27:e april – vid den tiden kommer Mailchimp att stänga av alla ickemigrerade konton.

Ändringar och uppdateringar i tjänster man använder är något som man alltid behöver ha koll på och brukar hanteras smidigt, men jag måste tyvärr säga att Mailchimp har skött detta utomordentligt dåligt i det här fallet – samtidigt som de missar i att förklara varför de gör de här ändringarna till att börja med.

Du som kund

Jag kommer den kommande veckan att ta kontakt med de kunder som jag hanterar e-postkonton till för att se över hur vi ska hantera situationen.

I en majoritet av fallen (där det är praktiskt och kostnadseffektivt) blir det förmodligen som så att vi byter ut e-postleverantören mot något alternativ; alternativ som jag just nu håller på och går igenom och testar. Mitt mål är att detta inte ska innebära några större kostnadsändringar eller att man behöver ändra större delar av kodbasen.

I övriga fall där det är nödvändigt hjälper jag till att migrera Mandrill-kontot till Mailchimp.

Läs mer på Mailchimps och Mandrills bloggar.

11 februari 2016 av Marcus Olsson

Wordpress-admin utan lösenord

Ganska ofta blir jag tillfrågad att göra enklare uppdaterar på wordpress-sajter – och inte allt för sällan får jag endast en databasdump och temafilerna att gå på. I dessa fall kan det vara lite småklurigt att komma åt admin-kontot beroende på hur din lokala miljö är uppsatt – kanske är det krångligt att få mailfunktionerna att fungera för att återställa lösenordet, och att be om admin-lösenordet ska man självfallet inte göra.

Hur som, det finns en väldigt enkel väg runt detta. Wordpress tillåter en nämligen att man stoppar in ett MD5-hashat lösenord i databasen utan att "salta" det först. Så leta upp en admin-användare i databasdumpen, döp om denna till något passande (eller för all del, använd användarnamnet rakt av) och stoppa in ett passande lösenord – jag brukar köra på "admin" rakt av i min lokala miljö av smidighetsskäl.

Så här ser det ut hashat och klart:

21232f297a57a5a743894a0e4a801fc3

Nu kan du lätt och smidigt logga in och börja hacka runt.

2 februari 2016 av Marcus Olsson

Jekyll har nu ett profile-verktyg

Länge har jag tampats med att Jekyll (som den här webbplatsen använder sig av) tar frustrerande lång tid att generera marcusolsson.me.

Problemet i mitt fall ligger i att Liquid (template-språket för Jekyll) ofta kräver onödig och överflödig kod för att kunna genomföra de allra enklaste sakerna, som till exempel en enkel for-loop för att strukturera upp ett inläggs- och taggarkiv.

Men i.o.m. version 3 av Jekyll så har vi i alla fall fått ett nytt hjälpmedel att hitta de potentiella flaskhalsarna för ens webbplats i form av den nya "options flaggan" --profile.

Jekyll profile

För ett tag sedan uppdaterade jag både Ruby och Jekyll vilket resulterade i att jag fick ner genereringstiden från ~140 sekunder (jag vet…) till cirka 30 sekunder – efter ytterligare lite fixande och trixande med --profile är jag nu nere på dryga 16 sekunder. Mycket mer vettigt – om än fortfarande irriterande varje gång man ska testa mindre CSS-ändringar.

Sedan första februari är Jekyll 3 även tillgängligt för GitHub Pages för de som använder det.

19 januari 2016 av Marcus Olsson

Användare och desire paths

Desire path Bild: Flickr/Alan Stanton. Modifierad. CC BY-SA 2.0.

För många år sedan läste jag något väldigt intressant om planeringen av ett campus; när campuset för ett stort amerikanskt universitet byggdes, så bestämde man sig för att inte asfaltera några gångbanor – istället så lät man eleverna vandra fritt över området under en hel termin. Först därefter så asfalterade man – där eleverna redan hade gått upp gångar i gräset.

Om detta verkligen har skett eller inte – det vet jag ej. Men historien fastnade hos mig och passar ofta som ett exempel på ett bra tankesätt och metodik när man först börjar utveckla en webbapplikation (eller vilken typ av applikation som helst egentligen som verkliga användare använder).

Målet är ofta att utveckla flöden och produkter som är enkla i sin design och funktion, tillräckligt enkla att snabbt forma efter användarens önskemål och behov. Misstaget som många tyvärr gör är att man specificerar dussintalet avancerade funktioner; vilken data (om det ens finns någon) som ligger till grund för besluten bryr man sig sällan om – "Det ska bara vara så" eller "Våra konkurrenter har den funktionen". Detta resulterar ofta i onödigt dyra, stora och komplexa byggen som ingen någonsin har efterfrågat.

Satsa istället på att få ut en MVP (Minimum Viable Product), lägg resurser på verktyg för att mäta hur användarna använder produkter, låt dem enkelt komma i kontakt med dig – kontinuerligt iterera med datan du får ut som underlag. Så får du en produkt som folk faktiskt vill och kan använda.

Mer om "desire paths" hos Wikipedia.

12 januari 2016 av Marcus Olsson

Äldre versioner av IE går i graven

Internet Explorer Logotyp

Idag, den 12:e januari 2016 avslutar Microsoft all framtida utveckling och support för de äldre versionerna av internet explorer.

Detta betyder i praktiken att Microsoft endast stödjer Internet Explorer 11 samt deras nya webbläsare "Edge" i nuläget – det enda undantaget är de användare som är kvar på Windows Vista, där stödjs fortsättningsvis Internet Explorer 9 till viss del.

IE 8, 9 (förutom ovannämnda undantag) samt 10 bör därför ses som utdaterade och osäkra.

Om du ännu inte uppdaterat till Internet Explorer 11 så rekommenderas du starkt att göra så för att fortsättningsvis kunna surfa säkert och ta del av moderna webbtekniker. Givetvis finns det andra webbläsare att välja mellan också; så som Chrome och Firefox.

Läs mer hos Microsoft – End of IE Support.