0

Interstellar

Jag blev smått chockerad över att Interstellar passerat helt under min radar. Är sedan många många år tillbaka ett stort Nolan-fan och är av uppfattningen att han till dags dato inte skrivit/regisserat en enda dålig hollywoodfilm. För er som kanske inte är bekanta med namnet Christopher Nolan, så är det mannen bakom bland annat Batman trilogin med Bale (ännu en stor favorit), men också Inception med flera.

Hans senaste projekt är filmen Interstellar, som ger gåshud bara av castinglistan http://www.imdb.com/title/tt0816692/.

Kika in den officiella trailern för filmen nedan. Jag tror inte det är frågan om det blir en bra film, utan om det blir Nolans hittills bästa verk.

0

Saker man sällan använder

Få gånger i livet slås man av hur mycket (onödiga) saker man har, som när man flyttpackar. Saker man köpt på sig och använt färre gånger än det finns fingrar på högerhanden, eller saker som används så sporadiskt att inköpspriset inte väger upp för nyttjandet.

Jag har flyttat väldigt mycket senaste åren och för varje gång tycker jag att jag skalat av i alla fall en eller ett par flyttlådor med ”skräp”. Trots det verkar dessa snabbt återkomma i form av nytt skräp.

Fredrik Wikingsson pratade förut i Filip & Fredriks Podcast om att hans favoritkänsla här på jorden, var att ta bilen till återvinningscentralen och bara kasta saker. Jag känner igen mig. Det finns något befriande i att göra sig av med saker. Vissa saker som framkallar minnen man inte längre vill ha, saker som ger en ångest i efterhand över inköpspris, saker som är helt onödiga och saker som knappt kan kallas saker längre.

Att få rensa ur det och kasta iväg det är skönt. Man slipper dra med sig extra bagage i onödan och kan fokusera på de saker som faktiskt har ett värde i dagsläget och som helt också fyller en funktion.

En sådan sak är böcker. När jag var yngre fantiserade jag om att ha en hel vägg i min lägenhet/hus täckt med böcker av alla möjliga typer och slag. Men som tiden gått och antalet flyttar ökat har den drömmen snarare blivit ett åbäke utan dess lika. Kunskap väger inget, men jag kan lova att kartongvis med böcker gör det.

Därför har jag nu kvar ett mindre urval (okej ett par flyttlådor ”bara”) på fast förrådsplats så länge och allt utöver det, så långt som möjligt, kör jag elektroniskt numera. Vilket fungerar riktigt bra! De flesta nya böcker och även äldre, tycker jag nu börjar finnas tillgängliga för läs/surfplattor. Vilket gör livet en hel del lättare när man flyttar bland annat.

Kurslitteratur är dock fortsatt i många fall endast tillgänglig i fysisk form. Men även där går det framåt. Många böcker inom datalogi och informatik finns tillgängliga som e-böcker (mycket tack vare att det är engelsk litteratur). Underbart. Man får med sig hela boktraven till och från universitetet i en iPad.

Men det är också en hel del annat. Alla nördar känner säkert igen sig i att vi har lite för många elektroniska prylar och gadgets. En hel del av dessa går bara direkt att rensa ur också. Eller varför inte kläder.

Som sagt. Tankar väcks kring hur mycket strunt man egentligen köper och hur mycket man egentligen inte använder av det man har. Samtidigt verkar det svårt att lära om sig också, kanske är det inte helt nödvändigt ens. Men nödvändigt är det hursomhelst att rensa ut en del och känna sinnesfriden när det landar långt ned i en container.

0

Planera för korta perioder

Ett vanligt misstag vid planeringen av ett projekt eller vägen fram mot ett mål tycker jag är för detaljerad planering direkt. Vi som arbetar med systemutveckling tillämpar för det mesta nuförtiden en agil utvecklingsmetod, som kortfattat går ut på att bryta ned ett omfattande projekt/problem i mindre delar, bygga och leverera hela tiden.

På samma sätt tycker jag man kan och bör arbeta även med andra saker i livet. Som student exempelvis så har jag börjat se långtidsplanering som något väldigt kontraproduktivt, jag tänkte förklara lite hur jag tänker.

Först och främst vill jag vara tydlig med att långsiktiga mål och visioner är bra men detaljerade planeringar för varje dag fram till det målet, planerat vid dag 1, fram till dag 200 är dåligt.

Man sätter sig själv i en situation där man får ett oerhört inrutat och starkt planerat vardagsliv, att det klyver bort möjligheten till andra val på vägen. Det ökar också stressen genom att man i ett tidigt skede planerat fel, exempelvis tidsuppskattat fel och vissa dagar får en enorm arbetsbörda. Andra dagar knappt något alls att göra.

Det ger också en väldigt falsk trygghet om att man hela tiden har koll på läget. Återigen om man sätter detta i relation till mjukvaruutveckling- finns det något projekt där tidsuppskattningen från dag 1 vart korrekt? Nej. Helt enkelt för att på vägen springer man på nya möjligheter, men oftast motgångar i form av saker som inte fungerar som tänkt, buggar, tredjepartsstrul eller vad det nu kan tänkas vara.

Genom att istället fokusera planeringen på korta perioder får man större fokus på vad som faktiskt ska göras, även ökad flexibilitet och minskad stress. Låt mig ta planeringen av en månads arbete som ett exempel.

Månadsplanering: Oerhört översiktlig, vilka stora mål ska nås? Hårda deadlines som måste mötas? Speciella händelser för denna månad?

Veckoplanering: Översiktlig, vilka mål ska nås innan veckans slut? Viktiga datum/händelser denna vecka?

Dagsplanering: Fokuserad och konkret. Planering i slutet av varje dag för nästkommande dag. Vilka mål ska nås imorgon? Vilka uppgifter måste jag arbeta med? Hur lång tid kommer det på ett ungefär att ta? Vilka tider ska jag arbeta? Vart ska jag vara? Hur ligger jag till sett till veckans övergripande stora mål?

Alltså att som ovan presenterar, ha ett litet internt möte i sitt eget huvud i slutet av varje dag på ~5 minuter. Det kanske låter basalt, men med ett par få tankar och ”mikroplanering” som denna så får du:

  • En tydlig bild av vad som skall göras imorgon (du kan direkt köra igång)
  • En tydligt bild av hur du ligger till
  • Flexibilitet, något som drar ut på tiden/går fel- planera morgondagen därefter
  • Minskad stress av att inte veta vad som gjorts/ska göras
  • Minskad risk för att skjuta upp saker, du vet vad du måste göra imorgon för att nå veckans mål, GET IT DONE
  • En efter arbetsdagen ledig period och ledigt sinne, dagen är klar, morgondagen planerad!

Den kanske viktigaste punkten utöver minskad stress och press är minskad risk för att skjuta upp saker. Tro mig, jag har själv tidigare haft stora problem med att skjuta upp saker, prokrastinering helt enkelt. Såhär i backspegeln, oerhört onödigt och en enormt källa till negativ stress.

Man får också en större ro i sinnet. Om jag vet vid slutet av arbetsdagen vad som ska göras imorgon- slipper jag ta med mig arbetet hem och där ha en gnagande känsla av att inte veta riktigt vart jag ska börja imorgon.

Genom att planera bättre och faktiskt ha en översikt över vad som måste göras för att hålla tidsplaneringen (kanske finns en hård deadline t.ex. under veckan i form av leverans/tenta/etc.), minskar man den negativa stressen och i slutänden levererar bättre.

0

Inga fler nolldagar

Tänkte idag prata lite om ett koncept som jag själv använt mig utav sedan början av året med stor framgång. En enkel sak egentligen som kan sammanfattas med en enkel mening.

Gör något varje dag, minst 20 minuters arbete med det som tar dig närmre dina mål.

Enkelt eller hur? Så vad innebär detta lite mera konkret?

Att ha så kallade ”zero days” är något som senaste åren växt fram mera och mera på nätet, många gånger i form av olika grupper och samlingar där man peppar varandra till ”inga fler nolldagar”. Tanken är helt enkelt att istället för att låta en hel dag bara gå till saker som inte på något sätt har med att nå ens mål, bli färdig med plugg/arbetsuppgifter- minst lägga 20-30 minuter på just arbete.

Det här gäller alltså de dagar och perioder som inte omfattas av de normala arbetsdagarna (som rent naturligt aldrig blir zero days). T.ex. helger, helgdagar, semesterdagar och om möjligt även sjukdagar. Där man för var och en av dessa dagar ändå ska försöka få något gjort, som knuffar en framåt mot de mål man har i livet.

Jag kan ju utgå från mig själv för enkelhetens skull och hur jag tillämpar ”inga fler nolldagar” nu under sommaren.

Som mål har jag att minst arbeta 30 minuter varje dag med open source och hobbyprogrammeringsprojekt. Dels för att hålla hjärnan i trim och igång över sommaren (uppförsbacken vid terminsstart blir annars betydligt större). Men även för att fortsätta utvecklas och ha tillfälle att sätta kunskapen till praktiskt arbete.

Men ”zero days” tänket har även ett annat syfte; motivationshöjare. Speciellt vi som arbetar med programmering känner igen att man plötsligt springer på en bugg eller problem som verkar omöjligt att lösa. Är detta i kombination med att man arbetar på ett mindre viktigt projekt (privat hobbyprojekt t.ex.) öppnar det upp för endera ett fulhack, alternativt att man struntar i det.

Genom att aktivt tillämpa en teknik där man kommer tvinga sig själv till att ändå dagen efter försöka igen efter att ha sovit på saken- gör ofta, tycker jag, att man nästa dag ser något man inte såg när man som mest frustrerad dagen innan smällde igen locket på laptopen.

Man känner också att man hela tiden rör sig framåt. Driver man ett eget företag eller liknande även ekonomiskt, men det jag främst syftar till här är givetvis kunskaps och erfarenhetsmässigt. Återigen om jag kopplar till mig själv som student så gör det väldigt mycket till att ha hållit sig ajour under sommaren. Steget tillbaka in i plugget vid terminsstart blir avsevärt mycket mindre.

Med denna ständiga utveckling så kommer man närmre även större mål i livet. Med mera kunskap och erfarenhet i bagaget är chansen att landa ett bra jobb betydligt större. Dessutom genom att aktivt utvecklas och göra något varje dag, får man en fin portfolio att peka på åt en rekryterare.

En sista sak innan jag rundar av är att det även ger en ständig prokrastinerare en spark i baken. Vet man att man varje dag ska göra något blir det till slut som allting annat, en vana. Man tar tag i saker och faktiskt får dem gjorda. Vilket såväl ökar på kvalitén på ens arbeten, som minskar onödig sista minuten stress.

Så mitt tips är att försöka få något litet gjort varje dag. Kom ihåg att dagarna då man har annat planerat eller helt enkelt inte har motivationen / är sjuk behöver man inte pressa sig hårdare än ~20-30 minuter. Det räcker, då har man fortfarande fått något gjort.

0

Lanserar ny portfolio

Då var det dags att presentera ännu ett nytt litet mindre projekt jag arbetat med senaste tiden, nämligen en ny portfoliosida.

Min tidigare fyllde sitt syfte, men jag kände att det var dags för något litet modernare och snyggare. Samt något som på ett kortare och mera direkt sätt förmedlar och presenterar det jag sysslar med och kan erbjuda. Men att i grund och botten behålla en avskalad enkelhet och en kodbas fri från andra ”hjälpramverk” än jQuery.

Jag tycker själv att de målen uppnås med den nya siten och jag hoppas att även ni kommer att gilla den.

Lämna gärna feedback om ni springer på något som ser konstigt ut eller inte fungerar som det ska!

Nya sidan hittar ni endera i huvudmenyn här ovan under Portfolio, eller genom att klicka här.

Robert Roos Portfolio

0

Bli bättre på programmering – bygg skit!

Hittade en riktigt bra artikel jag vill ta upp till diskussion här i kommande inlägg: (http://blog.programmersmotivation.com/2014/06/19/beginner-programmer-want-learn-programming-start-build-crap/). Den behandlar en fråga som man kan tycka har ett givet svar- vilket inte är verkligheten dock.

Frågan är enkel: hur blir jag bra eller bättre på programmering / ett visst språk / ett visst ramverk?
Svaret är: genom att arbeta med det.

Givet eller hur?

Fast ändock inte helt och hållet. Skulle säga av personlig erfarenhet och erfarenhet från studielivet att många angriper programmering, t.ex. ett nytt språk, på så sätt att -> Läsa bok -> Kunna språket. Vilket oftast är rätt långt ifrån sanningen.

Exemplet skribenten till artikeln ovan ger är enkelt. Hur lär du dig att cykla? Läser du en manual som cykeln, alla dess delar, hur den är tänkt att fungera, vad som händer när du trampar på pedalerna, hur bromsarna fungerar? Svaret är nej, du hoppar upp på cykeln och börjar trampa. Förmodligen ramlar, förmodligen vinglar, men blir med tid och övning successivt bättre ju mera tid du lägger på att träna och utvecklas.

Han utvecklar sedan sitt resonemang att på samma sätt måste man se på programmering. Oavsett om man förstår syntaxen och hur man rent teoretiskt skulle kunna använda språket, måste man dra igång sin editor / IDE och börja hacka för att få praktisk erfarenhet, ”bakslag” i form av kod som inte fungerar som tänkt, göra sig bekant med sin debugger osv.

Nästa fråga är: vad ska jag bygga?

Här liknar skribenten sina tidigare program med sina första teckningar. När man som liten stolt visade upp sina konstverk, skulle man snarare idag inse att de ser ut som skit. På samma sätt fungerar den tidiga kod man producerar, vilket är en del i inlärningskurvan. Det viktiga är att man faktiskt gjort något. Man har tagit tag i programmeringen, aktivt sökt svar på problem, producerat och samtidigt lärt sig.

Gör fåniga saker, onödiga, saker som redan gjorts (så länge det inte gör någon form av copyright-överträdelse), miniräknare, anteckningsapp.

Vad detta gör är även att höja din motivation som utvecklare. För även om dina tidigare kreationer är skitdåliga, har du slutfört något. Du har byggt en applikation, webbplats etc. som faktiskt kan köras och fungerar.

Vad bygger jag för skit?

För att avrunda det här inlägget så tänkte jag ge ett litet exempel på vad jag ofta bygger när jag nosar på ett nytt språk, eller ramverk/backend som skiljer sig en bit från det jag gjort tidigare. Exempel, att gå från Web Forms till MVC, eller Web Forms till att köra Node.JS

Jag bygger en gästbok ofta följt av en anteckningsapplikation. Gästboken ger en bra grund att stå på då man får implementera full CRUD-funktionalitet, arbetar man med språk/ramverk där JavaScript är inblandat också, får man även ett ypperligt tillfälle till att arbeta med asynkrona anrop mot det nya språk/ramverk man arbetar med. Det är en stabil startpunkt helt enkelt.

Anteckningsapplikationen sedan bygger egentligen vidare på de kunskaper man anskaffat sig genom att implementera CRUD-funktionalitet för sin gästbok. Bland annat vill man lägga till medlemshantering, administrationsvyer osv.

Med båda dessa i bagaget har man sedan fått känna på språket/ramverket en hel del och är redo att bege sig in på mera avancerade projekt och fördjupa sig. Eller varför inte gå tillbaka och börja refaktorera sin kod? Säkerligen dyker massor av saker upp som kan förbättras.

Nu är mina exempel rätt kopplade mot webben, men samma typ av applikationer kan faktiskt utan problem byggas även i konsolmiljö, eller varför inte i något GUI. App för Android och iOS?

0

Sommarprogrammering

Efter jag vet inte hur många veckor av regn har äntligen molnen skingrats och sommaren på riktigt börjat. Men allt med regnet har inte vart av ondo! Jag har haft en riktigt produktiv juni, såhär i pausen mellan läsåren. Där jag kunnat kika på lite tekniker och ramverk som inte riktigt hunnits med tidigare.

AngularJS t.ex. som jag verkligen börjat fastna för- funderar just nu lite kring vad jag ska göra för mindre projekt där jag kan dra nytta av det. Tanken är att köra ASP.NET MVC som backend, som i mångt och mycket ska skyffla fram data i JSON-format till AngularJS på frontend-sidan.

Problemet är dock just vad jag ska göra, men det kommer nog något snart.

Har labbat lite med Node.JS, Socket.io, MongoDB, Jade och Express också senaste tiden. Mest för att få lite koll på det hela och när det kan tänkas vara bra att väva in i framtida projekt. Självklara fördelar med Node.JS är ju kraften vid många simultana uppkopplingar. Satte samman en liten chatt i Node.JS, Socket.io och MongoDB t.ex. – är rätt coolt ändå med realtime applikationer, ser potential för att eventuellt i framtiden göra något litet JS-spel kanske?

Men annars är det i mångt och mycket fokus på fördjupning i .NET, samt även lite mera generell teori jag grottat ned mig i. Har bland annat införskaffat och börja arbeta med ”Clean Code” (http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) som jag hoppas ska ge en hel del nya tankar om att skriva snygg och bra kod.

Införskaffade även ”An Introduction To Object-Oriented Programming” (http://www.amazon.com/Introduction-Object-Oriented-Programming-3rd-Edition/dp/0201760312). Titeln är lite missvisande i sig tycker jag, då den får boken att framstå som rätt basal. ”Vadå, jag har väl använt metoder, klasser osv i år redan!?”. Absolut, men den här boken tar en titt på hela konceptet på ett helt annat sätt, abstraherar och exemplifierar såväl över flertalet olika språk, som från generella exempel.

Enkelt förklarat skulle jag vilja säga att den snarare introducerar ett visst sätt att tänka på. Den ger verktyg för hur man bäst kan angripa olika typer av problem man ställs inför. Är en bit in och rekommenderar den varmt till alla som vill få en större och djupare förståelse och ”best-practices” vad gäller objektorienterad programmering.

0

Karriärtips för programmerare

Reddit är en grymt bra källa för alla typer av nyheter och diskussioner. Inte minst tycker jag att man som utvecklare ständigt hittar massor av matnyttigt där, samt håller sig uppdaterad om det senaste.

Ett av de senaste fynden är en föreläsning av Trisha Gee som arbetar på mongoDB. Hon tar upp en fråga som alltför sällan tas upp såväl på studienivå som väl ute i arbetslivet- nämligen hur man avancerar sin karriär som utvecklare, systemvetare och programmerare. Samt vad definitionen av att avancera som utvecklare är och kan vara (kolla så förstår ni).

Spana in det, bäddar in föreläsningen här nedan.

0

Att vara en Junior Developer

Jag läste häromdagen en intressant artikel på Medium om att vara en Junior Developer (junior utvecklare på svenska säkerligen men titeln brukar vara densamma även för svenska jobb). Jag tänker inte recitera den här, men däremot rekommendera er att läsa den: https://medium.com/i-m-h-o/what-it-really-means-to-be-a-junior-developer-266acb772b4b

Främst för att jag håller med skribenten i mångt och mycket, även för att just frågor som dessa är det OTROLIGT sällan man faktiskt får upp till diskussion och information omkring från olika lärosäten. Man hamnar väldigt ofta i en akademisk bubbla oavsett vad det är man pluggar, datavetenskap särskiljer sig inte på något sätt. Man har en bild av hur livet efter studierna ser ut, förhoppningsvis även mål och -tydliga- vägar för att nå dit.

Inte sällan är just dessa -tydliga- vägar ren och skär inbillning, där verkligheten sedan är en helt annan. Oftast dock skulle jag säga på gott snarare än ont.

För att återgå till ämnet om just Juniora Utvecklare så tar artikeln upp saker som att man absolut ska tro på sig själv och sina egna kunskaper, men samtidigt ha en ödmjukhet. Att många sätter sin kunskap i att t.ex. förstå sig på många ramverk och kunna många språk. Att in i absurdum optimera en metod, vars slutresultat blir såpass abstrakt att tiden det tar för att sätta sig in i den vid uppdateringar / buggfixar gör att den istället blir kontraproduktiv. Exemplen är många och som sagt är inte detta en post som ska recitera originalet, så spana in den!

Dessutom vill jag slå ett slag för podcasten Hanselminutes där just denne skribent Jonathan Barronville är gäst i ett av de nyare avsnitten. Lyssna på podcastavsnittet – det är minst lika bra som artikeln och dynamiken i samtalet mellan en riktigt erfaren utvecklare och junior utvecklare är intressant och givande.

0

ASP.NET MVC 6

Nästa version av ASP.NET MVC, MVC 6 som hänger med i kommande Visual Studio 2014 och ”ASP.NET vNext” introducerar en hel del riktigt bra nyheter. Bland annat så kommer man i MVC 6 slå samman ‘Web Pages’, ‘MVC’ och ‘Web API’ till en och samma projektform.

Det gör att man får en enormt mycket större flexibilitet i sina projekt, tar vi Web Pages som exempel så kommer man på ett effektivare sätt kunna övergå till en MVC-modell med enhetstester osv om projektet växer och blir större än planerat. Tar vi Web API, som rent ”utseendemässigt” påminner väldigt mycket om MVC, kommer det på riktigt att bli mera likt MVC och kommer även ta med sig att moduler kan flyttas mellan olika projekt och direkt fungera, vilket det inte i alla lägen gör idag.

För min del så är det nog främst Web API som slås samman med MVC som är den bästa nyheten. Det blir litet mindre rörigt och som sagt ökar på flexibiliteten enormt mycket. Kan också tänka mig att det för många som precis börjat kika lite på ASP.NET blir tydligare vart man kan börja än vad det är idag. Det blir också en mera sammanhängande upplevelse att utveckla i .NET, personligen blir det riktigt skoj att få back-end delen mera samlad, för att sedan arbeta mot den genom bland annat AngularJS.

Kastar in en länk här till en presentation på ~1H som förklarar förändringarna lite mera i detalj, samt även presenterar en del exempel, spana in den: http://channel9.msdn.com/Events/dotnetConf/2014/MVC-6

ASP.NET MVC 6 ser i dagsläget ut att komma ut under första kvartalet 2015.