Arkiv för ‘Tech’

Den digitala veckan som gått – Vecka 9

Hallå internet lovers! Hur är läget?

Det har varit en rätt händelselös vecka, men vi introducerar ett helt nytt grepp denna veckan: Website Battle! Anders och Nils tycker olika om en webbplats och debatterar om varför den är bra/dålig.

Website Battle: Bloomberg Corporate Websida

“The worlds first one page infinite-scroll corporate site”

Nils: Sidan är som en barnpool, grund men bred. Att sidan bara är en startsida med olika siffror som länkar ut till olika delar av Bloomberg, säger mycket om företaget i fråga, och passar in i deras koncept helt och hållet. Att siffrorna hela tiden räknar upp är ju fantastiskt! Skrollen tar aldrig slut vilket bidrar till en upptäckarlust och på andra vändan så ser man saker/länkar/fakta man missade första gången. Älskar nytänket och applåderar en unik företagssida.

Anders: Det här en sida som ska förklara vad Bloomberg är. Det gör den inte. Den rapar upp dampiga siffror som jag inte ser ett sammanhang i. För mig är deras evighetsskroll fullständigt ointressant, vad vill de uppnå med den? Tror de att besökarna kommer att sitta och livsnjuta medan de glatt scrollar till universums ände samtidigt som de på ett “nytänkande” sätt får reda på att börsen i Mexiko öppnar om 3 timmar och 23 minuter. Det här är nytänk för kreativitetens skull. Många företags “Om oss”-sidor är long overdue för ett nytt grepp. Men, det här är inte vägen att gå enligt mig. Förklara vad ni gör, vad ni kan göra för mig och varför jag ska bry mig. Inte ett dugg mer komplicerat än så.

Vad tycker du om Bloombergs företagssida?

http://www.bloomberg.com/company/

iZettle goes Nordic

En av våra favisar, iZettle, har lanserats i resten av de nordiska länderna. De verkar också ha planer för en lansering i Storbritannien. De säger själva att de har runt 25 000 användare i Sverige. Kul! Vi har testat tjänsten med den tillhörande kortläsaren och rekommenderar den starkt, går supersmooth.

http://techcrunch.com/2012/02/28/izettle-launches-in-the-nordics-uk-launch-on-the-cards/

Tele2 Företag

Ny webbplats från Tele 2 som riktar sig mot företag. Snygg med en mäktig navigeringsmeny. Inget direkt mind blowing i funktionsväg, men rätt schyssta sliders och beställningsformulär som slidar ut. Sidan är snygg, det är den, men lite mer hade de nog kunnat komma med.

http://www.tele2.se/foretag.aspx

Zynga.com

Zynga verkar vara på gång att bryta sig ut ur Facebooks kladdiga grepp. De har nu lanserat Zynga.com. Historiskt så har förhållandet mellan dem varit lite frostigt. Facebook tvingade Zynga att ge dem 30% av de dollars som spelarna använde för att köpa kossor. Vi vet personligen inte om man kan köpa kossor, men antar det. Men, anledningen till att Zynga har 100 biljoner spelare är tack vare Facebook och våra mammor som spelar Farmville. Biter de handen som föder dem genom att bryta sig loss eller är de tillräckligt stora för att klara sig själva?

http://company.zynga.com/

Anywake

En ny svenskutvecklad app från Lufthansa som är en alarmklocka som ska få dig att längta bort till främmande städer. När du vaknar upp så spelas ljudet från en stad, gissar du rätt (sömndrucken) inom 60 sekund så vinner du en rabatt på ett Lufthansa-flyg till just den staden. Appen i sig är supersnygg och när man ställer in tiden på alarmet är riktigt snyggt! Vi hoppas bara inte att konceptet faller på att Lufthansa typ ger 50 kr rabatt utan verkligen gör något så man kan tänka sig att åka.

http://www.anywake.com/

Apple

I väntan på att Apple lanserar sin iPad 3 och Apple TV 3 nästa vecka så kommer vi här med två rätt roliga länkar om allas vårat favorit företag för oliktänkande.

En blogg som listar saker som Apple är värd mer än. Bland annat hela Amerikas flotta, 1 miljard iPads och hela världens lotteriförsäljning. Sätter saker i perspektiv.

http://thingsappleisworthmorethan.tumblr.com/

Här är en jämförelse mellan Apple och Microsofts <title> tag, en av de är rätt säkra på sin sak den andra darrar lite känns det som.

http://cl.ly/EMs0

WTF QR Codes

Det var inte länge sen som den största hypen i världen var QR-koder, efter ett år av användande så har man smått börjat förstå att de inte funkar så bra. Detta på grund av att de används helt fel av alla. Ingen tar upp sin telefon och scannar på bussen, tunnelbanan eller liknande för att veta mer om en reklam. Det finns tillfällen då QR-koder kan vara en bra genväg till att läsa mer, här är en blogg som listar väldigt roliga exempel när de inte är det.

http://wtfqrcodes.com/

PS. Om ni verkligen vill spela något som liknar Farmville eller Cityville så rekommenderar vi The Simpsons: Tapped Out, till iPhone och iPad. Anders är två levels högre än Nils. ‘Nuff said.

Den digitala veckan som gått – Vecka 7

Como estas web lovers?

Wunderkit förblir gratis

Det tyska undret 6Wunderkinder släppte uppföljaren till den bästa To Do-appen (tills Clear släpptes nu i veckan) för ett par veckor sen, vi skrev om det i ett tidigare brev. Vi har båda använt det ett tag nu och älskar det, Nils har totalt bytt ut det mot alla andra ärendehanteringsprogram. När man signade upp sig för betan så fick man en månad som Pro-User gratis, med underförstått att det sen skulle kosta pengar. Klassisk gammal affärsidé, lite meh över det hela. Efter feedback från användare har de nu istället bestämt sig för att Wunderkit i dess grundutförande förblir gratis, för alla, för alltid. Istället kommer de ta betalt för uttökade tjänster, såsom bättre support och kommande appar. Vi jublar smått här på kontoret över människor som har affärsplaner anpassade för samtiden, och inte bara kör på samma gamla visa.

http://www.6wunderkinder.com/blog/2012/02/15/from-berlin-with-love-wunderkit-is-now-free-forever/

Clear har släppts!

Världens bästa To Do-app är korad! Vi länkade till pre-release videon för två veckor sen och nu har äntligen Clear släppts till iPhone. Det är det sjukaste som hänt. GUI:t är så genomtänkt, så självklart och så snyggt! Allt är intuitivt, allt är bra! Ladda ner den direkt och gråt av lycka du med.

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

Avaaz når 13 miljoner användare

Revolutionen må inte vara TV-sänd, men det kommer absolut vara online. Demonstrationer ‘68 i all ära men den riktiga förändringen sker när miljoner efter miljoner går ihop. Avaaz är världens största politiska organisation och har hjälpt till att stoppa flera vansinniga lagar genom åren. Den senaste månaden har de fått 2.5 miljoner nya medlemmar och väger nu in på 13 miljoner aktivister. De fick 5 miljoner namnunderskrifter i USA mot SOPA/PIPA. De samlade in 3.5 miljoner dollar till Syrien, när omvärlden stog handfallna och tittade på massakrerna.

http://www.avaaz.org/en/

Appar är samtiden, webbsidor framtiden

Jacob Nielsen är en gammal webbräv som i princip själv bestämd att det behövs standarder för gränssnitt på webben. Hans ord väger oerhört tungt, och även om vi tycker att han är lite väl bakåtsträvande allt för ofta nuförtiden (kolla hans hemsa lix, ser inte dunderrolig ut dirr) så lyssnar vi när han talar. Jacob har nu ställt appar mot mobile webbsidor och det står klart att appar slår webben på fingrarna i nuläget men att det kommer ett skifte i sinom tid när webben tar över igen.

http://www.useit.com/alertbox/mobile-sites-apps.html

Tysk karbonkopia av Wrapp

Världens mest osympatiska bröder, efter Nick och Aaron Carter, är utan tvekan de tre tyska bröderna Samwers som driver start-up byrån Rocket Internet, vars väldigt enkla affärsidé är att ta framgångsrika webb start ups från USA och kopiera de rakt av. Nytt namn, ny design, EXAKT samma idé. De har gjort det mot eBay, Facebook, Groupon, Fab.com och nu verkar de som att de har siktet inställt på våra svenska favoriter Wrapp. De har nu annonserat att de snart släpper tjänsten DropGift snart. Vi gillar start ups och således gillar vi inte Rocket Internet.

http://gigaom.com/2012/02/13/samwers-clone-wrapp-have-they-gone-too-far-this-time/

Mothereffinganimatedgif

Att animerade gif-bilder har tagit internet med storm lär ingen ha missat och sidor och a

http://mothereffinganimatedgif.com/

Snygg parallax-skroll

Inzeit – Skoja inte med mig va snygg denna sidan är! Skrolla och bli glad. När mobilappen swipar till vänster när du skrollar nedåt är så sinnessnyggt! Bilderna, navigeringen med piltangenterna, cirkeldiagrammet! Detta är en bra byråsida.

http://inze.it/

Ha det bra, och trevlig helg (och fredagsöl!).

/Anders och Nils

Den digitala veckan som gått – Vecka 6

Hallå!

Rykten om Google

Det tisslas och tasslas om att Google är på väg ut med två ny produkter/tjänster. Google Drive verkar vara på gång igen. Det pratades mycket om det för ett par år sedan men Google la enligt uppgift ner projektet för att det var för dåligt (bra där!). Nu är det tydligen på gång igen. Det är helt enkelt en Dropbox-liknande molntjänst.

Google verkar även vara på gång med ett slags “home entertainment system” om man ska tro på rykten. Tydligen har ett flertal anställda börjat testa systemet hemma.

http://www.theverge.com/2012/2/9/2787770/google-branded-home-entertainment-center-2012-launch

Kickstarter samlar in mills

Den oerhört trevliga fundraising-siten har nu två projekt som lyckats samla in över en miljon dollars styck. Ett av projekten är ett spel av Tim Schaffer. Tim ligger bakom bla Monkey Island, Day of the Tentacle och Psychonauts. Med andra ord så är han Gud.

http://www.kickstarter.com/projects/hop/elevation-dock-the-best-dock-for-iphone
http://www.kickstarter.com/projects/66710809/double-fine-adventure

Patentbråk

Nest (www.nest.com) gör termostater. De vill uppfinna termostaten på nytt och göra något bra och mysigt av en produkt som har sett likadan ut i många år. Blev mycket snack och positiv buzz när de lanserade sin produkt förra året. Självklart så stämmer då marknadsledande termostattillverkaren Honeywell dem (http://www.theverge.com/2012/2/6/2775190/honeywell-goes-after-nests-learning-thermostat-for-patent-infringement). De är självklart otroligt förbjudet att försöka uppfinna i en marknad som har sett likadan ut i många år och där en stor spelare tjänar mest pengar utan att utveckla och förnya sig. Konkurrenter är läskigt…

Nest svarar: http://www.theverge.com/2012/2/8/2785553/nest-responds-to-honeywell-suit-will-vigorously-defend-itself-against (tl; dr: o rly?).

Chrome släpps till Android

Världens bästa webbläsare är Chrome från Google. Hade bara alla använt den så hade alla problem löst sig. Nä, men det blåser alla konkurrenter ur parken. Det stora problemet med att surfa på mobilen är att allt man har vant sig vid på datorn, tabbar, bokmärken, söka på sidor och synka mellan devices, inte riktigt fungerat så bra, fram till nu. Alla tabbar du har öppna på din datorn synkas automatiskt till din telefon och är öppnade även när du öppnar appen. Tabbarna läggs under varandra (som man kan styra genom att röra telefonen), det är riktigt coolt och snyggt. Nu går vi Apple-Fanboys och väntar på att Google släpper appen till iPhone (hoppas, hoppas) så vi kan sluta med Safari en gång för alla!

https://market.android.com/details?id=com.android.chrome

Pinterest tutar och kör

Breaking news! Pinterest försöker faktiskt att tjäna pengar på det de gör. Det ses som mycket ofint att tjäna pengar på personer som inte betalar något för användandet av en tjänst. Läs mer här: http://llsocial.com/2012/02/pinterest-modifying-user-submitted-pins/. Vi har fortfarande inte bestämt oss om det är rätt sätt att göra det på men det intressant är att de börjar experimentera så pass tidigt.

Pinterest är även den tjänst som snabbast nått 10 miljoner unika besökare (http://techcrunch.com/2012/02/07/pinterest-monthly-uniques/). Det går bra  nu.

Mailchimp stödjer media queries

Mailchimp har implementerat stöd för media queries när användarna bygger sina mail-mallar. Nils och Anders frågar sig ständigt varför kunder väljer Apsis när det finns suveräna tjänster som Mailchimp och Campaign Monitor istället.

http://blog.mailchimp.com/mailchimp-and-media-queries/

Sveriges Radio släpper interaktiv lyssningstjänst

För två veckor sen pratade vi om Filip & Fredriks nya webbplats och om deras interaktiva sätt att lyssna på deras podcasts. Nu släpper SR en webbtjänst som helt och hållet fokuserar på detta, vi bejublar tjänsten och tror att detta är framtiden, när webb möjliggör något mer än det analoga. Sidan är supersnygg och användare lyssnar på långa radioprogram (P3 Dokumentär, Sommarprat, etc) och bygger tillsammans upp länkar, bilder, läsa mer och relaterat material som gör lyssningsupplevelsen mer än vanligt. Det hela påminner lite om Soundcloud (som vi också nämnde i ett tidigare brev). Nu väntar vi bara på mobilversionen, där tjänsten på riktigt kan bli bra, för vem sitter vid skrivbordet, på jobbet och lyssnar på radio?

http://plus.sverigesradio.se/

Nytt tweets per second-rekord

Under Superbowl så sattes ett nytt rekord i antal tweet per sekund (TPS) i USA. Antalet var 12 233 TPS under slutet av matchen. Det är dock inte världsrekord. Det sattes i Japan i december när filmen Castle in the Sky visades på tv (25 088 TPS). Det bevisar återigen att japaner har sjukt mycket bättre smak när det gäller underhållning än de flesta andra.

TweetBot har blivit 2.0

På tal om Twitter. Den bästa Twitter-appen på marknaden är utan tvekan TweetBot, den har sen den släpptes totalt förnedrat all konkurrens och är man på Twitter är det den enda appen man kan använda, inget snack om saken. I veckan släpptes 2.0 och o’boy vad bra den är nu! En ticker som visar hur många olästa tweets man har kvar, bilder direkt i tweetsen, markerade twitternamn, klickbara länkar direkt i flödet (ingen annan app har det) och klickbara “Retweeted by”, saker som är helt självklara nu när man ser det, men de är först någonsin med att göra det. Lägger man på funktionaliteten som den har innan med swipes för att se Replies, trippeltap för Retweets, och en mute-funktion så nästan svindlar det för ögonen när man använder appen, så bra är den. Ett absolut måste köp.

Som om inte det var nog, dagen efter 2.0-släppet så lanserade de även sin TweetBot för iPad, kritiken om att man var tvungen att betala separat för iPad versionen tystades snabbt ner när man började använda appen (precis som det var när Reeder släppte stand-alone iPad app). Vi hade svårt att hålla oss från gråt så bra den är, så genomtänkt, så snygg, så fina ljud!

http://tapbots.com/software/tweetbot/

Veckans app-tips

Om ni, precis som vi, tycker att en överhängande majoritet av alla möten är fullständigt onödiga så finns nu appen för dig! Ladda ner Meeting Calc, skriv in hur många ni är och vad ni kostar per timme och sätt på tidtagningen. Ni ser snabbt hur mycket pengar ni slösar på att sitta och prata med varandra och försöka nå ett så kallat konsensus.

http://itunes.apple.com/us/app/meeting-calc/id495528200?ls=1&mt=8

Ha det så bra i helgen,
Anders Liljedal och Nils Sköld.

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.

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 …”.

Den nya templatesajten

Som en del av er vet och som en del av er kanske märkt så har templatesajten blivit uppdaterad med ett helt nytt ramverk.

Den nya templatemallen är en från grunden omgjord plattform för att ligga som grund många olika typer av projekt. Markup och stilmallar är byggda för att utgöra en generellgrund anpassad för helt olika typer av design och funktionalitet. (Läs mer…)

Återvinn dina javascript-plugin

De flesta som bygger funktioner i javascript märker efter ett tag att man väldigt ofta skriver om samma funktioner gång på gång för att tillämpningen skiljer sig lite från förra gången. Då försöker man skapa mer generella plugins där man skapar en lista med egenskaper och variabler som man med olika anrop kan påverka resultatet av pluginet.
Exempelvis

jQuery.prototype.myAlert = function(argument){
  var option = jQuery.extend({
    message : "Hello world",
    click : function(){
      alert(option.message);
      return false;
    }
  }, argument);
  jQuery(this).click(option.click);
};
jQuery('a').myAlert({'message':'A whole new world'});

Denna metod är en väldigt generell och kraftfull metod som kan påverkas i sina anrop beroende på vilka argument, man anropar den med. Men problemet med denna lösning är att det är en inkapslad metod som inte kan ärvas och för att anropa olika modifierade instanser av den på samma sajt kräver att man sätter väldigt specifika sökvägar.

jQuery('#mybox .special-intance a.alert').myAlert({'message':'normal message'});
jQuery('#content .some-specific-place a.alert').myAlert({'message':'a even cooler message'});

Istället skulle man vilja skapa en instans av pluginet för varje objekt och sedan modifiera och utöka parametrar och funktioner för undantagen. Detta går att åstadkomma genom att skapa ett publikt objekt för varje plugin, där parametrarna sätts som funktionsparametrar direkt på objektet.

var myAlert = {
    message : 'hello world',
    onclick : function(){
	alert(this.message);
	return false;
    },
    init : function(){
	 //initcode
    }
};
jQuery.fn.myAlertBox = function(args){
    var opt = jQuery.extend({}, myAlert, args);
    function init(){
        $(this).setProperties(opt);
	if(typeof(this.init) == 'function'){
		this.init();
	}
    }
 return this.each(init);
};
jQuery.fn.setProperty = function(mykey, myvalue){
    function init(){
        this[mykey] = myvalue;
    }
    return this.each(init);
};
jQuery.fn.setProperties = function(args){
    function init(){
	for (var key in args) {
		$(this).setProperty(key, args[key]);
	}
    }
    return this.each(init);
};
jQuery(function(){
    jQuery('a').myAlertBox({'message' :'hello all links'});
    jQuery('li a').setProperties({"message":"inside a list"});
});

Objekten kan givetvis utöka jQuery-objektet för att kunna definiera mer avancerade jQuery funktioner och händelser.

Med denna funktionalitet kan vi bygga lättare plugin som utför grundfunktionaliteten i exempelvis ett bildspel eller lightbox, och kan utöka objektet för varje typ av implementation och undvika onödiga buggar och frustration.

Har du åsikter om denna metod eller förslag på bättre lösningar så är jag väldigt intresserad av att diskutera dem.