Den digitala veckan som gått – Vecka 5

Hallå allihopa!

Anders är tillbaka från 7 dagar av vin och pudersnö vilket gör att vi har en fullspäckad veckorapport till er alla, den nyhetstorkande veckan till trots.

Facebook börsintroduceras

Efter många spekulationer och gissningar så har Facebook till slut beslutat sig för att börsintroduceras. Det är utan tvekan den största tech-introduktionen ever. PandoDaily har massor av sköna siffror: http://pandodaily.com/2012/02/01/facebook-ipo-the-facts/. Bland annat så står Zynga (Farmville etc.) för 12% av Facebooks omsättning.

Eftersom du inte betalar för Facebook så är det du som är produkten och handelsvaran. Här är en sammanställning av de filurer som bli mångmiljardärer på dina likes, check-ins och semesterfoton: http://www.fastcompany.com/tag/facebook-ipo-players-club.

Obama och Squared

Obama-kampanjen har börjat köra med Squared för att samla in pengar inför presidentvalet i höst. När ser vi t ex Röda Korset börja använda iZettle? http://techcrunch.com/2012/01/30/the-obama-campaign-is-now-using-mobile-payments-device-square-for-fundraising/

Stöld av källkod

Det här är utan att tveka veckans cat-fight. En ny start-up, Curebit, har snott källkod från 37Signals (Basecamp etc). Läs om hela dramat här: http://venturebeat.com/2012/01/28/cant-look-away/. Intressant är att det blev ett herrans liv på Twitter från många inom tech som tycker att Curebit är omoraliska och super-duper-tjaskiga. Med andra ord så är copyright-stöld fel om det drabbar dem själva. Lol.

Gawker Medias redesign verkar ha funkat?

Gawker Media som bla driver Gizmodo gjorde en sjukt dissad redesign för ett år sedan. Spaltmetrar skrevs av bittra bloggare om hur fruktansvärt det var. Och ja, vi höll med och slutade läsa Gizmodo eftersom det även är ofantligt låg nivå på deras skribenter (The Verge FTW!). Men, nu verkar det faktiskt som det kanske funkade. Läs mer här: http://thenextweb.com/insider/2012/02/02/remember-that-gawker-redesign-a-years-worth-of-data-says-it-worked/

Pinterest växer så det knakar

Pinterest, bildsamlingscommunityt där majoriteten av trafiken består av amerikanska bridezillas som planerar sina bröllop, har kommit in från vänsterflanken och växer så det står härliga till. Det började med att de ritkade in sig på en liten kreddig design clique (Anders och Nils Seal of Approval), fick till en hype och sen blev vansinnigt stor över en natt. http://gigaom.com/2012/01/31/pinterest-referral-traffic-google-plus-twitter/

Det går bra för Wrapp

Svenska start-upen Wrapp, där man skickar presentkort till sina kompisar har tidigare fått ekonomisk backning av Skypemiljonären Nicklas Zennström, och diverse andra storfräsare. Nu i veckan fick vi reda på att LinkedIn-grundaren strösslar mills över tjänsten så det lär slå i breda lager snart (och det betyder självklart att vi slutar använda det).

http://www.wrapp.com/

Fi case – CNN

Detta är så snyggt och så bra så jag vet varken in eller ut. Kolla slidern som visar olika vyer av den nya sidan, enkelt men effektivt. Sådana här cases borde vi absolut göra för Creunas kunder, och är ett perfekt exempel på när ID, Design och FE jobbar tillsammans för att visa upp vad de kan.

http://www.f-i.com/cnn/

Till sist en bra inspirationssida

http://www.scoutzie.com/ – En grym sida. Scoutzie samlar världens bästa mobila gränssnitt och designers.

Väl mött,
Anders och Nils.

Den digitala veckan som gått – Vecka 4

Dags för veckans veckobrev. So without further ado, presenterar vi avsnitt två av Den digitala veckan som gått – av Anders och Nils.

Internet växer

YouTube rapporterade i veckan att de har ökad sina videovisningar med 25% de senaste 8 månaderna (verkar som att en redesign gjorde stor skillnad) och visar nu smått oförtåeliga 4 miljarder videor om dagen. Det är helt sinnes.

Soundcloud, det i särklass bästa sättet att lyssna på osignad musik, och som har gjort musikbloggar världen över så oerhört mycket bättre de senaste åren, har nu 10 miljoner användare. Det har gått sjukt snabbt, och görs ju inte sämre av att det är svenskar som har startat det hela. Grundarna gjorde en tackfilm till alla användare, se den här (om inte annat för svengelskan):

http://storywheel.cc/alex-eric/soundcloud-story

Nya lanseringar

Vimeo – Youtubes snyggare lillebror släpper en helt omarbetad produkt, mycket har ändrats i Front-End, Back-End och allt där i mellan. Vimeo var redan bra, och snyggt men det krävdes t.ex. custom-CSS plugins i din browser för att få video i fullbredd (som YouTube fortfarande inte har som standrad, man måste ha Chrome-plugins där med, ffs…), samt att när man bäddade in Vimeo-filmer på en webbplats så blev thumbnailsen pixlade om den var större än 650px. Detta och mycket mer ska vara fixat nu. Det vi framförallt gillar är tonen som launch-sidan är skriven i. Den är vänlig, rolig, nördig och supereffektiv. Sidan är assnygg och jag som har ett Premium konto på Vimeo har fått testa på det, och om man bortser från vissa barnsjukdomar, så är det verkligen en stor förbättring. Mycket större/bättre än YouTubes rätt mesiga redesign i slutet av förra året.

http://vimeo.com/new

Wunderkit – Det finns väldigt många To Do-appar där ute men den starkast skinande stjärnan det senaste året är utan tvekan Wunderlist av 9 Wunderkinder. Tyskutvecklade tjänster gillar man automatiskt lite mer än andra och detta är inget undantag. Appen är helt gratis, finns till alla devices och synkar med molnet så att ens lista är uppdaterad överallt. Nu släpper de sitt andra släpp: Wunderkit. Task management som det borde vara. Enkelt, tydligt och supersnyggt. Ett måste!

http://youtu.be/dlzMjoD8sgg

Ny, snygg webb

Canvas – Så här ska en byråsida se ut! Kolla parallaxskrollen! Först blir loggan annorlunda sen går bakgrunden över till en sticky nav högst upp. Night and Day-slidern på clients, sååå snygg, kärleken ligger i detaljerna! Horisontella sliderna, allt är nytänk och snyggt som guld. http://www.designmadeingermany.de/sites-we-like/

Handgraft – Så snygg e-handelssida! Märk att den frågar var du kommer ifårn direkt, och lägger på shippingen på priset så man alltid ser vad allt slutligen kostar. Sen att de inte stöder IE över huvudtaget är ju så sjukt fett! http://www.hardgraft.com/

Reebook USA – Utseendemässigt är den kanske inte så stunning som man hade hoppats men de har vågat testa en helt ny navigering med olika stora block och en vertikal skroll. Deras sök är väldigt fin också. http://www.reebok.com/en-US/

App tips

Clear – Kolla GUI:t på denna appen. Sååååå fint, så enkelt!

http://www.realmacsoftware.com/clear/

Thumbs – Roligaste appen just nu är thumbs. Lägg upp en outfit, fråga vad folk tycker om den, eller ställ två saker mot varandra och låt folket avgöra.

http://thumb.it/

(Bonus: Jag har startat en Tumblr som heter ”Idiots on Thumb”. Följ den på http://thumbidiots.tumblr.com/)

Alfred – Till sist ett Mac-app tips (som är typ 2 år gammalt men det tillhör hygien/standard vid det här laget). Använder du inte Alfred på din Mac så använder du inte din Mac rätt. Ladda ner det gratis på App Store. Sen lägger du in custom searches (jag har t.ex Tyda.se, Rotten Tomatoes och andra vanliga sök jag gör inlagda). Efter en tid köper du PowerPack och laddar sen ner några sköna extensions (http://mac.appstorm.net/roundups/productivity-roundups/20-must-have-alfred-extensions/)

Shoutouts

Denna veckan vill jag tacka Marcus Johansson, Sean Jamshidi, Johan Ekhager, och alla andra killar i Unga Creuna, som har gett mig mycket tips på webbsidor över Skype. Har du ett bra tips på en sida eller en nyhet så mottages det gärna.

/Nils och Anders (in spirit)

Den digitala veckan som gått – Vecka 3

Jag och Anders Liljedal fick nyligen en idé. Detta är det första av många nyhetsbrev i vad vi har valt att kalla ”Den digitala veckan som gått – av Anders och Nils”. Där vi listar saker som hänt i veckan, helt och hållet utifrån oss själva. Anders är bortrest denna veckan, så jag får ta det själv idag men sen är tanken att vi skickar upp ett inlägg varje fredag, som en liten skön grej.

Four Seasons

Four seasons har släppt en preview av sin nya webbplats, och den är fabolous! Visst, den har kostat smått otroliga 18 miljoner dollars, men vi gissar att det ingick ett bokningssystem och lite mer grejer i den ordern. De har även fotat alla sina hotell världen över. Det kanske bästa av allt är att de kommer länka till TripAdvisor och andra användargenererade recentionssidor, eftersom de är så säkra på att deras hotell är bäst i världen. Transparans!

http://www.preview.fourseasons.com/

Censur av internet

Den stora snackisen i webbvärlden denna veckan var SOPA och motståndsrörelsen till denna vansinniga lag. Wikipedia, Wordpress och upp till 1000 andra sidor blockade sina sidor och visade ett meddelande där man förklarade vad SOPA (och den bortglömda PIPA) innebar och hur man skulle göra för att stoppa den.

FBI stängde ner MegaUpload, en av världens största filskickar-sidor och arresterade ägarna (varav en av dom visade sig vara hiphop-producenten Swizz Beatz). Det är helt sinnessjukt att amerikanska staten gör ärenden åt skivbolag

en och stänger ner sidor, och det tyckte hackernätverket Anonymous också som utförde sin största attack någonsin och stängde ner FBIs och alla stora skivbolags webbplatser, samt postade namn, adress och telefonnummer på Universals VDs fru och barn. Försöker du förstöra internet, så förstör internet dig.

Övrig snygg webb

Filip och Fredrik släppte sin nya hemsida där de har tänkt samla allt eftersnack kring sin podcast samt egna material. Sidan i sig är inte särskilt mind blowing men de har tänkt till när det gäller podcast-spelaren på sidan, som länkar till, och visar bilder om de ämnen de pratar om: http://www.filipochfredrik.com/

Detta är den coolaste skroll-effekten ni kommer se

denna veckan, lätt: http://acko.net/blog/making-love-to-webkit/

På samma skrollämne, snygg sida för nya TV4 News: http://www.tv4news.se/

Programming the Mobile Web

Detta är bok-recension av en bok om att göra mobila webbsidor. Bara mobiler. Inga laptops eller stora skärmar. Nu håller jag egentligen med de människor som säger att ”det finns ingen mobil webb det finns bara webb”. Så… ja, vi diskuterar mer om det sen. Boken är skriver av en man med det fantastiska namnet Maximiliano Firtman. För mig var han faktiskt helt okänd men efter lite efterforskningar så visade det sig att han faktiskt skrivit två andra böcker: ”jQuery Mobile: Up and Running” och ”Mobile HTML5″. Den här boken är utgiven 2010 av O’Reilly som skrivet en rad böcker om programmering. Bland annat ”Head First”-böckerna och ”JavaScript: The Definitive Guide” som jag faktiskt läser just nu och kanske kommer recensera senare om andan faller på.

Jag läste den här boken av två anledningar. Jag kände att jag behövde lite bättre koll på hur webb fungerar på andra mobiler än dagens Android och iPhone. Den andra anledningen var helt enkelt att boken fanns tillgänglig på kontoret. Ka-tsching. Jag hade faktiskt fått en liten snabbrecension av två medarbetare innan jag började läsa så mina förväntningar var på lagom nivå. Jag förväntade mig en bok om ett helt hav mobiler och alla deras egenheter och det var precis vad jag fick. Det var även det jag tyckte var intressant. En bok full av tabeller med information om vilka features som är kompatibla med vilka telefoner.

Att summera den här boken känns lite halvsvårt. Lite som att summera en telefonbok. Inte för att den är tjock utanför att den är så fakta-späckad. Men jag ska göra ett försök. Boken består av 14 kapitel. Det första kapitlet heter ”The Mobile Jungle” och behandlar myter om mobil webb, vad som räknas som mobil egentligen och de vanligaste mobilmodellerna, märkena och plattformarna. De följande kapitlena går sedan igenom browsing, vilka webbläsare som finns och deras kapacitet, hur man bör lägga upp arkitekturen och sin egen utvecklingsmiljö. Sedan följer ett par kapitel om markup, CSS, JavaScript och något halvluddigt om ”nya” tekniker såsom HTML5, Ajax och RIA. Det skrivs en hel del om hur man ska sniffa runt och känna av vilka mobiler man har att göra med så kallad ”server side detection” och WURFL rekommenderas för ändamålet. Ett kort kapitel om debuggning och testning som i stort sett kan sammanfattas som att det är svårt och superklurigt. Här skulle jag vilja komplettera med ett tips om utmärkta weinre som boken inte tar upp. (kanske för att den skrev innnan weinre uppfanns…?)

En sak jag skulle vilja ta gå in lite djupare på är författarens syn på ”One Web”. Det jag nämnde i inledningen här. ”One Web” konceptet handlar om att vi ska kunna skapa en gång och att det vi skapat sedan ska fungera och vara tillgängligt på alla enheter överallt. Maximiliano menar att detta inte kommer att vara möjligt på flera år. Jag håller inte med. Jag tycker att det alltid har varit möjligt i en viss utsträckning. Ja, man behöver testa och anpassa och tweaka. Men man ska inte alltid behöva göra flera versioner av samma innehåll. Jag gillar inte heller författarens syn på ”device-detection” utan jag tror på ”feature-detection”, det vills säga att istället för att kolla vilken enhet det är så kollar vi vad enheten är kapabel till. Jag vet att vissa tycker att detta är en utopi och något orealistiskt men det är något som vi måste sträva efter. Speciellt om vi vill bygga framtidssäkra webb-sidor som går att underhålla och inte växer till monster på enbart något år. Jag tycker att ”progressive enhancement” som jag tagit upp tidigare är vägen att gå.

Det jag verkligen gillade med boken (eller kanske snarare med författaren) var att det verkligen är nernördat. En hel mängd egenheter och klurigheter hos olika enheter tas upp. Det finns fina små rutor med fällor att undvika. Det hela känns lite som en bok-version av quirksmode om mobil webb. Det jag starkt ogillade och som jag redan tagit upp är författarens benägenhet att hela tiden bygga efter specifika modeller och märken. UA-sniffning är inte något fint men argument för och emot diskuteras tyvärr inte.

Boken är trots brister väldigt läsvärd och viktig. Framförallt tycker jag att det är viktigt för oss som jobbar med utveckling att inte glömma bort resten av mobil-världen. Det är viktigt att förstå att världen inte består av iPhones med snabba internetuppkopplingar och moderna webbläsare. Jag tycker att man ska läsa denna bok som trots sina tabeller och uppslagsbok-känsla faktiskt påminner oss om detta.

A few selected ReSharper shortcuts

About a month ago, I and my colleague Tommy Bryntse visited a ReSharper presentation held by guru Hadi Hariri. Afterwards, we presented a summary to our .NET developers at Creuna of what we believe was the most useful ReSharper keyboard shortcuts demonstrated.  This is the list of the shortcuts we found most useful.

Ctrl + T:  Lookup type, either by name or by camel case letters (e.g. DT for DocumentType).

Ctrl + Shift + T: Same as Ctrl + T but instead searches for file name.

Alt + ?: Navigate to member within a class. Very useful for quickly finding a specific method, property or event within a type.

Alt + ´: Opens up a Navigate to dialogue with navigation options such as implementation, declaration, base symbols etc. for type at current caret position.

Ctrl + ,: Opens up a dialogue showing the locations of recent visited files.

Ctrl + Shift + ,: Opens up a dialogue showing the locations of recent edits.

Ctrl + Shift + Backspace: Takes caret back to most recent edit location.

Ctrl + Shift +R: Displays current refactorings available for the caret position.

Ctrl + W: Extends selection block-by-block.

Alt + Shift + Space: Global IntelliSense searching for types within all available namespaces and automatically adds a Using statement for the namespace of the contained type.

Alt + Ins: Insert new constructor, implement missing members, etc.

Ctrl + Alt + Ins: Creates a new class, struct, etc. in a new file.

Ctrl + R + V: Introduces a variable for the current selection.

Ctrl + E + U: Wraps statement within if-statement, using block, try-catch, etc.

Ctrl + Shift + V: Cycle clipboard.

Pivotal Tracker är riktigt bra


På Creuna så använder vi Redmine som projekthanteringssystem. Ett möjligt alternativ skulle kunna vara Pivotal Tracker. Jag har hört mycket gott om produkten så jag ville testa. Det har ett superintuitivt interface, men det bästa av allt: git-integrationen

Jag lägger upp mina stories i pivotal och prioriterar genom drag and drop. Jag gör även en snabb estimering, som pivotal använder för att planera vad som borde hinnas med i sprinten baserad på teamets tidigare utvecklingshastighet.

När det är dags för mig att jobba på något så skriver jag:

➜ git feature
Retrieving latest features from Pivotal Tracker…
Story: Revert account link in prefs / account
URL: http://www.pivotaltracker.com/story/show/11125931
Updating feature status in Pivotal Tracker…
Enter branch name (will be prepended by 11125931) [feature]: revert-account-link
Creating 11125931-revert-account-link branch…
Switched to a new branch ‘11125931-revert-account-link’
/Users/matti/projects/fooproj git:(11125931-revert-account-link) ✗

Det hämtar den senaste storyn från trackern och skapar en ny lokal feature branch. Fördelen med feature branches är att man alltid har en körbar version i master trunken. Man kan enkelt jobba på flera features samtidigt genom att ha dom i olika branchar. Man håller de lokala brancharna ajour med master branchen via sk. rebasing.

Man committar delstegen man gör på storyn. När man är klar så skriver man
➜ git finish

Det markerar storyn som klar i pivotaltracker som håller koll på hur lång tid det tog att genomföra storyn jämfört med hur komplex man hade estimerat den till att vara = din utvecklingshastighet). Sen tar den bort feature branchen och mergar in i master trunken.

Det blir inte enklare än så här. Det är agilt utan skitsnack. Jag har bara kört på soloprojekt hittils, men det borde ju vara ännu bättre i team.

Playing mobile – gallery web app

Nu när mobildebatten är som hetast tänkte jag passa på att slänga in ett projekt som jag byggde i helgen. Det är en webapp för att visa mitt privata bildgalleri på telefoner och tablets.

Idén var att bygga ett flexibelt ramverk som fungerar bra på alla devices och som anpassar sitt utseende efter skärmens storlek på ett responsibelt sätt.

På en iphone ser resultatet ut så här

För att deklarera beteendet av en app använder jag några smidiga meta-taggar

<meta name="apple-mobile-web-app-capable" content="yes">
Vilket talar om för webbläsaren att detta är en webbapplikatioon och att vi inte vill att den ska ladda menyerna som tillbaka, bokmärk
<meta name="apple-mobile-web-app-status-bar-style" content="default">
Vi vill att statusbaren på iphone ska vara lite snyggare svart istället för den vanliga grå.
<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=no">
Vi vill inte att den ska vara zoombar eftersom den redan är anpassad för mobiltelefoner
För att se ut som en app måste den givetvis ha en ikon och startskärm
</div>
<div>
<div><link rel="apple-touch-icon" href="apple-touch-icon.png"/></div>
<div><link rel="apple-touch-startup-image" href="splash.png" /></div>
<div>
Och eftersom detta i förstahand är en mobil webbapp så låter vi huvudstilmallen gälla för alla men lägger in anpassade stilmallar för de enheter som förstår media-queries samt har en skärmstorlek som är bredare än 640px
</div>
<div>
<div><link rel="stylesheet" href="styles/main.css"></div>
<div><link rel="stylesheet" href="styles/ipad.css"␣ media="only screen and (min-width:640px)"></div>
<div><link rel="stylesheet" href="styles/gallery.css"></div>
</div>
<div>
För bredare enheter kan innehållet alltså struktureras om och resulterar i detta.
På enheter mellan 640px och 800px (stående ipad) visas albumlisningen som ett lager som placeras framför bildlistningen, men för enheter bredare än 800px (liggande ipad) ligger albumlistningen ständigt till vänster om bilderna och gör det lättare att bläddra mellan album.
En demo av applikationen finns att testa här. Den är testad på desktop,iphone4,ipad och android Legend. Testa gärna och rapportera eventuella problem som uppstår i er telefon, eller testa i exempelvis Chrome och skala fönster fram och tillbaka för att se magin i @media-queries.
Kommentarer och frågor välkomnas varmt!

Tes-Antites-Syntes. Vad Hegel kan lära oss om Flash och HTML5

Den tyska filosofen Georg Wilhelm Friedrich Hegel (1770–1831) tillskrivs bland annat att ha formulerat utvecklingsprincipen “Tes – Antites – Syntes”, som säger att all förändring sker genom motsättningar. I webbutvecklarvärlden tycks detta visat sig extra tydligt när Steve Jobs för snart ett år sedan deklarerade att Flash (tes) aldrig skulle få finnas i deras iPhones och iPads, utan att HTML5* (antites) i stället skulle få göra vad Flash gjort på webben.

Och tycka vad man vill om beläggen Steve hade för sina påståenden, och om sakligheten hos den efterföljande virtuella mobben som äntligen fått en stark ledare för sitt uppror mot en CPU-dödande, proprietär, icke-öppen plugin i våra webbläsare, men kanske var det dags för en förändring. Flash har under ett halvt decennium växt sig till en av de drivande motorerna för det som gjort webb-baserad underhållning till det stora folknöjet. YouTube, alla tusentals virala kampanjer och spel som användare flockats till – webben hade inte sett ut som den gör i dag om det inte vore för Flash. Men denna fenomenala resa tog även några mindre lyckade sidospår. Hemsidor byggda helt i Flash, Banners som får siter att kännas lika rogivande som ett tivoli, “skip-intro”-startsidor…

Tack vare detta upproret har vi Flashutveckare mer eller mindre tvungits att titta utanför vår bekväma sfär och verkligen ta till oss vad HTML5* kan bidra till, men även att förstå var Flash fortfarande står att föredra. Många tongivande Flash-utveckare har på sistonde börjat fördjupa sig i jQuery, skriva canvas-hjäpbibliotek, och för att vidga sina vyer ytterligare börjat utveckla nativt för iPhone och Android. Allt detta medan Flash fortsättar finnas, frodas och vidareutvecklas.

Adobe, företaget som står bakom Flash har varken stuckit huvudet i sanden eller lanserat något massivt frontal-angrepp tillbaka mot Apple och dess allierade i denna frågan, utan arbetar för att få dessa världar att fungera ihop. Att iPhone-appar byggda i Flash numera tillåts i Apples Appstore är mest en parantes i detta sammanhanget, Adobe vet att i takt med att webbläsare blir kapabla till mer och mer behöver de skapa verktyg som hänger med i tiden.

Hegels sista stadie i utvecklingprincipen, syntes-stadiet beskrivs som att “det nya införlivas med det gamla och harmoni gäller åter”. Flash och HTML5 kommer aldrig att kokas ihop rent teknologiskt, men jag tror att vi under 2011 kommer att bättre lärt oss hitta det mest lämpade verktyget för det vi bygger – vilket ibland kan innebära att använda både och!

*HTML5 väljer jag att använda som ett samlingsbegrepp för de html/javascript/css-baserade standards/bibliotek som stödjs av alla nyare webbläsare. Det är förenklande och något missvisande, men jag om du läst ända hit väl förstår principen :)

Coders at Work

Coders at Work är en samling intervjuer baserade på samtal författaren Peter Seibel haft med 15 olika programmerare. Siebel är själv en erfaren programmerare vilket antagligen har bidragit till att boken blivit så bra, då han kunnat ställa de rätta frågorna. Många av de intervjuade var okända för mig men några namn var bekanta: Douglas Crockford som skapade JSON, Joshua Bloch som skrev Java-biblioteken för collections och Brendan Eich som uppfann JavaScript. Boken avslutas med en intervju med Donald Knuth, en programmerarlegend som borde vara välkänd för de flesta, inte minst för att han skrev ”The Art of Computer Programming”.

Boken är såklart fylld med intressanta anekdoter och citat, men det som jag fann mest intressant var att många av dem som gjort saker som mer eller mindre förändrat världen var sådan utstuderade pragmatiker. Många utvecklare idag, inte minst jag själv, tenderar att vara purister till viss del, må det gälla TDD, S.O.L.I.D., dynamisk typning, statisk typning, graceful degradation, progressive enhancement etc. etc. Flertalet av de intervjuade i denna boken gav dock intrycket av att till viss del tillåta sig skjuta från höften, bara så länge fungerande mjukvara levererades. Väldigt uppfriskande läsning.
Coders at Work var överhuvudtaget väldigt rolig och underhållande, den innehåller flera riktigt sköna berättelser om debugging från den tiden ett program bestod av en samling papper med hål i.

How to commit code

When you commit (check in) your code to the source control system there are some things you should do to ensure quality and trackability.

  1. If your source control system supports change sets, that is commiting a set of files as a bundle, make sure you just include one issue in that bunch. You shouldn’t fix a bunch of things in all ends of the project and then commit them all in the same change set. The change set may well span over multiple projects tho, because one change set should include all the changes done to resolve that particular issue. A change set should also be compilable upon commit and not rely on the next one to be able to work.
  2. Before you commit your change set you should diff every file against the repository version and see that you only commit things that were intended to commit. It’s pretty easy to commit code you commented out, temporary variable names or debugging code if you don’t review your own commits. If your commit is in central parts of the application or very large it is good to have another team member sit next to you when reviewing the changes.
  3. When you’ve limited your change set to include only one issue and reviewed all the changes done, you should write a short description of the content in your change set. This is written as the ”commit comment” and will be visible when you look at the log for your repository. Since your change set only should deal with one issue it is easy to write a brief description of what you’ve done. It’s also good to include an issue id if you have an issue tracking system.

I guess many readers might think that this takes a lot of time – but think of all the time you save due to the higher quality instead! I’ve done this with all commits for many years now and it is very uncommon that I add bad code to the repository. It’s not at all uncommon that I notice bad code while doing my personal code review upon commit tho!

My biggest problem when converting to this more professional approach was to limit my changes to only one issue. Yet today there are times when I can’t commit only one change as I’ve fixed two (or more) issues in parallell without commiting the first one – and when they touch the same file it isn’t possible to have only one change in the change set. If one of the fixes are small I usually solve this by reverting the changes for that issue temporarily while commiting the first change and then redo the changes for the next commit – but once in a while I need to write a commit comment with the dreaded word ”… and …”.