Marcus Olsson

Frilansande webbutvecklare

14 juli 2015 av Marcus Olsson

New Horizons är framme (och förbi)

Alldeles nyss, tisdagen den 14 juli 2015 kl. 13:49:57 svensk tid så befann sig NASAs sond New Horizons vid den närmaste passagen blott 12500km från den lilla dvärgplaneten Plutos yta och är redan nu förbi och på väg ut ur Kuiper-bältet och solsystemet.

New Horizons är på många sätt en helt fantastisk bedrift; inte bara har den klarat av sitt uppdrag att utforska den sista planeten i vårt solsystem (Pluto är ju numera kategoriserad som en dvärgplanet, men vid uppskjutningen 2006 var Pluto fortfarande vår 9:e planet), den har även överlevt nästan 10 år i rymden och är också det snabbaste föremålet som människan någonsin har skjutit upp i rymden (Voyager 1, 1977, färdas just nu något snabbare dock).

'Pluto och charon' Pluto och dess största måne Charon. Bild tagen den 11:e juli 2015, tre dagar från Pluto. Bild: NASA/JHUAPL/SWRI.

På grund av instrumentens placeringar på sonden så kommer den ännu att dröja ett tag innan New Horizons kan skicka tillbaka bilder och annan data (bandbredden mellan jorden och pluto är knappast bredbandshastigheter direkt) – upp till 16 månader kommer det att ta innan all data är skickad. Men de inom kommande veckorna lär NASA kunna presentera ett par riktigt högupplösta bilder av Plutos yta.

11 juli 2015 av Marcus Olsson

Andra året som frilansare

Ännu ett år har passerat, och därmed är år två som frilansande webbutvecklare avklarat.

Året som gick skilde sig en del från det första året där jag mestadels jobbade med Wordpress-utveckling i form av teman och plugins. De senaste 12 månaderna har mer varit applikationsutveckling och kompletta lösningar (främst i Laravel).

Bland det som har hunnits med hittills så har jag fått chansen att jobba med produkter för Synsam, SPP och Continental Däck för att hantera digitala signeringar med BankID. Ett lagersystem för ha koll på kortterminaler, och t.o.m. ett Jekyll-projekt hanns även med då eleverna på Beckmans ville förverkliga en design de hade tagit fram till sin examenswebbplats.

Förra sommaren lanserade jag också en egen tjänst, webbjobb.io – som sedan fick en "spinn-off" i.o.m. Verkstadsjobb.se utvecklad för WV-group.

2015 har varit ett mycket spännande år så här långt och ännu bättre ska det bli – bl.a. är förhoppningen att fler egna projekt ska kunna lanseras under 2015 och 2016.

Tack än en gång till mina fantastiska kunder och klienter för fortsatt förtroende och sina fantastiska idéer!

Jag kommer att finnas tillgänglig under hela sommaren, om än endast på halvfart. I början av augusti är det fullt ös som gäller igen. På återseende!

7 juli 2015 av Marcus Olsson

Synka dina Atom-inställningar med Dropbox

På sistone har jag mer och mer börjat använda mig av Githubs egna editor Atom för mina projekt – efter att ha varit en flitig Sublime-använda under säkert fem år, minst.

Man kan tycka att med en modern editor, skapad av världens största fil- och versionhanteringstjänst borde ha någon form av synkronisering inbyggt – men så är inte fallet, vilket är väldigt frustrerande om man behöver jobba på flera datorer. Men tack vare Dropbox (eller förmodligen annan valfri fildelningstjänst) så går det att lösa relativt enkelt.

Börja med att flytta Atom-inställningarna till Dropbox.

$ mv ~/.atom ~/Dropbox/Apps/Atom

Därefter så skapar vi en symlink från den nya mappen på Dropbox (behövs göras på varje dator som ska hämta inställningarna från Dropbox).

$ ln -s ~/Dropbox/Apps/Atom ~/.atom

Ny synkroniseras alla inställningar, packages och annat mellan dina datorer.

1 juli 2015 av Marcus Olsson

Apple Music är lanserat

I går släppte Apple som utlovat sin nya storsatsning Apple Music.

Är själv sedan länge förmodligen en av de få i Sverige som kört på Rdio istället för Spotify. Mest då för att jag tycker att Spotify helt enkelt har haft alldeles för mycket onödigt "fluff" i sin applikation, dessvärre verkar Apple ha fastnat lite i samma fälla.

'Apple Music iO’S

Själva setup-processen är snabb och smärtfri – där du får välja vilka genrer och artister du föredrar för att skräddarsy dina rekommendationer, men därefter blir det desto svårare att hänga med.

Apple har försökt att slänga i princip allt i appen; ditt gamla iTunes bibliotek, musikvideos, rekommendationer, spellistor, radiostationer och deras krystade sociala nätverk "Connect" (minns ni "Ping"…?). Chansen är väldigt stor att man klickar runt och tillslut blir lätt vilsen.

Mest besviken är att jag att den enda funktionen som jag egentligen är intresserad av (förutom "sök" såklart), att skapa och lägga till musik i spellistor är relativt djupt begraven bland menyerna och kräver en hel del klick för att komma åt snabbt.

Men annars är det onekligen en välbyggd app, och utbudet verkar vara i nivå med konkurrenterna (på gott och ont) – förutom med Taylor Swift såklart.

'Apple Music iOS' Nya iTunes (som numera huserar Apple Music) på OS X.

Apple Music är gratis de tre första månaderna, därefter 99kr/mån (också i linje med konkurrenterna) – skadar ju aldrig att testa och se vad man tycker.

9 juni 2015 av Marcus Olsson

Laravel 5.1 är ute nu

Det känns som om det verkligen går undan med utvecklingen av Laravel; bara drygt 4 månader sedan 5.0 anlände, och cirka två månader sedan vi fick tillgång till Lumen – och nu för bara någon timma sedan släpptes Laravel 5.1.

Som sig bör med en mindre "punkt"-release är det inte jättemånga eller stora uppdateringar, men man bör ändå ha koll på vad 5.1 innebär:

LTS

Detta kan potentiellt vara stort; likt Linux-distrot Ubuntu så kommer nu Laravel släppa LTS-versioner (Long Time Support), där 5.1 är den första. I det här fallet innebär det ett utlovat stöd för buggfixar för de kommande 2 åren, och säkerhetsuppdateringar de kommande 3.

Gissningsvis är det här för att få större delar av community:t att hoppa över från 4.2 med säkerheten att 5.1 kommer att leva en lång tid framöver.

Bättre dokumentationen

Taylor Otwell och community:t har gått igenom all dokumentation och säkerhetsställt att kvalitén är högre än någonsin, med fler och bättre exempel.

PSR-2 är nu standard

Laravel har tidigare inte haft en uttalad officiell kodstandard, men nu är det spikat att det är PSR-2 som gäller. Inga större konstigheter egentligen, men jag har alltid sedan tidernas begynnelse av estetiska skäl använt mig av:

public function myFunction($foo) {
  return $foo;  
}

istället för:

public function myFunction($foo)
{
  return $foo;  
}

Något som nu är specificerat att jag inte får göra…

Alla filer i ramverket är nu även omskrivna för att följa PSR-2.

Event Broadcasting

För att hjälpa de som utvecklar applikationer som använder olika former av realtidsfeedback (á la notifikationer, exempelvis) – så finns det nu inbyggt i ramverket enklare metoder för att få serversidan att prata med klientsidan.

Ändringar på filstrukturen

En själv har precis lärt mig hur filstrukturen fungerar i 5.0, men nu är det dags att tänka om igen, även om det är betydligt färre ändringar den här gången; bl.a. så har "Commands" numera fått namnet "Jobs" – vilket är logiskt.

Om du ännu inte har flyttat upp till Laravel 5 från 4.2, så är detta ett perfekt läge för det – hoppa över till dokumentationen och börja läsa på redan nu.

8 juni 2015 av Marcus Olsson

Nytt från Apple 8:e juni – WWDC 2015

Likt förra årets WWDC (World Wide Developers Conference) var det uppdateringar för alla deras operativsystem som stod i fokus (och Apple Music!).

OS X El Capitan

'OS X El Capitan'

Sedan Apple lämnade kattdjuren bakom sig i.o.m. övergången till OS X Mavericks så har namnen blivit alltmer knepiga, det nyaste operativsystemet från Cupertino har avtäckts och fått namnet "El Capitan", efter en klippformation i nationalparken Yosemite (enligt Wikipedia).

Stort fokus ligger på prestanda och användbarhet framför nya funktioner och appar. Bl.a. så har Spotlight blivit än mer kompetent – och så finns det en rad nya metoder för att effektivisera användningen av fullskärmsläge och flera samtida skrivbord.

Systemtypsnittet är även utbytt till "San Fransisco" som idag redan används på Apple Watch, ersätter Helvetica Neue i Yosemite.

OS X El Capitan släpps under hösten.

iOS 9

Efter 8 kommer 9 och med sig relativt få intressanta nyheter för iPhone-användare. iPad-användare däremot ser fram emot en hel del nya funktioner som kommer att hjälpa en när det kommer till multi tasking, med bl.a. möjligheten att dela skärmutrymmet mellan två appar ("split screen").

Likt uppdateringen för OS X ligger annars störst fokus på förbättringar i existerande appar och presentanda.

Även iOS 9 släpps under hösten.

watchOS

Redan 6 veckor efter lanseringen (i USA, i Sverige har vi fortfarande inte sett skymten av den) av Apple Watch så presenterar Apple version 2 av watchOS.

Den nya versionen kommer låta utvecklare att köra appar direkt på enheten istället för att behöva förlita sig på en iPhone, vilket är en "no brainer" – märkligt att de inte tillät redan från börjar (de hade bråttom att faktiskt skeppa produkten får man gissa).

En hel del nya intressanta API:er görs även tillgängliga, som kanske äntligen låter utvecklare att skapa appar som gör Apple Watch till en "måste produkt", istället för produkt som är "Meh, cool och säkert användbar, men inget jag måste ha (men förmodligen köper till slut ändå eftersom att man är en sucker…)".

Swift 2

Apple annonserade andra intressanta nyheter riktade till utvecklare; bl.a. meddelade de att Swift 2 är på väg – och att Swift kommer att släppas helt open source (stort!).

Apple Music

'OS X El Capitan'

Ända sedan Apple köpte Beats i slutet av 2014 så har det mer eller mindre varit säkert att det förr eller senare skulle komma någon typ av musiktjänst som bygger vidare på musiktjänsten "Beats Music", and here it is.

Apple gjorde dock inte den nya produkten någon större tjänst när de avtäckte den (de har dock sin första "One more thing…" på mycket länge, bonuspoäng) – det hela var mycket förvirrande med diverse kända personer försökte förklara varför man absolut måste använda Apple Music, utan att direkt attackera Spotify eller Tidal.

Kort förklarat är Apple Music mycket likt Spotify, med ett socialt nätverk påkopplat där man kan följa sina favoritartister (Apple kallar det för "Connect"). En annan komponent är live radio, som de gjorde allt för stor sak av; när jag var 15-16 (12-13 år sedan) var internetradio stort för att sedan dö ut. Apple har dock knutit till sig ett par stora profiler och verkar tro stort på det här.

Blir i alla fall spännande att följa vad som kommer att ske med Apple Music – Spotify har ju ett väldigt stort försprång och är redan ett hushållsnamn i stora delar av världen.

Men… Drygt med en halv miljard iPhones ute i världen – och Apple bjuder på tre månader gratis av Apple Music? Vi kommer nog att få se en hel del kunder byta tjänst, och så har de Taylor Swift.

Apple Music släppts till Mac, PC och iOS den 30:e juni, och till Android(!) senare i höst.

2 juni 2015 av Marcus Olsson

Bättre koll på din data hos Google

Google lanserade här om dagen en ny central hubb (Google My Account) där man enkelt kan få en snabb överblik över inställningarna som rör ens integritet och säkerhet i Googles tjänster. Väldigt smidigt då man nu enkelt på en enda sida kan hantera inställningarna för alla Googles produkter, till skillnad från tidigare när man fick använda Google Dashboard och klicka sig igenom varje produkt.

Verktyget tillåter en att hantera allt ifrån Google- och Youtube-data, till vilken typ av annonser som ska visas till dig.

'Google My Account' Stäng av "Places you go" för att hindra Google från att spåra var du håller hus

Google valde att samtidigt att släppa en ny sajt där de beskriver hur de jobbar med sina användares personliga integritet, värt att ta en titt på det också.

Om nu också bara Google kunde konsekvent hantera ens språkinställningar över deras olika produkter…

6 maj 2015 av Marcus Olsson

PHP 7

PHP 7 är i full utveckling och redan i år är tanken att vi ska få lov att ta del av alla nya funktioner och förbättringar som ska finnas i en av de största revisionerna av PHP på länge.

Bland de största nyheterna är de stora prestandaförbättringarna som den nya versionen kommer att medföra – PHP 7 har redan merge:ats med PHPNG (PHP "Next Generation) för att få upp PHPs prestanda i nivå med HHVM i dagens PHP.

Rekommenderar starkt att spana in Davey Shafiks två artiklar på Engine Yard om kommande PHP 7, och ett par av de nyheterna vi kan förvänta oss; What to Expect When You’re Expecting: PHP 7, Part 1, part 2.

Fantastiskt kul att se att PHP fortsätter att utvecklas i snabb takt, i vad som verkar vara rätt riktning.

29 april 2015 av Marcus Olsson

NamnAPI uppdaterat

NamnAPI.se är en enkel tjänst som jag byggde för snart fyra år sedan i syfte att lära mig mer om REST-API:er.

Applikationen har fått stadigt med trafik under alla dessa åren, men sedan årsskiftet så har delar av den tyvärr legat nere sedan jag migrerade servrarna för ett 20-tal webbplatser och aldrig satte upp databasen ordentligt.

Efter att flera personer har kontaktat mig och önskar komma åt datan så valde jag att äntligen ge API:et lite ny kärlek.

NamnAPI är nu släppt i en helt ny version (2.0), med ett lite mer logiskt sätt att hantera parametrarna på. Applikationen är ombyggd från grunden, då jag passade på att använda mig av nya Lumen för att se hur pass användbart det är (väldigt enkelt och smidigt att arbeta med, ser kanske inte så många tillfället då det är att föredra framför Laravel dock). Ny smidigare webbplats med fler exempel är också uppe (förra webbplatsen använde Bootstrap 1.2).

Version 1.0 finns fortfarande kvar för dem som absolut måste använda sig av det.

Kul att folk ser fortfarande ser en användning av detta otroligt simpla lilla API.

14 april 2015 av Marcus Olsson

Lumen – Laravel i en mindre förpackning

Taylor Otwell, skaparen av Laravel, har under en längre tid kryptiskt pratat om "ett annat ramverk" som han har jobbat på – och idag så släpptes äntligen "Lumen".

Lumen är ett micro-ramverk likt Silex, Slim eller en av mina favoriter – FlightPHP, som är särskilt framtaget för att hantera tjänster som behöver vara extra snabba, men kanske inte behöver jobba särskilt mycket med gränssnitt. API:er t.ex.

Ramverket i sig är strukturerat väldigt likt Laravel, om man är en van Laravel-utvecklare så verkar det inte vara några som helst svårigheter att sätta sig in i koden.

Vad man tappar med Lumen gentemot Laravel är en hel del flexibilitet och alternativ, t.ex. möjligheten att route:a subdomäner, men vad du får istället är högre prestanda.

Eloquent ORM, Blade-templates och andra välkända Laravel-komponenter finns fortfarande att tillgå dock.

Läs mer om ramverket på lumen.laravel.com.

11 april 2015 av Marcus Olsson

Push to deploy med Git – den enkla vägen

Om man använder Git för versionhantering – via exempelvis Github eller Bitbucket – och sedan vill ha upp koden snabbt och enkelt på ens server för att servas till besökarna, hur gör man då?

Det finns så klart en rad olika tjänster som hjälper en att sätta upp "continuous integration" och andra automatiska flöden. Men säg att du bara driftar en enkel sajt, och vill ha möjligheten att kunna pusha upp kod när det passar dig direkt till servern? Det kikar vi närmare på här.

Jag förutsätter här att du redan har en server uppsatt med Git installerat, samt att man har SSH-åtkomst.

Börja med att installera ett Git-repositorium på en lämplig plats på servern. Jag brukar köra på en "syskonmapp" – om jag servar webbplatsen från t.ex. /var/www/mysite.com så placerar jag helt enkelt repositoriet i /var/repo/mysite.git.

cd /var
mkdir repo && cd repo
mkdir mysite.git && cd mysite.git
git init --bare

Nu finns ett Git-repo installerat på /var/repo/mysite.git, man kan redan nu lägga till repot som en remote och börja pusha kod. Men vad är det roliga med det? Just nu händer det inte så mycket.

Här kommer det fina med "Git hooks" in i bilden. Med dessa hooks kan du styra vad som sker när man interagerar med ett Git-repo. I det här fallet så använder vi post-recieve-hooken. Om filen inte återfinns under /var/repo/mysite.git/hooks/, skapa den då med cat > post-receive och fyll den med något liknande detta:

#!/bin/sh
git --work-tree=/var/www/mysite.com --git-dir=/var/repo/mysite.git checkout -f

Här talar vi helt enkelt om att när en push sker till repot, så ska den nya koden checkas ut, och uppdatera innehållet i ens "working tree", alltså /var/www/mysite.com – där webbplatsen servas ifrån.

Innan du börjar pusha kod, se till att du har korrekt rättigheter på repot, så slipper du huvudbry senare. T.ex: chmod +x -R /var/repo/mysite.git.

Din server är nu redo att publicera din kod när du pushar kod till den; enklast är att att använda t.ex. SourceTree och lägga din server som en remote (t.ex. git remote add live ssh://repouser@192.168.1.1/var/repo/mysite.git).

Lite mer avancerat, exempel med Laravel

Beroende på typ av webbplats, och eventuellt vilket ramverk man använder så brukar det finnas 2-3 olika jobb man gör varje gång man publicerar ny kod. Detta kan t.ex. vara rensa cache, uppdatera composer eller kanske köra vissa migreringar.

Alla dessa typer av jobb kan man också köra via ens post-receive-fil. I fallet med Laravel så vill vi köra composer install, php artisan migrate och även rensa cache:n.

#!/bin/sh
git --work-tree=/var/www/mysite.com --git-dir=/var/repo/mysite.git checkout -f

cd /var/www/mysite.com

echo "Processing composer"
composer install

echo "Running migrations"
php artisan migrate --force

echo "Clearing cache"
php artisan cache:clear

Varje gång du nu pushar kod till servern så kommer alla dessa jobb att köras automatiskt (skärmdump från SourceTree).

Push to deploy i SourceTree

Några frågor eller kommentarer? @olssonm är jag på Twitter