Inbäddad
ACID
@@ -26,17 +34,23 @@ Aslak nämnde även hur Neo4j samt Lucene . Neo4j inkluderar ett flertal algoritmer, t.ex. Dijkstra .
Möjligheten att traversera djupa relationsgrafer verkar ha ett ganska begränsat användningsområde, men när man väl behöver göra det så är det säkerligen mycket kraftfullt.
+
Rubyists, you can write JavaScript again
+
Priset för konferensens effektfullaste introduktion måste gått till Dr Nic a.k.a. Iron Man.
Han började med att nämna att man kan köra JavaScript i Ruby med hjälp av Johnson (Mozilla SpiderMonkey ) och att man kan använda capybara-envjs för att testa sina javascript på serversidan. Men efter det var det CoffeeScript som gällde.
+
“Capybara because it’s AWESOME”
+
CoffeeScript är i korta drag:
+
+
Enough Design
+
Ian McFarland från Pivotal Labs pratade om agila designprocesser och hur viktigt det är med en kort “feedback loop”.
Han påpekade att det är viktigt att iterera över problem, oavsett storlek.
En bra design är:
+
Modulär
Principfast
Regelbaserad
UX > Pixlar!
+
+
Man kan inte bli annat än imponerad av Niclas Nilsson när han så “vårdslöst” tvingar Ruby att bete sig som han vill.
Han berättade om hur man med lite fantasi kan bygga ett internt DSL utan att för den skull ha tillgång till Rubys AST .
Han visade även sin gem properties .
+
Middag på SoHo
+
Lördagskvällen spenderade jag med att diskutera hackerspaces , användning av Ruby för utveckling mot Arduino , mikrobryggerier i USA och mycket annat.
+
Söndag
+
From artist to programmer
+
Dagens första föreläsning stod Keavy McMinn för, och hon pratade om likheter (och skillnader) mellan konstnärskap och programmering.
+
“Just make”
+
Några av hennes punkter
+
Var öppen för förändringar
Det går att bygga något utan initial finansiering
Vi utvecklas genom reflektion
+
The MongoDB Effect
+
Jag hade gärna sett att Durran Jordan och Les Hill hade fokuserat lite mer på Mongoid än vad de gjorde. Vi vet redan att MongoDB är häftigt.
Enligt Durran borde man ALLTID använda MongoDB.
+
Mongoid
+
Rails 2 och Rails 3
Atomiska operationer
@@ -91,15 +122,21 @@ Enligt Durran borde man ALLTID använda MongoDB.
Scopes som tar block
Master/Slave
+
SOLID Ruby
+
Jag hade verkligen sett fram emot Jim Weirich föreläsning om SOLID och jag blev inte besviken.
+
Några av hans punkter
+
Fördela ansvaret
Monkey patchning i bibliotek är dåligt (Arv framför öppna klasser)
Protokoll är viktiga
+
Artificial stupidity, adding smarts to yer kode with a little machine learning
+
Konferensens tyngsta föreläsning (med råge) stod Randall Thomas från Engine Yard för.
@@ -107,7 +144,9 @@ Konferensens tyngsta föreläsning (med råge) stod R och RSRuby . Den enligt mig intressantaste delen av föreläsningen bestod i användningen av en support vector machine (KSVM i R) för att gruppera data och sedan använda detta för rekomendationer.
Böcker: Super Crunchers, Introductory Statistics with R
+
Software for the Human Animal
+
Hampton Catlin pratade om skillnaderna mellan manlig och kvinnlig design. Att vi inte är mycket mer än djur och att Internet är den nya vildmarken.
Han hävdade att vi människor generellt sett är självorganiserande och framförallt trevliga. Vi borde alltså sluta motverka på de fåtal användare som förstör och istället uppmuntra och belöna de användare som uppför sig.
diff --git a/_posts/2010-09-21-javascriptprestanda-2010.md b/_posts/2010-09-21-javascriptprestanda-2010.md
index 38100b7..15dcd1d 100644
--- a/_posts/2010-09-21-javascriptprestanda-2010.md
+++ b/_posts/2010-09-21-javascriptprestanda-2010.md
@@ -6,7 +6,7 @@ last_updated_by: johan
Förra hösten skrev jag ett program som löser Sudokus och körde det som ett enkelt benchmark-test av javascriptprestandan i de olika webbläsarna.
Nu har jag uppdaterat testresultatet för senaste versionen av de vanligaste webbläsarna och man kan lugnt konstatera att det hänt en hel del på javascriptfronten det senaste året.
-Testet jag körde är samma Sudoku-kombination som förra gången. Tiden det tar att räkna fram alla möjliga lösningar på just min dator jämförs med tiden det tog i den version av respektive webbläsare som var aktuell för ett år sedan.
+Testet jag körde är samma Sudoku-kombination som förra gången. Tiden det tar att räkna fram alla möjliga lösningar på just min dator jämförs med tiden det tog i den version av respektive webbläsare som var aktuell för ett år sedan.
Internet Explorer står för den överlägset största förbättringen och är verkligen med i matchen nu. Opera har gjort ett rejält ryck och kapat sin tid till en bråkdel. Firefox har förbättrat sin tid lite men har ändå helt plötsligt hamnat efter de andra. Chrome och Safari har putsat mer marginellt på sina redan låga tider.
@@ -23,4 +23,4 @@ På Mac OSX ser det ut så här. Där skiljer ingenting mellan Firefox 3.6 och F
På mobiltelefoner går det förstås inte lika snabbt. Här blir det inte heller så mycket en jämförelse mellan olika webbläsare utan mellan olika mobilplattformar och dess hårdvara. Det kan ändå ge en liten uppfattning vad man har för javascriptprestanda att tillgå när man utvecklar webbapplikationer för en mobil jämfört med en fullstor webbläsare.
Om du klickar på grafen och kör detta test på din mobil, skriv gärna resultatet som en tweet.
-//[[Johan]]
+/ [Johan](/johan)
diff --git a/_posts/2010-10-19-mountain-rb-1.md b/_posts/2010-10-19-mountain-rb-1.md
index cb227d9..d71bd8b 100644
--- a/_posts/2010-10-19-mountain-rb-1.md
+++ b/_posts/2010-10-19-mountain-rb-1.md
@@ -6,7 +6,6 @@ last_updated_by: peter
Athegas Peter Hellberg (@peterhellberg ) och Andrew Crookston (@acrookston ) har precis spenderat några dagar i Boulder, Colorado, USA (karta ) för att medverka på konferensen Mountain.rb – "A ruby pioneers conference" .
-
Konferensen lockade med flera ledande personligheter inom Ruby communityn som Jim Weirich (@jimweirich ) uppfinnare av Rake , Blake Mizerany (@bmizerany ) uppfinnare av Sinatra och Evan Phoenix (@evanphx ) lead developer på Rubinius ett alternativt Ruby VM, samt många andra duktiga talare.
Första dagen spenderade vi med en promenad i staden där vi bland annat hälsade på hos Dojo4 – en lokal utvecklingsbyrå, och tog oss upp till en av Boulders mer kända utsiktsplatser, Chautauqua som ligger vid foten av Flat Irons (bilden). Boulder ligger fantastiskt vackert vid 1,655 meter höjd precis där Rocky Mountains möter The Great Plains. Längs med hela den västra horizonten, från norr till syd, tornar bergen rakt upp ur marken som en vägg. Vänder man blicken mot öster ser man bara platt mark så långt ögat når.
@@ -16,3 +15,5 @@ Boulder har drygt 100 000 invånare och Colorados officiella (och största) univ
Eftermiddagen bjöd på registrering med mingel. Arrangören Marty Haught (@mghaught ) hade till konferensen hittat på en liten kort-bytar lek där man vid registreringen fick välja mellan fyra karaktärer; Cowboy, Prospector, Homesteader och Trapper. Detta val visade sig ha lite konsekvenser senare under konferensen när vi fick spelreglerna förklarade för oss tillsammans med en uppmaning att skapa valfritt program för att räkna poäng eller göra annat kul med korten vi hade.
Vi träffade bland andra Brennan Dunn (@brennandunn ) som bygger ett riktigt intressant öppet källkods-projekt som heter Rack::CMS , ett lättviktigt CMS som gör det möjligt för icke tekniker att ändra textinnehåll på en hemsida, använder Redis som lagringsmotor. Peter Williams (@pezra ) med Resourceful , ett gem för cachning av HTTP requests och Ryan Angilly (@angilly ) lokal entreprenör som bland annat byggt gwop.us ett mikrobetalningssystem för bloggare.
+
+/ [Peter](/peter)
diff --git a/_posts/2010-10-19-mountain-rb-2.md b/_posts/2010-10-19-mountain-rb-2.md
index f6af05e..6dee36e 100644
--- a/_posts/2010-10-19-mountain-rb-2.md
+++ b/_posts/2010-10-19-mountain-rb-2.md
@@ -4,28 +4,43 @@ date: 2010-10-19
last_updated_by: peter
---
-
+
+## Jim Weirich (@jimweirich ) - “To Infinity And Beyond ”
+
Jim höll i konferensens första keynote, titeln löd och innehöll allt från Speciella relativitetsteorin, rymdresor och Jims släktskap med folkgruppen Amish.
+
Our world is stranger than we think
+
Jim identifierade några områden som går att förbättra:
+
Testning/Expressiveness (Han har börjat jobba på ramverket Given)
Parallellism och stöd för flera CPU-kärnor
Message passing mellan Ruby VMs
-Tech Block #1
-Jay McGavren (@jaymcgavren ) - “Ruby on Android with Ruboto”
-
+
+## Tech Block #1
+
+### Jay McGavren (@jaymcgavren ) - “Ruby on Android with Ruboto”
+
+
Jay berättade om Ruboto vilket är ett projekt som gör det möjligt att köra Ruby under Android.
Som demonstration körde han en DRb server med Ruby Processing som han sedan fjärrstyrde från sin Androidmobil.
Tydligen har Dalvik en väldigt långsam reflektion , men det är något man aktivt jobbar med att lösa.
-Wayne Seguin (@wayneeseguin ) - “Do not Bring a Sword to a Gun Fight”
- Kortfattat kan man säga att föreläsningen handlade om att välja rätt verktyg för jobbet.
+
+### Wayne Seguin (@wayneeseguin ) - “Do not Bring a Sword to a Gun Fight”
+
+
+
+Kortfattat kan man säga att föreläsningen handlade om att välja rätt verktyg för jobbet.
+
Common sense isnt’t that common
+
De steg som Wayne gick igenom var:
+
Definiera problemet
Förstå problemet
@@ -33,44 +48,79 @@ De steg som Wayne gick igenom var:
Utvärdera de olika lösningarna
Lös problemet
+
Wayne är kanske mest känd för att ha skapat versionshanteraren RVM .
+
Tony Arcieri (@bascule ) - “Reia: Ruby Evolved”
+
Tony berättade om Reia (uttalas RAY-uh), vilket är ett Ruby/Python-liknande språk som körs under Erlangs VM (BEAM)
Projektet är i sin linda, men källkoden ligger självklart på GitHub så det är bara att sätta igång och experimentera om man känner att man behöver en något trevligare syntax än vad Erlang erbjuder. En trevlig liten detalj är att en JSON -parser finns inbyggd i språket. Stränghanteringen är även helt OK, men inte direkt snabb.
+
The fun syntax isn’t that FUN in Erlang
-Lunch
+
+## Lunch
+
Under lunchen snackade jag lite med Joshua Timberman (@jtimberman ) från Opscode . De utvecklar verktyget Chef vilket används för deployment och konfiguration av servrar på infrastrukturnivå (Server configuration management). Som alternativ kan man nämna Puppet från Puppet Labs.
-Evan Phoenix (@evanphx ) - “Staking your Claim in OSS”
+
+## Evan Phoenix (@evanphx ) - “Staking your Claim in OSS”
+
Evan gick igenom hur man driver ett lyckat open source-projekt. Fyra av de viktigaste poängerna var:
+
Karma
Open source är ett socialt fenomen
Kommunicera!
- Var trevlig och håll en sansad ton, även om du inte vill acceptera vissa patchar.
+
+ Var trevlig och håll en sansad ton, även om du inte vill acceptera vissa patchar.
+
+
+
+
Fork for LOVE!
-Det självklara exempelprojektet var hans eget heltidsprojekt Rubinius . (En implementation av Ruby, Engine Yard sponsrar utvecklingen)
-Rubinius
+
+Det självklara exempelprojektet var hans eget heltidsprojekt Rubinius .
+
+_(En implementation av Ruby, Engine Yard sponsrar utvecklingen)_
+
+### Rubinius
+
Projektet har många utvecklare då man från början bestämt att det räcker med en enda patch för att få commit-rättigheter. Evan beskrev lätta buggfixar som lågt hängande frukt och en “gateway drug” för nya utvecklare.
De har haft färre än 10 reverts under de tre år som projektet har funnits. Mycket beroende på det sociala kontraktet mellan utvecklarna.
-
-Joe O'Brien (@objo ) - “Everyone should know a little about Sales”
+
+
+## Joe O'Brien (@objo ) - “Everyone should know a little about Sales”
+
Joe berättade om sina erfarenheter som säljare och varför försäljning fått ett så dåligt rykte. Hans poäng var att försäljning handlar om att identifiera behov och hitta lösningar som passar båda parter. (Ganska likt det vi utvecklare gör) Han fortsatte även med att alla anställda är säljande, oavsett yrkesroll.
-Peter Jackson (@peteonrails ) - “Introduction to Geospatial Programming with GeoRuby, PostGIS, and OpenLayers”
+
+## Peter Jackson (@peteonrails ) - “Introduction to Geospatial Programming with GeoRuby, PostGIS, and OpenLayers”
+
Peter hade en ganska generell genomgång av geospatiell mappning (projektion/geometri) samt en snabb genomgång av projekten GeoRuby , PostGIS och OpenLayers .
-Jay Zeschin (@jayzes ) - “Avoiding the Seven Year Itch”
-Jay från Factory Design Labs avslutade dagens föreläsningar med lite tips för de som sitter fast i långtgående projekt, föråldrade projektmodeller eller legacy-system. Han nämnde även den stora tekniska skuld som (oftast) finns i projekt av den typen.
+
+## Jay Zeschin (@jayzes ) - “Avoiding the Seven Year Itch”
+
+
+
+
+Jay från Factory Design Labs avslutade dagens föreläsningar med lite tips för de
+som sitter fast i långtgående projekt, föråldrade projektmodeller eller legacy-system.
+Han nämnde även den stora tekniska skuld som (oftast) finns i projekt av den typen.
+
A project is a relationship
+
Uppbrott
Tyst lidande
Ta lärdom och gå vidare
+
Developers have a vast amount of domain knowledge
+
Jay hade även en lista på vad man bör göra för att rädda ett projekt av denna typ:
+
Snabb återkoppling (test/deploy )
Var hänsynslös
@@ -79,5 +129,9 @@ Jay hade även en lista på vad man bör göra för att rädda ett projekt av de
Sälj in fördelarna
Bygg upp ett förtroende
-Quick Left Hackfest
+
+## Quick Left Hackfest
+
På kvällen gick vi till Quick Left och fortsatte diskussionerna, kodade lite och käkade pizza.
+
+/ [Peter](/peter)
diff --git a/_posts/2010-10-19-mountain-rb-3.md b/_posts/2010-10-19-mountain-rb-3.md
index 49a0dad..bc0e301 100644
--- a/_posts/2010-10-19-mountain-rb-3.md
+++ b/_posts/2010-10-19-mountain-rb-3.md
@@ -3,90 +3,137 @@ title: "Mountain.rb - Dag 3"
date: 2010-10-19
last_updated_by: peter
---
-Keynote: Aaron Patterson (@tenderlove ) - "Fear Driven Development".
- Aaron öppnade med en kort presentation om hans professionella liv som utvecklare där han började med Perl 1999 och blev mer eller mindre tvingad att byta till Java 2002 som fortsatte till 2007 då han började använda Ruby.
+
+## Keynote: Aaron Patterson (@tenderlove ) - "Fear Driven Development".
+
+
+
+Aaron öppnade med en kort presentation om hans professionella liv som utvecklare där han började med Perl 1999 och blev mer eller mindre tvingad att byta till Java 2002 som fortsatte till 2007 då han började använda Ruby.
I och med att Aarons kunskaper kring Ruby ökade, ökade även hans rädsla för att han inte kunde tillräckligt mycket – kanske något många kan relatera till? Detta var i alla fall ämnet för hans tal.
-Hans tips för att motverka den känslan är att "Läsa, Läsa, Läsa" – varje dag, samt vad han gärna kallar "The Buddy System" eller i en något mer bekant term Pair Programming. I Aarons fall fortsatte han lite längre och gick med i e-post listor för ruby-talk och ruby-core, började gå på massor av konferenser och även undervisa på ett lokalt universitet i Seattle.
+Hans tips för att motverka den känslan är att "Läsa, Läsa, Läsa" – varje dag, samt vad han gärna kallar "The Buddy System" eller i en något mer
+bekant term Pair Programming. I Aarons fall fortsatte han lite längre och gick med i e-post listor för ruby-talk och ruby-core, började gå på massor av konferenser och även undervisa på ett lokalt universitet i Seattle.
+
+
En fras som är viktig i Aarons vardag är "I don't know", om man inte förstår något hjälper oftast personen du pratar med att lära dig och hjälpa dig förstå.
-Jonathan Dahl (@jondahl ) - "Programming and minimalism: lessons from Orwell and the Clash".
+
+## Jonathan Dahl (@jondahl ) - "Programming and minimalism: lessons from Orwell and the Clash".
+
Jons presentation började med liknelser mellan programmerare och andra professioner. Bland annat:
+
Ingenjörer: "Not about building things – about building processes" och "Designing solutions to direct problems"
Hantverkare: Att ha rätt verktyg, kunskaper, jobbar i små team och att ha rätt vanor och rutiner.
Författare: Skriv, skriv, refaktorera
+
Presentationen fortsatte med att antal musikdemonstrationer genom tiderna med exempel som Bach, Mozart, Mahler till lite mer nutida pop musik med Beatles och även punk musik. Han ville med dessa exempel demonstrera hur
Hans tips för att bli en bättre programmare är:
+
Konsumera: Läs mycket och inte bara om det du gör
Studera - hur skriver andra?
Producera - ju mer du skriver desto bättre blir du
+
Not only is bad writing impossible to understand, it is buggy.
-Tech Block #2
+
+## Tech Block #2
+
Ett Tech Block består av tre kortare presentationer.
-Jim Remsick (@jremsikjr ) - "Functionally Equivalent"
- Jims tal var något kortare men med ett direkt budskap att förklara fördelarna med funktionell programmering som letade sig ner till dessa tre punkter:
+
+### Jim Remsick (@jremsikjr ) - "Functionally Equivalent"
+
+
+
+Jims tal var något kortare men med ett direkt budskap att förklara fördelarna med funktionell programmering som letade sig ner till dessa tre punkter:
+
Kortfattat (mer koncist)
Trådbarhet (Concurrency )
- Inga buggar* - Går att bevisa matematiskt
+
+ Inga buggar*
+ - Går att bevisa matematiskt
+
+
Ruby är ett objektorienterat språk men det är inte helt ovanligt att skriva det i funktionell stil. Jim avslutade med en uppmaning
+
Gå ut och prova något du inte är bekväm med.
-CJ Kihlbom (@cjkihlbom ) - "Frontend Testing Frontier"
+
+### CJ Kihlbom (@cjkihlbom ) - "Frontend Testing Frontier"
+
Det var extra kul att höra CJ tala då han kommer från Göteborg och driver firman Elabs. CJ/Elabs var också initiativtagarna till konferensen Nordic Ruby som Athega sponsrade och vi har bloggat om tidigare.
Elabs har länge lagt ett stort fokus på frontend testning där Elabs, Jonas Nicklas (@jncoward ) bland annat har gjort ett par stora bidrag till Ruby commityn via Capybara och Evergreen . Detta var fokus för CJs tal.
CJ pratade om verktyg för integrationstestning:
+
+
Capybara är "driver agnostic" vilket innebär att man kan köra Capybara med hjälp av annan mjukvara som:
+
+
JavaScript unit testing är inte så vanligt så CJ tog tillfället att berätta om ett bra alternativ nämligen Jasmine av Pivotal Labs, tillsammans med Evergreen av Jonas Nicklas. En riktigt bra feature med Evergreen är att man kan skriva sina JavaScript tester i CoffeeScript . CoffeeScript är för JavaScript vad HAML/SASS är för HTML/CSS.
+
Front end testing is NOT hard
-Paul Sadauskas (@theamazingrando ) - Forms Don't Have to be this Complicated
+
+### Paul Sadauskas (@theamazingrando ) - Forms Don't Have to be this Complicated
+
Forms Suck
+
Paul pratade om hur krångliga fomulär kan vara i Rails, framförallt om man har HABTM relationer mellan sina modeller. Eller ännu värre, nästlade formulär.
-
+
Paul visade exempel på krångliga formulär och olika lösningar, de inkluderade bland annat att ladda om hela sidan, olika sidor för olika formulärdelar eller att generera direkt från JavaScript.
Paul's förslag till slut var att använda progressiv förbättring som laddar om sidan om man inte har JavaScript aktiverat men endast hämtar en partial via AJAX om man har JS aktiverat. Denna metod blir dessutom ganska enkel att testa.
-Blake Mizerany (@bmizerany ) - 1000 ways to kill a Buffalo
-
+
+## Blake Mizerany (@bmizerany ) - 1000 ways to kill a Buffalo
+
+
Blake är uppfinnaren av Sinatra och jobbar till vardags på Heroku som har en intressant och mycket flexibel Rails
hosting med enkel Add-on arkitektur.
-Blakes presentation tillhörde definitivt en av de mer humoristiska. I princip hela presentationen bestod av en serie tecknade figurer ("Ugh" grottmannen, hans familj och en buffel) ritade på en iPad i en rad olika situationer.
+Blakes presentation tillhörde definitivt en av de mer humoristiska. I princip hela presentationen bestod av en
+serie tecknade figurer ("Ugh" grottmannen, hans familj och en buffel) ritade på en iPad i en rad olika situationer.
-Presentationen (som kunde vart en säljpitch för Heroku) ville få oss att fokusera på problem istället för idéer, hur problem i vår vardag driver innovation och utveckling. För att knyta ihop med titeln var Blakes exempel på hur Ugh försökte jaga buffel på stenåldern.
+Presentationen (som kunde vart en säljpitch för Heroku) ville få oss att fokusera på problem istället för idéer,
+hur problem i vår vardag driver innovation och utveckling. För att knyta ihop med titeln var Blakes exempel på hur Ugh försökte jaga buffel på stenåldern.
Han pratade om hur man som Ruby on Rails utvecklare kan skriva små problemlösande add-ons till Heroku som andra utvecklare kan dra nytta av (och på så vis tjäna pengar).
- Heroku add-ons är små självständiga tjänster som man laddar upp i Heroku som i läggs på en Amazon EC2 instans. EC2 arkitekturen var ett starkt argument eftersom alla Heroku appar ligger i EC2 så är det extremt låg latens mellan instanserna (add-ons/appar), även internationellt och mellan kontinenter.
-Lightning talks
+
+
+Heroku add-ons är små självständiga tjänster som man laddar upp i Heroku som i läggs på en Amazon EC2 instans.
+EC2 arkitekturen var ett starkt argument eftersom alla Heroku appar ligger i EC2 så är det extremt låg latens mellan instanserna (add-ons/appar), även internationellt och mellan kontinenter.
+
+## Lightning talks
+
Lightning talks är snabba presentationer, man har 5-7 minuter att lära ut något. Det var många snabbpresentationer men en som jag tycker var värd att nämna.
-Neal Enssle (@nealenssle ) - How to be a better developer in 90 days
+
+### Neal Enssle (@nealenssle ) - How to be a better developer in 90 days
+
Denna presentation var tre bok rekommendationer för alla som vill bli bättre utvecklare (inte bara Ruby/Rails). Tanken är att man ska läsa en bok per månad.
The Passionate Programmer - Chad Fowler
+
Om du inte bryr dig kommer det att märkas.
Var en generalist.
@@ -95,17 +142,23 @@ Denna presentation var tre bok rekommendationer för alla som vill bli bättre u
Daglig framgång - vad åstadkom du idag?
Är du bättre idag än igår? (n + 1)
+
Clean Code - Robert C. Martin
+
Semi-objektiv och praktisk.
Storleken spelar roll.
Gör en sak, på ett enda ställe.
Scout-regeln, lämna koden bättre än du hittade den.
+
Refactoring: Ruby edition - Martin Fowler (m.fl.)
+
Koda för att öka förtroende för gammal kod
"Smells in code" - motverka dålig kod, duplicering, långa funktioner m.m.
Självförklarande variabelnamn
60 refaktoreringsmönster
+
+/ [Peter](/peter)
diff --git a/_posts/2010-10-30-lunch-athega-se.md b/_posts/2010-10-30-lunch-athega-se.md
index 56cae66..239350c 100644
--- a/_posts/2010-10-30-lunch-athega-se.md
+++ b/_posts/2010-10-30-lunch-athega-se.md
@@ -3,12 +3,20 @@ title: "lunch.athega.se"
date: 2010-10-30
last_updated_by: admin
---
-
-
-
-Under Athega Code Base byggde jag en helt ny version av en webbapplikation som jag för två år sedan byggde i Ruby on Rails och Geokit. Denna gång valde jag att använda ramverket Sinatra , databasen MongoDB (genom Mongomatic ) samt att hosta allt på Heroku och MongoHQ .
+
+
-Vad jag blev mest imponerad över var det inbyggda stödet för geospatial indexing i MongoDB samt hur enkelt det var att jobba med Heroku.
+Under Athega Code Base byggde jag en helt ny version av en webbapplikation som jag för två år sedan byggde i Ruby on Rails och Geokit.
+Denna gång valde jag att använda ramverket Sinatra , databasen MongoDB
+(genom Mongomatic ) samt att hosta allt på Heroku och MongoHQ .
-Gränssnittet är utvecklat med hjälp av biblioteket jQuery Mobile och det har visat sig fungera mycket bättre än jQTouch som jag tidigare har använt. Vad jag speciellt gillade var den inbyggda routern.
+Vad jag blev mest imponerad över var det inbyggda stödet för
+geospatial indexing i
+MongoDB samt hur enkelt det var att jobba med Heroku.
+
+Gränssnittet är utvecklat med hjälp av biblioteket jQuery Mobile och
+det har visat sig fungera mycket bättre än jQTouch
+som jag tidigare har använt. Vad jag speciellt gillade var den inbyggda routern.
+
+/ [Peter](/peter)
diff --git a/_posts/2010-10-30-warden.md b/_posts/2010-10-30-warden.md
index 19cb71a..e956c19 100644
--- a/_posts/2010-10-30-warden.md
+++ b/_posts/2010-10-30-warden.md
@@ -3,7 +3,9 @@ title: "Warden"
date: 2010-10-30
last_updated_by: peter
---
-Igår höll jag i internutbildningen på vårt månadsmöte, denna gång berättade jag om autentiseringsramverket Warden och lite kort om Rack .
+Igår höll jag i internutbildningen på vårt månadsmöte, denna gång berättade jag om
+autentiseringsramverket Warden och lite kort om Rack .
-
+
+/ [Peter](/peter)
diff --git a/_posts/2010-11-19-kanban-classes-of-service.md b/_posts/2010-11-19-kanban-classes-of-service.md
index 9992bf8..ab5f5b8 100644
--- a/_posts/2010-11-19-kanban-classes-of-service.md
+++ b/_posts/2010-11-19-kanban-classes-of-service.md
@@ -7,16 +7,21 @@ Jag arbetar just nu med ett IT-förvaltnings-team där vi kör Kanban. Med en Ka
Vi arbetar frekvent och övervägande med saker som har fasta leveransdatum. Vissa gånger har det stor betydelse för hela verksamheten att vi håller leveransdatum. Andra gånger är det snarare önskvärt från beställaren att det är klart ett visst datum. På en tavla med en stor och dynamisk backlog kan det vara svårt för beställare att prioritera när de måste hålla reda på alla leveransdatum och samtidigt hur viktiga det är att datumet hålls.
-Kostnad
+## Kostnad
+
Vi tittar på vad kostnaden blir om vi inte levererar till utsatt datum. Kommer det kosta väldigt mycket eller finns det lite utrymme för justering av planerad leverans. För att tydliggöra detta använder vi nedan klassificeringar (Baserade på David J Anderson beskrivning av Classes Of Service) Vi har fritt översatt vissa ord och gjort en anpassning som passar oss.
-UTFÖR
-Först och främst har en en utför-klass. Aktiviteter som klassas som utför ska påbörjas så fort som möjligt och vi ska lägga så mycket resurser vi behöver för att på snabbast möjliga sätt ta aktiviteten i mål. Vi har inte många men när dom kommer kan det handla om produktionsstörningar som gör att verksamheten inte kan utföra sitt arbete. Dessa rör sig i en prioriterad fil på tavlan. Går ej att planera, måste utföras direkt när dom dyker upp.
-KRITISKT DATUM
-Sen har vi aktiviteter som har ett kritiskt leveransdatum. Dessa aktiviteter har hög affärspåverkan om vi inte håller leveransen. Dessa aktiviteter är UTFÖR-aktiviteter men med skillnaden att leverandatum är i framtiden. Behöver inte påbörjas direkt. Går att planera.
-FAST DATUM
-Aktiviteter där affärspåverkan om vi bryter leveransdatumet blir ringa klassas som FAST DATUM. Dessa har ett tydligt leveransdatum men ofta hänger leveransdatumet mer ihop med planerade releaser än stora kostnader för verksamheten. Vi har möjlighet att i värsta fall skjuta på leveransen av dessa en kortare tid.
-STANDARD
-Detta är aktiviteter som ska göras men det finns inget datum då dom måste vara klara. Alla tjänar på att göra dom så fort som möjligt men dom har inget fast leveransdatum. Det kan till exempel vara förebyggande aktiviteter för att sänka risker eller förenkla/effektivisera arbetet.
+
+
+ UTFÖR
+ Först och främst har en en utför-klass. Aktiviteter som klassas som utför ska påbörjas så fort som möjligt och vi ska lägga så mycket resurser vi behöver för att på snabbast möjliga sätt ta aktiviteten i mål. Vi har inte många men när dom kommer kan det handla om produktionsstörningar som gör att verksamheten inte kan utföra sitt arbete. Dessa rör sig i en prioriterad fil på tavlan. Går ej att planera, måste utföras direkt när dom dyker upp.
+ KRITISKT DATUM
+ Sen har vi aktiviteter som har ett kritiskt leveransdatum. Dessa aktiviteter har hög affärspåverkan om vi inte håller leveransen. Dessa aktiviteter är UTFÖR-aktiviteter men med skillnaden att leverandatum är i framtiden. Behöver inte påbörjas direkt. Går att planera.
+ FAST DATUM
+ Aktiviteter där affärspåverkan om vi bryter leveransdatumet blir ringa klassas som FAST DATUM. Dessa har ett tydligt leveransdatum men ofta hänger leveransdatumet mer ihop med planerade releaser än stora kostnader för verksamheten. Vi har möjlighet att i värsta fall skjuta på leveransen av dessa en kortare tid.
+ STANDARD
+ Detta är aktiviteter som ska göras men det finns inget datum då dom måste vara klara. Alla tjänar på att göra dom så fort som möjligt men dom har inget fast leveransdatum. Det kan till exempel vara förebyggande aktiviteter för att sänka risker eller förenkla/effektivisera arbetet.
+
+
Hur får vi standardaktiviteter att bli utförda om det hela tiden beställs fasta och kritiska-datum-aktiviteter? Att sätta begränsning i hur mycket arbete som får pågå samtidigt är ett sätt. När pågående arbete(WIP) begränsas kan detta ske per klass. T.ex. sätter vi WIP-Limit (Begränsningen av hur många aktiviteter som får vara påbörjade samtidigt) olika för de olika klasserna.
### Exempel
@@ -37,4 +42,4 @@ Det innebär att när vi planerar aktiviteter tar vi automatiskt in STANDARD-akt
Så länge vi är noga med att vår totala arbetsbelastningen ligger justerad/med marginal efter vår förmåga att leverera har vi har möjlighet att göra klart aktiviteter i stället för att bara påbörja nya hela tiden. Då håller vi våra cykel-tider inom förväntade och uppskattade värden. Vi försöker nu noggrant klassificera allt samtidigt som vi diskuterar med beställare och beskriver våra klassers cykel-tider. Det hoppas vi gör vår leveranskapacitet tydligare och lättare att förstå.
-// [[Mats]]
+/ [Mats](/mats)
diff --git a/_posts/2011-03-23-nyttigheter-pa-fredagsforelasningen.md b/_posts/2011-03-23-nyttigheter-pa-fredagsforelasningen.md
index 4c9ecf3..fc364cb 100644
--- a/_posts/2011-03-23-nyttigheter-pa-fredagsforelasningen.md
+++ b/_posts/2011-03-23-nyttigheter-pa-fredagsforelasningen.md
@@ -3,6 +3,7 @@ title: "Nyttigheter på fredagsföreläsningen"
date: 2011-03-23
last_updated_by: tobbe
---
+
[Krister Söderström](/krister), som jobbar som utvecklare på Athega, kommer att föreläsa om vektorkvantisering och klustring.
Första delen av föreläsningen är en enkel genomgång om vad en vektor är samt vad kvantisering och klustring innebär. Syftet är att ge en grundläggande förståelse inför den andra delen av föreläsningen.
diff --git a/_posts/2011-09-09-kanban-klris.md b/_posts/2011-09-09-kanban-klris.md
index eb4f819..99a9fba 100644
--- a/_posts/2011-09-09-kanban-klris.md
+++ b/_posts/2011-09-09-kanban-klris.md
@@ -3,12 +3,17 @@ title: "Kanban Leadership Retreat Iceland 2011"
date: 2011-09-09
last_updated_by: peter
---
-Jag firade midsommar på Island i år. Förutom att jag såg lite av landet deltog jag i Kanban Leadership Retreat (David J Anderson and Associates). Jag tycker det var en mycket givande tillställning och formatet (unconference) vad en ny erfarenhet för mig. Sessionernas innehåll bestämde vi tillsammans och i princip inga sessioner var förberedda innan. Detta gjorde att fria diskussioner fick stort utrymme. Sessionerna blev väldigt varierande i innehåll.
+Jag firade midsommar på Island i år. Förutom att jag såg lite av landet deltog jag i Kanban Leadership Retreat _(David J Anderson and Associates)_.
+Jag tycker det var en mycket givande tillställning och formatet (unconference) vad en ny erfarenhet för mig.
+Sessionernas innehåll bestämde vi tillsammans och i princip inga sessioner var förberedda innan.
+Detta gjorde att fria diskussioner fick stort utrymme. Sessionerna blev väldigt varierande i innehåll.
-De övriga deltagarna var de flesta mycket erfarna av både Lean/System thinking och Kanban. Själv sög jag i mig av den samlade expertisen så mycket jag kunde. Eftersom vi alla bodde på samma hotell blev det naturligt med fortsatta spännande diskussioner långt in på småtimmarna.
+De övriga deltagarna var de flesta mycket erfarna av både Lean/System thinking och Kanban.
+Själv sög jag i mig av den samlade expertisen så mycket jag kunde.
+Eftersom vi alla bodde på samma hotell blev det naturligt med fortsatta spännande diskussioner långt in på småtimmarna.
-Det enda jag efteråt känner var lite synd var att många sessioner krockade tidsmässigt, och jag hade velat varit med på alla.
+Det enda jag efteråt känner var lite synd var att många sessioner krockade tidsmässigt, och jag hade velat varit med på alla.
> Får jag möjlighet att åka nästa år, tvekar jag inte en sekund.
-// [Mats](/mats)
+/ [Mats](/mats)
diff --git a/_posts/2011-09-12-rocky-mountain-ruby-2011.md b/_posts/2011-09-12-rocky-mountain-ruby-2011.md
index 4697a86..c4f60cd 100644
--- a/_posts/2011-09-12-rocky-mountain-ruby-2011.md
+++ b/_posts/2011-09-12-rocky-mountain-ruby-2011.md
@@ -6,7 +6,7 @@ last_updated_by: peter

För lite mer än en vecka sedan kom jag hem från Colorado och konferensen
-[Rocky Mountain Ruby](http://rockymtnruby.com/), förra året hette den
+[Rocky Mountain Ruby](http://rockymtnruby.com/), förra året hette den
[Mountain.rb](http://mountainrb.com/) men det var tydligen många som misstog den för [MountainWest
RubyConf](http://mtnwestrubyconf.org/) så arrangörerna valde helt sonika att byta
namn på konferensen. Precis som förra året hölls den på [Boulder Theater](http://www.bouldertheater.com/).
@@ -81,7 +81,7 @@ så kombinerade Nick representationen av datat och länkarna i JSON.
Självklart hade han skrivit ett bibliotek för att göra detta på ett
smidigt sätt. [Roar!](http://rubygems.org/gems/roar) eller
RESTful, resource-oriented architectures in Ruby. Han rekomenderade även böckerna
-[REST in Practice](http://restinpractice.com/) och
+[REST in Practice](http://restinpractice.com/) och
[RESTful Web Services
Cookbook](http://www.restful-webservices-cookbook.org/).
@@ -129,7 +129,7 @@ Formatet för Ignite är väldigt enkelt:
[Konstantin Haase](http://rkh.im/) pratade om hur man kan vrida och
vända på [Rack](http://rack.rubyforge.org/) för att få streaming
-(HTTP server push) att fungera. Alternativen som presenterades var
+(HTTP server push) att fungera. Alternativen som presenterades var
[Server-Sent Events](http://dev.w3.org/html5/eventsource/) (envägs,
enkelt, klienten går att implementera i JavaScript) och
[WebSockets](http://websocket.org/) (tvåvägs, men stöds sällan).
@@ -165,4 +165,4 @@ Resten av helgen gick åt att flyga hem till Stockholm :)
**Uppdatering:** Nu ligger några av de filmade presentationerna uppe på [Confreaks](http://confreaks.net/events/rockymtnruby2011)
-// [Peter](/peter)
+/ [Peter](/peter)
diff --git a/_posts/2011-09-13-wip-limit-indicator.md b/_posts/2011-09-13-wip-limit-indicator.md
index 55fcffd..cb12268 100644
--- a/_posts/2011-09-13-wip-limit-indicator.md
+++ b/_posts/2011-09-13-wip-limit-indicator.md
@@ -3,10 +3,12 @@ title: "Kanban WIP-Limit indikator"
date: 2011-09-13
last_updated_by: mats
---
-När ett team visualiserar arbetet och använder WIP-limits (begränsning av pågående arbete) kan detta till exempel göras per kolumn på tavlan. Vi får ha 3 pågående arbete i analys, 4 pågående arbete i implementation systest osv. Om man arbetar med ett team som består av generalister (större delen av teamet kan utföra aktiviteter i flera kolumner) vandrar ofta personen med aktiviteten genom olika lägen på tavlan. Då kan man använda en total WIP-limit och delvis frångå den flödes drivande mekanismen i Kanban. En CONWIP på flera eller alla kolumner. Men med många team-medlemmar och många aktiviteter kan det vara lite otydligt vilken WIP teamet ligger på.
+När ett team visualiserar arbetet och använder WIP-limits _(begränsning av pågående arbete)_ kan detta till exempel
+göras per kolumn på tavlan. Vi får ha 3 pågående arbete i analys, 4 pågående arbete i implementation systest osv.
+Om man arbetar med ett team som består av generalister (större delen av teamet kan utföra aktiviteter i flera kolumner) vandrar ofta personen med aktiviteten genom olika lägen på tavlan. Då kan man använda en total WIP-limit och delvis frångå den flödes drivande mekanismen i Kanban. En CONWIP på flera eller alla kolumner. Men med många team-medlemmar och många aktiviteter kan det vara lite otydligt vilken WIP teamet ligger på.
-Vi vill visualisera detta tydligt och dagligen. Vi provar just nu en WIP-Indikator som vi uppdaterar varje dag på tavelmötet. Då får vi en klar och tydlig bild av mängden pågående arbete och hur nära taket vi är (Eller om vi i värsta fall går över på akuta ärenden med hög SLA)
+Vi vill visualisera detta tydligt och dagligen. Vi provar just nu en WIP-Indikator som vi uppdaterar varje dag på
+tavelmötet. Då får vi en klar och tydlig bild av mängden pågående arbete och hur nära taket vi är
+_(Eller om vi i värsta fall går över på akuta ärenden med hög SLA)_
-[](http://img.mu/w9OaCT)
-
-// [Mats](/mats)
+/ [Mats](/mats)
diff --git a/_posts/2011-09-16-pragmatisk-installning-till-tdd.md b/_posts/2011-09-16-pragmatisk-installning-till-tdd.md
index 229bcff..60d637e 100644
--- a/_posts/2011-09-16-pragmatisk-installning-till-tdd.md
+++ b/_posts/2011-09-16-pragmatisk-installning-till-tdd.md
@@ -3,12 +3,16 @@ title: "En pragmatisk inställning till testdriven design"
date: 2011-09-16
last_updated_by: peter
---
-Att utveckla ren, funktionell kod av hög kvalitet, med få buggar, tror jag är något som alla skulle vilja hävda att det gör. Vissa gör det säkert redan, men jag skulle vilja dela med mig av en kort dragning jag hade för Aftonbladets utvecklingsavdelning i dag.
+Att utveckla ren, funktionell kod av hög kvalitet, med få buggar, tror jag är något som alla skulle vilja hävda att det gör.
+Vissa gör det säkert redan, men jag skulle vilja dela med mig av en kort dragning jag hade för Aftonbladets utvecklingsavdelning i dag.
-[TDD](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd) (Test Driven Design) är en av flera xDD-metoder som jag fastnat för litet extra och till slut blivit helt beroende av. Jag tänkte inte gå in närmare på exakt vad det innebär, eftersom så många andra gör det [bättre](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
+[TDD](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd) _(Test Driven Design)_ är en av flera xDD-metoder
+som jag fastnat för litet extra och till slut blivit helt beroende av. Jag tänkte inte gå in närmare på exakt vad det innebär,
+eftersom så många andra gör det [bättre](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).
-Denna presentation riktar sig till den som vet vad ett enhetstest är, kanske testar litet, men där aha-upplevelsen inte riktigt infunnit sig ännu. Naturligtvis är den riktad och lämpar sig bäst med mig ivrigt gestikulerandes framför.
+Denna presentation riktar sig till den som vet vad ett enhetstest är, kanske testar litet, men där aha-upplevelsen inte riktigt
+infunnit sig ännu. Naturligtvis är den riktad och lämpar sig bäst med mig ivrigt gestikulerandes framför.
-// [Christian](/chrille)
+
-
+/ [Chrille](/chrille)
diff --git a/_posts/2011-09-21-kanban.md b/_posts/2011-09-21-kanban.md
index c419f0d..cb56b50 100644
--- a/_posts/2011-09-21-kanban.md
+++ b/_posts/2011-09-21-kanban.md
@@ -5,7 +5,7 @@ last_updated_by: mats
---
[Mats Ygfors](/mats), som jobbar som projektledare på Athega, kommer att föreläsa om [Kanban](/kanban) utifrån sina erfarenheter på en stor bank.
-Innehåll
+## Innehåll
- Grunderna i Kanban
- Vilka grundproblem upplevde vi och hur kunde [Kanban](/kanban) adresserade dessa?
diff --git a/_posts/2011-10-02-limit-work-in-progress.md b/_posts/2011-10-02-limit-work-in-progress.md
index d277b36..c0fbe35 100644
--- a/_posts/2011-10-02-limit-work-in-progress.md
+++ b/_posts/2011-10-02-limit-work-in-progress.md
@@ -3,8 +3,8 @@ title: "Begränsa mängden pågående arbete"
date: 2011-10-02
last_updated_by: peter
---
-Gjorde en liten slide angående ledtider och spill i relation till mängden pågående arbete. Ville försöka visualisera vad som händer vid task switching och effekten på ledtiden.
+Gjorde en liten slide angående ledtider och spill i relation till mängden pågående arbete. Ville försöka visualisera vad som händer vid task switching och effekten på ledtiden.
-// [Mats](/mats)
+/ [Mats](/mats)
diff --git a/_posts/2011-10-28-det-gors-alldeles-for-manga-nativa-mobilappar.md b/_posts/2011-10-28-det-gors-alldeles-for-manga-nativa-mobilappar.md
index 9871b92..9f35cba 100644
--- a/_posts/2011-10-28-det-gors-alldeles-for-manga-nativa-mobilappar.md
+++ b/_posts/2011-10-28-det-gors-alldeles-for-manga-nativa-mobilappar.md
@@ -4,14 +4,17 @@ date: 2011-10-28
last_updated_by: peter
---
+
Årets [Athega Code Base](/code-base-2011) är förlagd till ön Torskär i det allra ytterstra stråket av skärgård innan havet mot Åland. På ön står den gamla fyren, Söderarm, känd från väderrapporter och vindobservationer.
Här driver Anngret Andersson en fantastisk [konferensanläggning](http://www.soderarm.com/web/start.shtml) som jag varmt kan rekommendera. Öns [historia](http://www.soderarm.com/web/historia.shtml) är intressant och vi huserar i ett hus som byggts till i fem omgångar. Med den sista kom ett kontrolltorn åt Sjöfartsverket med makalös utsikt. Detta rum har varit vår kodplats under dessa dagar.
- Bilden till vänster visar faktiskt inte en Athegaanställd. Den är från 1988 och visar hur rummet användes innan vi tog över.
-
+
+
+Bilden till ovan visar faktiskt inte en Athegaanställd. Den är från 1988 och visar hur rummet användes innan vi tog över.
## Projektet
+
Med smartphone-vågen har ett onaturligt stort behov av nativa mobilappar till framför allt iOS, men också Android, sköljt över oss. Alla vill vara representerade i Apples och Googles app stores. Som utvecklare får man frågan ”Hur mycket kostar det att göra en Iphone-app?”. Den frågan är självklart väldigt svårbesvarad utan att veta vad appen ska göra.
Jag har varit med om detta tidigare, för snart 15 år sedan. Då var världen översvämmad av webbyråer, som många gånger var konverterade reklambyråer. Deras uppgift var att svara på frågan ”Vad kostar en hemsida?" och sedan bygga en hemsida. Det var sällan viktigt vad den innehöll, bara man "fanns på nätet".
@@ -19,7 +22,9 @@ Jag har varit med om detta tidigare, för snart 15 år sedan. Då var världen
Min poäng är alltså, att det för närvarande görs på tok för mycket nativa mobilappar. Många appar skulle passa mycket bättre som mobila webbappar. Med HTML5 och kraftfulla telefoner är begränsningarna få.
### Athega Dashboard
+
+
På Athega använder vi det eminenta tidrapporteringssystemet, [Harvest](http://http://www.getharvest.com/). Vi använder även Google för mail och document, mm. Dessa system, i kombination med våra egna system har alla publicerade APIer, som lämpar sig ypperligt att bygga en webbapp på. Jag tänkte mig en dashboard där du kan se grafer över tidrapporter, mätvärden, rapportera tid, osv.
Denna gång hann jag med att göra en graf som visar hur vår rapporterade tid fördelar sig över aktuell månad. Servern kommunicerar direkt med Harvest och telefonen med servern. Lokalt ritas ett diagram upp med RGraph som använder sig av ett canvaselement. Koden för den intresserade ligger på [GitHub](https://github.com/athega/acb2011-chrille).
@@ -31,6 +36,6 @@ Denna gång hann jag med att göra en graf som visar hur vår rapporterade tid f
- [Ruby](http://ruby-lang.org/)
- [Sinatra](http://www.sinatrarb.com/)
-
+
-/ [Christian](chrille)
+/ [Christian](/chrille)
diff --git a/_posts/2011-10-31-bootstrap-for-backbone-och-sinatra.md b/_posts/2011-10-31-bootstrap-for-backbone-och-sinatra.md
index cb3167e..19999ac 100644
--- a/_posts/2011-10-31-bootstrap-for-backbone-och-sinatra.md
+++ b/_posts/2011-10-31-bootstrap-for-backbone-och-sinatra.md
@@ -8,7 +8,8 @@ last_updated_by: peter
Min tanke med mitt projekt på [Athega Code Base 2011](/code-base-2011) var att skapa en startpunkt för framtida projekt skrivna med ramverket [Backbone.js](http://documentcloud.github.com/backbone/), där testramverk och grundläggande filstruktur redan är uppsatt.
CoffeeScript används både i implementation och specs för Backbone.js.
-Ruby används i Sinatra-appen. Jag experimenterade med att använda [Evergreen](https://github.com/jnicklas/evergreen), men valde till slut att enbart förlita mig på Jasmine för att testa de genererade JavaScripten. På Rubysidan valde jag att använda MiniTest/Spec.
+Ruby används i Sinatra-appen. Jag experimenterade med att använda [Evergreen](https://github.com/jnicklas/evergreen),
+men valde till slut att enbart förlita mig på Jasmine för att testa de genererade JavaScripten. På Rubysidan valde jag att använda MiniTest/Spec.
Jag använder mig av Guard (samt guard-sass och guard-coffeescript)
för att kompilera Sass och CoffeeScript till CSS och JavaScript.
diff --git a/_posts/2011-11-15-oredev.md b/_posts/2011-11-15-oredev.md
index ce5d7f6..6e71111 100644
--- a/_posts/2011-11-15-oredev.md
+++ b/_posts/2011-11-15-oredev.md
@@ -11,4 +11,4 @@ Själv valde jag framför allt föreläsningar inom Java eller HTML5 men smög m
Antar att det bara är att vänta och se... kanske ska analysera detta jag skriver nu om ett år efter nästa Öredev!
-/ [Alex](/alex)
+/ Alex
diff --git a/_posts/2011-11-21-oredev-2011.md b/_posts/2011-11-21-oredev-2011.md
index 351130c..c70bf0c 100644
--- a/_posts/2011-11-21-oredev-2011.md
+++ b/_posts/2011-11-21-oredev-2011.md
@@ -5,7 +5,8 @@ last_updated_by: chrille
---
-Årets Øredev… På plats från Athega var förutom [jag](/chrille), [Alex](/alex), [Johan](/johan), [Mats](/mats), [Peter](/peter) och [Petter](/petter) (i alfabetisk ordning). Med hotellet ett knappt kvarter bort hade vi optimerat för att se så mycket som möjligt av konferensen som möjligt utan att distraheras av Malmö i övrigt.
+Årets Øredev… På plats från Athega var förutom [jag](/chrille), Alex, [Johan](/johan), [Mats](/mats), [Peter](/peter) och Petter (i alfabetisk ordning).
+Med hotellet ett knappt kvarter bort hade vi optimerat för att se så mycket som möjligt av konferensen som möjligt utan att distraheras av Malmö i övrigt.
Konferensen öppnas med en keynote av [@kn0thing](http://twitter.com/#!/kn0thing) som berättar hur Reddit tagit sig till en nivå där de har nära två miljarder sidvisningar i månaden. Filosofin är bland annat “The back button is your biggest enemy” och “Users come first”.
diff --git a/_posts/2011-11-24-introduktion_tdd_och_ramverk.md b/_posts/2011-11-24-introduktion_tdd_och_ramverk.md
index 0d66dee..8d87a22 100644
--- a/_posts/2011-11-24-introduktion_tdd_och_ramverk.md
+++ b/_posts/2011-11-24-introduktion_tdd_och_ramverk.md
@@ -3,9 +3,6 @@ title: "Introduktion TDD och ramverk"
date: 2011-11-24
last_updated_by: chrille
---
-Fredagsmys på Athega
---------------------
-
[Christian Lizell](/chrille), som är utvecklare på Athega, kommer att föreläsa om [TDD](http://www.agiledata.org/essays/tdd.html) (Test Driven Development).
Föreläsning är en pragmatisk introduktion till att utveckla testdrivet och vad det innebär. Vi kommer även titta på några ramverk och verktyg, såsom [JUnit](http://www.junit.org/), [Hamcrest](http://code.google.com/p/hamcrest/wiki/Tutorial) och [Mockito](http://code.google.com/p/mockito/).
diff --git a/_posts/2011-12-05-kanban-balance-demand-against-capability.md b/_posts/2011-12-05-kanban-balance-demand-against-capability.md
index aa55afa..35583a7 100644
--- a/_posts/2011-12-05-kanban-balance-demand-against-capability.md
+++ b/_posts/2011-12-05-kanban-balance-demand-against-capability.md
@@ -17,12 +17,10 @@ Everyone wants to do a good job. Everyone wants to feel that they are able to do
If I would map an overburden team on a modified "mental state in terms of challenge level and skill level chart" (Mihály Csíkszentmihályi) it would be on the left side of the chart. The axis and terms in below example is modified from the original to match what I believe is the teams collective mental state.
-
-
The collective feeling of capability would be low and this is regardless of individual knowledge, competence, understanding of goals and experienced challenge.
What we want is the _whole_ team to feel that they are capable. We would like to move the mental state towards controlled, engaged, relaxed and ultimately flow.
One step for this to happen is to begin balancing demand against capability.
-// Mats Ygfors
+/ [Mats Ygfors](/mats)
diff --git a/_posts/2011-12-21-Ramavtal-SVT.md b/_posts/2011-12-21-Ramavtal-SVT.md
index 8e0e953..82c7f8e 100644
--- a/_posts/2011-12-21-Ramavtal-SVT.md
+++ b/_posts/2011-12-21-Ramavtal-SVT.md
@@ -3,8 +3,10 @@ title: "Athega tecknar ramavtal med Sveriges Television AB"
date: 2011-12-21
last_updated_by: tobbe
---
-Athega AB har i dagarna tecknat ramavtal med Sveriges Television AB. Avtalet gäller även för Sveriges Radio Förvaltnings AB och Sveriges Utbildningsradio AB. Ramavtalet har tillkommit genom en selektiv upphandling enligt lagen (2007:1091) om offentlig upphandling.
+Athega AB har i dagarna tecknat ramavtal med Sveriges Television AB.
+Avtalet gäller även för Sveriges Radio Förvaltnings AB och Sveriges Utbildningsradio AB.
+Ramavtalet har tillkommit genom en selektiv upphandling enligt lagen (2007:1091) om offentlig upphandling.
Alla vi som arbetar på Athega ser fram emot alla utmanade och intressanta uppdrag detta kommer leda till.
-/Torbjörn
+/ [Torbjörn](/tobbe)
diff --git a/_posts/2011-12-21-tekniken-bakom-jullunchen.md b/_posts/2011-12-21-tekniken-bakom-jullunchen.md
index 233acc6..61d8c60 100644
--- a/_posts/2011-12-21-tekniken-bakom-jullunchen.md
+++ b/_posts/2011-12-21-tekniken-bakom-jullunchen.md
@@ -3,6 +3,7 @@ title: "Tekniken bakom Jullunchen"
date: 2011-12-21
last_updated_by: peter
---
+
OBS! Ovanligt mycket tekniksnack i denna
bloggpost, sådant som vi tycker är extra roligt :)
@@ -40,40 +41,40 @@ Koden för bildspelet ligger i filen
#### Ett exempel på hur trevligt CoffeeScript är att jobba med:
class window.PresentationLoop
-
+
constructor: (ms) ->
@delay = ms
@iteration = 0
-
+
window.loop = @
window.loop.run()
-
+
tweets: ->
tweets.fetch()
setTimeout 'tweets.fetch()', @delay/2
setTimeout 'window.loop.check_ins()', @delay
-
+
check_ins: ->
check_ins.fetch()
setTimeout 'window.loop.images()', @delay
-
+
images: ->
images.fetch()
setTimeout 'images.fetch()', @delay/2
setTimeout 'window.loop.ads()', @delay
-
+
ads: ->
ads.fetch()
setTimeout 'window.loop.iterate()', @delay
-
+
iterate: ->
@iteration += 1
console.log('iteration: ' + @iteration)
setTimeout 'window.loop.tweets()', 0
-
+
run: ->
setTimeout (=> @tweets()), 0
-
+
## [jullunch_daemon](https://github.com/athega/jullunch_daemon)
@@ -91,7 +92,7 @@ köra bakgrundsprocessen (schemaläggning, loggning, etc.).
## [tomtelizer](https://github.com/athega/tomtelizer)
-Nativ iOS applikation för att ta bilder och lokalisera ansikten
+Nativ iOS applikation för att ta bilder och lokalisera ansikten
([CIFaceFeature](http://developer.apple.com/library/mac/#documentation/CoreImage/Reference/CIFaceFeature/Reference/Reference.html) och
[CIDetector](http://developer.apple.com/library/ios/#documentation/CoreImage/Reference/CIDetector_Ref/Reference/Reference.html)).
diff --git a/_posts/2012-02-24-ackrediteringsprogramkanban.md b/_posts/2012-02-24-ackrediteringsprogramkanban.md
index 6af67c6..6340b8c 100644
--- a/_posts/2012-02-24-ackrediteringsprogramkanban.md
+++ b/_posts/2012-02-24-ackrediteringsprogramkanban.md
@@ -3,16 +3,20 @@ title: "Athega med i ackrediteringsprogram för Kanbanutbildningar"
date: 2012-02-24
last_updated_by: mats
---
+
Lean-Kanban University startar väldens första ackrediteringsprogram för Kanbanutbildningar
Athega är ett av få svenska bolag som tillsammans med Lean-Kanban University format ackrediteringsprogrammet som går under namnet Lean-Kanban University Accredited Kanban Training Program.
-Programmet är framtaget med syftet att erbjuda kvalitetssäkrade utbildningar i Kanban metoden. Medlemsföretagens utbildningsmaterial likväl som lärare måste uppfylla programmets kriterier.
+Programmet är framtaget med syftet att erbjuda kvalitetssäkrade utbildningar i Kanban metoden. Medlemsföretagens utbildningsmaterial likväl som lärare måste uppfylla programmets kriterier.
Kanban metoden används brett av Athegas kunder och vårt deltagande i programmet kommer ytterligare betona vårt fokus när det gäller utbildningar.
Athegas tidiga engagemang i programmet gör det möjligt för oss att inom kort erbjuda ackrediterad Kanbanutbildning.
-Lean-Kanban University Accredited Kanban Training Program är grundat av Avega Group AB (Sverige), David J. Anderson and Associates, Inc (USA), Net Objectives (USA), AgileSparks Ltd (Israel), Agileminds bvba (Belgien), Athega AB (Sverige), Corporate Kanban (USA), Imaginet (Kanada), it-agile GmbH (Tyskland), Leverage51 AS (Norge), LEANability e.U. (Österrike), Crisp AB (Sverige), Reaktor (Finland), TeamProsource NV (Belgien,Storbritanien), Trifork A/S (Danmark), Valueinnova LLC (USA), VX Company IT Services B.V. (Holland), Xebia Group B.V. (Holland).
+Lean-Kanban University Accredited Kanban Training Program är grundat av Avega Group AB _(Sverige)_, David J. Anderson and Associates, Inc _(USA)_,
+Net Objectives _(USA)_, AgileSparks Ltd _(Israel)_, Agileminds bvba _(Belgien)_, Athega AB _(Sverige)_, Corporate Kanban _(USA)_, Imaginet _(Kanada)_,
+it-agile GmbH _(Tyskland)_, Leverage51 AS _(Norge)_, LEANability e.U. _(Österrike)_, Crisp AB _(Sverige)_, Reaktor _(Finland)_,
+TeamProsource NV _(Belgien, Storbritanien)_, Trifork A/S _(Danmark)_, Valueinnova LLC _(USA)_, VX Company IT Services B.V. _(Nederländerna)_, Xebia Group B.V. _(Nederländerna)_.
Läs mer i pressrelease från “[Lean-Kanban University - Accredited Kanban Training Program](http://www.leankanbanuniversity.com/accredited-kanban-training)”
diff --git a/_posts/2012-06-01-mjukvarutips-vtd12.md b/_posts/2012-06-01-mjukvarutips-vtd12.md
index 51a88cf..8acd44b 100644
--- a/_posts/2012-06-01-mjukvarutips-vtd12.md
+++ b/_posts/2012-06-01-mjukvarutips-vtd12.md
@@ -6,20 +6,17 @@ last_updated_by: peter
I onsdags var jag ([Peter](/peter)) och [Johan](/johan)
på Valtech för deras årliga [Tech Day](http://vtd12.se/).
-Istället för att skriva om presentationerna tänkte jag lista några
+Istället för att skriva om presentationerna tänkte jag lista några
av de applikationer och ramverk som nämndes under dagen.
-
### Network Link Conditioner
Ett litet verktyg som du hittar i paketet **Hardware IO Tools for Xcode**
-
-### [Flexslider](http://www.woothemes.com/flexslider/)
+### [Flexslider](http://www.woothemes.com/flexslider/)
Ett helt responsivt bildspel baserat på jQuery.
-
### [Modernizr](http://modernizr.com/)
Modernizr är ett JavaScript-ramverk som används för att identifiera
@@ -27,19 +24,17 @@ vilka funktioner en besökares webbläsare stödjer. Det gör det enklare
för utvecklaren att börja använda sig av HTML5 och CSS3 funktioner som
ännu inte stöds av alla webbläsare.
-
-### [ImageOptim](http://imageoptim.com/)
+### [ImageOptim](http://imageoptim.com/)
Med ImageOptim kan man snabbt och enkelt
komprimera bilder, främst för användning på nätet.
Det stödjer formaten PNG, JPEG och GIF.
Det är för övrigt en OS X applikation.
-
### [The Play framework](http://www.playframework.org/)
-Ett riktigt intressant webbramverk som med tiden har
-fått ett ökat fokus på JVM-språket
+Ett riktigt intressant webbramverk som med tiden har
+fått ett ökat fokus på JVM-språket
[Scala](http://www.scala-lang.org/).
@@ -47,33 +42,30 @@ fått ett ökat fokus på JVM-språket
En meddelandekö implementerad som ett [jQuery](http://jquery.com/)-plugin.
-> You can also get some quantity of JavaScript ducks, put them in a boat,
+> You can also get some quantity of JavaScript ducks, put them in a boat,
> in a line, and have them fight loudly over who gets to use the oars.
-
### [Meteor](http://meteor.com/)
Ett riktigt spännande webbramverk byggt med [Node.js](http://nodejs.org/).
-Något av det intressantaste med Meteor är att man i stort sett har suddat ut
+Något av det intressantaste med Meteor är att man i stort sett har suddat ut
gränsen mellan klient och server.
-
### [Handlebars.js](http://handlebarsjs.com/)
-En vidareutveckling eller snarare en utökning av mallspråket
-[Mustache](http://mustache.github.com/). (Ett annat alternativ är
+En vidareutveckling eller snarare en utökning av mallspråket
+[Mustache](http://mustache.github.com/). (Ett annat alternativ är
[Hogan.js](http://twitter.github.com/hogan.js/) från Twitter)
-
### [Jasmine](http://pivotal.github.com/jasmine/)
-BDD-testramverk för JavaScript. Jag använder det oftast i
-kombination med [CoffeeScript](http://coffeescript.org/),
+BDD-testramverk för JavaScript. Jag använder det oftast i
+kombination med [CoffeeScript](http://coffeescript.org/),
enligt mig blir det riktigt stiligt.
### [Clojure](http://clojure.org/)
-En LISP-dialekt på JVMen, en perfekt kombination? Jag tror nästan det :)
+En LISP-dialekt på JVMen, en perfekt kombination? Jag tror nästan det :)
För pakethantering och beroendehantering så rekomenderas [Leiningen](http://leiningen.org/).
### [SPDY](http://dev.chromium.org/spdy)
diff --git a/_posts/2012-06-23-nordic-ruby-2012.md b/_posts/2012-06-23-nordic-ruby-2012.md
index 2d7e631..f4a25ee 100644
--- a/_posts/2012-06-23-nordic-ruby-2012.md
+++ b/_posts/2012-06-23-nordic-ruby-2012.md
@@ -3,12 +3,12 @@ title: "Nordic Ruby 2012"
date: 2012-06-23
last_updated_by: peter
---
-Under förra helgen var jag ([Peter](/peter)),
-[Johan](/johan), [Mikael](/mikael) och [Petter](/petter) på
+Under förra helgen var jag ([Peter](/peter)),
+[Johan](/johan), [Mikael](/mikael) och Petter på
[Nordic Ruby](http://2012.nordicruby.org/).
-Tidigare år har vi åkt ner till Göteborg, men i år
-flyttades konferensen till Stockholm, närmare bestämt
+Tidigare år har vi åkt ner till Göteborg, men i år
+flyttades konferensen till Stockholm, närmare bestämt
till [Yasuragi Hasseludden](http://www.yasuragi.se/).
## Fredag
@@ -31,24 +31,24 @@ Han nämnde även på att känslor ofta överskuggar logik.
### We don’t know HTTP
-Den andra föreläsningen hölls av
-[Konstantin Haase](https://twitter.com/konstantinhaase)
+Den andra föreläsningen hölls av
+[Konstantin Haase](https://twitter.com/konstantinhaase)
och han gick igenom de olika HTTP-verben och hur man egentligen borde
använda dem. (Enligt Konstantin missbrukas POST i allt för stor
utsträckning)
### Ruby++
-[Ben Orenstein](https://twitter.com/r00k) gick igenom några
-funktioner som det skulle vara trevligt om Ruby hade. Några exempel
-på detta var *List comprehension* och *Significant whitespace*
+[Ben Orenstein](https://twitter.com/r00k) gick igenom några
+funktioner som det skulle vara trevligt om Ruby hade. Några exempel
+på detta var *List comprehension* och *Significant whitespace*
(CoffeeScript/Python)
> Haskell is a slightly inconvenient language for the normal developer
-Han visade även hur elegant syntax
+Han visade även hur elegant syntax
LISP-dialekten [Clojure](http://clojure.org/) har.
-En fördel med funktionella språk är att det generellt
+En fördel med funktionella språk är att det generellt
sett är väldigt enkelt att skriva tester.
### Therapeutic Refactoring
@@ -58,13 +58,13 @@ konferensens absolut bästa föreläsningar.
> Random acts of refactorings
-Vi fick följa henne när hon steg för steg tog sig an uppgiften
+Vi fick följa henne när hon steg för steg tog sig an uppgiften
att förbättra en metod som varken var testad eller lätt att förstå.
-Ett av hennes knep var att skriva nonsens-tester för att
+Ett av hennes knep var att skriva nonsens-tester för att
få reda på vad metoden returnerar.
-Hon använde även designmöstret
+Hon använde även designmöstret
[Replace Method with Method
Object](http://www.refactoring.com/catalog/replaceMethodWithMethodObject.html)
@@ -81,10 +81,10 @@ Tyvärr hade jag hoppats på något lite mer användbart.
### Marketing for Geeks
-[Brian Doll](https://twitter.com/briandoll) föreläste om
+[Brian Doll](https://twitter.com/briandoll) föreläste om
olika former av marknadsföring som kan vara användbara för oss
utvecklare. Han tyckte verkligen att man ska hantera sin egen
-marknadsföring, speciellt som kommunikationen med kunder
+marknadsföring, speciellt som kommunikationen med kunder
måste gå åt båda hållen.
En av hans rekomendationer var att läsa [Voice and
@@ -96,7 +96,7 @@ Tone](http://voiceandtone.com/) från MailChimp.
### Building an army of robots
-[Kyle Neath](https://twitter.com/kneath) från
+[Kyle Neath](https://twitter.com/kneath) från
[GitHub](https://github.com/) visade ett flertal av deras
interna system. (Det syntes verkligen att de lagt ner mycket tid
på att bygga välfungerande och framför allt snygga applikationer)
@@ -108,8 +108,8 @@ Några exempel:
- The Graph Store (Grafer för **allt**)
- Janky (Ett snyggare gränssnitt till CI-servern Jenkins)
-Han hävdade att interna verktyg är en viktig
-faktor när företagskulturen formas och att man
+Han hävdade att interna verktyg är en viktig
+faktor när företagskulturen formas och att man
därför borde satsa lite extra mycket på dem.
### Mastering Database Design with Redis
@@ -123,10 +123,10 @@ för komplexa relationer, sökningar eller sortering.
### Yay! Mocks!
-[Corey Haines](https://twitter.com/coreyhaines) pratade om *Mocks*
+[Corey Haines](https://twitter.com/coreyhaines) pratade om *Mocks*
eller snarare alla typer av *Test Doubles*.
-Han hävdade att en anledning till att så många tycker illa om
+Han hävdade att en anledning till att så många tycker illa om
*Test Doubles* är att de representerar en “reaktion av smärta”.
> Test Doubles often highlight pain
@@ -135,8 +135,8 @@ En tumregel är att man bara hanterar **vad** som ska göras i sina
*Controllers* och inte **hur**, det är oftast bättre att delegera vidare
till modellen.
-Om testerna är svåra att skriva så ska man se det som en indikation
-att man kanske behöver förändra sin design så att koden blir enklare
+Om testerna är svåra att skriva så ska man se det som en indikation
+att man kanske behöver förändra sin design så att koden blir enklare
att testa.
> TDD is about refactoring away from discomfort
@@ -146,7 +146,7 @@ om att använda *Stubs* och *Mocks*.
### Perfectionists Anonymous
-[Alan Gardner](https://twitter.com/mr_urf) och
+[Alan Gardner](https://twitter.com/mr_urf) och
[Erin O’Brien](https://twitter.com/coolaunterin) höll en gemensam
föreläsning om psykologin bakom perfektionism.
@@ -156,7 +156,7 @@ Tre punker som jag tyckte var extra bra:
- Lita på att andra gör ett bra jobb
- Behandla varandra med respekt
-De nämnde även #devmed, vilket är en mycket enkel meditationsform
+De nämnde även #devmed, vilket är en mycket enkel meditationsform
som jag utövat till och från sedan Rocky Mountain Ruby förra året.
### Metrics Driven X
@@ -171,7 +171,7 @@ Det finns två typer av mätvärden, kvalitativa och kvantitativa;
- Kvalitativa mätningar kan ses som tillväxthastigheten för produkten
- Kvantitativa mätningar kan ses som accelerationen av produktens tillväxt
-Tre av de verktyg som de använder för att mäta trender
+Tre av de verktyg som de använder för att mäta trender
är Statsd, Graphite och deras eget projekt Graphiti.
### Adventures on the Golden Path
@@ -200,3 +200,5 @@ Några förbättringar som han skulle vilja se i Rails 4:
Men han ser även att det skulle kunna ske lite förbättringar

+
+/ [Peter](/peter)
diff --git a/_posts/2012-09-27-rocky-mountain-ruby-2012.md b/_posts/2012-09-27-rocky-mountain-ruby-2012.md
index efe4926..49384bc 100644
--- a/_posts/2012-09-27-rocky-mountain-ruby-2012.md
+++ b/_posts/2012-09-27-rocky-mountain-ruby-2012.md
@@ -6,14 +6,14 @@ last_updated_by: peter

Förra veckan fylldes [Boulder Theater](http://www.bouldertheater.com/)
-ännu en gång av Rubyister från ett flertal delstater och länder,
-det var dags för årets upplaga av konferensen
+ännu en gång av Rubyister från ett flertal delstater och länder,
+det var dags för årets upplaga av konferensen
[Rocky Mountain Ruby](http://rockymtnruby.com/).
## Onsdag 19/9
-Kvällen innan konferensen kom igång på riktigt höll
-[Quick Left](http://quickleft.com/) en [Arduino](http://arduino.cc/)-hackfest.
+Kvällen innan konferensen kom igång på riktigt höll
+[Quick Left](http://quickleft.com/) en [Arduino](http://arduino.cc/)-hackfest.
(Hårdvaran sponsrades av [SparkFun](http://www.sparkfun.com/))

@@ -28,7 +28,7 @@ några minuter av [\#devmed](https://twitter.com/i/#!/search/realtime/%23devmed)
> What is the future cost of doing nothing now?
Den första presentationen hölls av [Sandi Metz](https://twitter.com/sandimetz)
-och hon satte ribban riktigt högt för de andra talarna :)
+och hon satte ribban riktigt högt för de andra talarna :)
Hon beskrev hur man kan göra för att strukturera sin kod så att man
kapslar in de tråkigaste delarna av en kodbas.
@@ -88,16 +88,16 @@ Han visade även sitt bibliotek [Gimme](https://github.com/searls/gimme).
[Roy Tomeij](https://twitter.com/roy) höll mycket bra dragning om hur
man kan strukturera sin HTML och CSS på ett modulärt sätt, en lösning
som hade vissa likheter med SMACSS som
-[Jonathan Snooks](https://twitter.com/snookca) pratade om på förra
+[Jonathan Snooks](https://twitter.com/snookca) pratade om på förra
[Geek Meet Stockholm](http://robertnyman.com/geekmeet/).
[Video](http://www.youtube.com/watch?v=TqPzxrCIJTs) och [Slides](http://roytomeij.com/slides/rockymountainruby2012/)
### Lightning talks
-[Colin Thomas-Arnold](https://twitter.com/colinta) visade
-[RubyMotion](http://www.rubymotion.com/) samt biblioteken
-[BubbleWrap](https://github.com/rubymotion/bubblewrap),
+[Colin Thomas-Arnold](https://twitter.com/colinta) visade
+[RubyMotion](http://www.rubymotion.com/) samt biblioteken
+[BubbleWrap](https://github.com/rubymotion/bubblewrap),
[SugarCube](https://github.com/rubymotion/sugarcube) och
[Teacup](https://github.com/rubymotion/teacup).
@@ -109,7 +109,7 @@ som hade vissa likheter med SMACSS som
[José Valim](https://twitter.com/josevalim) förklarade på ett enkelt
sätt hur samtidighet (concurrency) fungerar. Han rekomenderade även sitt
-språk [Elixir](http://elixir-lang.org/), Ruby-biblioteken
+språk [Elixir](http://elixir-lang.org/), Ruby-biblioteken
[Celluloid](http://celluloid.io/)
och [DCell](https://github.com/celluloid/dcell) samt boken
[Seven languages in seven weeks](http://pragprog.com/book/btlang/seven-languages-in-seven-weeks).
@@ -120,10 +120,10 @@ och [DCell](https://github.com/celluloid/dcell) samt boken
> Pre-auth BOSH
-[Derrick Ko](https://twitter.com/derrickko) berättade om hur
-[Kicksend](http://kicksend.com/) använder sig av
-[ejabberd](http://www.ejabberd.im/),
-[RubyBOSH](https://github.com/skyfallsin/ruby_bosh) och
+[Derrick Ko](https://twitter.com/derrickko) berättade om hur
+[Kicksend](http://kicksend.com/) använder sig av
+[ejabberd](http://www.ejabberd.im/),
+[RubyBOSH](https://github.com/skyfallsin/ruby_bosh) och
[Strophe.js](http://strophe.im/strophejs/) för att öka prestandan på sin
tjänst. (både riktig och upplevd)
@@ -162,14 +162,14 @@ föreläsning.
## Lördag 22/9
Jag och [Paul](https://twitter.com/p_elliott) tänkte hitta något bra
-café att äta frukost på, men så visade det sig att
-[Matt](https://twitter.com/mattyoho) redan var på väg till
+café att äta frukost på, men så visade det sig att
+[Matt](https://twitter.com/mattyoho) redan var på väg till
[The Kitchen](http://thekitchencommunity.com/the-kitchen-boulder/)
för att möta upp några fler som fortfarande var kvar i Boulder.
Vi var självklart inte sena med att haka på :)
-Under frukosten bestämde vi oss för att det skulle vara kul att
-se mer av de klippiga bergen. [Brian](https://twitter.com/brianlong)
+Under frukosten bestämde vi oss för att det skulle vara kul att
+se mer av de klippiga bergen. [Brian](https://twitter.com/brianlong)
var snäll och ställde upp som både chaufför och guide.
_(Boulder -> Nederland -> Peak 2 Peak -> Brainard Lake -> Ward -> Boulder)_
diff --git a/_posts/2012-11-05-dags-for-acb-2012.md b/_posts/2012-11-05-dags-for-acb-2012.md
index cb07604..e6c121b 100644
--- a/_posts/2012-11-05-dags-for-acb-2012.md
+++ b/_posts/2012-11-05-dags-for-acb-2012.md
@@ -13,9 +13,9 @@ Den 30 november är det åter igen dags för Athega Code Base.

-Alla får välja ett projekt innan vi åker och årets ämne är “Öppna data”. Det är inte tvingande att hålla sig till ämnet utan är mer ett underlag för inspiration och idéer.
+Alla får välja ett projekt innan vi åker och årets ämne är “Öppna data”. Det är inte tvingande att hålla sig till ämnet utan är mer ett underlag för inspiration och idéer.
-Här följer några länkar till källor och information kring kring “Öppna data”
+Här följer några länkar till källor och information kring kring “Öppna data”
-
-
@@ -23,5 +23,5 @@ Här följer några länkar till källor och information kring kring “Öppna d
-
-
-Vi kommer fram till Söderarm på **fredagen** ungefär kl **09:30** och lämnar **lördag** kl **15:30**.
+Vi kommer fram till Söderarm på **fredagen** ungefär kl **09:30** och lämnar **lördag** kl **15:30**.
Det ger en effektiv utvecklingstid på ungefär **8** timmar.
diff --git a/_posts/2012-11-09-Code_Base_2012_Inspiration.md b/_posts/2012-11-09-Code_Base_2012_Inspiration.md
index aaf51cb..6f6b6ce 100644
--- a/_posts/2012-11-09-Code_Base_2012_Inspiration.md
+++ b/_posts/2012-11-09-Code_Base_2012_Inspiration.md
@@ -3,15 +3,19 @@ title: "Nytta med nöje"
date: 2012-11-09
last_updated_by: mats
---
-Varje år åker vi iväg till en inspirerande plats och kodar tillsammans. Nu är det dags igen.
-Code Base handlar om lärande och inspiration. Vi inspireras av det vi arbetar med och utifrån det vill vi fördela våra individuella specialistkunskaper och erfarenheter mellan oss i ett roligt forum.
+> Varje år åker vi iväg till en inspirerande plats och kodar tillsammans. Nu är det dags igen.
+
+Code Base handlar om lärande och inspiration. Vi inspireras av det vi arbetar med och utifrån det
+vill vi fördela våra individuella specialistkunskaper och erfarenheter mellan oss i ett roligt forum.
+
+## Öppna data
-**Öppna data**
Vi har satt ett tema ”Öppna data”. Utifrån detta vår vi välja helt fritt vad vi ska lära oss mer om. Det viktiga är att vi lär oss tillsammans.
-**Nytta med nöje**
+## Nytta med nöje
+
Ni som partners och kunder får gärna komma med inspiration och förslag om ni har något ni vill att vi ska titta på. Det kanske är en allmän frågeställning eller ett specifikt problem ni vill få hjälp att lösa. Vi lovar göra vårt bästa och samtidigt lära oss så mycket som möjligt om ämnet om vi väljer ert förslag.
-// Mats
+/ [Mats](/mats)
diff --git a/_posts/2012-11-11-oredev-2012.md b/_posts/2012-11-11-oredev-2012.md
index 6b9c789..429d6cb 100644
--- a/_posts/2012-11-11-oredev-2012.md
+++ b/_posts/2012-11-11-oredev-2012.md
@@ -8,7 +8,7 @@ image_url: http://assets.athega.se/blogg/2012/11/oredev-grinding-the-crack.jpg

Precis som tidigare år åkte vi
-([Alex](/alex), [Chrille](/chrille), [Johan](/johan) och [Peter](/peter))
+(Alex, [Chrille](/chrille), [Johan](/johan) och [Peter](/peter))
ner till Malmö för att gå på utvecklarkonferensen [Øredev](http://oredev.org/2012/).
## Videos från presentationerna
@@ -36,8 +36,8 @@ Arrangörerna listar dem på
[](http://golang.org/project/)
-Jag började kika på [Go](http://golang.org/) för ett litet tag sedan
-och de båda Go-föreläsningarna gjorde mig ännu mer taggad
+Jag började kika på [Go](http://golang.org/) för ett litet tag sedan
+och de båda Go-föreläsningarna gjorde mig ännu mer taggad
att använda språket i större utsträckning i framtiden.
[Erlang](http://www.erlang.org/) “klickade” aldrig för mig,
diff --git a/_posts/2012-12-01-resultatet_fran_athega_code_base_2012.md b/_posts/2012-12-01-resultatet_fran_athega_code_base_2012.md
index c5165c6..ffaa2c6 100644
--- a/_posts/2012-12-01-resultatet_fran_athega_code_base_2012.md
+++ b/_posts/2012-12-01-resultatet_fran_athega_code_base_2012.md
@@ -30,12 +30,12 @@ Ett fungerande exempel kan finnas [här](http://hem.lizell.se/content/dash/).
## Enkelt API för populära bilder på 500px
Jag hittade nyligen tjänsten [ScraperWiki](https://scraperwiki.com/)
-som låter dig bygga enkla scrapers i Ruby, Python och PHP.
+som låter dig bygga enkla scrapers i Ruby, Python och PHP.
-Mitt lilla [hack](https://scraperwiki.com/scrapers/500px/)
-består i att skrapa några sidor med populära
-bilder från [500px](http://500px.com/), informationen sparar jag
-ner i ScraperWikis datastore vilket gör att jag kan använda mig
+Mitt lilla [hack](https://scraperwiki.com/scrapers/500px/)
+består i att skrapa några sidor med populära
+bilder från [500px](http://500px.com/), informationen sparar jag
+ner i ScraperWikis datastore vilket gör att jag kan använda mig
av deras generella [data API](https://scraperwiki.com/docs/api#sqlite)

@@ -52,7 +52,7 @@ Alla människor har adresser som deras liv kretsar kring, t.ex. arbete eller sko
Teknikerna som användes var JavaScript, [node.js](http://nodejs.org/), [OpenStreetMap](http://www.openstreetmap.org/), SLs Reseplanerare.
-/ [Alex](/alex)
+/ Alex
## Ansiktsigenkänning med WebRTC, Websockets och OpenCV (Micke)
diff --git a/_posts/2012-12-02-mer_resultat_fran_athega_code_base_2012.md b/_posts/2012-12-02-mer_resultat_fran_athega_code_base_2012.md
index 15352cf..83988a9 100644
--- a/_posts/2012-12-02-mer_resultat_fran_athega_code_base_2012.md
+++ b/_posts/2012-12-02-mer_resultat_fran_athega_code_base_2012.md
@@ -7,15 +7,16 @@ last_updated_by: tobbe
In some situations it is good to show that you have been diligent and working hard; Athega Codebase 2012 is no exception. You know the other guys have such great ideas and the scenery around us at Söderarm is amazing, its hard to do any real work at all.
-So I figured lets show how to create value on our machines [whilst we are dreaming and looking out the windows] by investigating the ideas behind Bitcoin and the like.
+So I figured lets show how to create value on our machines [whilst we are dreaming and looking out the windows] by investigating the ideas behind Bitcoin and the like.
Well, as you shall see, things did not go quite to plan!
Bitcoin and Bitgold are new experimental digital currencies, see bitcoin.com, and proof of work is essential to their inner workings.
-Here, value is based on work done in the computer solving very difficult problems.
+Here, value is based on work done in the computer solving very difficult problems.
+
+Simply, solving difficult problems requires a lot of work. So a solved difficult problem has value, in exactly the same way mined silver has intrinsic value. And silver can be used to make coins! So by analogy one can make coins of the value in solving difficult problems; well in theory at least.
-Simply, solving difficult problems requires a lot of work. So a solved difficult problem has value, in exactly the same way mined silver has intrinsic value. And silver can be used to make coins! So by analogy one can make coins of the value in solving difficult problems; well in theory at least.
But Bitcoin is just one current example of a working digital currency.
Cool, and worth looking into, could this be true, and could I build a model of this process? And what is a proof of work function?
@@ -42,16 +43,17 @@ I told you I was looking out the window.
And here is my proof of work
-
+
And this time I did manage to produce something with enough value to give away.
For free, its true, but its a start :)
-Hurray, success at last.
+Hurray, success at last.
I had managed to understand how producing digital value works, and maybe learnt something of value along the way!
-For more information about bitcoin-mining see [www.bitcoin.com](http://www.bitcoin.com), and know you understand the principles, create value on your machine, and sell what you produce! For real money.
+> For more information about bitcoin-mining see [www.bitcoin.com](http://www.bitcoin.com), and know you understand the principles,
+> create value on your machine, and sell what you produce! For real money.
-[Mark](mark)
+[Mark](/mark)
diff --git a/_posts/2013-02-17-nya_ur_play.md b/_posts/2013-02-17-nya_ur_play.md
index 8ecec59..45ec18b 100644
--- a/_posts/2013-02-17-nya_ur_play.md
+++ b/_posts/2013-02-17-nya_ur_play.md
@@ -20,6 +20,7 @@ image_url: /assets/legacy/uploads/2013/10/johan-beronius_small.jpg
Alla på UR är klart stolta över det vi åstadkommit och blir taggade att fortsätta utveckla UR Play.
### Ni siktar på att bli bästa play-siten i världen, hur ska det gå till?
+
Strategin är att noggrant följa hur våra tittare och lyssnare använder UR Play, speciellt i samspel med sociala medier. Förstår vi detta fullt ut så kan vi också kontinuerligt skapa en ännu bättre on-demand-tjänst.
### Hur mycket resurser behövs för att nå den här nivån?
diff --git a/_posts/2013-03-15-aftonbladets_nya_livestudio.md b/_posts/2013-03-15-aftonbladets_nya_livestudio.md
index 0d907dd..890653a 100644
--- a/_posts/2013-03-15-aftonbladets_nya_livestudio.md
+++ b/_posts/2013-03-15-aftonbladets_nya_livestudio.md
@@ -11,11 +11,13 @@ Nu får SVT och TV4 konkurrens. Aftonbladets nya live-studio är igång på minu
**Den nya studion byggdes upp bara några steg från centrala nyhetsdesken. Vi träffade Vasilios Hatciliamis och ställde några frågor.**
### Vasilios, du ledde uppbyggnaden av nya studion, hur lång tid tog det?
+
– Totalt tog det tre veckor att få all teknik på plats. Det här är vår andra studio så vi hade redan en hel del infrastruktur exempelvis för att ta in live video feed från olika källor.
### Varför byggde ni en ny studio?
### Hur mycket resurser behövs för att nå den här nivån?
+
– Vi vill kunna sända live med kort varsel i en studio som är byggd för livesändningar till skillnad mot vår gamla som var byggd för produktioner. Nya studion ligger på samma våningsplan som redaktionen. Nyhetsdesken kan ta beslut ena sekunden och nästa är vi igång. Tekniken är anpassad för att sända med minimal bemanning. Det räcker med en reporter framför kameran i studion och en tekniker i kontrollrummet. Teknikern fjärrstyr robotkamerorna, bildproducerar och styr grafiken. Det är också från kontrollrummet vi väljer in de olika livefeederna och håller kontakten med våra liveteam på fältet. Sen visar vi live-bilder i studion antingen med egen reporter på fältet eller genom att länka in andra sändningar och fylla på med expertkommentarer i studion.
@@ -24,10 +26,13 @@ Nu får SVT och TV4 konkurrens. Aftonbladets nya live-studio är igång på minu
### Hur skiljer ni er från SVT?
+
– Vi kommer aldrig tablålägga några nyhetssändningar utan sänder när nyheterna är färska. Vi vill ha live-känslan och har ingen ambition att det ska kännas planerat. Vi är bra på att snabbt fånga känslor kring stora händelser och det ska vi fortsätta med. Så visst finns det fördelar mot de traditionella broadcast-kanalernas nyhetsrapportering.
### Men blir det inga omställningar alls?
+
– Våra reportrar kommer behöva lära sig mer teknik. Kraven är större på en videoreporter än på en skrivande reporter. Man måste kunna ställa in kameran rätt, hantera livesändningsutrustningen och videoredigera. När man åker iväg till en plats man ska sända ifrån har man ingen aning om de lokala förutsättningarna för att kunna feeda hem sin rapport. Finns det bra 3G/4G täckning, går det att komma ut på internet, finns det något wifi? Men allt är inte akututryckningar. För stora händelser vi känner till i förväg så har vi tid att planera tekniken och då kanske vi till och med hyr satellitbussar.
### Drack ni skumpa precis som Karin Magnusson och Jan Helin på premiärsändningen 18 februari?
+
– Ja, vi fick en chans att fira vi också.
diff --git a/_posts/2013-03-18-stop_starting_start_finishing_athega.md b/_posts/2013-03-18-stop_starting_start_finishing_athega.md
index 2abcb4e..4fa6173 100644
--- a/_posts/2013-03-18-stop_starting_start_finishing_athega.md
+++ b/_posts/2013-03-18-stop_starting_start_finishing_athega.md
@@ -3,19 +3,18 @@ title: "Stop starting start finishing"
date: 2013-03-18
last_updated_by: mats
---
-
-Under tisdagen och onsdagen förra veckan anordnades ”Stop starting, Start finishing” konferensen på Hilton Hotell i Stockholm. Ca 150 deltagare från flera branscher och områden samlades. Programmet fokuserade på Lean Kanban och beskrevs som följer.
+Under tisdagen och onsdagen förra veckan anordnades ”Stop starting, Start finishing” konferensen på Hilton Hotell i Stockholm. Ca 150 deltagare från flera branscher och områden samlades. Programmet fokuserade på Lean Kanban och beskrevs som följer.
+
+> _”Hur kan din produkt, verksamhet eller IT-organisation få saker gjorda och avslutade? Hur kan din organisation hantera risker och nå marknaden i rätt tid? Hur kan en produkt-, tjänst- eller projektorganisation göra mindre och tjäna mer?”_
-_”Hur kan din produkt, verksamhet eller IT-organisation få saker gjorda och avslutade? Hur kan din organisation hantera risker och nå marknaden i rätt tid? Hur kan en produkt-, tjänst- eller projektorganisation göra mindre och tjäna mer?”
-_
Spridningen på framförandena var stor och täckte in en mängd områden. Jag kommer beskriva några nedan.
Tisdagen startades av
David J. Anderson (LKU och DJAA) med _”Aligning Creative Work with Business Risks”_. David visade hur uppströms visualisering och begränsning kan förbättra vårt sätt att göra rätt saker i rätt tid och minska vår affärsrisk. Att traditionell Agil planering kan anses vara waste och arbete läggs ner på gissningar vilket även kan öka vår risk. David visade på de olika sätt Kanban hanterar risk och vilka möjligheter vi har med Kanban att hantera vår risk utifrån vår domän och specifika risk. En lista på enkla regler för att förbättra vår riskhantering presenterades. Listan innehöll bland annat saker som att använda WiP limits på risk-kategorier.
David pratade vidare om att vi ska skjuta på åtagande så sent det bara går. Vi måste hantera osäkerhet och variation. Ordet backlog indikerar att det är något vi på något sätt _åtagit_ oss att förr eller senare leverera. Föreslog ordet ”Ideer” istället.
-Efter David var det Arne Roock som pratade om alignment. _”Alignment – the forgotten child”_.
+Efter David var det Arne Roock som pratade om alignment. _”Alignment – the forgotten child”_.
Arne pratade om hur vi i vår strävan bort från ”command and control” till självorganiserande team där organisationen ibland glömmer bort alignment. Arne pratade om hur viktigt det är med alignment och konsekvenserna om inte alignment finns på plats. Även olika sätt att nå mer alignment. Jag tycker det var mycket intressant och kopplade samman lite vad Don Reinertsen pratade om på LSSC12.
-Tisdag kväll var det Open Space night och Athega var med som sponsor. Det var en trevlig tillställning.
+Tisdag kväll var det Open Space night och Athega var med som sponsor. Det var en trevlig tillställning.
diff --git a/_posts/2013-03-21-Idag_lanserar_Aftonbladet_ny_TV_site.md b/_posts/2013-03-21-Idag_lanserar_Aftonbladet_ny_TV_site.md
index d547044..1a617f5 100644
--- a/_posts/2013-03-21-Idag_lanserar_Aftonbladet_ny_TV_site.md
+++ b/_posts/2013-03-21-Idag_lanserar_Aftonbladet_ny_TV_site.md
@@ -7,9 +7,11 @@ tags:
last_updated_by: mats
image_url: /assets/legacy/uploads/2013/10/peterb_small.png
---
-Med en ny site för bara video blir upplevelsen bättre för användarna. Dessutom ökar annonsintäkterna. Peter Björklund kan berätta mer.
-------------
+
+> Med en ny site för bara video blir upplevelsen bättre för användarna. Dessutom ökar annonsintäkterna. Peter Björklund kan berätta mer.
+
### Peter, du jobbar som konsult hos oss och har varit med under projektet, varför gör Aftonbladet en egen TV-site?
+
– På vanliga aftonbladet.se ligger alla filmer och klipp huller om buller med artiklar, reportage, foton och reklam. Det är tuff konkurrens om uppmärksamheten. Och eftersom Aftonbladet gör egna TV-program vill man gärna att publiken ska hitta dem. Den enda vettiga lösningen är att skapa en egen site byggd ungefär som en play-site med den skillnaden att den också pushar för de egenproducerade programmen. Layouten är ren, snygg och lättnavigerad. Och allt är enkelt sökbart.
@@ -32,4 +34,4 @@ Med en ny site för bara video blir upplevelsen bättre för användarna. Dessut
– Vi rev bort all gammal teknik och började från noll. Förstudien gjordes i maj förra året, sen valdes leverantörer och i september började vi skriva kod. Det har gått undan hela tiden. Nu vid premiären finns det drygt 3 200 GB lagrat fördelat på över 3 500 filmer och antalet ökar med 10-20 stycken per dag.
-[tv.aftonbladet.se/](http://tv.aftonbladet.se/)
+[tv.aftonbladet.se/](https://tv.aftonbladet.se/)
diff --git a/_posts/2013-05-23-ramavtal-med-forsakringskassan.md b/_posts/2013-05-23-ramavtal-med-forsakringskassan.md
index 31b9ed0..9af5fef 100644
--- a/_posts/2013-05-23-ramavtal-med-forsakringskassan.md
+++ b/_posts/2013-05-23-ramavtal-med-forsakringskassan.md
@@ -5,4 +5,4 @@ last_updated_by: mats
---
Athega har tillsammans med Gabert&Partner blivit tilldelade ramavtal inom systemutveckling och projektledning. Nu hoppas vi på många intressanta uppdragsförfrågningar.
-/ [Fredrik](/fredrik)
+/ Fredrik
diff --git a/_posts/2013-06-04-monster-i-stora-datamangder.md b/_posts/2013-06-04-monster-i-stora-datamangder.md
index 0158371..a4f3bb6 100644
--- a/_posts/2013-06-04-monster-i-stora-datamangder.md
+++ b/_posts/2013-06-04-monster-i-stora-datamangder.md
@@ -7,17 +7,20 @@ tags:
last_updated_by: mats
image_url: http://i3.createsend1.com/ei/j/57/6D5/833/203220/mikael.png
---
-Har du sett någon snygg grafik på sistone? Den kan vara gjord med R. Mikael Forsberg kan berätta mer om succén för detta open-source-språk.
-------------
-### Mikael, du är konsult hos oss och gillar R. Varför då?
+
+> Har du sett någon snygg grafik på sistone? Den kan vara gjord med R. Mikael Forsberg kan berätta mer om succén för detta open-source-språk.
+
+## Mikael, du är konsult hos oss och gillar R. Varför då?
+
– För det första är det ett open-source-språk, vilket aldrig är fel. Sen är det skapat enbart för dataanalys vilket också känns helt rätt.
-
+
Den kända fb-vänkartan är gjord i R.
-### Vad kan R användas till?
+## Vad kan R användas till?
+
– R kan användas överallt där man kan formulera en fråga som man tror kan besvaras med ett statistiskt underlag. Man kan till exempel ta reda på hur besökare beter sig på webbplatser genom att analysera loggar, eller hur ett nytt varumärke tas emot i sociala medier eller så vill en journalist processa offentlig data för att kanske hitta ett scoop.
@@ -25,12 +28,15 @@ Har du sett någon snygg grafik på sistone? Den kan vara gjord med R. Mikael Fo
Mikael Forsberg gillar att använda R för att hitta mönster i stora datamängder och sen enkelt visualisera dem..
-### Varför ökar intresset för R?
+## Varför ökar intresset för R?
+
– Embryot till R föddes redan 1997 men det är de sista tre åren som intresset exploderat. R har idag det man letar efter när man växt ur till exempel Excel. Man vill ha en enkel och kraftfull open source-miljö att göra analyser i och hitta mönster i sin data. Dessutom har R en stor och levande community med allt från statistiker från universitetsvärlden till programmerare från industrin. Communityn levererar "R-paket" som kan användas för att göra analyser av allt från naturligt språk till att skapa fantastiska diagram och grafer. När man väl sett dessa informativa visuella lösningar så vill man gärna göra samma sak själv.
-### Finns det andra verktyg för just dataanalys?
+## Finns det andra verktyg för just dataanalys?
+
– Javisst, några exempel är SAS, Stata och SPSS – inget av dem är dock open source. Det går också att använda programmeringsspråk som exempelvis Java och Python även om de inte är gjorda specifikt för dataanalys.
-### Har du några bra exempel?
-– Här är en länk till en snygg och smart [Visualisering över London](http://spatialanalysis.co.uk/2012/02/london-cycle-hire-pollution) som är gjord med R och paketet ggplot2. Alla från Google till Microsoft använder R idag. Här är en länk till en [artikel i New York Times](http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html?_r=0) från 2009 som kan sägas vara starten för intresset kring R – både mitt och många andras. Här är den kända [Facebook-vän-världskartan](https://www.facebook.com/notes/facebook-engineering/visualizing-friendships/469716398919) och här är en [fin lösning](http://timelyportfolio.github.io/rCharts_512paths/) som gjordes inför presidentvalet i USA. Andra mer konventionella grafer kan man hitta om
+## Har du några bra exempel?
+
+– Här är en länk till en snygg och smart [Visualisering över London](http://spatialanalysis.co.uk/2012/02/london-cycle-hire-pollution) som är gjord med R och paketet ggplot2. Alla från Google till Microsoft använder R idag. Här är en länk till en [artikel i New York Times](http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html?_r=0) från 2009 som kan sägas vara starten för intresset kring R – både mitt och många andras. Här är den kända [Facebook-vän-världskartan](https://www.facebook.com/notes/facebook-engineering/visualizing-friendships/469716398919) och här är en [fin lösning](http://timelyportfolio.github.io/rCharts_512paths/) som gjordes inför presidentvalet i USA. Andra mer konventionella grafer kan man hitta om
man bildgooglar på just ggplot2 som är ett av de mest populära paketen för att visualisera data med R.
diff --git a/_posts/2013-06-18-nordic-ruby-2013.md b/_posts/2013-06-18-nordic-ruby-2013.md
index 5387756..28fd3e3 100644
--- a/_posts/2013-06-18-nordic-ruby-2013.md
+++ b/_posts/2013-06-18-nordic-ruby-2013.md
@@ -17,7 +17,7 @@ Efter bad och en stadig frukost var det dags för konferensen att komma igång o
### The History of Women in Programming
-Konferensen inleddes av [Elise Worthy](http://twitter.com/eliseworthy) och
+Konferensen inleddes av [Elise Worthy](http://twitter.com/eliseworthy) och
[Jessica Suttles](http://twitter.com/jlsuttles) som berättade om kvinnors viktiga roll i datorns historia. De rekomenderade bland annat böckerna [The Computer Boys Take Over](http://thecomputerboys.com/?page_id=20)
och [Gender Codes: Why Women Are Leaving Computing](http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470597194.html).
@@ -36,8 +36,8 @@ föreläsning om klara känslosamma motgångar genom fysisk träning.
### Bootstrapping as a Developer
-[Tekin Suleyman](https://twitter.com/tekin) berättade om hur han bootstrappade
-[crowd.fm](https://crowd.fm/) samt hur viktigt det är att hitta rätt typ av kunder,
+[Tekin Suleyman](https://twitter.com/tekin) berättade om hur han bootstrappade
+[crowd.fm](https://crowd.fm/) samt hur viktigt det är att hitta rätt typ av kunder,
speciellt när man har begränsat med finansiering och tid.
> Build something your customers **NEED**
@@ -46,7 +46,7 @@ speciellt när man har begränsat med finansiering och tid.
[Katrina Owen](https://twitter.com/kytrinyx) gick igenom olika sätt att “levla” i livet.
-Hennes initiala mål var att hon ville bli extraordinär på något… men hon hade inte helt
+Hennes initiala mål var att hon ville bli extraordinär på något… men hon hade inte helt
klart för sig **vad** det kunde vara. Så hon provade på det mesta.
1. Practice: Deliberate and focused
@@ -71,10 +71,10 @@ Några av tipsen var att skriva **Outage Reports**, göra **Project Post-Mortems
### Making Friends with the Turtles
-[Glenn Vanderburg](https://twitter.com/glv) förespråkade att alla borde lära
-sig hur tekniken fungerar några abstraktionsnivåer under den nivå som man
+[Glenn Vanderburg](https://twitter.com/glv) förespråkade att alla borde lära
+sig hur tekniken fungerar några abstraktionsnivåer under den nivå som man
vanligtvis jobbar mot. Han presenterade detta som fem punkter:
-
+
1. Don’t be afraid to learn the internals
2. Remove the barriers: Make it easy to explore
3. Choose the right tools, even if they’re not “cool”
@@ -85,11 +85,11 @@ Han hävdade även om att alla abstraktioner läcker så fort något går snett.
### Realigning & Refactoring
-[Jina Bolton](https://twitter.com/jina) beskrev hur hon jobbar
+[Jina Bolton](https://twitter.com/jina) beskrev hur hon jobbar
med [Sass](http://sass-lang.com/) och style guides.
-Hon rekomenderade boken [Scalable and Modular Architecture for CSS](http://smacss.com/),
-verktyget [SassMe](http://sassme.arc90.com/) och gridsystemet
+Hon rekomenderade boken [Scalable and Modular Architecture for CSS](http://smacss.com/),
+verktyget [SassMe](http://sassme.arc90.com/) och gridsystemet
[Susy](http://susy.oddbird.net/), vilket bygger på [Compass](http://compass-style.org/).
> Don’t try to document everything from the beginning. (You will give up)
@@ -108,7 +108,7 @@ bias samt att 2/3 a jordens befolkning inte kan delta i projektet.
### Literate Programming: A Modern Approach
-Jeremy Ashkenas pratade om [Literate CoffeeScript](http://ashkenas.com/literate-coffeescript/)
+Jeremy Ashkenas pratade om [Literate CoffeeScript](http://ashkenas.com/literate-coffeescript/)
samt [Knuths](http://en.wikipedia.org/wiki/Donald_Knuth) grundidé
[Literate programming](http://en.wikipedia.org/wiki/Literate_programming).
@@ -131,8 +131,8 @@ verktyg i vårt dagliga arbete med Ruby. Bundler, Rake, RSpec, RubyGems, etc.
> Pervasive tools are Ruby smells.
-Han beskrev det hela som spelet [Jenga](http://en.wikipedia.org/wiki/Jenga)
-och att vi alla borde fokusera på att bygga en stabil grund snarare än
+Han beskrev det hela som spelet [Jenga](http://en.wikipedia.org/wiki/Jenga)
+och att vi alla borde fokusera på att bygga en stabil grund snarare än
att utveckla nya verktyg. Han nämnde det inte i föreläsningen men jag kan verkligen rekomendera att du tar en närmare titt på hans projekt [Homoiconic](https://github.com/raganwald/homoiconic/).
- [Presentationen på Haiku Deck](http://www.haikudeck.com/p/ZZZZtHRk3c/rubyvrldens-frestende-kollaps)
diff --git a/_posts/2013-06-27-klrat13.md b/_posts/2013-06-27-klrat13.md
index a9a48bb..46b4f8a 100644
--- a/_posts/2013-06-27-klrat13.md
+++ b/_posts/2013-06-27-klrat13.md
@@ -3,9 +3,7 @@ title: "Kanban Leadership Retreat 2013"
date: 2013-06-27
last_updated_by: mats
---
-Under midsommarhelgen hölls årets Kanban Leadership Retreat i Mayrhofen, Österike KLRAT. Att få träffa så många duktiga människor i det format som används är verkligen en möjlighet att lära sig både i formella sessioner och lösa diskussioner.
-
-
+Under midsommarhelgen hölls årets Kanban Leadership Retreat i Mayrhofen, Österike KLRAT. Att få träffa så många duktiga människor i det format som används är verkligen en möjlighet att lära sig både i formella sessioner och lösa diskussioner.
Lean Kanban University partnermöte hölls redan på Söndagen. Eftersom Athega är ett av grundade företag var vi på plats på mötet. På söndagkväll samlades förslag till ämnen in och planerades in till nästföljande dag i tre konferensrum. Det handlade om allt från modeller, metoden i sig, exempel och nya idéer. Helt enkelt förslag på sessioner.
@@ -18,16 +16,19 @@ Beskrev hur tidsestimering går att eliminera med statistik och nyttan man kan h

### Håkan Forss
-föreslog bland annat sessioner runt hans arbete med Toyota Kata och Kanban. Håkans sätt att se på förändring stämmer väl överens med hur jag ser på det. Träning och åter träning är viktigt. Det kanske är viktigare att vi överhuvudtaget tränar på förändring och förbättring än att den alltid blir till det bättre. Vi måste vara adaptiva och vi tränar detta genom mönster/patterns eller Kata's. Håkan hade sessioner där vi bland annat tittade på att konkretisera punkter och förslag på Kata's som används inom Kanban metoden. Jag går inte in i djupet här utan hänvisar gärna vidare till Håkans utmärkta blogg där hela konceptet beskrivs mycket bra.
+föreslog bland annat sessioner runt hans arbete med Toyota Kata och Kanban. Håkans sätt att se på förändring stämmer väl överens med hur jag ser på det. Träning och åter träning är viktigt. Det kanske är viktigare att vi överhuvudtaget tränar på förändring och förbättring än att den alltid blir till det bättre. Vi måste vara adaptiva och vi tränar detta genom mönster/patterns eller Kata's. Håkan hade sessioner där vi bland annat tittade på att konkretisera punkter och förslag på Kata's som används inom Kanban metoden. Jag går inte in i djupet här utan hänvisar gärna vidare till Håkans utmärkta blogg där hela konceptet beskrivs mycket bra.
[http://hakanforss.wordpress.com](http://hakanforss.wordpress.com)
-### Jade Bloom
+### Jade Bloom
+
Jabe visade "Culture matters". Han berättade om Edgar Schein teorier om vad kultur är och att det inte är något ytligt. Det är något djupt inom organisationen och går att förstå bäst om man tittar på det i tre nivåer.
+
1. Saker och observerade beteenden
2. Exponerade Värden (Varför gör vi saker, medvetna strategier, uttalade värden, det vi tror)
-3. Underliggande antaganden
-På detta sätt ska vi se hur mottaglig en organisations är för förändring. Hypotesen byggde på att de värderingar som finns ibland inte stämmer med de metoder och artifakter vi använder oss av. Då riskerar förändring efter ett tag backa tillbaka till tidigare läge. Ett exempel var organisationer som börjat använda sig av Agila eller Kanban metoden och dess artifakter men över tid återgått till tidigare sätt att arbeta. En sådan organisation har inte samma grundläggande värderingar som Agila-metoder och/eller Kanban metoden bygger på. Då hjälper det inte att försöka trycka på detta.
- Vi fick göra en övning där vi först samlade ihop ett antal artifakter i den kultur eller organisation vi tittade på. Sedan samlar vi in antalet värderingar vi tror stämmer på organisationen (Dessa går även att jämföra med vision och mission på företaget för att se att det stämmer med vad individerna i företaget tror). Utifrån dessa kan började vi koppla värderingar mot artifakterna. Hittade vi en skillnad så ansågs det vara en motsägelse. Jabe är alltid förberedd och engagerande på sessionerna.
+3. Underliggande antaganden
+
+På detta sätt ska vi se hur mottaglig en organisations är för förändring. Hypotesen byggde på att de värderingar som finns ibland inte stämmer med de metoder och artifakter vi använder oss av. Då riskerar förändring efter ett tag backa tillbaka till tidigare läge. Ett exempel var organisationer som börjat använda sig av Agila eller Kanban metoden och dess artifakter men över tid återgått till tidigare sätt att arbeta. En sådan organisation har inte samma grundläggande värderingar som Agila-metoder och/eller Kanban metoden bygger på. Då hjälper det inte att försöka trycka på detta.
+ Vi fick göra en övning där vi först samlade ihop ett antal artifakter i den kultur eller organisation vi tittade på. Sedan samlar vi in antalet värderingar vi tror stämmer på organisationen (Dessa går även att jämföra med vision och mission på företaget för att se att det stämmer med vad individerna i företaget tror). Utifrån dessa kan började vi koppla värderingar mot artifakterna. Hittade vi en skillnad så ansågs det vara en motsägelse. Jabe är alltid förberedd och engagerande på sessionerna.

@@ -36,3 +37,5 @@ Arne visade delar av Alignment the forgotten child (alignment and automomy)-idé

Sammanfattningsvis innehöll konferensen en spännande blandning av teknik och organisationsutveckling. Hur djup en kanban implementation är och portfolio-kanban var ett återkommande tema.
+
+/ [Mats](/mats)
diff --git a/_posts/2013-08-05-new_employee_lark.md b/_posts/2013-08-05-new_employee_lark.md
index 0855307..709eaf1 100644
--- a/_posts/2013-08-05-new_employee_lark.md
+++ b/_posts/2013-08-05-new_employee_lark.md
@@ -6,10 +6,10 @@ last_updated_by: fredrik
Idag är vi glada att få hälsa en ny medarbetare välkommen till Athega, Lark Davis.
Lark har inte bara det coolaste namnet på företaget utan är också en mycket skicklig frontend-utvecklare och det är inom det området hon skall stärka Athegas leveranskapacitet.
-Några ledord i Larks värld är: HTML5, CSS3, jQuery, PHP, Django, Adobe photoshop, Custom WordPress, Responsive and Fluid Design.
+Några ledord i Larks värld är: HTML5, CSS3, jQuery, PHP, Django, Adobe photoshop, Custom WordPress, Responsive and Fluid Design.
Första uppdraget för Athega blir till vår mycket uppskattade kund Aftonbladet där hon skall ingå i web teamet för www.aftonbladet.se.
Vi ser fram emot att jobba med Lark och nu kör vi så det ryker!
-//Fredrik
+/ Fredrik
diff --git a/_posts/2013-08-20-ruby-20.md b/_posts/2013-08-20-ruby-20.md
index 0a6649f..61ae9f3 100644
--- a/_posts/2013-08-20-ruby-20.md
+++ b/_posts/2013-08-20-ruby-20.md
@@ -7,9 +7,10 @@ tags:
last_updated_by: peter
image_url: http://athega.se/images/employees/peter/wide.jpg
---
-> Denna artikel är ursprungligen publicerad i vårt nyhetsbrev. Vill du prenumerera på våra nyhetsbrev hör av dig till [Fredrik](/fredrik)
+> Denna artikel är ursprungligen publicerad i vårt nyhetsbrev.
## Ruby är ett av de 10 mest populära programspråken
+
### I år fyller Ruby 20 år och firar med att släppa version 2.0
*Agila programspråk fortsätter att ta marknadsandelar. Peter vet varför och kan berätta mer om styrkan i globala Ruby-communityn.*
@@ -18,15 +19,21 @@ image_url: http://athega.se/images/employees/peter/wide.jpg
Peter Hellberg är systemarkitekt på Athega med [Ruby](http://ruby-lang.org/) och [Go](http://golang.org/) som favoritredskap.
### Peter, varför har Ruby blivit så framgångsrikt?
+
– En av de största anledningarna till att [Ruby](http://ruby-lang.org/) blivit så stort är ramverket [Ruby on Rails](http://rubyonrails.org/) men jag tycker personligen att styrkan ligger i Ruby-communityn. Språket lämpar sig väldigt väl för att bygga prototyper och kulturen av testdriven utveckling gör det enkelt att producera vältestad kod. Det skapar en bra plattform för utveckling av större system. En annan anledning är att [JRuby](http://jruby.org/) gjort det väldigt smidigt att introducera Ruby i organisationer där man använder Java.
### Stämmer det att Ruby är japanskt?
+
– Ja, det utvecklades av [Yukihiro Matsumoto](http://en.wikipedia.org/wiki/Yukihiro_Matsumoto) i mitten på 1990-talet. Han ville skapa ett språk som var väldigt intuitivt och enkelt att förstå även för ovana programmerare. Sen utvecklades språket med hjälp av japanska utvecklare och det var först senare som man började dokumentera språket på engelska – det är nog därför Ruby växt så fort de senaste fem åren.
### Vad är det nya i Ruby 2.0?
-– Några interna förändringar sedan 1.9 är en ny Garbage Collector (Bitmap Marking) samt att man lyckats göra `require` markant snabbare. Man har även fokuserat på bakåtkompabilitet med 1.9 så långt som möjligt.
+
+– Några interna förändringar sedan 1.9 är en ny Garbage Collector (Bitmap Marking) samt att man lyckats göra `require` markant snabbare. Man har även fokuserat på bakåtkompabilitet med 1.9 så långt som möjligt.
En av de mer synliga syntaxförändringarna är antagligen "keyword arguments" men till skillnad från Objective-C så behöver man inte tänka på vilken ordning man använder dem i. En liten men trevlig nyhet är att Encoding är satt till UTF-8 som standard.
### Är det lämpligt att gå över till 2.0 direkt?
+
– Ja, absolut, eftersom version 2.0 är en mindre uppdatering av 1.9.3 så är det bara att börja använda 2.0 i nya Ruby-projekt. Version 2.0 är dessutom väldigt stabil.
+
+
diff --git a/_posts/2013-10-07-sverigesstorstawebbsajt.md b/_posts/2013-10-07-sverigesstorstawebbsajt.md
index 383c4d8..c6581c5 100644
--- a/_posts/2013-10-07-sverigesstorstawebbsajt.md
+++ b/_posts/2013-10-07-sverigesstorstawebbsajt.md
@@ -7,16 +7,14 @@ tags:
last_updated_by: mats
image_url: http://athega.se/images/employees/chrille/wide.jpg
---
-Pingdom har publicerat en artikel om aftonbladet.se där Athegas Christian Lizell beskriver vad det krävs för att hålla Sveriges största webbsajt rullande.
+Pingdom har publicerat en artikel om aftonbladet.se där Athegas Christian Lizell beskriver vad det krävs för att hålla Sveriges största webbsajt rullande.

-Lite siffror
+## Lite siffror
- Ca 3 miljoner unika besökare per dag
-
- Toppar på 100,000 unika requests per sekund
-
- Trafiken är på ca 15 TB per dag, ej inräknat annonser och TV-strömmar
I artikeln får vi se exempel på Aftonbladets övervakningsskärmar och infrastrukturen beskrivs.
diff --git a/_posts/2013-10-25-darfor-ar-tv4-sa-slimmade.md b/_posts/2013-10-25-darfor-ar-tv4-sa-slimmade.md
index 91df642..8dc0db5 100644
--- a/_posts/2013-10-25-darfor-ar-tv4-sa-slimmade.md
+++ b/_posts/2013-10-25-darfor-ar-tv4-sa-slimmade.md
@@ -5,15 +5,14 @@ description: "TV4 har ett slimmat team för digitala medier samtidigt som kraven
last_updated_by: mats
image_url: /assets/legacy/uploads/2013/10/per-1.png
---
+
> TV4 har ett slimmat team för digitala medier samtidigt som kraven är höga. Teknikchef Per Åström kan förklara hur de löser den ekvationen.
-------------
----------------------------------------
### Per, vad skiljer er från till exempel SVT?
– SVT lever inte med samma kommersiella krav som Aftonbladet, vi och andra tv-kanaler gör. Oavsett om tittaren har en dator, platta eller mobil så behöver vi annonsintäkter. Därför lägger vi mycket energi på att hitta nya ytor att sälja.
-Den 23 september lanserade vi till exempel det nya annonsformatet T-commerce som vi var först med i Sverige. "T" står för "tv". Tänk dig att du tittar på Drömkåken på vår Play-site. I en scen där en hantverkare använder borrmaskin kommer en yta upp som erbjuder dig att både läsa mer på annonsörens hemsida och att beställa en borrmaskin. Du väljer om du vill se vidare på filmen eller stanna kvar och kolla erbjudandet. Formatet är en del av programmet och det syns i timelinen när det dyker upp.
+Den 23 september lanserade vi till exempel det nya annonsformatet T-commerce som vi var först med i Sverige. "T" står för "tv". Tänk dig att du tittar på Drömkåken på vår Play-site. I en scen där en hantverkare använder borrmaskin kommer en yta upp som erbjuder dig att både läsa mer på annonsörens hemsida och att beställa en borrmaskin. Du väljer om du vill se vidare på filmen eller stanna kvar och kolla erbjudandet. Formatet är en del av programmet och det syns i timelinen när det dyker upp.
Nya idéer måste fram snabbt och då ställs det krav på den underliggande tekniken. Vi som utvecklar teknik för digitala medier måste känna oss trygga med att vi snabbt kan skapa nästan vilka nya format, ytor och idéer som helst.
@@ -27,7 +26,7 @@ Per Åströms utvecklingsteam har lagt ut driften av all IT och hyr funktioner o
### Ni är bara 12 personer på din avdelning. Räcker det?
-– Ja, faktiskt. Det beror på två strategiska beslut. Det första är att vi hyr kapacitet istället för att äga egna servrar. Det andra är att vi bygger våra applikationer så mycket som möjligt på färdiga komponenter, tjänster och ramverk. Vi letar upp "pusselbitar" som gör att vi snabbt och enkelt kan bygga bra lösningar. Vi hyr till exempel plattformen PubNub för realtidsmeddelanden, Disqus för kommentarer och använder open source-källkod som Ruby on Rails.
+– Ja, faktiskt. Det beror på två strategiska beslut. Det första är att vi hyr kapacitet istället för att äga egna servrar. Det andra är att vi bygger våra applikationer så mycket som möjligt på färdiga komponenter, tjänster och ramverk. Vi letar upp "pusselbitar" som gör att vi snabbt och enkelt kan bygga bra lösningar. Vi hyr till exempel plattformen PubNub för realtidsmeddelanden, Disqus för kommentarer och använder open source-källkod som Ruby on Rails.
Det finns massor av färdiga add-ons från tredjepartsleverantörer. Vi letar upp dem, kollar av mot vår kravspec, beställer och betalar, ofta med kort. Fungerar det mindre bra så byter vi bara till en annan leverantör. Marknaden är internationell och konkurrensen stenhård.
@@ -35,6 +34,6 @@ Det finns massor av färdiga add-ons från tredjepartsleverantörer. Vi letar up
– Till VIP-rummet i Idol köper vi in realtidsfunktionen som en tjänst från PubNub sen hyr vi kapacitet hos Heroku för att köra tjänsten. Där betalar vi bara exakt för den kapacitet vi behöver ända ner på sekundnivå. Perfekt för Idol som har tydliga tittartoppar.
-Tack vare att vi använder tredjepartsprodukter kan vi lägga mer energi på att bygga snygga grafiska lösningar, integration och anpassningar som gör att verktygen passar vårt arbetssätt.
+Tack vare att vi använder tredjepartsprodukter kan vi lägga mer energi på att bygga snygga grafiska lösningar, integration och anpassningar som gör att verktygen passar vårt arbetssätt.
Målet är alltid att skapa maximal kundupplevelse. Det är nödvändigt med den konkurrens som finns om tittarna. De reagerar snabbt och känslomässigt och därför måste vi fokusera på upplevelsen, inte tekniken bakom den, den är bara ett verktyg.
diff --git a/_posts/2013-11-22-acb2013.md b/_posts/2013-11-22-acb2013.md
index 715d913..0adbc3c 100644
--- a/_posts/2013-11-22-acb2013.md
+++ b/_posts/2013-11-22-acb2013.md
@@ -36,7 +36,7 @@ Så snart koden är uppstädad och i skick att dela med sig av, gör jag en [Pul
### Artoo & Cylon
-Jag använde ramverken [Artoo](http://artoo.io/) och
+Jag använde ramverken [Artoo](http://artoo.io/) och
[Cylon](http://cylonjs.com/) för att styra en [Arduino](http://arduino.cc/).
Även om Ruby är mitt favoritspråk så måste jag säga att JavaScript
@@ -52,21 +52,21 @@ Jag stötte tyvärr på en bugg i Cylon som gjorde att jag inte kunde använda f
### Ljuseffekter och visualisering med Arduino och Processing
-Processings-biblioteket [Minim](http://code.compartmental.net/tools/minim/) används för frekvensanalys av extern ljudinput (som kan vara mikrofon eller även en ljudfil med lite justering). Frekvensanalysen skrivs ut i en grafik som är lätt att styra. Genom att följa exempel på Minims hemsida skapade jag två vågformer (en till varje stereokanal) och ett frekvensspektrum som visar alla olika frekvensband samtidigt.
+Processings-biblioteket [Minim](http://code.compartmental.net/tools/minim/) används för frekvensanalys av extern ljudinput (som kan vara mikrofon eller även en ljudfil med lite justering). Frekvensanalysen skrivs ut i en grafik som är lätt att styra. Genom att följa exempel på Minims hemsida skapade jag två vågformer (en till varje stereokanal) och ett frekvensspektrum som visar alla olika frekvensband samtidigt.
-Men hur gör man ljudvisualisering i den riktiga världen? Med [Processing](http://processing.org/) var frekvensspektrumet uppdelat i sex intervaller. Frekvensmedelvärdet för varje intervall beräknas och skickades till Arduinons programvara som konverterar siffrorna till bytes och bits, det språket som Arduino-chippet förstår, som sen konverterades till elektriskt spänning. Varje del av den sex-delad frekvensspektrumet skickas till Arduinons tilldelade PWM (Pulse Width Modulation) pin-utgångar.
+Men hur gör man ljudvisualisering i den riktiga världen? Med [Processing](http://processing.org/) var frekvensspektrumet uppdelat i sex intervaller. Frekvensmedelvärdet för varje intervall beräknas och skickades till Arduinons programvara som konverterar siffrorna till bytes och bits, det språket som Arduino-chippet förstår, som sen konverterades till elektriskt spänning. Varje del av den sex-delad frekvensspektrumet skickas till Arduinons tilldelade PWM (Pulse Width Modulation) pin-utgångar.
Sex LED-lampor med olika färger kopplades till dessa utgångar. Om allt funkar rätt så ska de få signaler från Arduinos programvara i form av en spänning som matchar medelvärdena från frekvensspektrumets sex intervaller. Lamporna lyser och festen börjar!
-#### Stort tack till dessa resurser:
+#### Stort tack till dessa resurser:
- PWM visualisering med mikrofon
-- hur man gör seriell kommunikation mellan Arduino och Processing:
+- hur man gör seriell kommunikation mellan Arduino och Processing:
- hur man spelar en låt med minim och skapar en vågform:
-/ [Lark](/lark)
+/ Lark

@@ -94,11 +94,11 @@ Resultatet kan ses på på [github](http://github.com/ragulin/mds-riksdagen).
### Motorstyrning med Arduino
-Labbade för första gången med en Arduino. Målet var att kontrollera en motor programmatiskt och att försöka addera en sensor. Kan användas för att t.ex. styra en gardin eller ventilera ett växthus.
+Labbade för första gången med en Arduino. Målet var att kontrollera en motor programmatiskt och att försöka addera en sensor. Kan användas för att t.ex. styra en gardin eller ventilera ett växthus.
-Använde en övningsuppgift med färdigt exempel för att sätta upp initial motorstyring och att komma ingång med tekniken. Adderade sedan en analog fotoresistor och kalibrerade den mot rummets ljusförhållande med resistor och analys av värden.
+Använde en övningsuppgift med färdigt exempel för att sätta upp initial motorstyring och att komma ingång med tekniken. Adderade sedan en analog fotoresistor och kalibrerade den mot rummets ljusförhållande med resistor och analys av värden.
-Resultatet blev att motorn startar och går i 10 sekunder, om en momentswitch aktiveras och stannar sedan, under förutsättningen att det är tillräckligt ljust i rummet.
+Resultatet blev att motorn startar och går i 10 sekunder, om en momentswitch aktiveras och stannar sedan, under förutsättningen att det är tillräckligt ljust i rummet.
/ [Torbjörn](/tobbe)
@@ -106,7 +106,7 @@ Resultatet blev att motorn startar och går i 10 sekunder, om en momentswitch ak
### Interaktiv 3D-kub i CSS & JavaScript
En 3D-kub som kan roteras och zoomas med hjälp av mushjul eller pekplatta, pekskärm eller genom att röra på enheten.
Tekniken som används är CSS 3D Transforms och JavaScript som hämtar data från gyro och accelerometer genom händelser för Wheel, DeviceMotion, DeviceOrientation, OrientationChange och TouchMove.
-På mobilen eller surfplattan skapas en känsla av att kuben är fastlåst i rymden och hänger kvar oavsett hur man rör och vrider på enheten.
+På mobilen eller surfplattan skapas en känsla av att kuben är fastlåst i rymden och hänger kvar oavsett hur man rör och vrider på enheten.
[Kolla in den på CodePen](http://codepen.io/johanberonius/full/qpzmh).
/ [Johan](/johan)
@@ -133,4 +133,4 @@ Jag utvecklade en Android app i Java som använder Stockholm stads [öppna trafi
Appen tar då telefonens GPS-position och hämtar information om MC-rutan från Trafikkontoret och skapar en påminnelse i kalendern när nästa städdag är så att användaren kommer ihåg att flytta sin motorcykel och undvika böter.
-/ [Alex](/alex)
+/ Alex
diff --git a/_posts/2014-02-04-ledningssystemsomfungerar.md b/_posts/2014-02-04-ledningssystemsomfungerar.md
index a22447d..510e943 100644
--- a/_posts/2014-02-04-ledningssystemsomfungerar.md
+++ b/_posts/2014-02-04-ledningssystemsomfungerar.md
@@ -7,33 +7,34 @@ tags:
last_updated_by: mats
image_url: http://athega.se/images/employees/mark/medium.jpg
---
-#### Ledningen måste kunna lita på sina nyckeltal. Hur ska de annars kunna ta rätt beslut?
+
+> Ledningen måste kunna lita på sina nyckeltal. Hur ska de annars kunna ta rätt beslut?
Det går att undvika fällorna när du bygger beslutstödssystem. Vi satte oss ner med seniorkonsulten Mark Ingram för att få veta hur.
-_Mark, vad är syftet med de ledningssystem du är med och utvecklar?_
+## Mark, vad är syftet med de ledningssystem du är med och utvecklar?
– Systemen används av ledningen på stora företag för att kunna ta rätt beslut. Systemen samlar data och presenterar ekonomiska nyckeltal för organisationens olika delar. Det kan t ex handla om att månad för månad jämföra kostnader mot budget för alla dotterbolag. Ett bra ledningssystem ger företaget en konkurrensfördel. Cheferna kan se möjligheter och agera snabbt eftersom de kan visualisera sin verksamhet mer exakt än sina konkurrenter. Det är som ordspråket säger: If you can´t measure it, you can´t manage it.

Athegakonsulten Mark Ingram har byggt managementsystem åt storkoncerner sedan 2004 och vet var fallgroparna finns.
-_Vilken är den största utmaningen när man bygger ett ledningssystem?_
+## Vilken är den största utmaningen när man bygger ett ledningssystem?
-– Systemen är till sin natur komplexa och svåra att förstå. Det finns stora inbyggda motsättningar. Systemet beskriver verksamheten i verksamhetstermer, men realiseras med tekniskt datorspråk samtidigt som de innehåller finansiell information klädd i redovisningstermer. Det är ingen lätt match att greppa helheten.
- Den största utmaningen annars är att skapa konsensus i organisationen. Ta bara begreppet kostnadsmodell – hur många tolkningar av vad det är och hur den kan se ut finns det inte?
- Jag möter ibland frustrerade chefer som tvivlar på siffrorna de fått och gärna muttrar om "funny money" eftersom siffrorna inte känns relevanta för deras verksamhet. Tvivlet är som ett gift. För att ett system ska bli ett effektivt verktyg för organisationen måste människorna lita på modellen och de nyckeltal som den producerar.
- Det finns en utmaning till. En ny kostnadsmodell, för att ta ett exempel, kräver engagemang av organisationen. Ju större denna insats är, desto större risk att medarbetarna nedvärderar nyttan av den information ledningssystemet ger. Det enda sättet att undvika denna fälla är att förenkla hela ledningssystemet. Drömmen vore att modeller och system inte belastar organisationen alls, samtidigt som de levererar exakt den information man vill ha.
+– Systemen är till sin natur komplexa och svåra att förstå. Det finns stora inbyggda motsättningar. Systemet beskriver verksamheten i verksamhetstermer, men realiseras med tekniskt datorspråk samtidigt som de innehåller finansiell information klädd i redovisningstermer. Det är ingen lätt match att greppa helheten.
+ Den största utmaningen annars är att skapa konsensus i organisationen. Ta bara begreppet kostnadsmodell – hur många tolkningar av vad det är och hur den kan se ut finns det inte?
+ Jag möter ibland frustrerade chefer som tvivlar på siffrorna de fått och gärna muttrar om "funny money" eftersom siffrorna inte känns relevanta för deras verksamhet. Tvivlet är som ett gift. För att ett system ska bli ett effektivt verktyg för organisationen måste människorna lita på modellen och de nyckeltal som den producerar.
+ Det finns en utmaning till. En ny kostnadsmodell, för att ta ett exempel, kräver engagemang av organisationen. Ju större denna insats är, desto större risk att medarbetarna nedvärderar nyttan av den information ledningssystemet ger. Det enda sättet att undvika denna fälla är att förenkla hela ledningssystemet. Drömmen vore att modeller och system inte belastar organisationen alls, samtidigt som de levererar exakt den information man vill ha.
Jag brukar också föreslå att organisationerna ska fokusera på orsak-verkan-sambanden. "Vilka beteenden kan du påverka om du presenterar dessa kostnadssiffror för cheferna på dotterbolagen?" Frågan leder till nya insikter som i sin tur förändrar beteenden och sänker kostnader.
-_Vilka verktyg brukar användas?_
+## Vilka verktyg brukar användas?
-– Excel leder stort, det är absolut mest populärt. Alla kan använda det utan djupa datorkunskaper. Det finns ett skämt om Excel som säger att "Export to Excel" är den mest tryckta knappen i alla affärssystem. Och det ligger nog något i det.
- Ironiskt nog så vill de flesta affärssystemleverantörer bli av med Excel. Det är inte så konstigt. Riskerna med Excel är stora. Eftersom det är enkelt att använda skapar det en övertro på de siffror som kommer ur excel-arken. Tillförlitligheten är låg, speciellt när flera ark länkas ihop. Googla "spreadsheet risks" så hittar du uppskattningar på hur många miljarder USD som blivit felräknade.
+- Excel leder stort, det är absolut mest populärt. Alla kan använda det utan djupa datorkunskaper. Det finns ett skämt om Excel som säger att "Export to Excel" är den mest tryckta knappen i alla affärssystem. Och det ligger nog något i det.
+ Ironiskt nog så vill de flesta affärssystemleverantörer bli av med Excel. Det är inte så konstigt. Riskerna med Excel är stora. Eftersom det är enkelt att använda skapar det en övertro på de siffror som kommer ur excel-arken. Tillförlitligheten är låg, speciellt när flera ark länkas ihop. Googla "spreadsheet risks" så hittar du uppskattningar på hur många miljarder USD som blivit felräknade.
Jag lägger mycket tid på att förklara riskerna, hitta felkällor och flytta över funktioner till relationsdatabaser och kundspecifika data warehouses. Excel kommer förstås finnas kvar länge. Det är oöverträffat som verktyg för enkla ögonblicksbilder och analyser.
-_Vilken är den kritiska faktorn för att nå framgång med ett ledningssystem?_
+## Vilken är den kritiska faktorn för att nå framgång med ett ledningssystem?
-– För mig är det att lyssna på kunden. En klyscha, men väldigt sann. Företag bombarderas idag med information från IT-företag om produkter som är nödvändiga för framgång. BI-systemkonsulter kommer med råd och produkter som ibland är inkompatibla med kundens verksamhet, kostar mycket pengar och stjäl tid – och ofta också låser in kunden. Det är nog därför Excel används överallt. Det är snabbt, enkelt och pratar användarens språk.
+– För mig är det att lyssna på kunden. En klyscha, men väldigt sann. Företag bombarderas idag med information från IT-företag om produkter som är nödvändiga för framgång. BI-systemkonsulter kommer med råd och produkter som ibland är inkompatibla med kundens verksamhet, kostar mycket pengar och stjäl tid – och ofta också låser in kunden. Det är nog därför Excel används överallt. Det är snabbt, enkelt och pratar användarens språk.
Det behövs kloka råd i denna djungel. Ett bra sätt att inleda ett samarbete är att snabbt bygga ett enkelt kostnadskontroll-system utifrån kundens behov. Då får alla se att det finns fördelar utan att de känner att de blir inlåsta, tappar kontroll och slösar tid.
diff --git a/_posts/2014-04-04-aftonbladet-releasar-nytt-dygnet-runt.md b/_posts/2014-04-04-aftonbladet-releasar-nytt-dygnet-runt.md
index 4d7457d..7055c0c 100644
--- a/_posts/2014-04-04-aftonbladet-releasar-nytt-dygnet-runt.md
+++ b/_posts/2014-04-04-aftonbladet-releasar-nytt-dygnet-runt.md
@@ -7,28 +7,29 @@ tags:
last_updated_by: chrille
image_url: http://athega.se/images/employees/chrille/medium.jpg
---
-##"Vi releasar nytt dygnet runt. Som att bypass-operera ett nyhetsankare under sändning."
+> "Vi releasar nytt dygnet runt. Som att bypass-operera ett nyhetsankare under sändning."
**Aftonbladet är ohotad etta igen. Internetworld säger att det är en ynnest att ha Aftonbladet i landet. Vår konsult [Christian Lizell](/chrille) vet hur sajten håller sig kvar på toppen.**
-_Aftonbladet blev Sveriges bästa sajt igen. Hur behåller man greppet om läsarna?_
+## Aftonbladet blev Sveriges bästa sajt igen. Hur behåller man greppet om läsarna?
– Genom att aldrig vila. Alla har en stark tro på sig själva och är ständigt på jakt efter nya idéer, funktioner och lösningar. De är inte rädda att prova nya grepp och har lätt för att göra sig av med det som inte fungerar. Ibland driftsätter vi nya funktioner flera gånger om dagen.
-
+
+
_Vår konsult Christian Lizell ingår i Aftonbladets team och gillar pulsen och ambitionen på landets bästa sajt._
-_Hur testas nya funktioner utan risk?_
+## Hur testas nya funktioner utan risk?
-– Det är aldrig helt riskfritt. Men det går att minimera följderna av att något eventuellt går sönder. Innan ny funktionalitet tas i drift granskas och testas allt, både i teori och praktik. Kodgranskning sker med en Pull Request. Det är en förfrågan om att lyfta in ny funktionalitet där varenda förändring visas tydligt i ett grafiskt gränssnitt. Utvecklarna kan direkt testa, kommentera och diskutera förändringen.
+– Det är aldrig helt riskfritt. Men det går att minimera följderna av att något eventuellt går sönder. Innan ny funktionalitet tas i drift granskas och testas allt, både i teori och praktik. Kodgranskning sker med en Pull Request. Det är en förfrågan om att lyfta in ny funktionalitet där varenda förändring visas tydligt i ett grafiskt gränssnitt. Utvecklarna kan direkt testa, kommentera och diskutera förändringen.
Förbättringar görs direkt i en gren av huvudkoden och resultatet kan sedan lyftas in i huvudkoden för att driftsättas. Det innebär att det som ligger i huvudkoden alltid är redo att driftsättas. Det gör stor skillnad.
-_Arbetar Aftonbladet annorlunda än andra stora sajter?_
+## Arbetar Aftonbladet annorlunda än andra stora sajter?
-– Alla sajter jobbar naturligtvis på sitt sätt, men jag tror att Aftonbladet har en klok strategi för hur nya funktioner tas i drift, stora som små. Det kan handla om att byta ut hela systemet, inklusive infrastruktur och kringsystem eller något så enkelt som att lägga ut en ny logga på en undersajt. Målet är att läsaren aldrig ska påverkas och helst inte ens märka att något skett. Det finns exempel på sajter som stänger ner ett dygn eller ett par timmar för "uppgradering". Det finns också exempel på driftsättning av nya funktioner som lett till att sajter gått ner och att man tvingats rulla tillbaka till en gammal version. Båda dessa exempel är naturligtvis negativa för besökarna.
- Aftonbladet jobbar med Feature Toggles. Det är ett sätt att driftsätta ny funktionalitet utan att den omedelbart kommer i drift. Se det som en spak som slår av och på funktionaliteten som då kan testas i lugn och ro på en mindre trafikerad del av sajten. Går allt bra provar man över hela sajten. Skulle det ändå bli problem är det lätt att stänga av funktionaliteten genom att dra i spaken. Ingen kod behöver rullas tillbaka.
+– Alla sajter jobbar naturligtvis på sitt sätt, men jag tror att Aftonbladet har en klok strategi för hur nya funktioner tas i drift, stora som små. Det kan handla om att byta ut hela systemet, inklusive infrastruktur och kringsystem eller något så enkelt som att lägga ut en ny logga på en undersajt. Målet är att läsaren aldrig ska påverkas och helst inte ens märka att något skett. Det finns exempel på sajter som stänger ner ett dygn eller ett par timmar för "uppgradering". Det finns också exempel på driftsättning av nya funktioner som lett till att sajter gått ner och att man tvingats rulla tillbaka till en gammal version. Båda dessa exempel är naturligtvis negativa för besökarna.
+ Aftonbladet jobbar med Feature Toggles. Det är ett sätt att driftsätta ny funktionalitet utan att den omedelbart kommer i drift. Se det som en spak som slår av och på funktionaliteten som då kan testas i lugn och ro på en mindre trafikerad del av sajten. Går allt bra provar man över hela sajten. Skulle det ändå bli problem är det lätt att stänga av funktionaliteten genom att dra i spaken. Ingen kod behöver rullas tillbaka.
Detta är ofta applicerbart även på större systemförändringar. Ny hårdvara eller nya lösningar kan testas på delar av infrastrukturen. Det kräver mer förarbete och planering men är väl investerad tid. Det är lite som att bypass-operera ett nyhetsankare under sändning.
-_Hur har man organiserat arbetet?_
+## Hur har man organiserat arbetet?
– Aftonbladets IT-avdelning är uppdelad i team som jobbar i Scrumliknande upplägg. Vissa team kör Kanban, men alla har en PO, Product Owner. Beställningar hanteras i backlogs som prioriteras av produktägaren. Ny funktionalitet läggs ut genom ett release pipeline/release-flöde så snart behovet finns. Ibland flera gånger per dag. Det finns ett Core-team som hanterar driftsättningar av sajten. Teamet håller också koll på systemen och att allt ser normalt ut före och efter en driftsättning. En beskrivning av hur det går till skulle lätt fylla upp ett helt eget blogginlägg.
diff --git a/_posts/2014-05-02-gophercon-2014.md b/_posts/2014-05-02-gophercon-2014.md
index c5bec94..243474f 100644
--- a/_posts/2014-05-02-gophercon-2014.md
+++ b/_posts/2014-05-02-gophercon-2014.md
@@ -24,7 +24,7 @@ Konferensen [inleddes](http://talks.golang.org/2014/hellogophers.slide) av
legenden [Rob Pike](https://twitter.com/rob_pike) och efterföljdes sedan
av en strid ström av riktigt bra presentationer.
-**Några exempel:**
+## Några exempel:
- [Bluetooth Low Energy and Embedded Go](http://go-talks.appspot.com/github.com/gophercon/2014-talks/offbymany/ble_embedded.slide)
- [Best Practices for Production Environments](https://cdn.rawgit.com/gophercon/2014-talks/master/best-practices-for-production-environments.pdf)
diff --git a/_posts/2014-06-25-viktklubb-fintrimmar-sin-hemsida.md b/_posts/2014-06-25-viktklubb-fintrimmar-sin-hemsida.md
index ddb9f92..7d800b8 100644
--- a/_posts/2014-06-25-viktklubb-fintrimmar-sin-hemsida.md
+++ b/_posts/2014-06-25-viktklubb-fintrimmar-sin-hemsida.md
@@ -5,31 +5,29 @@ description: "Viktklubb pressas av konkurrensen. Nu måste försäljningen öka.
tags:
- nyhetsbrev
last_updated_by: chrille
-image_url: http://athega.se/images/employees/lark/medium.jpg
---
-##Aftonbladets Viktklubb pressas av konkurrensen. Nu måste försäljningen öka."
+> Aftonbladets Viktklubb pressas av konkurrensen. Nu måste försäljningen öka.
-**[Lark Davis](/lark) berättar om nya optimeringsverktyg för näthandel.**
+**Lark Davis berättar om nya optimeringsverktyg för näthandel.**
-_Lark, hur ska ni göra för att öka Viktklubbs försäljning?_
+## Lark, hur ska ni göra för att öka Viktklubbs försäljning?
– Viktklubb startade 2003 och var först med viktminskning på nätet. 500 000 medlemmar har sedan dess gått ner i vikt med individuellt anpassade program. Idag dyker det upp nya aktörer med liknande erbjudanden. Vi måste helt enkelt tänka nytt för att få fler som besöker Viktklubb att också bli medlemmar.
I grunden handlar det om att göra hela sajten mer inbjudande. Eftersom det är jag som ansvarar för front-end utvecklingen är det mitt ansvar att fintrimma alla gränssnitt och framför allt startsidan så att den verkligen säljer.
-
_Athegakonsulten Lark Davis hjälper Viktklubb att öka försäljningen med optimeringsverktyg för näthandel._
-_Hur testar man om en sida säljer?_
+## Hur testar man om en sida säljer?
– För några veckor sedan lanserade Viktklubb en ny sajt som vi kan arbeta med på ett nytt sätt. Ett viktigt verktyg i det arbetet är [Optimizely](https://www.optimizely.com/), en nättjänst som används för så kallad A/B-testning. Istället för att gissa hur en sida ska se ut väljer man ut några av sina bästa förslag och testar dem mot varandra i den dagliga driften. Det förslag som ger bäst resultat vinner och testas därefter mot en förfinad variant. Och så fortsätter man tills man har hittat den version som ger maximal säljeffekt.
-_Exakt vad kan du testa?_
+## Exakt vad kan du testa?
-– Med Optimizely kan jag testa budskap, bilder, färgsättning och grafisk formgivning. Men jag vet inte vad besökarna gör på sajten. För att ta reda på det använder jag webbstatistikverktygen Mixpanel och SiteCatalyst.
+– Med Optimizely kan jag testa budskap, bilder, färgsättning och grafisk formgivning. Men jag vet inte vad besökarna gör på sajten. För att ta reda på det använder jag webbstatistikverktygen Mixpanel och SiteCatalyst.
Var kommer besökarna ifrån? Vad klickar de på? Hur länge stannar de? Var lämnar de sajten? Alla såna frågor går det att få svar på.
-_Vad är dina erfarenheter hittills?_
+## Vad är dina erfarenheter hittills?
– De nya optimerings- och webbstatistikprogrammen är supereffektiva och representerar framtiden för all typ av näthandel. Att inte använda dem är detsamma som att skänka bort marknadsandelar.
diff --git a/_posts/2014-09-26-GO-kommer-revolutionera-webben.md b/_posts/2014-09-26-GO-kommer-revolutionera-webben.md
index 3887624..ccd601d 100644
--- a/_posts/2014-09-26-GO-kommer-revolutionera-webben.md
+++ b/_posts/2014-09-26-GO-kommer-revolutionera-webben.md
@@ -6,34 +6,35 @@ tags:
- nyhetsbrev
- golang
last_updated_by: peter
-image_url: http://athega.se/images/employees/peter/medium.jpg
+image_url: /assets/img/employees/peter.jpg
---
-##Nu kommer Go. Programspråket som är skapat för att bygga webbtjänster.
+> Nu kommer Go. Programspråket som är skapat för att bygga webbtjänster.
-**Lägg Go på minnet. Det är ett nytt, öppet programspråk utvecklat av Google som växer lavinartat. [Peter Hellberg](/peter) på Athega förklarar varför. **
+Lägg Go på minnet. Det är ett nytt, öppet programspråk utvecklat av Google som växer lavinartat. [Peter Hellberg](/peter) på Athega förklarar varför.
-_Peter, hur många programspråk behöver vi egentligen?_
+## Peter, hur många programspråk behöver vi egentligen?
-– Man måste komma ihåg att varje programspråk är ett barn av sin tid. De aktuella behoven styr språkutvecklingen. Idag har webbtjänster och multi-processing stort fokus. Och här är Go supereffektivt.
+– Man måste komma ihåg att varje programspråk är ett barn av sin tid. De aktuella behoven styr språkutvecklingen. Idag har webbtjänster och multi-processing stort fokus. Och här är Go supereffektivt.
-
+
_Använd Go om du vill bygga snabba webbapplikationer, säger Peter Hellberg, systemarkitekt på Athega._
-_Hur länge har Go funnits?_
+## Hur länge har Go funnits?
– Den första stabila releasen släpptes 2012. Men grundidéerna till språket härrör från en matematisk teori, Communicating Sequential Processes (CSP), som presenterades redan 1978.
Go är ursprungligen utvecklat av Google för att bygga Google-tjänster. Upphovsmännen är bland annat legendarerna Rob Pike och Ken Thompson från Bell Labs. Men idag sker mycket av utvecklingsarbetet utanför Google.
-_När ska man använda Go?_
+## När ska man använda Go?
-– I webbapplikationer som saknar grafiskt gränssnitt och samtidigt måste fungera med ett mycket stort antal klienter passar Go perfekt. Ett bra exempel är en Go-applikation som gör att en miljon klienter samtidigt kan spela upp ett videoklipp på Youtube.
-Go passar däremot inte alls för desktop-applikationer och inte heller för mobilappar.
-För oss som jobbar som utvecklare har Go en stor fördel. Kompilatorn är otroligt snabb. Ett skäl till att Google behövde ett nytt programspråk var faktiskt att det tog 40 minuter att kompilera deras största system i C++. Nu när det är skrivet i Go tar kompileringen någon minut.
+– I webbapplikationer som saknar grafiskt gränssnitt och samtidigt måste fungera med ett mycket stort antal klienter passar Go perfekt. Ett bra exempel är en Go-applikation som gör att en miljon klienter samtidigt kan spela upp ett videoklipp på Youtube.
+Go passar däremot inte alls för desktop-applikationer och inte heller för mobilappar.
-_Hur tror du att framtiden blir för Go?_
+För oss som jobbar som utvecklare har Go en stor fördel. Kompilatorn är otroligt snabb. Ett skäl till att Google behövde ett nytt programspråk var faktiskt att det tog 40 minuter att kompilera deras största system i C++. Nu när det är skrivet i Go tar kompileringen någon minut.
-– Eftersom jag är involverad i Go-communityn här i Stockholm blir mitt självklara svar: lysande! De delar i ett system som behöver höga prestanda borde alltid skrivas i Go. Då gör det inget att andra delar, t ex skrivna i Ruby eller Pyton, är lite långsamma. Själv jobbar jag fortfarande mest i Ruby, men Go upptar alltmer av min tid. Go kommer framför allt att växa på bekostnad av Java och C#, som jag ser det.
- Att det internationella intresset för Go är stort märktes tydligt på den första Go-konferensen i Colorado i våras. Vi var 700 deltagare på plats, vilket är mycket bra för ett språk som bara har två år på nacken.
+## Hur tror du att framtiden blir för Go?
+
+– Eftersom jag är involverad i Go-communityn här i Stockholm blir mitt självklara svar: lysande! De delar i ett system som behöver höga prestanda borde alltid skrivas i Go. Då gör det inget att andra delar, t ex skrivna i Ruby eller Pyton, är lite långsamma. Själv jobbar jag fortfarande mest i Ruby, men Go upptar alltmer av min tid. Go kommer framför allt att växa på bekostnad av Java och C#, som jag ser det.
+ Att det internationella intresset för Go är stort märktes tydligt på den första Go-konferensen i Colorado i våras. Vi var 700 deltagare på plats, vilket är mycket bra för ett språk som bara har två år på nacken.
_Peter Hellberg,
Systemarkitekt på Athega_
diff --git a/_posts/2014-10-19-abc14.md b/_posts/2014-10-19-abc14.md
index 9805719..3c35e31 100644
--- a/_posts/2014-10-19-abc14.md
+++ b/_posts/2014-10-19-abc14.md
@@ -1,19 +1,30 @@
---
title: "Athega Code Base 2014"
date: 2014-10-19
+description: "Årets Codebase hade sin bas på Sandhamns Seglarhotell och ägde rum något tidigare på hösten än förra året."
last_updated_by: tobbe
+image_url: /assets/legacy/uploads/2014/10/img_4301.jpg
---
-Årets Codebase hade sin bas på Sandhamns Seglarhotell och ägde rum något tidigare på hösten än förra året. Valet av en lite mer civilicerad plats med mildare väder kompenserades med en rejäl expedition i ytterskärgården. På eftermiddagen mot skymningen gav vi oss i väg mot Lilla Nassa för fika, över Rödkobsfjärden och genom de östra kobbarna av Storö-Bockö-Lökaö naturreservat.
-Sedan vidare mot fyrvisning på Grönskär via Björkskärs skärgård. Trots god utsikt från fyren kan vi inte rapportera om några främmande undervattensfarkoster. Väl tillbaka till Sandhamn innan solen gått ned.
+Årets Codebase hade sin bas på Sandhamns Seglarhotell och ägde rum något tidigare på hösten än förra året.
+
+Valet av en lite mer civilicerad plats med mildare väder kompenserades med en rejäl expedition i ytterskärgården.
+På eftermiddagen mot skymningen gav vi oss i väg mot Lilla Nassa för fika, över Rödkobsfjärden och genom de östra
+kobbarna av Storö-Bockö-Lökaö naturreservat. Sedan vidare mot fyrvisning på Grönskär via Björkskärs skärgård.
+
+Trots god utsikt från fyren kan vi inte rapportera om några främmande undervattensfarkoster.
+
+Väl tillbaka till Sandhamn innan solen gått ned:

Årets projekt
=============
-Många valde att använda [Tessel](https://tessel.io/) som vi införskaffat till årets Codebase. Tessel är kortfattat en microcontroller som kör Javascript och är kompatibel med Node.js. Den går att bygga på med olika moduler med sensorer.
+Många valde att använda [Tessel](https://tessel.io/) som vi införskaffat till årets Codebase. Tessel är kortfattat en microcontroller som kör Javascript och är kompatibel med Node.js. Den går att bygga på med olika moduler med sensorer.
### Lars
-**Tessel Drink-mixer**
+
+#### Tessel Drink-mixer
+
- Moduler: Servo, Climate, BLE
- Magneter, häftmassa och glas
- När klimat modul känner av värme från tummen så aktiveras servo och efter 10s så skickas ett - iBeacon advertisement att det är klart
@@ -21,25 +32,28 @@ Många valde att använda [Tessel](https://tessel.io/) som vi införskaffat till


-**Tessel Musik-spelare**
+#### Tessel Musik-spelare
+
- Moduler: Audio
- Tiny-router och nodejs-websocket
- Web-sida på tessel med spelarkontroller

### Mark
+
PROGRAMABLE EXTENDED NUMBERS FOR RUBY
+
M500 is designed to be easy to use
-input is in the form of text strings [called Strings in Ruby]. That is
-any number in quotation marks a
-i.e. "22" [is a valid input to M500] otherwise 22 [no quotations] talks
-to Ruby's internal number representation system.
+input is in the form of text strings [called Strings in Ruby].
+
+That is any number in quotation marks a i.e. `"22"` [is a valid input to M500]
+otherwise 22 [no quotations] talks to Ruby's internal number representation system.
-"22" is a class called a String, this can be check by typing the Ruby
-command puts "22".class and on return gives 'String'
+`"22"` is a class called a String, this can be check by typing the Ruby
+command `puts "22".class` and on return gives `'String'`
btw, the command above will be shortened to:
-puts "22".class >> String [where >> means what
+`puts "22".class >> String` [where >> means what
follows is the return after Ruby has interpreted the first part]
-i.e. "command to Ruby" >> "output from Ruby"
+i.e. `"command to Ruby" >> "output from Ruby"`
diff --git a/_posts/2014-10-26-dotgo-2014.md b/_posts/2014-10-26-dotgo-2014.md
index a0f0b93..8746215 100644
--- a/_posts/2014-10-26-dotgo-2014.md
+++ b/_posts/2014-10-26-dotgo-2014.md
@@ -1,6 +1,7 @@
---
title: "dotGo 2014"
date: 2014-10-26
+description: "För några veckor sedan åkte jag på konferensen dotGo i Paris. Som namnet antyder handlade den främst om programmeringsspråket Go"
tags:
- konferens
- golang
diff --git a/_posts/2014-11-07-blir_det_ett_till_nordicjs.md b/_posts/2014-11-07-blir_det_ett_till_nordicjs.md
index 2935f8d..e1e25cd 100644
--- a/_posts/2014-11-07-blir_det_ett_till_nordicjs.md
+++ b/_posts/2014-11-07-blir_det_ett_till_nordicjs.md
@@ -9,13 +9,12 @@ I dagarna annonserades [Nordic.js](http://nordicjs.com/) 2015, men frågan är o
Det har nu gått några veckor sedan jag besökte årets upplaga av Nordic.js, en ny konferens som enligt skaparna skulle vara ”all about Javascript”. Problemet var bara att, det var den inte. Ganska litet faktiskt, till och med. Ändå var det en bra konferens, någonstans. Jag vill egentligen inte skriva det, men kan inte komma ifrån att jag nog tycker det ändå.
-
-
Konferensen inleds på kajen i Slussen i årets kanske tätaste dimma och vi kliver ombord på båten för att äta frukost medan vi transporteras ut till ett fantastiskt ställe, [Artipelag](http://www.artipelag.se/). Vi kliver av i ett hav av såpbubblor och tar oss upp till scenen, byggd i trä, som ett stormande hav. Jag tror den starten är svårslagen.
Luncherna är fantastiska, kaffet är gott, festen grym, men formatet på själva konferensen är på tok för långsamt. Ett spår, 30 minuter prat och 30 minuter paus. Med några få undantag är nivån på innehållet som talarna framför alldeles för grund och som inledningsvis redan avhandlats, inte ”all about Javascript”.
## Undantagen som jag tar med mig
+
- [Robert Nyman](http://nordicjs.com/speakers#7-Robert-Nyman) som presenterar dev tools i Firefox (min favoritwebbläsare).
- [Douglas Crockford](http://nordicjs.com/speakers#2-Douglas-Crockford) som pratar vidare om does and dont's i Javascript och framför allt varför.
- [Hakim el Hattab](http://nordicjs.com/speakers#14-Hakim-El Hattab) som visar en del fantastiska visuella experiment och som är mannen bakom [slides.com](http://slides.com), som jag numera använder med glädje.
diff --git a/_posts/2015-03-05-UR-recept.md b/_posts/2015-03-05-UR-recept.md
index 2e8789c..31bf088 100644
--- a/_posts/2015-03-05-UR-recept.md
+++ b/_posts/2015-03-05-UR-recept.md
@@ -8,28 +8,29 @@ tags:
last_updated_by: peter
image_url: /assets/legacy/uploads/2015/03/susanne_samaras_bw.png
---
-UR:s recept för webbutveckling: täta användartester och öppen källkod.
-----------------------------------------------------------------------
+
+## UR:s recept för webbutveckling: täta användartester och öppen källkod.
+
> UR har ett unikt public service-uppdrag: att producera och sprida utbildningsprogram. Vi fick en pratstund med webbutvecklingschefen Susanne Samaras.
-###### Susanne, vilka skolformer riktar ni er till?
+### Susanne, vilka skolformer riktar ni er till?
Alla, vårt uppdrag omfattar all form av organiserad utbildning på alla nivåer. Webbtjänsterna UR.se och UR Play är våra huvudkanaler och flaggskepp. UR Play vänder sig till den kunskapstörstande allmänheten, medan UR.se är riktad mot lärare och pedagoger. I höstas lanserade vi en ny version av UR.se.

> UR finns även på Twitter, Instagram, Youtube, Facebook och ett antal satellitsajter. Allt måste samspela med våra huvudkanaler UR.se och UR Play, säger Susanne Samaras.
-###### Hur många besökare har UR.se?
+### Hur många besökare har UR.se?
– Under terminerna varierar det mellan 160 000 och 180 000 besökare i veckan. Hit söker sig lärare för att få stöd, handledning och inspiration i sin undervisning. På UR.se finns över 12 000 program, så det finns mycket att välja på.
-###### Hur vet ni vad lärare behöver?
+### Hur vet ni vad lärare behöver?
– All vår utveckling är användardriven. Vi bjuder alltid in lärare och elever till fokusgrupper och användartester för att se till att vi ligger rätt när det gäller funktionalitet och design. Sen är förstås själva programmen på webbplatsen ofta framtagna i samarbete med pedagoger och utgår från behovsanalyser. Vi följer naturligtvis också upp i form av besöksstatistik och andra typer av mer kvalitativa mätningar.
-###### Hur mycket betyder designen i förhållande till funktionen?
+### Hur mycket betyder designen i förhållande till funktionen?
– Designen är mycket viktig. Hur den är utformad bestämmer det intuitiva intrycket av sajten, det vill säga om man upplever den som lättillgänglig eller inte. Dessutom ska ju designen stärka varumärket UR.
-###### Vilka webbutvecklingsverktyg använder ni?
+### Vilka webbutvecklingsverktyg använder ni?
– Vi köper inte in stora licensbaserade CMS-system. Flexibilitet är viktigt för oss. Därför föredrar vi öppen källkod. UR.se utnyttjar ett CMS med öppen källkod och den nya playtjänsten bygger vi främst i Ruby on Rails.
-###### Vad jobbar ni med nu?
+### Vad jobbar ni med nu?
– Årets stora satsning är att utveckla en ny playtjänst med förbättrad navigering och möjlighet för användarna att vara med och generera innehåll på sajten. Vi gör också en satsning mot förskolan. Där använder man sig mycket av surfplattor. Det måste vi ta extra hänsyn till både när det gäller funktion och innehåll.
diff --git a/_posts/2015-04-14-datascientist.md b/_posts/2015-04-14-datascientist.md
index 89f53c5..e8a2578 100644
--- a/_posts/2015-04-14-datascientist.md
+++ b/_posts/2015-04-14-datascientist.md
@@ -5,30 +5,35 @@ description: "I huvudet på en datascientist. Möt matematikern som vaskar guld
tags:
- nyhetsbrev
last_updated_by: peter
-image_url: /assets/legacy/uploads/2015/04/mark_small.jpg
+image_url: /assets/img/employees/mark.jpg
---
-### I huvudet på en datascientist. Möt matematikern som vaskar guld i databaser.
+## I huvudet på en datascientist. Möt matematikern som vaskar guld i databaser.
> På nätet lämnar vi spår efter oss som lagras i databaser. I dessa finns värdefull dold kunskap som kan användas för att optimera webbsidor. Mark Ingram berättar om sitt jobb.
-##### Mark, titeln datascientist förekommer allt oftare. Vad gör en sådan egentligen?
+### Mark, titeln datascientist förekommer allt oftare. Vad gör en sådan egentligen?
+
– Det finns flera svar. Jag ser det som en person som med matematikens hjälp kan göra analyser av stora datamängder och hitta dolda mönster. ”Data mining” är ett annat begrepp som ofta förekommer i det här sammanhanget. Det är inte så dumt. Jag ser mig gärna som en guldgrävare som vaskar guld i databaser.
-
+
> – Jag kan enkelt ta reda på om en sajt fungerar bra eller dåligt mot sin tänkta målgrupp, säger Mark Ingram, datascientist på Athega.
-##### Vad har du för utbildning?
-– Jag är matematiker från början, och är även utbildad i datalogi. Tidigare jobbade jag mest med finans och assets; applikationer, servrar, tjänsteavtal, licenser etc. Här på Athega jobbar vi mest med webblösningar. Att utnyttja ”datascience” inom detta område är helt nytt.
+### Vad har du för utbildning?
+
+– Jag är matematiker från början, och är även utbildad i datalogi. Tidigare jobbade jag mest med finans och assets; applikationer, servrar, tjänsteavtal, licenser etc. Här på Athega jobbar vi mest med webblösningar. Att utnyttja ”datascience” inom detta område är helt nytt.
Hur vet man till exempel att en webbsida ger bra resultat? Och om den inte gör det, vad är skälet till det? Det är mitt jobb att besvara sådana frågor.
-##### Hur gör man det i praktiken?
-– Många webbsidor samlar in data om sina besökare med Elasticsearch. Det är ett verktyg som gränsar till artificiell intelligens och gör det möjligt att analysera besökarnas beteenden. Alla lämnar vi ju spår efter oss på nätet som ger ledtrådar. Idag går det att få fram psykologiska och sociologiska samband ur det insamlade materialet.
+### Hur gör man det i praktiken?
+
+– Många webbsidor samlar in data om sina besökare med Elasticsearch. Det är ett verktyg som gränsar till artificiell intelligens och gör det möjligt att analysera besökarnas beteenden. Alla lämnar vi ju spår efter oss på nätet som ger ledtrådar. Idag går det att få fram psykologiska och sociologiska samband ur det insamlade materialet.
Jag kan ganska enkelt räkna ut vilka demografiska grupper (ålder, kön, utbildning, inkomst etc.) som besöker en webbsida och var de befinner sig geografiskt. Med hjälp av A/B-tester och matematisk statistik går det också att se hur bra en sajt fungerar beroende på vilka budskap, färger och bilder som används.
-##### Har du några tekniska hjälpmedel?
-– Jag gillar Apache Mahout. Det är ett matematikpaket i öppen källkod. Programmeringsverktyget Pig är också intressant. Det hanteras med ett eget språk: Pig-Latin. Ett bra statistikpaket är R.
+### Har du några tekniska hjälpmedel?
+
+– Jag gillar Apache Mahout. Det är ett matematikpaket i öppen källkod. Programmeringsverktyget Pig är också intressant. Det hanteras med ett eget språk: Pig-Latin. Ett bra statistikpaket är R.
Men jag vill understryka en sak. Man kan aldrig slumpmässigt börja analysera en stor datamängd och plötsligt se en sanning i den. Först måste alltid en fråga ställas. Den kan sedan omvandlas till en hypotes och testas med matematiska metoder. Fråga - hypotes - test, det är så man måste jobba.
-##### Finns det någon fråga som är central för alla företag?
+### Finns det någon fråga som är central för alla företag?
+
– Företagens webbar är idag spjutspetsen i marknadskommunikationen. Därför borde alla företag ställa sig frågan: pratar vår sajt till rätt målgrupp på rätt sätt? En sådan matematisk check kan jag göra på nolltid. Jag utmanar alla som vill veta sanningen att våga ställa den frågan till mig.
diff --git a/_posts/2015-06-29-appvideotidningar.md b/_posts/2015-06-29-appvideotidningar.md
index 6e36003..c10cea6 100644
--- a/_posts/2015-06-29-appvideotidningar.md
+++ b/_posts/2015-06-29-appvideotidningar.md
@@ -7,34 +7,40 @@ tags:
last_updated_by: peter
image_url: /assets/legacy/uploads/2015/06/larsdbw.jpg
---
-### Läs om hur hybridtänket tar apparna till nya höjder.
+## Läs om hur hybridtänket tar apparna till nya höjder.
> Nya Fotbollskanalen släpptes 4 juni. En grym app som byggdes "by the book". Lars Dahllöf satt i teamet på TV4 och gillade allt med det högambitiösa projektet.
-##### Kan man kalla nya Fotbollskanalen en appvideotidning?
+### Kan man kalla nya Fotbollskanalen en appvideotidning?
– Varför inte? Innehållet i appen byts ut hela tiden, och mycket av innehållet är videosnuttar. När redaktörerna skriver i sitt cms-system så kommer det dom ser på sin skärm se likadant ut i appen inom en timme. Allt ändras dessutom på alla plattformar samtidigt, iOS, Android och webb. Skulle vi göra en native app med samma funktionalitet skulle det ta flera timmar att få ut det i Google Play eller i en Android-app och en vecka i en iOS-app som ska upp på App Store. Så den är snabb som en tidning på webben, fast gjord som en app.

-Athega-konsulten Lars Dahllöf är Symbian-veteran från Sony Ericsson, men nu är det apputveckling som gäller: det är roligast.
+_Athega-konsulten Lars Dahllöf är Symbian-veteran från Sony Ericsson, men nu är det apputveckling som gäller: det är roligast._
+
+### Hur gör man en riktigt bra app?
-##### Hur gör man en riktigt bra app?
– Ribban har helt klart höjts. Funktionerna måste utformas som användarna tänker. Allt måste fungera intuitivt. Interaktionsexperter och designers måste vara med. Färger, branding, flöden, typografi – allt måste stämma. Hög kodkvalitet är förstås superviktigt. Sen behöver man putsa, putsa, putsa.
-##### Du kallar appen en hybridapp, vad är det?
+### Du kallar appen en hybridapp, vad är det?
+
-Det är ett samarbete mellan webb och app kan man säga. Innehållsstrukturen görs i html på en webbsida. När innehållet sen laddas i mobilen används en massa specialfix som gör att appen kan spela upp materialet på rätt sätt. Hybrid-appar är inget nytt, men nya Fotbollskanalen är en mycket ambitiös och snygg hybrid-app.
-##### Vad är nytt i nya Fotbollskanalen?
-– Allt. Logiken, funktionaliteten, innehållet, det grafiska utseendet. TV4 vill fortsätta vara ledande på grafik och funktionalitet i alla sina kanaler både på TV, webb och appar.
+### Vad är nytt i nya Fotbollskanalen?
+
+– Allt. Logiken, funktionaliteten, innehållet, det grafiska utseendet. TV4 vill fortsätta vara ledande på grafik och funktionalitet i alla sina kanaler både på TV, webb och appar.
Appen är byggd enligt modellen ”mobile first” – all design och struktur har skräddarsytts för mobilen och sen skalats upp för att fungera även på desktop. Det har varit ett stort projekt med användarstudier interaktionsdesigners, formgivare och utveckling. Utvecklingsteamet har bestått av fyra utvecklare med specialkunskaper inom Android, iOS, frontend och backend, samt produktägare och testare.
-##### Tänker du fortsätta med apputveckling?
+### Tänker du fortsätta med apputveckling?
+
– Jag är gammal i gamet, utvecklade i Symbian på Sony Ericsson i många år. Har jobbat backend, varit arkitekt, kravställare och även chef. Med det jag tycker är kul är ju att programmera, speciellt appar. Appar är visuellt och lättjobbat, man har koll på allt och kan lösa allt själv. Bygga bra användargränssnitt är också väldigt kul.
-##### Tips till andra som vill göra bra appar?
+### Tips till andra som vill göra bra appar?
+
– Design och interaktion är viktigt. Använd rätt open source, speciellt på Android. Skriv robust och korrekt kod. Gör rätt från början. Sen är det viktigt att alla i teamet reviewar varandra hela tiden så att alla lär sig mer och utvecklas. Och ha kul förstås.
-##### Nå´t mer?
+### Nått mer?
+
– Japp, en grej som är skön numera är att det finns så mycket ny bra open source att använda. Det är smart att våga använda det senaste hela tiden, det lönar sig i längden.
-[http://www.fotbollskanalen.se...](http://www.fotbollskanalen.se)
+[fotbollskanalen.se](https://www.fotbollskanalen.se)
diff --git a/_posts/2015-07-07-datascience.md b/_posts/2015-07-07-datascience.md
index 31ef1a6..922d3dc 100644
--- a/_posts/2015-07-07-datascience.md
+++ b/_posts/2015-07-07-datascience.md
@@ -9,38 +9,34 @@ image_url: /assets/legacy/uploads/2015/07/datascience.png
---
> Jag tänkte skriva lite om data-science, algoritmer, AI, neuronnät och tillämpningar en data scientist kan hjälpa till med. Jag har fått hjälp av våra duktiga data-scientists att sätta ihop detta. //Mats
+## Generella lösningar kräver både domän- och data-science expertis
+Metoder och verktyg som används inom Data-science begränsas inte till specifika områden. Tekniken och algoritmerna är de samma oavsett om det är finansiellt data, besöksstatistik eller CRM-data på försäljning.
-#### Generella lösningar kräver både domän- och data-science expertis
-Metoder och verktyg som används inom Data-science begränsas inte till specifika områden. Tekniken och algoritmerna är de samma oavsett om det är finansiellt data, besöksstatistik eller CRM-data på försäljning.
-
-Dock kan det vara svårt är se möjligheterna utan att vara områdesöverskridande expert inom programmering, statistik, matematik och bransch/domän-expert.
+Dock kan det vara svårt är se möjligheterna utan att vara områdesöverskridande expert inom programmering, statistik, matematik och bransch/domän-expert.
Det går att gruppera expertisen i två delar
-- Vi är experter på programmering, statistik och matematik.
-- Våra kunder är domänexperter på sitt data.
-
+- Vi är experter på programmering, statistik och matematik.
+- Våra kunder är domänexperter på sitt data.
-#### Rollen data-scientist
+### Rollen data-scientist
-En Data-scientist är en utbildad matematiker som är mycket kunnig i statistiska modeller och dataanalys. Självklart ska en data-scientist programmatiskt kunna modulera artificiella neuronnät och kluster samt veta vilka implementationer som ger bästa lösning.
+En Data-scientist är en utbildad matematiker som är mycket kunnig i statistiska modeller och dataanalys. Självklart ska en data-scientist programmatiskt kunna modulera artificiella neuronnät och kluster samt veta vilka implementationer som ger bästa lösning.
> På Athega är en Data-Scientist en senior utvecklare med högre akademisk examen i matematik och statistik.
-
-
-##### Vad levererar en data-scientist?
+### Vad levererar en data-scientist?
De lösningar som en data-scientist kan hjälpa er ta fram jobbar typiskt med stora datamängder(big data) och är effektiva verktyg för att upptäcka komplexa mönster som är svåra, omöjliga eller tidskrävande att identifiera med mer konventionella metoder. Systemen blir ofta en blackbox-lösning för att lösa ett väldigt specifikt problem. Systemen kan vara självlärande i mer eller mindre utsträckning och detta sker ofta på två olika sätt.
Återkoppling från användarna (supervised learning)
Automatisk anpassning till varierande data (unsupervised learning/outlier detection)
-Ni får systemet modulerat, testat och byggt med er expertis på det data som ska behandlas. Detta inkluderar produktionssättning och förvaltningsetablerat på er IT-avdelning. Ni är inblandade som kravställare under hela arbetet.
+Ni får systemet modulerat, testat och byggt med er expertis på det data som ska behandlas. Detta inkluderar produktionssättning och förvaltningsetablerat på er IT-avdelning. Ni är inblandade som kravställare under hela arbetet.
-#### Exempel på användningsområden för finansiella institutioner
+### Exempel på användningsområden för finansiella institutioner
Försöker nedan beskriva olika tillämpningar som är mer eller mindre vedertagna.
-##### Bedrägerikontroll
+#### Bedrägerikontroll
En finansiell institution eller bank monitorerar både kunder och transaktioner för att fånga upp misstänkta bedrägerier tidigt. Att tidigt hitta kunder eller konton som uppförs sig ovanligt genom att använda ett poängsystem/risksystem ger företaget eller myndigheten möjlighet att minska den mängd data som behöver utredas manuellt. Resultatet blir ett indikations-system på potentiella problem. Poster med ovanliga uppföranden rankas en mycket högre risk att vara ett bedrägeri än de som uppför sig som förväntat. Till exempel kan det vara en ovanligt stor pengatransaktion. Det är alltså det avvikande beteendet som ger underlag för närmare utredning. Den närmare utredningen sker ofta manuellt.
@@ -52,34 +48,32 @@ För denna typ av lösningar finns en mängd verktyg tillgängliga. Alla har oli
Som kravställare är ett samarbete med en data-scientist ett bra sätt att komma igång. Vi börjar med att definiera problemställningen och titta på det data som finns. Vi diskuterar hur en prototyp ska fungera. Viktigt är sedan att det finns lämpliga rapporter, GUI eller system för feedback som passar ert sätt att arbeta. Ibland är kanske en färdig programvara, som finns på marknaden, rätt val. Då hjälper våra data-scientists er att välja rätt.
-##### Kvalitetskontroll av affärskritiskt- och regulatoriskt data
+#### Kvalitetskontroll av affärskritiskt- och regulatoriskt data
-Det är både svårt och tidskrävande att avgöra om ursprungsdata från en stor mängd system är rätt. Aggregerade rapporter ska gå till myndigheter och andra kontrollinstanser. Tidsrymden mellan att data skapas i grundsystem till att data ska exponeras på aggregerad nivå krymper hela tiden i och med ökade krav från myndigheter.
+Det är både svårt och tidskrävande att avgöra om ursprungsdata från en stor mängd system är rätt. Aggregerade rapporter ska gå till myndigheter och andra kontrollinstanser. Tidsrymden mellan att data skapas i grundsystem till att data ska exponeras på aggregerad nivå krymper hela tiden i och med ökade krav från myndigheter.
Traditionellt finns larmsystem på specifika delar i processen, leveranser som uteblir eller körningar som misslyckas. Denna övervakning kan vara byggd på hypoteser och specifika problem-fall där fel rapporterats tidigare. Till exempel kan en leverans övervakas genom att en kontroll sker om fil levererats i tid. Kontroll sker om filen går att validera osv.
-###### Data science och kvalitetsmonitorering
+#### Data science och kvalitetsmonitorering
-Att använda data science och algoritmer för kvalitetsmonitorering av denna typ av data är ett spännande område där helt andra och mer avancerad monitorering går att göra. Målet är att tidigt i data-leveransprocessen fånga avvikande och ovanliga värden för att sedan snabbt indikera för kvalitetsansvarig var det finns potentiella problem.
+Att använda data science och algoritmer för kvalitetsmonitorering av denna typ av data är ett spännande område där helt andra och mer avancerad monitorering går att göra. Målet är att tidigt i data-leveransprocessen fånga avvikande och ovanliga värden för att sedan snabbt indikera för kvalitetsansvarig var det finns potentiella problem.
Det går till exempel att låta ett neuron-nät “cruncha” data från transaktionsflöden, bokföringsrörelser, trades, manuella inmatningar, antal och typ av systemändringar från IT, rapporter av incidenter. Kort och gott allt man tror påverkar data-kvaliteten och som går att mäta.
Dessa system identifierar utan ansträngning komplexa mönster i enorma dataset och kan i och med detta, bottom-up, beskriva hur stor risken är att vissa siffror avviker och bör kontrolleras manuellt. Kombinationen av den mönsterletande algoritmen/neuro-nätverket och den seniora ekonomen med sin erfarenhet minskar arbetsbelastning och gör det möjligt att kontrollera och verifiera siffrorna snabbare.
-När verksamhetsdata inkluderas, till exempel change requests och IT-incidenter, går det att empiriskt skapa argument för att driva IT-förändringar/förbättringar på lägre prioriterade system.
+När verksamhetsdata inkluderas, till exempel change requests och IT-incidenter, går det att empiriskt skapa argument för att driva IT-förändringar/förbättringar på lägre prioriterade system.
Vi är experter på programmering, statistik och matematik. Ni är domänexperter på ert data. Tillsammans kan vi skapa konkurrensfördelar genom områdesöverskridande samarbeten.
-
-
diff --git a/_posts/2015-07-16-datascienceweb.md b/_posts/2015-07-16-datascienceweb.md
index c6fa60e..4469444 100644
--- a/_posts/2015-07-16-datascienceweb.md
+++ b/_posts/2015-07-16-datascienceweb.md
@@ -7,45 +7,52 @@ tags:
last_updated_by: peter
image_url: /assets/legacy/uploads/2015/07/ab.png
---
-#### Att testa en hypotes
+## Att testa en hypotes
+
-
+
+
Hypotesprövning innebär att vi först bestämmer oss för vad vi vill testa. Parametern kan vara antal besökare på en sida och hypotesen att en av två versioner av sidan attraherar besökaren mera. Dock vet vi inte vilken version. Tänk en försäljningssida där besökaren ska klicka på en köp-knapp. Hur ska den knappen och texten se ut för att generera mest försäljning? Vi kan testa två versioner av sidan och mäta försäljningen. Allmänt kallas detta A/B testning. Vi testar två olika fall för att se vilket som genererar högst värde av den parameter vi anser är viktig. Fördelningen eller antal procent som aktiveras kallas konverteringsgrad.
> Att genomföra ett statistiskt tillförlitligt A/B test är inte alltid så lätt
-
-##### 1 - Bakgrundsdata
+
+### 1 - Bakgrundsdata
+
Först vill vi samla lite bakgrundsdata. Vad har vi för konverteringsgrad idag? Hur många som klickar på Köp genomför verkligen ett köp? Det är upp till var och en att förbereda sig med relevanta frågeställningar och data runt detta.
-##### 2 - Forma hypotesen
+### 2 - Forma hypotesen
+
Detta gäller för övervakade och kontrollerade A/B tester. Helt enkelt tester där vi själva bestämmer vår hypotes. ”Vi tror att en röd knapp ökar konverteringsgraden”.
-##### 3 - Designa experimentet
+### 3 - Designa experimentet
+
Räkna ut hur länge vi behöver göra testet. Hur mycket data behöver vi för att kunna dra en tillförlitlig slutsats? Det finns kalkylatorer på nätet och olika tillverkare av programvaror för A/B testning har olika uppfattningar. För att bestämma detta krävs en del kunskap om statistik och kunskap om besökarnas mönster. Det går att med olika metoder komma fram till ett lämpligt underlag. Lägg gärna tid på att förstå detta. Det vore olyckligt om testet visar fel resultat pga för kort eller för lång testperiod. Se till att köra hela testet klart innan ni drar några slutsatser om signifikans. Att löpande köra ett A/B test på en sida och då och då titta efter signifikans ökar drastiskt risken för felaktiga slutsatser. Effekterna och hur svårt detta är kommer beskrivas senare i en separat bloggpost.
-##### 4 - Genomför experimentet
+### 4 - Genomför experimentet
+
Sätt upp det innehåll ni vill prova, programmera eller lägg in de script som behövs. Om ni redan har programvaror för detta, starta helt enkelt testet.
-##### 5 - Analysera data
+### 5 - Analysera data
+
Precis som i punkt 3 är det viktigt att man vet vad man gör i detta moment. Statistik är inte helt intuitivt och det är lätt att misstolka data som verkar visa självklara slutsatser. Här kan en data-analytiker eller Data Scientist vara behjälplig med variationsanalys och analys av outliers som påverkar resultatet i olika riktningar. Det är sällan så lätt att det går att dra statistiskt säkerställda slutsatser från medelvärden.
-##### 6 - Slutsats
+### 6 - Slutsats
+
Kommunicera resultatet inklusive tillförlitligheten. Detta är ett svårt men väldigt viktigt moment. Alla inblandade och alla som berörs måste få ett underlag alla förstår. Speciellt tillförlitligheten är svår att kommunicera. Grafiska och visuella förklaringar är bra. En som är duktig på statistik och kan förklara resultatet och konfidensintervall behövs ofta för att inte resultatet ska misstolkas.
-
+## Generella lösningar kräver både domän- och data-science expertis
-#### Generella lösningar kräver både domän- och data-science expertis
-Metoder och verktyg som används inom Data-science begränsas inte till specifika områden. Tekniken och algoritmerna är de samma oavsett om det är finansiellt data, besöksstatistik eller CRM-data på försäljning.
+Metoder och verktyg som används inom Data-science begränsas inte till specifika områden. Tekniken och algoritmerna är de samma oavsett om det är finansiellt data, besöksstatistik eller CRM-data på försäljning.
-#### Rollen data-scientist
+### Rollen data-scientist
-En Data-scientist är en utbildad matematiker som är mycket kunnig i statistiska modeller och dataanalys. Självklart ska en data-scientist programmatiskt kunna modulera artificiella neuronnät och kluster samt veta vilka implementationer som ger bästa lösning.
+En Data-scientist är en utbildad matematiker som är mycket kunnig i statistiska modeller och dataanalys. Självklart ska en data-scientist programmatiskt kunna modulera artificiella neuronnät och kluster samt veta vilka implementationer som ger bästa lösning.
> På Athega är en Data-Scientist en senior utvecklare med högre akademisk examen i matematik och statistik.
-Läs mer om Mark som vaskar guld i databaser
+
Läs mer om Mark som vaskar guld i databaser
@@ -55,9 +62,9 @@ Läs mer om Mark som vaskar guld i databaser
border: 0px solid #bdbdbd;
border-radius: 15px 50px 30px 5px;
background: #F0F0F0;
- padding: 20px;
+ padding: 20px;
width: 50%;
- margin: 0 0 25px;
+ margin: 0 0 25px;
font-size: 16px;
color: Black; font-style: Italic;
overflow: hidden;">
diff --git a/_posts/2015-08-18-gophercon-2015.md b/_posts/2015-08-18-gophercon-2015.md
index 3db0419..7724d60 100644
--- a/_posts/2015-08-18-gophercon-2015.md
+++ b/_posts/2015-08-18-gophercon-2015.md
@@ -18,7 +18,7 @@ Många av talarna (och deltagarna) pratade om förbättringar och ändringar inf
### Dag 1
- Go, Open Source, Community — Russ Cox ([video](https://www.youtube.com/watch?v=XvZOdpd_9tc)) ([text](http://blog.golang.org/open-source))
- - Go kit: A Standard Library for Distributed Programming — Peter Bourgon ([video](https://www.youtube.com/watch?v=1AjaZi4QuGo)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Go%20kit/go-kit.pdf))
+ - Go kit: A Standard Library for Distributed Programming — Peter Bourgon ([video](https://www.youtube.com/watch?v=1AjaZi4QuGo)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Go%20kit/go-kit.pdf))
- Delve Into Go — Derek Parker ([video](https://www.youtube.com/watch?v=InG72scKPd4)) ([slides](http://go-talks.appspot.com/github.com/derekparker/talks/gophercon-2015/delve-into-go.slide))
- How a complete beginner learned Go as her first backend language in 5 weeks — Audrey Lim ([video](https://www.youtube.com/watch?v=fZh8uCInEfw)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Audrey%20Lim%20-%20How%20a%20Complete%20Beginner%20Picked%20Up%20Go%20as%20Her%20First%20Backend%20Language%20in%205%20weeks/audreylim_slides.pdf))
- A Practical Guide to Preventing Deadlocks and Leaks in Go — Richard Fliam ([video](https://www.youtube.com/watch?v=3EW1hZ8DVyw))
diff --git a/_posts/2015-11-30-hackday.md b/_posts/2015-11-30-hackday.md
index 5f53862..342c2b3 100644
--- a/_posts/2015-11-30-hackday.md
+++ b/_posts/2015-11-30-hackday.md
@@ -18,11 +18,13 @@ Flera av oss hade valt spelutveckling med lite olika teknik och målplattformar.
Vi såg också fina exempel på machine learning, Data Science, Apple TV och IoT som Physical Web med Beacons. Dessutom gjordes en Andriodapplikation, som hjälper till när du parkerar, klar för release.
Men det projekt med bäst utformning för demo var ändå det som gjordes med Lego Mindstorms.
+
[https://www.youtube.com/watch?v=SBb7P-RoYLU&feature=youtu.be](https://www.youtube.com/watch?v=SBb7P-RoYLU&feature=youtu.be)
Ni kan studera detaljer, kod och läsa mer om projekten på Athegas GitHub.
+
[https://github.com/athega/acb2015/blob/master/README.md](https://github.com/athega/acb2015/blob/master/README.md)
Håll tillgodo
-Torbjörn Nilsson
+/ [Torbjörn Nilsson](/tobbe)
diff --git a/_posts/2016-01-26-open-maps.md b/_posts/2016-01-26-open-maps.md
index b607fe4..a58029a 100644
--- a/_posts/2016-01-26-open-maps.md
+++ b/_posts/2016-01-26-open-maps.md
@@ -1,6 +1,7 @@
---
title: "Öppna kartor"
date: 2016-01-26
+description: "Lantmäteriet har vid årsskiftet släppt vissa av sina kartor fria som öppen data."
tags:
- öppna data
- kartor
diff --git a/_posts/2016-02-05-isomorfism.md b/_posts/2016-02-05-isomorfism.md
index 5e30c87..070fc16 100644
--- a/_posts/2016-02-05-isomorfism.md
+++ b/_posts/2016-02-05-isomorfism.md
@@ -1,17 +1,21 @@
---
title: "JavaScript och isomorfism med Node och React"
date: 2016-02-05
+description: "Efterfrågan kring erfarenhet av node.js och isomorfiska tillämpningar har fullkomligt exploderat den senaste tiden."
last_updated_by: tobbe
---
> Efterfrågan kring erfarenhet av node.js och isomorfiska tillämpningar har fullkomligt exploderat den senaste tiden.
-Vi kommer därför att satsa på just detta under våra internutbildningssessioner under våren. Vi kör, som vanligt, en fredagseftermiddag (14:00 - ca 16:30) varje månad fram till sommaren.
+Vi kommer därför att satsa på just detta under våra internutbildningssessioner under våren.
+Vi kör, som vanligt, en fredagseftermiddag (14:00 - ca 16:30) varje månad fram till sommaren.
-Christian Lizell, som har praktisk erfarenhet från en av landets största sajter, kommer leda utbildningen. Han kommer använda labbar och material från http://nodeschool.io/, men också bjuda på sina egna erfarenheter.
+[Christian Lizell](/chrille), som har praktisk erfarenhet från en av landets största sajter, kommer leda utbildningen.
+Han kommer använda labbar och material från
, men också bjuda på sina egna erfarenheter.
+
+### Exempel på Innehåll:
-### Exempel på Innehåll:
* Server side Javascript
* node.js, io.js
* v0.13, v4, v5?
@@ -29,10 +33,11 @@ Christian Lizell, som har praktisk erfarenhet från en av landets största sajte
* Phantomjs
### Tillfällen under våren
+
- 2016-02-26 14:00 - ca 16:30
- 2016-03-18 14:00 - ca 16:30
- 2016-04-15 14:00 - ca 16:30
- 2016-05-20 14:00 - ca 16:30
-Alla är välkomna i mån av plats men vi prioriterar medlemmar i konsultnätverket.
+Alla är välkomna i mån av plats men vi prioriterar medlemmar i konsultnätverket.
Kontakta Torbjörn Nilsson om du vill delta eller har frågor.
diff --git a/_posts/2016-03-10-qconlondon-2016-take-aways.md b/_posts/2016-03-10-qconlondon-2016-take-aways.md
index dba8567..d912d69 100644
--- a/_posts/2016-03-10-qconlondon-2016-take-aways.md
+++ b/_posts/2016-03-10-qconlondon-2016-take-aways.md
@@ -1,6 +1,7 @@
---
title: "QCon London 2016 – Take aways"
date: 2016-03-10
+description: "I denna artikel ska jag så kort jag kan redogöra för hur de här tre dagarna påverkat min omedelbara framtid. Eller mindre pretantiöst, vad jag ska prova härnäst och titta litet närmare på."
tags:
- konferens
last_updated_by: chrille
diff --git a/_posts/2016-03-21-kafka-buzz-pa-qcon-london.md b/_posts/2016-03-21-kafka-buzz-pa-qcon-london.md
index db7b27b..c0f9558 100644
--- a/_posts/2016-03-21-kafka-buzz-pa-qcon-london.md
+++ b/_posts/2016-03-21-kafka-buzz-pa-qcon-london.md
@@ -1,20 +1,21 @@
---
title: "Kafka-buzz på Qcon London"
date: 2016-03-21
+description: "En sak som slog mig var hur mycket buzz det var kring Apache Kafka."
tags:
- kafka
- konferans
last_updated_by: mikael
---
-#Apache Kafka buzz på Qcon London
-
Det har gått ett tag sedan [Qcon London](http://qconlondon.com) avslutades. Konferensen hade ett massivt innehåll och Christian har sammanfattat mycket av det som var bra [här](http://athega.se/blogg/2016/03/10/qconlondon-2016-take-aways)
-En sak som slog mig var hur mycket buzz det var kring [Apache Kafka](http://kafka.apache.org/). Kafka nämndes i flera föreläsningar, i flera olika spår, antingen direkt, som i [Ben Stopford](https://qconlondon.com/presentation/microservices-streaming-world) och [Martin Kleppmann](https://qconlondon.com/presentation/staying-sync-transactions-streams)s föreläsningar, eller indirekt som när Netflix och Uber beskrev sina respektive arkitekturer där Kafka har en central roll.
+En sak som slog mig var hur mycket buzz det var kring [Apache Kafka](http://kafka.apache.org/). Kafka nämndes i flera föreläsningar, i flera olika spår, antingen direkt, som i [Ben Stopford](https://qconlondon.com/presentation/microservices-streaming-world)
+och [Martin Kleppmanns](https://qconlondon.com/presentation/staying-sync-transactions-streams) föreläsningar, eller indirekt som när Netflix och Uber beskrev sina respektive arkitekturer där Kafka har en central roll.
+
+### Vad är då Kafka?
-##Vad är då Kafka?
Det korta svaret är att Kafka är ett meddelande-system designat som en distribuerad logg. Fokus är lagd på stora mängder trafik, [hög prestanda](https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines) och feltolerans. Om man är intresserad av att gå på djupet så är självklart den officiella [dokumentationen](http://kafka.apache.org/documentation.html) bäst.
Qcon-buzzet har definitivt väckt mitt intresse och nästa gång jag är i behov av ett meddelande-system kommer jag garanterat att undersöka Kafka närmare.
-/ [Mikael](http://athega.se/mikael)
+/ [Mikael](/mikael)
diff --git a/_posts/2016-03-26-bland-lyktstolpar-och-grafdatabaser-i-london.md b/_posts/2016-03-26-bland-lyktstolpar-och-grafdatabaser-i-london.md
index 6ae0c7f..4be7f94 100644
--- a/_posts/2016-03-26-bland-lyktstolpar-och-grafdatabaser-i-london.md
+++ b/_posts/2016-03-26-bland-lyktstolpar-och-grafdatabaser-i-london.md
@@ -1,6 +1,7 @@
---
title: "Bland lyktstolpar och grafdatabaser i London"
date: 2016-03-26
+description: "Efter en grym konferens så är det dags att samla tankarna."
last_updated_by: alex
---
Efter en grym konferens så är det dags att samla tankarna.
diff --git a/_posts/2016-04-07-UR-vann-tavling-i-webbprestanda.md b/_posts/2016-04-07-UR-vann-tavling-i-webbprestanda.md
index a03a590..296b3cb 100644
--- a/_posts/2016-04-07-UR-vann-tavling-i-webbprestanda.md
+++ b/_posts/2016-04-07-UR-vann-tavling-i-webbprestanda.md
@@ -8,18 +8,25 @@ tags:
last_updated_by: peter
image_url: /assets/legacy/uploads/2016/04/urskola.jpg
---
-##ur.se (numera urskola.se) laddar klart på 610 millisekunder. Det räckte för att vinna Sveriges största tävling i webbprestanda.
+
+### ur.se (numera urskola.se) laddar klart på 610 millisekunder. Det räckte för att vinna Sveriges största tävling i webbprestanda.
> Internetworld har sedan 1997 utsett de främsta svenska webbplatserna i 17 kategorier. Testföretaget Apica mätte upp- och svarstiderna på alla nominerade sajter på Topp100-listan. Vi ringde upp Athega-konsulten Johan Beronius och URs projektledare Arvid Krantz.
### _Johan, klassisk fråga, hur känns det?_
+
– Det känns förstås riktigt bra för mig och alla i teamet. Jag har varit med och byggt en stor del av URs webbplats och haft tid att optimera den parallellt med att den utvecklats. Nu när sajten uppmärksammas i media är det kul för alla inblandade.
-
+
+
_Athegas Johan Beronius är expert på optimering av webbplatser och framhåller att det inte bara är prestanda som är viktigt – även tillgängligheten behöver optimeras._
### _Arvid, grattis till priset, hur ser den närmaste framtiden ut för ur.se?_
+
– Vi kommer fortsätta förbättra och utveckla sajten på samma sätt som tidigare. Vi har en stadig och stor ökning av trafik som kommer med förväntningar och ställer höga krav på kvalitet. En utmaning men samtidigt naturligtvis väldigt roligt.
### _Hur ser ni allmänt på behovet av optimering?_
-– Jag är övertygad om att bra prestanda är viktigare än någonsin för alla sajter, inte minst på grund av det ökande mobilsurfandet. Användarna kanske inte förstår skillnaden men undermedvetet registrerar de förhoppningsvis att vår sajt fungerar som alla andra borde fungera. Man kan tycka att näten blir allt bättre och att responstider spelar mindre roll, men i praktiken har vi av samma anledning mindre tålamod och tar något för lång tid klickar man vidare. I ett klassrum med lite skakig uppkoppling fungerar vår sajt när andra sajter inte ens börjat ladda. Det hoppas jag märks och kan vara en del i den ökande återkommande trafiken till våra webbplatser.
+
+– Jag är övertygad om att bra prestanda är viktigare än någonsin för alla sajter, inte minst på grund av det ökande mobilsurfandet. Användarna kanske inte förstår skillnaden men undermedvetet registrerar de förhoppningsvis att vår sajt fungerar som alla andra borde fungera. Man kan tycka att näten blir allt bättre och att responstider spelar mindre roll, men i praktiken har vi av samma anledning mindre tålamod och tar något för lång tid klickar man vidare.
+
+I ett klassrum med lite skakig uppkoppling fungerar vår sajt när andra sajter inte ens börjat ladda. Det hoppas jag märks och kan vara en del i den ökande återkommande trafiken till våra webbplatser.
diff --git a/_posts/2016-08-18-Till-vad-anvander-man-ett-Hadoopkluster-till.md b/_posts/2016-08-18-Till-vad-anvander-man-ett-Hadoopkluster-till.md
index 1e9f58c..1e4efa9 100644
--- a/_posts/2016-08-18-Till-vad-anvander-man-ett-Hadoopkluster-till.md
+++ b/_posts/2016-08-18-Till-vad-anvander-man-ett-Hadoopkluster-till.md
@@ -1,10 +1,12 @@
---
title: "Till vad använder man ett Hadoopkluster?"
date: 2016-08-18
+description: "Här är en liten översikt över Hadoop för att diskutera den övertro och förvirring som finns kring dess användning."
last_updated_by: peter
---
-##Ett försök att identifiera typiska användningsfall för ett Hadoopkluster
-Här är en liten översikt över Hadoop för att diskutera den övertro och förvirring som finns kring dess användning. Jag hoppas det ger er en intressant läsning och överblick.
+### Ett försök att identifiera typiska användningsfall för ett Hadoopkluster
+
+> Här är en liten översikt över Hadoop för att diskutera den övertro och förvirring som finns kring dess användning. Jag hoppas det ger er en intressant läsning och överblick.

@@ -12,29 +14,28 @@ Hadoop är ett högpresterande datorkluster som fungerar som en enhet. Det betyd
Självklart låter detta mycket spännande men frågan är hur ditt Hadoopkluster faktiskt kan leverera önskat affärsvärde.
-Hadoop har blivit lite synonymt med analys och Big-data vilket jag skulle säga är en liten överdrift.
+Hadoop har blivit lite synonymt med analys och Big-data vilket jag skulle säga är en liten överdrift.
Hadoop använder sig av likväl strukturerad som ostrukturerad data. Den kan hantera enorma mängder data i terabyteklassen och lagra datat tills det ska analyseras. Då kan man använda sig av Hadoops stora utbud av kodkomponenter för exempelvis maskininlärning.
-Företag som önskar sig ett datorkluster med Hadoop bör tänka igenom olika alternativ. Ja, för det det finns flera bra alternativa datorklusterlösningar som i vissa fall kan vara mer passande. Jag kommer inte att gå på dessa i denna post.
+Företag som önskar sig ett datorkluster med Hadoop bör tänka igenom olika alternativ. Ja, för det det finns flera bra alternativa datorklusterlösningar som i vissa fall kan vara mer passande. Jag kommer inte att gå på dessa i denna post.
Eftersom Hadoop är öppen källkod kan den uppfattas som kostnadsfri, men sanningen är att kostnaden finns gömd i underhåll och utveckling.
-Kostnadskontroll bygger på planering och förståelse av de många spännande källkodskomponenter som eldsjälar har bidragit med. Självklart ska man förstå sin egna affärsbehov och Hadoops begränsningar.
+Kostnadskontroll bygger på planering och förståelse av de många spännande källkodskomponenter som eldsjälar har bidragit med. Självklart ska man förstå sin egna affärsbehov och Hadoops begränsningar.
Jag har försökt beskriva några användarfall lämpliga för Hadoop-datorkluster och hittat komponenter och kunskap som kan behövas.
-Till exempel
+## Till exempel
- Kostnadseffektiv datalagring på befintliga maskiner
-
- Driva utvecklingen framåt genom disruptiv innovation och användning av Hadoop
-
- Hitta datan du söker efter såsom “nålen i höstacken”
-##Bakgrundshistoria
-Hadoop var i sin linda en lösning till Yahoos sökmotorteknik.
+## Bakgrundshistoria
+
+Hadoop var i sin linda en lösning till Yahoos sökmotorteknik.
2006 arbetade Doug Cutting på Yahoo med deras webbsöksteknik kallad Nutch. Doug kopplade samman Yahoos Nutch-teknik med kunskap av Googles Filsystem och publikationer kring Map Reduce. Det blev Hadoop (namnet Hadoop kommer från Dougs barns leksakselefant) och han släppte Hadoop som öppen källkod under Apache Software Foundation.
> “Everyone had something that pretty much was like MapReduce because we were all solving the same problems. We were trying to handle literally billions of web pages on machines that are probably, if you go back and check, epsilon more powerful than today’s cell phones. … So there was no option but to latch hundreds to thousands of machines together to build the index. So it was out of desperation that MapReduce was invented.” – Doug
@@ -43,44 +44,52 @@ Min tolkning och översättning av detta är som följer:
Vi alla hade samma utmaningar. Bokstavligen miljarder av webbsidor att granska maskinellt med datorer som var endast något kraftfullare än dagens mobiler. Därav fanns det inget annat val än att koppla ihop och indexera hundra miljoner maskiner. Det var ur detta kaos och den komplexitet som MapReduce och därmed Hadoop skapades som en nödlösning.
-Även om Hadoop har funnits i åratal är tekniken fortfarande ny och utvecklas i snabb takt. Den är komplex och svår att får ett helhetsgrepp om.
+Även om Hadoop har funnits i åratal är tekniken fortfarande ny och utvecklas i snabb takt. Den är komplex och svår att får ett helhetsgrepp om.
Är den det “allt i allo” och parallellkluster som den anses vara? Det är den frågan vi ska försöka svara på.
-##När ska man använda Hadoop?
-Enkelt svarat, när man undersöker stora datamängder i terabytesklassen.
+## När ska man använda Hadoop?
+
+Enkelt svarat, när man undersöker stora datamängder i terabytesklassen.
+
+### Användarfall 1
+#### Kostnadseffektiv datalagring på befintliga maskiner
-##Användarfall 1
-###Kostnadseffektiv datalagring på befintliga maskiner
Väl fungerande och kostnadseffektiv datalagring kan lätt åstadkommas med hjälp av en HDFS (Hadoop distributed file system).
Vi ser hur kunder testar olika effektiva datalagringslösningar på deras befintliga maskinpark. En vanlig kompletterande teknik är Apache Thrift som tillåter användning av ens favorit programmeringsspråk gentemot Hadoop.
-##Användarfall 2
-###Sänk kostnaden för din befintliga databaslösning genom disruptiv innovation
+### Användarfall 2
+
+#### Sänk kostnaden för din befintliga databaslösning genom disruptiv innovation
+
Genom den omdiskuterade processen disruptiv innovation skapas alternativ till dagens omfattande och kostsamma databas- och data-warehouselösningar.
-För mig är just detta användarfall en förklaring till det något överraskande stora utbudet av SQL-tekniker på Hadoop. Överraskande därför att MapReduce-tekniken som Hadoop bygger på är en begränsande teknik: Det finns flera andra möjliga parallella arkitekturer och angreppssätt. Därmed är Hadoop inte ett självklart val för parallella sökningar i stora datamängder.
+För mig är just detta användarfall en förklaring till det något överraskande stora utbudet av SQL-tekniker på Hadoop. Överraskande därför att MapReduce-tekniken som Hadoop bygger på är en begränsande teknik: Det finns flera andra möjliga parallella arkitekturer och angreppssätt. Därmed är Hadoop inte ett självklart val för parallella sökningar i stora datamängder.
+
+Import av befintligt data till en Hadoop databas underlättas av Apache sqoop. Därefter kan man använda sig av t.ex. Apache hive eller programmera i språket Pig Latin för att utföra sökningar i datat. För att komma igång med Apache hive räcker det med kunskaper och erfarenheter av SQL .
+Pig Latin å andra sidan är tekniskt mer komplicerat i och med att sökningen av data är beroende av hur datat är strukturerad, med andra ord är språket lite “pillrigt” och det är svårt att felsöka. Med det sagt är Pig Latin värt besväret då man verkligen vill dra nytta av Hadoops totala kapacitet och möjligheter.
-Import av befintligt data till en Hadoop databas underlättas av Apache sqoop. Därefter kan man använda sig av t.ex. Apache hive eller programmera i språket Pig Latin för att utföra sökningar i datat. För att komma igång med Apache hive räcker det med kunskaper och erfarenheter av SQL .
-Pig Latin å andra sidan är tekniskt mer komplicerat i och med att sökningen av data är beroende av hur datat är strukturerad, med andra ord är språket lite “pillrigt” och det är svårt att felsöka. Med det sagt är Pig Latin värt besväret då man verkligen vill dra nytta av Hadoops totala kapacitet och möjligheter.
+### Användarfall 3
+#### Hitta nålen i höstacken
-##Användarfall 3
-###Hitta nålen i höstacken
-Användarfall 3 förklarar Hadoops nuvarande popularitet och plats som den mest omtalade analysmiljön för företag.
+Användarfall 3 förklarar Hadoops nuvarande popularitet och plats som den mest omtalade analysmiljön för företag.
Här hittar vi spännande lösningar som maskininlärning och andra så kallade Big-data funktioner. Här krävs djupare kunskap om både Hadoop-miljön och de matematiska principerna man använder sig av.
-##Användarfall 4
-###Batchkörningar
+### Användarfall 4
+#### Batchkörningar
+
Hadoops ursprungliga syfte som satsvis bearbetning genom batchkörningar. Det är Hadoop mycket väl lämpat för till exempel omfattande ETL (extrahera, transformera och ladda data) och liknande.
Batchkörningar är inte lika hett och spännande som Big-data funktionerna som nämnts ovan i användarfall 3. Men batchkörningar är och förblir arbetshästen i de flesta företag än idag.
-Apache thrift och Avro är komponenter som hjälper till och tillåter att man använder sig av sitt favoritprogrammeringsspråk. Det är ett stort plus gällande underhåll och att börja utforska Hadoop-världen.
+Apache thrift och Avro är komponenter som hjälper till och tillåter att man använder sig av sitt favoritprogrammeringsspråk. Det är ett stort plus gällande underhåll och att börja utforska Hadoop-världen.
+
+## Kunskap är nyckeln
-##Kunskap är nyckeln
Det är möjligt att installera och underhålla ett eget Hadoop-kluster och komponentbibliotek men det kräver orimligt mycket tid. En bättre lösning är att utnyttja standardlösningar från företag som väljer ut och paketerar mjukvaror. Hortonworks och Cloudera erbjuder sina egna snarlika Hadoops standardlösningar och kundsupport. Dessa två och andra analys- och Big-dataföretag (baserade på annat teknik) konkurrerar hårt i denna tillväxtmarknad.
-##Vilka är de stora företagen inom Hadoop och hur tjänar de pengar?
+## Vilka är de stora företagen inom Hadoop och hur tjänar de pengar?
+
Hortonworks och Cloudera säljer Hadoop-relaterade IT-tjänster på en prenumerationsbasis. Med andra ord är Hadoops komplexitet en affärsidé även om koden i själva verket är open source och gratis.
Vi arbetar med Hortonworks suveräna virtuella maskiner för träning och utveckling som stöd för era Hadoop-lösningar.
-Vi tar gärna emot era frågor kring Hadoop eller andra parallellsystem liksom HPC (hög prestanda datorlösningar) då vi även har erfarenhet av andra parallella ramverk.
+Vi tar gärna emot era frågor kring Hadoop eller andra parallellsystem liksom HPC _(hög prestanda datorlösningar)_ då vi även har erfarenhet av andra parallella ramverk.
-/Mark
+/ [Mark](/mark)
diff --git a/_posts/2016-11-08-Codebase-Athegas-Hackday.md b/_posts/2016-11-08-Codebase-Athegas-Hackday.md
index 4bbce82..fab9b47 100644
--- a/_posts/2016-11-08-Codebase-Athegas-Hackday.md
+++ b/_posts/2016-11-08-Codebase-Athegas-Hackday.md
@@ -1,6 +1,7 @@
---
title: "Codebase 2016 (Athegas Hackday)"
date: 2016-11-08
+description: "Traditionsenligt arrangerade vi vår Codebase på hösten, men två saker var lite annorlunda i år."
tags:
- codebase 2016 athegas hackday
last_updated_by: johan
@@ -10,26 +11,25 @@ last_updated_by: johan
Traditionsenligt arrangerade vi vår Codebase på hösten, men två saker var lite annorlunda i år. Det första var att vi inte badade i bräckt vatten i Östersjön utan vi besökte Friiberghs Herrgård i Mälaren (Grodhavet). Kontrasten är stor mellan Ålandshav och Ekoln men båda miljöerna lämpar sig för kreativt arbete i annorlunda miljö. Ett tydligt avbräck från vardagen.
Den andra skillnaden var att det flesta jobbade med ett gemensamt projekt som påbörjats tidigare i samband med våra gemensamma athegafredagar. Syftet är att renovera och förnya de kreativa lösningar vi använder på vår jullunch. Funktioner från inbjudan, genomförande av lunchen till uppföljning.
-Peter jobbade hårt på serversidan med en meddelandebuss. Han satte upp NATS streaming och skrev en proxy för HTTP till NATS. Proxyn utvecklades i Go och har stöd för att leverera meddelande som Server-Sent Events (SSE) till browserbaserade klienter.
+Peter jobbade hårt på serversidan med en meddelandebuss. Han satte upp NATS streaming och skrev en proxy för HTTP till NATS.
+Proxyn utvecklades i Go och har stöd för att leverera meddelande som Server-Sent Events (SSE) till browserbaserade klienter.
-Mikael jobbade med presentation av livestatistik. Han konsumerar
-Server-Sent Events (https://www.html5rocks.com/en/tutorials/eventsource/basics/) och med hjälp av dessa renderar han bubbelgrafer med D3.js (https://d3js.org/).
+Mikael jobbade med presentation av livestatistik. Han konsumerar
+Server-Sent Events (https://www.html5rocks.com/en/tutorials/eventsource/basics/) och med hjälp av dessa renderar han bubbelgrafer med D3.js (https://d3js.org/).
I takt med att händelser av en viss typ anländer till webbklienten så växer eller krymper de olika bubblorna.
-Torbjörn och Mats bygger bygger ljuseffekter till en fysisk inloggningsportal som ska användas när gästerna ankommer till lunchen. De använder Led-lampor från Neopixel som de styr med hjälp av en Tessel och tar fram lämpliga effekter som kan triggas av ankomsthändelser som fotografering av deltagaren. Tessel är en hårdavuutvecklingsplatform (IoT) som kan programmeras med Javascript och Node API:er. Händelser konsumeras via Server-Sent Events.
+Torbjörn och Mats bygger bygger ljuseffekter till en fysisk inloggningsportal som ska användas när gästerna ankommer till lunchen. De använder Led-lampor från Neopixel som de styr med hjälp av en Tessel och tar fram lämpliga effekter som kan triggas av ankomsthändelser som fotografering av deltagaren. Tessel är en hårdavuutvecklingsplatform (IoT) som kan programmeras med Javascript och Node API:er. Händelser konsumeras via Server-Sent Events.
Chistian jobbade mycket med den nya Tesselplattformen, Tessel2 och den delen som sköter incheckningar med RFID-kort. Han fixar även serversidan med både webbgränssnitt samt lagring av incheckningsdata.
-Alex bygger en stämningsmätare och använder en Tessel 1 med ambient- & servo-modulen. Genom ambientmodulen får han data om ljudnivån i rummet. Datat som avspeglar ljudnivån styr ett servo. Servot flyttar på en arm över en mätartavla. Tesseln skickar även datat över Peters lösning och vi kan utnyttja informationen i våra presentationer som rullar under lunchen.
+Alex bygger en stämningsmätare och använder en Tessel 1 med ambient- & servo-modulen. Genom ambientmodulen får han data om ljudnivån i rummet. Datat som avspeglar ljudnivån styr ett servo. Servot flyttar på en arm över en mätartavla. Tesseln skickar även datat över Peters lösning och vi kan utnyttja informationen i våra presentationer som rullar under lunchen.
-Krister kommer se till vi tar en bra bild av varje deltagare. Han labbar med C++, OpenCV, cnats och curl.
+Krister kommer se till vi tar en bra bild av varje deltagare. Han labbar med C++, OpenCV, cnats och curl.
Johan bygger dynamiska presentationsbilder som ska snurra och visas på skärmar under lunchen med livestatistik. Hans bildsnurra består av HTML, Javascript med jQuery, CSS med animeringar och webb API:et EventSource för att reagera på NATS-flödet av händelser.
-
VIDEO
-
-Mattias bygger en legorobot som spelar på en Pocket operators. Det blir den bästa demon.
+Mattias bygger en legorobot som spelar på en Pocket operators. Det blir den bästa demon.
Vi hade en väldigt lyckad och trevlig Codebase och ser fram emot nästa.
diff --git a/_posts/2017-02-16-Kreativ-programmering.md b/_posts/2017-02-16-Kreativ-programmering.md
index 9408a22..6ce823b 100644
--- a/_posts/2017-02-16-Kreativ-programmering.md
+++ b/_posts/2017-02-16-Kreativ-programmering.md
@@ -63,4 +63,4 @@ Det är kreativiteten som är det viktiga!
Kolla gärna in presentationen och några av de skapelser detta resulterade i som finns länkade här bredvid.
Och varför inte testa själv?
-**_/Johan._**
+/ [Johan](/johan)
diff --git a/_posts/2017-03-16-lar-dig-uttala-vuejs.md b/_posts/2017-03-16-lar-dig-uttala-vuejs.md
index d662f30..2c356fe 100644
--- a/_posts/2017-03-16-lar-dig-uttala-vuejs.md
+++ b/_posts/2017-03-16-lar-dig-uttala-vuejs.md
@@ -22,10 +22,9 @@ Det speciella med Vue är att det har en väldigt kort komma igång-tröskel
och litet i sin kärna. Med endast 18kb hämtat via en `
+## Se på detta exempelvis:
+
På några få rader har vi en reaktiv sida som hanterar inmatning från och
interaktion med användaren.
diff --git a/_posts/2017-04-10-internutbildning-om-go.md b/_posts/2017-04-10-internutbildning-om-go.md
index 67f1e7e..7437404 100644
--- a/_posts/2017-04-10-internutbildning-om-go.md
+++ b/_posts/2017-04-10-internutbildning-om-go.md
@@ -1,6 +1,7 @@
---
title: "Internutbildning om Go"
date: 2017-04-10
+description: "Ämnet för månadens internutbildning var Go, det språk jag har fokuserat mest på under de senaste åren."
tags:
- internutbildning
- go
diff --git a/_posts/2017-05-23-react-native-from-an-ios-perspective.md b/_posts/2017-05-23-react-native-from-an-ios-perspective.md
index c47a62c..0e6bf92 100644
--- a/_posts/2017-05-23-react-native-from-an-ios-perspective.md
+++ b/_posts/2017-05-23-react-native-from-an-ios-perspective.md
@@ -1,6 +1,7 @@
---
title: "React Native och iOS-säkerhet"
date: 2017-05-23
+description: "Månadens internutbildning handlade om React Native utifrån ett iOS perspektiv."
tags:
- internutbildning
- react-native
@@ -14,7 +15,7 @@ Månadens internutbildning handlade om [React Native](https://facebook.github.io
React Native är Facebooks lösning för att skriva mobilappar med JavaScript för både iPhone och Android. React Native släpptes som öppen källkod 2015 och är en utbyggnad av [React](https://facebook.github.io/react/) för webutveckling, som i sin tur presenterades 2013. React Native är som React, men använder inbyggda komponenter istället för webbkomponenter som byggstenar. Så för utveckling gentemot iPhone är en del problem och lösningar desamma som vid utveckling med Apples egna språk och tekniker i Xcode.
-Vi bekantade oss med utvecklingsmiljön och följde sedan en av de [tutorials](https://facebook.github.io/react-native/releases/0.23/docs/tutorial.html) som finns på React Natives hemsida. En del ändringar behövdes för att få den att köra med senaste versionen av Xcode, React Native, iOS och Android.
+Vi bekantade oss med utvecklingsmiljön och följde sedan en av de [tutorials](https://facebook.github.io/react-native/releases/0.23/docs/tutorial.html) som finns på React Natives hemsida. En del ändringar behövdes för att få den att köra med senaste versionen av Xcode, React Native, iOS och Android.
På vägen gick vi igenom hur Apples Xcode ställs in för de förändringar som kommit med de senaste iOS versionerna: *[App Transport Security](https://forums.developer.apple.com/thread/6767)* och *[Code Signing](https://developer.apple.com/support/code-signing/)*.
diff --git a/_posts/2020-09-25-Spelutveckling-med-Phaser.md b/_posts/2020-09-25-Spelutveckling-med-Phaser.md
index edb3989..239f507 100644
--- a/_posts/2020-09-25-Spelutveckling-med-Phaser.md
+++ b/_posts/2020-09-25-Spelutveckling-med-Phaser.md
@@ -24,6 +24,7 @@ Denna gång utmanade vi oss själva att snabbt bygga ihop enkla spel som går at
### Phaser
+
Phaser är ett ramverk som gör det snabbt att komma igång att skapa ett spel. Har man bara koll på grunderna inom webbutveckling, framför allt JavaScript, är det enkelt att börja med.
Phaser fungerar i alla moderna webbläsare, både mobil och desktop, men även i de något äldre då den ser till att grafiken körs på WebGL alternativt Canvas och ljudet på Web Audio alternativt HTML Audio beroende på vad som stöds.
Det finns ett stort API att gräva i med funktioner för sprites, animationer, partiklar, fysik med mera. Det gör att koden man skriver för att styra ramverket blir ganska deklarativ och därmed inte nödvändigtvis allt för avancerad.
@@ -37,6 +38,7 @@ Det finns ett stort API att gräva i med funktioner för sprites, animationer, p
### Utmaningen
+
Vi delade in oss i lag om två-och-två. Det var som sagt ingen tung JavaScript-programmering det handlade om, men en fördel om någon i laget är bekväm med det ändå.
Annars ligger tonvikten på inspiration och kreativitet, att komma på vad man vill skapa är grundförutsättningen.
Eftersom en annan förutsättning var att det skulle gå fort, några timmmar på en eftermiddag bara, ville vi undvika att fastna på något. Därför utgick vi från en tutorial om 10 steg som man kunde bygga vidare på.
@@ -51,6 +53,7 @@ Ett förslag var att tänka på enkla, klassiska spel som t.ex. Pong, Asteroids
### Tävlingen
+
Efter att momentet med att skapa spelen var avklarat var tanken att alla skulle få en chans att slå high-score på de andras spel, men någon fullständig turnering hanns tvärr inte med.
Däremot delades det ut guldstjärnor för prestationer som att färdigställa ett spelbart spel, lägga till egen grafik och musik samt bonuspoäng till favoriter.
@@ -64,4 +67,4 @@ Vi hade kul både med att koda och att spela. Några av spelen det resulterade i
Spring med höger/vänster-piltangent och hoppa med uppåtpil.
-**_/Johan._**
+/ [Johan](/johan)
diff --git a/_posts/2020-10-02-worldseed.md b/_posts/2020-10-02-worldseed.md
index a58d78c..998f04e 100644
--- a/_posts/2020-10-02-worldseed.md
+++ b/_posts/2020-10-02-worldseed.md
@@ -28,8 +28,9 @@ Vi är väldigt glada över spelets varma mottagande. Några citat från recensi
> “This game is AMAZING if you like any of its tags just get it.”
-Athega har nu ingått ett aktivt samarbete och delägarskap i Ape Egg. Samarbetet innebär att spelet kommer vidareutvecklas med nytt innehåll och förbättrad
-spelupplevelse. Målet är också att spelet ska få fler användare.
+Athega har nu ingått ett aktivt samarbete och delägarskap i Ape Egg.
+Samarbetet innebär att spelet kommer vidareutvecklas med nytt innehåll och förbättrad
+spelupplevelse. Målet är också att spelet ska få fler användare.
Det är strategiskt viktigt för Athega att utöka sitt utbud med ett tungt kunnande inom
spelutveckling. Detta kompletterar Athegas nuvarande erbjudande och kompetens inom digital
diff --git a/_posts/2020-10-23-vi-gar-pa-bio.md b/_posts/2020-10-23-vi-gar-pa-bio.md
index 21944cb..95ee88c 100644
--- a/_posts/2020-10-23-vi-gar-pa-bio.md
+++ b/_posts/2020-10-23-vi-gar-pa-bio.md
@@ -5,23 +5,26 @@ description: "Vi besöker biografen Victoria på Södermalm i en egen biosalong"
tags:
- nyhetsbrev
- blogg
-
+
last_updated_by: Torbjörn
image_url: /assets/blog/2020-athega-Victoria.jpg
---
-**Vi går på bio**
+## Vi går på bio
-Den härliga biografen Victoria på Södermalm har ett tillfälligt erbjudande att hyra en biosalong för ett mycket överkomligt pris. Jag tog cykeln dit från Kungsholmen med sadelväskan tyngd av kyld dryck och en avklarad beställning av hamburgare med leverans direkt till bion.
+Den härliga biografen Victoria på Södermalm har ett tillfälligt erbjudande att hyra en biosalong för ett mycket överkomligt pris.
+Jag tog cykeln dit från Kungsholmen med sadelväskan tyngd av kyld dryck och en avklarad beställning av hamburgare med leverans direkt till bion.
Där mötte jag upp kollegor, som hade med sig en cocktail av teknik, som man kan prova i en biografprojektor. Målet var att spela lite TV-spel och sedan titta på en film.
-Det började med en härlig MacGyver-inspirerad session där vi tillsammans med den mycket hjälpsamma biografoperatören, testade alla möjligheter med en biografprojektor.
-*Går det t.ex. att streama en film i HD med telefonen? Ja, helt sanlös upplevelse!*
+Det började med en härlig MacGyver-inspirerad session där vi tillsammans med den mycket hjälpsamma biografoperatören, testade alla möjligheter med en biografprojektor.
+
+> Går det t.ex. att streama en film i HD med telefonen? Ja, helt sanlös upplevelse!
+
Vi hann också med att prova Star Wars Battelfront i onödigt stort format.
Det var en lyckad kväll i goda vänners sällskap med bra distans.
-/Torbjörn
+/ [Torbjörn](/tobbe)
diff --git a/_posts/2021-05-20-En-statsminister-med-500-streck.md b/_posts/2021-05-20-En-statsminister-med-500-streck.md
index 97ed872..4137e0f 100644
--- a/_posts/2021-05-20-En-statsminister-med-500-streck.md
+++ b/_posts/2021-05-20-En-statsminister-med-500-streck.md
@@ -6,7 +6,7 @@ tags:
- ai
- nyhetsbrev
- blogg
-
+
last_updated_by: Torbjörn
image_url: /assets/blog/2019-stefan_500_streck.jpg
---
@@ -17,7 +17,7 @@ image_url: /assets/blog/2019-stefan_500_streck.jpg
-Innan påsken höll jag en presentation om Reinforcement Learning (RL) på Luleå Science park. Kanske inte helt oväntat så föll jag ner i många djupa hål på Wikipedia under arbetet med att sammanställa materialet och kanske helt väntat så rymdes inte ens bråkdel i presentationen.
+Innan påsken höll jag en presentation om Reinforcement Learning (RL) på Luleå Science park. Kanske inte helt oväntat så föll jag ner i många djupa hål på Wikipedia under arbetet med att sammanställa materialet och kanske helt väntat så rymdes inte ens bråkdel i presentationen.
Jag kommer därför i en serie bloggartiklar presentera några av de mest relevanta delarna av presentationen. I den här första delen tänkte jag börja med att beskriva vad som gör RL unik bland alla de otroliga framsteg som gjorts inom AI-teknik de senaste 10 åren. Samtidigt som jag ogenerat tar mig generösa friheter att generalisera och hoppa över detaljer för att åstadkomma ett lättläst bloggformat.
@@ -37,10 +37,10 @@ Om vi önskar översätta partiledare till partisymbol kan det vara lämpligt at
-Det här är helt enkelt en mappning eller översättning mellan två domäner. En teknik som fått utstå negativ press under namnet ‘deep fakes’. Men samtidigt en arkitektur som är väldigt användbar för att översätta en typ av data till en annan. Det behöver inte alltid vara bilder – kan t.ex. vara text in, bild ut eller bild in, text ut.
+Det här är helt enkelt en mappning eller översättning mellan två domäner. En teknik som fått utstå negativ press under namnet ‘deep fakes’. Men samtidigt en arkitektur som är väldigt användbar för att översätta en typ av data till en annan. Det behöver inte alltid vara bilder – kan t.ex. vara text in, bild ut eller bild in, text ut.
Som med alla system behöver man dock planera för vad som händer som systemet oväntat ser ny data.
-
+
Det är väldigt frestande att nu gå vidare och titta på pix2pix, en översättningsteknik som krävde att man på förhand skapade datapar, till CycleGAN som i sin tur automatiskt gör detta, till contrastive-unpaired-translation (CUT), som gör samma sak fast snabbare och bättre. Men det kräver nog bättre sin rätt och plats i eget blogginlägg i framtiden.
@@ -48,25 +48,25 @@ Så vad är då den stora skillnaden? – Vad är det som gör Reinforcement Lea
Reinforcement Learning är en teknik som används när flera beslut ska tas i följd och vi är intresserade av att ta de bästa besluten för att långsiktigt nå ett slags optimalt utfall.
-Tänk att vi vill måla en statsminister med så få streck som möjligt. Varje streck vi ritar måste bidra så mycket som möjligt till slutprodukten samtidigt som det också hjälper efterföljande streck att bidra till målet. Problemet är inte längre – ‘vilket streck är bäst att rita just nu’ utan snarare, ‘vilket streck ska ritas nu för att få ett så bra porträtt som möjligt i slutändan’. Här är ett exempel på vår nuvarande statsminister som skapas av 500 streck.
+Tänk att vi vill måla en statsminister med så få streck som möjligt. Varje streck vi ritar måste bidra så mycket som möjligt till slutprodukten samtidigt som det också hjälper efterföljande streck att bidra till målet. Problemet är inte längre – ‘vilket streck är bäst att rita just nu’ utan snarare, ‘vilket streck ska ritas nu för att få ett så bra porträtt som möjligt i slutändan’. Här är ett exempel på vår nuvarande statsminister som skapas av 500 streck.
-
+
-Algoritmen (bilden till höger) ritar ett streck i taget. Den kan välja tjocklek på pensel, färg och mellan vilka två punkter strecket ritas. För att efterlikna målning av en riktig tavla så tillåts även att färgen som används är delvis genomskinlig.
+Algoritmen (bilden till höger) ritar ett streck i taget. Den kan välja tjocklek på pensel, färg och mellan vilka två punkter strecket ritas. För att efterlikna målning av en riktig tavla så tillåts även att färgen som används är delvis genomskinlig.
Lite som schack alltså, det gäller inte bara att ta motspelarens pjäser när möjligheten finns, utan att spela långsiktigt och strategiskt om målet är att vinna.
Reinforcement Learning, i sin moderna tappning har funnits många år. Redan 2013 publicerade DeepMind att de lyckats spela ett atari-spel med Deep Q Networks, en typ av Reinforcement Learning. Sedan dess har tekniken haft många upp- och nedgångar, en höjdpunkt var när världsmästaren i GO slogs av en dator för första gången 2016 men det har svängt mellan skyhöga förväntningar och förtvivlan flera gånger sedan dess. Idag är RL en relativt mogen teknik vilket upplevs, inte bara av stabilare algoritmer som är lättare att tämja, utan också det faktum att många traditionella system redan har börjat bytas ut. Vem vill inte delegera vissa beslut till en strateg som överträffar en världsmästare?
-De flesta processer i verkliga livet är just beslutskedjor och orsakssamband, vilka är mycket svåra att optimera med traditionella verktyg. Beslutkedjor – ja det låter både lite stelt och överdrivet formellt. Vad det handlar om är förlopp där det finns fördröjningar, beroenden och flera beslut ska fattas i en följd. Fortfarande formellt men bästa analogen jag kommer på är att det kallas verkliga livet och för att inte klanta till det krävs ofta erfarenhet. RL är en teknik för att ta dessa beslut för att uppnå ett visst mål och ett bra utfall.
+De flesta processer i verkliga livet är just beslutskedjor och orsakssamband, vilka är mycket svåra att optimera med traditionella verktyg. Beslutkedjor – ja det låter både lite stelt och överdrivet formellt. Vad det handlar om är förlopp där det finns fördröjningar, beroenden och flera beslut ska fattas i en följd. Fortfarande formellt men bästa analogen jag kommer på är att det kallas verkliga livet och för att inte klanta till det krävs ofta erfarenhet. RL är en teknik för att ta dessa beslut för att uppnå ett visst mål och ett bra utfall.
I den här serien av artiklar tänker jag visa hur Reinforcement Learning kan appliceras som optimering på kombinatoriska problem, reglersystem och för att ta fram optimerad affärslogik.
Tack så länge!
-Krister Söderström
+/ [Krister Söderström](/krister)
-
+
diff --git a/_posts/2022-04-03-varan-teatern-aterupptar-samarbetet.md b/_posts/2022-04-03-varan-teatern-aterupptar-samarbetet.md
deleted file mode 100644
index fa7843d..0000000
--- a/_posts/2022-04-03-varan-teatern-aterupptar-samarbetet.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: "Varanteatern återupptar samarbetet"
-date: 2022-04-03
-description: "Inför tredje säsongen av Varan-TV återupptar vi diskussionerna om Internet med Varanteatern"
-tags:
- - nyhetsbrev
-last_updated_by: Christian
-image_url: /assets/blog/2022-varantv.jpg
-published: false
----
-
-**Varanteatern återupptar samarbetet**
-
-
-
-På fredag den 8 april har den tredje säsongen av Varan-TV premiär. Det är drygt
-20 år efter att den andra säsongen sändes. Vi försökte redan då göra klart att
-Internet är en grej, något som är här för att stanna, men de var envisa och såg
-inte alls det vi såg.
-
-Athega kan nu avslöja att de har sett [ljuset](https://1997.athega.se/).
-Fantastiskt! Se detaljer i videon nedan.
-
-
VIDEO
-
-
-
-Välkomna in i framtiden, Varanteatern och tack för att ni finns!
-
-
-/Athegamannen
diff --git a/_posts/2023-02-24-Athegafredag-Stablediffusion.md b/_posts/2023-03-17-Athegafredag-Stablediffusion.md
similarity index 95%
rename from _posts/2023-02-24-Athegafredag-Stablediffusion.md
rename to _posts/2023-03-17-Athegafredag-Stablediffusion.md
index 3080365..9e2a028 100644
--- a/_posts/2023-02-24-Athegafredag-Stablediffusion.md
+++ b/_posts/2023-03-17-Athegafredag-Stablediffusion.md
@@ -1,6 +1,6 @@
---
title: "Stable diffusion"
-date: 2023-09-29
+date: 2023-03-17
description: "Athega-fredag med ämnet Stable diffusion"
tags:
- blogg
diff --git a/_posts/2023-06-01-AiVocalConversion.md b/_posts/2023-06-01-AiVocalConversion.md
index 7a9b467..79b0bb6 100644
--- a/_posts/2023-06-01-AiVocalConversion.md
+++ b/_posts/2023-06-01-AiVocalConversion.md
@@ -6,7 +6,7 @@ tags:
- ai
- nyhetsbrev
- blogg
-
+
last_updated_by: Mats
image_url: /assets/blog/Entropy-GrimesAI-Zymbsmall.png
---
@@ -21,14 +21,15 @@ och ny teknik! Vi satte igång rätt omgående.
Det började med att vi fick tillgång till flera Grimes DAW-projekt där hennes röst fanns i ett antal tagningar. Tyvärr var flera av låtarna Stem-bouncade med effekter så en stor del av träningsdatat gick inte att använda.
-Vi tränade en av modellerna i ett färdigt ramverk som skulle hitta hennes features för att senare kunna återskapa klang och röst.
+Vi tränade en av modellerna i ett färdigt ramverk som skulle hitta hennes features för att senare kunna återskapa klang och röst.
Eftersom träningsdatan inte var inte omfattande blev resultatet inte bra direkt med efter några försök och justeringar av träningsdatat lyckades konvertera våra inspelade sång-spår till hennes röst med bra kvalitet.
Tekniken går ut på att modellen tränas på så sätt att den efteråt kan återskapa features baserat på ingående pitch och inkommande features.
-Går att jämföra det med ett filter som "filtrerar" vilken röst som helst till att låta som den röst som används för att träna modellen. Med skillnaden att
+Går att jämföra det med ett filter som "filtrerar" vilken röst som helst till att låta som den röst som används för att träna modellen. Med skillnaden att
rösten som kommer ut, helt skapas av modellen. Inget av inkommade ljud skickas vidare.
Det var ett spännande projekt och låten vi skapade (projektlåten "Entropy") finns på alla streaming-tjänster. Grimes gick senare ut och tränade en egen modell som hon ville att alla skulle använda. Vi använder ändå den lösning vi själva satte upp. Här är ett litet smakprov på hur vår sång lät och hur modellen omvandlade ljudet till en kvinnlig röst. (Ligger reverb på det konverterade spåret). Det finns stort utrymme för förbättringar. Speciellt under hur träningsdata förbereds, kvaliteten på träningsdatat är nyckeln för ett bra resultat. Vi såg även att vissa artifakter som skapas kan filtreras bort med konventionella metoder. Ska bli spännande att utforska hifi-ljud-generering djupare. Mycket forskning verkar pågå inom området.
+
Your browser does not support the video tag.
diff --git a/_posts/2023-11-12-Kreativitet-och-generativ-ai.md b/_posts/2023-11-12-Kreativitet-och-generativ-ai.md
index 321945e..1083643 100644
--- a/_posts/2023-11-12-Kreativitet-och-generativ-ai.md
+++ b/_posts/2023-11-12-Kreativitet-och-generativ-ai.md
@@ -11,34 +11,30 @@ image_url: /assets/img/blog/generative.png
published: true
---
-**AI och keativitet**
-
Inom utvecklingen av maskininlärning och artificiell intelligens har det historiskt handlar om klassificerare. Det som tidigare kändes som science fiction har blivit en del av vår vardag. Vi reagerar inte så mycket över att vår telefon bara behöver se vårt ansikte för att låsa upp sig. Eller hur spam kan sorteras bort effektivt. Eller hur bilderna din telefonen finns sökbara på nyckelord direkt i telefonen.
Till skillnad från traditionell AI som ofta är utformad för att analysera och kategorisera information, är generative AI som en digital konstnär eller uppfinnare. Den kan generera bilder, musik, text, och till och med videor som inte fanns tidigare.
-Ofta används dessa generativa modeller ihop med lämpliga gränssnitt för oss människor. Ni som testat chatgtp förstår hur duktiga de kan vara på språk.
-
+> Ofta används dessa generativa modeller ihop med lämpliga gränssnitt för oss människor. Ni som testat ChatGPT förstår hur duktiga de kan vara på språk.
-**Användbarhet**
+## Användbarhet
Föreställ dig att du kombinerar en språkförståelsemodell, kanske en enkel variant av en stor språkmodell (LLM) liknande OpenAI:s GPT-3, med andra specialiserade AI-modeller, till exempel de som skapar bilder eller musik. Det är lite som att sätta ihop ett team av superhjältar, där varje medlem har sin egen unika förmåga.
Språkförståelsemodellen fungerar som teamets hjärna. Den förstår och tolkar instruktioner eller frågor på ett nästan mänskligt sätt. Du kan till exempel fråga den att beskriva en scen från en fantasyvärld eller att komma med idéer för en ny låt.
Därefter tar de andra modellerna, som är experter på bild- eller musikskapande, över. Baserat på den beskrivning eller idé som språkmodellen ger, börjar de arbeta. Om det handlar om en bild, kan en modell som DALL-E eller MidJourney börja skapa en visuell representation av den beskrivna scenen. Om det gäller musik, kan en modell som OpenAI’s Jukebox eller Metas AudioCraft börja komponera och skapa musik eller ljud som matchar stämningen eller stilen i din beskrivning.
Kombinationen av dessa AI-modeller gör att hela användarupplevelsen blir på en hög nivå. Du får inte bara en dator som förstår vad du säger, utan också en som kan skapa nya, fascinerande verk som matchar dina ord. Detta öppnar dörren för oändliga kreativa möjligheter, från att skriva en berättelse och genast kunna visualisera scenerna, till att komponera musik som perfekt fångar känslan i dina ord.
-
-**Träningsdata**
+## Träningsdata
Innehållet som genereras av dessa AI-modeller är "unikt" i den meningen att det inte är en kopia av något som redan finns. Men det är viktigt att förstå att detta "nya" innehåll är influerat av de data som modellen har tränats på. Här är några nyckelpunkter att tänka på:
* Baserat på Träningsdata: Generative AI-modeller lär sig skapa innehåll genom att analysera och förstå mönster i de data de tränas på. Ett AI som tränas på bilder av hundar att generera nya bilder av hundar som ser realistiska ut, dessa kommer att baseras på de egenskaper och drag som den har lärt sig från träningsbilderna. Ofta är datat dessa modeller tränas på upphovsrättskyddat.
-* Kombination av Egenskaper: Generative AI är skicklig på att kombinera subtila egenskaper i träningsdatat på nya och ofta oväntade sätt. Detta kan leda till originella verk, även om de är sammansatta av egenskaper som modellen har lärt sig från befintliga data.
+* Kombination av Egenskaper: Generative AI är skicklig på att kombinera subtila egenskaper i träningsdatat på nya och ofta oväntade sätt. Detta kan leda till originella verk, även om de är sammansatta av egenskaper som modellen har lärt sig från befintliga data.
* Påverkan av Design och Styrning: Det är även värt att notera att hur en AI används och styrningen av dess genereringsprocess (t.ex. genom att använda specifika prompts eller styrparametrar) spelar en stor roll i vilken typ av innehåll som skapas.
+
Sammanfattningsvis är innehållet som genereras av AI unikt i den mening att det inte är en kopia av något enskilt verk i träningsdatan, men det är samtidigt ett resultat av, och begränsat till, de mönster, stilar och egenskaper som den har lärt sig från denna data. Således är AI:s kreativitet till viss del begränsad det data den matats med, kombinerat med de specifika algoritmer och metoder som används för genereringen.
-
-**Musikgenerering**
+## Musikgenerering
Om vi fokuserar på musik-generering finns det vissa delar som behöver vara på plats för att använda tekniken på ett användbart och kommersiellt gångbart sätt.
@@ -47,19 +43,19 @@ Om vi fokuserar på musik-generering finns det vissa delar som behöver vara på
* Tekniska kvaliteten på det genererade materialet måste vara i nivå med professionellt skapad musik.
-
-**Framtiden för Ljudgenerering med AI**
+## Framtiden för Ljudgenerering med AI
Google, Meta och OpenAI har utfört innovativ grundforskning inom området och nyligen släppte Meta sin AudioCraft-modell-arkitektur open source vilket borgar för att många kommer börja experimentera och utveckla lösningar där generativ AI är grundkomponenten. Fortfarande finns det frågetecken till träningsdata och vilket träningsdata de som vill bygga produkter på lösningen ska använda. Dock har Meta jobbat på att få upp kvaliteten på det skapade materialet till en acceptabel teknisk nivå vilket är väldigt spännande. Framtiden för ljudgenerering med AI ser ljus ut. Med fortsatt snabb fart på forskning och utveckling inom området kan vi förvänta oss ännu mer avancerade och mångsidiga verktyg som förändrar hur vi skapar och upplever ljud och musik. Det står klart att generativ AI kommer att fortsätta att vara en kraftfull källa till innovation och kreativitet inom ljudvärlden.
-**AI genererat trum-beat**
+### AI genererat trum-beat
-Jag har testat att generera olika specifika stems. Här är ett exempel på en trum-stem.
+Jag har testat att generera olika specifika stems. Här är ett exempel på en trum-stem.
-
-länk till arbetet Meta gjort https://arxiv.org/abs/2306.05284
-//Mats
+Länk till arbetet Meta gjort: https://arxiv.org/abs/2306.05284
+
+
+/ [Mats](/mats)
diff --git a/_posts/2024-02-14-ai-aml-kyc.md b/_posts/2024-02-14-ai-aml-kyc.md
index cbc2bbf..b160931 100644
--- a/_posts/2024-02-14-ai-aml-kyc.md
+++ b/_posts/2024-02-14-ai-aml-kyc.md
@@ -9,8 +9,6 @@ image_url: /assets/img/aml.png
published: true
---
-**AI and AML**
-
To work with a risk-based approach in Know Your Customer(KYC), Anti money laundering(AML) or Transaction Monitoring, continuous screening and risk assessments are performed. These are based on predefined levels of risk tolerance, which are reflected in various ways across different IT systems.
The result is a risk-based approach where a large number of cases can be handled automatically, but there are also cases that require more in-depth, and possibly manual, handling.
@@ -20,23 +18,22 @@ This entire setup meets the requirements from regulatory bodies for a risk-based
The values used to match these thresholds or breakpoints can be referred to as rank, rating, points, risk points, etc. The levels are usually set with a margin so that the systems and processes are risk-averse. It's preferable to check too many than to make a mistake. All these warnings that require extra manual investigations and controls are often called false positives. A recurring theme is to reduce false positives (trying to make the systems more accurate). At the same time, there's a notion that having false positives is necessary to be sufficiently risk-averse. No false positives must mean something is missed.
-
Of course, everything depends on the quality of the process. How well the systems are designed to filter out the real cases compared to those where it's obvious upon review that no further investigation is needed.
-**Improvement potential**
+## Improvement potential
Established technology and systems (systems, code, and formulas designed to detect hits) have resulted in several percent of false positives, maybe 3-5%, 10%, or 15%. Reducing this amount is a difficult balance and requires continuous work and deep domain insight. Simply validating new software that decreases the number of false positives by a few percent can be a significant and challenging task.
However, recent developments in machine learning and AI have provided us with entirely new tools that can elevate these processes to entirely new levels. To understand the significant difference this can make compared to the past, one only needs to look at how images can be generated by generative models. The development has exploded. It all builds on new faster computers, new architecture with GPUs that make it possible to perform the incredibly large number of calculations required to achieve these results.
-Now that the hardware and technology are available, shouldn't the development within KYC, AML, sanction screening, and monitoring improve tenfold or even a hundredfold? Yes, development is happening, but it's slightly hampered by uncertainty around the technology and the difficulty in making decisions on such advanced models where it's hard to explain exactly how decisions are made. This is certainly a problem, but it shouldn't hinder progress.
+Now that the hardware and technology are available, shouldn't the development within KYC, AML, sanction screening, and monitoring improve tenfold or even a hundredfold? Yes, development is happening, but it's slightly hampered by uncertainty around the technology and the difficulty in making decisions on such advanced models where it's hard to explain exactly how decisions are made. This is certainly a problem, but it shouldn't hinder progress.
-**Opportunities**
+## Opportunities
There are numerous ways to use modern models in the field without leaving the bulk of monitoring and screening to the models. Here are some examples of areas where modern computing power and AI models should make a significant difference:
-- Test data generation using generative models. These models excel at creating large datasets that closely resemble real data, without actually being real data. This allows for the testing of IT development systems with fictitious data on the same scale as in production.
+- Test data generation using generative models. These models excel at creating large datasets that closely resemble real data, without actually being real data. This allows for the testing of IT development systems with fictitious data on the same scale as in production.
- Explaining and supporting manual work where complex but structured regulations form the basis. For example, automatically describing, in simple text, how a transaction type is used directly for the operator of the screening or monitoring systems.
- Using models to analyze large datasets for IT system quality control. For instance, in validations of code changes or upgrades. Compare monitoring results before and after a change and use models for anomaly detection.
- Using models to analyze large datasets for data quality control. Then use generative models for data improvement, either through metadata enrichment or simply by analyzing datasets to find anomalies. Ensure the data is in its best form.
@@ -44,7 +41,6 @@ There are numerous ways to use modern models in the field without leaving the bu
- Automatic solutions to help out in classifing between risky behaviour and lack of KYC due to missunderstanding, lack of knowledge or accessability to digital channels.
- Any other ideas? Let us know!
-Posten kommer på svenska inom kort.
-Athega delivers AI solutions.
-
+_(Posten kommer på svenska inom kort)_
+**Athega delivers AI solutions.**
diff --git a/_posts/2024-11-24-aml-tools.md b/_posts/2024-11-24-aml-tools.md
index 53c13e7..359251e 100644
--- a/_posts/2024-11-24-aml-tools.md
+++ b/_posts/2024-11-24-aml-tools.md
@@ -9,51 +9,53 @@ image_url: /assets/img/blog/AML-Tools-date.png
published: true
---
-**Next generation smart tools for AML and KYC**
+## Next generation smart tools for AML and KYC
-Going into 2025 we will remain dedicated to focusing on delivering tools and solutions that directly empower our customers,
-specifically by enabling possibilities that were previously out of reach with computationally intensive solutions using GPU power.
+> Going into 2025 we will remain dedicated to focusing on delivering tools and solutions that directly empower our customers,
+> specifically by enabling possibilities that were previously out of reach with computationally intensive solutions using GPU power.
+
+
+**We will create very useful tools that where not possible to create a couple of years ago.**
-We will create very useful tools that where not possible to create a couple of years ago.
First out is a date conversation tool that will help our customers to clean up and sort out quality of large legacy dataset with a breeze. Its a date-conversation tool that doesn't need to know in forehand what the input format will be.
-
-
-
+
+
+### Date conversation Tool
+
+This is a type of solution that will be able to convert almost any kind of date-description to a defined format.
+
+Here are some examples of dates that it converts to a predefined format YYYY-MM-DD.
-***Date conversation Tool***
+Since the solutions is almost indifference to the input it will easially handle different delimiters like 2022/06/22 and 20220622 . Would correctly convert those to 2022-06-22 .
-This is a type of solution that will be able to convert almost any kind of date-description to a defined format.
-Here are some examples of dates that it converts to a predefined format YYYY-MM-DD.
+What about more complex examples like twenty second of 6th month in 2021 ?
+Yes it handles that resulting in 2021-06-22 .
-Since the solutions is almost indifference to the input it will easially handle different delimiters like 2022/06/22 and 20220622 . Would correctly convert those to 2022-06-22 .
+Or completly different formats like March 5th, '21 ? Results in 2021-03-05 and second of july 1970 results in 1970-07-02 .
-What about more complex examples like twenty second of 6th month in 2021 ? Yes it handles that resulting in 2021-06-22 . Or completly different formats like March 5th, '21 ? Results in 2021-03-05 and second of july 1970 results in 1970-07-02 . As examples show, the input is not required to follow a specific format.
+As examples show, the input is not required to follow a specific format.
-***What do I need this for***
+### What do I need this for
So, what can you use a tool like this for? For startes if would be possible to extract dates in a specific format from any kind of text. Or to validate the input or manually entered date field. Or convert fields in large old legacy data-sets. It would be a new tool in the toolbox of data-quality that in the long run would make AML, KYC and Financial Crime Prevention even better.
-
-***No data leaves your network***
+
+### No data leaves your network
No AML-tools from Athega requiers energy intesive cloud servers, all are possible to run locally within your network, making sure no infomation leaves.
-***Integration is simple***
+### Integration is simple
Batch your data to use the tools over night, or integrate them in your user interfaces, its all up to you. The example below is a simple web client integrating to the Date tool.
-
+
-
-***Probabilistic solutions requires less programming and format definitions***
+### Probabilistic solutions requires less programming and format definitions
Using a of the shelf small tools minimizes the need for internal tuning. Well defined problems that can be automatically tested.
-***Partners***
+### Partners
If you are interrested in trying some of the tools, drop us an email and we will contact your and discuss how a proof of concept can be setup.
-
-
-
-Athega delivers next generation AI solutions.
+**Athega delivers next generation AI solutions.**
diff --git a/_posts/blog_posts.json b/_posts/blog_posts.json
deleted file mode 100644
index 48398fe..0000000
--- a/_posts/blog_posts.json
+++ /dev/null
@@ -1,2769 +0,0 @@
-[
- {
- "_id": {
- "$oid": "4ce7ef5d9762563553000016"
- },
- "slug": "2010/11/19/kanban-classes-of-service",
- "created_at": {
- "$date": 1290268509000
- },
- "month": 11,
- "title": "Kanban - Classes of Service",
- "updated_at": {
- "$date": 1290268509000
- },
- "day": 19,
- "year": 2010,
- "content": "Jag arbetar just nu med ett IT-förvaltnings-team där vi kör Kanban. Med en Kanban-tavla visualiserar vi arbetet och identifierar potentiella flaskhalsar. Vi arbetar löpande med problem, orsak och förbättring. Vi har den senaste tiden börjat arbeta med klasser på aktiviteter/tjänster.\r\n\r\nVi arbetar frekvent och övervägande med saker som har fasta leveransdatum. Vissa gånger har det stor betydelse för hela verksamheten att vi håller leveransdatum. Andra gånger är det snarare önskvärt från beställaren att det är klart ett visst datum. På en tavla med en stor och dynamisk backlog kan det vara svårt för beställare att prioritera när de måste hålla reda på alla leveransdatum och samtidigt hur viktiga det är att datumet hålls.\r\n\r\nKostnad \r\nVi tittar på vad kostnaden blir om vi inte levererar till utsatt datum. Kommer det kosta väldigt mycket eller finns det lite utrymme för justering av planerad leverans. För att tydliggöra detta använder vi nedan klassificeringar (Baserade på David J Anderson beskrivning av Classes Of Service) Vi har fritt översatt vissa ord och gjort en anpassning som passar oss.\r\nUTFÖR \r\nFörst och främst har en en utför-klass. Aktiviteter som klassas som utför ska påbörjas så fort som möjligt och vi ska lägga så mycket resurser vi behöver för att på snabbast möjliga sätt ta aktiviteten i mål. Vi har inte många men när dom kommer kan det handla om produktionsstörningar som gör att verksamheten inte kan utföra sitt arbete. Dessa rör sig i en prioriterad fil på tavlan. Går ej att planera, måste utföras direkt när dom dyker upp. \r\nKRITISKT DATUM \r\nSen har vi aktiviteter som har ett kritiskt leveransdatum. Dessa aktiviteter har hög affärspåverkan om vi inte håller leveransen. Dessa aktiviteter är UTFÖR-aktiviteter men med skillnaden att leverandatum är i framtiden. Behöver inte påbörjas direkt. Går att planera. \r\nFAST DATUM \r\nAktiviteter där affärspåverkan om vi bryter leveransdatumet blir ringa klassas som FAST DATUM. Dessa har ett tydligt leveransdatum men ofta hänger leveransdatumet mer ihop med planerade releaser än stora kostnader för verksamheten. Vi har möjlighet att i värsta fall skjuta på leveransen av dessa en kortare tid. \r\nSTANDARD \r\nDetta är aktiviteter som ska göras men det finns inget datum då dom måste vara klara. Alla tjänar på att göra dom så fort som möjligt men dom har inget fast leveransdatum. Det kan till exempel vara förebyggande aktiviteter för att sänka risker eller förenkla/effektivisera arbetet. \r\nHur får vi standardaktiviteter att bli utförda om det hela tiden beställs fasta och kritiska-datum-aktiviteter? Att sätta begränsning i hur mycket arbete som får pågå samtidigt är ett sätt. När pågående arbete(WIP) begränsas kan detta ske per klass. T.ex. sätter vi WIP-Limit (Begränsningen av hur många aktiviteter som får vara påbörjade samtidigt) olika för de olika klasserna.\r\n\r\n### Exempel\r\n\r\n- WIP-Limit 1 10% - UTFÖR\r\n- WIP-Limit 4 40% - KRITISKA DATUM\r\n- WIP-Limit 4 40% - FAST DATUM\r\n- WIP-Limit 1 10% - STANDARD\r\n\r\nDet innebär att när vi planerar aktiviteter tar vi automatiskt in STANDARD-aktiviteter när WIP-Limit för de övriga är fylld. Vi kan även procentuellt styra hur mycket aktiviteter vi måste arbeta med som är standard genom att justera WIP-Limit. Har vi en stor mängd förbättringsåtgärder som verkligen behöver göras kanske nedan fördelning gör att vi får mer av dessa proaktiva aktiviteter genomförda.\r\n\r\n\r\n WIP-Limit 1 10% - UTFÖR \r\n WIP-Limit 2 20% - KRITISKA DATUM \r\n WIP-Limit 2 20% - FAST DATUM \r\n WIP-Limit 5 50% - STANDARD \r\n \r\n\r\nSå länge vi är noga med att vår totala arbetsbelastningen ligger justerad/med marginal efter vår förmåga att leverera har vi har möjlighet att göra klart aktiviteter i stället för att bara påbörja nya hela tiden. Då håller vi våra cykel-tider inom förväntade och uppskattade värden. Vi försöker nu noggrant klassificera allt samtidigt som vi diskuterar med beställare och beskriver våra klassers cykel-tider. Det hoppas vi gör vår leveranskapacitet tydligare och lättare att förstå.\r\n\r\n// [[Mats]]",
- "last_updated_by": "admin",
- "published_at": {
- "$date": 1290121200000
- }
- },
- {
- "_id": {
- "$oid": "4ce9912b9762565f5f000003"
- },
- "content": " \r\n \r\n\r\n\r\nUnder Athega Code Base byggde jag en helt ny version av en webbapplikation som jag för två år sedan byggde i Ruby on Rails och Geokit. Denna gång valde jag att använda ramverket Sinatra , databasen MongoDB (genom Mongomatic ) samt att hosta allt på Heroku och MongoHQ .
\r\n\r\nVad jag blev mest imponerad över var det inbyggda stödet för geospatial indexing i MongoDB samt hur enkelt det var att jobba med Heroku.\r\n\r\nGränssnittet är utvecklat med hjälp av biblioteket jQuery Mobile och det har visat sig fungera mycket bättre än jQTouch som jag tidigare har använt. Vad jag speciellt gillade var den inbyggda routern.",
- "created_at": {
- "$date": 1290375467000
- },
- "day": 30,
- "last_updated_by": "admin",
- "month": 10,
- "published_at": {
- "$date": 1288389600000
- },
- "slug": "2010/10/30/lunch-athega-se",
- "title": "lunch.athega.se",
- "updated_at": {
- "$date": 1291086842000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4ce994d597625615cf000002"
- },
- "content": "Förra hösten skrev jag ett program som löser Sudokus och körde det som ett enkelt benchmark-test av javascriptprestandan i de olika webbläsarna.\r\n\r\nNu har jag uppdaterat testresultatet för senaste versionen av de vanligaste webbläsarna och man kan lugnt konstatera att det hänt en hel del på javascriptfronten det senaste året.\r\nTestet jag körde är samma Sudoku-kombination som förra gången. Tiden det tar att räkna fram alla möjliga lösningar på just min dator jämförs med tiden det tog i den version av respektive webbläsare som var aktuell för ett år sedan. \r\n\r\nInternet Explorer står för den överlägset största förbättringen och är verkligen med i matchen nu. Opera har gjort ett rejält ryck och kapat sin tid till en bråkdel. Firefox har förbättrat sin tid lite men har ändå helt plötsligt hamnat efter de andra. Chrome och Safari har putsat mer marginellt på sina redan låga tider.\r\n\r\n \r\n\r\nUppdatering: Grafen ovan är kompletterad med värden för senaste betan av Firefox 4, beta 6, där man kan se att hastigheten tagit ett litet steg tillbaka. Däremot verkar det vara bra saker på gång eftersom den senaste \"nightly\", beta 7 pre, visar att de klippt över hälften på tiden och hamnar på par med Chrome.\r\n\r\n \r\n\r\nPå Mac OSX ser det ut så här. Där skiljer ingenting mellan Firefox 3.6 och Firefox 4.0 beta 6. Men \"nightly\" beta 7 pre knappar in på sina fortfarande snabbare konkurrenter. Framförallt Chrome 6 imponerar stort med bara en halv sekund.\r\n\r\n \r\n\r\nPå mobiltelefoner går det förstås inte lika snabbt. Här blir det inte heller så mycket en jämförelse mellan olika webbläsare utan mellan olika mobilplattformar och dess hårdvara. Det kan ändå ge en liten uppfattning vad man har för javascriptprestanda att tillgå när man utvecklar webbapplikationer för en mobil jämfört med en fullstor webbläsare.\r\nOm du klickar på grafen och kör detta test på din mobil, skriv gärna resultatet som en tweet.\r\n\r\n//[[Johan]]",
- "created_at": {
- "$date": 1290376405000
- },
- "day": 21,
- "image_url": "",
- "last_updated_by": "johan",
- "month": 9,
- "published_at": {
- "$date": 1285020000000
- },
- "slug": "2010/09/21/javascriptprestanda-2010",
- "summary": "",
- "tags_array": [],
- "title": "JavaScriptprestanda 2010",
- "updated_at": {
- "$date": 1488304672000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4ce9957897625615cf000004"
- },
- "content": "Större delen av gårdagen ägnades åt en workshop (tack @stpe ) kring frontendutveckling. Fokus var på YUI , men eftersom jag jobbat en del med det redan, men däremot inte hunnit dyka ner i jQuery på riktigt, valde jag det senare.\r\n\r\nMin idé var att göra ett lajvflöde av Flickr -bilder och Twitter -postningar baserat på ett givet sökord eller tag.\r\n\r\n \r\n\r\nJSONP \r\nBåde Flickr och Twitter har rika APIer i JSON -format som gör det lätt att åstadkomma det jag vill. Då dessa av naturliga skäl inte ligger på samma domän som min labb, kan jag inte göra ett vanligt XHR -anrop eftersom webbläsaren av säkerhetsskäl kastar ett same domain-policy-fel. Räddningen stavas JSONP , som helt enkelt wrappar hela JSON-svaret i ett metodanrop. Detta går vi inte in närmare på denna gång, utan konstaterar istället glatt att jQuery har stöd för detta och löser detta under ytan.\r\n\r\njQuerys effektköer \r\nPlanen är alltså att långsamt smyga in en bild, visa den ett tag, sedan dimma ner den och till sist ta bort den helt.\r\n\r\nSedan jQuery 1.4 finns det en toppenmetod för att hantera pauser i den allmänna effektkön, fx. Metoden heter delay() och låter mig åstadkomma önskat beteende på ett oerhört kompakt och tydligt vis.\r\n\r\n\r\n $(img).fadeIn('slow').\r\n delay(1000).\r\n fadeTo('slow', 0.3).\r\n delay(2000).\r\n fadeOut('fast', function() { \r\n $(this).remove(); \r\n });\r\n\r\n\r\nDet är ju nästan som att prata svenska (engelska)! Vi repeterar:\r\n\r\n - Smyg långsamt in bilden\r\n - Vänta en sekund\r\n - Dimma ner den litet\r\n - Vänta två sekunder\r\n - Smyg snabbt bort bilden och ta bort den\r\n\r\n## Koden\r\n\r\nVill du se hur det ser ut, kan du titta här eller ladda ner hela koden och labba vidare själv.\r\n\r\n// [Chrille](/chrille)",
- "created_at": {
- "$date": 1290376568000
- },
- "day": 9,
- "last_updated_by": "admin",
- "month": 4,
- "published_at": {
- "$date": 1270764000000
- },
- "slug": "2010/04/09/jquery-ar-snyggt",
- "title": "jQuery är snyggt",
- "updated_at": {
- "$date": 1291086800000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4ce995fa97625615cf000006"
- },
- "content": "Athega har sedan länge, ända sedan starten 1997, arbetat mycket med programmeringsspråket Perl . Vi använder oss i mycket stor utsträckning av öppna och fria mjukvaror och verktyg för de system vi bygger. Därför är även en stor del av den kod vi själva producerar befriad från licenskostnader och betraktas som “open source ” även om den kanske i vissa fall inte finns publikt tillgänglig på nätet.\r\n\r\nSaker som går att återanvända och andra kan ha nytta av delar vi gärna med oss av. Ett exempel på detta är Perl-modulen Geo::SweGrid som används för att konvertera geografiska koordinater mellan det system som används globalt och det som används på vissa svenska kartor.\r\n\r\nDet distribuerade arkivet för Perl-moduler heter CPAN , dit kan alla bidra med sin kod. När en modul väl finns i arkivet kan den lätt installeras på vilken dator som helst så här:\r\n\r\n\r\n [user@host ~]$ sudo cpan\r\n cpan shell -- CPAN exploration and modules installation (v1.9304) ReadLine support enabled\r\n cpan> install Geo::SweGrid\r\n\r\n//[[Johan]]",
- "created_at": {
- "$date": 1290376698000
- },
- "day": 25,
- "last_updated_by": "peter",
- "month": 3,
- "published_at": {
- "$date": 1237935600000
- },
- "slug": "2009/03/25/athega-bidrar-till-oppen-kallkod",
- "title": "Athega bidrar till öppen källkod",
- "updated_at": {
- "$date": 1290377509000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4ce999cf976256575e000002"
- },
- "content": "Jag har skrivit denna bloggpost utifrån mitt eget perspektiv som systemutvecklare, men jag hoppas att även andra kan ha nytta av det jag skrivit.
\r\n\r\nZonen eller “The Zone” är den tid då man glömmer bort tid och rum, när man kan arbeta med ett problem och komma fram till en lösning utan onödiga avbrott. För min egen del inträffar denna oftast sent på natten.\r\n\r\n## Förebyggande\r\n\r\n### Sov\r\n\r\nJag tycker att det absolut viktigaste när det kommer till förebyggande åtgärder är att sova tillräckligt. Hur länge man sover är inte speciellt viktigt, bara man sover effektivt.\r\n\r\nAtt skaffa en bättre säng (utvald baserat på min längd, vikt och sovstil) samt ergonomiska kuddar har gjort underverk för min nattsömn.\r\n\r\n### Ät ordentligt!\r\n\r\nDet har sagts tidigare och det tål att sägas igen, frukosten är det absolut viktigast målet på dagen.\r\n\r\nJag märker direkt att jag inte är lika skärpt om jag inte ätit en ordentlig frukost, redan där har man “slösat bort” halva arbetsdagen.\r\n\r\nJag äter oftast lunch ute på restaurang då det blir ett distinkt avbrott i arbetsdagen, detta gör att man återkommer till sina arbetsuppgifter med nya ögon och ökad energi.\r\n\r\n \r\n\r\n### Klättra\r\n\r\nMin stora passion just nu är att klänga på stenblock, en sport (Bouldering ) där man tävlar med och mot sig själv. Oavsett vilken sport det är man utövar så anser jag att det är mycket viktigt att bli fysiskt utmattad för att må riktigt bra samt förbättra sin arbetsprestation.\r\n\r\n#### Vidare läsning\r\n\r\n - [Zen to Fitness](http://zentofitness.com/)\r\n\r\n### Rensa skrivbordet\r\n\r\nNågot jag hela tiden har förespråkat i mitt privatliv likväl arbetsliv så är det att ju färre prylar man har runt omkring sig desto mindre är chansen att man distraheras. Därför försöker jag hålla mitt skrivbord så tomt som möjligt, för att sedan under korta perioder belamra det med de anteckningar, dokument och böcker som rör mitt nuvarande arbete.\r\n\r\n \r\n\r\n#### Vidare läsning\r\n \r\n - [Unclutterer](http://unclutterer.com/)\r\n\r\n### Diska\r\n\r\nAtt göra något så tråkigt som att diska får mig direkt att börja fundera på annat, ofta relaterat till något problem jag försökt lösa tidigare under dagen.\r\n\r\n## Irritationsmoment\r\n\r\n### Minimera antal irritationsmoment\r\n\r\nJag har för vana att skriva startscript för de olika projekt jag arbetar med så att jag snabbt och enkelt kan komma igång och jobba på morgonen, de startar oftast min texteditor (TextMate) och drar igång en eller flera servrar. (Thin, Apache/Passenger)\r\n\r\nEtt annat litet irritationsmoment är strömförsörjningen till laptopen, laddare till mobilen, osv. Detta löser jag genom att ALLTID ha ett 3-vägs grenuttag på skrivbordet bredvid skärmen. Jag har även en extra eladapter hemma så att jag slipper packa upp den jag har i väskan.\r\n\r\n### Stäng ner IM-klienten\r\n\r\nEtt bra och relativt självklart tips är att stänga ner IM-klienten. Nuförtiden använder jag nästan uteslutande chatten i GMail för att hålla kontakten med mina kollegor och andra utvecklare, detta gör att jag undermedvetet flyttar över det mesta av chattandet till de tillfällen då jag kollar min mail. (Jag har självklart ingen mailklient igång som kan störa)\r\n\r\nPassiv kommunikation som Twitter är att föredra framför IM då man själv styr över vilka tillfällen man aktivt deltar.\r\n\r\n## Under tiden du arbetar\r\n\r\n### Omgivning\r\n\r\nDet är viktigt att man har en bekväm arbetsmiljö, vad som är bekvämt varierar självklart och man ska vara uppmärksam på detta. Under vissa perioder står jag upp (Höj och sänkbart skrivbord) och någon gång ibland tycker jag att det bästa sättet att ta sig in i Zonen är att sitta i soffan (helt oergonomiskt) med laptopen i knät och hacka kod. Övergripande är att få tid till att vara helt för sig själv. (Förutom planerade sessioner av parprogrammering och KORTA möten)\r\n\r\n#### Vidare läsning\r\n\r\n\r\n\r\n### Stäng av datorn\r\n\r\nNågot av det bästa jag kan göra för att komma in i Zonen är helt enkelt att stänga av datorn. (Eller inte fullt lika drastiskt, flytta sig från datorn)\r\n\r\nNär jag har oklara krav, dåligt med idéer eller helt enkelt kört fast av någon annan anledning så brukar jag ta fram penna och papper och börja skissa. (Gillar att använda PILOT Fineliners och linjerade A5-kollegieblock)\r\n\r\nDet är ofta enklast om man inte är så precis i det man ritar, om det är vyer man arbetar med så räcker det fint att rita fyrkanter och andra geometriska former.\r\n\r\nJag brukar skissa rätt grovt och sedan annotera med pilar kors och tvärs, ofta kommer jag fram till vad som fungerar och inte fungerar innan jag hunnit tillbaka till datorn. Det är oftast mycket lättare att ta sig in i Zonen om man har en mental bild av vad som ska göras.\r\n\r\n \r\n\r\n### Byt arbetstid\r\n\r\nJag har oftast mycket lättare att ta mig in i Zonen på kvällar och nätter, om du är likadan som mig samt har möjlighet så kan det vara en bra idé att lägga om dina arbetstider så att de bättre reflekterar den tid som passar dig bäst.\r\n\r\nDet är även naivt att tro man får dubbelt så mycket gjort på 40 timmar jämfört med 20 timmar. Det är den effektiva tiden vi vill maximera, inte den totala arbetstiden. Jobba ALDRIG övertid, det blir ingen lyckligare av.\r\n\r\n### Lyssna på musik\r\n\r\nJag är en av många som inte kan jobba utan musik, det spelar inte så stor roll vilken genre det är, bara det inte är för “komplicerad” musik.\r\n\r\nFör min egen del betyder det att jag lyssnar på mycket minimal tech, ambient eller psytrance, när jag väl är inne i Zonen så lyssnar jag knappt på musiken, den blir snarare ett filter mot omvärlden. (Helst ska man ha ett par stora\r\nhörlurar på sig, då noterar folk att man inte hör vad de säger)\r\n\r\n#### Vidare läsning\r\n\r\n - [How to Get Into the Zone as a Programmer](http://www.techurbia.com/2009/02/how-to-get-into-the-zone-as-a-programmer.html)\r\n - [Flow: Get into the Zone at Work](http://www.thatvoodooyoudo.com/best-practice/flow/)\r\n - [7 Tips for programming in The Zone](http://www.computus.org/journal/?p=982)\r\n\r\n// [[Peter]]",
- "created_at": {
- "$date": 1290377679000
- },
- "day": 12,
- "last_updated_by": "peter",
- "month": 8,
- "published_at": {
- "$date": 1250028000000
- },
- "slug": "2009/08/12/in-i-zonen-som-systemutvecklare",
- "title": "Att ta sig in i Zonen som systemutvecklare",
- "updated_at": {
- "$date": 1290378693000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4d8a56e59762564f8c000007"
- },
- "content": "[Krister Söderström](/krister), som jobbar som utvecklare på Athega, kommer att föreläsa om vektorkvantisering och klustring.\r\n\r\nFörsta delen av föreläsningen är en enkel genomgång om vad en vektor är samt vad kvantisering och klustring innebär. Syftet är att ge en grundläggande förståelse inför den andra delen av föreläsningen.\r\n\r\nDen andra delen kommer att handla om praktiska tillämpningar inom vårt intresseområde, exempelvis spamfiltrering. Extramaterial är framtaget om det finns tid och intresse.\r\n\r\nTidsåtgång ca 2:30 h, vilket inkluderar en halvtimmes paus.\r\n\r\nAthegianer, kunder, bekanta, intresserade är välkomna. Meddela [Torbjörn](/tobbe) så att vi vet att vi får rum.\r\n\r\n- När: **fredag 25 mars 14:00 - 16:30**\r\n- Var: **Athega - [Hantverkargatan 21](http://maps.google.se/maps?f=q&source=s_q&hl=sv&geocode=&q=athega&aq=&sll=61.606396,21.225586&sspn=35.701896,89.472656&ie=UTF8&hq=athega&hnear=&ll=59.328439,18.04675&spn=0.004526,0.010922&z=17&iwloc=A)**\r\n\r\n_Detta är nyttigt så missa det inte!_",
- "created_at": {
- "$date": 1300911845000
- },
- "day": 23,
- "last_updated_by": "tobbe",
- "month": 3,
- "published_at": {
- "$date": 1300834800000
- },
- "slug": "2011/03/23/nyttigheter-pa-fredagsforelasningen",
- "title": "Nyttigheter på fredagsföreläsningen",
- "updated_at": {
- "$date": 1316589664000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4db7395997625657fb000002"
- },
- "slug": "2011/04/26/dynatrace-ajax-edition-nyttigt-for-din-sajt",
- "created_at": {
- "$date": 1303853401000
- },
- "month": 4,
- "title": "dynaTrace AJAX Edition – nyttigt för din sajt",
- "updated_at": {
- "$date": 1303853401000
- },
- "day": 26,
- "year": 2011,
- "content": "[Christian Lizell](/chrille), som jobbar som utvecklare på Athega, kommer att berätta och visa hur du kan använda [dynaTrace AJAX Edition](http://ajax.dynatrace.com/ajax/en/) för att snabba upp din sajt.\r\n\r\nÄr du webbutvecklare, intresserad av laddningstider, renderingstider, se vad som händer i DOM-trädet och hur du kan använda all den information till att optimera användarupplevelsen är Athegafredagen i april (nu på fredag) något för dig.\r\n\r\nMed den senaste versionen av dynaTrace AJAX Edition kan du dessutom jämföra hur sajten uppför sig i Internet Explorer och Firefox. Något som ibland ger oväntade resultat.\r\n\r\nTidsåtgång ca 2:00 h, vilket inkluderar en lagom lång paus.\r\n\r\nAthegianer, kunder, bekanta, intresserade är välkomna. Meddela [Torbjörn](/tobbe) så att vi vet att vi får rum.\r\n\r\n- När: **fredag 29 april 14:00 - 16:00**\r\n- Var: **Athega - [Hantverkargatan 21](http://maps.google.se/maps?f=q&source=s_q&hl=sv&geocode=&q=athega&aq=&sll=61.606396,21.225586&sspn=35.701896,89.472656&ie=UTF8&hq=athega&hnear=&ll=59.328439,18.04675&spn=0.004526,0.010922&z=17&iwloc=A)**\r\n\r\n_Detta är nyttigt så missa det inte!_",
- "last_updated_by": "chrille",
- "published_at": {
- "$date": 1303768800000
- }
- },
- {
- "_id": {
- "$oid": "4e09cda09762567cb3000005"
- },
- "content": "Athega sponsrade även i år, liksom förra året, konferensen [Nordic Ruby](http://nordicruby.org/), en tvådagars enspårskonferens om främst Ruby men även mycket annat nyttigt för systemutvecklare.\r\nFyra personer från Athega var på plats i Göteborg för detta välarrangerade och lyckade evenemang.\r\n[Lite bilder från konferensen finns här](http://www.flickr.com/photos/athega/sets/72157626891599151/).\r\n\r\n ",
- "created_at": {
- "$date": 1309265312000
- },
- "day": 28,
- "last_updated_by": "peter",
- "month": 6,
- "published_at": {
- "$date": 1309212000000
- },
- "slug": "2011/06/28/athega-pa-nordic-ruby-2011",
- "title": "Athega på Nordic Ruby 2011",
- "updated_at": {
- "$date": 1310575309000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4e6a28da97625676cb000003"
- },
- "content": "Jag firade midsommar på Island i år. Förutom att jag såg lite av landet deltog jag i Kanban Leadership Retreat (David J Anderson and Associates). Jag tycker det var en mycket givande tillställning och formatet (unconference) vad en ny erfarenhet för mig. Sessionernas innehåll bestämde vi tillsammans och i princip inga sessioner var förberedda innan. Detta gjorde att fria diskussioner fick stort utrymme. Sessionerna blev väldigt varierande i innehåll.\r\n\r\nDe övriga deltagarna var de flesta mycket erfarna av både Lean/System thinking och Kanban. Själv sög jag i mig av den samlade expertisen så mycket jag kunde. Eftersom vi alla bodde på samma hotell blev det naturligt med fortsatta spännande diskussioner långt in på småtimmarna.\r\n\r\nDet enda jag efteråt känner var lite synd var att många sessioner krockade tidsmässigt, och jag hade velat varit med på alla. \r\n\r\n> Får jag möjlighet att åka nästa år, tvekar jag inte en sekund.\r\n\r\n// [Mats](/mats)",
- "created_at": {
- "$date": 1315580122000
- },
- "day": 9,
- "last_updated_by": "peter",
- "month": 9,
- "published_at": {
- "$date": 1315519200000
- },
- "slug": "2011/09/09/kanban-klris",
- "title": "Kanban Leadership Retreat Iceland 2011",
- "updated_at": {
- "$date": 1315877231000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4e6e7b79355c310e66000002"
- },
- "content": "\r\n\r\nFör lite mer än en vecka sedan kom jag hem från Colorado och konferensen\r\n[Rocky Mountain Ruby](http://rockymtnruby.com/), förra året hette den \r\n[Mountain.rb](http://mountainrb.com/) men det var tydligen många som misstog den för [MountainWest\r\nRubyConf](http://mtnwestrubyconf.org/) så arrangörerna valde helt sonika att byta\r\nnamn på konferensen. Precis som förra året hölls den på [Boulder Theater](http://www.bouldertheater.com/).\r\n\r\n## Charity Workshops (31/8)\r\n\r\nDagen innan konferensen började arrangerades det ett antal halvdagslånga\r\nvälgörenhets-workshops.\r\n\r\n### Vital Testing\r\n\r\nPå förmiddagen valde jag att medverka i\r\n[Vital Testing](http://rockymtnruby.com/charity_workshop#vital)\r\nmed [Jim Weirich](http://onestepback.org/).\r\n\r\nJim inledde med att ge tips på **vad** snarare än **hur** man borde testa.\r\nEfter det fortsatte vi med att jobba på några enkla\r\n[problem/katas](http://onestepback.org/vital_testing/). Vi fick välja en partner att parprogrammera med, jobba ett litet tag för\r\natt sedan kasta koden, byta partner och upprepa övningen.\r\n\r\n> `if` is only a loop run once.\r\n\r\n### TDD Javascript and Rails 3.1\r\n\r\nEfter lunch anslöt jag och några nyfunna vänner till\r\n[TDD Javascript and Rails 3.1](http://rockymtnruby.com/charity_workshop#tddjs)\r\npå [Trada Codespace](http://www.trada.com/codespace/). Vi fick lära oss mer om hur\r\n[Asset Pipeline](http://guides.rubyonrails.org/asset_pipeline.html) i Ruby on Rails 3.1 fungerar och hur man testar sin JavaScript-kod med [QUnit](http://docs.jquery.com/Qunit) och [Jasmine](http://pivotal.github.com/jasmine/).\r\n\r\nJag gillade hur de hade förberett två git-repos med kod där vi fick översätta tester från ett testramverk till det andra, samt välja mellan [CoffeeScript](http://coffeescript.com/) och JavaScript.\r\n\r\n## Torsdag (1/9)\r\n\r\n### Focus? Why Do I Need More Stinkin' Focus?\r\n\r\n[Mike Gehard](https://twitter.com/mikegehard) inledde konferensen med\r\natt [övertyga oss](http://www.slideshare.net/msgehard/focus-and-meditation) om att fokus är något man måste öva på. En metod för detta är att meditera, självklart hade han en hashtag för detta: [#devmed](http://www.hashtag.info/tag/devmed)\r\n\r\n### Keynote\r\n\r\n[Michael Feathers](http://michaelfeathers.typepad.com/) pratade om hur\r\nman tar reda på vilken kod som behöver bytas ut, hur man planerar för\r\nersättningen, osv. Han nämnde även [Conway’s law](http://en.wikipedia.org/wiki/Conway's_Law).\r\n\r\n### API Design Matters\r\n\r\n[Anthony Eden](http://www.anthonyeden.com/), lika välklädd som vanligt,\r\nhöll en mycket bra föreläsning om API-design. Även fast jag såg en tidigare\r\nversion av föreläsningen på [Nordic Ruby](http://nordicruby.org/) så var\r\ndet informativt.\r\n\r\nHan nämnde även att man ska fokusera på klienten först, sen kan man\r\nbörja tänka på implementationen. Lästips:\r\n[Little manual of API design](http://chaos.troll.no/~shausman/api-design/api-design.pdf) (**PDF**).\r\n\r\n\r\n#### Enligt Anthony ska ett API vara:\r\n\r\n 1. Lätt att bygga vidare på\r\n 2. Svårt att missbruka\r\n 3. Tillräckligt kraftfullt\r\n\r\n### CRUD Is Not REST - Hypermedia For Y'All!\r\n\r\n[Nick Sutterer](http://nicksda.apotomo.de/) pratade om\r\n[HATEOAS](http://en.wikipedia.org/wiki/HATEOAS) eller\r\n*Hypermedia as the Engine of Application State* och varför CRUD inte är\r\nREST! Till skillnad från föreläsningen om HATEOAS på\r\n[Øredev 2010](http://oredev.org/2010) (där man använde XHTML)\r\nså kombinerade Nick representationen av datat och länkarna i JSON.\r\n\r\nSjälvklart hade han skrivit ett bibliotek för att göra detta på ett\r\nsmidigt sätt. [Roar!](http://rubygems.org/gems/roar) eller\r\nRESTful, resource-oriented architectures in Ruby. Han rekomenderade även böckerna\r\n[REST in Practice](http://restinpractice.com/) och \r\n[RESTful Web Services\r\nCookbook](http://www.restful-webservices-cookbook.org/).\r\n\r\n### If You See the Mountain Lion, It's Too Late\r\n\r\n[Grant Blakeman](http://grantblakeman.com/) berättade om “design thinking”\r\noch hur det går att applicera på det mesta, inte bara grafisk design.\r\n\r\n### Things you didn’t know about Exceptions\r\n\r\n[Avdi Grimm](http://about.avdi.org/) pratade om kreativ felhantering i\r\nRuby. Ett av tipsen var att kalla på raise inne i rescue. Han har även skrivit\r\n[Hammertime](http://avdi.org/devblog/2010/01/18/hammertime/),\r\nen interaktiv felkonsoll för Ruby. Jag kan definitivt rekomendera att köpa hans ebok\r\n[Exceptional Ruby - Master the art of handling failure in Ruby](http://exceptionalruby.com/).\r\n\r\n### Mastering the Ruby Debugger\r\n\r\nDetta var ljug, på ett bra sätt… [Jim](http://edgecase.com/)\r\nberättade istället om IRB-ersättaren [Pry](http://pry.github.com/).\r\n\r\n### Cognitive Psychology and the Zen of Code\r\n\r\n[Jay Zeschin](http://unstuck.zeschin.org/) på [Bit Theory](http://bittheory.com/)\r\npratade om [kognitiv psykologi](http://sv.wikipedia.org/wiki/Kognitiv_psykologi). Mer specifikt så handlade det om heuristik, mönsterigenkänning och om hur man kan “hacka” [metakognition](http://sv.wikipedia.org/wiki/Metakognition). Han tipsade även om boken [Blink: The Power of Thinking Without Thinking](http://en.wikipedia.org/wiki/Blink_(book\\)).\r\n\r\n### Ignite Boulder Sweet 16\r\n\r\nPå kvällen deltog jag i [Ignite Boulder](http://igniteboulder.com/) och\r\ndet var lika inspirerande och galet som jag hört\r\n[folk](http://acrookston.com/) berätta om tidigare. Bland annat försökte min kompis [Prakash](http://www.prakashmurthy.com/)\r\natt förklara de något omständiga reglerna i Cricket.\r\n\r\nFormatet för Ignite är väldigt enkelt:\r\n\r\n - 5 minuter\r\n - 20 automatiskt laddade slides\r\n\r\n(Arrangörerna kommer snart att posta videos från eventet på\r\n[YouTube](http://www.youtube.com/user/igniteboulder))\r\n\r\n## Fredag (2/9)\r\n\r\n### Real Time Rack\r\n\r\n[Konstantin Haase](http://rkh.im/) pratade om hur man kan vrida och\r\nvända på [Rack](http://rack.rubyforge.org/) för att få streaming\r\n(HTTP server push) att fungera. Alternativen som presenterades var \r\n[Server-Sent Events](http://dev.w3.org/html5/eventsource/) (envägs,\r\nenkelt, klienten går att implementera i JavaScript) och\r\n[WebSockets](http://websocket.org/) (tvåvägs, men stöds sällan).\r\n\r\n### Ruby Messaging Patterns\r\n\r\n[Gerred Dillon](https://github.com/gerred) berättade om\r\n[AMQP](http://en.wikipedia.org/wiki/Advanced_Message_Queuing_Protocol)\r\noch hur man kan använda ett kösystem för att förenkla kommunikationen\r\nmed “Enterprise”-system. Han nämnde även [Chef](http://www.opscode.com/chef/), [EventMachine](http://rubyeventmachine.com/) och [Redis](http://redis.io/).\r\n\r\n### Cloning Twitter: Rails + Cassandra = Scalable Sharing\r\n\r\n[Charles Max Wood](http://teachmetocode.com/) berättade om ett kundprojekt som i stort sett gick ut på att bygga en klon av Twitter… med Cassandra som databas.\r\n\r\nBegrepp som nämndes: [Brewer’s CAP Theorem](http://www.julianbrowne.com/article/viewer/brewers-cap-theorem) och [Thrift](http://thrift.apache.org/). Han har även börjat jobba på ett ORM för Cassandra som han däpt till [Sandra](http://rubygems.org/gems/sandra).\r\n\r\n### Länkar till några presentationer\r\n\r\n - [Code First, Ask Questions Later](http://speakerdeck.com/u/tclem/p/code-first-ask-questions-later)\r\n - [A Documentation Talk](http://speakerdeck.com/u/holman/p/a-documentation-talk)\r\n - [Start using Jasmine. Write better JavaScript. Profit.](http://speakerdeck.com/u/searls/p/jasmine-for-rubyists-rockymtnruby-with-cory-flanigan-justin-searls)\r\n - [Do Your Commit Messages Suck?](http://speakerdeck.com/u/rmm5t/p/do-your-commit-messages-suck)\r\n\r\n## Lördag (3/9)\r\n\r\nNär jag ätit frukost gick jag till [Boulder County Farmers’ Market](http://www.boulderfarmers.org/) för att sedan fortsätta upp på vandringsleden förbi [Red\r\nRocks](http://www.bouldercolorado.gov/index.php?option=com_content&task=view&id=3029&Itemid=1035).\r\nJag åt självklart lunch på [Mountain Sun](http://www.mountainsunpub.com/), beställ Tim’s Blackened Chicken Quesadilla så förstår du varför. Eftermiddagen spenderades på [The Cup](http://www.thecupboulder.com/) tillsammans med min kompis [Ben](http://benatkin.com/).\r\nVi snackade kod och hackade lite på min gem [Pinch](http://peterhellberg.github.com/pinch/).\r\n\r\nResten av helgen gick åt att flyga hem till Stockholm :)\r\n\r\n**Uppdatering:** Nu ligger några av de filmade presentationerna uppe på [Confreaks](http://confreaks.net/events/rockymtnruby2011)\r\n\r\n// [Peter](/peter)",
- "created_at": {
- "$date": 1315863417000
- },
- "day": 12,
- "last_updated_by": "peter",
- "month": 9,
- "published_at": {
- "$date": 1315778400000
- },
- "slug": "2011/09/12/rocky-mountain-ruby-2011",
- "title": "Rocky Mountain Ruby 2011",
- "updated_at": {
- "$date": 1318180424000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4e6f29ee355c310fbe000001"
- },
- "content": "När ett team visualiserar arbetet och använder WIP-limits (begränsning av pågående arbete) kan detta till exempel göras per kolumn på tavlan. Vi får ha 3 pågående arbete i analys, 4 pågående arbete i implementation systest osv. Om man arbetar med ett team som består av generalister (större delen av teamet kan utföra aktiviteter i flera kolumner) vandrar ofta personen med aktiviteten genom olika lägen på tavlan. Då kan man använda en total WIP-limit och delvis frångå den flödes drivande mekanismen i Kanban. En CONWIP på flera eller alla kolumner. Men med många team-medlemmar och många aktiviteter kan det vara lite otydligt vilken WIP teamet ligger på. \r\n\r\nVi vill visualisera detta tydligt och dagligen. Vi provar just nu en WIP-Indikator som vi uppdaterar varje dag på tavelmötet. Då får vi en klar och tydlig bild av mängden pågående arbete och hur nära taket vi är (Eller om vi i värsta fall går över på akuta ärenden med hög SLA)\r\n\r\n[](http://img.mu/w9OaCT)\r\n\r\n// [Mats](/mats)",
- "created_at": {
- "$date": 1315908078000
- },
- "day": 13,
- "last_updated_by": "mats",
- "month": 9,
- "published_at": {
- "$date": 1315864800000
- },
- "slug": "2011/09/13/wip-limit-indicator",
- "title": "Kanban WIP-Limit indikator",
- "updated_at": {
- "$date": 1323207904000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4e7357c5355c3126b9000007"
- },
- "content": "Att utveckla ren, funktionell kod av hög kvalitet, med få buggar, tror jag är något som alla skulle vilja hävda att det gör. Vissa gör det säkert redan, men jag skulle vilja dela med mig av en kort dragning jag hade för Aftonbladets utvecklingsavdelning i dag.\r\n\r\n[TDD](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd) (Test Driven Design) är en av flera xDD-metoder som jag fastnat för litet extra och till slut blivit helt beroende av. Jag tänkte inte gå in närmare på exakt vad det innebär, eftersom så många andra gör det [bättre](http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd).\r\n\r\nDenna presentation riktar sig till den som vet vad ett enhetstest är, kanske testar litet, men där aha-upplevelsen inte riktigt infunnit sig ännu. Naturligtvis är den riktad och lämpar sig bäst med mig ivrigt gestikulerandes framför.\r\n\r\n// [Christian](/chrille)\r\n\r\n",
- "created_at": {
- "$date": 1316181957000
- },
- "day": 16,
- "last_updated_by": "peter",
- "month": 9,
- "published_at": {
- "$date": 1316124000000
- },
- "slug": "2011/09/16/pragmatisk-installning-till-tdd",
- "title": "En pragmatisk inställning till testdriven design",
- "updated_at": {
- "$date": 1318274409000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4e799b49355c311fc5000001"
- },
- "content": "[Mats Ygfors](/mats), som jobbar som projektledare på Athega, kommer att föreläsa om [Kanban](/kanban) utifrån sina erfarenheter på en stor bank.\r\n\r\nInnehåll\r\n\r\n- Grunderna i Kanban\r\n- Vilka grundproblem upplevde vi och hur kunde [Kanban](/kanban) adresserade dessa?\r\n- Hur teamet jobbar med Kanban och vilka rutiner och synsätt som behövdes utöver mekaniken i [Kanban](/kanban)\r\n\r\nTidsåtgång ca 2:30 h, vilket inkluderar en halvtimmes paus.\r\n\r\nAthegianer, kunder, bekanta, intresserade är välkomna. Meddela [Torbjörn](/tobbe) så att vi vet att vi får rum.\r\n\r\n- När: **fredag 30 september 14:00 - 16:30**\r\n- Var: **Athega - [Hantverkargatan 21](http://maps.google.se/maps?f=q&source=s_q&hl=sv&geocode=&q=athega&aq=&sll=61.606396,21.225586&sspn=35.701896,89.472656&ie=UTF8&hq=athega&hnear=&ll=59.328439,18.04675&spn=0.004526,0.010922&z=17&iwloc=A)**\r\n\r\n_Detta är nyttigt så missa det inte!_",
- "created_at": {
- "$date": 1316592457000
- },
- "day": 21,
- "last_updated_by": "mats",
- "month": 9,
- "published_at": {
- "$date": 1316556000000
- },
- "slug": "2011/09/21/kanban",
- "title": "Mats föreläser om Kanban",
- "updated_at": {
- "$date": 1316722198000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4e88364f355c3137c5000007"
- },
- "content": "Gjorde en liten slide angående ledtider och spill i relation till mängden pågående arbete. Ville försöka visualisera vad som händer vid task switching och effekten på ledtiden. \r\n\r\n\r\n\r\n// [Mats](/mats)",
- "created_at": {
- "$date": 1317549647000
- },
- "day": 2,
- "last_updated_by": "peter",
- "month": 10,
- "published_at": {
- "$date": 1317506400000
- },
- "slug": "2011/10/02/limit-work-in-progress",
- "title": "Begränsa mängden pågående arbete",
- "updated_at": {
- "$date": 1318274191000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4eabf01e355c315c3f000033"
- },
- "content": " \r\nÅrets [Athega Code Base](/code-base-2011) är förlagd till ön Torskär i det allra ytterstra stråket av skärgård innan havet mot Åland. På ön står den gamla fyren, Söderarm, känd från väderrapporter och vindobservationer.\r\n\r\nHär driver Anngret Andersson en fantastisk [konferensanläggning](http://www.soderarm.com/web/start.shtml) som jag varmt kan rekommendera. Öns [historia](http://www.soderarm.com/web/historia.shtml) är intressant och vi huserar i ett hus som byggts till i fem omgångar. Med den sista kom ett kontrolltorn åt Sjöfartsverket med makalös utsikt. Detta rum har varit vår kodplats under dessa dagar.\r\n\r\n Bilden till vänster visar faktiskt inte en Athegaanställd. Den är från 1988 och visar hur rummet användes innan vi tog över.\r\n
\r\n\r\n## Projektet\r\nMed smartphone-vågen har ett onaturligt stort behov av nativa mobilappar till framför allt iOS, men också Android, sköljt över oss. Alla vill vara representerade i Apples och Googles app stores. Som utvecklare får man frågan ”Hur mycket kostar det att göra en Iphone-app?”. Den frågan är självklart väldigt svårbesvarad utan att veta vad appen ska göra.\r\n\r\nJag har varit med om detta tidigare, för snart 15 år sedan. Då var världen översvämmad av webbyråer, som många gånger var konverterade reklambyråer. Deras uppgift var att svara på frågan ”Vad kostar en hemsida?\" och sedan bygga en hemsida. Det var sällan viktigt vad den innehöll, bara man \"fanns på nätet\".\r\n\r\nMin poäng är alltså, att det för närvarande görs på tok för mycket nativa mobilappar. Många appar skulle passa mycket bättre som mobila webbappar. Med HTML5 och kraftfulla telefoner är begränsningarna få.\r\n\r\n### Athega Dashboard\r\n \r\nPå Athega använder vi det eminenta tidrapporteringssystemet, [Harvest](http://http://www.getharvest.com/). Vi använder även Google för mail och document, mm. Dessa system, i kombination med våra egna system har alla publicerade APIer, som lämpar sig ypperligt att bygga en webbapp på. Jag tänkte mig en dashboard där du kan se grafer över tidrapporter, mätvärden, rapportera tid, osv.\r\n\r\nDenna gång hann jag med att göra en graf som visar hur vår rapporterade tid fördelar sig över aktuell månad. Servern kommunicerar direkt med Harvest och telefonen med servern. Lokalt ritas ett diagram upp med RGraph som använder sig av ett canvaselement. Koden för den intresserade ligger på [GitHub](https://github.com/athega/acb2011-chrille).\r\n\r\n#### Tekniker som utforskades och användes\r\n\r\n - [Harvest API](http://www.getharvest.com/api/)\r\n - [RGraph](http://www.rgraph.net/)\r\n - [Ruby](http://ruby-lang.org/)\r\n - [Sinatra](http://www.sinatrarb.com/)\r\n\r\n\r\n\r\n/ [Christian](chrille)",
- "created_at": {
- "$date": 1319890974000
- },
- "day": 28,
- "last_updated_by": "peter",
- "month": 10,
- "published_at": {
- "$date": 1319752800000
- },
- "slug": "2011/10/28/det-gors-alldeles-for-manga-nativa-mobilappar",
- "title": "Det görs alldeles för många nativa mobilappar",
- "updated_at": {
- "$date": 1320071147000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4eaea2be355c316762000002"
- },
- "content": " \r\n\r\nMin tanke med mitt projekt på [Athega Code Base 2011](/code-base-2011) var att skapa en startpunkt för framtida projekt skrivna med ramverket [Backbone.js](http://documentcloud.github.com/backbone/), där testramverk och grundläggande filstruktur redan är uppsatt.\r\n\r\nCoffeeScript används både i implementation och specs för Backbone.js.\r\nRuby används i Sinatra-appen. Jag experimenterade med att använda [Evergreen](https://github.com/jnicklas/evergreen), men valde till slut att enbart förlita mig på Jasmine för att testa de genererade JavaScripten. På Rubysidan valde jag att använda MiniTest/Spec.\r\n\r\nJag använder mig av Guard (samt guard-sass och guard-coffeescript)\r\nför att kompilera Sass och CoffeeScript till CSS och JavaScript.\r\n\r\n### Tekniker som utforskades och användes\r\n\r\n - [Backbone.js](http://documentcloud.github.com/backbone/)\r\n - [CoffeeScript](http://coffeescript.org/)\r\n - [Jasmine](http://pivotal.github.com/jasmine/)\r\n - [Guard](https://github.com/guard/guard)\r\n - [Sinatra](http://www.sinatrarb.com/)\r\n - [Minitest](https://github.com/seattlerb/minitest)\r\n\r\nKoden för den intresserade ligger på [GitHub](https://github.com/athega/bootstrap-backbone-and-sinatra).\r\n\r\n/ [Peter](/peter)\r\n\r\n__PS.__ _Jag är med och driver projektet [CoffeeScript Cookbook](http://coffeescriptcookbook.com) så det är verkligen på tiden att jag börjar koda lite CoffeeScript._",
- "created_at": {
- "$date": 1320067774000
- },
- "day": 31,
- "last_updated_by": "peter",
- "month": 10,
- "published_at": {
- "$date": 1320015600000
- },
- "slug": "2011/10/31/bootstrap-for-backbone-och-sinatra",
- "title": "Bootstrap-projekt för Backbone.js och Sinatra",
- "updated_at": {
- "$date": 1320107388000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4ec2d1c5355c315e68000002"
- },
- "content": "Klockan 11:11 den 11/11 - 11 firades på en föreläsning om Java 7!\r\n\r\nÖredev 2011 pågick mellan den 9/11 och 11/11 och sträckte sig från geek feminism till F1 via Java, Ruby, HTML5 m.m. Med riktigt inspirerande keynotes där Alexis Ohanian stod ut enligt mig, släng ett öga på [hipmunk.com](http://www.hipmunk.com), och överlag bra föreläsare så upplevde jag konferensen som riktigt lyckad.\r\n\r\nSjälv valde jag framför allt föreläsningar inom Java eller HTML5 men smög mig även iväg på CoffeeScript m.m. Något som var riktigt intressant var [Vaadin](http://vaadin.com), ett server-side java framework för webbappar. Tanken är intressant, ett framework där du enbart arbetar med Java och skapar webbappar genom att utnyttja färdiga GUI-komponenter, självklart kan man utveckla egna. Dock känner jag mig lite skeptisk mot att lägga allt på servern när HTML5 nu låter oss göra tvärtom och nyttja kraften i användarnas egna datorer.\r\n\r\nAntar att det bara är att vänta och se... kanske ska analysera detta jag skriver nu om ett år efter nästa Öredev!\r\n\r\n/ [Alex](/alex)",
- "created_at": {
- "$date": 1321390533000
- },
- "day": 15,
- "last_updated_by": "peter",
- "month": 11,
- "published_at": {
- "$date": 1321311600000
- },
- "slug": "2011/11/15/oredev",
- "title": "Öredev 11/11 - 11",
- "updated_at": {
- "$date": 1321442950000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4eca7c41355c317d7100000d"
- },
- "content": " \r\n\r\nÅrets Øredev… På plats från Athega var förutom [jag](/chrille), [Alex](/alex), [Johan](/johan), [Mats](/mats), [Peter](/peter) och [Petter](/petter) (i alfabetisk ordning). Med hotellet ett knappt kvarter bort hade vi optimerat för att se så mycket som möjligt av konferensen som möjligt utan att distraheras av Malmö i övrigt.\r\n\r\nKonferensen öppnas med en keynote av [@kn0thing](http://twitter.com/#!/kn0thing) som berättar hur Reddit tagit sig till en nivå där de har nära två miljarder sidvisningar i månaden. Filosofin är bland annat “The back button is your biggest enemy” och “Users come first”.\r\n\r\nEftersom Øredev är en konferens med många parallella spår, ställs man hela tiden inför en rad svåra val. Nedan sammanfattar jag några av de val jag gjorde och något jag tog med mig från respektive session.\r\n\r\n - **Sonar Code Metrics** _Matthew J. McCullough_. Se på sonar som ett rent positivt verktyg. Fokusera på förbättringar. Kolla in http://memo.sonarsource.org.\r\n - **The mental shift needed for Scala and Clojure** _Aslam Khan_ [@aslamkhn](http://twitter.com/#!/aslamkhn). Enligt Aslam är ett bra sätt att lära sig funktionell programmering och ta sig ur den trygga objektorienterade konceptvärlden att utgå från Haskell, testa motsvarande i Scala och till sist i produktion.\r\n - **Visual Collaboration** _Heather Willems och Nora Herting_ [@imagethink](http://twitter.com/#!/imagethink). Heather och Nora visar tekniker för hur vi kan få bättre anteckningar genom illustrationer, färger, ikoner, osv. Att kolla upp iPad Pro sketchbook.\r\n - **A less technical talk on technical communication** _Jon Skeet_ [@jonskeet](http://twitter.com/#!/jonskeet). Ettan på StackOverflow berättar om jur viktigt det är att vara snäll när man kommunicerar i ett forum som exempelvis StackOverflow. Fokusera på vad du vill ha sagt och utelämna detaljer, även om motparten har fel. Som utvecklare kommunicerar du genom din kod. Tänk på vad du säger till den nästa som ska läsa den.\r\n - **API – the hidden UI** _Fredrik Mörk_ [@fmork](http://twitter.com/#!/fmork). Det är viktigt att du tänker igenom ditt API. Ett GUI är lätt att ändra, det är inte ett API.\r\n - **Abstraction distractions** _Neal Ford_ [@neal4d](http://twitter.com/#!/neal4d). Som utvecklare hanterar vi ofta abstraktioner av verkligheten. Ofta handlar det om abstraktioner i flera nivåer. Det kan därför vara bra att alltid förstå ett lager under den aktuella nivån.\r\n - **Embracing Uncertainty – the Hardest Pattern of All** _Dan North_ [@tastapod](http://twitter.com/#!/tastapod). Dan introducerar termen “halftime of requirements”, som är ett mått på hur llång tid i veckor (!) det tar innan hälften av kraven i din backlog inte längre är aktuella. Han presenterar även den bästa metaforen jag hört om varför parprogrammering är så bra. Två personer som parar löser ett problem de inte hade klarat på egen hand. Det är som att klappa händerna, det krävs två händer (för de flesta).\r\n - **Event Sourcing explained** _Rickard Öberg_ [@rickardoberg](http://twitter.com/#!/rickardoberg). Rickard får mig äntligen att förstår vad event sourcing handlar om. Kolla in qi4j.org.\r\n - **Stack Overflow: Social Software for the Anti-Social Part II: Electric Boogaloo** _Jeff Atwood_ [@codinghorror](http://twitter.com/#!/codinghorror). Jeff menar att, som programmerare, älskar man regler. Man är gift med sina regler. Därför är StackOverflow designat som ett spel, med regler. De som bidrar får poäng, utmärkelser och annat som lockar till ännu fler bidrag.\r\n - **Modeling concurrency in Ruby and beyond** _Ilya Grigorik_ [@igrigorik](http://twitter.com/#!/igrigorik). Ilya berättar om problem med HTTP 1.1 som antingen inte stöds alls eller är felimplementerat. Resultatet är att en genomsnittlig användare med 10Mbps endast använder 16% av sin bandbredd, då resten äts upp av overhead, mm. Han visar också hur man kan använda Ruby Fibers på ett kreativt sätt för att gömma komplexitet med asynkronitet. Kolla in goliath.io.\r\n - **Web Application Security** _Tobias Järlund_ [@jarlund](http://twitter.com/#!/jarlund). Gör aldrig exempel som innehåller säkerhetsfel, även om de bara är exempel kommer de förmodligen att hamna i produktion ändå.\r\n\r\nI övrigt bjöd Øredev även denna gång på en skön tillställning, med massor av härligt folk. Ser fram emot nästa år!\r\n\r\n/ [Christian](/chrille)",
- "created_at": {
- "$date": 1321892929000
- },
- "day": 21,
- "last_updated_by": "chrille",
- "month": 11,
- "published_at": {
- "$date": 1321830000000
- },
- "slug": "2011/11/21/oredev-2011",
- "title": "Øredev 2011",
- "updated_at": {
- "$date": 1321952631000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4ecaafe9355c317d7100000f"
- },
- "content": " \r\n\r\nFör snart två veckor sedan åkte de flesta av oss till konferensen [Øredev - Enter\r\nUserverse](http://oredev.org/2011/) i Malmö. Jag antecknade ungefär 40 sidor i min Moleskine under\r\nkonferensen, men denna bloggpost täcker bara några godbitar :)\r\n\r\n### Keynote: Only your mom wants to use your website\r\n\r\n[Alexis Ohanian](http://twitter.com/kn0thing) berättade om hur\r\n[Reddit](http://reddit.com) startades, att de bara lagt ut $500 på\r\nmarknadsföring (stickers) och att genomtänkta användargränssnitt\r\nvisa att man respekterar användarna.\r\n\r\n> Your biggest enemy online is the back button.\r\n\r\n### JavaScript effects\r\n\r\n[Seb Lee-Delisle](http://seb.ly/) inledde med att prata om kreativ programmering med\r\n[Processing](http://processing.org/) och [openFrameworks](http://www.openframeworks.cc/).\r\nHan fortsatte med att live-koda ett [animerat träd](http://dl.dropbox.com/u/5096013/ConfStuff/OredevTree.html) med Canvas och JavaScript.\r\n\r\n#### Länkar\r\n\r\n - [The Creative Coding Podcast ](http://creativecodingpodcast.com/)\r\n - [CreativeJS.com](http://creativejs.com/)\r\n - [Three.js](https://github.com/mrdoob/three.js/)\r\n\r\n### WebSocket: Hyper or What?\r\n\r\nPeter Moskovits från [Kaazing](http://kaazing.com/)\r\nhöll en rätt imponerande\r\n[presentation](http://prezi.com/bzx8jutmpzrb/oredev-2011-kaazing-websocket-presentation/)\r\noch demonstration av möjligheterna med WebSocket.\r\n\r\n#### Länkar\r\n\r\n - [WebSocket.org](http://websocket.org/)\r\n - [When can I use...](http://caniuse.com/)\r\n\r\n### Node.js - A practical introduction\r\n\r\n[Felix Geisendörfer](http://twitter.com/felixge) berättade om\r\n[Node.js](http://nodejs.org/)\r\nhistoria och ekosystem. Han nämnde även att de använder\r\nV8's Crankshaft JIT i Node.js 0.6\r\n\r\n### Keynote: Abstraction Distractions\r\n\r\n[Neal Ford](http://twitter.com/neal4d) höll en väldigt bra keynote där\r\nhan bland annat listade 10 “regler” för att hantera abstraktioner.\r\n\r\n 1. Förväxla inte abstraktionen för den äkta varan.\r\n 2. Förstå en nivå under din vanliga abstraktion.\r\n 3. När de väl internaliserats är de mycket svåra att bryta.\r\n 4. Abstraktioner är både väggar och fängelser.\r\n 5. Döp inte saker som exponerar underliggande detaljer.\r\n 6. Dina abstraktioner är inte perfekta.\r\n 7. Förstå konsekvenserna av rigiditet.\r\n 8. Bra APIer är både hög- och lågnivå på samma gång.\r\n 9. Generalisera för 80% av lösningen.\r\n 10. Bli inte distraherad av dina abstraktioner.\r\n\r\n> Users want 100% of what they want.\r\n\r\n### Ilya Grigorik\r\n\r\nDen enligt mig bästa talaren på konferensen var [Ilya](http://igvita.com/) från Google (tidigare\r\n[PostRank](http://www.postrank.com/)). Det är verkligen inte vanligt med\r\nutvecklare som har så bra förmåga att förmedla sin kunskap så bra som\r\nhan lyckades med. Jag gick därmed på alla tre av Ilyas\r\nföreläsningar.\r\n\r\n#### Introduction to Machine Learning\r\n\r\nIlya inledde med att beskriva vad maskininlärning faktiskt är. Och att\r\nman kan se det som evolution baserat på empiriska data.\r\n\r\nHan rekomenderade även boken [Mahout in Action](http://www.manning.com/owen/)\r\nsamt algoritmen [Perseptron](http://en.wikipedia.org/wiki/Perceptron).\r\nNågra Ruby bibliotek som användes i exempelkoden var\r\n[rb-libsvm](https://github.com/febeling/rb-libsvm) och\r\n[linalg](https://github.com/quix/linalg).\r\n\r\nHan avslutade med att rekomendera att vi skulle kolla på [Google Prediction\r\nAPI](http://code.google.com/apis/predict/).\r\n\r\n#### Building High Performance Ruby Web-Services\r\n\r\nIlya pratade om [Goliath](http://goliath.io/) och [EM-Synchrony](https://github.com/igrigorik/em-synchrony).\r\n\r\n> Request isolation is a bug, not a feature.\r\n\r\nHan visade även hur man med hjälp av Fibers (genom EM-Synchrony) kan\r\nfortsätta använda samma typ av flödeskontroll som man har tillgång till\r\ni synkrona ramverk.\r\n\r\nAvslutningsvis rekomenderade han två PeepCode screencasts om\r\n[EventMachine](https://peepcode.com/products/eventmachine)\r\n([del 2](https://peepcode.com/products/eventmachine-ii)).\r\n\r\n> HTTP _can_ be a high performance transport.\r\n\r\n#### Modeling concurrency in Ruby and beyond\r\n\r\nEnligt Ilya klarar man sig inte med enbart trådar eller events, man\r\n**behöver** båda två.\r\n\r\nHan nämnde [Actor-modellen](http://en.wikipedia.org/wiki/Actor_model)\r\nsom hastigast, men fokuserade mer på\r\n[CSP](http://en.wikipedia.org/wiki/Communicating_sequential_processes)\r\ndå han såg några fördelar med den modellen. En stor skillnad mellan Actors\r\noch CSP är att man i CSP fokuserar på namngivna “kanaler” snarare än meddelanden.\r\n\r\nI CSP kan man även delegera kanaler, kanske till en annan process.\r\n\r\nExempelkoden använde sig bland annat av Ruby-biblioteket [Agent](https://github.com/igrigorik/agent).\r\n\r\n##### Några språk och ramverk fokuserade på Actors\r\n\r\n - [Erlang](http://www.erlang.org/)\r\n - [Scala](http://www.scala-lang.org/)\r\n - [Kilim](http://www.malhar.net/sriram/kilim/)\r\n - [Akka](http://akka.io/)\r\n\r\n##### Några språk och ramverk fokuserade på CSP\r\n\r\n - [Limbo](http://www.vitanuova.com/inferno/limbo.html)\r\n - [Go](http://golang.org/)\r\n - [CSP++](http://www.uoguelph.ca/~gardnerw/csp++/index.html)\r\n - [Agent](https://github.com/igrigorik/agent)\r\n\r\nHan rekomenderade även boken [Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages](http://pragprog.com/book/btlang/seven-languages-in-seven-weeks).\r\n\r\n/ [Peter](/peter)",
- "created_at": {
- "$date": 1321906153000
- },
- "day": 21,
- "last_updated_by": "peter",
- "month": 11,
- "published_at": {
- "$date": 1321830000000
- },
- "slug": "2011/11/21/oredev-enter-userverse",
- "title": "Øredev - Enter Userverse",
- "updated_at": {
- "$date": 1321906423000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4ece32a9355c312c85000002"
- },
- "slug": "2011/11/24/introduktion_tdd_och_ramverk",
- "title": "Introduktion TDD och ramverk",
- "content": "Fredagsmys på Athega\r\n--------------------\r\n\r\n[Christian Lizell](/chrille), som är utvecklare på Athega, kommer att föreläsa om [TDD](http://www.agiledata.org/essays/tdd.html) (Test Driven Development).\r\n\r\nFöreläsning är en pragmatisk introduktion till att utveckla testdrivet och vad det innebär. Vi kommer även titta på några ramverk och verktyg, såsom [JUnit](http://www.junit.org/), [Hamcrest](http://code.google.com/p/hamcrest/wiki/Tutorial) och [Mockito](http://code.google.com/p/mockito/).\r\n\r\nTidsåtgång ca 2:30 h, vilket inkluderar paus.\r\n\r\nAthegianer, kunder, bekanta, intresserade är välkomna. Meddela [Torbjörn](/tobbe) så att vi vet att vi får rum.\r\n\r\n- När: **fredag 25 november 14:00 - 16:30**\r\n- Var: **Athega - [Hantverkargatan 21](http://maps.google.se/maps?f=q&source=s_q&hl=sv&geocode=&q=athega&aq=&sll=61.606396,21.225586&sspn=35.701896,89.472656&ie=UTF8&hq=athega&hnear=&ll=59.328439,18.04675&spn=0.004526,0.010922&z=17&iwloc=A)**\r\n\r\n_Detta är nyttigt så missa det inte!_",
- "published_at": {
- "$date": 1322089200000
- },
- "last_updated_by": "chrille",
- "year": 2011,
- "month": 11,
- "day": 24,
- "updated_at": {
- "$date": 1322146684000
- },
- "created_at": {
- "$date": 1322136233000
- }
- },
- {
- "_id": {
- "$oid": "4edd3f54355c311cd7000002"
- },
- "content": "With Kanban it is possible to balance demand against capability. We have tools to transform our way of working incrementally and scientifically towards a more balanced environment where real value can be delivered often.\r\n\r\nThere are numerous reasons for balancing demand against capability but one of the most fundamental I believe is that a team must have a mental state of being able. And one of the foundation for this is to work in environment where it is possible to deliver according to demand.\r\n\r\nAccording to Mihály Csíkszentmihályi we might be able to enter the mental state described as flow if we both have high skills and a challenging work.\r\n\r\nFlow in individual team members is not necessary the same as collective flow in a team. Even an overburden team has individuals capable of entering flow. When demand increases capability some of the team members will continue to deliver, sometimes even more. And they will appear as super employees in the manager eyes. These individuals will get managers tapping on the shoulders increasing their personal feeling of capability even though its mainly urgent hot fixes being delivered.\r\n\r\n**How about mental state of the whole team?**\r\n\r\nEveryone wants to do a good job. Everyone wants to feel that they are able to do their best. But in a situation when the team is overburden this is hard. As the workload increases more than it is possible to deliver the collective mental state moves from feeling capable towards feeling incompetent. Not because of shortcomings in knowledge but because of constantly not being able to deliver according to demand.\r\n\r\nIf I would map an overburden team on a modified \"mental state in terms of challenge level and skill level chart\" (Mihály Csíkszentmihályi) it would be on the left side of the chart. The axis and terms in below example is modified from the original to match what I believe is the teams collective mental state.\r\n\r\n\r\n\r\nThe collective feeling of capability would be low and this is regardless of individual knowledge, competence, understanding of goals and experienced challenge.\r\n\r\nWhat we want is the _whole_ team to feel that they are capable. We would like to move the mental state towards controlled, engaged, relaxed and ultimately flow.\r\n\r\nOne step for this to happen is to begin balancing demand against capability.\r\n\r\n// Mats Ygfors",
- "created_at": {
- "$date": 1323122517000
- },
- "day": 5,
- "last_updated_by": "mats",
- "month": 12,
- "published_at": {
- "$date": 1323039600000
- },
- "slug": "2011/12/05/kanban-balance-demand-against-capability",
- "title": "Overburdening (Eng)",
- "updated_at": {
- "$date": 1323412265000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4ef1a689355c310f5c000002"
- },
- "slug": "2011/12/21/Ramavtal SVT",
- "title": "Athega tecknar ramavtal med Sveriges Television AB",
- "content": "Athega AB har i dagarna tecknat ramavtal med Sveriges Television AB. Avtalet gäller även för Sveriges Radio Förvaltnings AB och Sveriges Utbildningsradio AB. Ramavtalet har tillkommit genom en selektiv upphandling enligt lagen (2007:1091) om offentlig upphandling.\r\n\r\nAlla vi som arbetar på Athega ser fram emot alla utmanade och intressanta uppdrag detta kommer leda till.\r\n\r\n/Torbjörn",
- "published_at": {
- "$date": 1324422000000
- },
- "last_updated_by": "tobbe",
- "year": 2011,
- "month": 12,
- "day": 21,
- "updated_at": {
- "$date": 1324459657000
- },
- "created_at": {
- "$date": 1324459657000
- }
- },
- {
- "_id": {
- "$oid": "4ef20807355c31757c000002"
- },
- "content": "\r\nOBS! Ovanligt mycket tekniksnack i denna\r\nbloggpost, sådant som vi tycker är extra roligt :)\r\n
\r\n\r\nVi har utvecklat ett antal skräddarsydda applikationer\r\nför Jullunchen, det handlar både om några\r\nwebbapplikationer och en nativ (iOS) applikation.\r\n\r\nKoden för dessa ligger självklart tillgänglig på\r\nvårt [GitHub](https://github.com/athega)-konto.\r\n\r\n## [athega-jullunch](https://github.com/athega/athega-jullunch)\r\n\r\nApplikationen som hanterar inbjudningar, incheckningar och bildspelet\r\nhar vi driftsatt på [Heroku](http://www.heroku.com/).\r\nVi använder oss av ramverken [Sinatra](http://www.sinatrarb.com/)\r\noch [Backbone.js](http://documentcloud.github.com/backbone/)\r\n(Det senare används främst för bildspelet).\r\n\r\nSpråken vi använt oss av är [Ruby](http://www.ruby-lang.org/en/)\r\noch [CoffeeScript](http://coffeescript.org/).\r\n\r\nEpost hanteras av tjänsten [MailGun](https://mailgun.net/)\r\n(Genom deras enkla Heroku Add-on).\r\n\r\n\r\n\r\n\r\n### Bildspelet\r\n\r\nKoden för bildspelet ligger i filen\r\n[application.coffee](https://github.com/athega/athega-jullunch/blob/master/coffeescripts/application.coffee)\r\n\r\n#### Ett exempel på hur trevligt CoffeeScript är att jobba med:\r\n\r\n class window.PresentationLoop\r\n \r\n constructor: (ms) ->\r\n @delay = ms\r\n @iteration = 0\r\n \r\n window.loop = @\r\n window.loop.run()\r\n \r\n tweets: ->\r\n tweets.fetch()\r\n setTimeout 'tweets.fetch()', @delay/2\r\n setTimeout 'window.loop.check_ins()', @delay\r\n \r\n check_ins: ->\r\n check_ins.fetch()\r\n setTimeout 'window.loop.images()', @delay\r\n \r\n images: ->\r\n images.fetch()\r\n setTimeout 'images.fetch()', @delay/2\r\n setTimeout 'window.loop.ads()', @delay\r\n \r\n ads: ->\r\n ads.fetch()\r\n setTimeout 'window.loop.iterate()', @delay\r\n \r\n iterate: ->\r\n @iteration += 1\r\n console.log('iteration: ' + @iteration)\r\n setTimeout 'window.loop.tweets()', 0\r\n \r\n run: ->\r\n setTimeout (=> @tweets()), 0\r\n \r\n\r\n## [jullunch_daemon](https://github.com/athega/jullunch_daemon)\r\n\r\nPå en av våra servrar\r\n(Virtuell maskin, hostad av [GleSYS](http://glesys.se/))\r\nkör vi en bakgrundsprocess som hämtar ner nya tweets, kollar om det\r\nfinns några nya bilder, etc.\r\nEtt antal [JSON](http://json.org/)-dokument skrivs ner på disk med\r\njämna mellanrum (vi pratar sekunder). Dessa filer används sedan\r\nsom datakällor i bildspelet\r\n([Backbone.Collection](http://documentcloud.github.com/backbone/#Collection)).\r\n\r\nRamverket [Foreverb](https://github.com/DAddYE/foreverb) används för att\r\nköra bakgrundsprocessen (schemaläggning, loggning, etc.).\r\n\r\n## [tomtelizer](https://github.com/athega/tomtelizer)\r\n\r\nNativ iOS applikation för att ta bilder och lokalisera ansikten \r\n([CIFaceFeature](http://developer.apple.com/library/mac/#documentation/CoreImage/Reference/CIFaceFeature/Reference/Reference.html) och\r\n [CIDetector](http://developer.apple.com/library/ios/#documentation/CoreImage/Reference/CIDetector_Ref/Reference/Reference.html)).\r\n\r\n## [tomtelizer-server](https://github.com/athega/tomtelizer-server)\r\n\r\nServersidan av tomtelizern är utvecklad med\r\nramverket [Ruby on Rails](http://rubyonrails.org/).\r\n\r\nDen använder sig av [Delayed Job](https://github.com/collectiveidea/delayed_job)\r\nför att köa upp inkommande bilder för processning. De slutgiltiga\r\nbilderna genereras med hjälp av [RMagic](http://rmagick.rubyforge.org/).\r\n\r\n/ [Peter](/peter)",
- "created_at": {
- "$date": 1324484615000
- },
- "day": 21,
- "last_updated_by": "peter",
- "month": 12,
- "published_at": {
- "$date": 1324422000000
- },
- "slug": "2011/12/21/tekniken-bakom-jullunchen",
- "title": "Tekniken bakom Jullunchen",
- "updated_at": {
- "$date": 1324485288000
- },
- "year": 2011
- },
- {
- "_id": {
- "$oid": "4f3d13fc355c316e40000002"
- },
- "content": "_Gillar du konsultrollen och är egen företagare, men känner dig lite ensam? \r\nDå kanske vårt erbjudande är något för dig._\r\n\r\nVi skapar ett nätverk runt Athega som är mer än bara uppdragsförmedling. Vi vill utgöra en samlingsplats för specialister. Vi har tjänster för systemutvecklare som jobbar som egna företagare. Vi vet hur det är och kan därför anpassa tjänsterna så att de passar perfekt. Vi strävar efter att vara mycket mer än en konsultmäklare som bara förmedlar uppdrag och pressar priser.\r\n\r\n_Vi erbjuder_\r\n\r\n- **Tillfällig kontorsplats** på vårt fina kontor på Kungsholmen. Du kan också nyttja kontoret för kundmöten, seminarier/workshops eller utbildning.\r\n- **Försäljningsstöd.** Förutom uppdrag erbjuder vi stöd i prisdiskussioner och intervju.\r\n- **Väckarklocka.** Vi försöker hitta något till dig att göra i god tid innan ditt uppdrag går ut.\r\n- **Ramavtalsupphandling.** Tillsammans har vi bättre chanser.\r\n- **Gemensamt varumärke.** Använd vårt varumärke jämte ditt eget. Vi satsar mycket på marknadsföring av varumärket, “Athega”.\r\n- **Kompetensutveckling.** Våra internutbildningar och konferenser blir tillgängliga för dig och du kan även själv bidra med innehåll och idéer.\r\n- **Tips och kunskap för egna företagare.** Frågor som t.ex. tjänstebil, pension, utdelning kontra lön avhandlas.\r\n- **Teambyggande aktiviteter** som ger ett socialt sammanhang. Sker oftast i samband med någon nyttig föreläsning eller labb.\r\n\r\nKontakta oss om du är nyfiken. torbjorn @ athega.se\r\n\r\n-----------------------------------------------------------------\r\n\r\n>\r\n> \r\n> Peter berättar om Athega\r\n>------------ \r\n>\"Athega är ett lite ovanligt konsultföretag i IT-branschen. Jag har varit min egen sen 2007 och vill inte bli anställd. Däremot jobbar jag gärna via ett konsultföretag för att det är kul att ha jobbkompisar och vara en del av ett gäng. \r\n\r\n>De flesta andra konsultföretag vill bara ha fast anställda. Enda alternativet som återstår då är förmedlingsföretagen och det har jag provat med mindre lyckat resultat. \r\n\r\n>På Athega kommer man snabbt in i gänget även som egen företagare och stämningen är bra – precis som uppdragen.\"",
- "created_at": {
- "$date": 1329402876000
- },
- "day": 15,
- "image_url": "",
- "last_updated_by": "tobbe",
- "month": 1,
- "published_at": {
- "$date": 1358204400000
- },
- "slug": "2013/01/15/enmanskonsult",
- "summary": "",
- "tags_array": [],
- "title": "Är du skicklig systemutvecklare och ensam? ",
- "updated_at": {
- "$date": 1418119142000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "4f47700e355c314ec3000002"
- },
- "content": "Lean-Kanban University startar väldens första ackrediteringsprogram för Kanbanutbildningar\r\n\r\nAthega är ett av få svenska bolag som tillsammans med Lean-Kanban University format ackrediteringsprogrammet som går under namnet Lean-Kanban University Accredited Kanban Training Program.\r\n\r\nProgrammet är framtaget med syftet att erbjuda kvalitetssäkrade utbildningar i Kanban metoden. Medlemsföretagens utbildningsmaterial likväl som lärare måste uppfylla programmets kriterier. \r\n\r\nKanban metoden används brett av Athegas kunder och vårt deltagande i programmet kommer ytterligare betona vårt fokus när det gäller utbildningar.\r\n\r\nAthegas tidiga engagemang i programmet gör det möjligt för oss att inom kort erbjuda ackrediterad Kanbanutbildning.\r\n\r\nLean-Kanban University Accredited Kanban Training Program är grundat av Avega Group AB (Sverige), David J. Anderson and Associates, Inc (USA), Net Objectives (USA), AgileSparks Ltd (Israel), Agileminds bvba (Belgien), Athega AB (Sverige), Corporate Kanban (USA), Imaginet (Kanada), it-agile GmbH (Tyskland), Leverage51 AS (Norge), LEANability e.U. (Österrike), Crisp AB (Sverige), Reaktor (Finland), TeamProsource NV (Belgien,Storbritanien), Trifork A/S (Danmark), Valueinnova LLC (USA), VX Company IT Services B.V. (Holland), Xebia Group B.V. (Holland).\r\n\r\nLäs mer i pressrelease från “[Lean-Kanban University - Accredited Kanban Training Program](http://www.leankanbanuniversity.com/accredited-kanban-training)”",
- "created_at": {
- "$date": 1330081806000
- },
- "day": 24,
- "last_updated_by": "mats",
- "month": 2,
- "published_at": {
- "$date": 1330038000000
- },
- "slug": "2012/02/24/ackrediteringsprogramkanban",
- "title": "Athega med i ackrediteringsprogram för Kanbanutbildningar",
- "updated_at": {
- "$date": 1330090617000
- },
- "year": 2012
- },
- {
- "_id": {
- "$oid": "4f54df48355c313cfe000003"
- },
- "slug": "2010/10/30/warden",
- "title": "Warden",
- "content": "Igår höll jag i internutbildningen på vårt månadsmöte, denna gång berättade jag om autentiseringsramverket Warden och lite kort om Rack .\r\n\r\n\r\n",
- "published_at": {
- "$date": 1288389600000
- },
- "last_updated_by": "peter",
- "year": 2010,
- "month": 10,
- "day": 30,
- "updated_at": {
- "$date": 1330962248000
- },
- "created_at": {
- "$date": 1330962248000
- }
- },
- {
- "_id": {
- "$oid": "4f54dfec355c313cfe000006"
- },
- "slug": "2010/10/19/mountain-rb-3",
- "title": "Mountain.rb - Dag 3",
- "content": "Keynote: Aaron Patterson (@tenderlove ) - \"Fear Driven Development\". \r\n Aaron öppnade med en kort presentation om hans professionella liv som utvecklare där han började med Perl 1999 och blev mer eller mindre tvingad att byta till Java 2002 som fortsatte till 2007 då han började använda Ruby.\r\n\r\nI och med att Aarons kunskaper kring Ruby ökade, ökade även hans rädsla för att han inte kunde tillräckligt mycket – kanske något många kan relatera till? Detta var i alla fall ämnet för hans tal.\r\n\r\nHans tips för att motverka den känslan är att \"Läsa, Läsa, Läsa\" – varje dag, samt vad han gärna kallar \"The Buddy System\" eller i en något mer bekant term Pair Programming. I Aarons fall fortsatte han lite längre och gick med i e-post listor för ruby-talk och ruby-core, började gå på massor av konferenser och även undervisa på ett lokalt universitet i Seattle.\r\n\r\nEn fras som är viktig i Aarons vardag är \"I don't know\", om man inte förstår något hjälper oftast personen du pratar med att lära dig och hjälpa dig förstå.\r\nJonathan Dahl (@jondahl ) - \"Programming and minimalism: lessons from Orwell and the Clash\". \r\nJons presentation började med liknelser mellan programmerare och andra professioner. Bland annat:\r\n\r\n\tIngenjörer: \"Not about building things – about building processes\" och \"Designing solutions to direct problems\" \r\n\tHantverkare: Att ha rätt verktyg, kunskaper, jobbar i små team och att ha rätt vanor och rutiner. \r\n\tFörfattare: Skriv, skriv, refaktorera \r\n \r\nPresentationen fortsatte med att antal musikdemonstrationer genom tiderna med exempel som Bach, Mozart, Mahler till lite mer nutida pop musik med Beatles och även punk musik. Han ville med dessa exempel demonstrera hur\r\n\r\nHans tips för att bli en bättre programmare är:\r\n\r\n\tKonsumera: Läs mycket och inte bara om det du gör \r\n\tStudera - hur skriver andra? \r\n\tProducera - ju mer du skriver desto bättre blir du \r\n \r\nNot only is bad writing impossible to understand, it is buggy. \r\nTech Block #2 \r\nEtt Tech Block består av tre kortare presentationer.\r\nJim Remsick (@jremsikjr ) - \"Functionally Equivalent\" \r\n Jims tal var något kortare men med ett direkt budskap att förklara fördelarna med funktionell programmering som letade sig ner till dessa tre punkter:\r\n\r\n\tKortfattat (mer koncist) \r\n\tTrådbarhet (Concurrency ) \r\n\tInga buggar* - Går att bevisa matematiskt \r\n \r\nRuby är ett objektorienterat språk men det är inte helt ovanligt att skriva det i funktionell stil. Jim avslutade med en uppmaning\r\nGå ut och prova något du inte är bekväm med. \r\nCJ Kihlbom (@cjkihlbom ) - \"Frontend Testing Frontier\" \r\nDet var extra kul att höra CJ tala då han kommer från Göteborg och driver firman Elabs. CJ/Elabs var också initiativtagarna till konferensen Nordic Ruby som Athega sponsrade och vi har bloggat om tidigare.\r\n\r\nElabs har länge lagt ett stort fokus på frontend testning där Elabs, Jonas Nicklas (@jncoward ) bland annat har gjort ett par stora bidrag till Ruby commityn via Capybara och Evergreen . Detta var fokus för CJs tal.\r\n\r\nCJ pratade om verktyg för integrationstestning:\r\n\r\nCapybara är \"driver agnostic\" vilket innebär att man kan köra Capybara med hjälp av annan mjukvara som:\r\n\r\nJavaScript unit testing är inte så vanligt så CJ tog tillfället att berätta om ett bra alternativ nämligen Jasmine av Pivotal Labs, tillsammans med Evergreen av Jonas Nicklas. En riktigt bra feature med Evergreen är att man kan skriva sina JavaScript tester i CoffeeScript . CoffeeScript är för JavaScript vad HAML/SASS är för HTML/CSS.\r\nFront end testing is NOT hard \r\nPaul Sadauskas (@theamazingrando ) - Forms Don't Have to be this Complicated \r\nForms Suck \r\nPaul pratade om hur krångliga fomulär kan vara i Rails, framförallt om man har HABTM relationer mellan sina modeller. Eller ännu värre, nästlade formulär.\r\n\r\n \r\n\r\nPaul visade exempel på krångliga formulär och olika lösningar, de inkluderade bland annat att ladda om hela sidan, olika sidor för olika formulärdelar eller att generera direkt från JavaScript.\r\n\r\nPaul's förslag till slut var att använda progressiv förbättring som laddar om sidan om man inte har JavaScript aktiverat men endast hämtar en partial via AJAX om man har JS aktiverat. Denna metod blir dessutom ganska enkel att testa.\r\nBlake Mizerany (@bmizerany ) - 1000 ways to kill a Buffalo \r\n \r\n\r\nBlake är uppfinnaren av Sinatra och jobbar till vardags på Heroku som har en intressant och mycket flexibel Rails\r\n\r\nhosting med enkel Add-on arkitektur.\r\n\r\nBlakes presentation tillhörde definitivt en av de mer humoristiska. I princip hela presentationen bestod av en serie tecknade figurer (\"Ugh\" grottmannen, hans familj och en buffel) ritade på en iPad i en rad olika situationer.\r\n\r\nPresentationen (som kunde vart en säljpitch för Heroku) ville få oss att fokusera på problem istället för idéer, hur problem i vår vardag driver innovation och utveckling. För att knyta ihop med titeln var Blakes exempel på hur Ugh försökte jaga buffel på stenåldern.\r\n\r\nHan pratade om hur man som Ruby on Rails utvecklare kan skriva små problemlösande add-ons till Heroku som andra utvecklare kan dra nytta av (och på så vis tjäna pengar).\r\n\r\n Heroku add-ons är små självständiga tjänster som man laddar upp i Heroku som i läggs på en Amazon EC2 instans. EC2 arkitekturen var ett starkt argument eftersom alla Heroku appar ligger i EC2 så är det extremt låg latens mellan instanserna (add-ons/appar), även internationellt och mellan kontinenter.\r\nLightning talks \r\nLightning talks är snabba presentationer, man har 5-7 minuter att lära ut något. Det var många snabbpresentationer men en som jag tycker var värd att nämna.\r\nNeal Enssle (@nealenssle ) - How to be a better developer in 90 days \r\nDenna presentation var tre bok rekommendationer för alla som vill bli bättre utvecklare (inte bara Ruby/Rails). Tanken är att man ska läsa en bok per månad.\r\n\r\nThe Passionate Programmer - Chad Fowler \r\n\r\n\tOm du inte bryr dig kommer det att märkas. \r\n\tVar en generalist. \r\n\tGör det du kan - klaga inte, lös problem. \r\n\tKom ihåg vem du arbetar för - hur mycket värde tillför du? \r\n\tDaglig framgång - vad åstadkom du idag? \r\n\tÄr du bättre idag än igår? (n + 1) \r\n \r\nClean Code - Robert C. Martin \r\n\r\n\tSemi-objektiv och praktisk. \r\n\tStorleken spelar roll. \r\n\tGör en sak, på ett enda ställe. \r\n\tScout-regeln, lämna koden bättre än du hittade den. \r\n \r\nRefactoring: Ruby edition - Martin Fowler (m.fl.) \r\n\r\n\tKoda för att öka förtroende för gammal kod \r\n\t\"Smells in code\" - motverka dålig kod, duplicering, långa funktioner m.m. \r\n\tSjälvförklarande variabelnamn \r\n\t60 refaktoreringsmönster \r\n ",
- "published_at": {
- "$date": 1287439200000
- },
- "last_updated_by": "peter",
- "year": 2010,
- "month": 10,
- "day": 19,
- "updated_at": {
- "$date": 1330962412000
- },
- "created_at": {
- "$date": 1330962412000
- }
- },
- {
- "_id": {
- "$oid": "4f54e07c355c313cfe000008"
- },
- "content": " \r\n\r\nJim höll i konferensens första keynote, titeln löd och innehöll allt från Speciella relativitetsteorin, rymdresor och Jims släktskap med folkgruppen Amish.\r\nOur world is stranger than we think \r\nJim identifierade några områden som går att förbättra:\r\n\r\n\tTestning/Expressiveness (Han har börjat jobba på ramverket Given) \r\n\tParallellism och stöd för flera CPU-kärnor \r\n\tMessage passing mellan Ruby VMs \r\n \r\nTech Block #1 \r\nJay McGavren (@jaymcgavren ) - “Ruby on Android with Ruboto” \r\n \r\n\r\nJay berättade om Ruboto vilket är ett projekt som gör det möjligt att köra Ruby under Android.\r\n\r\nSom demonstration körde han en DRb server med Ruby Processing som han sedan fjärrstyrde från sin Androidmobil.\r\n\r\nTydligen har Dalvik en väldigt långsam reflektion , men det är något man aktivt jobbar med att lösa.\r\nWayne Seguin (@wayneeseguin ) - “Do not Bring a Sword to a Gun Fight” \r\n Kortfattat kan man säga att föreläsningen handlade om att välja rätt verktyg för jobbet.\r\nCommon sense isnt’t that common \r\nDe steg som Wayne gick igenom var:\r\n\r\n\tDefiniera problemet \r\n\tFörstå problemet \r\n\tHitta möjliga lösningar på problemet \r\n\tUtvärdera de olika lösningarna \r\n\tLös problemet \r\n \r\nWayne är kanske mest känd för att ha skapat versionshanteraren RVM .\r\nTony Arcieri (@bascule ) - “Reia: Ruby Evolved” \r\nTony berättade om Reia (uttalas RAY-uh), vilket är ett Ruby/Python-liknande språk som körs under Erlangs VM (BEAM)\r\n\r\nProjektet är i sin linda, men källkoden ligger självklart på GitHub så det är bara att sätta igång och experimentera om man känner att man behöver en något trevligare syntax än vad Erlang erbjuder. En trevlig liten detalj är att en JSON -parser finns inbyggd i språket. Stränghanteringen är även helt OK, men inte direkt snabb.\r\nThe fun syntax isn’t that FUN in Erlang \r\nLunch \r\nUnder lunchen snackade jag lite med Joshua Timberman (@jtimberman ) från Opscode . De utvecklar verktyget Chef vilket används för deployment och konfiguration av servrar på infrastrukturnivå (Server configuration management). Som alternativ kan man nämna Puppet från Puppet Labs.\r\nEvan Phoenix (@evanphx ) - “Staking your Claim in OSS” \r\nEvan gick igenom hur man driver ett lyckat open source-projekt. Fyra av de viktigaste poängerna var:\r\n\r\n\tKarma \r\n\tOpen source är ett socialt fenomen \r\n\tKommunicera! \r\n\tVar trevlig och håll en sansad ton, även om du inte vill acceptera vissa patchar. \r\n \r\nFork for LOVE! \r\nDet självklara exempelprojektet var hans eget heltidsprojekt Rubinius . (En implementation av Ruby, Engine Yard sponsrar utvecklingen)\r\nRubinius \r\nProjektet har många utvecklare då man från början bestämt att det räcker med en enda patch för att få commit-rättigheter. Evan beskrev lätta buggfixar som lågt hängande frukt och en “gateway drug” för nya utvecklare.\r\n\r\nDe har haft färre än 10 reverts under de tre år som projektet har funnits. Mycket beroende på det sociala kontraktet mellan utvecklarna.\r\n\r\n \r\nJoe O'Brien (@objo ) - “Everyone should know a little about Sales” \r\nJoe berättade om sina erfarenheter som säljare och varför försäljning fått ett så dåligt rykte. Hans poäng var att försäljning handlar om att identifiera behov och hitta lösningar som passar båda parter. (Ganska likt det vi utvecklare gör) Han fortsatte även med att alla anställda är säljande, oavsett yrkesroll.\r\nPeter Jackson (@peteonrails ) - “Introduction to Geospatial Programming with GeoRuby, PostGIS, and OpenLayers” \r\nPeter hade en ganska generell genomgång av geospatiell mappning (projektion/geometri) samt en snabb genomgång av projekten GeoRuby , PostGIS och OpenLayers .\r\nJay Zeschin (@jayzes ) - “Avoiding the Seven Year Itch” \r\nJay från Factory Design Labs avslutade dagens föreläsningar med lite tips för de som sitter fast i långtgående projekt, föråldrade projektmodeller eller legacy-system. Han nämnde även den stora tekniska skuld som (oftast) finns i projekt av den typen.\r\nA project is a relationship \r\n\r\n\tUppbrott \r\n\tTyst lidande \r\n\tTa lärdom och gå vidare \r\n \r\nDevelopers have a vast amount of domain knowledge \r\nJay hade även en lista på vad man bör göra för att rädda ett projekt av denna typ:\r\n\r\n\tSnabb återkoppling (test/deploy ) \r\n\tVar hänsynslös \r\n\tSpikes regelbundet + En titt på verkligheten \r\n\tDriv engagemang \r\n\tSälj in fördelarna \r\n\tBygg upp ett förtroende \r\n \r\nQuick Left Hackfest \r\nPå kvällen gick vi till Quick Left och fortsatte diskussionerna, kodade lite och käkade pizza.",
- "created_at": {
- "$date": 1287439200000
- },
- "day": 19,
- "last_updated_by": "peter",
- "month": 10,
- "published_at": {
- "$date": 1287439200000
- },
- "slug": "2010/10/19/mountain-rb-2",
- "title": "Mountain.rb - Dag 2",
- "updated_at": {
- "$date": 1287439200000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4f54e235355c3174a7000002"
- },
- "content": " \r\nAthegas Peter Hellberg (@peterhellberg ) och Andrew Crookston (@acrookston ) har precis spenderat några dagar i Boulder, Colorado, USA (karta ) för att medverka på konferensen Mountain.rb – \"A ruby pioneers conference\" . \r\n\r\n\r\nKonferensen lockade med flera ledande personligheter inom Ruby communityn som Jim Weirich (@jimweirich ) uppfinnare av Rake , Blake Mizerany (@bmizerany ) uppfinnare av Sinatra och Evan Phoenix (@evanphx ) lead developer på Rubinius ett alternativt Ruby VM, samt många andra duktiga talare.\r\n\r\nFörsta dagen spenderade vi med en promenad i staden där vi bland annat hälsade på hos Dojo4 – en lokal utvecklingsbyrå, och tog oss upp till en av Boulders mer kända utsiktsplatser, Chautauqua som ligger vid foten av Flat Irons (bilden). Boulder ligger fantastiskt vackert vid 1,655 meter höjd precis där Rocky Mountains möter The Great Plains. Längs med hela den västra horizonten, från norr till syd, tornar bergen rakt upp ur marken som en vägg. Vänder man blicken mot öster ser man bara platt mark så långt ögat når.\r\n\r\nBoulder har drygt 100 000 invånare och Colorados officiella (och största) universitet med ca 30 000 studenter – en stad som kanske närmast kan liknas vid Uppsala hemma i Sverige. Trots den lilla storleken har Boulder en stor och aktiv teknik scen med flest systemutvecklare per capita och över 100 s.k. startups. Jämfört med te.x. San Francisco har man en väldigt öppen kultur där man gärna delar med sig av erfarenheter och hjälper aktivt varandra. Regelbundna möten arrangeras där alla får komma.\r\n\r\nEftermiddagen bjöd på registrering med mingel. Arrangören Marty Haught (@mghaught ) hade till konferensen hittat på en liten kort-bytar lek där man vid registreringen fick välja mellan fyra karaktärer; Cowboy, Prospector, Homesteader och Trapper. Detta val visade sig ha lite konsekvenser senare under konferensen när vi fick spelreglerna förklarade för oss tillsammans med en uppmaning att skapa valfritt program för att räkna poäng eller göra annat kul med korten vi hade.\r\n\r\nVi träffade bland andra Brennan Dunn (@brennandunn ) som bygger ett riktigt intressant öppet källkods-projekt som heter Rack::CMS , ett lättviktigt CMS som gör det möjligt för icke tekniker att ändra textinnehåll på en hemsida, använder Redis som lagringsmotor. Peter Williams (@pezra ) med Resourceful , ett gem för cachning av HTTP requests och Ryan Angilly (@angilly ) lokal entreprenör som bland annat byggt gwop.us ett mikrobetalningssystem för bloggare.",
- "created_at": {
- "$date": 1330962997000
- },
- "day": 19,
- "last_updated_by": "peter",
- "month": 10,
- "published_at": {
- "$date": 1287439200000
- },
- "slug": "2010/10/19/mountain-rb-1",
- "title": "Mountain.rb - Dag 1",
- "updated_at": {
- "$date": 1330963131000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4f57774a355c31056d000002"
- },
- "slug": "2010/05/28/nordic-ruby",
- "title": "Nordic Ruby",
- "content": "Förra fredagen åkte jag, Robert och Mats ner till Göteborg för att gå på konferensen Nordic Ruby .\r\nLördag \r\nStanding On the Shoulders of Giants \r\nCorey Haines inledde konferensen med en uppmaning om att reflektera över hur och varför man arbetar som man gör.\r\n\r\n“Message passing, not objects”\r\n“Lotus notes is a good document database”
\r\n \r\nCucumber Inside \r\nAslak Hellesøy höll konferensens andra föreläsning och ämnet var inte helt oväntat testramverket Cucumber samt dess språk Gherkin vilket nu har extraherats till en gem .\r\n\r\nDen imponerande prestandaökningen i Cucumber den senaste tiden beror på att man har bytt ut TreeTop mot Ragel .\r\n\r\nAslak nämnde även hur hooks i Cucumber fungerar.\r\nNeo4j.rb - The Benefits of Graph Database \r\nAndreas Ronge berättade om sitt projekt Neo4j.rb vilket är en grafdatabas för JRuby .\r\n\r\n\tInbäddad \r\n\tACID \r\n\tInga scheman \r\n\tInga externa beroenden \r\n\tEnbart skrivlås \r\n \r\nDe två javabibliotek som är inblandade är Neo4j samt Lucene . Neo4j inkluderar ett flertal algoritmer, t.ex. Dijkstra .\r\n\r\nMöjligheten att traversera djupa relationsgrafer verkar ha ett ganska begränsat användningsområde, men när man väl behöver göra det så är det säkerligen mycket kraftfullt.\r\nRubyists, you can write JavaScript again \r\nPriset för konferensens effektfullaste introduktion måste gått till Dr Nic a.k.a. Iron Man.\r\n\r\nHan började med att nämna att man kan köra JavaScript i Ruby med hjälp av Johnson (Mozilla SpiderMonkey ) och att man kan använda capybara-envjs för att testa sina javascript på serversidan. Men efter det var det CoffeeScript som gällde.\r\n\r\n“Capybara because it’s AWESOME”
\r\n \r\nCoffeeScript är i korta drag:\r\n\r\n\tDe bra delarna i JavaScript \r\n\tDet Haml är för HTML och Sass är för CSS \r\n\tGår att kombinera med alla JavaScript-bibliotek (jQuery !) \r\n\tKompilatorn är skriven i CoffeeScript! (Går alltså att köra i en webbläsare) \r\n\tImplicita returvärden \r\n\tInga onödiga tecken \r\n\tGår att köra i Node.js \r\n \r\nEnough Design \r\nIan McFarland från Pivotal Labs pratade om agila designprocesser och hur viktigt det är med en kort “feedback loop”.\r\n\r\nHan påpekade att det är viktigt att iterera över problem, oavsett storlek.\r\n\r\nEn bra design är:\r\n\r\n\tModulär \r\n\tPrincipfast \r\n\tRegelbaserad \r\n\tUX > Pixlar! \r\n \r\n\r\nMan kan inte bli annat än imponerad av Niclas Nilsson när han så “vårdslöst” tvingar Ruby att bete sig som han vill.\r\n\r\nHan berättade om hur man med lite fantasi kan bygga ett internt DSL utan att för den skull ha tillgång till Rubys AST .\r\n\r\nHan visade även sin gem properties .\r\nMiddag på SoHo \r\nLördagskvällen spenderade jag med att diskutera hackerspaces , användning av Ruby för utveckling mot Arduino , mikrobryggerier i USA och mycket annat.\r\nSöndag \r\nFrom artist to programmer \r\nDagens första föreläsning stod Keavy McMinn för, och hon pratade om likheter (och skillnader) mellan konstnärskap och programmering.\r\n\r\n“Just make”
\r\n \r\nNågra av hennes punkter \r\n\r\n\tVar öppen för förändringar \r\n\tDet går att bygga något utan initial finansiering \r\n\tVi utvecklas genom reflektion \r\n \r\nThe MongoDB Effect \r\nJag hade gärna sett att Durran Jordan och Les Hill hade fokuserat lite mer på Mongoid än vad de gjorde. Vi vet redan att MongoDB är häftigt.\r\n\r\nEnligt Durran borde man ALLTID använda MongoDB.\r\nMongoid \r\n\r\n\tRails 2 och Rails 3 \r\n\tAtomiska operationer \r\n\tStora dataset \r\n\tGrymt kriterie API \r\n\tScopes som tar block \r\n\tMaster/Slave \r\n \r\nSOLID Ruby \r\nJag hade verkligen sett fram emot Jim Weirich föreläsning om SOLID och jag blev inte besviken.\r\nNågra av hans punkter \r\n\r\n\tFördela ansvaret \r\n\tMonkey patchning i bibliotek är dåligt (Arv framför öppna klasser) \r\n\tProtokoll är viktiga \r\n \r\nArtificial stupidity, adding smarts to yer kode with a little machine learning \r\nKonferensens tyngsta föreläsning (med råge) stod Randall Thomas från Engine Yard för.\r\n\r\n \r\n\r\nÄmnet var datautvinning genom att använda statistikspråket R och RSRuby . Den enligt mig intressantaste delen av föreläsningen bestod i användningen av en support vector machine (KSVM i R) för att gruppera data och sedan använda detta för rekomendationer.\r\n\r\nBöcker: Super Crunchers, Introductory Statistics with R\r\nSoftware for the Human Animal \r\nHampton Catlin pratade om skillnaderna mellan manlig och kvinnlig design. Att vi inte är mycket mer än djur och att Internet är den nya vildmarken.\r\n\r\nHan hävdade att vi människor generellt sett är självorganiserande och framförallt trevliga. Vi borde alltså sluta motverka på de fåtal användare som förstör och istället uppmuntra och belöna de användare som uppför sig.\r\n\r\nDet finns inga dumma användare, bara dåliga gränssnitt som gör dem dumma.",
- "published_at": {
- "$date": 1274997600000
- },
- "last_updated_by": "peter",
- "year": 2010,
- "month": 5,
- "day": 28,
- "updated_at": {
- "$date": 1331132234000
- },
- "created_at": {
- "$date": 1331132234000
- }
- },
- {
- "_id": {
- "$oid": "4f5777a5355c31056d000004"
- },
- "slug": "2010/05/21/ruby",
- "title": "Ruby",
- "content": " \r\n\r\n\r\n
\r\n
Jobbet \r\n
Vi söker dig som brinner för Ruby och gillar att ställas inför nya spännande utmaningar. Våra kunder finns i ett flertal branscher och det finns goda möjligheter att hitta en plats där din kompetens är ovärderlig.
\r\n\r\n
H21, vårt kontor \r\n
Lokalerna ligger på Hantverkargatan i Stockholm, nära till tunnelbanan, bussar och parkering. Här samlas vi för utbildning och i perioder interna projekt.
\r\n
\r\n
\r\n
\r\n
Praktiska meriter \r\n
Vi vill att du har goda kunskaper i Ruby, Linux, Apache, MySQL, Git och något/några testramverk som RSpec, Cucumber, Shoulda et.c. Har du även kunskaper i Ruby on Rails, Sinatra och känsla för grafisk formgivning eller gränssnittsprogrammering, är det ett stort plus. Viktigast är dina praktiska erfarenheter och kunskaper samt din vilja att utveckla och att utvecklas.
\r\n\r\n
Vilja att lära sig \r\n
Vi som arbetar på Athega sätter utveckling främst. Både vår tekniska kompetens och våra personliga egenskaper. Vi håller internutbildningar som hjälper oss att dela på nyvunnen kunskap. Licensieringar och externa kurser/seminarium sätter spets på vår kompetens. För att passa in på Athega måste du ha en vilja att utvecklas och lära dig nya saker!
\r\n\r\n
\r\n
\r\n
Flexibilitet \r\n
På Athega har du möjlighet att ta del av en mycket förmånlig lönemodell. Vi är en platt organisation där din åsikt är viktig och beslutsvägarna är korta. Athega har flexibla arbetstider, men hos kunder rättar vi oss efter deras arbetstider. Våra kunder förväntar sig att vi är sociala, flexibla och att vi snabbt anpassar oss till deras olika arbetsplatser och system.
\r\n \r\n
Arbeta hos oss! \r\n
Skicka din ansökan till rekrytering@athega.se
\r\n
Har du några frågor om tjänsten får du gärna kontakta Fredrik Söder på telefonnummer 070-915 60 02.
\r\n
\r\n
",
- "published_at": {
- "$date": 1274392800000
- },
- "last_updated_by": "peter",
- "year": 2010,
- "month": 5,
- "day": 21,
- "updated_at": {
- "$date": 1331132345000
- },
- "created_at": {
- "$date": 1331132325000
- }
- },
- {
- "_id": {
- "$oid": "4f577850355c31056d000006"
- },
- "slug": "2010/05/09/frozen-rails",
- "title": "Frozen Rails",
- "content": "I fredags gick konferensen Frozen Rails av stapeln i Helsingfors och Athega var självklart representerade.\r\n\r\nKonferensen inleddes av Chris Wanstrath som gick igenom hur Ruby on Rails används på GitHub . Vi fick även reda på hur de använder Git (grit , smoke, chimney) och hur de hanterar meddelandeköer (resque ).\r\n\r\nNågra av projekten som nämndes:\r\n\r\n\talbino för syntax highlighting genom (front för pygmentize ) \r\n\tfaker för att generera påhittad data: namn, adresser, telefonnummer \r\n\tRack HTTP servern Unicorn \r\n \r\nThe Plataforma Way (José Valim, @josevalim ) \r\nDagens andra föreläsning hölls av José Valim från Plataforma tecnologia. José pratade om autentiseringslösningen Devise (bygger på Warden ), domänspråket simple_form (inspirerat av Formtastic ) samt Responders vilket är en utbyggnad av respond_with i Rails 3. Lite rörig föreläsning men med många intressanta projekt, kommer speciellt hålla koll på Devise.\r\n\r\nJag har sedan jag bloggade om MongoDB första gången varit intresserad av projektet och nu fick vi verkligen en bra genomgång av 10gen ’s Michael Dirolf.\r\n\r\nÖversikt av MongoDB:\r\n\r\n\tAtomiska operationer per dokument (:$push) \r\n\tDynamiska frågor \r\n\tHög prestanda (10% långsammare än memcached , snabbare än CouchDB ) \r\n\tMaster/Slave failover \r\n\tAuto-sharding (snart) \r\n\tServern har en JavaScript parser \r\n \r\nMobile Web Apps with Rails 3 (Yehuda Katz, @wycats ) \r\n \r\n\r\nÄven om jag sett föreläsningen tidigare (Efter Philly ETE, Emerging Technologies for the Enterprise ) så var det bra att få se den live så att säga.\r\n\r\nNågra av punkterna som Yehuda berörde:\r\n\r\n\tHTML 5 LocalStorage (samt Offline API) \r\n\tFöredra gammal data \r\n\tHTML == static asset \r\n\tBetrakta webbläsaren som en API-klient \r\n\t“Sip, don’t gulp” \r\n \r\nProjekt:\r\n\r\nCucumbered (Joseph Wilk, @josephwilk ) \r\n\r\n \r\n(Foto: Chris Comella ) \r\n
\r\nDen bästa föreläsningen på hela konferensen stod Joseph Wilk för, ämnet var Cucumber och mer specifikt hur man ser till att testerna går så fort som möjligt. (Cucumber 0.7 är för övrigt så galet snabb att det inte ens är roligt nu när de bytt från TreeTop till Ragel )\r\n\r\nNågra av Josephs punkter:\r\n\r\n\tCukover vs. Autotest \r\n\tHarmony (Frontar Trace/SpiderMonkey i Ruby) \r\n\tcucumber --format \r\n \r\n\r\nJonathan hade ett digert uppdrag framför sig då konferensdeltagarna direkt jämförde allt med hur det fungerar i MongoDB. Tyvärr var exemplen lite för enkla och visade inte riktigt på styrkan i CouchDB, snarare att det är “svårare” att ställa enkla frågor än med SQL då man måste implementera map/reduce i JavaScript själv. (Vilket är en BRA grej när man gör lite mer avancerade saker)\r\n\r\nNågra av punkterna:\r\n\r\n\t“Built for the web” \r\n\tSkalar bra \r\n\tInga konstigheter: HTTP, JavaScript, JSON \r\n\tRevisioner (id + rev) \r\n\tInga collections (på gott och ont) \r\n\t“JavaScript, easier than SQL” \r\n\tVärdet kan vara komplex JSON \r\n\tNycklarna kan vara arrayer \r\n\tStatiska frågor (map/reduce) \r\n\tCompaction of B-tree via HTTP request (tänker inte ens försöka översätta :) \r\n\tHTTP cache (Varnish ) och lastbalansering (HAProxy , nginx ) \r\n\tInbäddad Lucene (Killer feature? ) \r\n \r\n\r\n\r\n\tBundler (Isolation av gems) \r\n\tMöjligt att använda jQuery i Rails! \r\n\tRoutern kan nu ha valfria segment, scopes och HTTP verb \r\n\tRack överallt! \r\n\trails_upgrade \r\n \r\nPerfectionism (Jarkko Laine, @jarkko ) \r\nPriset för den nervösaste killen på hela konferensen måste ha gått till Jarkko. Förutom detta var det en grym sista föreläsning om hur vi perfektionister ofta har problem med att skeppa något innan det är helt perfekt . (vilket det kanske aldrig blir) Han rekomenderade även boken The Cluetrain Manifesto (hela bokens text)\r\n\r\n ",
- "published_at": {
- "$date": 1273356000000
- },
- "last_updated_by": "peter",
- "year": 2010,
- "month": 5,
- "day": 9,
- "updated_at": {
- "$date": 1331132496000
- },
- "created_at": {
- "$date": 1331132496000
- }
- },
- {
- "_id": {
- "$oid": "4f57789d355c31056d000008"
- },
- "content": "I fredags så började jag och en kollega hastigt prata lite angående kodkonventioner vilket alltid får igång mig då jag älskar att ha rent och strukturerat i mina projekt. Därför kom jag på att jag kan skriva en liten bloggpost om hur jag tänker när jag lägger upp mina javascript när jag kodar gränssnitt.\r\n\r\nJag är ett stort fan av Unobtrusive Javascripts där man strävar efter att helt separera scriptdelen från sin html-content. Jag använder i dagsläget nästan alltid jQuery när jag kodar javascript. Jag tänker inte gå inte gå in djupare på hur det fungerar i denna bloggpost. Generellt när jag jobbar strävar jag åt DDD -hållet så att alla namespaces innehåll enkelt kan förstås av kunden, även om han inte har någon teknisk kunskap. (Självklart ligger oerhört mycket mer i konceptet DDD)\r\n\r\nI mitt scenario jobbar jag med ett projekt som kallas \"Acme\". Jag utgår därför från en scriptfil som jag döper till \"acme.js\" . I den lägger jag funktionalitet som är gemensam för hela sidan. Den skulle kunna se ut såhär;\r\n\r\n\r\nvar acme = function() {\r\n\t\r\n\t// Initierare\r\n\tvar init = function() {\r\n\t\t// Initiera eventuella kontroller etc.\r\n\t\t// Anropa eventuella andra privata funktioner\r\n\t\tsomePrivateFunction();\r\n\t}, \r\n\t\r\n\t// Denna funktionen blir \"privat\" eftersom den inte returneras\r\n\tsomePrivateFunction = function() {\r\n\t\t\r\n\t}\r\n\t\r\n\treturn {\r\n\t\tinit: init\r\n\t};\r\n}();\r\n\r\n$(function() {\r\n\tacme.init();\r\n});\r\n \r\nNär denna scriptfil körs på sidan kommer automatiskt init anropas efter dom:en har laddats. Då kan man där i manipulera dom:en eller kanske binda något event osv.\r\n\r\nSäg sedan att mitt projekt innehåller ett forum som behöver specifik javascriptlogik som bara gäller för forumet. Jag skapar därför en \"acme.forum.js\" som skulle kunna se ut såhär;\r\n\r\nacme.forum = function() {\r\n\tvar someVariable,\r\n\t\r\n\t// Initierare, bind knapphändelser m.m\r\n\tinit = function() {\r\n\t\t$(\"#someButton\").click(validateEmail);\r\n\t},\r\n\t\r\n\t// Validerar e-postadress\r\n\tvalidateEmail = function(event) {\r\n\t\t// Logik för validering\r\n\t}\r\n\t\r\n\treturn {\r\n\t\tinit: init\r\n\t};\r\n}();\r\n\r\n$(function() {\r\n\tacme.forum.init();\r\n});\r\n \r\n\r\nHär bygger jag vidare på \"acme\" variabeln som vi tidigare skapat (eller \"namespacet\" om ni nu så vill). Enligt detta tänk fortsätter jag med alla delar av projektet. \r\n\r\nNär koden sedan skall ut i produktion brukar jag se till att minifiera och kombinera alla mina javascript (även tredjepartsbibliotek t.ex jQuery) till en enda fil vid namn \"acme.min.js\" . Detta gör jag för att få ner antalet requests så mycket som går och även få ner storleken på dem. Jag har haft nöjet att jobba ihop med Robert Nyman som har en bra bloggpost om vilka minifierare som finns att tillgå i denna posten .\r\n\r\nI mitt fall har jag använt YUI Compressor for .NET som ett \"post build-event\" som även sköter minifiering av din CSS. Ett tips är att endast inkludera den minifierade CSS:en när det inte är debugg-kompilerat så blir det oerhört mycket enklare i utvecklingsprocessen.\r\n\r\n// Markus",
- "created_at": {
- "$date": 1331132573000
- },
- "day": 10,
- "last_updated_by": "peter",
- "month": 4,
- "published_at": {
- "$date": 1270850400000
- },
- "slug": "2010/04/10/unobtrusive-javascripts",
- "title": "Unobtrusive JavaScripts",
- "updated_at": {
- "$date": 1331132632000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4f57790d355c31056d00000a"
- },
- "slug": "2010/04/09/athega-sponsrar-nordic-ruby",
- "title": "Athega sponsrar Nordic Ruby",
- "content": " \r\n\r\nI slutet av maj kommer några av oss att befinna sig i Göteborg för att delta i konferensen Nordic Ruby . Under två dagar hålls föreläsningar om så vitt skilda ämnen som den dokumentorienterade databasen MongoDB , spelmekanik, en introduktion till maskininlärning samt metaprogrammering i Ruby.\r\n\r\nHoppas att vi syns där!",
- "published_at": {
- "$date": 1270764000000
- },
- "last_updated_by": "peter",
- "year": 2010,
- "month": 4,
- "day": 9,
- "updated_at": {
- "$date": 1331132685000
- },
- "created_at": {
- "$date": 1331132685000
- }
- },
- {
- "_id": {
- "$oid": "4f577944355c31056d00000c"
- },
- "content": "Detta inlägg fortsätter lite i samma anda som Chrille hade med sitt inlägg om Den produktive programmeraren \r\n\r\nJag har den senaste tiden känt att jag behöver strukturera mitt arbete då det regnar in puckar från olika håll hela tiden. Inspirerad av Scott Hanselmans föredrag från Öredev som vi som inte var där kollade på under en utbildningsdag så tänkte jag pröva på Pomodoro-tekniken .\r\n\r\nPomodoros syfte är att försöka hjälpa dig att få så mycket som möjligt ut ur din tid. Detta genom att jobba fokuserat i 25-minuters perioder helst helt utan störmoment. Detta följs sen av fem minuter tid du ägnar åt något helt annat, helst inget som kräver allt för mycket hjärnverksamhet.\r\n\r\n \r\n\r\n\r\nSom tidtagarur la jag in en widget i min dashboard som hette \"Tea Timer\" som håller reda på min tid. Skall inte gå in på det mycket djupare då jag ännu inte kan titulera mig expert i ämnet men känner du samma som mig att man ibland kan bli stressad av att tiden bara flyger iväg, så kanske detta är något för dig.\r\n\r\n// Markus",
- "created_at": {
- "$date": 1331132740000
- },
- "day": 24,
- "last_updated_by": "peter",
- "month": 3,
- "published_at": {
- "$date": 1269385200000
- },
- "slug": "2010/03/24/testar-pomodoro-tekniken",
- "title": "Testar Pomodoro-tekniken",
- "updated_at": {
- "$date": 1331132856000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4f5779d8355c31056d00000e"
- },
- "slug": "2009/03/03/valkommen-till-bloggen",
- "title": "Välkommen till bloggen",
- "content": " \r\n\r\nHär kommer vi på Athega att blogga om våra respektive intresseområden, saker vi lärt oss under olika projekt och mycket mer. Några exempel på ämnen kan vara:\r\n\r\nNi kan även följa @athega på Twitter för uppdateringar om vad som sker på företaget.",
- "published_at": {
- "$date": 1236034800000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 3,
- "day": 3,
- "updated_at": {
- "$date": 1331132888000
- },
- "created_at": {
- "$date": 1331132888000
- }
- },
- {
- "_id": {
- "$oid": "4f577a18355c31056d000010"
- },
- "slug": "2009/03/04/geotagga-bilder",
- "title": "Geotagga bilder",
- "content": "Att geotagga bilder är att lagra koordinaterna för den geografiska positionen där bilden fotograferades i själva bildfilen. Det skapar många nya möjligheter för att t.ex. söka fram bilder och presentera dem på en karta. Tyvärr är det fortfarande inte många riktiga kameror (och då menar jag inte mobiltelefoner) som har inbyggd GPS vilket krävs för detta. Däremot är vanliga GPS-navigatorer väldigt vanliga nu för tiden, vissa av dem kan kontinuerligt lagra positionen till en spårfil.
\r\n\r\nJag tänkte därför presentera en liten guide hur man kan kombinera denna information i efterhand så att man får geotaggade bilder när man laddar över dem till datorn.\r\n\r\n\tLadda över spårfilen/filerna i GPX-format från navigatorn till datorn. Du behöver vara så noga med att du hittar spåret från det exakta fototillfället. Om du t.ex. har en fil från varje dag på en resa, ta med allihopa. \r\n\tLadda över bilderna som JPG-filer från kameran till datorn. En viktig sak man inte får glömma innan man börjar fotografera är att ställa klockan rätt i kameran. Detta är avgörande för att kunna hitta positionen för det exakta tillfället för varje bild. Glöm inte eventuella inställningar för sommar/vintertid och tidszon. Om du märker tiden är fel för bilder du redan tagit bör du korrigera detta innan du fortsätter. ExifTool kan justera tiden, t.ex. framåt eller bakåt en timme om man har glömt ställa om för sommar/vintertid. Ett annat verktyg som klarar detta och möjligtvis är lite enklare är jhead . \r\n\tNu behöver vi ett program som läser positionerna från spårfilen och skriver till bilderna. Programmet Geotag är just ett sådant som dessutom är snyggt, enkelt och gratis. (Open Source - GPL) \r\n\tKolla sidorna Quick start och Requirements vad som krävs för att köra programmet. Man behöver Java och verktyget ExifTool , ladda ned det först och lägg filen i en körbar programkatalog. (t.ex. C:\\\\Windows på Windows) \r\n\tHar du redan Java 6 är det jätteenkelt, klicka bara Run it now så körs programmet direkt via Java Webstart utan att man behöver installera något. Första gången laddas det ned men sedan finns det sparat på datorn och en genväg har skapats på skrivbordet. Klicka på \"Kör\" för att lita på utgivaren av progmmet. \r\n\tVälj Load tracks from file från File-menyn. Du kan välja en eller flera filer, det gör som sagt inget om du får med spår från innan eller efter fototillfället. Ingenting syns på skärmen än. \r\n\tVälj sedan Add image eller Add images from directory beroende på om det är ett fåtal eller en alla bilder i en katalog du vill geotagga. Nu dyker alla bilder upp i en lista. \r\n\tHögerklicka på en godtycklig bild, välj Find locations > for all images . Nu kommer listan uppdateras med latitud och longitud för alla bilder. \r\n\tOm det finns luckor i spåret från din GPS, dvs. att den inte har spelat in någon position för det exakta tillfället då bilden togs kan du använda funktionen Fill gaps för att räkna ut en mellanliggande position från de två närmast kända. \r\n\tNästa steg är frivilligt men kan vara skoj. Högerklicka på en godtycklig bild, välj Location names > for all images . Nu kommer programmet att gå ut på nätet och söka upp ortsnamn för alla positioner från Geonames . Ortsnamnen kommer att lagras som text i bildfilerna. \r\n\tNu kan du spara ändringarna till bildfilerna. Välj Save new locations > All images . \r\n\tVerktyget ExifTool som används för att skriva till bildfilerna kommer att skapa en backup-kopia av alla filer. Om man redan har en kopia av bildfilerna eller om de finns kvar på kamerans minneskort så är detta onödigt och tar bara extra lagringsutrymme. Detta kan man stänga av med inställningen -overwrite_original . Vill man att filerna skall behålla sin \"Senast ändrad\"-tid kan man även lägga in inställningen -preserve . \r\n\tKlart! \r\n \r\n\r\n// Johan",
- "published_at": {
- "$date": 1236121200000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 3,
- "day": 4,
- "updated_at": {
- "$date": 1331132952000
- },
- "created_at": {
- "$date": 1331132952000
- }
- },
- {
- "_id": {
- "$oid": "4f577b6d355c31056d000012"
- },
- "content": "Efter att ha sett scriptet follow_iphone_devs.rb fick jag idén att kombinera Sinatra och google-spreadsheet-ruby som ett exempel på vad man kan göra i Ruby om man inte har behov av ett större ramverk som Ruby on Rails .\r\n\r\n \r\n\r\nSinatra är ett DSL för att snabbt och enkelt skapa webbapplikationer i Ruby:\r\n\r\n # myapp.rb\r\n require 'rubygems'\r\n require 'sinatra'\r\n get '/' do\r\n 'Hello world!'\r\n end\r\n\r\nKomma igång \r\nFörst av allt behöver vi Ruby och RubyGems . Eftersom jag använder OS X så är de redan installerade. (Men se till att du har en uppdaterad version av RubyGems)\r\n\r\nOm du inte redan har lagt till GitHub i listan över dina gem sources:\r\n\r\n gem sources -a http://gems.github.com\r\n\r\nNu är vi redo att installera de gems vi kommer att använda:\r\n\r\n sudo gem install sinatra gimite-google-spreadsheet-ruby haml\r\n\r\nNu är vi redo att börja skriva vårt script:\r\n\r\nsinatra-and-google-spreadsheet.rb \r\n\r\nFörst tar vi och laddar in de gems vi kommer använda (Sinatra kommer att ladda in Haml åt oss):\r\n\r\n\r\n require 'rubygems'\r\n require 'sinatra'\r\n require 'google_spreadsheet'\r\n\r\nNu tar vi och aktiverar sessioner:\r\n\r\n # We want to save the posts in a session variable\r\n set :sessions, true\r\n\r\nOBS: Detta är självklart ingen lösning som skalar men det fungerar bra för vårt syfte. \r\n\r\n\r\nMetoderna för att hämta datat från Google Spreadsheet:\r\n\r\n def get_posts\r\n # Retrieve and return the posts\r\n session[\"posts\"] ||= retrieve_posts\r\n end\r\n \r\n def retrieve_posts\r\n # Empty posts hash\r\n posts = {}\r\n \r\n # Log in to Google Spreadsheet\r\n session = GoogleSpreadsheet.login('xxxxxxxx', 'xxxxxxxx')\r\n \r\n # First worksheet of \r\n # http://spreadsheets.google.com/ccc?key=peGTxx6h1WT0ihw9-QETbQg\r\n ws = session.spreadsheet_by_key(\"peGTxx6h1WT0ihw9-QETbQg\").worksheets[0]\r\n \r\n # Iterate over all the rows in the spreadsheet\r\n for i in 1...ws.num_rows\r\n # Store the data Identify data using the slug\r\n posts[ws[i+1,5]] = {\r\n :title => ws[i+1,1],\r\n :content => ws[i+1,2],\r\n :date => Date.parse(ws[i+1,3]),\r\n :author => ws[i+1,4],\r\n }\r\n end\r\n \r\n # Return the retrieved posts\r\n posts\r\n end\r\n\r\nVi använder memoization för att det bara ska bli en förfrågning till Google per session \r\n\r\nStartsida listar helt enkelt alla poster:\r\n\r\n get '/' do\r\n # Get all the posts\r\n @posts = get_posts\r\n \r\n # Render the index template\r\n haml :index\r\n end\r\n\r\nRespektive post har en \"slug\" som används i urlen:\r\n\r\n get '/:slug' do\r\n # Get the post\r\n @post = get_posts[params[:slug]]\r\n \r\n # Render the post template\r\n haml :post\r\n end\r\n\r\nNu definierar vi de Haml -mallar vi använder på sidorna:\r\n\r\n __END__\r\n \r\n @@ layout\r\n %html\r\n %head\r\n %title Sinatra and Google Spreadsheet\r\n %body\r\n = yield\r\n \r\n @@ index\r\n %h1.title All posts\r\n \r\n - @posts.each do |slug, post|\r\n %ul\r\n %li\r\n %a{:href => slug}\r\n = post[:title]\r\n @@ post\r\n %h1.title\r\n = @post[:title]\r\n \r\n %div\r\n Published\r\n %span.date\r\n = @post[:date]\r\n by\r\n %span.author\r\n = @post[:author]\r\n \r\n %p.content\r\n = @post[:content]\r\n \r\n %a{:href => '/'} << Back\r\n\r\nStarta scriptet \r\n\r\n $ ruby sinatra-and-google-spreadsheet.rb \r\n == Sinatra/0.9.1 has taken the stage on 4567 for development with backup from Thin\r\n >> Thin web server (v1.0.0 codename That´s What She Said)\r\n >> Maximum connections set to 1024\r\n >> Listening on 0.0.0.0:4567, CTRL+C to stop\r\n\r\nOm allt går som det ska så ska vi nu ha en server på http://localhost:4567/ .\r\n\r\nResultat \r\n\r\nFrån ett kalkylblad på Google Spreadsheet:\r\n\r\n \r\n\r\nTill en sida serverad med Sinatra:\r\n\r\n \r\n\r\nAtt man kan åstadkomma så mycket med under 100 rader Rubykod är rätt imponerande, speciellt om man tänker på att vi då även räknar in kommentarer och mallar.\r\n\r\n// [Peter](/peter)",
- "created_at": {
- "$date": 1331133293000
- },
- "day": 8,
- "last_updated_by": "peter",
- "month": 3,
- "published_at": {
- "$date": 1236466800000
- },
- "slug": "2009/03/08/sinatra-och-google-spreadsheet",
- "title": "Sinatra och Google Spreadsheet",
- "updated_at": {
- "$date": 1331133573000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f577f27355c31056d000014"
- },
- "content": "Jag har arbetat med EPiServer ett bra tag nu, och har sedan .NET 3.5 släpptes med möjligheten att \"bygga ut\" objekt med egna funktioner använt ett gäng sådana för att underlätta mitt dagliga arbete. Jag har haft mina Extensions liggande ett tag på Github men tänkte även skriva en liten post om det här.\r\n\r\nEtt exempel på en användning skulle t.ex kunna vara att du vill slumpa ut tio av en sidas barn, du vill också se till att bara hämta de som är publicerade. Genom att ha några smarta extensions så skulle du kunna göra såhär.\r\n\r\n\r\n PageDataCollection pages = CurrentPage.GetChildren(new FilterPublished(), new FilterRandom(10));\r\n\r\n\r\nUtan Extensions skulle detta kräva ett antal rader kod ytterligare och det är det lilla extra som gör att man trivs med ett API.\r\nEftersom filterparametern är en params parameter kan man kombinera ihop hur många filter man vill, egengjorda eller de som ingår i EPiServer. FilterRandom är bara ett enkelt filter för att slumpa ut ett antal sidor som jag gjort.\r\nMin klass innehåller ett antal funktioner för att underlätta arbetet med EPiServer så det är bara att ta ner min klass och se om det är något ni gillar.\r\n\r\n\r\n\r\nInte nöjd med mina eller vill du ha ännu mer extensions så kan du kolla på EPiCode där man försöker sammanställa bra extensions från epi-utvecklare.\r\n\r\n\r\n// Markus",
- "created_at": {
- "$date": 1331134247000
- },
- "day": 18,
- "last_updated_by": "peter",
- "month": 3,
- "published_at": {
- "$date": 1268866800000
- },
- "slug": "2010/03/18/extensions-for-episerver",
- "title": "Extensions för EPiServer",
- "updated_at": {
- "$date": 1331134281000
- },
- "year": 2010
- },
- {
- "_id": {
- "$oid": "4f577f82355c31056d000016"
- },
- "content": " \r\n\r\nDagens Industri har utnämt Athega AB till ett av årets Gasellföretag. Mindre än 1 procent av Sverige aktiebolag klarar kraven för att utses till Gasellföretag. Begreppet Gaseller är skapat av den amerikanske forskaren David Birch. Han visade att det var de små, snabbväxande företagen som skapar de flesta nya jobben\r\n\r\nVi är självklart både glada och stolta över detta.\r\n\r\n## En gasell\r\n\r\n - har offentliggjort minst fyra årsredovisningar.\r\n - har en omsättning som överstiger 10 Mkr.\r\n - har minst tio anställda.\r\n - har de senaste tre åren kontinuerligt ökat omsättningen.\r\n - har under samma period minst fördubblat sin omsättning.\r\n - har ett samlat rörelseresultat för de fyra räkenskapsåren som är positivt.\r\n - har i allt väsentligt vuxit organiskt, inte genom förvärv eller fusioner.\r\n - har sunda finanser.",
- "created_at": {
- "$date": 1331134338000
- },
- "day": 4,
- "last_updated_by": "peter",
- "month": 12,
- "published_at": {
- "$date": 1259881200000
- },
- "slug": "2009/12/04/gasell-2009",
- "title": "Gasell 2009",
- "updated_at": {
- "$date": 1331134369000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f577fd2355c31056d000018"
- },
- "content": " \r\n\r\nAnvändandet av Web Oriented Architecture (WOA) med hjälp av lättviktiga APIer (gränssnitt) gör det möjligt att kombinera och samköra information från olika leverantörer och därigenom skapa nya tjänster och applikationer. Tekniken innebär nya affärsmöjligheter för företag som vågar tänka annorlunda, men ställer samtidigt nya krav på öppenhet av strategisk information.\r\n\r\nUtbildningsradion har med hjälp av IT-konsultbolaget Athega möjliggjort för landets AV-centraler att via lättviktiga gränssnitt nå information om URs alla produktioner. För att göra detta krävdes ett strategiskt beslut om hur informationen bäst och framtidssäkert skulle göras tillgänglig. Valet blev att använda webbaserade APIer och på så sätt låta AV-centralerna få tillgång till informationen, direkt från huvudsystemet.\r\n\r\n> Athega har varit en samarbetspartner under många år och drivit utvecklingen av\r\n> URs IT-tjänster och uppbyggnaden av ett flertal projekt inom UR. När vi presenterade\r\n> en önskan om att utveckla en tjänst som skulle underlätta hanteringen av informationen\r\n> visade de på en rad innovativa lösningar på upplägget.\r\n>\r\n> #### Utbildningsradion AB\r\n\r\nURs programinnehåll, metadata kring produkterna och tablådata för alla radio- och TV-program från URs sändningsplaneringssystem, blir webbtjänster som finns tillgängliga publikt på internet. Det gynnar AV-centralerna som nu kan inkludera informationen i sina egna applikationer via lättviktiga APIer. Detta gör det även möjligt för utvecklare att ta fram nya tjänster kring URs produktdata.\r\n\r\nDet här tillvägagångssättet skiljer sig avsevärt mot tidigare då uppdateringar skedde på mottagarens eget initiativ, ofta via tungrodda, specialutvecklade exportformat. Import och export av data tog tid och det var svårt för AV-centralerna att alltid presentera aktuell information. Integration mellan de olika AV-centralerna krävde även anpassningar av URs system.\r\n\r\nLösningen blev att webbtjänsterna levererar information i ett eller flera format beroende av tjänst. AV-centralerna väljer själva om de vill hämta informationen som JSON, XML eller kanske IMS. JSON (JavaScript Object Notation) är speciellt intressant eftersom det är ett lättviktigt format för datautbyte som är enkelt att läsa och skriva för både människor och datorer. Dessutom kan det användas direkt i en webbläsare med JavaScript.\r\n\r\nAV-centralerna, som bland annat distribuerar utbildningsmaterial till landets skolor och som traditionellt uppdaterat informationen på egen hand, får nu direkt tillgång till URs information. Flera AV-centraler har utöver UR en mängd andra leverantörer. Att UR nu erbjuder AV-centralerna sin information på detta öppna och standardiserade sätt borgar för att även andra innehållsleverantörer följer efter. I slutändan kanske AV-centralerna inte behöver uppdatera sina egna databaser varken manuellt eller via importer. Informationen kan istället hämtas direkt från källan, utan fördröjningar.\r\n\r\n> Att utveckla generella, lättanvända webbgränssnitt mot interna system ger exempelvis\r\n> möjligheter att anpassa information olika för olika mottagare. Det blir lättare samköra\r\n> information från flera system och att snabbt ta ut den information som behövs för stunden.\r\n> \r\n> #### Peter Hellberg, utvecklare på Athega\r\n\r\nUR har i samarbete med Athega sedan tidigare utvecklat informationssystemet Infokuben med den samlade informationen från URs olika plattformar och system. Istället för att AV-centralerna ska uppdatera en egen databas med UR-program finns nu informationen direkt tillgänglig och korrekt uppdaterad via URs nyutvecklade sökfunktion. Mot sökfunktionen, som även finns tillgänglig via ett enkelt API, finns dessutom en generell, lättviktig klient skriven i Ruby on Rails. Den kraftfulla sökfunktionen returnerar ett resultat med information som kan kombineras från flera källor, exempelvis rättighetshantering, programtablåer och programinformation.\r\n\r\n> Tekniken ställer nya krav på företagen att anpassa sig till ett nytt företagsklimat.\r\n> Den som inte anpassar sig riskerar att bli frånkörd i framtiden. Tekniken öppnar upp\r\n> för många möjligheter, men svårigheterna har visat sig framförallt finnas i styrelserummen.\r\n> Det är ibland svårt att motivera en företagsledning att dela med sig av den värdefulla\r\n> informationen och därigenom faktiskt även släppa kontrollen över hur den används.\r\n>\r\n> #### Christian Lizell, VD på Athega\r\n\r\nI de fall informationen inte kan släppas helt fritt kan man med hjälp av autentiseringsnycklar begränsa vem som kan använda sig av tjänsten. Gränssnittet hanterar vilken information ett system har åtkomst till och hur den får användas.\r\n\r\nPeter Hellberg ger även exempel på framtida användningsområden:\r\n\r\n> En av de mer direkta och konkreta möjligheterna är naturligtvis för produktföretag\r\n> att exponera hela eller delar av sina produktkataloger som fritt kan infogas i\r\n> nya applikationer, skräddarsydda för nya målgrupper, i Facebook-sidor,\r\n> specialiserade forum eller webbshoppar.\r\n\r\nGenom att öppna upp sig på detta sätt har nu UR fått möjligheter att nå ut med korrekt information, snabbare, säkrare och till fler mottagare. Den enda insats som behövs är att hålla informationen uppdaterad, vilket ju redan görs.",
- "created_at": {
- "$date": 1331134418000
- },
- "day": 3,
- "last_updated_by": "peter",
- "month": 12,
- "published_at": {
- "$date": 1259794800000
- },
- "slug": "2009/12/03/ur-delar-med-sig-med-hjalp-av-woa-teknik",
- "title": "UR delar med sig med hjälp av WOA-teknik",
- "updated_at": {
- "$date": 1331134749000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f57815b355c31056d00001a"
- },
- "content": " \r\n\r\nEn av de bättre dragningarna på årets Øredev var Neal Ford 's ”The Productive Programmer: Mechanics”. Neal har skrivit en bok med samma namn, som jag hört litet blandad kritik om. Därför hade jag inga större förväntningar när jag klev in i rummet. Efter orden ”Graphical tools are med for novices” visste jag att detta var något för mig!\r\n\r\nNedan följer en rad tips, som alla syftar till att hjälpa dig bli en mer produktiv programmerare, oavsett om du använder emacs , notepad eller Eclipse .\r\nUrklippshanteraren (eller clipboard) \r\nVarför, varför finns det bara plats för ett urklipp i taget i dagens moderna operativsystem (*nix-dialekter undantagna)?\r\n\r\nDet är ju helt tokigt att inte kunna gå tillbaka och ta fram något man kopierade eller klippte ut för bara några minuter sedan, bara för att man råkat svara på ett mail, mitt i ett enhetstest eller liknande. Lösningen finns i form av några hjälpprogram:\r\n\r\nLär dig kortkommandon \r\nTiden det tar att lära sig även det mest obskyra kortkommando är väl investerad tid. Varje gång dina fingrar måste lämna tangentbord slösar du med tid. Hitta en bra partner att parprogrammera med och be honom/henne raljera över hur långsam du är varje gång du använder musen.\r\nScripta dina vanligast kommandon/texter \r\nOm du märker att du ofta skriver samma sak, skriver samma fel eller skriver samma sekvens av kommandon i en terminal, finns det hjälp. Textexpander är ett litet makroverktyg som verkligen sparar tid. Du kan använda det till allt från epostsignaturer till kod-\"snippets\".\r\n\r\nTyvärr kostar det pengar och finns det bara för Mac, men jag är övertygad om att det finns ett Windowsalternativ.\r\n”Locus of Attention” \r\nAtt kunna fokusera och komma in i flytet (”the Flow” eller ”the Zone ”) är lika viktigt som verktygen du använder. Om du programmerar vill du att platsen för din uppmärksamhet (fritt översatt) ska vara din IDE. Inte din klienter för IM, Twitter eller email, etc. Med den mängd information vi utsätts för varje minut är detta svårare och svårare.\r\n\r\n\tStäng av dina klienter för epost, twitter och IM och uppdatera dig då och då när du tar en paus från programmerandet \r\n\tAnvänd hörlurar för att visa att du inte vill bli störd \r\n\tInför tysta timmar på kontoret, exempelvis mellan 14 och 16 varje dag då du verkligen kan fokusera \r\n \r\nNeal menar exempelvis att Windows är som en treåring som konstant stör dig med påpekanden som ”Du har oanvända ikoner på ditt skrivbord \", ”Ditt virtuella minne håller på att ta slut ” eller ”Det finns säkerhetsuppdateringar till din dator ”. För att ytterligare hjälpa dig att minska störande moment finns det verktyg, skärm-dimmers, som sakta släcker ner allt förutom ditt akiva fönster:\r\n\r\nSök \r\nEn sökning slår alltid navigation med mus eller till och med tangentbord. Se till att du har en bra lokal sökmotor för din dator, som Google Desktop (Mac/Windows) eller QuickSilver (Mac). Neal menar att navigera i en trädstruktur i utforskaren eller i din IDE är som att berätta för datorn att du vet hur du använder musen. Om du vet vad filen heter - sök!\r\nAutomatisera \r\nEtt spiffigt användningsområde för Selenium är faktiskt att automatisera ditt iterativa testande. Du kanske felsöker en funktion som kräver att du klickar dig igenom en sekvens, fyller i litet testdata och till slut når fram till funktionen du felsöker. Denna process kan bli ganska trist att upprepa om och om igen. Med Seleniums IDE , som du installerar som ett plugin till Firefox, kan du enkelt spela in sekvensen en gång och sedan spela upp den varje gång du vill testa. Eller som Neal uttrycker det; ”You should never manually interact with the thing you are building unless you want to ”.\r\n\r\nHan avslutar med tänkvärda ”Solving problems by hand, makes you dumber ”. Word!",
- "created_at": {
- "$date": 1331134811000
- },
- "day": 10,
- "last_updated_by": "peter",
- "month": 11,
- "published_at": {
- "$date": 1257807600000
- },
- "slug": "2009/11/10/den-produktive-programmeraren",
- "title": "Den produktive programmeraren",
- "updated_at": {
- "$date": 1331134824000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f5781be355c31056d00001c"
- },
- "slug": "2009/03/14/bloggportalen-visar-relaterade-nyheter-fran-sesam",
- "title": "Bloggportalen visar relaterade nyheter från Sesam",
- "content": "Bloggportalen , som byggts av Athega , har en ny funktion för att visa relaterade nyheter från Sesam när man tittar på en av de mest diskterade nyheterna i bloggvärlden. Exempel på detta kan ses här .\r\n\r\nFunktionen är liksom Bloggportalen i övrigt byggd i Java med Struts som applikationsramverk och Hibernate som ORM / Object-relational mapping och persistenslager. Data hämtas som XML över nätet från en webbtjänst hos Sesam. Sedan används XPath för att välja ut relevant data att presentera.\r\n\r\nDetta sätt att presentera information och funktionalitet från flera olika källor på en och samma webbplats kallas ibland för en \"mashup\" . Ett annat exempel på detta är kartorna på Bloggportalen som skapas med hjälp av en tjänst från Google Maps.",
- "published_at": {
- "$date": 1236985200000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 3,
- "day": 14,
- "updated_at": {
- "$date": 1331134910000
- },
- "created_at": {
- "$date": 1331134910000
- }
- },
- {
- "_id": {
- "$oid": "4f5781f2355c31056d00001e"
- },
- "slug": "2009/04/08/athegas-oppna-kallkod-anvands-av-valmyndigheten",
- "title": "Athegas öppna källkod används av Valmyndigheten",
- "content": "I mitt förra inlägg berättade jag om en Perl-modul som vi släppt som öppen källkod. Det visade sig att denna kod ganska snabbt skulle komma till nytta. Häromdagen fick jag ett e-postmeddelande från Valmyndigheten där de berättade att de använder modulen och att den passar deras behov perfekt. De använder den för att konvertera positionen för alla vallokaler från RT90 till SWEREF99 för presentation på en karta på webben.\r\n\r\nModulen hittar ni här: Geo::SweGrid \r\n\r\n// [Johan](/johan)",
- "published_at": {
- "$date": 1239141600000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 4,
- "day": 8,
- "updated_at": {
- "$date": 1331134962000
- },
- "created_at": {
- "$date": 1331134962000
- }
- },
- {
- "_id": {
- "$oid": "4f578226355c31056d000020"
- },
- "content": " \r\n\r\nSedan några timmar så kan man köra Phusion Passenger under Nginx! \r\n\r\nPhusion Passenger och Apache har under en tid varit det populäraste sättet att enkelt driftsätta Ruby on Rails och Rack -applikationer. Nu kan man alltså välja att köra Passenger under den ryska (och tokigt snabba ) Nginx .\r\n\r\nDet enda man behöver göra är:\r\n\r\n\tInstallera gem: sudo gem install passenger
\r\n\tKöra Nginx installern: sudo passenger-install-nginx-module
\r\n\tKonfigurera (Det mesta sköts automagiskt) \r\n\tStarta \r\n \r\nMer ingående instruktioner finns på Phusion’s blogg \r\nPhusion Passenger \r\nHongli Lai och Ninh Bui presenterade Phusion Passenger (också känd som mod_rails ) under RailsConf 2008 , det var då jag verkligen fick upp ögonen för projektet.\r\n\r\nI den nya versionen har Phusion-grabbarna förutom att man nu kan använda sig av två olika webbservrar för att köra Passenger lagt till:\r\n\r\n\tStöd för \"chunked file uploads\" \r\n\tStöd för Capistranos sätt att sköta driftsättning (Symlänkning av current
osv.) \r\n\tFörmåga att ladda application_controller.rb
från en icke-standard sökväg \r\n\t\"Worker process event hooks\" för Rack \r\n \r\nNginx \r\nNginx driver ett flertal stora webbplatser, såsom WordPress , Hulu , Github , och Ohloh . Den serverar mer än två miljoner webbplatser och är därmed den näst populäraste webbservern under Linux.\r\n\r\n \r\n\r\n// [Peter](/peter)",
- "created_at": {
- "$date": 1331135014000
- },
- "day": 16,
- "last_updated_by": "peter",
- "month": 4,
- "published_at": {
- "$date": 1239832800000
- },
- "slug": "2009/04/16/ruby-on-rails-under-nginx-med-passenger",
- "title": "Ruby on Rails under Nginx med Phusion Passenger",
- "updated_at": {
- "$date": 1331135059000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f58cc7b355c312fbc000002"
- },
- "slug": "2009/11/09/athega-pa-escenicutbildning-i-oslo",
- "title": "Athega på Escenicutbildning i Oslo",
- "content": "Förra veckan var några av oss på Athega i Oslo. Det handlade om Escenic-utbildning anordnad av Escenic . Aktiviteten är en del av Athegas utbildningsplan för att möta våra kunders behov av duktiga Java-konsulter som även kan och har dokumenterad utbildning av Escenic.\r\n\r\nVi fick bland annat lära oss Escenic \"best practices\" och hur man på bästa sätt strukturerar och sätter upp en bra mallstruktur. Utöver kursen fick vi även en genomgång av Escenics nya produkt Escenic Widget Framework vilket ska underlätta för en kund att snabbt komma upp med Escenic-site.\r\n\r\nDet var tre givande dagar och vi kom tillbaka till Stockholm med mycket ny kunskap som förhoppningsvis även våra kunder kommer dra stor nytta av.\r\n\r\n// [Mikael](/mikael)",
- "published_at": {
- "$date": 1257721200000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 11,
- "day": 9,
- "updated_at": {
- "$date": 1331219579000
- },
- "created_at": {
- "$date": 1331219579000
- }
- },
- {
- "_id": {
- "$oid": "4f58cd3c355c312fbc000004"
- },
- "slug": "2009/10/06/json-och-mootools-for-web-workers",
- "title": "JSON och MooTools för Web Workers",
- "content": "MooTools är en trevlig verktygslåda som främst är tänkt för att skriva JavaScript-kod som manipulerar element på en webbsida och skapar animeringar och grafiska effekter. Därför är den starkt knuten till objekten window
och document
som finns i det globala kontextet när JavaScript-kod körs på en vanlig webbsida.\r\n\r\nMooTools i Worker-kontext \r\nMen MooTools har även hjälpmedel för att skriva objektorienterad kod samt en del utökningar och förbättringar för språket som sådant. Om man vill dra nytta av detta för kod som körs i ett annat sammanhang där window
och document
inte finns tillgängliga, t.ex. i en Web Worker tråd, vad gör man för att få mootools att fungera då?\r\nEn variant är att skapa mock-up objekt för att maskera det faktum att objekten inte finns, tomma skelett som bara innehåller det nödvändigaste för att mootools skall kunna laddas utan fel. Självklart ger inte detta tillgång till någon funktionalitet som är beroende av dessa objekt men övriga funktioner finns på plats.\r\n\r\n // If we're in a worker we need to masquerade the global context and load mootools\r\n if (self.importScripts) {\r\n document = {\r\n prototype: function() {},\r\n createElement: function() {},\r\n getElementsByTagName: function() {return []}\r\n };\r\n window = {\r\n document: document,\r\n Document: document,\r\n Element: { prototype: function() {} },\r\n Window: { prototype: function() {} },\r\n addEventListener: function() {},\r\n attachEvent: function() {},\r\n };\r\n self.importScripts('mootools.js');\r\n }\r\n\r\n\r\nSkicka objekt till Workers \r\nEftersom Web Workers är helt isolerade från webbsidan, dvs. inte har tillgång till något delat minne, går det inte att skicka objekt till dem hur som helst. Enda sättet att kommunicera är genom att posta meddelanden som bara kan överföra strängar. Självklart kan man då serialisera objekten till JSON och skicka med dem. \r\n\r\nVarför heter det JSON? \r\nVad jag då skulle vilja reflektera över är varför det kallas JavaScript Object Notation . Ett objekt är ju en sak som vet vad den är och kan göra saker själv, dvs. en datastruktur med tillhörande kod som beskriver hur den skall uppföra sig.\r\nNär man serialiserar ett objekt till en JSON-sträng försvinner alla kodreferenser, dvs. objektets metoder, kvar har man bara datastrukturen. Därför kan det tyckas vara mer korrekt att det borde kallas JavaScript Data Notation \r\n\r\nVälsigna datastrukturer \r\nVad gör vi då för att kunna använda datastrukturer som blivit deserialiserade från JSON som fullfjädrade objekt? Vi kan välsigna dem tillbaka till sin klasstillhörighet genom att koppla ihop datastrukturen med metoderna från klassen igen. Därför skapar vi en en konstruktor som heter bless
i basklassen för alla klasser Class
som tar en datastruktur och utökar en ny instans av klassen med denna.\r\n\r\n // Contructor that returns a new instance of this class\r\n // extended with all properties of the given data structure\r\n Class.prototype.bless = function(data) {\r\n return $extend(new this(), data);\r\n };\r\n\r\nDå kan vi sedan göra exempelvis så här:\r\n\r\n var MyClass = new Class({\r\n myData: \"Hello, world!\",\r\n doStuff: function() {\r\n alert(this.myData);\r\n }\r\n });\r\n \r\n var myObject = new MyClass();\r\n var string = JSON.encode(myObject);\r\n \r\n var data = JSON.decode(string);\r\n // data.doStuff(); <--- Not possible here\r\n var newObject = MyClass.bless(data);\r\n newObject.doStuff();\r\n\r\nPå så vis kan man återskapa objekt som är identiska med de som skickades trots att de har blivit omvandlade till och från en ren textsträng på vägen.\r\n\r\n// [Johan](/johan)",
- "published_at": {
- "$date": 1254780000000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 10,
- "day": 6,
- "updated_at": {
- "$date": 1331219772000
- },
- "created_at": {
- "$date": 1331219772000
- }
- },
- {
- "_id": {
- "$oid": "4f58cd92355c312fbc000006"
- },
- "content": "För några månader sedan flyttade vi över epost, kalendrar, kontakter och en hel del annat till Google Apps. Det kan jag verkligen rekommendera, men det är inte det vi ska prata om idag. För några dagar sedan fick Athega äntligen leveransen av alla iPhone 3GS-telefoner. Detta aktualiserade hur vi skulle få just epost, kalendrar och kontakter att synkroniseras mellan mobil, dator och Google.\r\n\r\nVisst, man kan hävda att Googles iPhone-anpassade Safari-applikationer är bra nog och ibland bättre, men den här guiden visar hur du får epost, kalendrar och kontakter till de nativa motsvarigheterna i din iPhone.\r\n\r\nViktigt att tänka på innan du börjar är att Google endast tillåter ett konto av detta slag (jag har exempelvis lagt till min privata gmail via vanlig IMAP). \r\n\r\nAktivera Google Sync för Google Apps \r\nFör att synkroniseringen ska fungera fullt ut behöver du eller din Google Apps-administratör aktivera Google Sync. Detta görs genom att kryssa för \"Aktivera Google Sync\" under \"Inställningar för mobilen\" när du befinner dig på Tjänstinställningar för Google Apps som administratör.\r\n\r\n \r\n\r\nVälj kalendrar \r\nOm du inte aktivt väljer vilka kalendrar du vill synkronisera, kommer du bara få din standardkalender. Detta kanske räcker för en del, men jag har flera olika kalendrar som jag vill få synkroniserade. Att få detta att fungera var inte helt problemfritt. Google kommer säkert förbättra detta, men när detta skrivs behöver du göra enligt nedan.\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\nSe till att du är inloggad med ditt Google Apps-konto och att m.google.com är konfigurerad till din domän . Tyvärr såg jag ingen Sync-ikon, efter detta. Det visade sig att jag var tvungen att ändra språk långst ner på sidan. Efter jag ändrat till \"English (US)\" och även land till \"USA\", visades ikonen som den skulle.
\r\n\r\nNästa steg är att välja din iPhone och sedan vilka kalendrar du vill synkronisera.\r\n\r\n \r\n\r\nSätt upp ett Exchange-konto \r\nDetta gör du genom att välja Inställningar -> E-post, kontakter, kalendrar -> Lägg till konto... De inställningar du behöver hittar du här .\r\n\r\n \r\n\r\nOm du har befintliga kalendrar får du välja om du vill ersätta dem. I mitt fall ville jag det eftersom de kalendrar som redan fanns i min iPhone var samma Google-kalendrar, synkroniserade via iTunes.\r\n\r\n \r\n\r\nSå var det klart, alltid samma data i din iPhone som på Google Apps och med Push!\r\n\r\nFördjupning \r\nMer information hittar du hos Google:\r\n\r\n\r\n// [Chrille](/chrille)",
- "created_at": {
- "$date": 1331219858000
- },
- "day": 1,
- "last_updated_by": "peter",
- "month": 10,
- "published_at": {
- "$date": 1254348000000
- },
- "slug": "2009/10/01/sa-far-du-google-sync-att-fungera-med-din-iphone",
- "title": "Så får du Google Sync att fungera med din iPhone",
- "updated_at": {
- "$date": 1331219957000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f58ce32355c312fbc000008"
- },
- "content": "För moderna webbapplikationer där en större del av koden körs i webbläsaren blir det allt viktigare med bra prestanda för exekvering av JavaScript.\r\nFör att kontrollera text i formulärfält och liknande simpla uppgifter är inte hastigheten så avgörande, men vad händer om man försöker köra tyngre beräkningar? För att göra ett benchmark som testar prestandan i de vanligaste webbläsarna har jag skrivit ett program som löser Sudokus .\r\n\r\n \r\n\r\nFör att jämföra de olika webbläsarna har jag kört denna Sudoku-kombination och jämfört tiden det tar att räkna fram alla möjliga lösningar på just min dator. Resultatet är ganska häpnadsväckande, som ni kan se i grafen nedan så utklassar Safari Internet Explorer med nästan en faktor på tio-till-ett. Chrome hamnar inte långt efter och både Firefox och Opera placerar sig hyffsat bra. Och då används inte ens Web Worker-trådar som har visat sig ha potential att dubbla prestandan och ytterligare öka försprånget för alla andra webbläsare framför Internet Explorer.\r\n\r\n \r\n\r\n// [Johan](/johan)",
- "created_at": {
- "$date": 1331220018000
- },
- "day": 1,
- "image_url": "",
- "last_updated_by": "johan",
- "month": 10,
- "published_at": {
- "$date": 1254348000000
- },
- "slug": "2009/10/01/javascriptprestanda",
- "summary": "",
- "tags_array": [],
- "title": "JavaScriptprestanda",
- "updated_at": {
- "$date": 1488298992000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f58ce6c355c312fbc00000a"
- },
- "content": "Tillsammans med Consid har Athega ställt upp i PPM-upphandlingen angående IT-tjänster och efter lång tid och en del förseningar så har beskedet kommit att vi var bland de vinnande anbudsgivarna.\r\nAthegas konsulter placerade sig dessutom i topp när de rankades efter olika kriterier av PPMs anbudsgranskare.\r\n\r\nDet är framför allt kompetens inom Perl som Athega kommer att leverera till PPM under de kommande åren.\r\n\r\nVi hoppas att det tar ordentlig fart nu i höst, så ska vi köra så det ryker!\r\n\r\n// [Fredrik](/fredrik)",
- "created_at": {
- "$date": 1331220076000
- },
- "day": 15,
- "last_updated_by": "peter",
- "month": 9,
- "published_at": {
- "$date": 1252965600000
- },
- "slug": "2009/09/15/ppm-upphandlingen",
- "title": "PPM-upphandlingen",
- "updated_at": {
- "$date": 1331220103000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f58cf22355c312fbc00000c"
- },
- "slug": "2009/09/01/hpricot-och-sinatra-pa-google-app-engine",
- "title": "Hpricot och Sinatra på Google App Engine",
- "content": "Hpricot är en HTML parser som är skriven i Ruby. Jag gillar den eftersom den är snabb och extremt enkel att jobba med. Den är perfekt om man vill extrahera innehåll från en webbsida som inte tillhandahåller ett färdigt api. Det finns många bra tutorials på nätet.\r\nEtt enkelt exempel \r\nFör att till exempel hitta alla nyheter på Athegas första sida kan man göra så här.\r\n\r\n require 'rubygems'\r\n require 'open-uri'\r\n require 'hpricot'\r\n \r\n # Läs in Athegas första sida\r\n doc = Hpricot(open(\"http://athega.se\"))\r\n # Xpath uttryck för att hitta nyheterna\r\n result = doc/\"//*[@id='helplist']/li/a\"\r\n\r\n\r\nHpricot på Google App Engine \r\nJag ville använda Hpricot tillsammans med Jruby och Sinatra (som Peter har skrivit mer om) på Google App Engine . Jag följde den här guiden för att komma igång med min Sinatra applikation på App Engine och det gick smärtfritt. Tyvärr så small det direkt när jag försökte använda mig av Hpricot. Ett AccessControlException kastades.\r\n\r\n javax.servlet.ServletContext log: Application Error\r\n java.security.AccessControlException: access denied (java.net.SocketPermission athega.se resolve)\r\n at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)\r\n at java.security.AccessController.checkPermission(AccessController.java:546)\r\n at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)\r\n at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:128)\r\n at java.lang.SecurityManager.checkConnect(SecurityManager.java:1031)\r\n at java.net.InetAddress.getAllByName0(InetAddress.java:1145)\r\n at java.net.InetAddress.getAllByName(InetAddress.java:1083)\r\n at java.net.InetAddress.getAllByName(InetAddress.java:1019)\r\n at java.net.InetAddress.getByName(InetAddress.java:969)\r\n\r\nVilket tyder på att någon javaklass som inte är med på Googles lista över tillåtna klasser användes. När jag studerade stacktracet lite närmare märkte jag att det var open-uri som ville använda javaklassen InetAddress som inte finns med i listan på godkända klasser.\r\n\r\nEftersom man med hjälp av Jruby kan \"scripta\" java var det relativt enkelt att byta ut open-uri mot godkända javaklasser istället och sedan automagiskt göra om java InputStream objektet till ett ruby io objekt som Hpricot kan ta i sin konstruktor. Lösningen blev enligt nedan.\r\n\r\n require 'rubygems'\r\n require 'hpricot'\r\n # Importerar java istället för open-uri\r\n require 'java'\r\n # Skapa en instans av java-klassen URL\r\n url = java.net.URL.new(\"http://athega.se\")\r\n # Kasta om java inputstreamen till ett ruby io objekt\r\n ruby_io = org.jruby.RubyIO.new(JRuby.runtime, url.openStream)\r\n io = Java.java_to_ruby(ruby_io.java_object)\r\n # Sen är det bara att använda Hpricot som vanligt\r\n doc = Hpricot(io)\r\n result = doc/\"//*[@id='helplist']/li/a\"\r\n\r\nSedan transformerade jag resultatet till JSON och la upp applikationen här http://athega-news-api.appspot.com (OBS, applikationen returnerar JSON direkt så jag rekommenderar JSONView pluginet till Firefox om man vill titta på datan)\r\n\r\nOm någon vill titta närmare på koden ligger den på Github men tänk på se till så att ni har tillstånd av rättighetsinnehavaren innan ni plockar data från webben.\r\n\r\n// [Mikael](/mikael)",
- "published_at": {
- "$date": 1251756000000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 9,
- "day": 1,
- "updated_at": {
- "$date": 1331220258000
- },
- "created_at": {
- "$date": 1331220258000
- }
- },
- {
- "_id": {
- "$oid": "4f58cf97355c312fbc00000e"
- },
- "slug": "2009/08/28/sociala-medier-for-foretaget",
- "title": "Sociala medier för företaget",
- "content": "Igår höll jag en dragning/workshop om hur företag kan använda sociala medier för att komma närmre befintliga och framtida kunder, hantera medgångar och motgångar eller kanske attrahera rätt människor.\r\n\r\nDell Hell \r\nDet låter litet klyschigt, men vi lever i en fantastisk tid. Jag inspirerades av ett blogginlägg från en bloggare med ett namn man inte glömmer, Willis Wee , som skriver mycket bra och tänkvärt om bl a sociala medier ur ett företagsperspektiv. I blogginlägget beskriver han hur Dell gått från förlorare till vinnare de senaste åren. Dells första reaktion var att stänga användarforum och inte bemöta den kritik som östes över dem i sociala medier. Idag satsar Dell stora resurser på bloggande, twittrande och kundmedverkan. Dell har exempelvis gjort ca 25 miljoner i vinst enbart via @Delloutlet . Det fantastiska med vår tid är vad sociala medier kan göra för oss, inte bara privat, utan även för företaget.\r\n\r\nFöretag som fortfarande tror att närvaro på nätet handlar om envägskommunikation, kommer få svårt att konkurrera med öppna, transparenta och medvetna företag som tar sina kunder på allvar.\r\n\r\nPresentationen \r\n\r\n\r\n// [Chrille](/chrille)",
- "published_at": {
- "$date": 1251410400000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 8,
- "day": 28,
- "updated_at": {
- "$date": 1331220375000
- },
- "created_at": {
- "$date": 1331220375000
- }
- },
- {
- "_id": {
- "$oid": "4f58d063355c312fbc000010"
- },
- "content": "Rita, animera och kontrollera pixlarna på webbsidan. Den nya canvas-taggen i HTML5 revolutionerar det som är möjligt att göra i en webbapplikation eller webbsida.\r\n\r\nDet bubblar av exempel på och demonstrationer av vad som är möjligt med webbläsare som har stöd för HTML5. I skrivandets stund kan man slarvigt säga att det är de flesta större alternativen till Internet Explorer som visar framfötterna. Firefox, Safari och Opera är alla långt framme vad gäller stöd för HTML5. Microsoft är inte riktigt med i matchen ännu. men jobbar på det , i alla fall enligt egen utsago. Tyvärr är det ju så att IE måste med, för att vi ska kunna börja använda oss av HTML5-specifika funktioner på riktigt.\r\nDen populära spegeleffekten \r\n \r\n\r\nVi ska titta på hur man kan skapa en spegeleffekt av exempelvis en bild med hjälp av canvas-taggen. Jag har använt två canvas-taggar, en för huvudbilden och en för den reflekterande ytan. Huvudbilden hade kunnat visas med en vanlig img-tagg, men jag ville ha möjligheten att \"rita\" och animera bilden också. Bilden föreställer min yngsta son, Carl.\r\n\r\nPrincipen är enkel; skapa en canvas-tagg med vanlig markup, rita i den med JavaScript.\r\n\r\n1. Skapa canvas-taggar \r\nBörja med att definiera två canvas att rita i.\r\n\r\n \r\n Din webbläsare har inte stöd för canvas-taggen
\r\n \r\n \r\n\r\nInnehållet i canvas-taggen är valfritt, men är tänkt att visas för äldre webbläsare eller webbläsare som helt enkelt inte har stöd för canvas-taggen (Varning: tidiga versioner av Safari visade dock detta innehåll). För att enkelt komma åt canvasytorna ger vi dem varsitt ID och en definierad storlek.\r\n\r\n2. Ladda huvudbilden \r\n\r\n var mainCanvas = document.getElementById('myCanvas');\r\n var mainCtx = mainCanvas.getContext('2d');\r\n \r\n var img = new Image();\r\n img.src = 'carl.jpg';\r\n img.onload = function() {\r\n mainCtx.drawImage(img, 0, 0);\r\n };\r\n\r\nFör att komma åt pixlarna i canvas-ytan, hämtas ett 2d-kontext, som sedan används av drawImage
för att rita bilden.\r\n\r\n3. Skapa spegeleffekten \r\n\r\n var mirrorCanvas = document.getElementById('mirrorCanvas');\r\n var mirrorCtx = mirrorCanvas.getContext('2d');\r\n \r\n var mainData = mainCtx.getImageData(0, 0, mainCanvas.width, mainCanvas.height);\r\n var mirrorData = mirrorCtx.getImageData(0, 0, mirrorCanvas.width, mirrorCanvas.height);\r\n \r\n var gradientStep = 70 / mainData.height;\r\n for (var x = 0; x < mainData.width; x++) {\r\n var currentAlpha = 0;\r\n for (var y = 0; y < mainData.height ; y++) {\r\n var mainIdx = (x + y * mainData.width) * 4;\r\n var mirrorIdx = (x + (mainData.height - 1 - y) * mainData.width) * 4;\r\n for (p=0; p<3; p++) {\r\n mirrorData.data[mirrorIdx+p] = mainData.data[mainIdx+p];\r\n }\r\n mirrorData.data[mirrorIdx + 3] = currentAlpha;\r\n \r\n currentAlpha += gradientStep;\r\n }\r\n }\r\n \r\n mirrorCtx.putImageData(mirrorData, 0, 0);\r\n\r\nVi börjar med att hämta pixelarrayer för både huvudbilden och den spegelvända bilden. Detta görs med funktionen getImageData
. Den returnerar en platt array med fyra poster för varje pixel. Dessa är i turordning värden för pixelns röda-, gröna-, blåa- och alphavärden.\r\n\r\nHuvudbildens pixlar stegas sedan igenom kolumnvis, så att vi kan skapa en reflektion genom att gradvis öka värdet på alphakanalen från 0 till 70 (255 är max). Jag läser uppifrån och ner i huvudbilden, men ritar nerifrån och upp i spegelbilden och får på så sätt bilden spegelvänd.\r\n\r\nTill sist uppdaterar vi spegelytan med den modifierade pixelarrayen genom att anropa putImageData
.\r\n\r\n4. Ett fungerande exempel \r\nHär finns ett fungerade exempel. För att visa att spegelytan är levande, har jag lagt till en animering som startas och stoppas genom att klicka i bilden. Tänk på att du behöver en hyfsat uppdaterad webbläsare som inte är Internet Explorer.\r\n\r\nHTML och JavaScript:\r\n\r\n\r\nAvslutningsvis, några imponerande canvas-exempel \r\n \r\n\r\n \r\n\r\n \r\n\r\nLäs mer \r\n\r\n\r\n// [Chrille](/chrille)",
- "created_at": {
- "$date": 1331220579000
- },
- "day": 8,
- "last_updated_by": "peter",
- "month": 7,
- "published_at": {
- "$date": 1247004000000
- },
- "slug": "2009/07/08/html5-och-canvas",
- "title": "HTML5 och canvas",
- "updated_at": {
- "$date": 1331220691000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f58d193355c312fbc000012"
- },
- "slug": "2009/07/06/mongodb",
- "title": "MongoDB",
- "content": " \r\n\r\nMongoDB är en blandning av nyckel-värde databas (t.ex. Scalaris ), dokumentdatabas (t.ex. CouchDB ) och relationsdatabas (t.ex. MySQL ).\r\n\r\nDen är skriven i C++ och passar bra för realtidsanalys av webbstatistik\r\n(sidvisningar, unika besökare, osv), Sessionsobjekt, Datacachning och mycket mer.\r\n\r\nDen har inbyggd replikering, automatisk failover och sharding, hög prestanda och den är open source.\r\n\r\nInternt så sparas datan i formatet BSON, vilket är JSON med ett datumformat och möjlighet att spara binärdata.\r\nInstallation \r\nJag kommer som vanligt att använda Mac OS X och Ruby men det finns förkompilerade paket för de vanligaste operativsystemen:\r\n\r\n OS X 32 bit \r\n OS X 64 bit \r\n Linux 32 bit \r\n Linux 64 bit \r\n Windows 32 bit \r\n Solaris i86pc (EXPERIMENTAL) \r\n \r\nDet finns även bindningar till ett flertal olika språk, dock har jag inte sett någon för .NET\r\n\r\nInstallationen var helt smärtfri, bara att ladda ner senaste tarbollen (mongodb-osx-x86_64-0.9.5 ) och packa upp den på valfri plats.\r\n\r\nMan behöver skapa en datakatalog (standard är /data/db
) och sen starta servern med\r\n\r\n./mongod --dbpath [DATAKATALOGEN]
\r\n\r\nNu lyssnar databasen på port 27017
och det finns ett webbgränssnitt på port 28017
.\r\n\r\nPå Rubysidan behövde jag bara installera paketet mongodb-mongo
från GitHub med RubyGems:\r\n\r\nsudo gem install mongodb-mongo
\r\nDags för lite kod \r\nAtt ansluta till databasen:\r\n\r\n #!/usr/bin/env ruby\r\n \r\n require 'rubygems'\r\n require 'mongo'\r\n \r\n db = XGen::Mongo::Driver::Mongo.new.db(\"mydb\")\r\n\r\n\r\nMongoDB har konceptet collections
för likartade dokument. (Eller olikartade.. det bestämmer du helt själv) Man kan likna dem vid tabeller.\r\n\r\n # Hämtar en collection, den skapas om den inte redan finns\r\n coll = db.collection(\"testCollection\")\r\n \r\n # Man kan stoppa in olika sorters dokument\r\n coll.insert({ :name => \"Peter\", :address => { :city => \"Stockholm\" } })\r\n coll.insert({ :name => \"Velociraptor\", :top_speed => \"25 m/s\",\r\n :can => {\r\n :open_doors => true,\r\n :turn_at_any_angle_at_any_velocity => true\r\n }\r\n })\r\n \r\n # Man kan sedan hämta ut datat ur databasen med metoden find_first.\r\n peter = coll.find_first(:name => 'Peter')\r\n raptor = coll.find_first(:top_speed => '25 m/s')\r\n \r\n # Man kan även hämta alla dokument i en collection\r\n coll.find.each do |doc|\r\n puts doc.inspect\r\n end\r\n \r\n\r\nVidare läsning \r\nJag har bara skrapat lite lätt på ytan av allt som går att göra med MongoDB, om du tycker att det verkar intressant så rekomenderar jag följande länkar:\r\n\r\n\r\n// [Peter](/peter)",
- "published_at": {
- "$date": 1246831200000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 7,
- "day": 6,
- "updated_at": {
- "$date": 1331220883000
- },
- "created_at": {
- "$date": 1331220883000
- }
- },
- {
- "_id": {
- "$oid": "4f58d25b355c311763000002"
- },
- "content": "Under våren har jag jobbat med att trimma en webbapplikation som levererar nätupplagan av en av Sveriges större tidningar. CMS-verktyget som används är Escenic i version 4.x och det kommer med en rad egna JSP-tagar. En av dom ska man dock akta sig för –
. Den är faktiskt inte så svår att leva utan heller. I den här artikeln visar jag hur.\r\n\r\n \" width=\"615\" height=\"276\" />\r\n\r\nVad är ancestorView? \r\nancestorView
används för att skapa en hierarkisk vy av sektioner utgående från den sektion du anger. Inget speciellt avancerat eller konstigt. Det borde inte heller vara jobbigt för systemet att skapa vyn, tyvärr sker något under ytan som ställer till det. Berätta gärna vad i kommentarerna. ;)\r\n\r\nHur det kan se ut (före) \r\nEtt vanligt sätt att använda sig av ancestorView
är för att exempelvis bygga en sökväg till en navigering:\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\nSkapa en lättviktig ersättning till ancestorView
\r\nEn enkel väg till ett liv utan ancestorView
-taggar är att skapa en mycket enkel custom tag. Nedanstående implementation har inte stöd för precis allt du kan göra med Escenics variant, men den gör jobbet för de flesta användningsfallen. Jag döpte den till ancestors.tag
och la den i /WEB-INF/lib/tags/section
.\r\n\r\n <%@tag body-content=\"empty\"%>\r\n <%@tag import=\"neo.xredsys.api.Section, java.util.ArrayList\"%>\r\n <%@attribute name=\"id\" required=\"true\" rtexprvalue=\"false\"%>\r\n <%@attribute name=\"section\" type=\"neo.xredsys.api.Section\" required=\"true\"%>\r\n <%@attribute name=\"includeRoot\" type=\"java.lang.String\" required=\"false\"%>\r\n <%@variable name-from-attribute=\"id\" alias=\"sectionPath\" scope=\"AT_END\"%>\r\n <%\r\n final ArrayList sections = new ArrayList();\r\n if (section != null) {\r\n do {\r\n sections.add(0, section);\r\n section = section.getParent();\r\n } while (section != null && (\"true\".equals(includeRoot) || section.getParent() != null));\r\n }\r\n jspContext.setAttribute(\"sectionPath\", sections);\r\n %>\r\n\r\nDet enda som egentligen sker här är att jag bygger upp en lista med föräldrasektioner i omvänd ordning genom att anropa Escenics API. Detta går av någon anledning massor med gånger snabbare.\r\n\r\nHur det kan se ut utan ancestorView
(efter) \r\n\r\n <%@ taglib prefix=\"sec\" tagdir=\"/WEB-INF/tags/section\" %>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\nEftersom jag inte längre arbetar med en vy av sektioner, kan jag iterera över listan med föräldrasektioner med en vanlig c:foreach
med fördelar som varStatus
, mm.\r\n\r\nSlutsats \r\nOm du använder Escenic i någon 4.x-version och om du får några träffar när du söker på ancestorView i din kodbas, finns all anledning att se över ett byte!\r\n\r\n// [Chrille](/chrille)",
- "created_at": {
- "$date": 1331221083000
- },
- "day": 2,
- "last_updated_by": "peter",
- "month": 7,
- "published_at": {
- "$date": 1246485600000
- },
- "slug": "2009/07/02/lar-dig-leva-utan-ancestorview",
- "title": "Lär dig leva utan ancestorView",
- "updated_at": {
- "$date": 1331221127000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4f58d38e355c311763000004"
- },
- "slug": "2009/07/02/potion",
- "title": "Potion, ett objekt- och mixin-orienterat språk",
- "content": " \r\n\r\nFörfattaren, tecknaren, musikern, konstnären, och programmeraren Why the Lucky Stiff har under en tid jobbat med ett litet och snabbt språk som han döpt till Potion. Språket är inte på något sätt färdigt eller ens menat att tas på allvar, men jag tycker att det är roligt att experimentera med nya och annorlunda språk.\r\nMantrat bakom Potion \r\n\"Allt är ett objekt, men objekten är inte allt\" samt tillägget \"Oh, och allt är en funktion\"\r\nVad är speciellt med Potion? \r\n\r\n Potion kompilerar ner programmen till maskinkod \r\n Det inkluderar en liten \"generational near-exact garbage collector\" \r\n Det är två språk i ett: ett för kod, ett för data \r\n Det består av färre än 10.000 rader C \r\n \r\nPotion är inspirerat av språken Io , Ruby , OCaml , Lua , REBOL och C. I den ordningen.\r\nInstallation under Mac OS X \r\nFörst måste man installera Ragel och det gör man enklast genom MacPorts :\r\n\r\nsudo port install ragel
\r\n\r\nOch sedan klonar man källkoden med Git :\r\n\r\ngit clone git://github.com/why/potion.git
\r\n\r\nEfter det kompilerar man koden:\r\n\r\nmake
\r\nDags att skriva lite kod \r\nEnklast möjliga \r\n\r\n 'Athega' print\r\n\r\nKommer helt enkelt att skriva ut strängen 'Athega' genom att man skickar meddelandet print
.\r\n\r\nNågot lite roligare \r\n\r\n loop: 'Athega' print.\r\n\r\nI Potion startar man block av kod med kolon och avslutar med punkt. Kommandot loop
kommer att inte helt oväntat loopa över blocket (en oändlig loop). Meddelandet print
sänds till strängen 'Athega'. Strängar är objekt, som allt annat. De tar emot meddelanden. Meddelanden är separerade från objekt med mellanrum. (I de flesta programmeringsspråk använder man punkt för att separera meddelanden, här (precis som i Svenska) representerar punkt ett avslut på något.)\r\n\r\nListor \r\n\r\n ('kaffet', 'på', 'h21', 'rockar') at (2) print\r\n\r\nNu skriver vi ut strängen 'h21'. Allt inom parenteser är listor . Vi skickar meddelandet at
. Alla listor har ett at
meddelande som hämtar poster baserat på positionen i listan.\r\n\r\nNotera att efter at
meddelandet kommer det en till lista. (2)
är ett argument till at
. Den ser ut som en lista (och det är en lista,) men vi kallar den för ett argument eftersom den kommer efter ett meddelande.\r\n\r\nDen funktionella sidan \r\n\r\n minus = (x, y): x - y.\r\n minus (y=10, x=6)\r\n\r\n\r\nHär har vi en variabel som innehåller en funktion. Funktionen subtraherar y
från x
. I detta fall returneras -4.\r\n(Detta liknar hur nyckelordsargument fungerar i Lua och Python)\r\n\r\nDen objektorienterade sidan \r\n\r\n Person = class: /name, /age, /sex.\r\n \r\n Person print = (): \r\n ('Mitt namn är ', /name, '.') join print.\r\n \r\n p = Person ()\r\n p /name = 'Peter'\r\n \r\n p print\r\n\r\nEn subklass \r\n\r\n Developer = Person class (language): /language = language.\r\n \r\n Developer print = ():\r\n ('Mitt namn är ', /name, ' och jag gillar ', /language, '.') join print.\r\n \r\n u = Developer ('Ruby')\r\n u /name = 'Peter'\r\n \r\n u print\r\n\r\nLicks \r\n\r\nTill sist har vi Lick vilket är dataspråket jag nämnde tidigare. Men varför skulle man vilja ha två språk i ett? En anledning är att det kan vara svårt att uttrycka data i kod. \r\n\r\nGenom att ha ett separat litet dataspråk kan man bygga trädstrukturer av godtyckliga element, ungefär som i HTML. (Man kan se det som kod som har blivit tolkad men inte exekverad)\r\n\r\n [name (attr1='string', attr2=10) 'TEXT HERE']\r\n\r\nVarje lick kan ha ett namn, en tabell med attribut och en lista med barn. Listan med barn kan även vara av någon annan datatyp. (tex nummer eller sträng)\r\n\r\nVidare läsning \r\n\r\n\r\n// [Peter](/peter)",
- "published_at": {
- "$date": 1246485600000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 7,
- "day": 2,
- "updated_at": {
- "$date": 1331221390000
- },
- "created_at": {
- "$date": 1331221390000
- }
- },
- {
- "_id": {
- "$oid": "4f58d41a355c311763000006"
- },
- "slug": "2009/06/10/google-wave",
- "title": "Google Wave",
- "content": "Google tar ett stort grepp genom att bygga en webbaserad kommunikation- och samarbetsplattform som i framtiden kan ersätta både mail, instant messaging och dokumenthantering.\r\n\r\nIdén är att inte skilja på ovanstående. Detta genom att användaren skapar en informationsström(wave) vilken alla inbjudna deltagare kan följa och medverka i. Då kommunikationen sker i realtid blir allt väldigt dynamiskt. En och samma wave kan användas för att skicka ett mail, socialt nätverka eller tillsammans med någon redigera ett dokument. Gränserna suddas ut och informationen kan samlas på ett och samma ställe.\r\n\r\nGränssnittet kanske kan beskrivas(mycket förenklat) som en instant messaging wiki. När en deltagare initierat en ström kan alla deltagare se vad som skrivs i realtid. Allt uppdateras löpande bokstav för bokstav i allas klienter. En kraftfull editor hanterar text och olika objekt. Det går att dra in länkar till andra konversationer eller bilder rakt in meddelanden som omedelbart dyker upp för övriga deltagare.\r\n\r\nEftersom allt går att redigera inte bara det man själv skrivit, utan alla meddelanden i wave-konversationen, blir det enkelt för flera att samtidigt redigera eller kommentera i en och samma textmassa. På ett möte skulle alla kunna följa en Wave där protokoll skrivs och samtidigt själva slänga in kommentarer eller rättningar i realtid. Alla ändringar går att spåra och en hela wave historiken finns så att den går att spela upp från början. \r\n\r\nStavningskontroll jämför ord i sitt sammanhang så att mycket avancerade rättningar sker i realtid beroende på orden runt om kring. I demonstrationen får vi även se en imponerande översättningsrobot som i realtid översätter meddelanden. \r\n\r\nEftersom Google Wave är öppet kommer troligen en mängd nya funktioner och tjänster dyka upp. Både som enklare plugin eller helt separata applikationer som på ett eller annat sätt utnyttjar informationsströmmarna och plattformen. \r\n\r\nJag har bara skrapat lite på ytan. Se demonstrationen själva på http://wave.google.com/ \r\n\r\n// [Mats](/mats)",
- "published_at": {
- "$date": 1244584800000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 6,
- "day": 10,
- "updated_at": {
- "$date": 1331221530000
- },
- "created_at": {
- "$date": 1331221530000
- }
- },
- {
- "_id": {
- "$oid": "4f58d458355c311763000008"
- },
- "slug": "2009/05/08/railsconf-torsdag",
- "title": "RailsConf: Torsdag",
- "content": "Build an App, Start a Movement \r\n\r\nWynn Netherland, Jim Mulholland och Bradley Joyce (Squeejee ) visade hur de byggde Tweet Congress och hur de använder Twitters API och Twitters API för sökningar.
\r\n\r\nDeras första tips var att inte vara rädd för att göra refaktureringar, det andra tipset var att se till att komma på Twitters whitelist.
\r\n\r\nEtt annat tips var att använda Domainr för att hitta bra domännamn.
\r\n\r\nMarknadsföringsstrategin \r\n\r\n\r\nTwitter! \r\nGick med i olika Webb-tävlingar (och vann sin kategori på SXSW) \r\nSkapade relationer med folk utanför IT-industrin \r\n \r\n\r\nFloxee \r\n\r\nEn av bieffekterna av att göra Tweet Congress var att de kunde bryta ut Floxee både som en hostad tjänst och som öppen källkod.
\r\n\r\nBuilding a Video Portal in Rails \r\n\r\nEd Laczynski (Zype ) och Nathaniel Bibler (Rocket Jump Industries ) berättade om hur de arbetar med CDN’s och videoprocessing-tjänster. Hur de strukturerat sin databas och applikationslogik.
\r\n\r\nDe har byggt ett Ruby-gränssnitt mot thePlatform som hanterar hämtningen av metadata samt implementerar Factory-mönstret för att bygga olika produkt-objekt.
\r\n\r\nDe använder memcached för att hantera cachningen.
\r\n\r\nIntegrating SMS Messaging with your Rails Application \r\n\r\nBlythe Dunham (Spongecell ) visade olika sätt att skicka och ta emot SMS genom Ruby.
\r\n\r\nMed RubyGSM kan man skicka AT-kommandon till mobiltelefoner.
\r\n\r\nR-House - Rails for Home Automation \r\n\r\nFernand Galiana (LiquidRail LLC ) har skapat projektet R-House vilket är ett Ruby-lager ovanpå LinuxMCE .
\r\n\r\nMed R-House kan man kontrollera hårdvara, tex. dimma lampor, låsa upp dörrar, klimatkontroll eller styra mediacenter.
\r\n\r\nHan visade också hur han använder en iPhone som fjärrkontroll till sitt hus.
\r\n\r\n// [Peter](/peter)",
- "published_at": {
- "$date": 1241733600000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 5,
- "day": 8,
- "updated_at": {
- "$date": 1331221592000
- },
- "created_at": {
- "$date": 1331221592000
- }
- },
- {
- "_id": {
- "$oid": "4f58d4b4355c31176300000a"
- },
- "slug": "2009/05/07/railsconf-onsdag",
- "title": "RailsConf: Onsdag",
- "content": "Keynote: Chris Wanstrath \r\n\r\nPresentationen: https://gist.github.com/0a2655aed6a26fa15a02
\r\n\r\n\r\n\r\nAdam Wiggins (Heroku ) berättade om hur Rails Metal går att kombinera med Sinatra.
\r\n\r\nWhat Makes Ruby Go: An Implementation Primer \r\n\r\nCharles Nutter (Sun Microsystems ) och Evan Phoenix (Engine Yard ) gick igenom olika delar av Ruby som man behöver tänka på för att inte stöta på prestandaproblem.
\r\n\r\nMetodanrop \r\n\r\nAtt cache:a metodanrop ger generellt sett den största prestandavinsten.
\r\n\r\nObject#extend är dock ett stort problem för att kunna cache:a metodanropen.
\r\n\r\nDet är viktigt att förstå hur extend fungerar så att man inte tömmer \r\nmetodanropscachen i onödan.
\r\n\r\nKonstanter \r\n\r\nFör att hålla prestandan upp ska man hålla konstanter konstanta, inte helt oväntat.
\r\n\r\nOptions Argument \r\n\r\nEn option hash strider mot DRY. \r\nDet är mycket snabbare att använda diskreta argument.
\r\n\r\nobj.run rescue nil \r\n\r\nDet är otroligt ovanligt att man vill fånga alla StandardError, vilket är 101 underklasser; IOError, SecurityError, TypeError, Etc.
\r\n\r\nobj.run rescue Exception \r\n\r\nI stort sett samma sak som rescue nil, fast värre, nu kan man inte ens ctrl-C’a ut ur koden.
\r\n\r\nAutoload \r\n\r\nHelt tråd-osäkert, fördröjer laddning av koden.\r\nAnvänder inte Kernel#require, alltså går det inte att köra autoload från gems.
\r\n\r\nSuper \r\n\r\nMan måste ta bort blocket om man inte vill att det ska skickas uppåt:
\r\n\r\n super(a, &nil)\r\n\r\nSuper ser bara senaste versionen av argumenten:
\r\n\r\n def foo(a, b)\r\n a = 1\r\n b = 'bar'\r\n super\r\n end\r\n\r\nSlutsats \r\n\r\n\r\nEnkel kod > Komplex kod \r\nDet finns inga gratis luncher \r\nTänk igenom två gånger, skriv koden en gång \r\nYAGNI \r\n \r\n\r\nCall into your Ruby code! Writing voice-enabled apps in Ruby with Adhearsion \r\n\r\nJay Phillips (Codemecca LLC ) visade hur man kan programmera Ruby för att styra Asterisk genom att använda sig av Adhearsion .
\r\n\r\nTyvärr fungerade det inte att använda Ahearsions Sandbox på konferensens wlan, \r\nså jag får ta och testa det lite senare.
\r\n\r\nVerkar intressant att kunna styra sin applikation genom att ringa till den :)
\r\n\r\n// [Peter](/peter)",
- "published_at": {
- "$date": 1241647200000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 5,
- "day": 7,
- "updated_at": {
- "$date": 1331221684000
- },
- "created_at": {
- "$date": 1331221684000
- }
- },
- {
- "_id": {
- "$oid": "4f58d5cd355c31176300000c"
- },
- "slug": "2009/05/06/railsconf-tisdag",
- "title": "RailsConf: Tisdag",
- "content": "Keynote: Rails 3 ..and the real secret to high productivity \r\n\r\nPresentationen (PDF)
\r\n\r\nDavid började med en tillbakablick på de 5 år som gått och vad som sagts om ramverket och hur det kom sig att det skapades så många kloner. Han fortsatte med att berätta om några förändringar i Rails 3.0
\r\n\r\n\r\nNy router \r\nSnabbare och bättre Rack-stöd \r\nXSS skyddet uppdateras \r\nJavaScript blir unobtrusive och ramverksagnostiskt \r\nMer agnostisism; Action ORM, Generatorer \r\nRefakturering; Abstract Controllers, ActiveRecord, Callbacks \r\n \r\n\r\nEn välkommen förändring är att output i vyerna kommer att bli escape:ad per default. För att skriva ut råformatet använder man metoden raw .
\r\n\r\nUnobtrusive JavaScript kommer att implementeras genom att använda HTML 5 attribut:
\r\n\r\n ## Rails 2.x\r\n <%= link_to_remote \"Delete\", :url => @comment, :method => :delete %> \r\n Destroy \r\n \r\n ## Rails 3.x\r\n <%= link_to \"Delete\", @comment, :remote => true, :method = :delete %> \r\n Destroy \r\n\r\nOch sen appliceras metoderna med JavaScript:
\r\n\r\n $(document.body).observe(\"click\", function(event) { \r\n var element = event.findElement(\"a['data-remote']\"); \r\n if (element) { \r\n var method = element.readAttribute(\"data-method\") || \"get\"; \r\n new Ajax.Request(element.readAttribute(\"href\"), { method: method }); \r\n event.stop(); \r\n } \r\n });\r\n\r\nHan visade på hur viktigt hög produktivitet faktiskt är, hur motivation snabbt minskar vid svåra problem.
\r\n\r\nRelaterade bloggposter \r\n\r\n\r\n\r\n\r\n\r\nAnställda på Gilt Groupe berättade om hur deras serverarkitektur ser ut, de använder PostgreSQL , 400+ Thin servrar, 2 ZXTM ’s (Zeus Extensible Traffic Manager)
\r\n\r\nApplikationen är skriven i Ruby on Rails.
\r\n\r\nDe måste jobba med sharding för att klara av den höga lasten.
\r\n\r\nDe använder ett internt CMS skrivet i Rails och har två “CDN”-servrar framför som serverar förgenererade sidor. (En server på östkusten och en på västkusten)
\r\n\r\nStort antal transaktioner \r\n\r\nDedikerade tjänster för varje transaktion - JRuby + EC2 + SQL + Rails
\r\n\r\nEC2 (lastbalanserad genom Zeus), expanderbar kapacitet, tid/behovsbaserad ökning av tillgänglig kapacitet.
\r\n\r\nDe arbetar tillsammans med Joyent för hosting.
\r\n\r\nHög volym / Delat tillstånd \r\n\r\nUnik ehandelsmodell, “flash sale” där alla produkter tar slut på en dag.
\r\n\r\nInventariemodellen \r\n\r\nGilt hanterar varje fysiskt objekt individuellt
\r\n\r\n\r\nBegränsat antal \r\nGår inte att få tag i fler \r\n \r\n\r\nVarukorgsmodellen \r\n\r\n\r\n\r\n\r\nAtt lägga till en produkt skapar en reservation \r\nOm produkten är tillgänglig får man en 10-minuters reservation\r\n\r\nMan måste betala in \r\n \r\n \r\n\r\nBetalningsfasen \r\n\r\n\r\nFörfråga om att förlänga reservationen \r\nOm reservationen är , förlängs den med 10 minuter\r\n\r\nMan kan får en prioriterad uppgradering \r\n \r\nOm reservationen inte är valid och det inte finns några lediga produkter\r\n\r\nMeddelande till kunden att produkten är slut och att man kan skriva upp sig på en väntelista. \r\n \r\n \r\n\r\nBetalning genomförd \r\n\r\nRespektive produkt markeras som såld i databasen
\r\n\r\nGilts framtidsstrategi \r\n\r\n\r\nKärntjänsterna är vy-lösa (MC) \r\nEnda gränssnittet är JSON/HTTP \r\nExterna tjänster skrivna i Ruby, Java för kritiska operationer internt \r\nInternt ramverk kallat Blackbird under utveckling, det hanterar skalbar deployment av tjänter i Ruby. \r\n \r\n\r\nPWN Your Infrastructure: Behind Call of Duty: World at War \r\n\r\nTyvärr fick jag inte plats inne på föreläsningen UI Fundamentals for Programmers med Ryan Singer från 37Signals så det fick bli mitt andrahandsval om hur Agora Games skalar sin serverarkitektur.
\r\n\r\nJason LaPorte (Agora Games ) talar om vad de tycker är fel med deployment av Rails. Ett av de största problemen är skalbarhet (Av administratörens tid) och i hans värld översätts detta i hur mycket den dagliga arbetsbördan ökar när antalet servrar ökar.
\r\n\r\nFör att hantera fel jobbar de med virtualisering med hjälp av Terremark och replikation för mjukvaruproblem.
\r\n\r\nDe propagerar /usr/local till alla servrar med NFS, vilket gör att uppdateringar sker hyffsat smärtfritt.
\r\n\r\nDe har ett internt system de kallar Overlord skrivet i Rails, det sköter hantering av konfigurationsfiler som sedan laddas ner av respektive server.
\r\n\r\nMonit ser till att de konfigurerade tjänsterna startas samt startar om tjänster som gått ner.
\r\n\r\nRRDTool visualiserar hur de olika tjänsterna mår genom att använda Monits xml-format. (http://server/_status?format=xml)
\r\n\r\nCentraliserad deployment med ett enkelt shellscript som:
\r\n\r\n\r\nUpdaterar koden \r\nUppdaterar miljön \r\nStartar om servrarna \r\n \r\n\r\nJavaScript Testing in Rails: Fast, Headless, In-Browser. Pick Any Three. \r\n\r\nLarry Karnowski och Jason Rudolph (Relevance, Inc. ) visar Blue Ridge , ett ramverk för testdriven utveckling med JavaScript.
\r\n\r\nDelarna i Blue Ridge \r\n\r\n\r\nRhino - en Java-baserad JavaScript interpreter \r\nScrew.Unit - en BDD syntax för JavaScript, liknar RSpec \r\nSmoke - ett JavaScript mocking & stubbing bibliotek, liknar Mocha \r\nenv.js - en DOM implementation skriven helt i JavaScript \r\n \r\n\r\nDet verkar grymt användbart att kunna köra tester av alla JavaScript från kommandoraden eller en CI-server. Tyvärr verkar det inte som om env.js fungerar tillsammans med jQuery 1.3.x så de kör med jQuery 1.2.6. De jobbar dock på att lösa problemet.
\r\n\r\nRelaterade länkar \r\n\r\n\r\n\r\nSmacking Git Around - Advanced Git Tricks \r\n\r\nPresentationen (PDF) |\r\nCheat-sheet (PDF)
\r\n\r\nScott Chacon (GitHub ) började med “Git in 60 seconds” och gick vidare med att gå igenom mer avancerade funktioner i Git.
\r\n\r\n\r\nMed filter branches kan man ta bort en fil från alla commits. \r\nSubtree merging är ett alternativ till Submodules. \r\nGit Bisect är användbart för att hitta vilken commit som orsakade problem \r\nMan kan diffa binära filer genom att använda .gitattributes \r\n \r\n\r\nQuality Code with Cucumber \r\n\r\nAslak Hellesøy (Bekk Consulting AS ) berättar om BDD med hjälp av Cucumber .
\r\n\r\n\r\nStep - Method invocation \r\nStep definition - Method definition \r\n \r\n\r\nJag är inte helt övertygad om att det är en bra idé att kunna definiera dataset i sina steps, men för övrigt verkar det riktigt användbart.
\r\n\r\nTags är en riktigt trevlig liten feature.
\r\n\r\n// [Peter](/peter)",
- "published_at": {
- "$date": 1241560800000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 5,
- "day": 6,
- "updated_at": {
- "$date": 1331221965000
- },
- "created_at": {
- "$date": 1331221965000
- }
- },
- {
- "_id": {
- "$oid": "4f58d654355c31176300000e"
- },
- "slug": "2009/05/05/railsconf-tutorials",
- "title": "RailsConf: Tutorials",
- "content": " \r\n\r\n\r\n\r\nPresentationen: jruby-railsconf-2009.pdf
\r\n\r\nHuvudpunkterna på föreläsningen var:
\r\n\r\n\r\nInstallation \r\nUtveckling \r\nPrestandatestning \r\nInteraktion med Java \r\nTestning \r\n \r\n\r\nJag hade gärna sett att han gått in lite mer på djupet om skillnaderna \r\nmellan JRuby och MRI, Olika sätt att deploya (Han visade GlassFish, \r\nmed tveksamt resultat)
\r\n\r\nEtt verktyg jag helt klart kommer att använda mig av i framtiden är VisualVM .
\r\n\r\nA Hat Full of Tricks with Sinatra - Blake Mizerany (Heroku ) \r\n\r\nDet första som händer är att Christian Neukirchen , \r\nhuvudutvecklaren av Rack sätter sig brevid mig.
\r\n\r\nFörsta fjärdedelen av Blakes föreläsning handlar inte om \r\nSinatra över huvud taget utan om just Rack .
\r\n\r\nMinimal Rack-applikation \r\n\r\n run lambda { |env| [200, {'Content-Type' => 'text/html'}, ['Hello']] }\r\n\r\nMinimal Sinatra-applikation \r\n\r\n require 'sinatra'\r\n \r\n get '/' do\r\n 'Hello'\r\n end\r\n\r\nRekomenderade böcker \r\n\r\n\r\n\r\nExempelkod \r\n\r\n\r\n\r\nRelaterade länkar \r\n\r\n\r\n \r\n\r\n// [Peter](/peter)",
- "published_at": {
- "$date": 1241474400000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 5,
- "day": 5,
- "updated_at": {
- "$date": 1331222100000
- },
- "created_at": {
- "$date": 1331222100000
- }
- },
- {
- "_id": {
- "$oid": "4f58d708355c311763000010"
- },
- "slug": "2009/04/24/lat-inte-tomcat-jobba-i-onodan",
- "title": "Låt inte Tomcat jobba i onödan",
- "content": "Ett vanligt upplägg för en lastad sajt med någorlunda statiskt innehåll ser ut enligt nedan:\r\n\r\n \r\n\r\nI korthet innebär det att den största delen av trafiken hanteras av enkla webbcachear som leverar sidor till slutanvändarna. Med ett visst intervall efterfrågar cachearna frontarna efter nytt innehåll. Frontarna kan exempelvis köra en eller flera Tomcat-instanser som genererar innehållet. På detta sätt kan även riktigt stora siter klara sig på ett tiotal maskiner.\r\n\r\nFör alla JSP-sidor som Tomcat-frontarna genererar åt cachearna skapas nu en session, precis som Servlet-standarden föreskriver. Det är helt i sin ordning, fast helt onödigt i det här fallet. Det genererade innehållet levereras inte direkt till slutanvändaren, utan till cachen. Kan man få servlet-motorn att inte skapa sessioner i onödan och på så sätt spara sina dyra resurser?\r\n\r\nJa, ett sätt är att överst i sin JSP-sida helt enkelt utbrista:\r\n\r\n <%@page session=\"false\"%>\r\n\r\nDock är det kanske inte att föredra i ett litet större projekt med hundratals JSP-sidor. Det man letar efter är ett sätt att slå av det centralt för alla JSP-sidor. Min första instikt var att konfiguerar Jasper, som kompilerar JSP-sidorna att inte skapa sessioner om man inte explicit bad om det. Någon sådan parameter hittade jag tyvärr inte. Personer som har liknande frågor på nätet får istället frågan; \"Varför vill du slå av sessioner? De är ju en del av standarden!\"\r\n\r\nMitt nästa spår var att automatiskt försöka inkludera ovanstående direktiv för varje genererad sida. Från och med JSP 2.0 (som inte direkt kom ut igår) går det att få till ganska enkelt med något som kallas för implicit includes.\r\n\r\nBörja med att lägga till ett jsp-config-direktiv i din web.xml:\r\n \r\n \r\n \r\n *.jsp \r\n /WEB-INF/jspf/disableSession.jspf \r\n \r\n \r\n\r\nDetta matchar alla JSP-filer (med filändelsen .jsp) och inkluderar innehållet av filen disableSession.jspf precis som om du skulle ha skrivit\r\n\r\n <%@include file=\"/WEB-INF/jspf/disableSession.jspf\"%>\r\n\r\nhögst upp i varenda JSP-fil.\r\n\r\nNotera att filen som inkluderas är av typen .jspf, ett JSP-fragment. Detta är nödvändigt och säkerställer bland annat att du inte råkar in i några oändliga inkluderingsloopar. Att filen ligger i mappen /WEB-INF/jspf är rekommenderat och förhindrar även direkt access för en slutanvändare.\r\n\r\nTesta! Tomcat kommer att kasta fel i loggarna så fort du försöker skapa en session, men om du har det som jag är det precis så du vill ha det!\r\n\r\n// [Chrille](/chrille)",
- "published_at": {
- "$date": 1240524000000
- },
- "last_updated_by": "peter",
- "year": 2009,
- "month": 4,
- "day": 24,
- "updated_at": {
- "$date": 1331222280000
- },
- "created_at": {
- "$date": 1331222280000
- }
- },
- {
- "_id": {
- "$oid": "4f58d741355c311763000012"
- },
- "content": "Jag har länge använt ett screen capture-program för att komplettera dokumentation och manualer med tutorials som är lätta för användarna att ta till sig.\r\n\r\nNär det handlar om en steg för steg beskrivning av något i ett applikation tycker jag det både är väldigt bekvämt, för mig som gör det, och mycket lätt att förstå för användarna. Min erfarenhet är att det blir ett mycket uppskattat och givande komplement till övrig dokumentation.\r\nPå mitt uppdrag har jag arbetat med ett par olika lösningar för att spela desktop och visa hur man gör saker och sedan publicera dessa på support-web-sidor. Det kan handla om allt från hur en miljö är uppbyggt till handgrepp vid installationer mm. Jag tycker tekniken nästan kan mäta sig med att sitta bredvid någon och förklara. Speciellt om det är svåra gränssnitt där det finns många möjligheter att klicka bort sig eller när det gäller applikationer som inte är helt logiska.
\r\nJag blev väldigt nyfiken när jag fick höra talas om en online screen recorder-tjänst som heter screentoaster. Efter registrering kom jag igång relativt snabbt.
\r\nInom någon minut hade jag spelat in en första testfilm. Dom inspelade filmerna går sedan direkt att publicera till olika tjänster. Mycket lätt att använda och dom flesta funktioner finns där. Spela in från webcam och att lägga på ljud eller inte.\r\n\r\n## Edit (2012)\r\n\r\nDå Screentoaster verkar ha lagt ner så kan vi rekomendera tjänsten [Screenr](http://screenr.com/) istället.\r\n\r\n\r\n// [Mats](/mats)",
- "created_at": {
- "$date": 1331222337000
- },
- "day": 24,
- "last_updated_by": "peter",
- "month": 4,
- "published_at": {
- "$date": 1240524000000
- },
- "slug": "2009/04/24/screen-capture-online",
- "title": "Screen capture online",
- "updated_at": {
- "$date": 1331222495000
- },
- "year": 2009
- },
- {
- "_id": {
- "$oid": "4fc8b2ba355c310ce6000002"
- },
- "content": "I onsdags var jag ([Peter](/peter)) och [Johan](/johan)\r\npå Valtech för deras årliga [Tech Day](http://vtd12.se/).\r\n\r\nIstället för att skriva om presentationerna tänkte jag lista några \r\nav de applikationer och ramverk som nämndes under dagen.\r\n\r\n\r\n### Network Link Conditioner\r\n\r\nEtt litet verktyg som du hittar i paketet **Hardware IO Tools for Xcode**\r\n\r\n\r\n### [Flexslider](http://www.woothemes.com/flexslider/) \r\n\r\nEtt helt responsivt bildspel baserat på jQuery.\r\n\r\n\r\n### [Modernizr](http://modernizr.com/)\r\n\r\nModernizr är ett JavaScript-ramverk som används för att identifiera\r\nvilka funktioner en besökares webbläsare stödjer. Det gör det enklare\r\nför utvecklaren att börja använda sig av HTML5 och CSS3 funktioner som\r\nännu inte stöds av alla webbläsare.\r\n\r\n\r\n### [ImageOptim](http://imageoptim.com/) \r\n\r\nMed ImageOptim kan man snabbt och enkelt\r\nkomprimera bilder, främst för användning på nätet.\r\nDet stödjer formaten PNG, JPEG och GIF.\r\nDet är för övrigt en OS X applikation.\r\n\r\n\r\n### [The Play framework](http://www.playframework.org/)\r\n\r\nEtt riktigt intressant webbramverk som med tiden har \r\nfått ett ökat fokus på JVM-språket \r\n[Scala](http://www.scala-lang.org/).\r\n\r\n\r\n### [jQuery Message Queuing](http://benalman.com/projects/jquery-message-queuing-plugin/)\r\n\r\nEn meddelandekö implementerad som ett [jQuery](http://jquery.com/)-plugin.\r\n\r\n> You can also get some quantity of JavaScript ducks, put them in a boat, \r\n> in a line, and have them fight loudly over who gets to use the oars.\r\n\r\n\r\n### [Meteor](http://meteor.com/)\r\n\r\nEtt riktigt spännande webbramverk byggt med [Node.js](http://nodejs.org/).\r\nNågot av det intressantaste med Meteor är att man i stort sett har suddat ut \r\ngränsen mellan klient och server.\r\n\r\n\r\n### [Handlebars.js](http://handlebarsjs.com/)\r\n\r\nEn vidareutveckling eller snarare en utökning av mallspråket \r\n[Mustache](http://mustache.github.com/). (Ett annat alternativ är \r\n[Hogan.js](http://twitter.github.com/hogan.js/) från Twitter)\r\n\r\n\r\n### [Jasmine](http://pivotal.github.com/jasmine/)\r\n\r\nBDD-testramverk för JavaScript. Jag använder det oftast i \r\nkombination med [CoffeeScript](http://coffeescript.org/), \r\nenligt mig blir det riktigt stiligt.\r\n\r\n### [Clojure](http://clojure.org/)\r\n\r\nEn LISP-dialekt på JVMen, en perfekt kombination? Jag tror nästan det :) \r\nFör pakethantering och beroendehantering så rekomenderas [Leiningen](http://leiningen.org/).\r\n\r\n### [SPDY](http://dev.chromium.org/spdy)\r\n\r\nExperimentell ersättare för HTTP, med fiffiga funktioner som\r\nmultiplexing, komprimering av headers samt server push bara för att\r\nnämna några.\r\n\r\n/ [Peter](/peter)",
- "created_at": {
- "$date": 1338553018000
- },
- "day": 1,
- "last_updated_by": "peter",
- "month": 6,
- "published_at": {
- "$date": 1338501600000
- },
- "slug": "2012/06/01/mjukvarutips-vtd12",
- "title": "Mjukvarutips från Valtech Tech Day 2012",
- "updated_at": {
- "$date": 1338553055000
- },
- "year": 2012
- },
- {
- "_id": {
- "$oid": "4fe75e81355c310642000002"
- },
- "slug": "2012/06/23/nordic-ruby-2012",
- "title": "Nordic Ruby 2012",
- "content": "Under förra helgen var jag ([Peter](/peter)), \r\n[Johan](/johan), [Mikael](/mikael) och [Petter](/petter) på\r\n[Nordic Ruby](http://2012.nordicruby.org/).\r\n\r\nTidigare år har vi åkt ner till Göteborg, men i år \r\nflyttades konferensen till Stockholm, närmare bestämt \r\ntill [Yasuragi Hasseludden](http://www.yasuragi.se/).\r\n\r\n## Fredag\r\n\r\nNär vi hade ätit frukost och druckit vårt [morgonkaffe](http://damatteo.se/)\r\nvar det dags för konferensen att komma igång ordentligt.\r\n\r\n\r\n\r\n### Someone is wrong\r\n\r\nKonferensen inleddes av [Joseph Wilk](https://twitter.com/josephwilk)\r\noch han pratade om *Retorik för programmerare*. Han presenterade ett\r\nantal olika sätt att använda sig av retorik för att förstärka sina\r\nargument.\r\n\r\n> Code wins arguments\r\n\r\nHan nämnde även på att känslor ofta överskuggar logik.\r\n\r\n### We don’t know HTTP\r\n\r\nDen andra föreläsningen hölls av \r\n[Konstantin Haase](https://twitter.com/konstantinhaase) \r\noch han gick igenom de olika HTTP-verben och hur man egentligen borde\r\nanvända dem. (Enligt Konstantin missbrukas POST i allt för stor\r\nutsträckning)\r\n\r\n### Ruby++\r\n\r\n[Ben Orenstein](https://twitter.com/r00k) gick igenom några \r\nfunktioner som det skulle vara trevligt om Ruby hade. Några exempel \r\npå detta var *List comprehension* och *Significant whitespace* \r\n(CoffeeScript/Python)\r\n\r\n> Haskell is a slightly inconvenient language for the normal developer\r\n\r\nHan visade även hur elegant syntax \r\nLISP-dialekten [Clojure](http://clojure.org/) har.\r\nEn fördel med funktionella språk är att det generellt \r\nsett är väldigt enkelt att skriva tester.\r\n\r\n### Therapeutic Refactoring\r\n\r\n[Katrina Owen](https://twitter.com/kytrinyx) höll, enligt mig, en av\r\nkonferensens absolut bästa föreläsningar.\r\n\r\n> Random acts of refactorings\r\n\r\nVi fick följa henne när hon steg för steg tog sig an uppgiften \r\natt förbättra en metod som varken var testad eller lätt att förstå.\r\n\r\nEtt av hennes knep var att skriva nonsens-tester för att \r\nfå reda på vad metoden returnerar.\r\n\r\nHon använde även designmöstret \r\n[Replace Method with Method\r\nObject](http://www.refactoring.com/catalog/replaceMethodWithMethodObject.html)\r\n\r\n> Extract and then eliminate codejunk!\r\n\r\nHon nämnde också att det inte är någon bra idé att blanda\r\nflera nivåer av abstraktion i samma metod.\r\n\r\n### Kinect Programming with Ruby\r\n\r\nKillarna på [Thunderbolt Labs](https://twitter.com/thunderboltlabs)\r\nvisade några hack de gjort med Processing, OpenNI, JRuby och Kinect.\r\nTyvärr hade jag hoppats på något lite mer användbart.\r\n\r\n### Marketing for Geeks\r\n\r\n[Brian Doll](https://twitter.com/briandoll) föreläste om \r\nolika former av marknadsföring som kan vara användbara för oss\r\nutvecklare. Han tyckte verkligen att man ska hantera sin egen\r\nmarknadsföring, speciellt som kommunikationen med kunder \r\nmåste gå åt båda hållen.\r\n\r\nEn av hans rekomendationer var att läsa [Voice and\r\nTone](http://voiceandtone.com/) från MailChimp.\r\n\r\n\r\n\r\n## Lördag\r\n\r\n### Building an army of robots\r\n\r\n[Kyle Neath](https://twitter.com/kneath) från \r\n[GitHub](https://github.com/) visade ett flertal av deras\r\ninterna system. (Det syntes verkligen att de lagt ner mycket tid\r\npå att bygga välfungerande och framför allt snygga applikationer)\r\n\r\nNågra exempel:\r\n\r\n - GitHub Play (Streamad musik till alla anställda)\r\n - En privat klient för Campfire\r\n - The Graph Store (Grafer för **allt**)\r\n - Janky (Ett snyggare gränssnitt till CI-servern Jenkins)\r\n\r\nHan hävdade att interna verktyg är en viktig \r\nfaktor när företagskulturen formas och att man \r\ndärför borde satsa lite extra mycket på dem.\r\n\r\n### Mastering Database Design with Redis\r\n\r\nFörsta halvan av föreläsningen bestod i en introduktion till Redis och\r\nvad den är bra på, andra halvan gick ut på att ignorera detta och\r\nanvända Redis som en generell databas. Jag har lite svårt att se varför\r\nman skulle vilja begränsa sig på detta sätt. Redis har blivit något av\r\nen storfavorit, men det betyder inte att den lämpar sig speciellt bra\r\nför komplexa relationer, sökningar eller sortering.\r\n\r\n### Yay! Mocks!\r\n\r\n[Corey Haines](https://twitter.com/coreyhaines) pratade om *Mocks* \r\neller snarare alla typer av *Test Doubles*.\r\n\r\nHan hävdade att en anledning till att så många tycker illa om \r\n*Test Doubles* är att de representerar en “reaktion av smärta”.\r\n\r\n> Test Doubles often highlight pain\r\n\r\nEn tumregel är att man bara hanterar **vad** som ska göras i sina\r\n*Controllers* och inte **hur**, det är oftast bättre att delegera vidare\r\ntill modellen.\r\n\r\nOm testerna är svåra att skriva så ska man se det som en indikation \r\natt man kanske behöver förändra sin design så att koden blir enklare \r\natt testa.\r\n\r\n> TDD is about refactoring away from discomfort\r\n\r\nHans argument reflekterade mina egna erfarenheter och åsikter\r\nom att använda *Stubs* och *Mocks*.\r\n\r\n### Perfectionists Anonymous\r\n\r\n[Alan Gardner](https://twitter.com/mr_urf) och \r\n[Erin O’Brien](https://twitter.com/coolaunterin) höll en gemensam\r\nföreläsning om psykologin bakom perfektionism.\r\n\r\nTre punker som jag tyckte var extra bra:\r\n\r\n - Sätt inte skyhöga krav på dig själv\r\n - Lita på att andra gör ett bra jobb\r\n - Behandla varandra med respekt\r\n\r\nDe nämnde även #devmed, vilket är en mycket enkel meditationsform \r\nsom jag utövat till och från sedan Rocky Mountain Ruby förra året.\r\n\r\n### Metrics Driven X\r\n\r\n[Aaron Quint](https://twitter.com/aq) berättade om något han kallade\r\n*Continuous Process Delivery* och vikten av att mäta **allt**.\r\n\r\n> Numbers are important but most important is positive change.\r\n\r\nDet finns två typer av mätvärden, kvalitativa och kvantitativa;\r\n\r\n - Kvalitativa mätningar kan ses som tillväxthastigheten för produkten\r\n - Kvantitativa mätningar kan ses som accelerationen av produktens tillväxt\r\n\r\nTre av de verktyg som de använder för att mäta trender \r\när Statsd, Graphite och deras eget projekt Graphiti.\r\n\r\n### Adventures on the Golden Path\r\n\r\n[Steve Klabnik](https://twitter.com/steveklabnik) beskrev resan från\r\nRails 1 till uppkommande Rails 4.\r\n\r\nKortfattat kan man beskriva de olika versionerna såhär:\r\n\r\n 1. Vi kan göra vad ni kan göra.\r\n 2. Vi kan göra det ni kan, men bättre.\r\n 3. Totalrenovering inför framtiden.\r\n 4. Nytt fokus på utvecklarglädje.\r\n\r\nSteve ser de starka sociala konventioner som bildats runt Ruby on Rails\r\nsom en viktig anledning till att ramverket har blivit så populärt.\r\n\r\nNågra förbättringar som han skulle vilja se i Rails 4:\r\n\r\n - Ett bättre gränssnitt till routern: `Route.article(1).edit`\r\n - Att `rake` ersatte `rails` för alla kommandon som skrivs i\r\n terminalen.\r\n - Kommentarer i genererade modeller\r\n - Ingen delning av instansvariabler mellan kontroller och vyer.\r\n\r\nMen han ser även att det skulle kunna ske lite förbättringar\r\n\r\n",
- "published_at": {
- "$date": 1340402400000
- },
- "last_updated_by": "peter",
- "year": 2012,
- "month": 6,
- "day": 23,
- "updated_at": {
- "$date": 1340563073000
- },
- "created_at": {
- "$date": 1340563073000
- }
- },
- {
- "_id": {
- "$oid": "5064c3bb355c316524000002"
- },
- "slug": "2012/09/27/rocky-mountain-ruby-2012",
- "title": "Rocky Mountain Ruby 2012",
- "content": "\r\n\r\nFörra veckan fylldes [Boulder Theater](http://www.bouldertheater.com/)\r\nännu en gång av Rubyister från ett flertal delstater och länder, \r\ndet var dags för årets upplaga av konferensen \r\n[Rocky Mountain Ruby](http://rockymtnruby.com/).\r\n\r\n## Onsdag 19/9\r\n\r\nKvällen innan konferensen kom igång på riktigt höll \r\n[Quick Left](http://quickleft.com/) en [Arduino](http://arduino.cc/)-hackfest. \r\n(Hårdvaran sponsrades av [SparkFun](http://www.sparkfun.com/))\r\n\r\n\r\n\r\n## Torsdag 20/9\r\n\r\n[Mike Gehard](https://twitter.com/mikegehard) inledde med\r\nnågra minuter av [\\#devmed](https://twitter.com/i/#!/search/realtime/%23devmed)\r\n\r\n### Go Ahead, Make a Mess\r\n\r\n> What is the future cost of doing nothing now?\r\n\r\nDen första presentationen hölls av [Sandi Metz](https://twitter.com/sandimetz)\r\noch hon satte ribban riktigt högt för de andra talarna :) \r\n\r\nHon beskrev hur man kan göra för att strukturera sin kod så att man\r\nkapslar in de tråkigaste delarna av en kodbas.\r\n\r\n[Kommentarer](https://github.com/newhavenrb/conferences/wiki/Go-Ahead-Make-a-Mess),\r\n[Video](http://www.confreaks.com/videos/1115-gogaruco2012-go-ahead-make-a-mess) och\r\n[Slides](https://speakerdeck.com/u/skmetz/p/go-ahead-make-a-mess-sandi-metz-rocky-mountain)\r\n\r\nPS. Hennes bok [Practical Object-Oriented Design in Ruby](http://www.poodr.info/)\r\nhar precis släppts!\r\n\r\n### Refactoring from Good to Great\r\n\r\n> Tell don’t ask.\r\n\r\n[Ben Orenstein](https://twitter.com/r00k) visade några bra knep på hur\r\nman effektivt refaktorerar kod.\r\n\r\n * Börja inte jobba innan det finns specs på plats!\r\n * Extrahera till privat metod.\r\n * Skapa nya klasser, var inte blyg.\r\n * Använd arv när ingenting annan fungerar.\r\n * Förlita dig på abstraktioner.\r\n\r\nHan rekomenderade även var man kan börja sitt arbete.\r\n\r\n * “God Objects”\r\n * Filer med mycket [churn](https://rubygems.org/gems/churn)\r\n * Buggar, eftersom de antagligen beror på att man inte har full\r\n förståelse för vad koden gör.\r\n\r\n[Video](http://video2012.scotlandonrails.com/D1_GH_06-Ruby1280_b.mp4)\r\n\r\n### To Mock or Not to Mock\r\n\r\n> Reality is expensive.\r\n\r\n[Justin Searls](https://twitter.com/searls) berättade om olika typer av\r\n“[Test Doubles](http://en.wikipedia.org/wiki/Test_double)” och att man\r\nborde fråga sig själv hur realistiskt man behöver testa för att få det\r\nresultat man är ute efter.\r\n\r\nVad man testar olika test doubles:\r\n\r\n * Stub: Returvärden\r\n * Mock: Meddelanden\r\n * Spy: Interaktioner\r\n\r\nHan visade även sitt bibliotek [Gimme](https://github.com/searls/gimme).\r\n\r\n[Bloggpost](http://searls.testdouble.com/2011/06/03/whats-wrong-with-rubys-test-doubles/)\r\n\r\n### The Joy of Front-End, A Journey with Bob Ross\r\n\r\n> Clean code goes in clean files\r\n\r\n[Roy Tomeij](https://twitter.com/roy) höll mycket bra dragning om hur\r\nman kan strukturera sin HTML och CSS på ett modulärt sätt, en lösning\r\nsom hade vissa likheter med SMACSS som\r\n[Jonathan Snooks](https://twitter.com/snookca) pratade om på förra \r\n[Geek Meet Stockholm](http://robertnyman.com/geekmeet/).\r\n\r\n[Video](http://www.youtube.com/watch?v=TqPzxrCIJTs) och [Slides](http://roytomeij.com/slides/rockymountainruby2012/)\r\n\r\n### Lightning talks\r\n\r\n[Colin Thomas-Arnold](https://twitter.com/colinta) visade \r\n[RubyMotion](http://www.rubymotion.com/) samt biblioteken \r\n[BubbleWrap](https://github.com/rubymotion/bubblewrap), \r\n[SugarCube](https://github.com/rubymotion/sugarcube) och\r\n[Teacup](https://github.com/rubymotion/teacup).\r\n\r\n[Derrick Ko](https://twitter.com/derrickko) visade [mailcheck.js](https://github.com/Kicksend/mailcheck)\r\n\r\n## Fredag 21/9\r\n\r\n### Let’s talk concurrency\r\n\r\n[José Valim](https://twitter.com/josevalim) förklarade på ett enkelt\r\nsätt hur samtidighet (concurrency) fungerar. Han rekomenderade även sitt\r\nspråk [Elixir](http://elixir-lang.org/), Ruby-biblioteken \r\n[Celluloid](http://celluloid.io/)\r\noch [DCell](https://github.com/celluloid/dcell) samt boken\r\n[Seven languages in seven weeks](http://pragprog.com/book/btlang/seven-languages-in-seven-weeks).\r\n\r\n[Video](http://www.youtube.com/watch?v=ojU4O2CMeSc) och [Slides](https://speakerdeck.com/u/plataformatec/p/le)\r\n\r\n### Building Rich Client Apps\r\n\r\n> Pre-auth BOSH\r\n\r\n[Derrick Ko](https://twitter.com/derrickko) berättade om hur \r\n[Kicksend](http://kicksend.com/) använder sig av \r\n[ejabberd](http://www.ejabberd.im/), \r\n[RubyBOSH](https://github.com/skyfallsin/ruby_bosh) och \r\n[Strophe.js](http://strophe.im/strophejs/) för att öka prestandan på sin\r\ntjänst. (både riktig och upplevd)\r\n\r\n[Slides](https://speakerdeck.com/u/dk/p/building-rich-client-apps)\r\n\r\n### Expert Consulting\r\n\r\n> Own the role as the expert.\r\n\r\n[Paul Elliott](https://twitter.com/p_elliott) gav tips på vad man ska\r\ntänka på som konsult, några hans exempel var:\r\n\r\n * Lär dig att säga **Nej**. _(Eller, Ja)_\r\n * Tänk på hur du uttrycker dig.\r\n * Bråka inte framför kunder, diskutera eventuella problem innan mötet.\r\n * Prata bara om sådant som kunden har nytta av.\r\n\r\n### Eloquent Explanations\r\n\r\n> Experts know it so well. They forget that there is anything to know.\r\n\r\nHar du tänkt på hur stor del av din arbetsdag består av att förklara saker?\r\nDet har [Russ Olsen](https://twitter.com/russolsen) gjort och han delade\r\nmed sig några av sina tankar runt ämnet under konferensens sista\r\nföreläsning.\r\n\r\n * Ta ditt förklarande seriöst\r\n * Var agil\r\n * Förklara det viktigaste först\r\n * [DRY](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself), eller\r\n snarare “Repeat Yourself Enough”\r\n * Ta det inte så seriöst…\r\n\r\n[Slides](https://speakerdeck.com/u/russolsen/p/eloquent-explanations-rubynation-2012)\r\n\r\n## Lördag 22/9\r\n\r\nJag och [Paul](https://twitter.com/p_elliott) tänkte hitta något bra\r\ncafé att äta frukost på, men så visade det sig att \r\n[Matt](https://twitter.com/mattyoho) redan var på väg till \r\n[The Kitchen](http://thekitchencommunity.com/the-kitchen-boulder/)\r\nför att möta upp några fler som fortfarande var kvar i Boulder.\r\nVi var självklart inte sena med att haka på :)\r\n\r\nUnder frukosten bestämde vi oss för att det skulle vara kul att \r\nse mer av de klippiga bergen. [Brian](https://twitter.com/brianlong) \r\nvar snäll och ställde upp som både chaufför och guide.\r\n\r\n_(Boulder -> Nederland -> Peak 2 Peak -> Brainard Lake -> Ward -> Boulder)_\r\n\r\n\r\n\r\nResten av helgen gick åt att flyga hem till Stockholm :)\r\n\r\n/ [Peter](/peter)",
- "published_at": {
- "$date": 1348696800000
- },
- "last_updated_by": "peter",
- "year": 2012,
- "month": 9,
- "day": 27,
- "updated_at": {
- "$date": 1348780987000
- },
- "created_at": {
- "$date": 1348780987000
- }
- },
- {
- "_id": {
- "$oid": "5098fd48355c317582000002"
- },
- "content": "Den 30 november är det åter igen dags för Athega Code Base.\r\n\r\nÄven i år kommer vi vara på Söderarm (ön Torskär) i det allra ytterstra stråket av skärgården precis innan Ålandshav. På ön står den gamla fyren, känd från väderrapporter och vindobservationer.\r\n\r\n\r\n\r\nÖns [historia](http://www.soderarm.com/swedish/historia.shtml) är intressant och vi huserar i ett hus som byggts till i fem omgångar. Med den sista kom ett kontrolltorn åt Sjöfartsverket med makalös utsikt. Vi kommer hålla till i tornet som är en minst sagt inspirerande miljö.\r\n\r\n\r\n\r\nAlla får välja ett projekt innan vi åker och årets ämne är “Öppna data”. Det är inte tvingande att hålla sig till ämnet utan är mer ett underlag för inspiration och idéer. \r\n\r\nHär följer några länkar till källor och information kring kring “Öppna data” \r\n\r\n - \r\n - \r\n - \r\n - \r\n - \r\n\r\nVi kommer fram till Söderarm på **fredagen** ungefär kl **09:30** och lämnar **lördag** kl **15:30**. \r\nDet ger en effektiv utvecklingstid på ungefär **8** timmar.",
- "created_at": {
- "$date": 1352203592000
- },
- "day": 5,
- "last_updated_by": "tobbe",
- "month": 11,
- "published_at": {
- "$date": 1352070000000
- },
- "slug": "2012/11/05/dags-for-acb-2012",
- "title": "Snart dags för Athega Code Base 2012",
- "updated_at": {
- "$date": 1352208468000
- },
- "year": 2012
- },
- {
- "_id": {
- "$oid": "509d17e0355c317e1b000002"
- },
- "slug": "2012/11/09/Code_Base_2012_Inspiration",
- "title": "Nytta med nöje",
- "content": "Varje år åker vi iväg till en inspirerande plats och kodar tillsammans. Nu är det dags igen. \r\n\r\nCode Base handlar om lärande och inspiration. Vi inspireras av det vi arbetar med och utifrån det vill vi fördela våra individuella specialistkunskaper och erfarenheter mellan oss i ett roligt forum. \r\n\r\n**Öppna data**\r\nVi har satt ett tema ”Öppna data”. Utifrån detta vår vi välja helt fritt vad vi ska lära oss mer om. Det viktiga är att vi lär oss tillsammans.\r\n\r\n**Nytta med nöje**\r\nNi som partners och kunder får gärna komma med inspiration och förslag om ni har något ni vill att vi ska titta på. Det kanske är en allmän frågeställning eller ett specifikt problem ni vill få hjälp att lösa. Vi lovar göra vårt bästa och samtidigt lära oss så mycket som möjligt om ämnet om vi väljer ert förslag.\r\n\r\n// Mats\r\n",
- "published_at": {
- "$date": 1352415600000
- },
- "last_updated_by": "mats",
- "year": 2012,
- "month": 11,
- "day": 9,
- "updated_at": {
- "$date": 1352472544000
- },
- "created_at": {
- "$date": 1352472544000
- }
- },
- {
- "_id": {
- "$oid": "509fb123355c312eee000002"
- },
- "content": "\r\n\r\nPrecis som tidigare år åkte vi\r\n([Alex](/alex), [Chrille](/chrille), [Johan](/johan) och [Peter](/peter)) \r\nner till Malmö för att gå på utvecklarkonferensen [Øredev](http://oredev.org/2012/).\r\n\r\n## Videos från presentationerna\r\n\r\nØredev har 7 föreläsningsspår, vilket såklart medför att man inte kan se\r\nalla föreläsningar under konferensen. Som tur är så spelades allt in, så\r\natt man i efterhand kan kolla på det man missade.\r\n\r\nArrangörerna listar dem på \r\n\r\n### Videos från några av föreläsningarna:\r\n\r\n * [Vim - precision editing at the speed of thought](http://vimeo.com/53144573)\r\n * [Growbotron.app](http://vimeo.com/53154353)\r\n * [The making of Crazyflie](http://vimeo.com/53073656)\r\n * [Travis CI - I Hear You Like Pull Requests](http://vimeo.com/53073655)\r\n * [Therapeutic Refactoring](http://vimeo.com/53154356)\r\n * [Less - The Path to Better Design](http://vimeo.com/53154357)\r\n * [Go: a simple programming environment](http://vimeo.com/53221558)\r\n * [Go: code that grows with grace](http://vimeo.com/53221560)\r\n * [Elixir - A modern approach to programming for the Erlang VM](http://vimeo.com/53221562)\r\n * [HTTP Caching 101](http://vimeo.com/53211413)\r\n\r\n## Slutsatser\r\n\r\n[](http://golang.org/project/)\r\n\r\nJag började kika på [Go](http://golang.org/) för ett litet tag sedan \r\noch de båda Go-föreläsningarna gjorde mig ännu mer taggad \r\natt använda språket i större utsträckning i framtiden.\r\n\r\n[Erlang](http://www.erlang.org/) “klickade” aldrig för mig,\r\nmen [Elixir](http://elixir-lang.org/) verkar bli riktigt trevligt.\r\n\r\nSandi Metz vet verkligen vad hon pratar om, och jag ska nu läsa klart hennes bok\r\n[Practical Object-Oriented Design in Ruby](http://www.poodr.info/).\r\n\r\n/ [Peter](/peter)",
- "created_at": {
- "$date": 1352642851000
- },
- "day": 11,
- "image_url": "http://assets.athega.se/blogg/2012/11/oredev-grinding-the-crack.jpg",
- "last_updated_by": "mats",
- "month": 11,
- "published_at": {
- "$date": 1352577600000
- },
- "slug": "2012/11/11/oredev-2012",
- "summary": "Precis som tidigare år åkte vi som ville ner till Øredev 2012.",
- "tags_array": [],
- "title": "Øredev 2012",
- "updated_at": {
- "$date": 1383143903000
- },
- "year": 2012
- },
- {
- "_id": {
- "$oid": "50ba01c7355c312d5f00000a"
- },
- "content": "\r\n\r\nÅrets Athega Code Base 2012, [#acb2012](https://twitter.com/search?q=%23acb2012) bjöd på en hård start i ca 20 m/s och en ganska skumpig båtfärd ut till Söderarm. Vinden mojnade så småningom och i takt med att utkikstornet vi befann oss i slutade gunga tog projekten form.\r\n\r\n## Innovativa lösningar för effektivare resor och transporter\r\n\r\n[Mats](/mats) och [Torbjörn](/tobbe) har jobbat med ett tävlingsbidrag till en tävling utlyst av ITS Innovation Stockholm Kista. Vi kan inte berätta om vår lösning innan vi lämnat in och vunnit. Men stor rapportering kommer ske efter vinsten.\r\n\r\n[Här](http://www.mynewsdesk.com/se/pressroom/stockholms_stad/pressrelease/view/banbrytande-innovationstaevling-foer-framtidens-trafikloesningar-816653) kan ni läsa mer om tävlingen.\r\n\r\n## En responsiv live-graphite-dashboard\r\n\r\nJag ville utforska möjligheterna att skriva en egen dashboard mot en graphitedatabas. För ett tag sedan installerade jag en rad mätare hemma som håller reda på temperatur, luftfuktighet, elförbrukning, mm. Dessa rapporterar löpande in till en graphiteserver som jag har i Amazons fantastiska moln, [EC2](http://aws.amazon.com/ec2/). [Graphite](http://graphite.wikidot.com/) har dessutom möjligheten att exponera [data som JSON](http://graphite.readthedocs.org/en/1.0/url-api.html#format) utan att man ens behöver anstränga sig. Upplägget är alltså en dashboard för huset.\r\n\r\n\r\n\r\nDet responsiva löser jag med [Skeleton](http://www.getskeleton.com/), som på ett lättviktigt och rent sätt hjälper mig med strukturen. Graferna ritar jag inte med graphite eftersom jag vill ha litet termometrar och mätare, samt kunna animera dem. Valet denna gång föll på [RGraph](http://www.rgraph.net/) som mer än väl räcker till för mina behov. Det hela knyts ihop med [jQuery](http://jquery.com/).\r\n\r\nEtt fungerande exempel kan finnas [här](http://hem.lizell.se/content/dash/).\r\n\r\n/ [Christian](/chrille)\r\n\r\n## Enkelt API för populära bilder på 500px\r\n\r\nJag hittade nyligen tjänsten [ScraperWiki](https://scraperwiki.com/)\r\nsom låter dig bygga enkla scrapers i Ruby, Python och PHP. \r\n\r\nMitt lilla [hack](https://scraperwiki.com/scrapers/500px/) \r\nbestår i att skrapa några sidor med populära \r\nbilder från [500px](http://500px.com/), informationen sparar jag \r\nner i ScraperWikis datastore vilket gör att jag kan använda mig \r\nav deras generella [data API](https://scraperwiki.com/docs/api#sqlite)\r\n\r\n\r\n\r\nPresentationen av bilderna lade jag på [JS Bin](http://jsbin.com/uribis/3).\r\n\r\nJag använder mig av “[Seamless Responsive Photo Grid](http://css-tricks.com/seamless-responsive-photo-grid/)” för att fylla hela browserfönstret med bilder.\r\n\r\n/ [Peter](/peter)\r\n\r\n## Bo i Stockholm (Alex)\r\n\r\nAlla människor har adresser som deras liv kretsar kring, t.ex. arbete eller skola. Dessa adresser begränsar vart man kan kan bo med tanke på restid. Målet var (och är) att skapa en karta med områden där användaren kan bo är markerade. Användaren skriver in adresser som är viktiga samt hur lång tid det får ta att ta sig dit. Tjänsten använder sedan api:et SLs Reseplanerare för att se vilka områden i Stockholm som fungerar för användaren.\r\n\r\nTeknikerna som användes var JavaScript, [node.js](http://nodejs.org/), [OpenStreetMap](http://www.openstreetmap.org/), SLs Reseplanerare.\r\n\r\n/ [Alex](/alex)\r\n\r\n\r\n## Ansiktsigenkänning med WebRTC, Websockets och OpenCV (Micke)\r\n\r\nJag har labbat med ansiktsigenkänning i webbläsaren. Jag kommer åt webkameran genom [WebRTC](http://www.webrtc.org/) vilket innebär att jag inte behöver använda mig av några webbläsarplugin.\r\n\r\nVideoströmmen från kameran renderar jag sedan i en canvastagg. Pixlarna från canvasen skickas över websockets till en python server som snurrar på [Tornado](http://www.tornadoweb.org/). På serversidan processas bilderna av [OpenCV](http://opencv.org/).\r\n\r\nAnsiktsigenkänning med OpenCV bygger på att en statistisk modell tränas med ett antal bilder med kända ansikten. Sedan skickas bilden som ska processas in till modellen och förhoppningsvis svarar modellen tillbaka med rätt namn på ansiktet. För att träna en grundmodell har jag använt mig av AT&T:s ansiktsdatabas.\r\n\r\nBilderna från webbkameran skickas in till min modell för igenkänning. Om resultat inte är tillräckligt bra tränas modellen om med de nya bildera för att ge ett bättre resultat i framtiden.\r\n\r\n/ [Micke](/mikael)",
- "created_at": {
- "$date": 1354367431000
- },
- "day": 1,
- "image_url": "http://old.athega.se/system/uploads/2013/10/sodera.png",
- "last_updated_by": "mats",
- "month": 12,
- "published_at": {
- "$date": 1354305600000
- },
- "slug": "2012/12/01/resultatet_fran_athega_code_base_2012",
- "summary": "Höstkonferensen kallas Athega Codebase. Vi brukar bege oss ut i ytterskärgården till Söderarm där vi huserar, leker med senaste tekniken och har en väldigt trevlig helg.",
- "tags_array": [],
- "title": "Athega Code Base 2012",
- "updated_at": {
- "$date": 1383143887000
- },
- "year": 2012
- },
- {
- "_id": {
- "$oid": "510bc640355c316dc5000002"
- },
- "content": "## Proof of work functions and making value\r\n\r\nIn some situations it is good to show that you have been diligent and working hard; Athega Codebase 2012 is no exception. You know the other guys have such great ideas and the scenery around us at Söderarm is amazing, its hard to do any real work at all.\r\n\r\nSo I figured lets show how to create value on our machines [whilst we are dreaming and looking out the windows] by investigating the ideas behind Bitcoin and the like. \r\n\r\nWell, as you shall see, things did not go quite to plan!\r\n\r\nBitcoin and Bitgold are new experimental digital currencies, see bitcoin.com, and proof of work is essential to their inner workings.\r\n\r\nHere, value is based on work done in the computer solving very difficult problems. \r\n\r\nSimply, solving difficult problems requires a lot of work. So a solved difficult problem has value, in exactly the same way mined silver has intrinsic value. And silver can be used to make coins! So by analogy one can make coins of the value in solving difficult problems; well in theory at least. \r\nBut Bitcoin is just one current example of a working digital currency.\r\n\r\nCool, and worth looking into, could this be true, and could I build a model of this process? And what is a proof of work function?\r\n\r\nClearly, very difficult problems are of no use if you have to solve the difficult problem every time you want to use it as a currency; this would take forever; it would be like mining and minting a silver coin every time you wanted to use one!\r\n\r\nNo, what is required is that you can check that the coin contains silver! In other words, all that is required is that you are sure that the very difficult problem is solved, and this is where proof of work functions are needed! Instead of solving the whole problem, all that is need is to show to some chosen level of difficulty that the valuable difficult problem has actually been solved.\r\n\r\nIn short, solving ‘valuable very difficult problems’ (vvdp) is like mining silver in reality.\r\n Using coins (made of silver or vvdp) requires knowing the coins contain value; or for digital coins a proof of work function.\r\n\r\nI endeavored to model this process by solving my own difficult problem and create value to sell. This would require mining using parallel computation techniques, and tried to calculate 100,000 decimal places of Pi using continued fractions and then sell it to the other lads in the room.\r\nWell to cut a long story short I managed to produce pages of digits. And nobody noticed the little error that crept in, so I wont bother to mention it.\r\nAnd still nobody showed interest in buying my currency.\r\nWell, that little error (I haven’t mentioned) would have reduced the value of my new currency. And since I hadn’t written the proof of work function yet, I don’t know why they didn’t trust my program, and buy it.\r\n\r\nSurely they couldn’t see the little error in all those thousands of digits.\r\n\r\nWell, I couldn’t even give it away! and after all that effort too.\r\n\r\nTrying to turn this small setback to an advantage; you could say that produced the first fake digital value. Well nobody believed that either. So instead of sulking, I turned my hand to drawing a picture of the amazing scenery around us.\r\n\r\nI told you I was looking out the window.\r\n\r\nAnd here is my proof of work\r\n\r\n \r\n\r\nAnd this time I did manage to produce something with enough value to give away.\r\n\r\nFor free, its true, but its a start :)\r\n\r\nHurray, success at last. \r\n\r\nI had managed to understand how producing digital value works, and maybe learnt something of value along the way!\r\n\r\nFor more information about bitcoin-mining see [www.bitcoin.com](http://www.bitcoin.com), and know you understand the principles, create value on your machine, and sell what you produce! For real money.\r\n\r\n[Mark](mark)",
- "created_at": {
- "$date": 1359726144000
- },
- "day": 2,
- "last_updated_by": "tobbe",
- "month": 12,
- "published_at": {
- "$date": 1354402800000
- },
- "slug": "2012/12/02/mer_resultat_fran_athega_code_base_2012",
- "title": "Mer resultat från Athega Code Base 2012 [en]",
- "updated_at": {
- "$date": 1359728005000
- },
- "year": 2012
- },
- {
- "_id": {
- "$oid": "510bcdc6355c316dc5000005"
- },
- "content": "För några dagar sedan lunchade jag med en kollega på Aftonbladet IT, [@magnusljadas](https://twitter.com/magnusljadas), som berättade hur han såg på Kanban vs Scrum. Jag blev inspirerad och tog upp det på Athegas [Campfire](http://campfirenow.com/), där vi hänger och diskuterar allt mellan kodsnuttar och pistvakter.\r\n\r\nNedan återges en ganska oredigerad variant av diskussionen.\r\n\r\n[Christian](/chrille): Fick en så himla bra jämförelse idag på lunchen av en Aftonbladetkollega. Han jämförde ett projekt med en trafikkorsning.\r\n\r\n[Mats](/mats): ok\r\n\r\n[Christian](/chrille): Scrum lägger till trafikljus och bringar ordning, men det är mycket stopp, start och börja om. Ett ganska hackigt flöde. Kanban känns mer som en rondell, där det mesta rullar på löpande. Man kan till och med dra det vidare och se filerna i rondellen som WIP-limits. Och en rondell med massor av filer vet vi ju hur bra den fungerar. Tyckte det var så bra att jag tänkte försöka hinna skriva en kort bloggpost om det (anm. vilket nu skett) .\r\n\r\n[Mats](/mats): Jo som en metafor på en hög nivå är det en bra jämförelse. Eftersom Kanban bygger mycket på queueing theory så är jämförelser med trafik väldigt tacksamma.\r\n\r\n[Christian](/chrille): Men även stoppljusen i Scrum känns bra\r\n\r\n[Torbjörn](/tobbe): Men om det är rödljus för fotgängare i rondellens utfarter då? :)\r\n\r\n[Mats](/mats): I kanban eftersträvar vi jämt flöde och samma sak i trafiken. Ju tätare bilarna åker (ju mer WIP vi har) desto långsammare går färden.\r\n\r\n[Christian](/chrille): Tobbe!\r\n\r\n[Mats](/mats): Det är därför man på motorvägar ibland får upp (50) i skyltar ovanför filerna. Känns väldigt långsamt då trafiken rullar i 80 men för att flödet ska bli jämt och inte klogga igen lägre fram är det i allas intresse att man kör långsammare tidigare. Balansera inflöde utifrån kapaciteten.\r\n\r\n[Christian](/chrille): Vilket ingen gör :)\r\n\r\n[Mats](/mats): Scrum t.ex. batchar i sprintar. Vilket gör att flödet hackar. Först väljer man ut vilka som får åka baserat på hur det gick senast. Man kanske tror att vägarna med rödljus osv kan hantera 100 bilar från A till B på 10 minutar. Sen försöker man låta dom åka samtidigt och hoppas att alla kommer fram i tid. Om det blir försenat justerar man sin gissning till nästa batch och säger vi provar med 90 denna gång verkar stämma. Och så justerar man sig hela tiden.\r\n\t\r\nKanban är tvärt om. Där släpper vi på en bil i taget baserat på när någon kommer fram så vi hela tiden har bilar som åker på vägarna. Då gör det inte så mycket om det blir en krock eller ett rödljus som krånglar. I genomsnitt så kommer bilarna fram och variationen (problemen på vägen) påverkar bara en eller ett par av bilarna, hela batchen med 100 bilar blir inte lidande.\r\n\r\n[Christian](/chrille): Vilket kan fungera fint när man justerat in sig, men när bilarna är svåra att förutsäga och man har många påfarter längs vägen känns Kanban bättre. Det senare gäller för vårt projekt för tillfället och jag är glad att vi nu provar Kanban.\r\n\r\n[Mats](/mats): Man kan blunda för murphys lag och bygga en mental bild av att \"ju bättre vi blir på att tidsuppskatta desto bättre träffar vi på våra sprintar\". Det är i min mening fel sätt att se på värde. Värdet är inte att bli bra på att gissa rätt. Värdet är att leverera saker i produktion som genererar pengar för företaget. Murphys lag finns alltid och är vi inte beredda och öppna för detta utan tror att vi med träning kan planera bättre och bättre ju med vi tidsuppskattar och planerar lägger man tid på fel sak.\r\n\r\n[Christian](/chrille): Sant, men om man tvingas till tidsuppskattningar då?\r\n\r\n[Mats](/mats): Som alltid i Kanban; samla data innan du argumenterar med beställare att tidsuppskattningar är onödiga. Bra data att ha innan diskussion startas är hur lång tid egentligen det tog jämfört med tidsuppskattningarna. Är ni bra på att uppskatta? (Räkna då in alla konstigheter som händer och inte något drömscenario där något ska ta 2 timmar och blev gjort på två timmar enligt utvecklaren men i själva verket tog 4 dagar. Ok säger du men touch time var 2 timmar, han jobbade faktiskt bara två timmar på den saker. Well, stämmer det verkligen om det tog 4 dagar?\r\n\t\r\nNästa sak att mäta är \"Vad kostar tidsuppskattningarna?\" Cost of opportunity. Hur mycket arbete, hur många timmar utveckling kunde vi gjort om vi slapp tidsuppskatta.\r\n\r\n[Christian](/chrille): Men det kräver ju att man fått köra Kanban ett tag. Det är verkligen en bra poäng. Overheaden är rätt stor där. Dock kommer det ju bra grejer ur själva diskussionen, men den kan man säkert lösa på andra sätt.\r\n\r\n[Mats](/mats): Man skulle kunna se det som att “köra Kanban” är en attityd. Det kan man mentalt göra även om man kör vattenfall eller Scrum. En mental bild av att med riktigt data vara öppna för förändringar och på så sätt förbättra relevanta delar av sättet att arbete. Sätta upp relevanta mätvärden, fortsätta med sitt arbetssätt som tidigare mät relevanta värden. Tidsåtgång till tidsuppskattningar, ledtider, hur många missade sprintar, hur mycket reaktiv arbete kommer in och stör sprintarna, Hur bra är vi i verkligheten på att tidsuppskatta? Hur mycket arbete kommer tillbaka efter att vi tror vi är klara och levererat t.ex. buggar? Får man en bild av nuläget kan nästa steg vara att prova att tweeka lite. Annars är det svårt att säga att “Scrum passar inte oss”. Scrum är ett sätt att arbeta som säkerligen är bättre än att inte jobbat utifrån någon metodik alls. Men man kanske ska tweeka lite på sprintarna och testa om man kan levererar mer då? Utgå från Kanbans principer och practicies och var öppna för förändring. Våga experimentera. Ibland blir det bättre. Vi levererar mer, mer förutsägbart, bättre kvalitet. Men ibland kan det blir sämre. Då lär vi oss. \r\n\r\n[Christian](/chrille): Situationen i vårt projekt var att vi jobbade i en tvåveckorssprint, lösa estimat med magen S,M,L, avsatte timeboxad tid till löpande förvaltning och hamnar ofta sedan i en verklighet där mycket händer och stories kastas om. Känner att det stora planeringsmötet är litet i onödan. Vi har dessutom en backlogmassage där vi diskuterar igenom stories som ligger högt i prio i backloggen. Det vi i princip gör nu är att vi skippar estimaten, annat än för att splitta för stora puckar, samt låter flödet på tavlan bestämma vad vi jobbar med. Vi stämmer fortfarande av varannan vecka och sätter mål för kommande tvåveckorsperiod.\r\n\r\n[Mats](/mats): Att köra Kanban är en vilja att förbättra sig utan att låsa sig till befintliga regler. Verktygen är visualisering mm på olika sätt men grunden att förbättra sig i små steg, baserat på data kan man göra i alla miljöer. Och för att samla data kanske man ska börja visualisera vad som händer under sprintarna? Hur rör sig arbetet? Hur mycket oplanerat arbete trycks in? \r\n\r\n[Christian](/chrille): Ja och en bra start som räcker långt är att markera start- och slutdatum på lapparna ;)\r\n\r\n[Mats](/mats): Start och slut är jättebra. Markera eventuella blockeringar. Om saker fastnar, man börjar på annat, varför gjorde man det? Om kunden kommer in och detaljprioriterar under sprinten är ju sprintplaneringen rätt onödigt. \r\n\r\nDet viktiga med WIP-limits på tavlan och begränsningar är att det inte bara ska vara ett verktyg för teamet att \"få göra klart något\" utan det ska även vara utformat så att beställarna ser att dom får ett verktyg som bygger förtroende. Beställaren ska egentligen vara den som får mest ut av limits i form av fortroende att saker blir klara när dom kommer in på tavlan. Det är ett jobb som måste pågå en längre tid och föras i diskussion med beställarna.\r\n\t\r\nPlanering måste alltid ske och ofta i samråd med utvecklare då features kan variera så i kostnad/tid att göra så det är inget fel att planera. Som sagt finns inget i Kanban som säger att planering är fel eller dåligt. Det är snarare så det fungerar.",
- "created_at": {
- "$date": 1359728070000
- },
- "day": 1,
- "last_updated_by": "chrille",
- "month": 2,
- "published_at": {
- "$date": 1359673200000
- },
- "slug": "2013/02/01/en_pratstund_om_kanban",
- "title": "En pratstund om Kanban",
- "updated_at": {
- "$date": 1378366796000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "51223dcb355c311c81000005"
- },
- "content": "Nya UR Play släpptes 30 januari och fick snabbt beröm. Målet är att bli en av världens bästa play-siter. Vi ringde upp två som var med på resan.
\r\n\r\n \r\n\r\n> “Lätt den snyggaste playsiten”\r\n\r\n> “Sjukt vacker även på insidan”\r\n\r\n### Daniel Elliott, du ansvarade för utvecklingen, hur känns det?\r\n\r\nAlla på UR är klart stolta över det vi åstadkommit och blir taggade att fortsätta utveckla UR Play.\r\n\r\n### Ni siktar på att bli bästa play-siten i världen, hur ska det gå till?\r\nStrategin är att noggrant följa hur våra tittare och lyssnare använder UR Play, speciellt i samspel med sociala medier. Förstår vi detta fullt ut så kan vi också kontinuerligt skapa en ännu bättre on-demand-tjänst.\r\n\r\n### Hur mycket resurser behövs för att nå den här nivån?\r\n\r\nVi hade ett team på fyra personer med uppgift att ta fram syfte, mål, interaktion, design och prototyp. Sedan hade vi tre personer som anpassade och tog fram ny back-end och tjänster. Och slutligen hade vi ett team på fyra personer som implementerade och testade nya UR Play i vårt CMS. Totalt har det tagit 10 månader från start till mål och drygt 12 manmånader. Att det tagit lång tid beror på att projektet fått vänta på en del infrastrukturella förändringar som vi arbetat med under 2012.\r\n\r\n\r\n
\r\n
Johan Beronius ansvarade för webb- och systemutvecklingen på nya UR Play. \r\n
\r\n\r\n### Johan Beronius, du jobbar hos oss på Athega och ansvarade för webb- och systemutvecklingen. På vilket sätt är den responsiva designen annorlunda?\r\n\r\nUR Play har redan från starten byggts för alla typer av webbläsare. Alla funktioner och all information finns tillgänglig även för mindre webbläsare som mobiler och surfplattor. Det gör att målgruppen för webbplatsen blir bredare och man slipper speciella appar för olika telefoner.\r\n\r\n### UR har ju mycket material att publicera, hur påverkade det ditt och gruppens arbete?\r\n\r\nDet är riktigt skoj att bygga en ny webbplats som från dag ett är fylld med så mycket bra innehåll. Under utvecklingen hjälpte det oss att snabbare ge sidorna en mer färdig känsla.\r\n\r\n### Vilken play-site tycker du är vassast i världen nu?\r\n\r\nPlay- och on demand-tjänster för video är hett och det dyker hela tiden upp många nya sätt att titta på program. En styrka hos UR Play är som sagt den stora mängden program samt att de finns tillgängliga för alla under en längre tid och dessutom är reklamfria. Kan inte säga vilken site som är vassast, men UR ligger långt framme.",
- "created_at": {
- "$date": 1361198539000
- },
- "day": 17,
- "image_url": "http://old.athega.se/system/uploads/2013/10/johan-beronius_small.jpg",
- "last_updated_by": "mats",
- "month": 2,
- "published_at": {
- "$date": 1361055600000
- },
- "slug": "2013/02/17/nya_ur_play",
- "summary": "Målet är att bli en av världens bästa play-siter.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Nya UR Play rosas på Twitter.",
- "updated_at": {
- "$date": 1387543792000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "5130c4d6355c317f6500001d"
- },
- "content": "Spelet fick högt betyg.\r\n------------\r\n\r\nBerit Scharf arbetar på SEB IT Solution Delivery med agila arbetssätt och processutveckling. Vi ringde upp och frågade vad teamet tyckte om spelet GetKanban . \r\n\r\n\r\n
\r\n
Det team som prioriterar och hanterar flödet av ärenden bäst med högst poäng vinner spelet GetKanban . \r\n
\r\n\r\nKanban är ett enkelt sätt att visualisera sitt arbetsflöde, hitta saker som kan förbättras och arbeta bort hinder. SEB letade i höstas efter ett enkelt och roligt sätt att prova metoden praktiskt.\r\n\r\nBerit Scharf träffades därför tillsammans med sina medarbetare hos oss på Athega en eftermiddag.\r\n\r\nMålet var att ta reda på två saker. Kan spelet ge en djupare förståelse för Kanban som arbetssätt, som komplement till en mer teoretisk Kanban-utbildning? Kan spelet användas för att inspirera team till att kontinuerligt förbättra sin egen arbetssituation?\r\n\r\n\r\n
\r\n
Berit jobbar på avdelningen Project Competence Centre i Rissne. \r\n
\r\n\r\nInnan spelandet satte igång fick gruppen en genomgång av Kanban-metoden och områden som Theory Of Constraints och Queueing Theory. Genomgången hölls av Mats Ygfors hos oss på Athega. Mats agerade senare spelledare och svarade på löpande frågor från deltagarna.\r\n\r\nSpelet GetKanban kan med fördel användas så att två lag med 4-6 personer spelar mot varandra. Målet för lagen är att leverera högsta möjliga värde under ett antal fiktiva arbetsdagar.\r\n\r\nHur gick det då? Spelet fick klart godkänt. Gruppen tyckte spelet var mycket spännande, utmanande och kul. Det gav en bra grund för att förstå bakomliggande principer och mekanik i ett Kanban-system. Den praktiska träningen gav en snabbare och djupare förståelse än bara teori. Spelets simulering av Kanban inspirerar och ger insikter som teamet kan ta med hem och applicera på sin arbetssituation.\r\n\r\nSEB har som mål att systemutveckling och arbetssätt ska bli mer flexibla och passa bankens miljö. Många team använder agila arbetssätt som t ex scrum och kanban beroende på vad som passar bäst för deras team.\r\n\r\nMed Kanban-metoden kan SEB bygga lärande, visualisera arbetsflödet och arbeta med att ta bort hinder. Ett fokus på
att göra klart istället för att påbörja nytt arbete, tillsammans med en begränsning av mängden pågående arbete, ökar möjligheten att leverera i jämn takt – även för team som idag kör Scrum med timeboxade releaser.\r\n\r\nKanban-metoden passar bankens policy att i små steg kontinuerligt förändra och förbättra arbetssätten. Mycket talar därför för att fler team kommer att börja använda Kanban-metoden.\r\n\r\nAthega är ett av få svenska bolag som tillsammans med [Lean-Kanban University](http://leankanbanuniversity.com/) format ackrediteringsprogrammet som går under namnet Lean-Kanban University Accredited Kanban Training Program.\r\n\r\nVi på Athega genomför kurser i Kanban-metoden regelbundet. Så ta gärna kontakt med [Mats](/mats) för att boka en spelstund.",
- "created_at": {
- "$date": 1362150614000
- },
- "day": 8,
- "image_url": "http://old.athega.se/system/uploads/2013/10/berit-scharfbw.png",
- "last_updated_by": "mats",
- "month": 2,
- "published_at": {
- "$date": 1360267200000
- },
- "slug": "2013/02/08/seb_testade_upplevelsebaserad_inlarning_av_kanbanmetoden",
- "summary": "Vi ringde upp och frågade vad teamet tyckte om spelet getKanban",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "SEB testade upplevelsebaserad inlärning av Kanban-metoden hos oss.",
- "updated_at": {
- "$date": 1381834900000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "51432e16355c313e86000002"
- },
- "content": "Nu får SVT och TV4 konkurrens. Aftonbladets nya live-studio är igång på minuten dygnet runt.\r\n------------\r\n\r\n \r\n\r\n**Den nya studion byggdes upp bara några steg från centrala nyhetsdesken. Vi träffade Vasilios Hatciliamis och ställde några frågor.**\r\n\r\n### Vasilios, du ledde uppbyggnaden av nya studion, hur lång tid tog det?\r\n– Totalt tog det tre veckor att få all teknik på plats. Det här är vår andra studio så vi hade redan en hel del infrastruktur exempelvis för att ta in live video feed från olika källor.\r\n\r\n### Varför byggde ni en ny studio?\r\n\r\n### Hur mycket resurser behövs för att nå den här nivån?\r\n– Vi vill kunna sända live med kort varsel i en studio som är byggd för livesändningar till skillnad mot vår gamla som var byggd för produktioner. Nya studion ligger på samma våningsplan som redaktionen. Nyhetsdesken kan ta beslut ena sekunden och nästa är vi igång. Tekniken är anpassad för att sända med minimal bemanning. Det räcker med en reporter framför kameran i studion och en tekniker i kontrollrummet. Teknikern fjärrstyr robotkamerorna, bildproducerar och styr grafiken. Det är också från kontrollrummet vi väljer in de olika livefeederna och håller kontakten med våra liveteam på fältet. Sen visar vi live-bilder i studion antingen med egen reporter på fältet eller genom att länka in andra sändningar och fylla på med expertkommentarer i studion.\r\n\r\n\r\n
\r\n
Vasilios Hatciliamis ledde uppbyggnaden av all teknik i den nya studion när Aftonbladet nu storsatsar på live-bevakning av nyhetshändelser. \r\n
\r\n\r\n### Hur skiljer ni er från SVT?\r\n– Vi kommer aldrig tablålägga några nyhetssändningar utan sänder när nyheterna är färska. Vi vill ha live-känslan och har ingen ambition att det ska kännas planerat. Vi är bra på att snabbt fånga känslor kring stora händelser och det ska vi fortsätta med. Så visst finns det fördelar mot de traditionella broadcast-kanalernas nyhetsrapportering.\r\n\r\n### Men blir det inga omställningar alls?\r\n– Våra reportrar kommer behöva lära sig mer teknik. Kraven är större på en videoreporter än på en skrivande reporter. Man måste kunna ställa in kameran rätt, hantera livesändningsutrustningen och videoredigera. När man åker iväg till en plats man ska sända ifrån har man ingen aning om de lokala förutsättningarna för att kunna feeda hem sin rapport. Finns det bra 3G/4G täckning, går det att komma ut på internet, finns det något wifi? Men allt är inte akututryckningar. För stora händelser vi känner till i förväg så har vi tid att planera tekniken och då kanske vi till och med hyr satellitbussar.\r\n\r\n### Drack ni skumpa precis som Karin Magnusson och Jan Helin på premiärsändningen 18 februari?\r\n– Ja, vi fick en chans att fira vi också.",
- "created_at": {
- "$date": 1363357206000
- },
- "day": 15,
- "last_updated_by": "chrille",
- "month": 3,
- "published_at": {
- "$date": 1363302000000
- },
- "slug": "2013/03/15/aftonbladets_nya_livestudio",
- "title": "Aftonbladets nya live-studio",
- "updated_at": {
- "$date": 1363357346000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "5146e405355c3106e1000002"
- },
- "content": "\r\n\r\nUnder tisdagen och onsdagen förra veckan anordnades ”Stop starting, Start finishing” konferensen på Hilton Hotell i Stockholm. Ca 150 deltagare från flera branscher och områden samlades. Programmet fokuserade på Lean Kanban och beskrevs som följer. \r\n\r\n_”Hur kan din produkt, verksamhet eller IT-organisation få saker gjorda och avslutade? Hur kan din organisation hantera risker och nå marknaden i rätt tid? Hur kan en produkt-, tjänst- eller projektorganisation göra mindre och tjäna mer?”\r\n_\r\nSpridningen på framförandena var stor och täckte in en mängd områden. Jag kommer beskriva några nedan.\r\n\r\nTisdagen startades av
David J. Anderson (LKU och DJAA) med _”Aligning Creative Work with Business Risks”_. David visade hur uppströms visualisering och begränsning kan förbättra vårt sätt att göra rätt saker i rätt tid och minska vår affärsrisk. Att traditionell Agil planering kan anses vara waste och arbete läggs ner på gissningar vilket även kan öka vår risk. David visade på de olika sätt Kanban hanterar risk och vilka möjligheter vi har med Kanban att hantera vår risk utifrån vår domän och specifika risk. En lista på enkla regler för att förbättra vår riskhantering presenterades. Listan innehöll bland annat saker som att använda WiP limits på risk-kategorier.\r\n\r\nDavid pratade vidare om att vi ska skjuta på åtagande så sent det bara går. Vi måste hantera osäkerhet och variation. Ordet backlog indikerar att det är något vi på något sätt _åtagit_ oss att förr eller senare leverera. Föreslog ordet ”Ideer” istället.\r\n\r\nEfter David var det Arne Roock som pratade om alignment. _”Alignment – the forgotten child”_. \r\nArne pratade om hur vi i vår strävan bort från ”command and control” till självorganiserande team där organisationen ibland glömmer bort alignment. Arne pratade om hur viktigt det är med alignment och konsekvenserna om inte alignment finns på plats. Även olika sätt att nå mer alignment. Jag tycker det var mycket intressant och kopplade samman lite vad Don Reinertsen pratade om på LSSC12.\r\n\r\nTisdag kväll var det Open Space night och Athega var med som sponsor. Det var en trevlig tillställning. ",
- "created_at": {
- "$date": 1363600389000
- },
- "day": 18,
- "last_updated_by": "mats",
- "month": 3,
- "published_at": {
- "$date": 1363561200000
- },
- "slug": "2013/03/18/stop_starting_start_finishing_athega",
- "title": "Stop starting start finishing",
- "updated_at": {
- "$date": 1363600441000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "514a97a2355c311d3a000002"
- },
- "content": "Med en ny site för bara video blir upplevelsen bättre för användarna. Dessutom ökar annonsintäkterna. Peter Björklund kan berätta mer.\r\n------------\r\n### Peter, du jobbar som konsult hos oss och har varit med under projektet, varför gör Aftonbladet en egen TV-site?\r\n– På vanliga aftonbladet.se ligger alla filmer och klipp huller om buller med artiklar, reportage, foton och reklam. Det är tuff konkurrens om uppmärksamheten. Och eftersom Aftonbladet gör egna TV-program vill man gärna att publiken ska hitta dem. Den enda vettiga lösningen är att skapa en egen site byggd ungefär som en play-site med den skillnaden att den också pushar för de egenproducerade programmen. Layouten är ren, snygg och lättnavigerad. Och allt är enkelt sökbart.\r\n\r\n
\r\n
Peter Björklund på Athega var lead developer för aftonbladettv.se. Siten lanseras idag 20 mars och togs fram på tio månader. \r\n
\r\n\r\n### Hur har ambitionen varit?\r\n\r\n– Användarupplevelsen har hela tiden varit i centrum. Tänk dig att du sitter i en taxi med din iPad och är på väg ner i en tunnel. Bilden växlar då mjukt ner till lägre upplösning och sen när du kommer ut i det fria ökar bildkvaliteten lika mjukt igen. För att klara det kodas alla klipp till tre videoformat med vardera fyra bit-rates – 12 möjliga strömmar med andra ord. Övergångarna sker sömlöst och automatiskt helt baserat på enhetens aktuella förmåga att ta emot video. Självklart har vi också skapat specifika versioner av siten för mobiler, läsplattor och datorer.\r\n\r\n### Vilka format valde ni?\r\n\r\n– Vi valde HLS som står för HTTP Live Streaming, HDS (HTTP Dynamic Streaming) och MP4 (HTTP Pseudo Streaming). Om klienten stöder HLS så väljs det först.\r\n\r\n### Intäkterna då, kan de öka?\r\n\r\n– I februari 2013 blev intäkterna för första gången större för webbtidningen än för papperstidningen. Det är en milstolpe som visar var framtiden ligger. På nya TV-siten finns det många attraktiva reklamytor som kan generera mer intäkter. Det finns till exempel companion ads, pre-rolls, mid-rolls, end-rolls och in-skins. På svenska betyder det stora bakgrundsreklamytor, reklamsnuttar före, i och efter filmerna samt reklam runt själva filmytan.\r\n\r\n### Hur lång tid tog det att bygga siten?\r\n\r\n– Vi rev bort all gammal teknik och började från noll. Förstudien gjordes i maj förra året, sen valdes leverantörer och i september började vi skriva kod. Det har gått undan hela tiden. Nu vid premiären finns det drygt 3 200 GB lagrat fördelat på över 3 500 filmer och antalet ökar med 10-20 stycken per dag.\r\n\r\n[tv.aftonbladet.se/](http://tv.aftonbladet.se/)",
- "created_at": {
- "$date": 1363842978000
- },
- "day": 21,
- "image_url": "http://old.athega.se/system/uploads/2013/10/peterb_small.png",
- "last_updated_by": "mats",
- "month": 3,
- "published_at": {
- "$date": 1363809600000
- },
- "slug": "2013/03/21/Idag_lanserar_Aftonbladet_ny_TV_site",
- "summary": "Med en ny site för bara video blir upplevelsen bättre för användarna. Dessutom ökar annonsintäkterna.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Idag lanserar Aftonbladet ny TV-site",
- "updated_at": {
- "$date": 1381755636000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "5167f8fa355c31074c000017"
- },
- "content": "Ämnet för månadens internutbildning var digital fotografering och\r\nbildbehandling. Jag gick även igenom lite grunder och tips om hur man\r\nmed enkla medel får bättre slutresultat.\r\n\r\n/ [Peter](/peter)\r\n\r\n[Presentationen på Speaker Deck](https://speakerdeck.com/peterhellberg/introduction-to-digital-photography)\r\n[](https://speakerdeck.com/peterhellberg/introduction-to-digital-photography)",
- "created_at": {
- "$date": 1365768442000
- },
- "day": 12,
- "last_updated_by": "peter",
- "month": 4,
- "published_at": {
- "$date": 1365717600000
- },
- "slug": "2013/04/12/introduktion-till-digitalfoto",
- "title": "Introduktion till digitalfoto",
- "updated_at": {
- "$date": 1365777214000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "519e1caa355c317e54000004"
- },
- "content": "Athega har tillsammans med Gabert&Partner blivit tilldelade ramavtal inom systemutveckling och projektledning. Nu hoppas vi på många intressanta uppdragsförfrågningar.\r\n\r\n/ [Fredrik](/fredrik)",
- "created_at": {
- "$date": 1369316522000
- },
- "day": 23,
- "last_updated_by": "mats",
- "month": 5,
- "published_at": {
- "$date": 1369260000000
- },
- "slug": "2013/05/23/ramavtal-med-forsakringskassan",
- "title": "Ramavtal med Försäkringskassan",
- "updated_at": {
- "$date": 1369732074000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "51a370ab355c314e16000002"
- },
- "content": "Athega har ännu en gång nått AAA-status av kreditvärderingsföretaget Soliditet, AAA är den högsta kreditvärdigheten och år 2013 har endast 2,6% av Sveriges företag denna status.\r\n\r\n[](http://www.soliditet.se/lang/sv_SE/RatingGuideline)",
- "created_at": {
- "$date": 1369665707000
- },
- "day": 27,
- "last_updated_by": "peter",
- "month": 5,
- "published_at": {
- "$date": 1369605600000
- },
- "slug": "2013/05/27/Soliditet-AAA",
- "title": "Trippel A",
- "updated_at": {
- "$date": 1369666468000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "51ac49d1355c315e4c000003"
- },
- "content": "Har du sett någon snygg grafik på sistone? Den kan vara gjord med R. Mikael Forsberg kan berätta mer om succén för detta open-source-språk.\r\n------------\r\n### Mikael, du är konsult hos oss och gillar R. Varför då? \r\n– För det första är det ett open-source-språk, vilket aldrig är fel. Sen är det skapat enbart för dataanalys vilket också känns helt rätt.\r\n\r\n\r\n
\r\n
Den kända fb-vänkartan är gjord i R. \r\n
\r\n\r\n### Vad kan R användas till?\r\n– R kan användas överallt där man kan formulera en fråga som man tror kan besvaras med ett statistiskt underlag. Man kan till exempel ta reda på hur besökare beter sig på webbplatser genom att analysera loggar, eller hur ett nytt varumärke tas emot i sociala medier eller så vill en journalist processa offentlig data för att kanske hitta ett scoop.\r\n\r\n\r\n
\r\n
Mikael Forsberg gillar att använda R för att hitta mönster i stora datamängder och sen enkelt visualisera dem.. \r\n
\r\n\r\n### Varför ökar intresset för R?\r\n– Embryot till R föddes redan 1997 men det är de sista tre åren som intresset exploderat. R har idag det man letar efter när man växt ur till exempel Excel. Man vill ha en enkel och kraftfull open source-miljö att göra analyser i och hitta mönster i sin data. Dessutom har R en stor och levande community med allt från statistiker från universitetsvärlden till programmerare från industrin. Communityn levererar \"R-paket\" som kan användas för att göra analyser av allt från naturligt språk till att skapa fantastiska diagram och grafer. När man väl sett dessa informativa visuella lösningar så vill man gärna göra samma sak själv.\r\n\r\n### Finns det andra verktyg för just dataanalys?\r\n– Javisst, några exempel är SAS, Stata och SPSS – inget av dem är dock open source. Det går också att använda programmeringsspråk som exempelvis Java och Python även om de inte är gjorda specifikt för dataanalys.\r\n\r\n### Har du några bra exempel?\r\n– Här är en länk till en snygg och smart [Visualisering över London](http://spatialanalysis.co.uk/2012/02/london-cycle-hire-pollution) som är gjord med R och paketet ggplot2. Alla från Google till Microsoft använder R idag. Här är en länk till en [artikel i New York Times](http://www.nytimes.com/2009/01/07/technology/business-computing/07program.html?_r=0) från 2009 som kan sägas vara starten för intresset kring R – både mitt och många andras. Här är den kända [Facebook-vän-världskartan](https://www.facebook.com/notes/facebook-engineering/visualizing-friendships/469716398919) och här är en [fin lösning](http://timelyportfolio.github.io/rCharts_512paths/) som gjordes inför presidentvalet i USA. Andra mer konventionella grafer kan man hitta om \r\nman bildgooglar på just ggplot2 som är ett av de mest populära paketen för att visualisera data med R.",
- "created_at": {
- "$date": 1370245585000
- },
- "day": 4,
- "image_url": "http://i3.createsend1.com/ei/j/57/6D5/833/203220/mikael.png",
- "last_updated_by": "mats",
- "month": 6,
- "published_at": {
- "$date": 1370289600000
- },
- "slug": "2013/06/04/monster-i-stora-datamangder",
- "summary": "Mikael Forsberg berättar om R.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Nu går det ännu lättare att hitta mönster i stora datamängder och skapa snygg grafik.",
- "updated_at": {
- "$date": 1381834813000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "51c0c08f355c317c5e000002"
- },
- "content": "Under förra helgen var jag ([Peter](/peter)), [Alex](/alex), [Johan](/johan) och [Petter](/petter) på [Nordic Ruby](http://2013.nordicruby.org/).\r\n\r\nLiksom förra året hölls Nordic Ruby på [Yasuragi Hasseludden](http://www.yasuragi.se/). Nytt för i år var dock att konferensen smygstartade redan under torsdagskvällen.\r\n\r\n\r\n\r\n## Fredag\r\n\r\nEfter bad och en stadig frukost var det dags för konferensen att komma igång ordentligt.\r\n\r\n### The History of Women in Programming\r\n\r\nKonferensen inleddes av [Elise Worthy](http://twitter.com/eliseworthy) och \r\n[Jessica Suttles](http://twitter.com/jlsuttles) som berättade om kvinnors viktiga roll i datorns historia. De rekomenderade bland annat böckerna [The Computer Boys Take Over](http://thecomputerboys.com/?page_id=20)\r\noch [Gender Codes: Why Women Are Leaving Computing](http://eu.wiley.com/WileyCDA/WileyTitle/productCd-0470597194.html).\r\n\r\n### Joy\r\n\r\n[Chad Fowler](https://twitter.com/chadfowler) berättade om att vara bipolär samt hur han själv har hanterat det. Han ansåg även att lycka fortfarande är ett “olöst problem”.\r\n\r\n> We obsess over minutiae. (Which key to use as the Vim \\ key)\r\n\r\n### What Is Your Why?\r\n\r\n[Keavy McMinn](https://twitter.com/keavy) höll en, om något, ännu känslosammare\r\nföreläsning om klara känslosamma motgångar genom fysisk träning.\r\n\r\n> Life is fragile and **BRUTAL**\r\n\r\n### Bootstrapping as a Developer\r\n\r\n[Tekin Suleyman](https://twitter.com/tekin) berättade om hur han bootstrappade \r\n[crowd.fm](https://crowd.fm/) samt hur viktigt det är att hitta rätt typ av kunder, \r\nspeciellt när man har begränsat med finansiering och tid.\r\n\r\n> Build something your customers **NEED**\r\n\r\n### Hacking Passion\r\n\r\n[Katrina Owen](https://twitter.com/kytrinyx) gick igenom olika sätt att “levla” i livet.\r\n\r\nHennes initiala mål var att hon ville bli extraordinär på något… men hon hade inte helt \r\nklart för sig **vad** det kunde vara. Så hon provade på det mesta.\r\n\r\n 1. Practice: Deliberate and focused\r\n 2. Imitate the masters\r\n 3. Do something well enough to **LOVE** what you **DO**\r\n\r\n> Life is **MESSY**\r\n\r\n### Better: A Field Guide to Continuous Improvement\r\n\r\n[Ben Scofield](https://twitter.com/bscofield) gav tips på kontinuerlig förbättring.\r\n\r\n*(Hemligheten är snabb feedback)*\r\n\r\nNågra av tipsen var att skriva **Outage Reports**, göra **Project Post-Mortems**, logga **Metrics** samt att använda något i stil med [Netflix Chaos Monkey](https://github.com/Netflix/SimianArmy).\r\n\r\n - [Presentationen på Speaker Deck](https://speakerdeck.com/bscofield/better-a-field-guide-to-continuous-improvement)\r\n\r\n\r\n\r\n## Lördag\r\n\r\n### Making Friends with the Turtles\r\n\r\n[Glenn Vanderburg](https://twitter.com/glv) förespråkade att alla borde lära \r\nsig hur tekniken fungerar några abstraktionsnivåer under den nivå som man \r\nvanligtvis jobbar mot. Han presenterade detta som fem punkter:\r\n \r\n 1. Don’t be afraid to learn the internals\r\n 2. Remove the barriers: Make it easy to explore\r\n 3. Choose the right tools, even if they’re not “cool”\r\n 4. Build your own prototype to understand the tools\r\n 5. This is **YOUR** job\r\n\r\nHan hävdade även om att alla abstraktioner läcker så fort något går snett.\r\n\r\n### Realigning & Refactoring\r\n\r\n[Jina Bolton](https://twitter.com/jina) beskrev hur hon jobbar \r\nmed [Sass](http://sass-lang.com/) och style guides.\r\n\r\nHon rekomenderade boken [Scalable and Modular Architecture for CSS](http://smacss.com/), \r\nverktyget [SassMe](http://sassme.arc90.com/) och gridsystemet \r\n[Susy](http://susy.oddbird.net/), vilket bygger på [Compass](http://compass-style.org/).\r\n\r\n> Don’t try to document everything from the beginning. (You will give up)\r\n\r\nSusy såg verkligen trevligt ut, får nog ta och använda det i något framtida projekt.\r\n\r\n - [Presentationen på Speaker Deck](https://speakerdeck.com/jina/realigning-and-refactoring)\r\n\r\n### Make the World Less Shit. NOW.\r\n\r\n[Natalia Buckley](https://twitter.com/ntlk) beskrev hur teknik, eftersom den är\r\nutvecklad av människor, är en biprodukt av vår kultur, hur Wikipedia har inbyggd\r\nbias samt att 2/3 a jordens befolkning inte kan delta i projektet.\r\n\r\n> Make stuff you can be proud of.\r\n\r\n### Literate Programming: A Modern Approach\r\n\r\nJeremy Ashkenas pratade om [Literate CoffeeScript](http://ashkenas.com/literate-coffeescript/) \r\nsamt [Knuths](http://en.wikipedia.org/wiki/Donald_Knuth) grundidé\r\n[Literate programming](http://en.wikipedia.org/wiki/Literate_programming).\r\n\r\nAtt betrakta dokumentation och kod som ett gemensamt litterärt verk låter inte\r\nhelt tokigt, även om jag inte är helt med på hur praktiskt det skulle vara.\r\n\r\n> Code is abstract **ART**\r\n\r\nHan kontrasterade även med några av [Dijkstras](http://en.wikipedia.org/wiki/Edsger_W._Dijkstra) tankegångar.\r\n\r\n### The Imminent Collapse of Ruby\r\n\r\nDen sista föreläsningen gav en riktig tankeställare.\r\n[Reginald Braithwaite](https://twitter.com/raganwald) pratade om att Ruby,\r\nbåde som språk och ekosystem, nått den del av livscykeln där man inte längre\r\nkan kalla det för “ny och het” teknik.\r\n\r\nHan ser en stor röd flagga i att vi har och använder så många olika\r\nverktyg i vårt dagliga arbete med Ruby. Bundler, Rake, RSpec, RubyGems, etc.\r\n\r\n> Pervasive tools are Ruby smells.\r\n\r\nHan beskrev det hela som spelet [Jenga](http://en.wikipedia.org/wiki/Jenga) \r\noch att vi alla borde fokusera på att bygga en stabil grund snarare än \r\natt utveckla nya verktyg. Han nämnde det inte i föreläsningen men jag kan verkligen rekomendera att du tar en närmare titt på hans projekt [Homoiconic](https://github.com/raganwald/homoiconic/).\r\n\r\n - [Presentationen på Haiku Deck](http://www.haikudeck.com/p/ZZZZtHRk3c/rubyvrldens-frestende-kollaps)\r\n\r\n### Lightning talks\r\n\r\nDen sista punkten på schemat var lightning talks, små snabba föreläsningar om lite vad som helst.\r\nTill exempel berättade baristan Patrik om vägen från böna till espressokopp.\r\n\r\n\r\n\r\n\r\nFler bilder från konferensen hittar du på [Flickr](http://www.flickr.com/photos/elabsse/sets/72157634088191770/)\r\n\r\n### Sketch notes\r\n\r\n - [The History of Women in Programming](https://twitter.com/jessabean/status/342926843067891713/photo/1)\r\n - [Joy](https://twitter.com/jessabean/status/342939985428754434/photo/1)\r\n - [What Is Your Why?](https://twitter.com/jessabean/status/342955229878317056/photo/1)\r\n - [Bootstrapping as a Developer](https://twitter.com/jessabean/status/342989610823069696/photo/1)\r\n - [Hacking Passion](https://twitter.com/jessabean/status/343007655784243200/photo/1)\r\n - [Better: A Field Guide to Continuous Improvement](https://twitter.com/jessabean/status/343025010115493889/photo/1)\r\n - [Making Friends with the Turtles](https://twitter.com/jessabean/status/343286787390726145/photo/1)\r\n - [Realigning & Refactoring](https://twitter.com/jessabean/status/343302151625375746/photo/1)\r\n - [Make the World Less Shit. NOW.](https://twitter.com/jessabean/status/343314392462536705/photo/1)\r\n - [Literate Programming: A Modern Approach](https://twitter.com/jessabean/status/343357392920137728/photo/1)\r\n - [The Imminent Collapse of Ruby](https://twitter.com/jessabean/status/343377665325158400/photo/1)",
- "created_at": {
- "$date": 1371586703000
- },
- "day": 18,
- "image_url": "http://old.athega.se/system/uploads/2013/06/nordic_ruby_audience.jpg",
- "last_updated_by": "mats",
- "month": 6,
- "published_at": {
- "$date": 1371499200000
- },
- "slug": "2013/06/18/nordic-ruby-2013",
- "summary": "Liksom förra året hölls Nordic Ruby på [Yasuragi Hasseludden](http://www.yasuragi.se/). Nytt för i år var dock att konferensen smygstartade redan under torsdagskvällen.",
- "tags_array": [],
- "title": "Nordic Ruby 2013",
- "updated_at": {
- "$date": 1381835103000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "51cc24d4355c3115e9000002"
- },
- "content": "Under midsommarhelgen hölls årets Kanban Leadership Retreat i Mayrhofen, Österike KLRAT. Att få träffa så många duktiga människor i det format som används är verkligen en möjlighet att lära sig både i formella sessioner och lösa diskussioner. \r\n\r\n\r\n\r\nLean Kanban University partnermöte hölls redan på Söndagen. Eftersom Athega är ett av grundade företag var vi på plats på mötet. På söndagkväll samlades förslag till ämnen in och planerades in till nästföljande dag i tre konferensrum. Det handlade om allt från modeller, metoden i sig, exempel och nya idéer. Helt enkelt förslag på sessioner.\r\n\r\nSchemat var upplagt så att förmiddagarna är bokade fram till lunch. Sedan var det fria aktiviteter fram till fem-tiden då kvällens sessioner startade och höll på fram till tio-tiden. Under den lediga tiden kunde man välja mellan alla aktiviter Mayrhofen erbjöd eller helt enkelt fortsätta sessioner och diskussioner i konferensrummen eller på något kafé.\r\n\r\nEtt par sessioner som låg mig nära hölls av...\r\n\r\n### Troy Magennis\r\nBeskrev hur tidsestimering går att eliminera med statistik och nyttan man kan ha av statistik även med en begränsad mängd datapunkter. Han visade till exempel användning av Montecarlo-modellen för tidsprognoser. Hela sessionen var väldigt intressant och Troys pragmatiska inställning till statistik var något jag uppskattade stort. Vi fick se projekt-budgetering och modellering av risk genom att räkna på antal möjliga blockeringar och beroenden. Att använda statistik på det tydliga sätt Troy gjorde kräver en djup förståelse och ännu en gång såg vi att göra något på ett enkelt sätt kräver väldigt hög kunskap. Sessionen var tydlig, konkret och enkel att hänga med samtidigt som Troy drog avancerade slutsatser av sin statistik.\r\n\r\n\r\n### Håkan Forss\r\nföreslog bland annat sessioner runt hans arbete med Toyota Kata och Kanban. Håkans sätt att se på förändring stämmer väl överens med hur jag ser på det. Träning och åter träning är viktigt. Det kanske är viktigare att vi överhuvudtaget tränar på förändring och förbättring än att den alltid blir till det bättre. Vi måste vara adaptiva och vi tränar detta genom mönster/patterns eller Kata's. Håkan hade sessioner där vi bland annat tittade på att konkretisera punkter och förslag på Kata's som används inom Kanban metoden. Jag går inte in i djupet här utan hänvisar gärna vidare till Håkans utmärkta blogg där hela konceptet beskrivs mycket bra. \r\n[http://hakanforss.wordpress.com](http://hakanforss.wordpress.com)\r\n\r\n### Jade Bloom \r\nJabe visade \"Culture matters\". Han berättade om Edgar Schein teorier om vad kultur är och att det inte är något ytligt. Det är något djupt inom organisationen och går att förstå bäst om man tittar på det i tre nivåer.\r\n1. Saker och observerade beteenden\r\n2. Exponerade Värden (Varför gör vi saker, medvetna strategier, uttalade värden, det vi tror)\r\n3. Underliggande antaganden \r\nPå detta sätt ska vi se hur mottaglig en organisations är för förändring. Hypotesen byggde på att de värderingar som finns ibland inte stämmer med de metoder och artifakter vi använder oss av. Då riskerar förändring efter ett tag backa tillbaka till tidigare läge. Ett exempel var organisationer som börjat använda sig av Agila eller Kanban metoden och dess artifakter men över tid återgått till tidigare sätt att arbeta. En sådan organisation har inte samma grundläggande värderingar som Agila-metoder och/eller Kanban metoden bygger på. Då hjälper det inte att försöka trycka på detta. \r\n Vi fick göra en övning där vi först samlade ihop ett antal artifakter i den kultur eller organisation vi tittade på. Sedan samlar vi in antalet värderingar vi tror stämmer på organisationen (Dessa går även att jämföra med vision och mission på företaget för att se att det stämmer med vad individerna i företaget tror). Utifrån dessa kan började vi koppla värderingar mot artifakterna. Hittade vi en skillnad så ansågs det vara en motsägelse. Jabe är alltid förberedd och engagerande på sessionerna. \r\n\r\n\r\n\r\n### Arne Roock\r\nArne visade delar av Alignment the forgotten child (alignment and automomy)-idéerna han även presenterade på \"Stop start - start finishing\" som var i Stockholm tidigare i år. Ännu en session där diskussionerna berörde hur viktigt detta är med gemensamma mål och hur dessa kommuniceras utan att för den skull styra hur man gör sitt arbete. Modellen visar två dimensioner på detta. Alignment (Why/What) och autonomy (How). Arne rekommenderar att läsa The Art of Action av Stephen Bungay med undertiteln \"How leaders close the gaps between plans, actions and result\"\r\n\r\n\r\nSammanfattningsvis innehöll konferensen en spännande blandning av teknik och organisationsutveckling. Hur djup en kanban implementation är och portfolio-kanban var ett återkommande tema.",
- "created_at": {
- "$date": 1372333268000
- },
- "day": 27,
- "last_updated_by": "mats",
- "month": 6,
- "published_at": {
- "$date": 1372284000000
- },
- "slug": "2013/06/27/klrat13",
- "title": "Kanban Leadership Retreat 2013",
- "updated_at": {
- "$date": 1372337466000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "51ffa996355c316c10000002"
- },
- "slug": "2013/08/05/new_employee_lark",
- "title": "Tillskott på Frontend",
- "content": "Idag är vi glada att få hälsa en ny medarbetare välkommen till Athega, Lark Davis.\r\nLark har inte bara det coolaste namnet på företaget utan är också en mycket skicklig frontend-utvecklare och det är inom det området hon skall stärka Athegas leveranskapacitet.\r\n\r\nNågra ledord i Larks värld är: HTML5, CSS3, jQuery, PHP, Django, Adobe photoshop, Custom WordPress, Responsive and Fluid Design. \r\n\r\nFörsta uppdraget för Athega blir till vår mycket uppskattade kund Aftonbladet där hon skall ingå i web teamet för www.aftonbladet.se.\r\n\r\nVi ser fram emot att jobba med Lark och nu kör vi så det ryker!\r\n\r\n//Fredrik",
- "published_at": {
- "$date": 1375653600000
- },
- "last_updated_by": "fredrik",
- "year": 2013,
- "month": 8,
- "day": 5,
- "updated_at": {
- "$date": 1375709590000
- },
- "created_at": {
- "$date": 1375709590000
- }
- },
- {
- "_id": {
- "$oid": "5214d5fb355c313e6c000007"
- },
- "content": "> Denna artikel är ursprungligen publicerad i vårt nyhetsbrev. Vill du prenumerera på våra nyhetsbrev hör av dig till [Fredrik](/fredrik)\r\n\r\n## Ruby är ett av de 10 mest populära programspråken\r\n### I år fyller Ruby 20 år och firar med att släppa version 2.0\r\n\r\n*Agila programspråk fortsätter att ta marknadsandelar. Peter vet varför och kan berätta mer om styrkan i globala Ruby-communityn.*\r\n\r\n[](/peter)\r\nPeter Hellberg är systemarkitekt på Athega med [Ruby](http://ruby-lang.org/) och [Go](http://golang.org/) som favoritredskap.\r\n\r\n### Peter, varför har Ruby blivit så framgångsrikt?\r\n– En av de största anledningarna till att [Ruby](http://ruby-lang.org/) blivit så stort är ramverket [Ruby on Rails](http://rubyonrails.org/) men jag tycker personligen att styrkan ligger i Ruby-communityn. Språket lämpar sig väldigt väl för att bygga prototyper och kulturen av testdriven utveckling gör det enkelt att producera vältestad kod. Det skapar en bra plattform för utveckling av större system. En annan anledning är att [JRuby](http://jruby.org/) gjort det väldigt smidigt att introducera Ruby i organisationer där man använder Java.\r\n\r\n### Stämmer det att Ruby är japanskt?\r\n– Ja, det utvecklades av [Yukihiro Matsumoto](http://en.wikipedia.org/wiki/Yukihiro_Matsumoto) i mitten på 1990-talet. Han ville skapa ett språk som var väldigt intuitivt och enkelt att förstå även för ovana programmerare. Sen utvecklades språket med hjälp av japanska utvecklare och det var först senare som man började dokumentera språket på engelska – det är nog därför Ruby växt så fort de senaste fem åren.\r\n\r\n### Vad är det nya i Ruby 2.0?\r\n– Några interna förändringar sedan 1.9 är en ny Garbage Collector (Bitmap Marking) samt att man lyckats göra `require` markant snabbare. Man har även fokuserat på bakåtkompabilitet med 1.9 så långt som möjligt. \r\n\r\nEn av de mer synliga syntaxförändringarna är antagligen \"keyword arguments\" men till skillnad från Objective-C så behöver man inte tänka på vilken ordning man använder dem i. En liten men trevlig nyhet är att Encoding är satt till UTF-8 som standard.\r\n\r\n### Är det lämpligt att gå över till 2.0 direkt?\r\n– Ja, absolut, eftersom version 2.0 är en mindre uppdatering av 1.9.3 så är det bara att börja använda 2.0 i nya Ruby-projekt. Version 2.0 är dessutom väldigt stabil.",
- "created_at": {
- "$date": 1377097211000
- },
- "day": 20,
- "image_url": "http://athega.se/images/employees/peter/wide.jpg",
- "last_updated_by": "peter",
- "month": 8,
- "published_at": {
- "$date": 1376949600000
- },
- "slug": "2013/08/20/ruby-20",
- "summary": "Peter vet varför och kan berätta mer om styrkan i globala Ruby-communityn",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Ruby 20 år",
- "updated_at": {
- "$date": 1389570741000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "52540f95355c317be2000008"
- },
- "content": "Pingdom har publicerat en artikel om aftonbladet.se där Athegas Christian Lizell beskriver vad det krävs för att hålla Sveriges största webbsajt rullande. \r\n\r\n\r\n\r\nLite siffror\r\n\r\n- Ca 3 miljoner unika besökare per dag\r\n\r\n- Toppar på 100,000 unika requests per sekund\r\n\r\n- Trafiken är på ca 15 TB per dag, ej inräknat annonser och TV-strömmar\r\n\r\nI artikeln får vi se exempel på Aftonbladets övervakningsskärmar och infrastrukturen beskrivs.\r\n\r\nLäs artikeln i sin helhet här: [http://royal.pingdom.com/2013/10/08/website-swedes-aftonbladet/](http://royal.pingdom.com/2013/10/08/website-swedes-aftonbladet/)",
- "created_at": {
- "$date": 1381240725000
- },
- "day": 7,
- "image_url": "http://athega.se/images/employees/chrille/wide.jpg",
- "last_updated_by": "mats",
- "month": 10,
- "published_at": {
- "$date": 1381096800000
- },
- "slug": "2013/10/07/sverigesstorstawebbsajt",
- "summary": "Pingdom har publicerat en artikel om aftonbladet.se",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Kraften bakom aftonbladet.se",
- "updated_at": {
- "$date": 1387542975000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "525be5c2355c317341000005"
- },
- "content": "\r\n\r\nSommarkonferens brukar vi tillbringa på Engsholms slott. I år labbade vi med AR-drones. Mycket programmering och spännande tävlingsmoment.\r\n\r\n\r\n\r\nVi höll som vanligt till i strandateljén.",
- "created_at": {
- "$date": 1381754306000
- },
- "day": 6,
- "image_url": "http://old.athega.se/system/uploads/2013/10/sommarkonferens1.png",
- "last_updated_by": "mats",
- "month": 6,
- "published_at": {
- "$date": 1370462400000
- },
- "slug": "2013/06/06/Sommarkonferens",
- "summary": "Sommarkonferens brukar vi tillbringa på Engsholms slott. I år labbade vi med AR-drones. Mycket programmering och spännande tävlingsmoment.",
- "tags_array": [],
- "title": "Sommarkonferensen 2013",
- "updated_at": {
- "$date": 1383143866000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "526a5b76355c310753000002"
- },
- "content": "> TV4 har ett slimmat team för digitala medier samtidigt som kraven är höga. Teknikchef Per Åström kan förklara hur de löser den ekvationen.\r\n------------\r\n\r\n---------------------------------------\r\n### Per, vad skiljer er från till exempel SVT?\r\n\r\n– SVT lever inte med samma kommersiella krav som Aftonbladet, vi och andra tv-kanaler gör. Oavsett om tittaren har en dator, platta eller mobil så behöver vi annonsintäkter. Därför lägger vi mycket energi på att hitta nya ytor att sälja.\r\n\r\nDen 23 september lanserade vi till exempel det nya annonsformatet T-commerce som vi var först med i Sverige. \"T\" står för \"tv\". Tänk dig att du tittar på Drömkåken på vår Play-site. I en scen där en hantverkare använder borrmaskin kommer en yta upp som erbjuder dig att både läsa mer på annonsörens hemsida och att beställa en borrmaskin. Du väljer om du vill se vidare på filmen eller stanna kvar och kolla erbjudandet. Formatet är en del av programmet och det syns i timelinen när det dyker upp. \r\n\r\nNya idéer måste fram snabbt och då ställs det krav på den underliggande tekniken. Vi som utvecklar teknik för digitala medier måste känna oss trygga med att vi snabbt kan skapa nästan vilka nya format, ytor och idéer som helst.\r\n\r\n### Hur har ni löst det?\r\n\r\n– 2009 tog vi beslut att utveckla nya tekniska plattformar. Vi byggde bland annat API:er, dvs standardiserade gränssnitt till alla grunddata. Tänk dig att du har utvecklat en applikation för att visa omröstningar i mobilen. Vill du sen göra samma sak på en dator, gps-skärm i bilen eller på en Xbox så slipper du starta från noll. Med API:er går utvecklingen mycket snabbare.\r\n\r\n\r\n\r\nPer Åströms utvecklingsteam har lagt ut driften av all IT och hyr funktioner och tjänster på nätet.\r\n\r\n### Ni är bara 12 personer på din avdelning. Räcker det?\r\n\r\n– Ja, faktiskt. Det beror på två strategiska beslut. Det första är att vi hyr kapacitet istället för att äga egna servrar. Det andra är att vi bygger våra applikationer så mycket som möjligt på färdiga komponenter, tjänster och ramverk. Vi letar upp \"pusselbitar\" som gör att vi snabbt och enkelt kan bygga bra lösningar. Vi hyr till exempel plattformen PubNub för realtidsmeddelanden, Disqus för kommentarer och använder open source-källkod som Ruby on Rails. \r\n\r\nDet finns massor av färdiga add-ons från tredjepartsleverantörer. Vi letar upp dem, kollar av mot vår kravspec, beställer och betalar, ofta med kort. Fungerar det mindre bra så byter vi bara till en annan leverantör. Marknaden är internationell och konkurrensen stenhård.\r\n\r\n### Kan du ge ett exempel?\r\n\r\n– Till VIP-rummet i Idol köper vi in realtidsfunktionen som en tjänst från PubNub sen hyr vi kapacitet hos Heroku för att köra tjänsten. Där betalar vi bara exakt för den kapacitet vi behöver ända ner på sekundnivå. Perfekt för Idol som har tydliga tittartoppar.\r\n\r\nTack vare att vi använder tredjepartsprodukter kan vi lägga mer energi på att bygga snygga grafiska lösningar, integration och anpassningar som gör att verktygen passar vårt arbetssätt. \r\n\r\nMålet är alltid att skapa maximal kundupplevelse. Det är nödvändigt med den konkurrens som finns om tittarna. De reagerar snabbt och känslomässigt och därför måste vi fokusera på upplevelsen, inte tekniken bakom den, den är bara ett verktyg.",
- "created_at": {
- "$date": 1382701942000
- },
- "day": 25,
- "image_url": "http://old.athega.se/system/uploads/2013/10/per-1.png",
- "last_updated_by": "mats",
- "month": 10,
- "published_at": {
- "$date": 1382644800000
- },
- "slug": "2013/10/25/darfor-ar-tv4-sa-slimmade",
- "summary": "TV4 har ett slimmat team för digitala medier samtidigt som kraven är höga.",
- "tags_array": [],
- "title": "Därför är TV4 så slimmade",
- "updated_at": {
- "$date": 1383130984000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "529083cc355c311efe000008"
- },
- "content": "I för årstiden ovanligt milt och stilla väder har Athega hackat loss på årets Athega Code Base. Temat var lek och interaktion med hårvara med flera [Arduino](http://arduino.cc/)-kit och visualiseringar i olika grafiska ramverk. Som traditionen bjuder, höll vi även i år till i det gamla kontrolltornet på [Söderarm](http://www.soderarm.com/).\r\n\r\nMorgonen var fantastisk i år.\r\n\r\n\r\n\r\n#### Nedan följer resultatet utan någon inbördes ordning:\r\n\r\n- Intuitiv navigation i grafer \r\n- Artoo & Cylon \r\n- Ljuseffekter och visualisering med Arduino och Processing \r\n- Dynamisk frekvensanalys \r\n- MDS-visualisering av voteringsdata från riksdagen \r\n- Motorstyrning med Arduino \r\n- Interaktiv 3D-kub i CSS & JavaScript \r\n- Ruby Grid Computing är möjligt \r\n- Inga fler böter! \r\n\r\nIntuitiv navigation i grafer \r\nJag byggde en extension till det utmärkta grafritarramverket [Rickshaw](http://code.shutterstock.com/rickshaw/) som ritar fina grafer med hjälp av [D3](http://d3js.org/). Jag ville skapa ett enkelt sätt att navigera i en graf. Zooma in på något som sticker ut eller zooma ut för att få överblick och se trender.\r\n\r\nI [screencasten](http://www.screenr.com/BUPH) nedan visas hur grafen zoomas in eller ut när du scrollar vertikalt med musen. Scrollar du horisontellt rör du dig istället längs tidsaxeln.\r\n\r\n[](http://www.screenr.com/BUPH)\r\n\r\nSå snart koden är uppstädad och i skick att dela med sig av, gör jag en [Pull Request](https://github.com/shutterstock/rickshaw).\r\n\r\n/ [Christian](/chrille)\r\n\r\n \r\n### Artoo & Cylon\r\n\r\nJag använde ramverken [Artoo](http://artoo.io/) och \r\n[Cylon](http://cylonjs.com/) för att styra en [Arduino](http://arduino.cc/).\r\n\r\nÄven om Ruby är mitt favoritspråk så måste jag säga att JavaScript\r\n([CoffeeScript](http://coffeescript.org/) i mitt fall) lämpar sig\r\nbättre än Ruby för att styra hårdvara genom [Firmata](http://firmata.org/).\r\n\r\nJag stötte tyvärr på en bugg i Cylon som gjorde att jag inte kunde använda flera enheter av samma typ (LED). Självklart tog jag och öppnade en [GitHub Issue](https://github.com/hybridgroup/cylon/issues/38) och publicerade lite kod som en [Gist](https://gist.github.com/peterhellberg/7613185).\r\n\r\n/ [Peter](/peter)\r\n\r\n\r\n \r\n\r\n### Ljuseffekter och visualisering med Arduino och Processing\r\n\r\nProcessings-biblioteket [Minim](http://code.compartmental.net/tools/minim/) används för frekvensanalys av extern ljudinput (som kan vara mikrofon eller även en ljudfil med lite justering). Frekvensanalysen skrivs ut i en grafik som är lätt att styra. Genom att följa exempel på Minims hemsida skapade jag två vågformer (en till varje stereokanal) och ett frekvensspektrum som visar alla olika frekvensband samtidigt. \r\n\r\nMen hur gör man ljudvisualisering i den riktiga världen? Med [Processing](http://processing.org/) var frekvensspektrumet uppdelat i sex intervaller. Frekvensmedelvärdet för varje intervall beräknas och skickades till Arduinons programvara som konverterar siffrorna till bytes och bits, det språket som Arduino-chippet förstår, som sen konverterades till elektriskt spänning. Varje del av den sex-delad frekvensspektrumet skickas till Arduinons tilldelade PWM (Pulse Width Modulation) pin-utgångar. \r\n\r\nSex LED-lampor med olika färger kopplades till dessa utgångar. Om allt funkar rätt så ska de få signaler från Arduinos programvara i form av en spänning som matchar medelvärdena från frekvensspektrumets sex intervaller. Lamporna lyser och festen börjar!\r\n\r\n#### Stort tack till dessa resurser: \r\n\r\n- PWM visualisering med mikrofon \r\n\r\n- hur man gör seriell kommunikation mellan Arduino och Processing: \r\n\r\n- hur man spelar en låt med minim och skapar en vågform: \r\n\r\n/ [Lark](/lark)\r\n\r\n\r\n\r\nDynamisk frekvensanalys \r\n\r\nOm man använder ledtider för att försöka förutse leveranstid utan att tidsuppskatta är frekvensdiagram mycket användbara. Vi försöker svara på frågan hur sannolikt är det att arbetet är klart inom en viss tid. Ibland är det enklare att se på dessa om vi grupperar ihop data i grupper. Denna gruppering kan vara lite omständig att göra och ofta är det bra att svepa över ett stort antal grupperingar. Jag gjorde ett litet hack som tar data i en inmatningsruta och sedan visar frekvenserna med hjälp av google.visualization.\r\n\r\nDet fina med hacket är att det är mycket lätt att gruppera data i olika frekvensband.\r\n\r\n \r\n \r\n \r\n\r\n/ [Mats](/mats)\r\n\r\nMDS-visualisering av voteringsdata från riksdagen \r\n\r\nPå årets [Athega](http://athega.se) codebase använde jag [voteringsdata](http://data.riksdagen.se/Data/Voteringar/) från riksdagen för att göra [MDS](http://en.wikipedia.org/wiki/Multidimensional_scaling)-visualiseringar. Visualiseringerna visar hur nära varandra riksdagsmännen befinner sig baserat på hur de har röstat i olika frågor.\r\n\r\nFör att skapa visualiseringarna använde jag mig av python och paketen scikit-learn, pandas och matplotlib.\r\n\r\nResultatet kan ses på på [github](http://github.com/ragulin/mds-riksdagen).\r\n\r\n/ [Micke](/micke)\r\n\r\n \r\n### Motorstyrning med Arduino\r\nLabbade för första gången med en Arduino. Målet var att kontrollera en motor programmatiskt och att försöka addera en sensor. Kan användas för att t.ex. styra en gardin eller ventilera ett växthus. \r\n\r\nAnvände en övningsuppgift med färdigt exempel för att sätta upp initial motorstyring och att komma ingång med tekniken. Adderade sedan en analog fotoresistor och kalibrerade den mot rummets ljusförhållande med resistor och analys av värden. \r\n\r\nResultatet blev att motorn startar och går i 10 sekunder, om en momentswitch aktiveras och stannar sedan, under förutsättningen att det är tillräckligt ljust i rummet. \r\n\r\n/ [Torbjörn](/tobbe)\r\n\r\n \r\n### Interaktiv 3D-kub i CSS & JavaScript\r\nEn 3D-kub som kan roteras och zoomas med hjälp av mushjul eller pekplatta, pekskärm eller genom att röra på enheten.\r\nTekniken som används är CSS 3D Transforms och JavaScript som hämtar data från gyro och accelerometer genom händelser för Wheel, DeviceMotion, DeviceOrientation, OrientationChange och TouchMove.\r\nPå mobilen eller surfplattan skapas en känsla av att kuben är fastlåst i rymden och hänger kvar oavsett hur man rör och vrider på enheten. \r\n[Kolla in den på CodePen](http://codepen.io/johanberonius/full/qpzmh).\r\n\r\n/ [Johan](/johan)\r\n\r\nRuby Grid Computing är möjligt \r\nParallella programmeringskunskaper krävs för att använda dagens hårdvara och den växande trenden i distribuerade anslutna multiprocessor enheter.\r\nRuby är ett användbart skriptspråk som kan hantera distribuerad och parallellprogrammering.\r\n\r\nJag har använt Masatoshi Seki s Rinda bibliotek för att demonstrera enkel generisk parallelltaskprogrammering.\r\nHans bibliotek är kraftfullt och används med framgång i Rails, men är dåligt dokumenterat.\r\nDenna brist på dokumentation och exempel är ett stort hinder för nya programmerare.\r\n\r\nTre enkla kalkylatorservrar publicerades på en RindaRing-namntjänst och läste uppgifterna från 'Std in' som sedan gavs resultatet till en \"Std out\" TupleSpace.\r\n\r\nEventuella fel fångas och visas i en ‘Std error’ TupleSpace.\r\n\r\n/ [Mark](/mark)\r\n\r\nAnnars en skiss av gräs och skyttevärn:\r\n\r\n\r\nInga fler böter! \r\nJag utvecklade en Android app i Java som använder Stockholm stads [öppna trafik-API:er](http://open.stockholm.se/trafik-och-parkering). Appen fungerar som följande: När man har parkerat sin motorcykel på en MC-ruta tar man upp sin telefon och klickar på appens ikon.\r\n\r\nAppen tar då telefonens GPS-position och hämtar information om MC-rutan från Trafikkontoret och skapar en påminnelse i kalendern när nästa städdag är så att användaren kommer ihåg att flytta sin motorcykel och undvika böter.\r\n\r\n/ [Alex](/alex)",
- "created_at": {
- "$date": 1385202636000
- },
- "day": 22,
- "image_url": "",
- "last_updated_by": "mats",
- "month": 11,
- "published_at": {
- "$date": 1385074800000
- },
- "slug": "2013/11/22/acb2013",
- "summary": "I för årstiden ovanligt milt och stilla väder har Athega hackat loss på årets Athega Code Base. Temat var lek och interaktion med hårvara med flera Arduino-kit och visualiseringar i olika grafiska ramverk.",
- "tags_array": [],
- "title": "Arduino, visualiseringar och mer på årets Athega Code Base",
- "updated_at": {
- "$date": 1387355956000
- },
- "year": 2013
- },
- {
- "_id": {
- "$oid": "52f1dce11543a45f5b00002d"
- },
- "content": "#### Ledningen måste kunna lita på sina nyckeltal. Hur ska de annars kunna ta rätt beslut?\r\n\r\n\r\nDet går att undvika fällorna när du bygger beslutstödssystem. Vi satte oss ner med seniorkonsulten Mark Ingram för att få veta hur.\r\n\r\n_Mark, vad är syftet med de ledningssystem du är med och utvecklar?_\r\n\r\n– Systemen används av ledningen på stora företag för att kunna ta rätt beslut. Systemen samlar data och presenterar ekonomiska nyckeltal för organisationens olika delar. Det kan t ex handla om att månad för månad jämföra kostnader mot budget för alla dotterbolag. Ett bra ledningssystem ger företaget en konkurrensfördel. Cheferna kan se möjligheter och agera snabbt eftersom de kan visualisera sin verksamhet mer exakt än sina konkurrenter. Det är som ordspråket säger: If you can´t measure it, you can´t manage it.\r\n\r\n\r\nAthegakonsulten Mark Ingram har byggt managementsystem åt storkoncerner sedan 2004 och vet var fallgroparna finns.\r\n\r\n_Vilken är den största utmaningen när man bygger ett ledningssystem?_\r\n\r\n– Systemen är till sin natur komplexa och svåra att förstå. Det finns stora inbyggda motsättningar. Systemet beskriver verksamheten i verksamhetstermer, men realiseras med tekniskt datorspråk samtidigt som de innehåller finansiell information klädd i redovisningstermer. Det är ingen lätt match att greppa helheten. \r\n Den största utmaningen annars är att skapa konsensus i organisationen. Ta bara begreppet kostnadsmodell – hur många tolkningar av vad det är och hur den kan se ut finns det inte? \r\n Jag möter ibland frustrerade chefer som tvivlar på siffrorna de fått och gärna muttrar om \"funny money\" eftersom siffrorna inte känns relevanta för deras verksamhet. Tvivlet är som ett gift. För att ett system ska bli ett effektivt verktyg för organisationen måste människorna lita på modellen och de nyckeltal som den producerar. \r\n Det finns en utmaning till. En ny kostnadsmodell, för att ta ett exempel, kräver engagemang av organisationen. Ju större denna insats är, desto större risk att medarbetarna nedvärderar nyttan av den information ledningssystemet ger. Det enda sättet att undvika denna fälla är att förenkla hela ledningssystemet. Drömmen vore att modeller och system inte belastar organisationen alls, samtidigt som de levererar exakt den information man vill ha. \r\n Jag brukar också föreslå att organisationerna ska fokusera på orsak-verkan-sambanden. \"Vilka beteenden kan du påverka om du presenterar dessa kostnadssiffror för cheferna på dotterbolagen?\" Frågan leder till nya insikter som i sin tur förändrar beteenden och sänker kostnader.\r\n\r\n_Vilka verktyg brukar användas?_\r\n\r\n– Excel leder stort, det är absolut mest populärt. Alla kan använda det utan djupa datorkunskaper. Det finns ett skämt om Excel som säger att \"Export to Excel\" är den mest tryckta knappen i alla affärssystem. Och det ligger nog något i det. \r\n Ironiskt nog så vill de flesta affärssystemleverantörer bli av med Excel. Det är inte så konstigt. Riskerna med Excel är stora. Eftersom det är enkelt att använda skapar det en övertro på de siffror som kommer ur excel-arken. Tillförlitligheten är låg, speciellt när flera ark länkas ihop. Googla \"spreadsheet risks\" så hittar du uppskattningar på hur många miljarder USD som blivit felräknade. \r\n Jag lägger mycket tid på att förklara riskerna, hitta felkällor och flytta över funktioner till relationsdatabaser och kundspecifika data warehouses. Excel kommer förstås finnas kvar länge. Det är oöverträffat som verktyg för enkla ögonblicksbilder och analyser.\r\n\r\n_Vilken är den kritiska faktorn för att nå framgång med ett ledningssystem?_\r\n\r\n– För mig är det att lyssna på kunden. En klyscha, men väldigt sann. Företag bombarderas idag med information från IT-företag om produkter som är nödvändiga för framgång. BI-systemkonsulter kommer med råd och produkter som ibland är inkompatibla med kundens verksamhet, kostar mycket pengar och stjäl tid – och ofta också låser in kunden. Det är nog därför Excel används överallt. Det är snabbt, enkelt och pratar användarens språk. \r\n Det behövs kloka råd i denna djungel. Ett bra sätt att inleda ett samarbete är att snabbt bygga ett enkelt kostnadskontroll-system utifrån kundens behov. Då får alla se att det finns fördelar utan att de känner att de blir inlåsta, tappar kontroll och slösar tid.",
- "created_at": {
- "$date": 1391582433000
- },
- "day": 4,
- "image_url": "http://athega.se/images/employees/mark/medium.jpg",
- "last_updated_by": "mats",
- "month": 2,
- "published_at": {
- "$date": 1391468400000
- },
- "slug": "2014/02/04/ledningssystemsomfungerar",
- "summary": "Det går att undvika fällorna när du bygger beslutstödssystem.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Så bygger du ledningssystem som fungerar",
- "updated_at": {
- "$date": 1391613735000
- },
- "year": 2014
- },
- {
- "_id": {
- "$oid": "533ea0f21543a4046a000002"
- },
- "content": "##\"Vi releasar nytt dygnet runt. Som att bypass-operera ett nyhetsankare under sändning.\"\r\n\r\n**Aftonbladet är ohotad etta igen. Internetworld säger att det är en ynnest att ha Aftonbladet i landet. Vår konsult [Christian Lizell](/chrille) vet hur sajten håller sig kvar på toppen.**\r\n\r\n_Aftonbladet blev Sveriges bästa sajt igen. Hur behåller man greppet om läsarna?_\r\n\r\n– Genom att aldrig vila. Alla har en stark tro på sig själva och är ständigt på jakt efter nya idéer, funktioner och lösningar. De är inte rädda att prova nya grepp och har lätt för att göra sig av med det som inte fungerar. Ibland driftsätter vi nya funktioner flera gånger om dagen.\r\n\r\n\r\n_Vår konsult Christian Lizell ingår i Aftonbladets team och gillar pulsen och ambitionen på landets bästa sajt._\r\n\r\n_Hur testas nya funktioner utan risk?_\r\n\r\n– Det är aldrig helt riskfritt. Men det går att minimera följderna av att något eventuellt går sönder. Innan ny funktionalitet tas i drift granskas och testas allt, både i teori och praktik. Kodgranskning sker med en Pull Request. Det är en förfrågan om att lyfta in ny funktionalitet där varenda förändring visas tydligt i ett grafiskt gränssnitt. Utvecklarna kan direkt testa, kommentera och diskutera förändringen. \r\n Förbättringar görs direkt i en gren av huvudkoden och resultatet kan sedan lyftas in i huvudkoden för att driftsättas. Det innebär att det som ligger i huvudkoden alltid är redo att driftsättas. Det gör stor skillnad.\r\n\r\n_Arbetar Aftonbladet annorlunda än andra stora sajter?_\r\n\r\n– Alla sajter jobbar naturligtvis på sitt sätt, men jag tror att Aftonbladet har en klok strategi för hur nya funktioner tas i drift, stora som små. Det kan handla om att byta ut hela systemet, inklusive infrastruktur och kringsystem eller något så enkelt som att lägga ut en ny logga på en undersajt. Målet är att läsaren aldrig ska påverkas och helst inte ens märka att något skett. Det finns exempel på sajter som stänger ner ett dygn eller ett par timmar för \"uppgradering\". Det finns också exempel på driftsättning av nya funktioner som lett till att sajter gått ner och att man tvingats rulla tillbaka till en gammal version. Båda dessa exempel är naturligtvis negativa för besökarna. \r\n Aftonbladet jobbar med Feature Toggles. Det är ett sätt att driftsätta ny funktionalitet utan att den omedelbart kommer i drift. Se det som en spak som slår av och på funktionaliteten som då kan testas i lugn och ro på en mindre trafikerad del av sajten. Går allt bra provar man över hela sajten. Skulle det ändå bli problem är det lätt att stänga av funktionaliteten genom att dra i spaken. Ingen kod behöver rullas tillbaka. \r\n Detta är ofta applicerbart även på större systemförändringar. Ny hårdvara eller nya lösningar kan testas på delar av infrastrukturen. Det kräver mer förarbete och planering men är väl investerad tid. Det är lite som att bypass-operera ett nyhetsankare under sändning.\r\n\r\n_Hur har man organiserat arbetet?_\r\n\r\n– Aftonbladets IT-avdelning är uppdelad i team som jobbar i Scrumliknande upplägg. Vissa team kör Kanban, men alla har en PO, Product Owner. Beställningar hanteras i backlogs som prioriteras av produktägaren. Ny funktionalitet läggs ut genom ett release pipeline/release-flöde så snart behovet finns. Ibland flera gånger per dag. Det finns ett Core-team som hanterar driftsättningar av sajten. Teamet håller också koll på systemen och att allt ser normalt ut före och efter en driftsättning. En beskrivning av hur det går till skulle lätt fylla upp ett helt eget blogginlägg.",
- "created_at": {
- "$date": 1396613362000
- },
- "day": 4,
- "image_url": "http://athega.se/images/employees/chrille/medium.jpg",
- "last_updated_by": "chrille",
- "month": 4,
- "published_at": {
- "$date": 1396562400000
- },
- "slug": "2014/04/04/aftonbladet-releasar-nytt-dygnet-runt",
- "summary": "Aftonbladet är ohotad etta igen. Vår konsult Christian Lizell vet hur sajten håller sig kvar på toppen.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Därför är Aftonbladet ohotat i toppen",
- "updated_at": {
- "$date": 1396619140000
- },
- "year": 2014
- },
- {
- "_id": {
- "$oid": "5364ec5f1543a4494a000002"
- },
- "content": "Jag fick upp ögonen för Go under Øredev 2012 då [Andrew Gerrand](https://twitter.com/enneff)\r\nhöll presentationen [Go: a simple programming environment](http://talks.golang.org/2012/simple.slide),\r\noch jag har sedan dess kodat Go på kvällar och helger.\r\n\r\nFramöver skulle jag gärna jobba med kundprojekt där Go används som komplement till Ruby.\r\n\r\nI slutet av april åkte jag till Denver för [GopherCon](http://gophercon.com/),\r\nden första konferensen helt fokuserad på programmeringsspråket [Go](http://golang.org/).\r\nMed sina 700 deltagare var detta den största single-track konferens jag\r\ndeltagit i, och jag måste säga att jag blev imponerad av arrangemanget.\r\n\r\nKonferensen [inleddes](http://talks.golang.org/2014/hellogophers.slide) av\r\nlegenden [Rob Pike](https://twitter.com/rob_pike) och efterföljdes sedan\r\nav en strid ström av riktigt bra presentationer.\r\n\r\n**Några exempel:**\r\n\r\n - [Bluetooth Low Energy and Embedded Go](http://go-talks.appspot.com/github.com/gophercon/2014-talks/offbymany/ble_embedded.slide)\r\n - [Best Practices for Production Environments](https://cdn.rawgit.com/gophercon/2014-talks/master/best-practices-for-production-environments.pdf)\r\n - [High Performance Systems in Go](https://cdn.rawgit.com/gophercon/2014-talks/master/derekcollison/HighPerformanceSystemsInGo.pdf)\r\n\r\nArrangörerna av konferensen samlar ihop alla presentationer i ett\r\n[repo på GitHub](https://github.com/gophercon/2014-talks), senare\r\nkommer det även dyka upp videos.\r\n\r\n/ [Peter](/peter)\r\n\r\n",
- "created_at": {
- "$date": 1399123039000
- },
- "day": 2,
- "image_url": "http://old.athega.se/system/uploads/2014/05/gophers-bw.jpg",
- "last_updated_by": "mats",
- "month": 5,
- "published_at": {
- "$date": 1398981600000
- },
- "slug": "2014/05/02/gophercon-2014",
- "summary": "I slutet av april åkte jag till Denver för [GopherCon](http://gophercon.com/),\r\nden första konferensen helt fokuserad på programmeringsspråket [Go](http://golang.org/).",
- "tags_array": [
- "konferens",
- "golang"
- ],
- "title": "GopherCon 2014",
- "updated_at": {
- "$date": 1399128464000
- },
- "year": 2014
- },
- {
- "_id": {
- "$oid": "53f740c71543a47d1f000002"
- },
- "content": "##Aftonbladets Viktklubb pressas av konkurrensen. Nu måste försäljningen öka.\"\r\n\r\n**[Lark Davis](/lark) berättar om nya optimeringsverktyg för näthandel.**\r\n\r\n_Lark, hur ska ni göra för att öka Viktklubbs försäljning?_\r\n\r\n– Viktklubb startade 2003 och var först med viktminskning på nätet. 500 000 medlemmar har sedan dess gått ner i vikt med individuellt anpassade program. Idag dyker det upp nya aktörer med liknande erbjudanden. Vi måste helt enkelt tänka nytt för att få fler som besöker Viktklubb att också bli medlemmar.\r\n\r\nI grunden handlar det om att göra hela sajten mer inbjudande. Eftersom det är jag som ansvarar för front-end utvecklingen är det mitt ansvar att fintrimma alla gränssnitt och framför allt startsidan så att den verkligen säljer.\r\n\r\n\r\n_Athegakonsulten Lark Davis hjälper Viktklubb att öka försäljningen med optimeringsverktyg för näthandel._\r\n\r\n_Hur testar man om en sida säljer?_\r\n\r\n– För några veckor sedan lanserade Viktklubb en ny sajt som vi kan arbeta med på ett nytt sätt. Ett viktigt verktyg i det arbetet är [Optimizely](https://www.optimizely.com/), en nättjänst som används för så kallad A/B-testning. Istället för att gissa hur en sida ska se ut väljer man ut några av sina bästa förslag och testar dem mot varandra i den dagliga driften. Det förslag som ger bäst resultat vinner och testas därefter mot en förfinad variant. Och så fortsätter man tills man har hittat den version som ger maximal säljeffekt.\r\n\r\n_Exakt vad kan du testa?_\r\n\r\n– Med Optimizely kan jag testa budskap, bilder, färgsättning och grafisk formgivning. Men jag vet inte vad besökarna gör på sajten. För att ta reda på det använder jag webbstatistikverktygen Mixpanel och SiteCatalyst. \r\n Var kommer besökarna ifrån? Vad klickar de på? Hur länge stannar de? Var lämnar de sajten? Alla såna frågor går det att få svar på.\r\n\r\n_Vad är dina erfarenheter hittills?_\r\n\r\n– De nya optimerings- och webbstatistikprogrammen är supereffektiva och representerar framtiden för all typ av näthandel. Att inte använda dem är detsamma som att skänka bort marknadsandelar.\r\n\r\n_Lark Davis, \r\nfront-end utvecklare på Athega_",
- "created_at": {
- "$date": 1408712903000
- },
- "day": 25,
- "image_url": "http://athega.se/images/employees/lark/medium.jpg",
- "last_updated_by": "chrille",
- "month": 6,
- "published_at": {
- "$date": 1403647200000
- },
- "slug": "2014/06/25/viktklubb-fintrimmar-sin-hemsida",
- "summary": "Viktklubb pressas av konkurrensen. Nu måste försäljningen öka. Lark Davis berättar om nya optimeringsverktyg för näthandel.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Så ska Viktklubb fintrimma sin hemsida för att vinna slaget om bantarna",
- "updated_at": {
- "$date": 1410524003000
- },
- "year": 2014
- },
- {
- "_id": {
- "$oid": "543f8b171543a445e2000025"
- },
- "content": "##Nu kommer Go. Programspråket som är skapat för att bygga webbtjänster.\r\n\r\n**Lägg Go på minnet. Det är ett nytt, öppet programspråk utvecklat av Google som växer lavinartat. [Peter Hellberg](/peter) på Athega förklarar varför. **\r\n\r\n_Peter, hur många programspråk behöver vi egentligen?_\r\n\r\n– Man måste komma ihåg att varje programspråk är ett barn av sin tid. De aktuella behoven styr språkutvecklingen. Idag har webbtjänster och multi-processing stort fokus. Och här är Go supereffektivt. \r\n\r\n\r\n_Använd Go om du vill bygga snabba webbapplikationer, säger Peter Hellberg, systemarkitekt på Athega._\r\n\r\n_Hur länge har Go funnits?_\r\n\r\n– Den första stabila releasen släpptes 2012. Men grundidéerna till språket härrör från en matematisk teori, Communicating Sequential Processes (CSP), som presenterades redan 1978.\r\nGo är ursprungligen utvecklat av Google för att bygga Google-tjänster. Upphovsmännen är bland annat legendarerna Rob Pike och Ken Thompson från Bell Labs. Men idag sker mycket av utvecklingsarbetet utanför Google.\r\n\r\n_När ska man använda Go?_\r\n\r\n– I webbapplikationer som saknar grafiskt gränssnitt och samtidigt måste fungera med ett mycket stort antal klienter passar Go perfekt. Ett bra exempel är en Go-applikation som gör att en miljon klienter samtidigt kan spela upp ett videoklipp på Youtube.\r\nGo passar däremot inte alls för desktop-applikationer och inte heller för mobilappar.\r\nFör oss som jobbar som utvecklare har Go en stor fördel. Kompilatorn är otroligt snabb. Ett skäl till att Google behövde ett nytt programspråk var faktiskt att det tog 40 minuter att kompilera deras största system i C++. Nu när det är skrivet i Go tar kompileringen någon minut. \r\n\r\n_Hur tror du att framtiden blir för Go?_\r\n\r\n– Eftersom jag är involverad i Go-communityn här i Stockholm blir mitt självklara svar: lysande! De delar i ett system som behöver höga prestanda borde alltid skrivas i Go. Då gör det inget att andra delar, t ex skrivna i Ruby eller Pyton, är lite långsamma. Själv jobbar jag fortfarande mest i Ruby, men Go upptar alltmer av min tid. Go kommer framför allt att växa på bekostnad av Java och C#, som jag ser det.\r\n Att det internationella intresset för Go är stort märktes tydligt på den första Go-konferensen i Colorado i våras. Vi var 700 deltagare på plats, vilket är mycket bra för ett språk som bara har två år på nacken. \r\n\r\n_Peter Hellberg, \r\nSystemarkitekt på Athega_",
- "created_at": {
- "$date": 1413450519000
- },
- "day": 26,
- "image_url": "http://athega.se/images/employees/peter/medium.jpg",
- "last_updated_by": "peter",
- "month": 9,
- "published_at": {
- "$date": 1411682400000
- },
- "slug": "2014/09/26/GO-kommer-revolutionera-webben",
- "summary": "Nu kommer Go. Programspråket som är skapat för att bygga webbtjänster.",
- "tags_array": [
- "nyhetsbrev",
- "golang"
- ],
- "title": "Språket som kommer att revolutionera webben",
- "updated_at": {
- "$date": 1414346707000
- },
- "year": 2014
- },
- {
- "_id": {
- "$oid": "5442612a1543a4387c000003"
- },
- "content": "Årets Codebase hade sin bas på Sandhamns Seglarhotell och ägde rum något tidigare på hösten än förra året. Valet av en lite mer civilicerad plats med mildare väder kompenserades med en rejäl expedition i ytterskärgården. På eftermiddagen mot skymningen gav vi oss i väg mot Lilla Nassa för fika, över Rödkobsfjärden och genom de östra kobbarna av Storö-Bockö-Lökaö naturreservat. \r\nSedan vidare mot fyrvisning på Grönskär via Björkskärs skärgård. Trots god utsikt från fyren kan vi inte rapportera om några främmande undervattensfarkoster. Väl tillbaka till Sandhamn innan solen gått ned. \r\n\r\n\r\n\r\nÅrets projekt\r\n=============\r\nMånga valde att använda [Tessel](https://tessel.io/) som vi införskaffat till årets Codebase. Tessel är kortfattat en microcontroller som kör Javascript och är kompatibel med Node.js. Den går att bygga på med olika moduler med sensorer. \r\n\r\n### Lars\r\n**Tessel Drink-mixer**\r\n- Moduler: Servo, Climate, BLE\r\n- Magneter, häftmassa och glas\r\n- När klimat modul känner av värme från tummen så aktiveras servo och efter 10s så skickas ett - iBeacon advertisement att det är klart\r\n- Servo har 4 magneter och vid rotation så snurrar ytterligare magneter i glaset\r\n\r\n\r\n\r\n**Tessel Musik-spelare**\r\n- Moduler: Audio\r\n- Tiny-router och nodejs-websocket\r\n- Web-sida på tessel med spelarkontroller\r\n\r\n\r\n### Mark\r\nPROGRAMABLE EXTENDED NUMBERS FOR RUBY\r\nM500 is designed to be easy to use\r\n\r\ninput is in the form of text strings [called Strings in Ruby]. That is\r\nany number in quotation marks a\r\ni.e. \"22\" [is a valid input to M500] otherwise 22 [no quotations] talks\r\nto Ruby's internal number representation system.\r\n\r\n\"22\" is a class called a String, this can be check by typing the Ruby\r\ncommand puts \"22\".class and on return gives 'String'\r\nbtw, the command above will be shortened to:\r\n\r\nputs \"22\".class >> String [where >> means what\r\nfollows is the return after Ruby has interpreted the first part]\r\ni.e. \"command to Ruby\" >> \"output from Ruby\"",
- "created_at": {
- "$date": 1413636394000
- },
- "day": 19,
- "image_url": "",
- "last_updated_by": "tobbe",
- "month": 10,
- "published_at": {
- "$date": 1413669600000
- },
- "slug": "2014/10/19/abc14",
- "summary": "",
- "tags_array": [],
- "title": "Athega Code Base 2014",
- "updated_at": {
- "$date": 1415190433000
- },
- "year": 2014
- },
- {
- "_id": {
- "$oid": "544d34f41543a418b4000002"
- },
- "tags_array": [
- "konferens",
- "golang"
- ],
- "slug": "2014/10/26/dotgo-2014",
- "title": "dotGo 2014",
- "content": "För några veckor sedan åkte jag på konferensen [dotGo](http://dotgo.eu/) i Paris. Som namnet antyder handlade den främst om programmeringsspråket [Go](http://golang.org/).\r\n\r\n[](https://www.flickr.com/photos/97226415@N08/14967819074/in/set-72157648881665562/)\r\n\r\nKonferensen hölls i [Théâtre des Variétés](http://www.theatre-des-varietes.fr/) på Boulevard Montmartre.\r\n\r\n## Livebloggade presentationer\r\n\r\n[Quinn](https://twitter.com/sqs) från [Sourcegraph](https://sourcegraph.com/) ansvarade för att liveblogga under konferensen, vilket var bra då det inte fanns något trådlöst nätverk i teatersalongen.\r\n\r\n- [Five things I love about Go](http://dotgo.sourcegraph.com/post/99633201353/andrew-gerrand-five-things-i-love-about-go)\r\n- [Building better Go packages](http://dotgo.sourcegraph.com/post/99633863568/jeremy-saenz-building-better-go-packages)\r\n- [Go dependency management](http://dotgo.sourcegraph.com/post/99634381373/keith-rarick-go-dependency-management-vendoring-and)\r\n- [Designing successful web app load tests](http://dotgo.sourcegraph.com/post/99636152128/tomas-senart-designing-successful-web-app-load-tests)\r\n- [Lessons learned from worldwide Go evangelism](http://dotgo.sourcegraph.com/post/99636860568/francesc-campoy-flores-lessons-learned-from-worldwide)\r\n- [“I came for the easy concurrency; I stayed for the easy composition”](http://dotgo.sourcegraph.com/post/99637441333/john-graham-cumming-i-came-for-the-easy-concurrency)\r\n- [Functional Options](http://dotgo.sourcegraph.com/post/99643162983/dave-cheney-functional-options)\r\n- [Early Go mistakes, dependency usage](http://dotgo.sourcegraph.com/post/99644344808/blake-mizerany-early-go-mistakes-dependency-usage)\r\n- [GoDrone](http://dotgo.sourcegraph.com/post/99648928628/felix-geisendorfer-godrone)\r\n- [Go team Q&A: dependency management, language design, Android, goroutines](http://dotgo.sourcegraph.com/post/99652344343/go-team-q-a-dependency-management-language-design)\r\n- [The future of the Go programming language (1.4, 1.5, & 2.0)](http://dotgo.sourcegraph.com/post/99652962343/brad-fitzpatrick-on-the-future-of-the-go-programming)\r\n\r\n## Reflektioner\r\n\r\nJag hade sett fram mot att höra [Daves](https://twitter.com/davecheney) åsikter om hur man kan använda `variadic function arguments` för att snygga till ett publikt gränssnitt och hans presentation gick helt i linje med vad jag funderat på tidigare.\r\n\r\nDet var även intressant hur presentatörerna gång på gång pratade om vikten av att använda *små* interfaces när man skriver kod som ska gå att återanvända.\r\n\r\n[](https://www.flickr.com/photos/97226415@N08/14965883074/in/set-72157648881665562)\r\n\r\nKonferensen avslutades med några öl och fortsatta diskussioner om Go på baren [French Beer Factory](http://www.frenchbeerfactory.fr/).\r\n\r\n## Workshop\r\n\r\nDagen efter konferensen hölls det några olika workshops och jag deltog i [Whispering Gophers:\r\nNetwork programming in Go](http://whispering-gophers.appspot.com/talk.slide#1) ledd av [Francesc Campoy](https://twitter.com/francesc). Det var riktigt trevligt att spendera några timmar tillsammans med andra gophers med varierande mängd erfarenhet av språket.\r\n\r\n/ [Peter](/peter)",
- "published_at": {
- "$date": 1414274400000
- },
- "last_updated_by": "peter",
- "summary": null,
- "image_url": null,
- "year": 2014,
- "month": 10,
- "day": 26,
- "updated_at": {
- "$date": 1414345972000
- },
- "created_at": {
- "$date": 1414345972000
- }
- },
- {
- "_id": {
- "$oid": "545cd2381543a4383f000003"
- },
- "content": "I dagarna annonserades [Nordic.js](http://nordicjs.com/) 2015, men frågan är om det blir ett till Nordic.js.\r\n\r\nDet har nu gått några veckor sedan jag besökte årets upplaga av Nordic.js, en ny konferens som enligt skaparna skulle vara ”all about Javascript”. Problemet var bara att, det var den inte. Ganska litet faktiskt, till och med. Ändå var det en bra konferens, någonstans. Jag vill egentligen inte skriva det, men kan inte komma ifrån att jag nog tycker det ändå.\r\n\r\n \r\n\r\nKonferensen inleds på kajen i Slussen i årets kanske tätaste dimma och vi kliver ombord på båten för att äta frukost medan vi transporteras ut till ett fantastiskt ställe, [Artipelag](http://www.artipelag.se/). Vi kliver av i ett hav av såpbubblor och tar oss upp till scenen, byggd i trä, som ett stormande hav. Jag tror den starten är svårslagen.\r\n\r\nLuncherna är fantastiska, kaffet är gott, festen grym, men formatet på själva konferensen är på tok för långsamt. Ett spår, 30 minuter prat och 30 minuter paus. Med några få undantag är nivån på innehållet som talarna framför alldeles för grund och som inledningsvis redan avhandlats, inte ”all about Javascript”.\r\n\r\n## Undantagen som jag tar med mig\r\n- [Robert Nyman](http://nordicjs.com/speakers#7-Robert-Nyman) som presenterar dev tools i Firefox (min favoritwebbläsare).\r\n- [Douglas Crockford](http://nordicjs.com/speakers#2-Douglas-Crockford) som pratar vidare om does and dont's i Javascript och framför allt varför.\r\n- [Hakim el Hattab](http://nordicjs.com/speakers#14-Hakim-El Hattab) som visar en del fantastiska visuella experiment och som är mannen bakom [slides.com](http://slides.com), som jag numera använder med glädje.\r\n\r\nSå frågan är alltså, kör vi igen nästa år? – Jag tror det!\r\n\r\n/ [Christian](/chrille)",
- "created_at": {
- "$date": 1415369272000
- },
- "day": 7,
- "image_url": "",
- "last_updated_by": "chrille",
- "month": 11,
- "published_at": {
- "$date": 1415314800000
- },
- "slug": "2014/11/07/blir_det_ett_till_nordicjs",
- "summary": "",
- "tags_array": [
- "konferens javascript"
- ],
- "title": "Blir det ett till Nordic.js?",
- "updated_at": {
- "$date": 1415550872000
- },
- "year": 2014
- },
- {
- "_id": {
- "$oid": "54f81cd91543a45c8f00002f"
- },
- "content": "UR:s recept för webbutveckling: täta användartester och öppen källkod.\r\n----------------------------------------------------------------------\r\n> UR har ett unikt public service-uppdrag: att producera och sprida utbildningsprogram. Vi fick en pratstund med webbutvecklingschefen Susanne Samaras.\r\n\r\n###### Susanne, vilka skolformer riktar ni er till?\r\nAlla, vårt uppdrag omfattar all form av organiserad utbildning på alla nivåer. Webbtjänsterna UR.se och UR Play är våra huvudkanaler och flaggskepp. UR Play vänder sig till den kunskapstörstande allmänheten, medan UR.se är riktad mot lärare och pedagoger. I höstas lanserade vi en ny version av UR.se.\r\n\r\n\r\n\r\n> UR finns även på Twitter, Instagram, Youtube, Facebook och ett antal satellitsajter. Allt måste samspela med våra huvudkanaler UR.se och UR Play, säger Susanne Samaras.\r\n\r\n###### Hur många besökare har UR.se?\r\n– Under terminerna varierar det mellan 160 000 och 180 000 besökare i veckan. Hit söker sig lärare för att få stöd, handledning och inspiration i sin undervisning. På UR.se finns över 12 000 program, så det finns mycket att välja på.\r\n\r\n###### Hur vet ni vad lärare behöver?\r\n– All vår utveckling är användardriven. Vi bjuder alltid in lärare och elever till fokusgrupper och användartester för att se till att vi ligger rätt när det gäller funktionalitet och design. Sen är förstås själva programmen på webbplatsen ofta framtagna i samarbete med pedagoger och utgår från behovsanalyser. Vi följer naturligtvis också upp i form av besöksstatistik och andra typer av mer kvalitativa mätningar.\r\n\r\n###### Hur mycket betyder designen i förhållande till funktionen?\r\n– Designen är mycket viktig. Hur den är utformad bestämmer det intuitiva intrycket av sajten, det vill säga om man upplever den som lättillgänglig eller inte. Dessutom ska ju designen stärka varumärket UR.\r\n\r\n###### Vilka webbutvecklingsverktyg använder ni?\r\n– Vi köper inte in stora licensbaserade CMS-system. Flexibilitet är viktigt för oss. Därför föredrar vi öppen källkod. UR.se utnyttjar ett CMS med öppen källkod och den nya playtjänsten bygger vi främst i Ruby on Rails.\r\n\r\n###### Vad jobbar ni med nu?\r\n– Årets stora satsning är att utveckla en ny playtjänst med förbättrad navigering och möjlighet för användarna att vara med och generera innehåll på sajten. Vi gör också en satsning mot förskolan. Där använder man sig mycket av surfplattor. Det måste vi ta extra hänsyn till både när det gäller funktion och innehåll.",
- "created_at": {
- "$date": 1425546457000
- },
- "day": 5,
- "image_url": "/system/uploads/2015/03/susanne_samaras_bw.png",
- "last_updated_by": "peter",
- "month": 3,
- "published_at": {
- "$date": 1425510000000
- },
- "slug": "2015/03/05/UR-recept",
- "summary": "UR har ett unikt public service-uppdrag: att producera och sprida utbildningsprogram. Vi fick en pratstund med webbutvecklingschefen Susanne Samaras.",
- "tags_array": [
- "ur",
- "nyhetsbrev"
- ],
- "title": "180 000 lärare surfar på jobbet",
- "updated_at": {
- "$date": 1478604750000
- },
- "year": 2015
- },
- {
- "_id": {
- "$oid": "552cd01b1543a40b02000018"
- },
- "content": "I huvudet på en datascientist. Möt matematikern som vaskar guld i databaser.\r\n============================================================================\r\n> På nätet lämnar vi spår efter oss som lagras i databaser. I dessa finns värdefull dold kunskap som kan användas för att optimera webbsidor. Mark Ingram berättar om sitt jobb.\r\n\r\nMark, titeln datascientist förekommer allt oftare. Vad gör en sådan egentligen?\r\n– Det finns flera svar. Jag ser det som en person som med matematikens hjälp kan göra analyser av stora datamängder och hitta dolda mönster. ”Data mining” är ett annat begrepp som ofta förekommer i det här sammanhanget. Det är inte så dumt. Jag ser mig gärna som en guldgrävare som vaskar guld i databaser.\r\n\r\n\r\n> – Jag kan enkelt ta reda på om en sajt fungerar bra eller dåligt mot sin tänkta målgrupp, säger Mark Ingram, datascientist på Athega.\r\n\r\n###### Vad har du för utbildning?\r\n– Jag är matematiker från början, och är även utbildad i datalogi. Tidigare jobbade jag mest med finans och assets; applikationer, servrar, tjänsteavtal, licenser etc. Här på Athega jobbar vi mest med webblösningar. Att utnyttja ”datascience” inom detta område är helt nytt. \r\n Hur vet man till exempel att en webbsida ger bra resultat? Och om den inte gör det, vad är skälet till det? Det är mitt jobb att besvara sådana frågor.\r\n\r\n###### Hur gör man det i praktiken?\r\n– Många webbsidor samlar in data om sina besökare med Elasticsearch. Det är ett verktyg som gränsar till artificiell intelligens och gör det möjligt att analysera besökarnas beteenden. Alla lämnar vi ju spår efter oss på nätet som ger ledtrådar. Idag går det att få fram psykologiska och sociologiska samband ur det insamlade materialet. \r\n Jag kan ganska enkelt räkna ut vilka demografiska grupper (ålder, kön, utbildning, inkomst etc.) som besöker en webbsida och var de befinner sig geografiskt. Med hjälp av A/B-tester och matematisk statistik går det också att se hur bra en sajt fungerar beroende på vilka budskap, färger och bilder som används.\r\n\r\n###### Har du några tekniska hjälpmedel?\r\n– Jag gillar Apache Mahout. Det är ett matematikpaket i öppen källkod. Programmeringsverktyget Pig är också intressant. Det hanteras med ett eget språk: Pig-Latin. Ett bra statistikpaket är R. \r\n\r\nMen jag vill understryka en sak. Man kan aldrig slumpmässigt börja analysera en stor datamängd och plötsligt se en sanning i den. Först måste alltid en fråga ställas. Den kan sedan omvandlas till en hypotes och testas med matematiska metoder. Fråga - hypotes - test, det är så man måste jobba.\r\n\r\n###### Finns det någon fråga som är central för alla företag?\r\n– Företagens webbar är idag spjutspetsen i marknadskommunikationen. Därför borde alla företag ställa sig frågan: pratar vår sajt till rätt målgrupp på rätt sätt? En sådan matematisk check kan jag göra på nolltid. Jag utmanar alla som vill veta sanningen att våga ställa den frågan till mig.",
- "created_at": {
- "$date": 1429000219000
- },
- "day": 15,
- "image_url": "",
- "last_updated_by": "tobbe",
- "month": 4,
- "published_at": {
- "$date": 1586901600000
- },
- "slug": "2020/04/15/datascientist",
- "summary": "",
- "tags_array": [],
- "title": "Matematikern som vaskar guld i databaser",
- "updated_at": {
- "$date": 1429190585000
- },
- "year": 2020
- },
- {
- "_id": {
- "$oid": "552cd0771543a40b02000019"
- },
- "content": "### I huvudet på en datascientist. Möt matematikern som vaskar guld i databaser.\r\n\r\n> På nätet lämnar vi spår efter oss som lagras i databaser. I dessa finns värdefull dold kunskap som kan användas för att optimera webbsidor. Mark Ingram berättar om sitt jobb.\r\n\r\n##### Mark, titeln datascientist förekommer allt oftare. Vad gör en sådan egentligen?\r\n– Det finns flera svar. Jag ser det som en person som med matematikens hjälp kan göra analyser av stora datamängder och hitta dolda mönster. ”Data mining” är ett annat begrepp som ofta förekommer i det här sammanhanget. Det är inte så dumt. Jag ser mig gärna som en guldgrävare som vaskar guld i databaser.\r\n\r\n\r\n> – Jag kan enkelt ta reda på om en sajt fungerar bra eller dåligt mot sin tänkta målgrupp, säger Mark Ingram, datascientist på Athega.\r\n\r\n##### Vad har du för utbildning?\r\n– Jag är matematiker från början, och är även utbildad i datalogi. Tidigare jobbade jag mest med finans och assets; applikationer, servrar, tjänsteavtal, licenser etc. Här på Athega jobbar vi mest med webblösningar. Att utnyttja ”datascience” inom detta område är helt nytt. \r\n Hur vet man till exempel att en webbsida ger bra resultat? Och om den inte gör det, vad är skälet till det? Det är mitt jobb att besvara sådana frågor.\r\n\r\n##### Hur gör man det i praktiken?\r\n– Många webbsidor samlar in data om sina besökare med Elasticsearch. Det är ett verktyg som gränsar till artificiell intelligens och gör det möjligt att analysera besökarnas beteenden. Alla lämnar vi ju spår efter oss på nätet som ger ledtrådar. Idag går det att få fram psykologiska och sociologiska samband ur det insamlade materialet. \r\n Jag kan ganska enkelt räkna ut vilka demografiska grupper (ålder, kön, utbildning, inkomst etc.) som besöker en webbsida och var de befinner sig geografiskt. Med hjälp av A/B-tester och matematisk statistik går det också att se hur bra en sajt fungerar beroende på vilka budskap, färger och bilder som används.\r\n\r\n##### Har du några tekniska hjälpmedel?\r\n– Jag gillar Apache Mahout. Det är ett matematikpaket i öppen källkod. Programmeringsverktyget Pig är också intressant. Det hanteras med ett eget språk: Pig-Latin. Ett bra statistikpaket är R. \r\n\r\nMen jag vill understryka en sak. Man kan aldrig slumpmässigt börja analysera en stor datamängd och plötsligt se en sanning i den. Först måste alltid en fråga ställas. Den kan sedan omvandlas till en hypotes och testas med matematiska metoder. Fråga - hypotes - test, det är så man måste jobba.\r\n\r\n##### Finns det någon fråga som är central för alla företag?\r\n– Företagens webbar är idag spjutspetsen i marknadskommunikationen. Därför borde alla företag ställa sig frågan: pratar vår sajt till rätt målgrupp på rätt sätt? En sådan matematisk check kan jag göra på nolltid. Jag utmanar alla som vill veta sanningen att våga ställa den frågan till mig.",
- "created_at": {
- "$date": 1429000311000
- },
- "day": 14,
- "image_url": "/assets/legacy/uploads/2015/04/mark_small.jpg",
- "last_updated_by": "peter",
- "month": 4,
- "published_at": {
- "$date": 1428962400000
- },
- "slug": "2015/04/14/datascientist",
- "summary": "I huvudet på en datascientist. Möt matematikern som vaskar guld i databaser.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Matematikern som vaskar guld i databaser",
- "updated_at": {
- "$date": 1478604709000
- },
- "year": 2015
- },
- {
- "_id": {
- "$oid": "5590f1bd1543a4229f000002"
- },
- "content": "### Läs om hur hybridtänket tar apparna till nya höjder.\r\n\r\n> Nya Fotbollskanalen släpptes 4 juni. En grym app som byggdes \"by the book\". Lars Dahllöf satt i teamet på TV4 och gillade allt med det högambitiösa projektet.\r\n\r\n##### Kan man kalla nya Fotbollskanalen en appvideotidning?\r\n– Varför inte? Innehållet i appen byts ut hela tiden, och mycket av innehållet är videosnuttar. När redaktörerna skriver i sitt cms-system så kommer det dom ser på sin skärm se likadant ut i appen inom en timme. Allt ändras dessutom på alla plattformar samtidigt, iOS, Android och webb. Skulle vi göra en native app med samma funktionalitet skulle det ta flera timmar att få ut det i Google Play eller i en Android-app och en vecka i en iOS-app som ska upp på App Store. Så den är snabb som en tidning på webben, fast gjord som en app.\r\n\r\n\r\n\r\nAthega-konsulten Lars Dahllöf är Symbian-veteran från Sony Ericsson, men nu är det apputveckling som gäller: det är roligast.\r\n\r\n##### Hur gör man en riktigt bra app?\r\n– Ribban har helt klart höjts. Funktionerna måste utformas som användarna tänker. Allt måste fungera intuitivt. Interaktionsexperter och designers måste vara med. Färger, branding, flöden, typografi – allt måste stämma. Hög kodkvalitet är förstås superviktigt. Sen behöver man putsa, putsa, putsa.\r\n\r\n##### Du kallar appen en hybridapp, vad är det?\r\n-Det är ett samarbete mellan webb och app kan man säga. Innehållsstrukturen görs i html på en webbsida. När innehållet sen laddas i mobilen används en massa specialfix som gör att appen kan spela upp materialet på rätt sätt. Hybrid-appar är inget nytt, men nya Fotbollskanalen är en mycket ambitiös och snygg hybrid-app.\r\n\r\n##### Vad är nytt i nya Fotbollskanalen?\r\n– Allt. Logiken, funktionaliteten, innehållet, det grafiska utseendet. TV4 vill fortsätta vara ledande på grafik och funktionalitet i alla sina kanaler både på TV, webb och appar. \r\n Appen är byggd enligt modellen ”mobile first” – all design och struktur har skräddarsytts för mobilen och sen skalats upp för att fungera även på desktop. Det har varit ett stort projekt med användarstudier interaktionsdesigners, formgivare och utveckling. Utvecklingsteamet har bestått av fyra utvecklare med specialkunskaper inom Android, iOS, frontend och backend, samt produktägare och testare.\r\n\r\n##### Tänker du fortsätta med apputveckling?\r\n– Jag är gammal i gamet, utvecklade i Symbian på Sony Ericsson i många år. Har jobbat backend, varit arkitekt, kravställare och även chef. Med det jag tycker är kul är ju att programmera, speciellt appar. Appar är visuellt och lättjobbat, man har koll på allt och kan lösa allt själv. Bygga bra användargränssnitt är också väldigt kul.\r\n\r\n##### Tips till andra som vill göra bra appar?\r\n– Design och interaktion är viktigt. Använd rätt open source, speciellt på Android. Skriv robust och korrekt kod. Gör rätt från början. Sen är det viktigt att alla i teamet reviewar varandra hela tiden så att alla lär sig mer och utvecklas. Och ha kul förstås.\r\n\r\n##### Nå´t mer?\r\n– Japp, en grej som är skön numera är att det finns så mycket ny bra open source att använda. Det är smart att våga använda det senaste hela tiden, det lönar sig i längden.\r\n\r\n[http://www.fotbollskanalen.se...](http://www.fotbollskanalen.se)",
- "created_at": {
- "$date": 1435562429000
- },
- "day": 29,
- "image_url": "/assets/legacy/uploads/2015/06/larsdbw.jpg",
- "last_updated_by": "peter",
- "month": 6,
- "published_at": {
- "$date": 1435528800000
- },
- "slug": "2015/06/29/appvideotidningar",
- "summary": "Läs om hur hybridtänket tar apparna till nya höjder.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Nyhet! Appvideotidningar",
- "updated_at": {
- "$date": 1478604732000
- },
- "year": 2015
- },
- {
- "_id": {
- "$oid": "559ba6651543a45dab000002"
- },
- "content": "> Jag tänkte skriva lite om data-science, algoritmer, AI, neuronnät och tillämpningar en data scientist kan hjälpa till med. Jag har fått hjälp av våra duktiga data-scientists att sätta ihop detta. //Mats\r\n\r\n\r\n#### Generella lösningar kräver både domän- och data-science expertis\r\nMetoder och verktyg som används inom Data-science begränsas inte till specifika områden. Tekniken och algoritmerna är de samma oavsett om det är finansiellt data, besöksstatistik eller CRM-data på försäljning. \r\n\r\nDock kan det vara svårt är se möjligheterna utan att vara områdesöverskridande expert inom programmering, statistik, matematik och bransch/domän-expert. \r\n\r\nDet går att gruppera expertisen i två delar\r\n\r\n- Vi är experter på programmering, statistik och matematik. \r\n- Våra kunder är domänexperter på sitt data. \r\n\r\n\r\n#### Rollen data-scientist\r\n\r\nEn Data-scientist är en utbildad matematiker som är mycket kunnig i statistiska modeller och dataanalys. Självklart ska en data-scientist programmatiskt kunna modulera artificiella neuronnät och kluster samt veta vilka implementationer som ger bästa lösning. \r\n> På Athega är en Data-Scientist en senior utvecklare med högre akademisk examen i matematik och statistik.\r\n\r\n\r\n \r\n##### Vad levererar en data-scientist?\r\n\r\nDe lösningar som en data-scientist kan hjälpa er ta fram jobbar typiskt med stora datamängder(big data) och är effektiva verktyg för att upptäcka komplexa mönster som är svåra, omöjliga eller tidskrävande att identifiera med mer konventionella metoder. Systemen blir ofta en blackbox-lösning för att lösa ett väldigt specifikt problem. Systemen kan vara självlärande i mer eller mindre utsträckning och detta sker ofta på två olika sätt.\r\nÅterkoppling från användarna (supervised learning)\r\nAutomatisk anpassning till varierande data (unsupervised learning/outlier detection)\r\n\r\nNi får systemet modulerat, testat och byggt med er expertis på det data som ska behandlas. Detta inkluderar produktionssättning och förvaltningsetablerat på er IT-avdelning. Ni är inblandade som kravställare under hela arbetet. \r\n\r\n\r\n#### Exempel på användningsområden för finansiella institutioner\r\nFörsöker nedan beskriva olika tillämpningar som är mer eller mindre vedertagna.\r\n\r\n##### Bedrägerikontroll\r\n\r\nEn finansiell institution eller bank monitorerar både kunder och transaktioner för att fånga upp misstänkta bedrägerier tidigt. Att tidigt hitta kunder eller konton som uppförs sig ovanligt genom att använda ett poängsystem/risksystem ger företaget eller myndigheten möjlighet att minska den mängd data som behöver utredas manuellt. Resultatet blir ett indikations-system på potentiella problem. Poster med ovanliga uppföranden rankas en mycket högre risk att vara ett bedrägeri än de som uppför sig som förväntat. Till exempel kan det vara en ovanligt stor pengatransaktion. Det är alltså det avvikande beteendet som ger underlag för närmare utredning. Den närmare utredningen sker ofta manuellt.\r\n\r\n\r\n
\r\n
\r\n\r\nFör denna typ av lösningar finns en mängd verktyg tillgängliga. Alla har olika egenskaper och lämpar sig för olika problem och kravställningar. Bayesian (efter Thomas Bayes) neurala nätverk används bland annat för att fånga kreditkorts-bedrägerier.\r\n\r\nSom kravställare är ett samarbete med en data-scientist ett bra sätt att komma igång. Vi börjar med att definiera problemställningen och titta på det data som finns. Vi diskuterar hur en prototyp ska fungera. Viktigt är sedan att det finns lämpliga rapporter, GUI eller system för feedback som passar ert sätt att arbeta. Ibland är kanske en färdig programvara, som finns på marknaden, rätt val. Då hjälper våra data-scientists er att välja rätt.\r\n\r\n##### Kvalitetskontroll av affärskritiskt- och regulatoriskt data\r\n\r\nDet är både svårt och tidskrävande att avgöra om ursprungsdata från en stor mängd system är rätt. Aggregerade rapporter ska gå till myndigheter och andra kontrollinstanser. Tidsrymden mellan att data skapas i grundsystem till att data ska exponeras på aggregerad nivå krymper hela tiden i och med ökade krav från myndigheter. \r\n\r\nTraditionellt finns larmsystem på specifika delar i processen, leveranser som uteblir eller körningar som misslyckas. Denna övervakning kan vara byggd på hypoteser och specifika problem-fall där fel rapporterats tidigare. Till exempel kan en leverans övervakas genom att en kontroll sker om fil levererats i tid. Kontroll sker om filen går att validera osv.\r\n\r\n###### Data science och kvalitetsmonitorering\r\n\r\nAtt använda data science och algoritmer för kvalitetsmonitorering av denna typ av data är ett spännande område där helt andra och mer avancerad monitorering går att göra. Målet är att tidigt i data-leveransprocessen fånga avvikande och ovanliga värden för att sedan snabbt indikera för kvalitetsansvarig var det finns potentiella problem. \r\n\r\nDet går till exempel att låta ett neuron-nät “cruncha” data från transaktionsflöden, bokföringsrörelser, trades, manuella inmatningar, antal och typ av systemändringar från IT, rapporter av incidenter. Kort och gott allt man tror påverkar data-kvaliteten och som går att mäta.\r\n\r\nDessa system identifierar utan ansträngning komplexa mönster i enorma dataset och kan i och med detta, bottom-up, beskriva hur stor risken är att vissa siffror avviker och bör kontrolleras manuellt. Kombinationen av den mönsterletande algoritmen/neuro-nätverket och den seniora ekonomen med sin erfarenhet minskar arbetsbelastning och gör det möjligt att kontrollera och verifiera siffrorna snabbare.\r\n\r\nNär verksamhetsdata inkluderas, till exempel change requests och IT-incidenter, går det att empiriskt skapa argument för att driva IT-förändringar/förbättringar på lägre prioriterade system. \r\n\r\n\r\nVi är experter på programmering, statistik och matematik. Ni är domänexperter på ert data. Tillsammans kan vi skapa konkurrensfördelar genom områdesöverskridande samarbeten.\r\n
\r\n\r\n\r\n ",
- "created_at": {
- "$date": 1436264037000
- },
- "day": 7,
- "image_url": "/assets/legacy/uploads/2015/07/datascience.png",
- "last_updated_by": "peter",
- "month": 7,
- "published_at": {
- "$date": 1436220000000
- },
- "slug": "2015/07/07/datascience",
- "summary": "Data-science, algoritmer, AI, neuronnät och tillämpningar en data scientist kan hjälpa till med.",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Data Science och artificiella neuron-nät",
- "updated_at": {
- "$date": 1478602377000
- },
- "year": 2015
- },
- {
- "_id": {
- "$oid": "55a77d311543a40589000002"
- },
- "content": "#### Att testa en hypotes\r\n\r\n
\r\n
\r\nHypotesprövning innebär att vi först bestämmer oss för vad vi vill testa. Parametern kan vara antal besökare på en sida och hypotesen att en av två versioner av sidan attraherar besökaren mera. Dock vet vi inte vilken version. Tänk en försäljningssida där besökaren ska klicka på en köp-knapp. Hur ska den knappen och texten se ut för att generera mest försäljning? Vi kan testa två versioner av sidan och mäta försäljningen. Allmänt kallas detta A/B testning. Vi testar två olika fall för att se vilket som genererar högst värde av den parameter vi anser är viktig. Fördelningen eller antal procent som aktiveras kallas konverteringsgrad.\r\n\r\n> Att genomföra ett statistiskt tillförlitligt A/B test är inte alltid så lätt\r\n \r\n##### 1 - Bakgrundsdata\r\nFörst vill vi samla lite bakgrundsdata. Vad har vi för konverteringsgrad idag? Hur många som klickar på Köp genomför verkligen ett köp? Det är upp till var och en att förbereda sig med relevanta frågeställningar och data runt detta.\r\n\r\n##### 2 - Forma hypotesen\r\nDetta gäller för övervakade och kontrollerade A/B tester. Helt enkelt tester där vi själva bestämmer vår hypotes. ”Vi tror att en röd knapp ökar konverteringsgraden”.\r\n\r\n##### 3 - Designa experimentet\r\nRäkna ut hur länge vi behöver göra testet. Hur mycket data behöver vi för att kunna dra en tillförlitlig slutsats? Det finns kalkylatorer på nätet och olika tillverkare av programvaror för A/B testning har olika uppfattningar. För att bestämma detta krävs en del kunskap om statistik och kunskap om besökarnas mönster. Det går att med olika metoder komma fram till ett lämpligt underlag. Lägg gärna tid på att förstå detta. Det vore olyckligt om testet visar fel resultat pga för kort eller för lång testperiod. Se till att köra hela testet klart innan ni drar några slutsatser om signifikans. Att löpande köra ett A/B test på en sida och då och då titta efter signifikans ökar drastiskt risken för felaktiga slutsatser. Effekterna och hur svårt detta är kommer beskrivas senare i en separat bloggpost.\r\n\r\n##### 4 - Genomför experimentet\r\nSätt upp det innehåll ni vill prova, programmera eller lägg in de script som behövs. Om ni redan har programvaror för detta, starta helt enkelt testet.\r\n\r\n##### 5 - Analysera data\r\nPrecis som i punkt 3 är det viktigt att man vet vad man gör i detta moment. Statistik är inte helt intuitivt och det är lätt att misstolka data som verkar visa självklara slutsatser. Här kan en data-analytiker eller Data Scientist vara behjälplig med variationsanalys och analys av outliers som påverkar resultatet i olika riktningar. Det är sällan så lätt att det går att dra statistiskt säkerställda slutsatser från medelvärden.\r\n\r\n##### 6 - Slutsats\r\nKommunicera resultatet inklusive tillförlitligheten. Detta är ett svårt men väldigt viktigt moment. Alla inblandade och alla som berörs måste få ett underlag alla förstår. Speciellt tillförlitligheten är svår att kommunicera. Grafiska och visuella förklaringar är bra. En som är duktig på statistik och kan förklara resultatet och konfidensintervall behövs ofta för att inte resultatet ska misstolkas.\r\n \r\n\r\n\r\n#### Generella lösningar kräver både domän- och data-science expertis\r\nMetoder och verktyg som används inom Data-science begränsas inte till specifika områden. Tekniken och algoritmerna är de samma oavsett om det är finansiellt data, besöksstatistik eller CRM-data på försäljning. \r\n\r\n#### Rollen data-scientist\r\n\r\nEn Data-scientist är en utbildad matematiker som är mycket kunnig i statistiska modeller och dataanalys. Självklart ska en data-scientist programmatiskt kunna modulera artificiella neuronnät och kluster samt veta vilka implementationer som ger bästa lösning. \r\n> På Athega är en Data-Scientist en senior utvecklare med högre akademisk examen i matematik och statistik.\r\n\r\n\r\n\r\nLäs mer om Mark som vaskar guld i databaser
\r\n
\r\n \r\n \r\n
\r\n\r\n\r\nVi är experter på programmering, statistik och matematik. Ni är domänexperter på ert data. Tillsammans kan vi skapa konkurrensfördelar genom områdesöverskridande samarbeten.\r\n
",
- "created_at": {
- "$date": 1437039921000
- },
- "day": 16,
- "image_url": "/assets/legacy/uploads/2015/07/ab.png",
- "last_updated_by": "peter",
- "month": 7,
- "published_at": {
- "$date": 1436997600000
- },
- "slug": "2015/07/16/datascienceweb",
- "summary": "Vad ska vi tänka på när vi testar våra hypoteser och vill få ett tillförlitligt beslutsunderlag?",
- "tags_array": [
- "nyhetsbrev"
- ],
- "title": "Data Science A/B test",
- "updated_at": {
- "$date": 1478602334000
- },
- "year": 2015
- },
- {
- "_id": {
- "$oid": "55d39d3e1543a42d64000014"
- },
- "content": "Under det senaste året har jag nästan uteslutande kodat [Go](http://golang.org/) och det märks tydligt att fler och fler intresserar sig för språket.\r\n\r\nI början av Juli var jag för andra gången på [GopherCon](http://gophercon.com/) i Denver. I år hade konferensen vuxit till ~1500 deltagare och fått flytta några kvarter till [Colorado Convention Center](http://denverconvention.com/).\r\n\r\nMånga av talarna (och deltagarna) pratade om förbättringar och ändringar inför lanseringen av version **1.5**.\r\n\r\n## Presentationer\r\n\r\n### Dag 1\r\n\r\n - Go, Open Source, Community — Russ Cox ([video](https://www.youtube.com/watch?v=XvZOdpd_9tc)) ([text](http://blog.golang.org/open-source))\r\n - Go kit: A Standard Library for Distributed Programming — Peter Bourgon ([video](https://www.youtube.com/watch?v=1AjaZi4QuGo)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Go%20kit/go-kit.pdf)) \r\n - Delve Into Go — Derek Parker ([video](https://www.youtube.com/watch?v=InG72scKPd4)) ([slides](http://go-talks.appspot.com/github.com/derekparker/talks/gophercon-2015/delve-into-go.slide))\r\n - How a complete beginner learned Go as her first backend language in 5 weeks — Audrey Lim ([video](https://www.youtube.com/watch?v=fZh8uCInEfw)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Audrey%20Lim%20-%20How%20a%20Complete%20Beginner%20Picked%20Up%20Go%20as%20Her%20First%20Backend%20Language%20in%205%20weeks/audreylim_slides.pdf))\r\n - A Practical Guide to Preventing Deadlocks and Leaks in Go — Richard Fliam ([video](https://www.youtube.com/watch?v=3EW1hZ8DVyw))\r\n - Go GC: Solving the Latency Problem — Rick Hudson ([video](https://www.youtube.com/watch?v=aiv1JOfMjm0)) ([slides](http://talks.golang.org/2015/go-gc.pdf))\r\n - Simplicity and Go — Katherine Cox-Buday ([video](https://www.youtube.com/watch?v=S6mEo_FHZ5Y)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Katherine%20Cox-Buday:%20Simplicity%20%26%20Go/Simplicity%20%26%20Go.pdf))\r\n - Rebuilding Parse.com in Go - an opinionated rewrite — Abhishek Kona ([video](https://www.youtube.com/watch?v=_f9LS-OWfeA)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Abhishek%20Kona%20Rewriting%20Parse%20in%20GO/myslides.pdf))\r\n - Prometheus: Designing and Implementing a Modern Monitoring Solution in Go — Björn Rabenstein ([video](https://www.youtube.com/watch?v=1V7eJ0jN8-E)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Bj%C3%B6rn%20Rabenstein%20-%20Prometheus/slides.pdf))\r\n - What Could Go Wrong? — Kevin Cantwell ([video](https://www.youtube.com/watch?v=VC3QXZ-x5yI))\r\n - The Roots of Go — Baishampayan Ghose ([video](https://www.youtube.com/watch?v=0hPOopcJ8-E)) ([slides](https://speakerdeck.com/bg/the-roots-of-go))\r\n\r\n### Dag 2\r\n\r\n - The Evolution of Go — Robert Griesemer ([video](https://www.youtube.com/watch?v=0ReKdcpNyQg)) ([slides](http://talks.golang.org/2015/gophercon-goevolution.slide))\r\n - Static Code Analysis Using SSA — Ben Johnson ([video](https://www.youtube.com/watch?v=D2-gaMvWfQY)) ([slides](https://speakerdeck.com/benbjohnson/static-code-analysis-using-ssa))\r\n - Go on Mobile — Hana Kim ([video](https://www.youtube.com/watch?v=sQ6-HyPxHKg)) ([slides](http://talks.golang.org/2015/gophercon-go-on-mobile.slide))\r\n - Go Dynamic Tools — Dmitry Vyukov ([video](https://www.youtube.com/watch?v=a9xrxRsIbSU)) ([slides](http://talks.golang.org/2015/dynamic-tools.slide))\r\n - Embrace the Interface — Tomás Senart ([video](https://www.youtube.com/watch?v=xyDkyFjzFVc)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Tom%C3%A1s%20Senart%20-%20Embrace%20the%20Interface/ETI.pdf))\r\n - Uptime: Building Resilient Services with Go — Blake Caldwell ([video](https://www.youtube.com/watch?v=PyBJQA4clfc)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Blake%20Caldwell%20-%20Uptime:%20Building%20Resilient%20Services%20with%20Go/2015-GopherCon-Talk-Uptime.pdf))\r\n - Cayley: Building a Graph Database — Barak Michener ([video](https://www.youtube.com/watch?v=-9kWbPmSyCI)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Barak%20Michener%20-%20Cayley:%20Building%20a%20Graph%20Database/Cayley%20-%20Building%20a%20Graph%20Database.pdf))\r\n - Code Generation For The Sake Of Consistency — Sarah Adams ([video](https://www.youtube.com/watch?v=kGAgHwfjg1s))\r\n - The Many Faces of Struct Tags — Sam Helman and Kyle Erf ([video](https://www.youtube.com/watch?v=_SCRvMunkdA)) ([slides](https://github.com/gophercon/2015-talks/blob/master/Sam%20Helman%20%26%20Kyle%20Erf%20-%20The%20Many%20Faces%20of%20Struct%20Tags/StructTags.pdf))\r\n - Betting the Company on Go and Winning — Kelsey Hightower ([video](https://www.youtube.com/watch?v=wqVbLlHqAeY))\r\n - How Go Was Made — Andrew Gerrand ([video](https://www.youtube.com/watch?v=0ht89TxZZnk)) ([slides](http://talks.golang.org/2015/how-go-was-made.slide))\r\n\r\n/ [Peter](/peter)",
- "created_at": {
- "$date": 1439931710000
- },
- "day": 18,
- "image_url": "http://old.athega.se/system/uploads/2015/08/gophercon-2015.png",
- "last_updated_by": "peter",
- "month": 8,
- "published_at": {
- "$date": 1439848800000
- },
- "slug": "2015/08/18/gophercon-2015",
- "summary": "",
- "tags_array": [
- "konferens",
- "golang"
- ],
- "title": "GopherCon 2015",
- "updated_at": {
- "$date": 1439937408000
- },
- "year": 2015
- },
- {
- "_id": {
- "$oid": "565c3c141543a428a7000005"
- },
- "content": "Vår årliga hackday genomfördes i år på Nynäs Havsbad. Traditionsenligt med tillhörande inslag i miljö av skärgård, kallbad, sjöutsikt från tornrum och en och annan fyr.\r\n\r\n\r\n\r\nNytt för i år är att transporten genomfördes helt CO2-fritt med elbilar från Gullmarsplan. De vanliga parkeringsplatserna visade sig sakna laddstolpar. När vi till slut lyckats parkera vid olika eluttag på märkliga ställen på Havsbadens campus, började äntligen skapandet av årets olika projekt. Vilka fantastiska saker det går att bygga på en dag numera!\r\n\r\nFlera av oss hade valt spelutveckling med lite olika teknik och målplattformar. En Andriodutvecklare som provar Swift, C-utveckling på simulerad ROM för Nintendo Entertainment System (NES) samt ett spel gjort med med libGDX. Återigen helt fantastiskt att få ihop fungerande spel på den korta tiden och utan daglig erfarenhet av spelutveckling. Det bekräftar, inte minst, att våra erfarna utvecklare snabbt kan ta till sig nya språk och plattformar.\r\n\r\nVi såg också fina exempel på machine learning, Data Science, Apple TV och IoT som Physical Web med Beacons. Dessutom gjordes en Andriodapplikation, som hjälper till när du parkerar, klar för release.\r\n\r\nMen det projekt med bäst utformning för demo var ändå det som gjordes med Lego Mindstorms.\r\n[https://www.youtube.com/watch?v=SBb7P-RoYLU&feature=youtu.be](https://www.youtube.com/watch?v=SBb7P-RoYLU&feature=youtu.be)\r\n\r\nNi kan studera detaljer, kod och läsa mer om projekten på Athegas GitHub.\r\n[https://github.com/athega/acb2015/blob/master/README.md](https://github.com/athega/acb2015/blob/master/README.md)\r\n\r\nHåll tillgodo\r\n\r\nTorbjörn Nilsson",
- "created_at": {
- "$date": 1448885268000
- },
- "day": 30,
- "image_url": "",
- "last_updated_by": "tobbe",
- "month": 11,
- "published_at": {
- "$date": 1448838000000
- },
- "slug": "2015/11/30/hackday",
- "summary": "",
- "tags_array": [
- "codebase 2015",
- "athegas hackday",
- "2015"
- ],
- "title": "Athegas hackday 2015",
- "updated_at": {
- "$date": 1448891147000
- },
- "year": 2015
- },
- {
- "_id": {
- "$oid": "56a7e6131543a455d7000003"
- },
- "content": " \r\n\r\nLantmäteriet har vid årsskiftet släppt vissa av sina kartor fria som [öppen data](http://www.lantmateriet.se/sv/Kartor-och-geografisk-information/Kartor/oppna-data/).\r\nDet innebär att de får användas, spridas, göras om, modifieras och byggas vidare på. Men det betyder inte automatiskt att de finns tillgängliga i ett färdigt format som passar att användas på webben och i appar.\r\n\r\nKartorna är anpassade för Sverige och använder sig av en annan projektion och ett annat koordinatsystem än vad globala kartor vanligtvis gör. Jag har därför bearbetat och optimerat kartbilderna för Fjällkartan så att den går att visa på t.ex. OpenStreetMap eller [Google Maps](https://johanberonius.github.io/Lantmateriets-Fjallkarta/fjallkartan.html), i [Google Earth](https://johanberonius.github.io/Lantmateriets-Fjallkarta/Google-Earth.kml) och i [Galileo-appen](https://johanberonius.github.io/Lantmateriets-Fjallkarta/galileo.ms).\r\n\r\nFör den som är nyfiken finns [koden på GitHub](https://github.com/johanberonius/Lantmateriets-Fjallkarta) tillsammans med instruktioner och länkar för att titta på kartan.\r\n\r\n/ [Johan](/johan)",
- "created_at": {
- "$date": 1453843987000
- },
- "day": 26,
- "image_url": "",
- "last_updated_by": "johan",
- "month": 1,
- "published_at": {
- "$date": 1453762800000
- },
- "slug": "2016/01/26/open-maps",
- "summary": "",
- "tags_array": [
- "öppna data",
- "kartor"
- ],
- "title": "Öppna kartor",
- "updated_at": {
- "$date": 1487610882000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "56b4aca61543a455d7000039"
- },
- "content": "> Efterfrågan kring erfarenhet av node.js och isomorfiska tillämpningar har fullkomligt exploderat den senaste tiden.\r\n\r\n \r\n\r\nVi kommer därför att satsa på just detta under våra internutbildningssessioner under våren. Vi kör, som vanligt, en fredagseftermiddag (14:00 - ca 16:30) varje månad fram till sommaren.\r\n\r\nChristian Lizell, som har praktisk erfarenhet från en av landets största sajter, kommer leda utbildningen. Han kommer använda labbar och material från http://nodeschool.io/, men också bjuda på sina egna erfarenheter.\r\n\r\n### Exempel på Innehåll: \r\n* Server side Javascript\r\n* node.js, io.js\r\n* v0.13, v4, v5?\r\n* npm/nvm\r\n* ES6, ES7 ES2015/ES2016\r\n* Babel\r\n* Isomorphism/Universal\r\n* Hot reload\r\n* Express\r\n* Koa\r\n* React\r\n* Redux\r\n* Webpack\r\n* Karma/Jasmine\r\n* Phantomjs\r\n\r\n### Tillfällen under våren\r\n- 2016-02-26 14:00 - ca 16:30\r\n- 2016-03-18 14:00 - ca 16:30\r\n- 2016-04-15 14:00 - ca 16:30\r\n- 2016-05-20 14:00 - ca 16:30\r\n\r\nAlla är välkomna i mån av plats men vi prioriterar medlemmar i konsultnätverket. \r\nKontakta Torbjörn Nilsson om du vill delta eller har frågor.",
- "created_at": {
- "$date": 1454681254000
- },
- "day": 5,
- "image_url": "",
- "last_updated_by": "tobbe",
- "month": 2,
- "published_at": {
- "$date": 1454626800000
- },
- "slug": "2016/02/05/isomorfism",
- "summary": "",
- "tags_array": [],
- "title": "JavaScript och isomorfism med Node och React",
- "updated_at": {
- "$date": 1455709929000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "56e13d1a1543a475de000002"
- },
- "content": "## Tre dagar på Queen Elizabeth II Conference Center\r\n\r\n\r\n\r\nMed ett spann på en genomgång av hur virtuella truckar på Volvo fungerar till vad som är nytt i Spring 5 via en redogörelse för hur man kombinerar att vara långdistanslöpare och blind(!) och hur blockchain-kedjan för Bitcoins fungerar, kan jag lugnt konstatera att [QCon](https://qconlondon.com/) är en bred konferens med något för alla.\r\n\r\nI denna artikel ska jag så kort jag kan redogöra för hur de här tre dagarna påverkat min omedelbara framtid. Eller mindre pretantiöst, vad jag ska prova härnäst och titta litet närmare på.\r\n\r\nSist i artikeln kan man hitta en lista på de föreläsningar jag hann med för den som är intresserad.\r\n\r\n**Keynotesen höll dessvärre** ingen vidare värst hög nivå, möjligen med undantag för [Adryan Colyer](https://twitter.com/adriancolyer) som nästan dagligen skriver om något av alla datorvetenskapliga artiklar som han tar sig igenom.\r\n\r\n» Bloggen [The morning paper](http://blog.acolyer.org/) är därmed min första take away.\r\n\r\n**Property based testing** har jag alltid velat prova på riktigt. Det utlovar en kodbas med tester som är lättare att underhålla och mindre känslig för refaktoriseringar. Istället för att testa givna fasta värden, skriver du definitioner av hur din kod ska bete sig. Du låter sedan ramverket hamra på din kod hundratals (eller fler) gånger på din kod, inom dessa givna ramar.\r\n\r\n» [JUnitQuickcheck](https://pholser.github.io/junit-quickcheck/index.html) är min nästa take away.\r\n\r\n**Mob programming** pratas det om på många håll och två fina killar från Cucumber Inc som ligger bakom BDD-testramverket [cucumber](https://cucumber.io/) fick mig verkligen att vilja prova direkt. För litet drygt 15 år sedan sa Kent Beck att om det är bra att lösa problem ihop, dra upp den ratten till 11 (på en tiogradig skala) och parprogrammera. Grupprogrammering (svenska för mob programming) är som att dra upp parprogrammeringsratten till 11. Några timmar om dagen programmerar hela teamet tillsammans, en dator, en skärm. Håll i er, på måndag kör vi!\r\n\r\n» [Mob programming](http://mobprogramming.org/) är take away nummer tre.\r\n\r\n\r\n\r\nLitet roligt att de avslutar varje programmeringssession med en retro, som de checkar in i master.\r\n\r\n**Monoliter ersätts av mikrotjänser (microservices)** över hela världen. Om man ska hitta ett genomgående tema under dessa dagar kan man konstatera att det var väldigt många företag som ville berätta om hur de framgångsrikt bytt ut sin monolitiska arkitektur mot mikrotjänster. BBC berättade om sin playtjänst iPlayer och det var ganska spännande att lära sig att de konstant delade upp det som sänds i delar om 80MB som sparas i S3 (Amazon). Tack vare en finurlig S3-tjänst kan man sedan supersnabbt skapa nya filer av dessa delar. På så sätt kan man sätta ihop hela program, videoklipp, sända live, osv. BBC har förmodligen ett bra avtal med Amazon eftersom de skyfflar ut ca **21 TB/dag** till S3.\r\n\r\n\r\n\r\nNetflix, kungen av mikrotjänster, slog ett slag för sitt **Failure driven development**. Det handlar om att konstant och medvetet kasta in fel i sin arkitektur på olika ställen, utan att konsumenten drabbas. De har ett helt batteri med verktyg och strategier att göra detta. Detta känner jag att jag behöver bli bättre på, det är litet av ett annat tänk, som öppnar upp sig och möjliggörs av en mikroservicearkitektur.\r\n\r\n» Därför blir [Chaos Monkey](https://github.com/Netflix/SimianArmy/wiki/Chaos-Monkey) nästa take away.\r\n\r\n**Bakom brandväggen kan vi känna oss trygga**, eller kan vi det? [Christina Camilleri](https://twitter.com/0xkitty) och [Shubham Shah](http://shubh.am/) öppnade upp mina ögon för hur lätt det fortfarande är att komma över information som gör att man kan ta sig in bakom brandväggen. Genom telefonsamtal och finurliga mail och annat socialt hackande berättade de om hur lätt de kommit åt inloggningsuppgifter. Alldeles för hjälpsamma supportpersoner och att vi ofta utgår ifrån att man kan lita på folk är en väldigt effektiv attackvektor.\r\n\r\n» Take away nummer fem är alltså att vi måste säkra upp servrar på insidan också, de är **inte säkra bara för att de är bakom brandväggen**.\r\n\r\n**Streams i Node.js** är verkligen användbara och möjliggör snabba och effektiva system. Det jag hade missat här är att det är oerhört lätt att läcka resurser, med minnesproblem som följd. Varje gång du pipear en stream och har oturen att få något problem med den aktuella streamen måste du vara noggrann med att stänga ned källstreamen. Detta gäller för varje par och har du en litet längre kedja kan det bli riktigt hårigt. För att hjälpa till med just detta finns det en modul som heter [pump](https://github.com/mafintosh/pump).\r\n\r\nAv någon anledning har jag undvikit både code coverage-verktyg, för att ha koll på hur duktigt jag testar och avsökningsverktyg för att hitta säkerhetshål i mina Javascriptsprojekt. Skärpning!\r\n\r\nMina sista take aways är alltså [pump](https://github.com/mafintosh/pump), [istanbull](https://gotwarlost.github.io/istanbul/) (code coverage) och [snyk](https://snyk.io/) samt [Node Security Project](https://nodesecurity.io/tools) (säkerhet).\r\n\r\n/ [Christian](/chrille)\r\n\r\n### Min första dag\r\n - Unevenly Distributed\r\n - [Spring Framework 5 - Preview & Roadmap](https://qconlondon.com/system/files/presentation-slides/juergenhoeller-springframework5_0.pdf)\r\n - [An Introduction to Property Based Testing](https://qconlondon.com/system/files/presentation-slides/an_introduction_to_property_based_testing.pdf)\r\n - Applied CI/CD: Enabling Creativity @Volvo Trucks\r\n - [Apache Ignite™ – In-Memory Data Fabric](https://qconlondon.com/system/files/presentation-slides/nikita.pdf)\r\n - [Far from the mobbing crowd](https://qconlondon.com/system/files/presentation-slides/mattwynnestevetooke.pdf)\r\n - [Realtime Stream Computing & Analytics @Uber ](https://qconlondon.com/system/files/presentation-slides/sudhittonse.pdf)\r\n\r\n### Min andra dag\r\n - Reflections on Software Architecture\r\n - Cloud-based Microservices powering BBC iPlayer\r\n - \\#NetflixEverywhere Global Architecture\r\n - Bitcoin Security: 1/10th cent to a billion dollars\r\n - [Engineering You](https://qconlondon.com/system/files/presentation-slides/martinthompsonengineeringyou.pdf)\r\n - Architecting Google Docs\r\n - Nihilist’s Guide to Wrecking Humans and Systems\r\n\r\n### Min tredje dag\r\n - Monkeys in Lab Coats: Applying failure testing research @Netflix\r\n - Meet the Node.js anti-patterns\r\n - Rust: Systems Programming for Everyone\r\n - Successful Go program design, 6 years on\r\n - Applied Supervised Learning: Predicting Recidivism",
- "created_at": {
- "$date": 1457601818000
- },
- "day": 10,
- "image_url": "",
- "last_updated_by": "chrille",
- "month": 3,
- "published_at": {
- "$date": 1457564400000
- },
- "slug": "2016/03/10/qconlondon-2016-take-aways",
- "summary": "",
- "tags_array": [
- "konferens"
- ],
- "title": "QCon London 2016 – Take aways",
- "updated_at": {
- "$date": 1457604920000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "56f062a51543a42bac00000b"
- },
- "content": "#Apache Kafka buzz på Qcon London\r\n\r\nDet har gått ett tag sedan [Qcon London](http://qconlondon.com) avslutades. Konferensen hade ett massivt innehåll och Christian har sammanfattat mycket av det som var bra [här](http://athega.se/blogg/2016/03/10/qconlondon-2016-take-aways)\r\n\r\nEn sak som slog mig var hur mycket buzz det var kring [Apache Kafka](http://kafka.apache.org/). Kafka nämndes i flera föreläsningar, i flera olika spår, antingen direkt, som i [Ben Stopford](https://qconlondon.com/presentation/microservices-streaming-world) och [Martin Kleppmann](https://qconlondon.com/presentation/staying-sync-transactions-streams)s föreläsningar, eller indirekt som när Netflix och Uber beskrev sina respektive arkitekturer där Kafka har en central roll.\r\n\r\n##Vad är då Kafka?\r\nDet korta svaret är att Kafka är ett meddelande-system designat som en distribuerad logg. Fokus är lagd på stora mängder trafik, [hög prestanda](https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines) och feltolerans. Om man är intresserad av att gå på djupet så är självklart den officiella [dokumentationen](http://kafka.apache.org/documentation.html) bäst.\r\n\r\nQcon-buzzet har definitivt väckt mitt intresse och nästa gång jag är i behov av ett meddelande-system kommer jag garanterat att undersöka Kafka närmare.\r\n\r\n/ [Mikael](http://athega.se/mikael)",
- "created_at": {
- "$date": 1458594469000
- },
- "day": 21,
- "image_url": "",
- "last_updated_by": "mikael",
- "month": 3,
- "published_at": {
- "$date": 1458514800000
- },
- "slug": "2016/03/21/kafka-buzz-pa-qcon-london",
- "summary": "",
- "tags_array": [
- "kafka",
- "konferans"
- ],
- "title": "Kafka-buzz på Qcon London",
- "updated_at": {
- "$date": 1458595218000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "56f644b11543a44339000002"
- },
- "content": "Efter en grym konferens så är det dags att samla tankarna.\r\n\r\nStarkast intryck gjorde Simon Wheatcroft som är en blind löpare. Han beskrev de val han har gjort i sitt liv och hur smärta är en utmärkt motivation till lärande, efter att du har sprungit in i en lyktstolpe så kommer du att komma ihåg var den står. Simon har lovat sig själv att aldrig ge upp och ville började springa utomhus. Genom att använda RunKeeper till att veta var han är i förhållande till hinder som han tidigare hade stött på har han byggt upp en mental karta över 3 miles som han använder när han tränar. Simon har redan sprungit flera olika lopp som han har genomfört tillsammans med seende vänner. Han vill nu testa sig själv och ska genomföra ett ultramaraton utan hjälp av vänner. Tillsammans med IBM så utvecklar han en app som ska hjälpa honom att hålla rätt kurs genom den nordafrikanska öknen.\r\n\r\nEn av de roligaste föreläsningarna och som samtidigt öppnade mina ögon för grafdatabaser var Jim Webbers föreläsning om hur man kan använda Neo4j till att upptäcka mönster som tyder på bedrägeriförsök i realtid. Tydligen var det inte bara jag som uppskattade Jims humor och kunnande då han fick flest positiva röster av någon talare den dagen, 99% var positiva. Han fick mig att gå på ytterligare en föreläsning om Neo4j och jag letar nu efter problem som kan lösas med en grafdatabas.\r\n\r\nDen föreläsning som förmodligen var mest kopplat till mitt nuvarande uppdrag var Meet the node.js anti-patterns. Pedro Teixeira och Igor Soarez gick igenom 25st anti-patterns i node.js. Självklart var det många som man redan kände till men en del var ögonöppnare som gjorde att jag förstod mönster i vissa appars minnesallokering. Detta kommer jag garanterat använda mig utav i mitt arbete.\r\n\r\nTackar Qcon och Athega som gjorde detta riktigt lyckat!",
- "created_at": {
- "$date": 1458980017000
- },
- "day": 26,
- "image_url": null,
- "last_updated_by": "alex",
- "month": 3,
- "published_at": {
- "$date": 1458946800000
- },
- "slug": "2016/03/26/bland-lyktstolpar-och-grafdatabaser-i-london",
- "summary": null,
- "tags_array": [],
- "title": "Bland lyktstolpar och grafdatabaser i London",
- "updated_at": {
- "$date": 1458980017000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "5706493a1543a44339000023"
- },
- "content": "##ur.se (numera urskola.se) laddar klart på 610 millisekunder. Det räckte för att vinna Sveriges största tävling i webbprestanda.\r\n\r\n> Internetworld har sedan 1997 utsett de främsta svenska webbplatserna i 17 kategorier. Testföretaget Apica mätte upp- och svarstiderna på alla nominerade sajter på Topp100-listan. Vi ringde upp Athega-konsulten Johan Beronius och URs projektledare Arvid Krantz.\r\n\r\n### _Johan, klassisk fråga, hur känns det?_\r\n– Det känns förstås riktigt bra för mig och alla i teamet. Jag har varit med och byggt en stor del av URs webbplats och haft tid att optimera den parallellt med att den utvecklats. Nu när sajten uppmärksammas i media är det kul för alla inblandade.\r\n\r\n\r\n_Athegas Johan Beronius är expert på optimering av webbplatser och framhåller att det inte bara är prestanda som är viktigt – även tillgängligheten behöver optimeras._\r\n\r\n### _Arvid, grattis till priset, hur ser den närmaste framtiden ut för ur.se?_\r\n– Vi kommer fortsätta förbättra och utveckla sajten på samma sätt som tidigare. Vi har en stadig och stor ökning av trafik som kommer med förväntningar och ställer höga krav på kvalitet. En utmaning men samtidigt naturligtvis väldigt roligt.\r\n\r\n### _Hur ser ni allmänt på behovet av optimering?_\r\n– Jag är övertygad om att bra prestanda är viktigare än någonsin för alla sajter, inte minst på grund av det ökande mobilsurfandet. Användarna kanske inte förstår skillnaden men undermedvetet registrerar de förhoppningsvis att vår sajt fungerar som alla andra borde fungera. Man kan tycka att näten blir allt bättre och att responstider spelar mindre roll, men i praktiken har vi av samma anledning mindre tålamod och tar något för lång tid klickar man vidare. I ett klassrum med lite skakig uppkoppling fungerar vår sajt när andra sajter inte ens börjat ladda. Det hoppas jag märks och kan vara en del i den ökande återkommande trafiken till våra webbplatser.",
- "created_at": {
- "$date": 1460029754000
- },
- "day": 7,
- "image_url": "/assets/legacy/uploads/2016/04/urskola.jpg",
- "last_updated_by": "peter",
- "month": 4,
- "published_at": {
- "$date": 1459980000000
- },
- "slug": "2016/04/07/UR-vann-tavling-i-webbprestanda",
- "summary": "ur.se (numera urskola.se) laddar klart på 610 millisekunder. Det räckte för att vinna Sveriges största tävling i webbprestanda.",
- "tags_array": [
- "nyhetsbrev",
- "webbprestanda"
- ],
- "title": "UR vann Sveriges största tävling i webbprestanda",
- "updated_at": {
- "$date": 1478602195000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "57b5aec2355c317131000021"
- },
- "content": "##Ett försök att identifiera typiska användningsfall för ett Hadoopkluster\r\nHär är en liten översikt över Hadoop för att diskutera den övertro och förvirring som finns kring dess användning. Jag hoppas det ger er en intressant läsning och överblick.\r\n\r\n\r\n\r\nHadoop är ett högpresterande datorkluster som fungerar som en enhet. Det betyder att dina befintliga datorer effektivt kan arbeta tillsammans som en logisk enhet.\r\n\r\nSjälvklart låter detta mycket spännande men frågan är hur ditt Hadoopkluster faktiskt kan leverera önskat affärsvärde.\r\n\r\nHadoop har blivit lite synonymt med analys och Big-data vilket jag skulle säga är en liten överdrift. \r\n\r\nHadoop använder sig av likväl strukturerad som ostrukturerad data. Den kan hantera enorma mängder data i terabyteklassen och lagra datat tills det ska analyseras. Då kan man använda sig av Hadoops stora utbud av kodkomponenter för exempelvis maskininlärning.\r\n\r\nFöretag som önskar sig ett datorkluster med Hadoop bör tänka igenom olika alternativ. Ja, för det det finns flera bra alternativa datorklusterlösningar som i vissa fall kan vara mer passande. Jag kommer inte att gå på dessa i denna post. \r\n\r\nEftersom Hadoop är öppen källkod kan den uppfattas som kostnadsfri, men sanningen är att kostnaden finns gömd i underhåll och utveckling.\r\n\r\nKostnadskontroll bygger på planering och förståelse av de många spännande källkodskomponenter som eldsjälar har bidragit med. Självklart ska man förstå sin egna affärsbehov och Hadoops begränsningar. \r\n\r\nJag har försökt beskriva några användarfall lämpliga för Hadoop-datorkluster och hittat komponenter och kunskap som kan behövas.\r\n\r\nTill exempel\r\n\r\n- Kostnadseffektiv datalagring på befintliga maskiner\r\n\r\n- Driva utvecklingen framåt genom disruptiv innovation och användning av Hadoop\r\n\r\n- Hitta datan du söker efter såsom “nålen i höstacken”\r\n\r\n\r\n##Bakgrundshistoria\r\nHadoop var i sin linda en lösning till Yahoos sökmotorteknik. \r\n2006 arbetade Doug Cutting på Yahoo med deras webbsöksteknik kallad Nutch. Doug kopplade samman Yahoos Nutch-teknik med kunskap av Googles Filsystem och publikationer kring Map Reduce. Det blev Hadoop (namnet Hadoop kommer från Dougs barns leksakselefant) och han släppte Hadoop som öppen källkod under Apache Software Foundation.\r\n\r\n> “Everyone had something that pretty much was like MapReduce because we were all solving the same problems. We were trying to handle literally billions of web pages on machines that are probably, if you go back and check, epsilon more powerful than today’s cell phones. … So there was no option but to latch hundreds to thousands of machines together to build the index. So it was out of desperation that MapReduce was invented.” – Doug\r\n\r\nMin tolkning och översättning av detta är som följer:\r\n\r\nVi alla hade samma utmaningar. Bokstavligen miljarder av webbsidor att granska maskinellt med datorer som var endast något kraftfullare än dagens mobiler. Därav fanns det inget annat val än att koppla ihop och indexera hundra miljoner maskiner. Det var ur detta kaos och den komplexitet som MapReduce och därmed Hadoop skapades som en nödlösning.\r\n\r\nÄven om Hadoop har funnits i åratal är tekniken fortfarande ny och utvecklas i snabb takt. Den är komplex och svår att får ett helhetsgrepp om. \r\nÄr den det “allt i allo” och parallellkluster som den anses vara? Det är den frågan vi ska försöka svara på.\r\n\r\n##När ska man använda Hadoop?\r\nEnkelt svarat, när man undersöker stora datamängder i terabytesklassen. \r\n\r\n##Användarfall 1 \r\n###Kostnadseffektiv datalagring på befintliga maskiner\r\nVäl fungerande och kostnadseffektiv datalagring kan lätt åstadkommas med hjälp av en HDFS (Hadoop distributed file system).\r\nVi ser hur kunder testar olika effektiva datalagringslösningar på deras befintliga maskinpark. En vanlig kompletterande teknik är Apache Thrift som tillåter användning av ens favorit programmeringsspråk gentemot Hadoop.\r\n\r\n##Användarfall 2\r\n###Sänk kostnaden för din befintliga databaslösning genom disruptiv innovation \r\nGenom den omdiskuterade processen disruptiv innovation skapas alternativ till dagens omfattande och kostsamma databas- och data-warehouselösningar.\r\nFör mig är just detta användarfall en förklaring till det något överraskande stora utbudet av SQL-tekniker på Hadoop. Överraskande därför att MapReduce-tekniken som Hadoop bygger på är en begränsande teknik: Det finns flera andra möjliga parallella arkitekturer och angreppssätt. Därmed är Hadoop inte ett självklart val för parallella sökningar i stora datamängder. \r\n\r\nImport av befintligt data till en Hadoop databas underlättas av Apache sqoop. Därefter kan man använda sig av t.ex. Apache hive eller programmera i språket Pig Latin för att utföra sökningar i datat. För att komma igång med Apache hive räcker det med kunskaper och erfarenheter av SQL . \r\nPig Latin å andra sidan är tekniskt mer komplicerat i och med att sökningen av data är beroende av hur datat är strukturerad, med andra ord är språket lite “pillrigt” och det är svårt att felsöka. Med det sagt är Pig Latin värt besväret då man verkligen vill dra nytta av Hadoops totala kapacitet och möjligheter. \r\n\r\n##Användarfall 3\r\n###Hitta nålen i höstacken\r\nAnvändarfall 3 förklarar Hadoops nuvarande popularitet och plats som den mest omtalade analysmiljön för företag. \r\nHär hittar vi spännande lösningar som maskininlärning och andra så kallade Big-data funktioner. Här krävs djupare kunskap om både Hadoop-miljön och de matematiska principerna man använder sig av.\r\n\r\n##Användarfall 4\r\n###Batchkörningar\r\nHadoops ursprungliga syfte som satsvis bearbetning genom batchkörningar. Det är Hadoop mycket väl lämpat för till exempel omfattande ETL (extrahera, transformera och ladda data) och liknande.\r\nBatchkörningar är inte lika hett och spännande som Big-data funktionerna som nämnts ovan i användarfall 3. Men batchkörningar är och förblir arbetshästen i de flesta företag än idag.\r\nApache thrift och Avro är komponenter som hjälper till och tillåter att man använder sig av sitt favoritprogrammeringsspråk. Det är ett stort plus gällande underhåll och att börja utforska Hadoop-världen. \r\n\r\n##Kunskap är nyckeln\r\nDet är möjligt att installera och underhålla ett eget Hadoop-kluster och komponentbibliotek men det kräver orimligt mycket tid. En bättre lösning är att utnyttja standardlösningar från företag som väljer ut och paketerar mjukvaror. Hortonworks och Cloudera erbjuder sina egna snarlika Hadoops standardlösningar och kundsupport. Dessa två och andra analys- och Big-dataföretag (baserade på annat teknik) konkurrerar hårt i denna tillväxtmarknad.\r\n\r\n##Vilka är de stora företagen inom Hadoop och hur tjänar de pengar?\r\nHortonworks och Cloudera säljer Hadoop-relaterade IT-tjänster på en prenumerationsbasis. Med andra ord är Hadoops komplexitet en affärsidé även om koden i själva verket är open source och gratis.\r\n\r\nVi arbetar med Hortonworks suveräna virtuella maskiner för träning och utveckling som stöd för era Hadoop-lösningar.\r\n\r\nVi tar gärna emot era frågor kring Hadoop eller andra parallellsystem liksom HPC (hög prestanda datorlösningar) då vi även har erfarenhet av andra parallella ramverk. \r\n\r\n/Mark",
- "created_at": {
- "$date": 1471524546000
- },
- "day": 18,
- "image_url": "",
- "last_updated_by": "peter",
- "month": 8,
- "published_at": {
- "$date": 1471471200000
- },
- "slug": "2016/08/18/Till-vad-anvander-man-ett-Hadoopkluster-till",
- "summary": "",
- "tags_array": [],
- "title": "Till vad använder man ett Hadoopkluster?",
- "updated_at": {
- "$date": 1478604809000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "5821b8e4355c313dd4000009"
- },
- "content": " \r\n\r\nTraditionsenligt arrangerade vi vår Codebase på hösten, men två saker var lite annorlunda i år. Det första var att vi inte badade i bräckt vatten i Östersjön utan vi besökte Friiberghs Herrgård i Mälaren (Grodhavet). Kontrasten är stor mellan Ålandshav och Ekoln men båda miljöerna lämpar sig för kreativt arbete i annorlunda miljö. Ett tydligt avbräck från vardagen.\r\nDen andra skillnaden var att det flesta jobbade med ett gemensamt projekt som påbörjats tidigare i samband med våra gemensamma athegafredagar. Syftet är att renovera och förnya de kreativa lösningar vi använder på vår jullunch. Funktioner från inbjudan, genomförande av lunchen till uppföljning.\r\n\r\nPeter jobbade hårt på serversidan med en meddelandebuss. Han satte upp NATS streaming och skrev en proxy för HTTP till NATS. Proxyn utvecklades i Go och har stöd för att leverera meddelande som Server-Sent Events (SSE) till browserbaserade klienter. \r\n\r\nMikael jobbade med presentation av livestatistik. Han konsumerar \r\nServer-Sent Events (https://www.html5rocks.com/en/tutorials/eventsource/basics/) och med hjälp av dessa renderar han bubbelgrafer med D3.js (https://d3js.org/). \r\nI takt med att händelser av en viss typ anländer till webbklienten så växer eller krymper de olika bubblorna.\r\n\r\n \r\n\r\nTorbjörn och Mats bygger bygger ljuseffekter till en fysisk inloggningsportal som ska användas när gästerna ankommer till lunchen. De använder Led-lampor från Neopixel som de styr med hjälp av en Tessel och tar fram lämpliga effekter som kan triggas av ankomsthändelser som fotografering av deltagaren. Tessel är en hårdavuutvecklingsplatform (IoT) som kan programmeras med Javascript och Node API:er. Händelser konsumeras via Server-Sent Events. \r\n\r\nChistian jobbade mycket med den nya Tesselplattformen, Tessel2 och den delen som sköter incheckningar med RFID-kort. Han fixar även serversidan med både webbgränssnitt samt lagring av incheckningsdata.\r\n\r\nAlex bygger en stämningsmätare och använder en Tessel 1 med ambient- & servo-modulen. Genom ambientmodulen får han data om ljudnivån i rummet. Datat som avspeglar ljudnivån styr ett servo. Servot flyttar på en arm över en mätartavla. Tesseln skickar även datat över Peters lösning och vi kan utnyttja informationen i våra presentationer som rullar under lunchen. \r\n\r\nKrister kommer se till vi tar en bra bild av varje deltagare. Han labbar med C++, OpenCV, cnats och curl. \r\n\r\nJohan bygger dynamiska presentationsbilder som ska snurra och visas på skärmar under lunchen med livestatistik. Hans bildsnurra består av HTML, Javascript med jQuery, CSS med animeringar och webb API:et EventSource för att reagera på NATS-flödet av händelser.\r\n\r\nVIDEO \r\n\r\nMattias bygger en legorobot som spelar på en Pocket operators. Det blir den bästa demon. \r\n\r\nVi hade en väldigt lyckad och trevlig Codebase och ser fram emot nästa.",
- "created_at": {
- "$date": 1478605028000
- },
- "day": 8,
- "image_url": "",
- "last_updated_by": "johan",
- "month": 11,
- "published_at": {
- "$date": 1478559600000
- },
- "slug": "2016/11/08/Codebase-Athegas-Hackday",
- "summary": "",
- "tags_array": [
- "codebase 2016 athegas hackday"
- ],
- "title": "Codebase 2016 (Athegas Hackday)",
- "updated_at": {
- "$date": 1478610387000
- },
- "year": 2016
- },
- {
- "_id": {
- "$oid": "58a5b3ad355c314a17000002"
- },
- "content": "\r\n \r\n \r\n \r\n \r\n\r\nPå fredagseftermiddagar efter vårat sedvanliga månadsmöte brukar vi köra en session med någon form av internutbildning.\r\nNu i februari gjorde vi det som en programmeringsutmaning som gick ut på att lite snabbt skapa något fint med bara kod.\r\n\r\n\r\n \r\n \r\n Presentation av WebGL, GLSL och VertexShaderArt \r\n \r\n \r\n\r\n### Creative coding\r\nDet brukar kallas [\"creative coding\"](https://en.wikipedia.org/wiki/Creative_coding) när man programmerar grafik och ljud från grunden för att skapa något underhållande och visuellt tilltalande.\r\nOfta använder man inte några andra verktyg än bara koden.\r\nPoängen är helt enkelt att göra något fint och antagligen totalt onödigt, men det är väldigt roligt!\r\n\r\n\r\n \r\n \r\n VertexShaderArt: technoball \r\n \r\n \r\n\r\n### Begränsningar föder kreativitet\r\n\r\nMöjligheterna är som vanligt obegränsade men när man sätter begränsningar skapas förutsättningar för att föda inspiration.\r\nI det här fallet består begränsningen av att man endast skriver koden för en [\"vertex shader\"](https://en.wikipedia.org/wiki/Shader#Vertex_shaders), vilket normalt sett bara är en liten del av kedjan för att rendera 3D-grafik.\r\nVi använde oss av webbplatsen [VertexShaderArt.com](https://www.vertexshaderart.com/) där allt redan finns på plats så att man snabbt kan börja koda direkt i webbläsaren.\r\nDärmed behöver man inte sätta upp någon utvecklingsmiljö eller installera andra verktyg.\r\n\r\n\r\n \r\n \r\n VertexShaderArt: flowerworm \r\n \r\n \r\n\r\n### WebGL och shaders\r\nEftersom WebGL, \"shaders\" och programmeringsspråket GLSL var nytt för vissa började vi med en presentation som gav en kort introduktion från grunden.\r\nVi gick därefter vidare med att kolla igenom några videor med instruktioner och exempel för att komma i gång.\r\nTanken var att alla skulle hinna med att göra något kul på bara ett par timmar.\r\nÄven de som är mindre vara att skriva kod kunde utgå från ett exempel och genom att ändra lite siffror och parametrar uppnå ett unikt och persoligt resultat.\r\nDet är kreativiteten som är det viktiga!\r\n\r\nKolla gärna in presentationen och några av de skapelser detta resulterade i som finns länkade här bredvid.\r\nOch varför inte testa själv?\r\n\r\n**_/Johan._**",
- "created_at": {
- "$date": 1487254445000
- },
- "day": 16,
- "image_url": "/assets/legacy/uploads/2017/02/athega-creative-coding.jpg",
- "last_updated_by": "johan",
- "month": 2,
- "published_at": {
- "$date": 1487199600000
- },
- "slug": "2017/02/16/Kreativ-programmering",
- "summary": "På fredagseftermiddagar efter vårat sedvanliga månadsmöte brukar vi köra en session med någon form av internutbildning. Nu i februari gjorde vi det som en programmeringsutmaning som gick ut på att lite snabbt skapa något fint med bara kod.",
- "tags_array": [
- "nyhetsbrev",
- "creative coding",
- "webgl",
- "shader art",
- "glsl"
- ],
- "title": "Kreativ programmering",
- "updated_at": {
- "$date": 1488895997000
- },
- "year": 2017
- },
- {
- "_id": {
- "$oid": "58ca9244355c312c0b000003"
- },
- "content": "Månaden mars internutbildning handlade om det progressiva JavaScriptramverket\r\n[vue.js](https://vuejs.org/). Vue är ett ramverk som kan användas till att bygga\r\nanvändargränssnitt i webbläsaren. Det är ett alternativ till andra populära\r\nramverk som [React](https://facebook.github.io/react/) eller\r\n[Angular](https://angularjs.org/).\r\n\r\nDet speciella med Vue är att det har en väldigt kort komma igång-tröskel\r\n(om du redan har koll på JavaScript, CSS och HTML). Dessutom är det snabbt\r\noch litet i sin kärna. Med endast 18kb hämtat via en `\r\n\r\n\r\nPå några få rader har vi en reaktiv sida som hanterar inmatning från och\r\ninteraktion med användaren.\r\n\r\nDet tar ungefär en eftermiddag att komma igång att göra en riktig app.\r\nVi avslutade därför dagen med att göra en single-page-app som sökte i Athegas\r\nmedarbetar-API och presenterade resultatet i ett någorlunda snyggt format.\r\n\r\nNedan finner du presentationen från dagen.\r\n\r\n/ [Chrille](/chrille)\r\n\r\n\r\n\r\n**PS.**\r\n\r\n*Vue.js* uttallas precis som engelskans *view*.\r\n\r\n**DS.**",
- "created_at": {
- "$date": 1489670724000
- },
- "day": 16,
- "image_url": "https://vuejs.org/images/logo.png",
- "last_updated_by": "chrille",
- "month": 3,
- "published_at": {
- "$date": 1489618800000
- },
- "slug": "2017/03/16/lar-dig-uttala-vuejs",
- "summary": "Vue har en väldigt kort komma igång-tröskel\r\n(om du redan har koll på JavaScript, CSS och HTML). Dessutom är det snabbt\r\noch litet i sin kärna.",
- "tags_array": [
- "nyhetsbrev",
- "vuejs",
- "javascript"
- ],
- "title": "Lär dig uttala vue.js (och hur det fungerar)",
- "updated_at": {
- "$date": 1489747313000
- },
- "year": 2017
- },
- {
- "_id": {
- "$oid": "58f7aa56355c315638000002"
- },
- "tags_array": [
- "internutbildning",
- "go"
- ],
- "slug": "2017/04/10/internutbildning-om-go",
- "title": "Internutbildning om Go",
- "content": "Ämnet för månadens internutbildning var [Go](https://golang.org/), det språk jag har\r\nfokuserat mest på under de senaste åren.\r\n\r\nJag tänkte att jag skulle inleda med en introduktion av språket, då flera av mina kollegor\r\ninte har använt Go tidigare. Passande nog så har [Marcus Olsson](https://marcus.se.net/),\r\nmin vän och medarrangör av meetup-gruppen [Go-Stockholm](https://www.meetup.com/Go-Stockholm/)\r\nnyligen påbörjat lite material för att introducera språket.\r\n\r\nVi började således med att gå igenom en av dessa presentationer:\r\n[Go Fundamentals - Language Syntax](https://talks.godoc.org/github.com/marcusolsson/go-workshop/2-basics/presentation.slide#1)\r\n\r\nEfter att ha gått igenom grunderna i språket så gick vi vidare med att gemensamt\r\nläsa igenom artikeln [Visualizing Concurrency in Go](https://divan.github.io/posts/go_concurrency_visualize/)\r\n\r\n/ [Peter](/peter)\r\n\r\n\r\n",
- "published_at": {
- "$date": 1491775200000
- },
- "last_updated_by": "peter",
- "summary": null,
- "image_url": null,
- "year": 2017,
- "month": 4,
- "day": 10,
- "updated_at": {
- "$date": 1492626006000
- },
- "created_at": {
- "$date": 1492626006000
- }
- },
- {
- "_id": {
- "$oid": "59243582355c314f88000014"
- },
- "content": "Månadens internutbildning handlade om [React Native](https://facebook.github.io/react-native/docs/getting-started.html) utifrån ett iOS perspektiv.\r\n\r\n\r\n\r\nReact Native är Facebooks lösning för att skriva mobilappar med JavaScript för både iPhone och Android. React Native släpptes som öppen källkod 2015 och är en utbyggnad av [React](https://facebook.github.io/react/) för webutveckling, som i sin tur presenterades 2013. React Native är som React, men använder inbyggda komponenter istället för webbkomponenter som byggstenar. Så för utveckling gentemot iPhone är en del problem och lösningar desamma som vid utveckling med Apples egna språk och tekniker i Xcode.\r\n\r\nVi bekantade oss med utvecklingsmiljön och följde sedan en av de [tutorials](https://facebook.github.io/react-native/releases/0.23/docs/tutorial.html) som finns på React Natives hemsida. En del ändringar behövdes för att få den att köra med senaste versionen av Xcode, React Native, iOS och Android. \r\n\r\nPå vägen gick vi igenom hur Apples Xcode ställs in för de förändringar som kommit med de senaste iOS versionerna: *[App Transport Security](https://forums.developer.apple.com/thread/6767)* och *[Code Signing](https://developer.apple.com/support/code-signing/)*.\r\n\r\n/ [Andreas](/andreas)",
- "created_at": {
- "$date": 1495545218000
- },
- "day": 23,
- "image_url": "",
- "last_updated_by": "andreas",
- "month": 5,
- "published_at": {
- "$date": 1495490400000
- },
- "slug": "2017/05/23/react-native-from-an-ios-perspective",
- "summary": "",
- "tags_array": [
- "internutbildning",
- "react-native",
- "ios",
- "security"
- ],
- "title": "React Native och iOS-säkerhet",
- "updated_at": {
- "$date": 1495550413000
- },
- "year": 2017
- },
- {
- "_id": {
- "$oid": "5a2a9ec1355c317aeb000012"
- },
- "content": "Årets hack day (eller Code Base som vi kallar det) gick mer eller mindre traditionsenligt av stapeln ute på Söderarm, sista utposten i Stockholms skärgård.\r\n\r\nVi åkte någon månad tidigare än normalt, så vädret var helt fantastiskt. Klart och med fri sikt till jordens krökning. Detta utnyttjade vi till fullo då vi satt i öns högsta torn (bortsett från fyren då) med fönster i alla riktningar.\r\n\r\n\r\n\r\nÅrets projekt handlade bland annat om ljudbearbetning av låtar från Spotify direkt i webbläsaren. [Micke](/micke) gjorde med detta ett spel där du skulle matcha takten i låten så bra som möjligt.\r\n\r\n[Torbjörn](/tobbe) och [Andreas](/andreas) jobbade med ett avancerat bevattningssystem i Arduino.\r\n\r\n[Krister](/krister) tränade sin monsterdator att känna igen personer från ett stort bildbibliotek. När hans kamera fick syn på ett ansikte visade datorn fler bilder av samma person, i realtid.\r\n\r\n[Mats](/mats) fick till en något enklare variant av samma sak, fast på en Rasberry Pi.\r\n\r\n[Christian](/chrille) byggde en [Quiz](https://github.com/athega/athega-quiz) i React som styrdes av en Tessel med RFID-läsare.\r\n\r\nI år hade vi med oss ett [filmteam](http://www.fishtank.nu/) som spelade in en film om våra Code Base-tillställningar:\r\n\r\nVIDEO ",
- "created_at": {
- "$date": 1512742593000
- },
- "day": 8,
- "image_url": "/assets/legacy/uploads/2017/12/acb-thumb.jpg",
- "last_updated_by": "chrille",
- "month": 12,
- "published_at": {
- "$date": 1512687600000
- },
- "slug": "2017/12/08/acb2017",
- "summary": "Årets hack day (eller Code Base som vi kallar det) gick mer eller mindre traditionsenligt av stapeln ute på Söderarm, sista utposten i Stockholms skärgård.",
- "tags_array": [
- "acb",
- "nyhetsbrev",
- "blogg",
- "söderarm"
- ],
- "title": "Athega Code Base 2017",
- "updated_at": {
- "$date": 1512743350000
- },
- "year": 2017
- },
- {
- "_id": {
- "$oid": "5a901889355c3178aa000002"
- },
- "content": "I torsdags höll vi den första i en serie meetups runt machine learning. Vi kallade kvällen för tillämpad.ai då vi vill fokusera på verkliga tillämpningar.\r\n\r\n\r\n\r\nBra uppslutning och väldigt trevliga diskussioner. Programmet var inspirerande och presentatörer var Niklas Lohmann, Leif Jonsson samt Krister Söderström enligt programpunkterna nedan.\r\n\r\n- Flatpack Communities with AI to Empower you (Niklas Lohmann CEO/co-Founder Haaartland)\r\n- Fast, parallell and Correct Latent Dirichlet Allocation for Interpretable Machine Learning (Leif Jonsson-PhD Student, Architect of Ericsson DU Radio ML Toolkit)\r\n- Deep dreaming with Convolutional Neural Networks The Basics (Krister Söderström, Athega DS RnD)\r\n- Deep Neural Networks Applied (Krister Söderström, Athega DS RnD)\r\n\r\nHör av er till oss om nästa meetup i ämnet machine learning! Ni är mer än välkomna att föreslå presentatörer och ämnen!\r\n\r\nVIDEO ",
- "created_at": {
- "$date": 1519392905000
- },
- "day": 23,
- "image_url": "/assets/legacy/uploads/2018/02/meetup.jpg",
- "last_updated_by": "chrille",
- "month": 2,
- "published_at": {
- "$date": 1519340400000
- },
- "slug": "2018/02/23/tillampad-ai",
- "summary": "I torsdags höll vi den första i en serie meetups runt machine learning. Vi kallade kvällen för tillämpad.ai då vi vill fokusera på verkliga tillämpningar.",
- "tags_array": [
- "nyhetsbrev",
- "blogg",
- "ai",
- "ml"
- ],
- "title": "Tillämpad.ai februari 2018",
- "updated_at": {
- "$date": 1524228823000
- },
- "year": 2018
- },
- {
- "_id": {
- "$oid": "5ad9f3a3355c3111fa000003"
- },
- "content": "I torsdags var det åter igen dags för meetup Tillämpad.ai\r\n\r\nSom vanligt var fokus verkliga tillämpningar inom machine learning och AI. Denna gång provade vi ett nytt format med färre presentatörer och mer tid för QnA under presentationerna. Det fungerade väldigt bra! Även om det var bästa tänkbara väder dök många upp! Presentatörer var Krister Söderström och Michael Mrazek enligt programpunkterna nedan.\r\n\r\n \r\n\r\n- Auto Encoders and their applications (Krister Söderström Athega AB)\r\n- Topic Modelling with LDA in practice. (Michael Mrazek Haaartland)\r\n\r\nTack alla som kom!",
- "created_at": {
- "$date": 1524233123000
- },
- "day": 20,
- "image_url": "",
- "last_updated_by": "peter",
- "month": 4,
- "published_at": {
- "$date": 1524175200000
- },
- "slug": "2018/04/20/Tillampad-ai-april-2018",
- "summary": "",
- "tags_array": [],
- "title": "Tillämpad.ai april 2018",
- "updated_at": {
- "$date": 1524235443000
- },
- "year": 2018
- }
-]
diff --git a/_posts/blog_posts_json_to_md.pl b/_posts/blog_posts_json_to_md.pl
deleted file mode 100755
index 2c8b01e..0000000
--- a/_posts/blog_posts_json_to_md.pl
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/perl
-#
-# Export blog posts from current site database:
-# localhost:$ ssh deploy@athega.se
-# deploy@athega:$ cd /var/www/vhosts/assets.athega.se/data/athega_se
-# deploy@athega:$ ./export_database_to_ndjson_and_json.sh
-# deploy@athega:$ exit
-#
-# Fetch and convert blog posts to markdown files:
-# localhost:$ cd _posts
-# localhost:$ curl -O https://assets.athega.se/data/athega_se/blog_posts.json
-# localhost:$ ./blog_posts_json_to_md.pl blog_posts.json
-
-use strict;
-use JSON;
-
-my $posts = from_json(join('', <>));
-
-foreach my $post (@$posts) {
-
- my $file = $post->{slug};
- $file =~ s/\W+/-/g;
- $file .= '.md';
-
- print $file, "\n";
-
- my $date = sprintf "%4.4d-%2.2d-%2.2d", $post->{year}, $post->{month}, $post->{day};
- my @tags = ();
- @tags = @{$post->{tags_array}} if ref $post->{tags_array} eq 'ARRAY';
-
- foreach my $field ('content', 'image_url') {
- $post->{$field} =~ s((https?://(www\.)?athega\.se)?/system/uploads/)(/assets/legacy/uploads/)g;
- }
-
- open MD, '>', $file or die $!;
- print MD "---\n";
- print MD "title: \"", $post->{title}, "\"\n" if $post->{title};
- print MD "date: ", $date, "\n";
- print MD "description: \"", $post->{summary}, "\"\n" if $post->{summary};
- print MD "tags:\n", map(" - $_\n", @tags) if @tags;
- print MD "last_updated_by: ", $post->{last_updated_by}, "\n" if $post->{last_updated_by};
- print MD "image_url: ", $post->{image_url}, "\n" if $post->{image_url};
- print MD "---\n";
- print MD $post->{content}, "\n";
- close MD;
-}