Madr.se har varit det ständiga offret när jag vill lära mig något nytt. Den nyaste versionen av sajten är inget undantag.
Tack och adjö, Posterous
Jag har verkligen ingenting ont att säga om Posterous då det verktyget hade mycket positiv inverkan på mitt bloggande under två år. Jag känner dock att jag saknat möjligheten att öppna huven och skruva på (läs: pilla på) saker.
Alla gamla inlägg som tidigare låg på Posterous är kvar på sina gamla permalänkar, främst eftersom jag inte har tillåtelse att sätta den här sajten till huvuddomänen då det kräver åtkomst till CNAME.
Jag är inte beredd att gå tillbaka till ett eget webbramverk från scratch som driftas på en egen server i vardagsrummet: snarare vill jag välja något som är utanför min konfortzon och som verkar vara riktigt häftigt och väl igenomtänkt.
Utvecklat i Django
Därav föll mitt val på Django då dess slogan The Web framework for perfectionists with deadlines är alldeles för provocerande för att motstå. Python är ingenting jag använt till stor utsträckning, men det är ett språk som jag alltid haft en bra magkänsla inför.
Att få ihop grundläggande bloggfunktionalitet var busenkelt. Helt på köpet fick jag ett minimalt, men ändå funktionsdugligt CMS för att skriva och hantera inlägg.
Tre saker jag gillar med Django:
- Mallspråket, som lyckas med bragden att göra sitt jobb utan att vara i vägen eller bromsa.
- Konventionerna för filer och kataloger. Det går att hitta saker spontant bara genom att se hur saker är döpta.
- Definitionen av url-routes. Ett enkelt regex.
Drift i Heroku och Amazon S3
Heroku är något jag använder mycket såväl i jobbet som för privata projekt, och en av anledningarna till att den här sajten blev av är för att Heroku sedan en tid stödjer system utvecklade i Python.
På Heroku använder jag följande addons:
- Scheduler, för schemalagda bakgrundsjobb (t ex cachning av sidspalterna på den här sajten).
För att inte lasta Heroku mer än nödvändigt ligger mina statiska filer (CSS, JavaScript, bilder) i Amazon S3 där jag enkelt kan hantera expires-headers och annat.
Mobile first
I dagar där följsam design är poppis är det en yrkesskyldighet att applicera media queries. Jag har dock även valt att köra Mobile first genom att applicera följande principer:
- Endast huvudspalten finns med i HTML-dokumentet som webbläsaren initiellt tar emot. Sidspalter lazyloadas med JavaScript, under villkoret att en media query är sann: CSS media queries in JavaScript, Part 2
- Minimal vikt. Inga CSS- eller JS-bibliotek, bara handskriven, domänspecifik kod som dessutom är minifierad. CSS3 istället för CSS-bilder.
- Stor typografi för löptext med (relativt) hög kontrast. Web Design Manifesto 2012
- Favikoner och diverse anpassningar (
viewportoch annat) för webbläsare i mobiler. - Appcache-manifest för att erbjuda permanent lagring av CSS, favikoner och JavaScript.
Kort om kod
Jag validerar och lintar sajtens frontend-kod med mitt egna verktyg uidev-checklist. Här är min build.xml:
<?xml version="1.0"?>
<project name="madr.se validation" default="validate" basedir=".">
<delete dir="../demo" />
<mkdir dir="../demo" />
<target name="validate">
<!-- html validator -->
<get src="http://madrse.herokuapp.com"
dest="../demo/index.html" />
<get src="http://madrse.herokuapp.com/sida/2"
dest="../demo/archive.html" />
<get src="http://madrse.herokuapp.com/anders-ytterstrom"
dest="../demo/single.html" />
<ant antfile="uidevchecklist.xml" target="validate-html-files" />
<!-- csslint -->
<exec executable="sass">
<arg line="--update scss:css" />
</exec>
<ant antfile="uidevchecklist.xml" target="csslint" />
<!-- jslint -->
<ant antfile="uidevchecklist.xml" target="jslint" />
</target>
</project>
Gällande CSS använder jag senaste kopian av scss-setup som jag i detalj presenterat i Introducing scss-setup.
Koden i produktion är minifierad enligt rekommendation, men för den som är intresserad finns även orginalen uppladdade på S3:
De enda externa script som används är HTML5 shiv och iOS-Orientationchange-Fix. Mer finns under tack-avsnittet.
Tack
Ära den som äras bör. Jag skapade den här sajten utifrån några principer, de främsta här nedan:
- Ethan Schoonover, för färgsättningen Solarized.
- Rachel Andrew, för stor inspiration: Stop solving problems you don't yet have.
- All samlad och delad visdom i HTML5 Boilerplate.
- Nicolas Gallagher & Jonathan Neal för normalise.css.
- Scott Jehl för iOS-Orientationchange-Fix.
- Alexander Farkas, Jonathan Neal och Paul Irish för HTML5 shiv.