<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blogg - Athega AB</title>
	<atom:link href="http://blogg.athega.se/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogg.athega.se</link>
	<description>...</description>
	<lastBuildDate>Fri, 28 May 2010 01:00:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Nordic Ruby</title>
		<link>http://blogg.athega.se/2010/05/28/nordic-ruby/</link>
		<comments>http://blogg.athega.se/2010/05/28/nordic-ruby/#comments</comments>
		<pubDate>Fri, 28 May 2010 01:00:38 +0000</pubDate>
		<dc:creator>Peter Hellberg</dc:creator>
				<category><![CDATA[Konferens]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=722</guid>
		<description><![CDATA[Förra fredagen åkte jag, Robert och Mats ner till Göteborg för att gå på konferensen Nordic Ruby.
Lördag
Standing On the Shoulders of Giants
Corey Haines inledde konferensen med en uppmaning om att reflektera över hur och varför man arbetar som man gör.

“Message passing, not objects”
“Lotus notes is a good document database”

Cucumber Inside
Aslak Hellesøy höll konferensens andra föreläsning [...]]]></description>
			<content:encoded><![CDATA[<p>Förra fredagen åkte jag, Robert och Mats ner till Göteborg för att gå på konferensen <a href="http://nordicruby.org">Nordic Ruby</a>.</p>
<h2 id="lrdag">Lördag</h2>
<h3 id="standing_on_the_shoulders_of_giants">Standing On the Shoulders of Giants</h3>
<p><a href="http://twitter.com/coreyhaines">Corey Haines</a> inledde konferensen med en uppmaning om att reflektera över hur och varför man arbetar som man gör.</p>
<blockquote>
<p style="text-align: left;">“Message passing, not objects”<br />
“Lotus notes is a good document database”</p>
</blockquote>
<h3 id="cucumber_inside">Cucumber Inside</h3>
<p><a href="http://twitter.com/aslak_hellesoy">Aslak Hellesøy</a> höll konferensens andra föreläsning och ämnet var inte helt oväntat testramverket <a href="http://cukes.info/">Cucumber</a> samt dess språk Gherkin vilket nu har extraherats till en <a href="http://rubygems.org/gems/gherkin">gem</a>.</p>
<p>Den imponerande prestandaökningen i Cucumber den senaste tiden beror på att man har bytt ut <a href="http://treetop.rubyforge.org/">TreeTop</a> mot <a href="http://www.complang.org/ragel/">Ragel</a>.</p>
<p>Aslak nämnde även hur <a href="http://wiki.github.com/aslakhellesoy/cucumber/hooks">hooks</a> i Cucumber fungerar.</p>
<h3 id="neo4jrb_the_benefits_of_graph_database">Neo4j.rb &#8211; The Benefits of Graph Database</h3>
<p><a href="http://twitter.com/ronge">Andreas Ronge</a> berättade om sitt projekt <a href="http://github.com/andreasronge/neo4j">Neo4j.rb</a> vilket är en grafdatabas för <a href="http://jruby.org/">JRuby</a>.</p>
<ul>
<li>Inbäddad</li>
<li>ACID</li>
<li>Inga scheman</li>
<li>Inga externa beroenden</li>
<li>Enbart skrivlås</li>
</ul>
<p>De två javabibliotek som är inblandade är <a href="http://neo4j.org/">Neo4j</a> samt <a href="http://lucene.apache.org/">Lucene</a>. Neo4j inkluderar ett flertal algoritmer, t.ex. <a href="http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm">Dijkstra</a>.</p>
<p>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.</p>
<h3 id="rubyists_you_can_write_javascript_again">Rubyists, you can write JavaScript again</h3>
<p>Priset för konferensens effektfullaste introduktion måste gått till <a href="http://twitter.com/drnic">Dr Nic</a> a.k.a. Iron Man.</p>
<p>Han började med att nämna att man kan köra JavaScript i Ruby med hjälp av <a href="http://github.com/jbarnette/johnson">Johnson</a> (<a href="http://www.mozilla.org/js/spidermonkey/">Mozilla SpiderMonkey</a>) och att man kan använda <a href="http://github.com/smparkes/capybara-envjs">capybara-envjs</a> för att testa sina javascript på serversidan. Men efter det var det CoffeeScript som gällde.</p>
<blockquote>
<p style="text-align: left;">“Capybara because it’s AWESOME”</p>
</blockquote>
<p><a href="http://jashkenas.github.com/coffee-script/">CoffeeScript</a> är i korta drag:</p>
<ul>
<li>De bra delarna i JavaScript</li>
<li>Det <a href="http://haml-lang.com/">Haml</a> är för HTML och <a href="http://sass-lang.com/">Sass</a> är för CSS</li>
<li>Går att kombinera med alla JavaScript-bibliotek (<a href="http://jquery.com/">jQuery</a>!)</li>
<li>Kompilatorn är skriven i CoffeeScript! (Går alltså att köra i en webbläsare)</li>
<li>Implicita returvärden</li>
<li>Inga onödiga tecken</li>
<li>Går att köra i <a href="http://nodejs.org/">Node.js</a></li>
</ul>
<h3 id="enough_design">Enough Design</h3>
<p><a href="http://twitter.com/imf">Ian McFarland</a> från <a href="http://pivotallabs.com/">Pivotal Labs</a> pratade om agila designprocesser och hur viktigt det är med en kort “feedback loop”.</p>
<p>Han påpekade att det är viktigt att iterera över problem, oavsett storlek.</p>
<p>En bra design är:</p>
<ul>
<li>Modulär</li>
<li>Principfast</li>
<li>Regelbaserad</li>
<li>UX &gt; Pixlar!</li>
</ul>
<h3 id="the_ruby_advantage_metaprogramming_and_dsls_pdf_22mb">The Ruby advantage &#8211; metaprogramming and DSLs (<a href="http://github.com/niclasnilsson/presentation_ruby_metaprog_dsls/raw/master/dsl-metaprogramming-ruby.pdf">.pdf</a>, 22MB)</h3>
<p>Man kan inte bli annat än imponerad av <a href="http://twitter.com/niclasnilsson">Niclas Nilsson</a> när han så “vårdslöst” tvingar Ruby att bete sig som han vill.</p>
<p>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 <a href="http://en.wikipedia.org/wiki/Abstract_syntax_tree">AST</a>.</p>
<p>Han visade även sin gem <a href="http://github.com/niclasnilsson/properties">properties</a>.</p>
<h2 id="middag_p_soho">Middag på SoHo</h2>
<p>Lördagskvällen spenderade jag med att diskutera <a href="http://hackerspaces.org/">hackerspaces</a>, användning av <a href="http://rad.rubyforge.org/">Ruby</a> för utveckling mot <a href="http://www.arduino.cc/">Arduino</a>, mikrobryggerier i USA och mycket annat.</p>
<h2 id="sndag">Söndag</h2>
<h3 id="from_artist_to_programmer">From artist to programmer</h3>
<p>Dagens första föreläsning stod <a href="http://twitter.com/keavy">Keavy McMinn</a> för, och hon pratade om likheter (och skillnader) mellan konstnärskap och programmering.</p>
<blockquote>
<p style="text-align: left;">“Just make”</p>
</blockquote>
<h4 id="ngra_av_hennes_punkter">Några av hennes punkter</h4>
<ul>
<li>Var öppen för förändringar</li>
<li>Det går att bygga något utan initial finansiering</li>
<li>Vi utvecklas genom reflektion</li>
</ul>
<h3 id="the_mongodb_effect">The MongoDB Effect</h3>
<p>Jag hade gärna sett att <a href="http://twitter.com/modetojoy">Durran Jordan</a> och <a href="http://twitter.com/leshill">Les Hill</a> hade fokuserat lite mer på <a href="http://mongoid.org/">Mongoid</a> än vad de gjorde. Vi vet redan att <a href="http://www.mongodb.org/">MongoDB</a> är häftigt.</p>
<p>Enligt Durran borde man ALLTID använda MongoDB.</p>
<h4 id="mongoid">Mongoid</h4>
<ul>
<li>Rails 2 och Rails 3</li>
<li>Atomiska operationer</li>
<li>Stora dataset</li>
<li>Grymt kriterie API</li>
<li>Scopes som tar block</li>
<li>Master/Slave</li>
</ul>
<h3 id="solid_ruby">SOLID Ruby</h3>
<p>Jag hade verkligen sett fram emot <a href="http://twitter.com/jimweirich">Jim Weirich</a> föreläsning om <a href="http://en.wikipedia.org/wiki/Solid_%28object-oriented_design%29">SOLID</a> och jag blev inte besviken.</p>
<h4 id="ngra_av_hans_punkter">Några av hans punkter</h4>
<ul>
<li>Fördela ansvaret</li>
<li>Monkey patchning i bibliotek är dåligt (Arv framför öppna klasser)</li>
<li>Protokoll är viktiga</li>
</ul>
<h3 id="artificial_stupidity_adding_smarts_to_yer_kode_with_a_little_machine_learning">Artificial stupidity, adding smarts to yer kode with a little machine learning</h3>
<p>Konferensens tyngsta föreläsning (med råge) stod <a href="http://twitter.com/daksis">Randall Thomas</a> från <a href="http://www.engineyard.com/">Engine Yard</a> för.</p>
<p><img class="alignnone size-full wp-image-730" title="The future is about information, not data" src="http://blogg.athega.se/wp-content/uploads/2010/05/the_future_is_about_information.jpg" alt="" width="750" height="376" /></p>
<p>Ämnet var datautvinning genom att använda statistikspråket <a href="http://www.r-project.org/">R</a> och <a href="http://rubyforge.org/projects/rsruby/">RSRuby</a>. Den enligt mig intressantaste delen av föreläsningen bestod i användningen av en <a href="http://en.wikipedia.org/wiki/Support_vector_machine">support vector machine</a> (KSVM i R) för att gruppera data och sedan använda detta för rekomendationer.</p>
<p>Böcker: Super Crunchers, Introductory Statistics with R</p>
<h3 id="software_for_the_human_animal">Software for the Human Animal</h3>
<p><a href="http://twitter.com/hcatlin">Hampton Catlin</a> pratade om skillnaderna mellan manlig och kvinnlig design. Att vi inte är mycket mer än djur och att Internet är den nya vildmarken.</p>
<p>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.</p>
<p>Det finns inga dumma användare, bara dåliga gränssnitt som gör dem dumma.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/05/28/nordic-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Frozen Rails</title>
		<link>http://blogg.athega.se/2010/05/09/frozen-rails/</link>
		<comments>http://blogg.athega.se/2010/05/09/frozen-rails/#comments</comments>
		<pubDate>Sun, 09 May 2010 21:53:46 +0000</pubDate>
		<dc:creator>Peter Hellberg</dc:creator>
				<category><![CDATA[Konferens]]></category>
		<category><![CDATA[CouchDB]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Frozen Rails]]></category>
		<category><![CDATA[Helsingfors]]></category>
		<category><![CDATA[MongoDB]]></category>
		<category><![CDATA[Rack]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=655</guid>
		<description><![CDATA[I fredags gick konferensen Frozen Rails av stapeln i Helsingfors och Athega var självklart representerade.
Rails at GitHub (Chris Wanstrath, @defunkt)
Konferensen 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).
Några av projekten som [...]]]></description>
			<content:encoded><![CDATA[<p>I fredags gick konferensen <a href="http://frozenrails.eu">Frozen Rails</a> av stapeln i Helsingfors och Athega var självklart representerade.</p>
<h2><a href="http://www.slideshare.net/err/inside-github">Rails at GitHub</a> (Chris Wanstrath, <a href="http://twitter.com/defunkt">@defunkt</a>)</h2>
<p>Konferensen inleddes av <a href="http://chriswanstrath.com/">Chris Wanstrath</a> som gick igenom hur Ruby on Rails används på <a href="http://github.com/">GitHub</a>. Vi fick även reda på hur de använder Git (<a href="http://github.com/mojombo/grit">grit</a>, smoke, chimney) och hur de hanterar meddelandeköer (<a href="http://github.com/defunkt/resque">resque</a>).</p>
<p>Några av projekten som nämndes:</p>
<ul>
<li><a href="http://github.com/github/albino/">albino</a> för syntax highlighting genom (front för <a href="http://pygments.org/docs/cmdline/">pygmentize</a>)</li>
<li><a href="http://faker.rubyforge.org/">faker</a> för att generera påhittad data: namn, adresser, telefonnummer</li>
<li>Rack HTTP servern <a href="http://unicorn.bogomips.org/">Unicorn</a></li>
</ul>
<h2>The Plataforma Way (José Valim, <a href="http://twitter.com/josevalim">@josevalim</a>)</h2>
<p>Dagens andra föreläsning hölls av <a href="http://twitter.com/josevalim">José Valim</a> från Plataforma tecnologia. José pratade om autentiseringslösningen <a href="http://blog.plataformatec.com.br/tag/devise/">Devise</a> (bygger på <a href="http://wiki.github.com/hassox/warden/">Warden</a>), domänspråket simple_form (inspirerat av <a href="http://github.com/justinfrench/formtastic">Formtastic</a>) samt <a href="http://github.com/plataformatec/responders">Responders</a> 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.</p>
<div>
<h2><a href="http://www.slideshare.net/mdirolf/mongodb-at-frozenrails">An Introduction to MongoDB</a> (Mike Dirolf, <a href="http://twitter.com/mdirolf">@mdirolf</a>)</h2>
</div>
<p>Jag har sedan jag bloggade om MongoDB <a href="http://blogg.athega.se/2009/07/06/mongodb/">första gången</a> varit intresserad av projektet och nu fick vi verkligen en bra genomgång av <a href="http://www.10gen.com/">10gen</a>’s Michael Dirolf.</p>
<p>Översikt av MongoDB:</p>
<ul>
<li>Atomiska operationer per dokument <em>(:$push)</em></li>
<li>Dynamiska frågor</li>
<li>Hög prestanda (10% långsammare än <a href="http://memcached.org/">memcached</a>, snabbare än <a href="http://couchdb.apache.org/">CouchDB</a>)</li>
<li>Master/Slave failover</li>
<li>Auto-sharding <em>(snart)</em></li>
<li>Servern har en <a href="http://www.mongodb.org/display/DOCS/Server-side+Code+Execution#Server-sideCodeExecution-Storingfunctionsserverside">JavaScript parser</a></li>
</ul>
<h2>Mobile Web Apps with Rails 3 (Yehuda Katz, <a href="http://twitter.com/wycats">@wycats</a>)</h2>
<p><img class="alignnone size-full wp-image-661" title="Yehuda Katz på Frozen Rails" src="http://blogg.athega.se/wp-content/uploads/2010/05/Screen-shot-2010-05-09-at-23.34.43-.png" alt="Yehuda Katz på Frozen Rails" width="750" height="493" /></p>
<p>Även om jag sett föreläsningen tidigare (Efter <a href="http://phillyemergingtech.com/">Philly ETE, Emerging Technologies for the Enterprise</a>) så var det bra att få se den live så att säga.</p>
<p>Några av punkterna som <a href="http://yehudakatz.com/">Yehuda</a> berörde:</p>
<ul>
<li>HTML 5 LocalStorage (samt Offline API)</li>
<li>Föredra gammal data</li>
<li>HTML == static asset</li>
<li>Betrakta webbläsaren som en API-klient</li>
<li>“Sip, don’t gulp”</li>
</ul>
<p>Projekt:</p>
<ul>
<li><a href="http://github.com/wycats/rack-offline">Rack::Offline</a></li>
<li><a href="http://github.com/wycats/jquery-offline">jQuery Offline</a></li>
<li><a href="http://github.com/jquery/jquery-tmpl">jQuery tmpl</a></li>
<li><a href="http://github.com/janl/mustache.js">Mustache.js</a></li>
</ul>
<h2>Cucumbered (Joseph Wilk, <a href="http://twitter.com/josephwilk">@josephwilk</a>)</h2>
<p style="text-align: right;">
<img class="size-full" title="Frozen Rails Cucumbered" src="http://blogg.athega.se/wp-content/uploads/2010/05/frozen_rails_cucumbered.jpg" alt="Frozen Rails Cucumbered" width="750" height="258" /><br />
<small>(Foto: <a href="http://twitter.com/chrisco">Chris Comella</a>)</small>
</p>
<p>Den bästa föreläsningen på hela konferensen stod <a href="http://blog.josephwilk.net/">Joseph Wilk</a> för, ämnet var <a href="http://cukes.info/">Cucumber</a> 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 <a href="http://treetop.rubyforge.org/">TreeTop</a> till <a href="http://www.complang.org/ragel/">Ragel</a>)</p>
<p>Några av Josephs punkter:</p>
<ul>
<li>Cukover vs. Autotest</li>
<li><a href="http://github.com/mynyml/harmony">Harmony</a> (Frontar Trace/SpiderMonkey i Ruby)</li>
<li>cucumber &#8211;format</li>
</ul>
<h2><a href="http://www.slideshare.net/jweiss/couchdb-on-rails-frozenrails-2010">CouchDB on Rails</a> (Jonathan Weiss, <a href="http://twitter.com/jweiss">@jweiss</a>)</h2>
<p>Jonathan 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 <strong>BRA</strong> grej när man gör lite mer avancerade saker)</p>
<p>Några av punkterna:</p>
<ul>
<li>“Built for the web”</li>
<li>Skalar bra</li>
<li>Inga konstigheter: HTTP, JavaScript, JSON</li>
<li>Revisioner (id + rev)</li>
<li>Inga collections (på gott och ont)</li>
<li>“JavaScript, easier than SQL”</li>
<li>Värdet kan vara komplex JSON</li>
<li>Nycklarna kan vara arrayer</li>
<li>Statiska frågor (map/reduce)</li>
<li>Compaction of B-tree via HTTP request (tänker inte ens försöka översätta <img src='http://blogg.athega.se/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>HTTP cache (<a href="http://varnish-cache.org/">Varnish</a>) och lastbalansering (<a href="http://haproxy.1wt.eu/">HAProxy</a>, <a href="http://nginx.org/">nginx</a>)</li>
<li>Inbäddad <a href="http://lucene.apache.org">Lucene</a> (<strong>Killer feature?</strong>)</li>
</ul>
<h2><a href="http://www.slideshare.net/carllerche/frozen-rails-slides">Rails 3: Tasty Burgers</a> (Carl Lerche, <a href="http://twitter.com/carllerche">@carllerche</a>)</h2>
<ul>
<li><a href="http://gembundler.com/">Bundler</a> (Isolation av gems)</li>
<li>Möjligt att använda <a href="http://jquery.com">jQuery</a> i Rails!</li>
<li>Routern kan nu ha valfria segment, scopes och HTTP verb</li>
<li>Rack överallt!</li>
<li><a href="http://github.com/rails/rails_upgrade">rails_upgrade</a></li>
</ul>
<h2>Perfectionism (Jarkko Laine, <a href="http://twitter.com/jarkko">@jarkko</a>)</h2>
<p>Priset 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 <strong>perfekt</strong>. (vilket det kanske aldrig blir) Han rekomenderade även boken <a href="http://www.cluetrain.com/book/index.html">The Cluetrain Manifesto</a> (hela bokens text)</p>
<p><a href="http://blogg.athega.se/wp-content/uploads/2010/05/perfection.png"><img class="alignnone size-full wp-image-656" title="SHIP!" src="http://blogg.athega.se/wp-content/uploads/2010/05/perfection.png" alt="Perfection, Minimally Viable Product, Markets are conversations, Ship!" width="750" height="690" /></a></p>
<p><span style="color: #999999;">Oh, hela konferensen filmades så när filmerna dyker upp på nätet så länkar jag dem här.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/05/09/frozen-rails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unobtrusive JavaScripts</title>
		<link>http://blogg.athega.se/2010/04/10/unobtrusive-javascripts/</link>
		<comments>http://blogg.athega.se/2010/04/10/unobtrusive-javascripts/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 14:31:05 +0000</pubDate>
		<dc:creator>Markus Ullmark</dc:creator>
				<category><![CDATA[Kod]]></category>
		<category><![CDATA[Webbutveckling]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=633</guid>
		<description><![CDATA[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.
Jag är [...]]]></description>
			<content:encoded><![CDATA[<p>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.</p>
<p>Jag är ett stort fan av <a href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript">Unobtrusive Javascripts</a> 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 <a href="http://en.wikipedia.org/wiki/Domain-driven_design">DDD</a>-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)</p>
<p>I mitt scenario jobbar jag med ett projekt som kallas &#8221;Acme&#8221;. Jag utgår därför från en scriptfil som jag döper till <b>&#8221;acme.js&#8221;</b>. I den lägger jag funktionalitet som är gemensam för hela sidan. Den skulle kunna se ut såhär;</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> acme <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Initierare</span>
	<span style="color: #003366; font-weight: bold;">var</span> init <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">// Initiera eventuella kontroller etc.</span>
		<span style="color: #006600; font-style: italic;">// Anropa eventuella andra privata funktioner</span>
		somePrivateFunction<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> 
&nbsp;
	<span style="color: #006600; font-style: italic;">// Denna funktionen blir &quot;privat&quot; eftersom den inte returneras</span>
	somePrivateFunction <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#123;</span>
		init<span style="color: #339933;">:</span> init
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	acme.<span style="color: #660066;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Nä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.</p>
<p>Sä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 <b>&#8221;acme.forum.js&#8221;</b> som skulle kunna se ut såhär;</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">acme.<span style="color: #660066;">forum</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #003366; font-weight: bold;">var</span> someVariable<span style="color: #339933;">,</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Initierare, bind knapphändelser m.m</span>
	init <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		$<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;#someButton&quot;</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">click</span><span style="color: #009900;">&#40;</span>validateEmail<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span>
&nbsp;
	<span style="color: #006600; font-style: italic;">// Validerar e-postadress</span>
	validateEmail <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #006600; font-style: italic;">// Logik för validering</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #000066; font-weight: bold;">return</span> <span style="color: #009900;">&#123;</span>
		init<span style="color: #339933;">:</span> init
	<span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
$<span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	acme.<span style="color: #660066;">forum</span>.<span style="color: #660066;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Här bygger jag vidare på &#8221;acme&#8221; variabeln som vi tidigare skapat (eller &#8221;namespacet&#8221; om ni nu så vill). Enligt detta tänk fortsätter jag med alla delar av projektet. </p>
<p>Nä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 <b>&#8221;acme.min.js&#8221;</b>. 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 <a href="http://twitter.com/robertnyman">Robert Nyman</a> som har en bra bloggpost om vilka minifierare som finns att tillgå i <a href="http://robertnyman.com/2010/01/19/tools-for-concatenating-and-minifying-css-and-javascript-files-in-different-development-environments/">denna posten</a>.</p>
<p>I mitt fall har jag använt <a href="http://yuicompressor.codeplex.com/Wikipage">YUI Compressor for .NET</a> som ett &#8221;post build-event&#8221; 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.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/04/10/unobtrusive-javascripts/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery är snyggt</title>
		<link>http://blogg.athega.se/2010/04/09/jquery-ar-snyggt/</link>
		<comments>http://blogg.athega.se/2010/04/09/jquery-ar-snyggt/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 14:36:09 +0000</pubDate>
		<dc:creator>Christian Lizell</dc:creator>
				<category><![CDATA[Guider]]></category>
		<category><![CDATA[Programmeringsspråk]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=606</guid>
		<description><![CDATA[En labb som visar hur jQuery underlättar tillvaron för att visa ett lajvflöde av bilder och twitterinlägg.]]></description>
			<content:encoded><![CDATA[<p>Större delen av gårdagen ägnades åt en workshop (tack <a href="http://twitter.com/stpe">@stpe</a>) kring frontendutveckling. Fokus var på <a href="http://developer.yahoo.com/yui/">YUI</a>, men eftersom jag jobbat en del med det redan, men däremot inte hunnit dyka ner i <a href="http://jquery.org/">jQuery</a> på riktigt, valde jag det senare.</p>
<p>Min idé var att göra ett lajvflöde av <a href="http://www.flickr.com/">Flickr</a>-bilder och <a href="http://www.twitter.com/">Twitter</a>-postningar baserat på ett givet sökord eller tag.</p>
<p><a href="http://blogg.athega.se/wp-content/uploads/2010/04/athaga.png"><img class="aligncenter size-full wp-image-624" title="athaga" src="http://blogg.athega.se/wp-content/uploads/2010/04/athaga.png" alt="" width="532" height="279" /></a></p>
<h2>JSONP</h2>
<p>Både Flickr och Twitter har rika APIer i <a href="http://www.json.org/">JSON</a>-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 <a href="http://en.wikipedia.org/wiki/XMLHttpRequest">XHR</a>-anrop eftersom webbläsaren av säkerhetsskäl kastar ett same domain-policy-fel. Räddningen stavas <a href="http://en.wikipedia.org/wiki/JSON#JSONP">JSONP</a>, 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.</p>
<h2>jQuerys effektköer</h2>
<p>Planen är alltså att långsamt smyga in en bild, visa den ett tag, sedan dimma ner den och till sist ta bort den helt.</p>
<p>Sedan jQuery 1.4 finns det en toppenmetod för att hantera pauser i den allmänna effektkön, fx. Metoden heter <a href="http://api.jquery.com/delay/">delay()</a> och låter mig åstadkomma önskat beteende på ett oerhört kompakt och tydligt vis.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">$<span style="color: #009900;">&#40;</span>img<span style="color: #009900;">&#41;</span>.<span style="color: #660066;">fadeIn</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slow'</span><span style="color: #009900;">&#41;</span>.
    <span style="color: #660066;">delay</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span>.
    <span style="color: #660066;">fadeTo</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'slow'</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">0.3</span><span style="color: #009900;">&#41;</span>.
    <span style="color: #660066;">delay</span><span style="color: #009900;">&#40;</span><span style="color: #CC0000;">2000</span><span style="color: #009900;">&#41;</span>.
    <span style="color: #660066;">fadeOut</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'fast'</span><span style="color: #339933;">,</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> $<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">remove</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Det är ju nästan som att prata svenska (engelska)! Vi repeterar:</p>
<ul>
<li>Smyg långsamt in bilden</li>
<li>Vänta en sekund</li>
<li>Dimma ner den litet</li>
<li>Vänta två sekunder</li>
<li>Smyg snabbt bort bilden och ta bort den</li>
</ul>
<h2>Koden</h2>
<p>Vill du se hur det ser ut, kan du titta <a href="http://www.athega.se/files/lab/athaga/">här</a> eller <a href="http://www.athega.se/files/lab/athaga/athaga.zip">ladda ner</a> hela koden och labba vidare själv.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/04/09/jquery-ar-snyggt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Athega sponsrar Nordic Ruby</title>
		<link>http://blogg.athega.se/2010/04/09/athega-sponsrar-nordic-ruby/</link>
		<comments>http://blogg.athega.se/2010/04/09/athega-sponsrar-nordic-ruby/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 01:10:40 +0000</pubDate>
		<dc:creator>Peter Hellberg</dc:creator>
				<category><![CDATA[Konferens]]></category>
		<category><![CDATA[Marknadsföring]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=610</guid>
		<description><![CDATA[
I 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.
Hoppas att vi syns där!
]]></description>
			<content:encoded><![CDATA[<p><a title="Nordic Ruby" href="http://nordicruby.org"><img class="alignright" title="Nordic Ruby" src="http://blogg.athega.se/wp-content/uploads/2010/04/nordicruby_logo_256x256.png" alt="Nordic Ruby" width="256" height="256" /></a></p>
<p>I slutet av maj kommer några av oss att befinna sig i Göteborg för att delta i konferensen <a href="http://nordicruby.org">Nordic Ruby</a>. Under två dagar hålls föreläsningar om så vitt skilda ämnen som den dokumentorienterade databasen <a href="http://www.mongodb.org">MongoDB</a>, spelmekanik, en introduktion till maskininlärning samt metaprogrammering i Ruby.</p>
<p>Hoppas att vi syns där!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/04/09/athega-sponsrar-nordic-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Testar Pomodoro-tekniken</title>
		<link>http://blogg.athega.se/2010/03/24/testar-pomodoro-tekniken/</link>
		<comments>http://blogg.athega.se/2010/03/24/testar-pomodoro-tekniken/#comments</comments>
		<pubDate>Wed, 24 Mar 2010 16:46:04 +0000</pubDate>
		<dc:creator>Markus Ullmark</dc:creator>
				<category><![CDATA[Arbetsmiljö]]></category>
		<category><![CDATA[Produktivitet]]></category>
		<category><![CDATA[pomodoro]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=566</guid>
		<description><![CDATA[Detta inlägg fortsätter lite i samma anda som Chrille hade med sitt inlägg om Den produktive programmeraren
Jag 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 [...]]]></description>
			<content:encoded><![CDATA[<p>Detta inlägg fortsätter lite i samma anda som Chrille hade med sitt inlägg om <a href="http://blogg.athega.se/2009/11/10/den-produktive-programmeraren/">Den produktive programmeraren</a></p>
<p>Jag 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 <a href="http://www.hanselman.com/blog/">Scott Hanselmans</a> <a href="http://www.hanselman.com/blog/OredevKeynoteInformationOverloadAndManagingTheFlowEffectivenessAndEfficiency.aspx">föredrag</a> från <a href="http://www.oredev.org/2010">Öredev</a> som vi som inte var där kollade på under en utbildningsdag så tänkte jag pröva på <a href="http://www.pomodorotechnique.com/">Pomodoro-tekniken</a>.</p>
<p>Pomodoros 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.</p>
<p><a href="http://blogg.athega.se/wp-content/uploads/2010/03/teatime.png"><img src="http://blogg.athega.se/wp-content/uploads/2010/03/teatime-300x265.png" alt="" title="TeaTime" width="300" height="265" class="alignright size-medium wp-image-580" /></a><br />
Som tidtagarur la jag in en widget i min dashboard som hette <a href="http://www.apple.com/downloads/dashboard/food/teatimer.html">&#8221;Tea Timer&#8221;</a> som håller reda på min tid.</p>
<p>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.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/03/24/testar-pomodoro-tekniken/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extensions för EPiServer</title>
		<link>http://blogg.athega.se/2010/03/18/extensions-for-episerver/</link>
		<comments>http://blogg.athega.se/2010/03/18/extensions-for-episerver/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 18:17:29 +0000</pubDate>
		<dc:creator>Markus Ullmark</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[Kod]]></category>
		<category><![CDATA[Produktivitet]]></category>
		<category><![CDATA[Öppen källkod]]></category>
		<category><![CDATA[EPiServer]]></category>
		<category><![CDATA[Extensions]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=361</guid>
		<description><![CDATA[Jag har arbetat med EPiServer ett bra tag nu, och har sedan .NET 3.5 släpptes med möjligheten att &#8221;bygga ut&#8221; 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.
Ett exempel [...]]]></description>
			<content:encoded><![CDATA[<p>Jag har arbetat med EPiServer ett bra tag nu, och har sedan .NET 3.5 släpptes med möjligheten att &#8221;bygga ut&#8221; 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.</p>
<p>Ett 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.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">PageDataCollection pages <span style="color: #008000;">=</span> CurrentPage.<span style="color: #0000FF;">GetChildren</span><span style="color: #000000;">&#40;</span><span style="color: #008000;">new</span> FilterPublished<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>, <span style="color: #008000;">new</span> FilterRandom<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">10</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Utan 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.<br />
Eftersom filterparametern är en <em>params</em> 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.<br />
Min 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.</p>
<ul>
<li><a href="http://github.com/ullmark/cs-extensions/blob/master/EPiServerExtensions.cs">EPiServer Extensions</a></li>
</ul>
<p>Inte 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.</p>
<ul>
<li><a href="https://www.coderesort.com/p/epicode/wiki/Extensions">EPiCode</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2010/03/18/extensions-for-episerver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gasell 2009</title>
		<link>http://blogg.athega.se/2009/12/04/gasell-2009/</link>
		<comments>http://blogg.athega.se/2009/12/04/gasell-2009/#comments</comments>
		<pubDate>Fri, 04 Dec 2009 09:00:37 +0000</pubDate>
		<dc:creator>Mats Ygfors</dc:creator>
				<category><![CDATA[Okategoriserade]]></category>
		<category><![CDATA[athega]]></category>
		<category><![CDATA[gasell]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=532</guid>
		<description><![CDATA[Dagens 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
Vi är självklart både glada och [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-533" title="Di" src="http://blogg.athega.se/wp-content/uploads/2009/12/digasell.gif" alt="Di" width="146" height="196" />Dagens 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</p>
<p>Vi är självklart både glada och stolta över detta.</p>
<p>En gasell<br />
- har offentliggjort minst fyra årsredovisningar.<br />
- har en omsättning som överstiger 10 Mkr.<br />
- har minst tio anställda.<br />
- har de senaste tre åren kontinuerligt ökat omsättningen.<br />
- har under samma period minst fördubblat sin omsättning.<br />
- har ett samlat rörelseresultat för de fyra räkenskapsåren som är positivt.<br />
- har i allt väsentligt vuxit organiskt, inte genom förvärv eller fusioner.<br />
- har sunda finanser.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2009/12/04/gasell-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UR delar med sig med hjälp av WOA-teknik</title>
		<link>http://blogg.athega.se/2009/12/03/ur-delar-med-sig-med-hjalp-av-woa-teknik/</link>
		<comments>http://blogg.athega.se/2009/12/03/ur-delar-med-sig-med-hjalp-av-woa-teknik/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 09:13:10 +0000</pubDate>
		<dc:creator>Fredrik Söder</dc:creator>
				<category><![CDATA[Okategoriserade]]></category>
		<category><![CDATA[woa]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/2009/12/03/ur-delar-med-sig-med-hjalp-av-woa-teknik/</guid>
		<description><![CDATA[
Anvä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.
Utbildningsradion har med hjälp av IT-konsultbolaget [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-527 alignleft" title="ur" src="http://blogg.athega.se/wp-content/uploads/2009/12/ur2.jpg" alt="ur" width="142" height="142" /></p>
<p>Anvä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.</p>
<p>Utbildningsradion 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.</p>
<p>UR – ”Athega har varit en samarbetspartner under många år och drivit utvecklingen av URs IT-tjänster och uppbyggnaden av ett flertal projekt inom UR. När vi presenterade en önskan om att utveckla en tjänst som skulle underlätta hanteringen av informationen visade de på en rad innovativa lösningar på upplägget.”</p>
<p>URs 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.</p>
<p>Det 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.</p>
<p>Lö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.</p>
<p>AV-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.</p>
<p>Peter Hellberg, utvecklare på Athega – ”Att utveckla generella, lättanvända webbgränssnitt mot interna system ger exempelvis möjligheter att anpassa information olika för olika mottagare. Det blir lättare samköra information från flera system och att snabbt ta ut den information som behövs för stunden.”</p>
<p>UR 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.</p>
<p>Christian Lizell, VD på Athega – ”Tekniken ställer nya krav på företagen att anpassa sig till ett nytt företagsklimat. Den som inte anpassar sig riskerar att bli frånkörd i framtiden. Tekniken öppnar upp för många möjligheter, men svårigheterna har visat sig framförallt finnas i styrelserummen. Det är ibland svårt att motivera en företagsledning att dela med sig av den värdefulla informationen och därigenom faktiskt även släppa kontrollen över hur den används.”</p>
<p>I 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.</p>
<p>Peter Hellberg ger även exempel på framtida användningsområden – ”En av de mer direkta och konkreta möjligheterna är naturligtvis för produktföretag att exponera hela eller delar av sina produktkataloger som fritt kan infogas i nya applikationer, skräddarsydda för nya målgrupper, i Facebook-sidor, specialiserade forum eller webbshoppar.”</p>
<p>Genom 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.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2009/12/03/ur-delar-med-sig-med-hjalp-av-woa-teknik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Den produktive programmeraren</title>
		<link>http://blogg.athega.se/2009/11/10/den-produktive-programmeraren/</link>
		<comments>http://blogg.athega.se/2009/11/10/den-produktive-programmeraren/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 22:14:26 +0000</pubDate>
		<dc:creator>Christian Lizell</dc:creator>
				<category><![CDATA[Guider]]></category>
		<category><![CDATA[Konferens]]></category>
		<category><![CDATA[Produktivitet]]></category>
		<category><![CDATA[clcl]]></category>
		<category><![CDATA[Doodim]]></category>
		<category><![CDATA[Google Desktop]]></category>
		<category><![CDATA[Jedi Concentrate]]></category>
		<category><![CDATA[Jumpcut]]></category>
		<category><![CDATA[Locus of Attention]]></category>
		<category><![CDATA[Neal Ford]]></category>
		<category><![CDATA[QuickSilver]]></category>
		<category><![CDATA[Selenium]]></category>
		<category><![CDATA[Textexpander]]></category>
		<category><![CDATA[The Productive Programmer]]></category>
		<category><![CDATA[Øredev]]></category>

		<guid isPermaLink="false">http://blogg.athega.se/?p=504</guid>
		<description><![CDATA[Ett sammandrag av Neal Ford's dragning "The Productive Programmer" på Øredev 2009. Detta är 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.]]></description>
			<content:encoded><![CDATA[<p><a href="http://oreilly.com/catalog/9780596519544/"><img class="alignright" title="The Productive Programmer" src="http://covers.oreilly.com/images/9780596519544/lrg.jpg" alt="" width="108" height="142" /></a>En av de bättre dragningarna på årets <a href="http://www.oredev.org/">Øredev</a> var <a href="http://www.nealford.com/">Neal Ford</a>&#8217;s ”The Productive Programmer: Mechanics”. Neal har skrivit en <a href="http://oreilly.com/catalog/9780596519780/">bok</a> 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 <em>”Graphical tools are med for novices”</em> visste jag att detta var något för mig!</p>
<p>Nedan följer en rad tips, som alla syftar till att hjälpa dig bli en mer produktiv programmerare, oavsett om du använder <a href="http://www.gnu.org/software/emacs/">emacs</a>, <a href="http://en.wikipedia.org/wiki/Notepad_%28Windows%29">notepad</a> eller <a href="http://www.eclipse.org/">Eclipse</a>.</p>
<h2>Urklippshanteraren (eller clipboard)</h2>
<p>Varför, varför finns det bara plats för ett urklipp i taget i dagens moderna operativsystem (*nix-dialekter undantagna)?</p>
<p>Det ä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:</p>
<ul>
<li><a href="http://jumpcut.sourceforge.net/">Jumpcut</a> (Mac)</li>
<li><a href="http://www.nakka.com/soft/clcl/index_eng.html">clcl</a> (Windows)</li>
</ul>
<h2>Lär dig kortkommandon</h2>
<p>Tiden 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.</p>
<h2>Scripta dina vanligast kommandon/texter</h2>
<p>Om 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. <a href="http://www.smileonmymac.com/TextExpander/">Textexpander</a> är ett litet makroverktyg som verkligen sparar tid. Du kan använda det till allt från epostsignaturer till kod-&#8221;snippets&#8221;.</p>
<p>Tyvärr kostar det pengar och finns det bara för Mac, men jag är övertygad om att det finns ett Windowsalternativ.</p>
<h2>”Locus of Attention”</h2>
<p>Att kunna fokusera och komma in i flytet (”the Flow” eller ”<a href="http://blogg.athega.se/2009/08/12/in-i-zonen-som-systemutvecklare/">the Zone</a>”) är lika viktigt som verktygen du använder. Om du programmerar vill du att <em>platsen för din uppmärksamhet</em> (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.</p>
<ul>
<li>Stä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</li>
<li>Använd hörlurar för att visa att du inte vill bli störd</li>
<li>Inför tysta timmar på kontoret, exempelvis mellan 14 och 16 varje dag då du verkligen kan fokusera</li>
</ul>
<p>Neal menar exempelvis att Windows är som en treåring som konstant stör dig med påpekanden som ”<em>Du har oanvända ikoner på ditt skrivbord</em>&#8221;, ”<em>Ditt virtuella minne håller på att ta slut</em>” eller ”<em>Det finns säkerhetsuppdateringar till din dator</em>”. 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:</p>
<ul>
<li><a href="http://www.lachoseinteractive.net/en/products/doodim/">Doodim</a> (Mac)</li>
<li><a href="http://www.anappaday.com/downloads/2006/09/day-10-jedi-concentrate.html">Jedi Concentrate</a> (Windows)</li>
</ul>
<h2>Sök</h2>
<p>En 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 <a href="http://desktop.google.com/mac/">Google Desktop</a> (Mac/Windows) eller <a href="http://docs.blacktree.com/quicksilver/what_is_quicksilver">QuickSilver</a> (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 &#8211; sök!</p>
<h2>Automatisera</h2>
<p>Ett spiffigt användningsområde för <a href="http://seleniumhq.org/">Selenium</a> ä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 <a href="http://seleniumhq.org/projects/ide/">Seleniums IDE</a>, 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; ”<em>You should never manually interact with the thing you are building unless you want to</em>”.</p>
<p>Han avslutar med tänkvärda ”<em>Solving problems by hand, makes you dumber</em>”. Word!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogg.athega.se/2009/11/10/den-produktive-programmeraren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
