Reflektioner från DevSum 2012 i Stockholm

Reflektioner från DevSum 2012 i Stockholm
juni 1, 2012 Magnus Härlin

DevSum 2012 började med en keynote av Martin Laforest från Waterloo universitetet i Canada. Han forskar inom kvantdatorer och är teoretisk fysiker. Att få en hel publik av utvecklare att förstå kvantfysik är kanske inte helt lätt men så långt det är möjligt gjorde han ett bra jobb och man kunde åtminstone förstå delar av vad han pratade om. En av slutsatserna var att det är fortfarande lång tid kvar innan vi kommer ha kvantdatorer. Det dom kommer vara bra på är framförallt att kryptera, och dekryptera för att dom klarar av att räkna primtal exponentiellt snabbare än dagens datorer.

Sessionen med Ayende Rahien som pratade om RavenDb var intressant. Jag har lekt lite med raven och gillar det för att det är väldigt lätt och snabbt att komma igång med och enkelt att förstå. Det är en dokumentdatabas som har bra Linq stöd om man anropar den från .Net men även REST stöd om man vill komma åt den med HTTP. Eftersom den utnyttjar HTTP så fungerar det bra att med cachning för proxyservernar och klienter. När man ställer frågor mot databasen skapas först temporära index, som sedan blir permanenta om man ställer frågan flera gånger. Prestandan är oerhört bra, första gången man ställer frågor är snittiden runt 15ms och efterföljande frågor brukar ta mellan 5-10ms. Indexen är uppbyggda av map reduce med linq syntax som gör dom väldigt lätta att förstå och man kan lägga till egna permanenta index om man vill.

Min session handlade om asynkron-programmering. Hur man utnyttjar dom delar som finns i .Net idag med Task och Reactive Extensions och det som kommer med nya async och await nyckelorden i C# 5. Jag höll min presentation i minsta rummet som var fullsatt så det gjorde att det blev en bra stämning. Presentationen flöt på bra och timingen var perfekt. Det var flera stycken som gav mig positiv feedback efteråt vilken kändes väldigt roligt. Det gjorde att det var värt några timmars nervositet innan presentationen. Demokoden ligger uppe på GitHub. Ni får använda den hur ni vill, allt jag visade var från Console applikationsprojektet. I slutet av presentationen fick jag en fråga om jag hade något bra sätt att debugga dom asynkrona anropen på, speciellt om det var flera vilanda asynkrona anrop samtidigt. Jag hade inget bra svar på det då men dagen efter var jag på Tiberiu Covacis session ”Advanced Asp.Net debugging of appolications” och där nämnade han att man kan använda ”Parallel Stacks” där man får upp en bra visualisering av alla trådar och asynkrona processer man har igång. Man kan även specifikt välja att bara se Tasks. Alltid roligt när man lär sig något nytt.

Fil Maj som jobbar på adobe med PhoneGap gick igenom hur man kan utnyttja sina kunskaper om html och javascript och skriva applikationer till alla dom vanliga telefonoperativsystemen och sen låta PhoneGap paketera det så att man kan lägga installera det som native applikationer.  Fördelen är att det blir mindre kod att underhålla och man behöver inte lära sig något nytt språk. Nackdelen är att det inte ser ut som native applikationer.

Sebastien Lambla höll en intressant session om ”Links, forms and unicorns” där det var en superhjälta (färgglad ponny) som skulle ta sig igenom europa. Jag tyckte nog att det var dagens roligaste session. På sitt humoristiska sätt berättade han att genom att ge information i HTTP Request/Response headern tala om för klienten vad man förväntar sig för information och vad nästa steg är så räcker det i många fall att bara uppdatara serversidan när man ändrar url till sina resurser. På klientsidan ser man till att istället för att hårdkoda länkar så tittar man efter Header.Links med en relation som är ”next” och tar url:en där. På så sätt så kan genom att bara ändra url:en på server sidan få klienten att ändå hitta rätt.

Även på sessionen efter med Robert Folkesson som handlade om WebAPI så återkom temat med hur man kan skicka länkar i headern för klienten. Andra godbitar är att om man ber servern och Content-Type: application/json så svarar den automatisk med det. Dom formatters som kommer med från början är form url encoder, json och xml-formatter. Det gör att du kan använda samma funktion för klienter som vill ha svaret i olika format. När man använder Web-Api så kan man skapa funktioner i controllern med HTTP verb som gör att den med konvention mappar post till Post funktionen i controllern.

Torkel Ödegaard gick igenom en demosite där han visade hur man utnyttjade BackboneJs modell och vyer tillsammans med SignalR för att få till en smidig uppdatering av samtliga klienter samtidigt så snart en klient ändrar något. Han rekommenderade RequireJs eller SqushIt för att bundla och minifiera javascript filer.

Sessionen om Responsive Design – Mobile First med Andreas Carlsson och Andreas Oldeskog täckte in media queries och olika alternativ för vad man kan göra av menyn när den är anpassad för mindre skärmar som mobiler. Alternativen dom föreslog var 1. Ha den i botten och en länk till den i toppen 2. Drop down list 3. Toggle meny 4. Pull down menu. Anledningen till att man skulle minska menyn var framförallt att man när inte ska behöva scrolla för att se huvudinnehållet när man kommer in på sidan. Hade gärna sett lite mer kod på sessionen.

Keynoten dag 2, A Happy Grain of Sand, som hölls av Aral Balkan var fantastiskt bra! Temat genom hela sessionen var att designa för människor efter deras behov och försöka tänka sig in iKnapp vid övergångsställe deras situation och utgå från den istället för sin egna behov. Han hade många fantastiska foton från olika situationer där det inte var ett dugg uppenbart hur man skulle göra. En rolig var knapparna vi har vid övergångsställena där hans  första reaktion var att trycka på ”knappen” som lyser längst ner och står ut som en knapp brukar. Men som vi vet är det förstås symbolen längst upp man trycker på. Det är viktigt att vara med och få sådana första reaktioner från användare för att kunna förbättra designen. En slide hade en klassiskt designad enterprise applikation och hans kommentar var ”Your app shouldn’t look like your database threw up”. Han tog även med ett citat av den franske författaren Antoine de Saint-Exepery (1900 – 1944) ”Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away”. En sida man kan besöka om man vill lära sig lite mer om hur man inte bör göra om man inte är ute efter att lura sina användare är DarkPatterns.org

All The Screens: Cross Platform Design Strategies var ett intressant tal av Theresa Neil om vad man ska välja för strategi när man ska göra mobilappar. Kategorierna var: Responsive websites, Distinct mobile site, Native apps, Hybrid apps. Vad man skulle välja berodde på appen men regeln var att ju mer interaktiv appen är ju fler fördelar finns det med att göra den native. För att skapa en native iOS app kan man antingen göra det i Object C eller utnyttja Ruby Motion där man skriver koden i Ruby och den kompileras sedan om till Objective C. Eftersom det inte är interpreterat så är det tillåtet sätt att utveckla iOS appar på. Ett annat alternativ är Mono Touch där man utvecklar i C# och det kompileras också om till Objective C. På hemsidan nämner dom att man kan återanvända mycket av koden mellan projekt för Android med Mono for Android där man också utvecklar i C#. Hybrid alternativen som innebär att det installeras som en app i telefonen. Man utvecklar hybridapparna med html 5 och javascript. Platformarna man kan välja mellan är Phone Gap och Titanium.

What’s new in ASP.NET MVC 4 med Shay Friedman berörde lite samma bitar som nyheterna i WebApi som content negotiation biten men hade även lite specifika saker för MVC som att det bättre bundling och minifieringen för javascript och css. Man har även tagit ett stort steg för att förenkla när man bygger mobil sidor genom att man kan ha flera versioner av samma vy för olika klienter. Om vyn heter view.cshtml så kan man skapa en till som heter view.mobil.cshtml så kommer alla mobilklienter routas till mobilvyn medan alla andra fortfarande får orginalvyn. Man kan även specificera telefonmodell genom view.iphone.cshtml så har man en sida som blir specifik för iPhone klienter. Microsoft är bra på att plocka upp det som fungerar i andra teknologier och en av dom sakerna är ”Recipes for code generation” som gör att visual studio kan importera NuGet paket som genererar kod som är specifik för projekt det importeras till och även gjort det lättare att skriva kodgenereringsplugsin som man kan ha med i sina NuGet paket.

From Continuous Integration to Continuous delivery pratade Morten Nielson om. När han frågade hur många som hade kontinuerlig deploy utan att manuella steg var det en hand som åkte upp och det var Troels Thomsens som är en av grundarna till AppHarbor som är ett fantastiskt verktyg för enkel automatisk deploy. Man kan sätta upp en hook på sitt GitHub repository så att så snart man checkar in något så görs samma commit mot AppHarbor repositoryt och ett bygge kör igång. Om alla testarna går igenom deployas applikcationen automatiskt. Det var inte det Morten pratade om, han pratade om att dom hade satt upp bygge och deploy själva för att dom var tvugna. Dom utvecklade ett webbaserat system där varje kunde hade sin egna installation men dom hostade det. I början tog en deploy längre tid än en halv dag. Så länge det inte var så många kunder fungerade det men vartefter dom fick fler kunder var det inte längre hållbart. Dom förbättrade processen steg för steg. En halvtimme här och där till en början och så småningom hade dom målet i sikte att även kunna plocka bort dom sista manuellt bitarna ur processen. För varje release har som minst 2 deployer innan det går ut i produktion och det är först till en automatisk acceptanstest miljö och sen till en testmiljö till där dom har testare som kör igenom applikationen. När allt är godkänt deployas det till sist till produktion men som han sa, är det små ändringar finns det inget som hindrar dom från att deploya till alla miljöer samtidigt.

 

0 Kommentarer

Lämna ett svar

E-postadressen publiceras inte. Obligatoriska fält är märkta *

*

Denna webbplats använder Akismet för att minska skräppost. Lär dig hur din kommentardata bearbetas.