<?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>qvister &#187; hack</title>
	<atom:link href="http://qvister.se/tag/hack/feed/" rel="self" type="application/rss+xml" />
	<link>http://qvister.se</link>
	<description></description>
	<lastBuildDate>Mon, 06 Sep 2010 12:03:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/>		<item>
		<title>Deploy almost anything using Capistrano</title>
		<link>http://qvister.se/2010/04/06/deploy-almost-anything-using-capistrano/</link>
		<comments>http://qvister.se/2010/04/06/deploy-almost-anything-using-capistrano/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 07:33:42 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=737</guid>
		<description><![CDATA[I recently started digging into the world of Ruby on Rails and quite early came across Capistrano. The whole idea and concept of Capistrano could be explained with their own quite catchy tagline &#8220;Welcome to easyish deployment&#8220;. I&#8217;ve been doing deployment using Git for a while by now. But I find Capistrano more flexible and reliable. [...]]]></description>
			<content:encoded><![CDATA[
<p>I recently started digging into the world of Ruby on Rails and quite early came across <a href="http://www.capify.org/">Capistrano</a>. The whole idea and concept of Capistrano could be explained with their own quite catchy tagline &#8220;<em>Welcome to easy<span style="text-decoration: line-through;">ish</span> deployment</em>&#8220;.<span id="more-737"></span></p>
<p>I&#8217;ve been doing deployment using Git for a while by now. But I find Capistrano more flexible and reliable. Since Capistrano is intended to be used with Ruby on Rails it doesn&#8217;t work with other platforms &#8220;<em>out-of-the-box</em>&#8220;. But magic can still occur with a few lines of code.</p>
<p>Below you&#8217;ll a &#8220;<em>step-by-step</em>&#8221; tutorial on how the get started using Capistrano for easier deployment. The whole idea for this post came in mind during a Capistrano setup for a <a href="http://qvister.se/tag/codeigniter/">Codeigniter</a> application I did recently. But I don&#8217;t see why this deployment process wouldn&#8217;t be applicable on any other platform or framework.</p>
<p>This tutorial assumes you already got your code hosted using either SVN or Git. You preferaly have setup <a href="http://www.linuxquestions.org/linux/answers/Networking/Public_key_authentication_with_ssh">public ssh keys</a> between your computer and the server you&#8217;re deploying to. You&#8217;re using the same directory structure as below for your applications on your server (feel free to change the Capfile in order to match your existing structure).</p>
<pre>/var/www/example.com
/var/www/example.com/www.example.com
/var/www/example.com/www.example.com/logs
/var/www/example.com/www.example.com/public</pre>
<p>Start of by installing Capistrano on your computer. Capistrano is distributed as a Ruby gem.</p>
<pre>$ sudo gem install capistrano</pre>
<p>Next up clone my default Capfile (Capistrano config file) using cURL. Or use the Gist below.</p>
<pre>$ curl "http://gist.github.com/raw/353124/ceda1eccacee7604d7180b23ff20cb618cb760af/capfile.rb" &gt; Capfile</pre>
<p><script src="http://gist.github.com/353124.js?file=capfile.rb"></script></p>
<p>There are some variabels you need to change in order to make this Capfile work with your setup. Basically look through all lines that begins with &#8220;<em>set</em>&#8221; and change the corresponding value. Also make sure to change the server domain on line 10.</p>
<p>A typical Capistrano deployment is loaded with different kind of tasks. Since Capistrano is awesome it allows you to setup own tasks and even overwrite existing tasks.</p>
<p>As mentioned earlier Capistrano was invented with Ruby on Rails in mind, therefor we need to overwrite a few Rails specific tasks (<em>migrate</em>, <em>restart</em>, <em>start</em>). These default tasks are probably not compatible with your application. But feel free to rewrite them if needed.</p>
<p>As you might noticed by now the task &#8220;<em>copy_config</em>&#8221; inside Capfile isn&#8217;t a default task. My Codeigniter applications usually include some setup specific config files that shouldn&#8217;t be included in the repository by obvious reasons. For instance a config file including all necessary MySQL credentials. Therefor these files needs to be setup and edited manually in order to get the application running. But there&#8217;s one problem using this method with Capistrano.</p>
<p>Everytime you deploy using Capistrano a fresh copy of your latest application is being cloned/checkout from the repository and stored inside a new folder on the server. Since Capistrano doesn&#8217;t proceed from the previous deployed release all files that isn&#8217;t included in the repository will <strong>not</strong> be moved to the new deployed release folder. But no worries! Since Capistrano allows us to hook up our own tasks to specific events during deployment we can solve this problem with ease.</p>
<p>The task namned &#8220;<em>copy_config</em>&#8221; is being executed right after the &#8220;<em>symlink</em>&#8221; task. Right after the new release directory has been created and linked to the current directory. Since all my necessary config files are included in the &#8220;<em>.gitignore</em>&#8221; file we can use that as a reference and simply check if the file exists in the previous release folder. If so simply move the file to the newly created release folder. Capistrano provides some nifty <a href="http://www.capify.org/index.php/Variables" target="_blank">variabels</a> such as &#8220;<em>previous_release</em>&#8221; and &#8220;<em>latest_release</em>&#8221; to make this operation easier.</p>
<p>Any other needed operation to get your application up and running should probably be executed after the &#8220;<em>symlink</em>&#8221; task.</p>
<p>Once your Capfile is done it&#8217;s time to run a initial setup deploy. Start of by running the following command.</p>
<pre>$ cap deploy:setup</pre>
<p>You should end up with a similar directory structure on your server.</p>
<pre>/var/www/example.com/www.example.com/public/releases
/var/www/example.com/www.example.com/public/shared
/var/www/example.com/www.example.com/public/shared/log
/var/www/example.com/www.example.com/public/shared/pids
/var/www/example.com/www.example.com/public/shared/system</pre>
<p>It&#8217;s finally time to perform a first initial (cold) deploy of your application to your server.</p>
<pre>$ cap deploy:cold</pre>
<p>Congratulations! You just performed your first deploy using Capistrano. For future deploys the cold task isn&#8217;t necessary. Simply execute the command below.</p>
<pre>$ cap deploy</pre>
<p>Easy enough don&#8217;t you think?</p>
<p>This post should give you a brief idea of the Capistrano workflow. And show how you can hook up your own tasks in order to get your application up and running. I can&#8217;t guarantee that this method can be applicable on your application. As the title states &#8220;<em>&#8230; almost anything</em>&#8220;.</p>
<p>Interested in learning more about Capistrano? Here&#8217;s a <a href="http://delicious.com/mptre/capistrano+blog" target="_blank">few posts</a> that I stumbled across and found interesting during research for this post.</p>
<p><em>Photo credit: </em><a href="http://www.flickr.com/people/heyskinny/" target="_blank"><em>heyskinny</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2010/04/06/deploy-almost-anything-using-capistrano/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bonnier Hack Day</title>
		<link>http://qvister.se/2010/03/14/bonnier-hack-day/</link>
		<comments>http://qvister.se/2010/03/14/bonnier-hack-day/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 20:35:51 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[Bonnier]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[mobilab]]></category>
		<category><![CDATA[stockholm]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=709</guid>
		<description><![CDATA[Torsdagen och fredagen denna vecka spenderades på Bonnier Hack Day. Det hela var ett initiativ från Bonnier R&#38;D sida med Paulina i täten. För dig som inte är bekant med Hack Day konceptet går det kort och gott ut på att skapa något under 24 intensiva timmar. Den faktiska slutprodukten är inte det viktigaste utan [...]]]></description>
			<content:encoded><![CDATA[
<p>Torsdagen och fredagen denna vecka spenderades på <a href="http://bonnierhackday.blogspot.com/" target="_blank">Bonnier Hack Day</a>. Det hela var ett initiativ från <a href="http://www.bonnier.se/sv/om-bonnier-research-development" target="_blank">Bonnier R&amp;D</a> sida med <a href="http://twitter.com/pauspling" target="_blank">Paulina</a> i täten.<span id="more-709"></span></p>
<p>För dig som inte är bekant med Hack Day konceptet går det kort och gott ut på att skapa något under 24 intensiva timmar. Den faktiska slutprodukten är inte det viktigaste utan det är mer fokus på att faktiskt åstadkomma något.</p>
<p>Bonnier Hack Day var faktiskt min tredje Hack Day i ordningen. Enda skillnaden denna var att jag inte närvarade som privatperson utan representerade <a href="http://qvister.se/tag/mobilab/" target="_blank">Mobilab</a> tillsammans med <a href="http://twitter.com/hermanolsson" target="_blank">Herman Olsson</a>, <a href="http://twitter.com/gunnarr" target="_blank">Gunnar Johansson</a> och <a href="http://twitter.com/morpac" target="_blank">Morris Packer</a>.</p>
<p>Vårt projekt med arbetsnamnet &#8220;<em>tvättmaskinen</em>&#8221; är ganska tråkigt för att vara ett Hack Day projekt men något som vi intern kommer ha stor nytta av. Hela idén grundar sig i att vi av olika skäl inte kan hämta innehåll direkt Expressens <a href="http://sv.wikipedia.org/wiki/Application_Programming_Interface" target="_blank">API</a> från klienten (t ex. en iPhone applikation). Därav byggde vi ett mellanlager som hämtar innehåll från Expressen och lagrar det slutligen på Amazons S3 plattform. På så sätt kan vi på våra kommande sajter och applikationer komma åt det innehåll som efterfrågas utan att gå direkt mot Expressens API. En annan fördel med att lagra innehållet hos Amazon S3 är att Expressen kan gå ner, vår &#8220;<em>tvättmaskin</em>&#8221; kan gå ner men alla sajter och applikationer kommer fortfarande ha tillgång till det senaste innehållet eftersom Amazon S3 är så stabilt det bara kan bli.</p>

<p>Efter 24 intensiva timmar fick alla chansen att presentera sina projekt i sann Hack Day anda. Bland publiken fanns även en jury bestående av massa kloka huvuden. Denna jury korade sedan en vinnare som inte var någon mindre än Sydsvenskans <a href="http://citypedia.se/" target="_blank">Citypedia</a> projekt med följande motivering.</p>
<blockquote><p>The jury &#8230; particularly liked the way in which team Sydsvenskan used new and vastly different sources/API:s to provide more accurate and extensive reviews.</p></blockquote>
<p>Nedan finns även en lista över mina favorit projekt utan någon specifik rangordning.</p>
<ul>
<li><a href="http://repr.is/" target="_blank">repr.is</a><br />
En tjänst som aggregerar alla s.k. play-tjänster och gör dem sökbara under ett och samma tak. En klockren idé som verkligen fyller ett behov som jag personlig har känt av. Jag hoppas verkligen att denna tjänst fortsätts utvecklas. Utvecklat av <a href="http://twitter.com/mackielinden" target="_blank">Marcus Lindén</a> och <a href="http://twitter.com/perkovich" target="_blank">Per Åström</a>, båda ifrån TV4.</li>
<li><a href="http://www.flickr.com/photos/bonnier_rd/4426656235/in/set-72157623605939816/" target="_blank">linkr</a><br />
Att förena det digitala med det analoga har gång på gång visat sig vara ett vinnande Hack Day koncept. Linkr är heller inget undantag. Vad denna röda låda gör är att visa antalet klick som besökarna genererat de senaste fem minuterna från ett visst antal fördefinierade sajter. Det hela kompletteras med en indikator som visar om antalet klick har ökat eller minskat gentemot den tidigare fem minuters perioden. Syftet är att konkretisera och öka förståelsen kring statistiken som finns tillgänglig hos främst redaktionerna som ansvarar för innehållet på sajterna. Utvecklat av <a href="http://twitter.com/perkovich" target="_blank">Per Åström</a> och <a href="http://twitter.com/moonhouse" target="_blank">David Hall</a>.</li>
<li><a href="http://www.flickr.com/photos/bonnier_rd/4427417880/in/set-72157623605939816/" target="_blank">whereitshot</a><br />
Google Maps i kombination med s.k. <a href="http://en.wikipedia.org/wiki/Heat_map" target="_blank">heatmaps</a> för att presentera data är något som på senaste tiden har intresserat mig. Vad whereitshot gör är att visa vart &#8220;<em>tweets</em>&#8221; innehållandes en viss sökterm är mest förekommande rent geografiskt. Det hela visar visserligen bara en bråkdel av alla &#8220;<em>tweets</em>&#8221; eftersom denna idé bygger på att alla &#8220;<em>tweets&#8221;</em> är geotaggade med faktiska koordinater. Hur som helst är hela genomförande väldigt snyggt och genomtänkt. Utvecklat av Anders Cserkuti och David Andersson, både ifrån Adlibris.</li>
<li><a href="http://www.henrikberggren.com/2010/03/14/pictoriala/" target="_blank">Pictoriala</a><br />
Utvecklat av Hack Day veteranerna <a href="http://twitter.com/henrikberggren" target="_blank">Henrik Berggren</a> och <a href="http://twitter.com/davidkjelkerud" target="_blank">David Kjelkerud</a>, båda ifrån Doberman. Ett oerhört grafiskt tilltalande nyhetsflöde i form av bilder är vad jag skulle kalla Pictoriala för.</li>
</ul>
<p>Så här i efterhand kan jag konstatera att detta var ännu en oerhört lyckad Hack Day. Det är kul att se att detta koncept börjar dyka upp mer och mer här hemma i Sverige. Återigen ett stort tack till alla som gjorde dessa 24 timmar till något helt fantastikt. Jag ser med glädje fram emot nästa Bonnier Hack Day!</p>
<p><em>Bilderna tillhörande detta inlägg är lånade ifrån </em><a href="http://www.flickr.com/photos/bonnier_rd/sets/72157623605939816/" target="_blank"><em>Bonnier R&amp;D</em></a><em>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2010/03/14/bonnier-hack-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fem saker jag gillar med jQuery 1.4</title>
		<link>http://qvister.se/2010/01/15/fem-saker-jag-gillar-med-jquery-1-4/</link>
		<comments>http://qvister.se/2010/01/15/fem-saker-jag-gillar-med-jquery-1-4/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 15:39:04 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=583</guid>
		<description><![CDATA[I dagarna släpptes äntligen version 1.4 av JavaScript-biblioteket jQuery. Denna version är fullmatad med nya funktioner och förbättringar. En oerhört finslipad release om du frågar mig. Jag tog mig tiden att läsa igenom loggen med ändringar. Nedan följer en lista över mina fem favoriter. Smidigare konstruktion av element Vid konstruktion av ett nytt element kan [...]]]></description>
			<content:encoded><![CDATA[
<p>I dagarna släpptes äntligen version 1.4 av JavaScript-biblioteket jQuery. Denna version är fullmatad med nya funktioner och förbättringar. En oerhört finslipad release om du frågar mig.<span id="more-583"></span></p>
<p>Jag tog mig tiden att läsa igenom loggen med ändringar. Nedan följer en lista över mina fem favoriter.</p>
<ol>
<li>
<strong>Smidigare konstruktion av element</strong><br />
Vid konstruktion av ett nytt element kan du nu skicka med ett objekt innehållandes egenskaper.</p>
<p><script src="http://gist.github.com/278098.js?file=jquery.construct.js"></script>
</li>
<li>
<strong>Enklare attribut manipulation</strong><br />
Funktioner för att manipulera element så som .<a href="http://api.jquery.com/css">css()</a>, <a href="http://api.jquery.com/attr">.attr()</a>, <a href="http://api.jquery.com/val">.val()</a> och <a href="http://api.jquery.com/html">.html()</a> kan nu ta en funktion som andra parameter. I funktionen kan du enkelt komma åt det befintliga attributets värde.</p>
<p><script src="http://gist.github.com/278098.js?file=jquery.attr.js"></script>
</li>
<li>
<strong>Unik easing metod per egenskap</strong><br />
Det är nu möjligt att definiera en <a href="http://gsgd.co.uk/sandbox/jquery/easing/">easing</a> metod för enskilda egenskaper.</p>
<p><script src="http://gist.github.com/278098.js?file=jquery.easing.js"></script>
</li>
<li>
<strong>Äntligen en riktig delay funktion</strong><br />
Nu är du inte längre tvungen att &#8220;<em>fulhacka</em>&#8221; för att skapa en delay effekt.</p>
<p><script src="http://gist.github.com/278098.js?file=jquery.delay.js"></script>
</li>
<li>
<strong>Ajax anrop tar hänsyn till Last-Modified headern</strong><br />
Tidigare har alla ajax funktioner ignorerat Last-Modified headern. I syfte att ignorera eventuellt cache från webbläsaren. Genom att sätta ifModified till true tvingas jQuery att läsa från webbläsarens cache (förutsagt att något finns).</p>
<p><script src="http://gist.github.com/278098.js?file=jquery.ajax.js"></script>
</li>
</ol>
<p>Om du är sugen på att grotta dig ännu djupare finns en bra redovisning av de nya funktionerna och förbättringarna på kampanjsajten <a href="http://jquery14.com/day-01/jquery-14">14 Days of jQuery</a>.</p>
<p>I sedvanlig ordning tillhandahåller Google <a href="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js">jQuery 1.4</a> (minifierad och gzippad) på deras supersnabba CDN.</p>
<p><em>Bilden tillhörande detta inlägg är lånad ifrån <a href="http://www.flickr.com/photos/equanimity/">Eric Miraglia</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2010/01/15/fem-saker-jag-gillar-med-jquery-1-4/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Good Old Email Templates</title>
		<link>http://qvister.se/2009/12/14/good-old-email-templates/</link>
		<comments>http://qvister.se/2009/12/14/good-old-email-templates/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 07:56:00 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[goodold]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=514</guid>
		<description><![CDATA[Tidigare i våras när jag hjälpte Good Old med sajten till Moving Images 2009 kom jag i kontakt med en smart WordPress plugin vid namn Good Old Email Templates. Utvecklad av Joel Arvidsson från just Good Old. I ett flertal projekt som jag jobbar med just nu krävs liknande funktionalitet. Därav hörde jag mig för [...]]]></description>
			<content:encoded><![CDATA[
<p>Tidigare i våras när jag hjälpte<a href="http://goodold.se/"> Good Old</a> med sajten till <a href="http://movingimagesmalmo.se/">Moving Images 2009</a> kom jag i kontakt med en smart WordPress plugin vid namn Good Old Email Templates. Utvecklad av Joel Arvidsson från just Good Old. I ett flertal projekt som jag jobbar med just nu krävs liknande funktionalitet.<span id="more-514"></span></p>
<p>Därav hörde jag mig för om jag fick &#8220;<em><a href="http://sv.wikipedia.org/wiki/Fork">forka</a></em>&#8221; plugin:en och modifiera den utefter mina behov. Givetvis vart svaret ja.</p>
<p>Good Old Email Templates är alltså en plugin till WordPress för att skapa och administrera email-mallar. Mallarna kan innehålla ett flertal variabler som kan ersättas med egna värden. Detta är framför allt smidigt när man ska göra automatiska mailutskick till ett flertal användare.</p>
<p>Koden har fått sig en rejäl översyn och större delar har skrivit om av mig. Givetvis är plugin:en släppt helt i det fria. Var så god att ladda ner plugin:en från <a href="http://github.com/mptre/wp-goodold-email-templates">GitHub</a> eller varför inte skapa en egen fork?</p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2009/12/14/good-old-email-templates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mipi.se, frågan är fri</title>
		<link>http://qvister.se/2009/11/01/mipi-se-fragan-ar-fri/</link>
		<comments>http://qvister.se/2009/11/01/mipi-se-fragan-ar-fri/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 16:15:11 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[24hbc]]></category>
		<category><![CDATA[codeigniter]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=473</guid>
		<description><![CDATA[24 Hour Business Camp är ett underbart initiativ från Ted Valentin och SSES sida. Det hela går ut på att skapa en webbtjänst på 24 timmar i Yasuragis rofyllda miljö. Förra året deltog jag på distans och skapade tillsammans med Morris Packer, Herman Olsson och Rickard Thorman moco.se på garanterat mindre än 24 timmar. Denna [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://www.24hbc.com/">24 Hour Business Camp</a> är ett underbart initiativ från <a href="http://www.tedvalentin.com/">Ted Valentin</a> och <a href="http://www.sses.se/">SSES</a> sida. Det hela går ut på att skapa en webbtjänst på 24 timmar i <a href="http://www.yasuragi.se/">Yasuragis</a> rofyllda miljö. Förra året deltog jag på distans och skapade tillsammans med Morris Packer, Herman Olsson och Rickard Thorman <a href="http://moco.se/">moco.se</a> på garanterat mindre än 24 timmar. Denna gång befann jag mig tillskillnad från förra gången på plats.<span id="more-473"></span></p>
<p>Idéen till projektet <a href="http://mipi.se/">mipi.se</a> spånades redan fram på konferensen <a href="http://qvister.se/2009/06/30/reboot11/">Reboot</a> av mig och Morris Packer. Grundidéen var helt enkelt att kunna skapa en frågeställning för att sedan skicka ut den till en så stor publik som möjligt. Med andra ord frågan är fri.</p>
<p>Under mina 24 timmar skapade jag ett webbaserat gränssnitt för att skapa frågor och se resultatet som uppdateras i realtid. Användningsområdena är redan så här initialt många. Tänk t. ex. om du anordnar en konferens och vill ha din deltagares svar på en viss fråga. Skapa frågan och visa resultatet en storskärm medhjälp av en projektor. Deltagarna kommer på så sätt kunna följa utvecklingen i realtid.</p>
<p>Det hela byggdes i ramverket <a href="http://codeigniter.com/">Codeigniter</a> som jag verkligen har fattat tycke för den senaste tiden. Plus en hel del JavaScript med <a href="http://qvister.se/tag/jquery/">jQuery</a> som grund.</p>
<p>Framtiden för detta projekt ser ljus ut. <a href="http://www.appcorn.se/">Appcorn</a> har sedan en tid tillbaka tagit fram en &#8220;<em>proof of concept</em>&#8221; iPhone applikation som använder sig av Push-protokollet för att skicka ut frågor.</p>
<p>Gillar mipi.se får du gärna <a href="http://www.24hbc.com/2009/10/rosta-pa-dina-favoriter-fran-24hbc.html">rösta på oss</a>. Eller läs mer om <a href="http://www.24hbc.com/2009/10/mipise.html">bakgrunden</a> till detta projekt.</p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2009/11/01/mipi-se-fragan-ar-fri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Använd Git tillsammans med Dropbox</title>
		<link>http://qvister.se/2009/10/19/anvand-git-tillsammans-med-dropbox/</link>
		<comments>http://qvister.se/2009/10/19/anvand-git-tillsammans-med-dropbox/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 06:19:26 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=428</guid>
		<description><![CDATA[Git har sedan en tid tillbaka varit det versionshanteringssystem som har passat mina behov bäst. Under den senaste tiden jag har undersökt olika lösningar för att kunna dela ett projekt med flera projektmedlemmar. Efter lite undersökning och testning visade sig att Dropbox var som gjort för detta. För er som inte känner till Dropbox så [...]]]></description>
			<content:encoded><![CDATA[<p>Git har sedan en tid tillbaka varit det versionshanteringssystem som har passat mina behov bäst. Under den senaste tiden jag har undersökt olika lösningar för att kunna dela ett projekt med flera projektmedlemmar. Efter lite undersökning och testning visade sig att Dropbox var som gjort för detta.<span id="more-428"></span></p>
<p>För er som inte känner till Dropbox så är det en programvara som håller dina filer i synk mellan olika datorer. Tjänsten kompletteras med ett webbgränssnitt samt en nyligen släppt iPhone applikation. Allt du behöver göra för att komma igång är att installera Dropbox på valfri dator (Mac, Windows eller Linux). Att sedan dela med sig av filer och mappar har aldrig varit enklare.</p>
<p>Git å andra sidan är ett versionshanteringssystem utvecklat av ingen mindre än <a href="http://sv.wikipedia.org/wiki/Linus_Torvalds">Linus Torvalds</a>. Systemet har ökat sin marknadsandel markant den senaste tiden. Fler och fler open source plattformar och andra tjänster har valt Git i kombination med <a href="http://github.com/">GitHub</a> framför konkurrenterna SVN och CVS.</p>
<p>Att börja använda Git tillsammans med Dropbox är bara enkla 5 steg ifrån. Så här gör du.</p>
<ol>
<li>Givetvis krävs ett Dropbox konto. Om du inte redan har ett så kan du skaffa ett alldeles gratis hos <a href="http://www.getdropbox.com/">Dropbox</a>.</li>
<li>För enkelhetens skull väljer vi att kalla vårt repository &#8220;projekt&#8221; i detta exempel. Börja med att skapa mappen &#8220;projekt&#8221;, navigera ditt och initialisera Git.
<pre>$ mkdir projekt
$ cd projekt
$ git init</pre>
</li>
<li>Klona en &#8220;<em>rå</em>&#8221; kopia av repot till valfri mapp i din Dropbox.
<pre>$ git clone --bare . ~/Dropbox/git/projekt.git</pre>
</li>
<li>Lägg slutligen till det &#8220;<em>råa</em>&#8221; repot som ett externt repository. Vi väljer att kalla det för &#8220;<em>dropbox</em>&#8220;.
<pre>$ git remote add dropbox ~/Dropbox/git/projekt.git</pre>
</li>
<li>För att pröva allt står rätt till kan vi skapa en första commit och pusha uppdateringen till vårt repository i Dropboxen. Vi väljer att lägga till en tom gitignore fil.
<pre>$ touch .gitignore
$ git add .
$ git commit -m "Initial commit."
$ git push dropbox master</pre>
</li>
</ol>
<p>Om du vill dela repot med en kollega eller vän är det så enkelt som att dela ut en mapp via Dropbox. Personen ifråga kan sedan klona repot och utföra lokala ändringar som sedan pushas till repot i Dropboxen.</p>
<pre>$ git clone ~/Dropbox/git/projekt.git
$ cd projekt
$ git remote add dropbox ~/Dropbox/git/projekt.git</pre>
<p>Notera att steg två ovan är valfritt. Per automatik kommer repot i Dropboxen döpas till &#8220;<em>origin</em>&#8220;. Dock kan du som exemplet påvisar döpa om det till något annat.</p>
<p>För att hålla din lokala kopia uppdaterad med de senaste ändringarna som finns i Dropboxen utför du följande kommando.</p>
<pre>$ git pull dropbox master</pre>
<p>För att göra denna process lite enklare så har jag satt ihop ett shellskript som skapar ett nytt lokalt Git repository och ett i Dropboxen. Se installationsprocess nedan. Notera att du måste ändra variabeln &#8220;<em>DROPBOX</em>&#8221; i skriptet på rad 3 till den absoluta sökvägen till mappen i Dropboxen där du vill spara alla Git repositories.</p>
<pre>
$ curl -O "http://gist.github.com/raw/212810/36e6320523db68618e108c4fb1add06eefeec485/git-init-dropbox"
$ chmod u+x git-init-dropbox
$ sudo mv git-init-dropbox /usr/local/bin
</pre>
<p>Nedan finns ett exempel på hur man skapar ett nytt repository medhjälp av git-init-dropbox (shellskriptet).</p>
<pre>
$ mkdir projekt
$ cd projekt
$ git init-dropbox
</pre>
<p>Inspirationen till detta inlägg är hämtat ifrån Matt Longs bloggpost <a href="http://www.cimgf.com/2008/06/03/version-control-makes-you-a-better-programmer/">Version Control Makes You A Better Programmer</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2009/10/19/anvand-git-tillsammans-med-dropbox/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Några jQuery plugins</title>
		<link>http://qvister.se/2009/09/23/nagra-jquery-plugins/</link>
		<comments>http://qvister.se/2009/09/23/nagra-jquery-plugins/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 05:45:02 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=125</guid>
		<description><![CDATA[jQuery är ett JavaScript-bibliotek som verkligen gör allt berörande javascript-utveckling till en ren fröjd. Inte minst p.g.a. all inbyggd funktionalitet i kärnan och den uppsjö av plugins som finns. Beskrivningen på jQuerys officiella hemsida fångar det jag försöker beskriva. jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery är ett JavaScript-bibliotek som verkligen gör allt berörande javascript-utveckling till en ren fröjd. Inte minst p.g.a. all inbyggd funktionalitet i kärnan och den uppsjö av plugins som finns.<span id="more-125"></span></p>
<p>Beskrivningen på <a href="http://jquery.com/">jQuerys</a> officiella hemsida fångar det jag försöker beskriva.</p>
<blockquote><p>jQuery is a fast and concise JavaScript Library that simplifies HTML document traversing, event handling, animating, and Ajax interactions for rapid web development. jQuery is designed to change the way that you write JavaScript.</p></blockquote>
<p>Även jag har dragit mitt strå till stacken genom att dela med mig av några små plugins som jag har utvecklat på egenhand.</p>
<h3>jContact</h3>
<p>En plugin som kan används för att presentera kontaktinfo eller annan viktig information på ett snyggt sätt.</p>
<p><a href="http://qvister.se/wp-content/uploads/jquery/?script=jcontact">Exempel #1</a><br />
<a href="http://drip.se/">Exempel #2</a><br />
<a href="http://github.com/mptre/jcontact/tree/master">Ladda ner jContact</a></p>
<h3>jFields</h3>
<p>Låter dig ge textfält (inputs och textareas) standardvärden som beskriver vad fältet ska innehålla. Detta standardvärde försvinner så fort fältet markeras eller blir aktivt. Denna plugin är användbar om du inte vill använda dig av labels p.g.a. platsbrist eller av estetiska skäl.</p>
<p><a href="http://qvister.se/wp-content/uploads/jquery/?script=jfields">Exempel #1</a><br />
<a href="http://github.com/mptre/jquery-jfields/tree/master">Ladda ner jFields</a></p>
<h3>jCountUp</h3>
<p>Tillåter dig att räkna upp ett elements värde på ett snyggt sätt. Kan vara användbart när man bygger en årtals-navigation eller liknande. Det finns även gott om inställningar så som t ex. hastighet, värde och en callback.</p>
<p><a href="http://qvister.se/wp-content/uploads/jquery/?script=jcountup">Exempel #1</a><br />
<a href="http://vastracity.se/">Exempel #2</a><br />
<a href="http://github.com/mptre/jquery-jcountup/tree/master">Ladda ner jCountUp</a></p>
<h3>jPreloader</h3>
<p>Ersätter submit-knappen med en valfri preloader när en AJAX request utförs. I dagsläget fungerar endast denna plugin med formulär och används tillfördel med <a href="#link-me-up">jForm</a>.</p>
<p><a href="http://qvister.se/wp-content/uploads/jquery/?script=jpreloader">Exempel #1</a><br />
<a href="http://github.com/mptre/jquery-jpreloader/">Ladda ner jPreloader</a></p>
<h3>SimpleBlock</h3>
<p>Till ett kundjobb behövde jag blockera (göra dem &#8220;<em>oklickbara</em>&#8220;) några element under en bestämd tid. Det finns redan en del plugins som löser detta. Dock kändes de allt för tunga i detta fall. Därav skrev jag ihop SimpleBlock som låter dig blockera ett eller flera element under en given tid.</p>
<p><a href="http://qvister.se/wp-content/uploads/jquery/?script=simpleblock">Exempel #1</a><br />
<a href="http://github.com/mptre/jquery-simpleblock/tree/master">Ladda ner SimpleBlock</a></p>
<p>Alla plugins finns tillgängliga på GitHub och är koden är helt och hållet fri. Vilket i praktiken innebär att du har tillåtelse att använda dem och modifiera dem bäst du vill. Har du hittat en bugg eller sitter på lite feedback? Lämna då gärna en kommentar.</p>
<p>Om du själv är sugen på att börja skriva riktiga plugins till jQuery rekommenderar jag denna guide från <a href="http://net.tutsplus.com/videos/screencasts/learn-how-to-create-a-jquery-plugin/">Nettuts</a> och en från <a href="http://www.sitepoint.com/blogs/2009/07/22/how-to-develop-a-jquery-plugin/">SitePoint</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2009/09/23/nagra-jquery-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SoundCloud API wrapper med stöd för OAuth</title>
		<link>http://qvister.se/2009/09/18/soundcloud-api-wrapper-med-stod-for-oauth/</link>
		<comments>http://qvister.se/2009/09/18/soundcloud-api-wrapper-med-stod-for-oauth/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 18:49:39 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[soundcloud]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=408</guid>
		<description><![CDATA[Tidigare i år skrev jag ihop en API wrapper för SoundCloud i PHP. Idag kan jag med glädje meddela att denna wrapper har utökats med stöd för det nya OAuth protokollet. Öppen autentisering är hetare än någonsin. Bland de främsta i ledet står det nya protokollet OAuth, som ur ett perspektiv gör det möjligt för dig [...]]]></description>
			<content:encoded><![CDATA[<p><a style="text-decoration: none;" href="http://qvister.se/wp-content/uploads/2009/09/soundcloud_logo.gif"></a></p>
<p>Tidigare i år skrev jag ihop en API wrapper för <a href="http://soundcloud.com">SoundCloud</a> i PHP. Idag kan jag med glädje meddela att denna wrapper har utökats med stöd för det nya <a href="http://oauth.net">OAuth</a> protokollet.<span id="more-408"></span></p>
<p>Öppen autentisering är hetare än någonsin. Bland de främsta i ledet står det nya protokollet OAuth, som ur ett perspektiv gör det möjligt för dig som användare att logga in och komma åt t ex. ditt SoundCloud-konto från vilken sajt som helst (förutsagt att stöd för OAuth finns). Fördelarna är många, inte minst p.g.a. att vi slipper komma ihåg en uppsjö av användarnamn och lösenord. Ett praktiskt exempel är Twitter som tack vare sitt API med stöd för OAuth har lyckats skapa ett helt ny flora med tredjepartsutvecklade tjänster.</p>
<p>För er som inte känner till SoundCloud sen tidigare så kan jag berätta att det är fantastik tjänst utvecklad av musiker för musiker. Flickr kretsar kring bilder, Youtube kring video och SoundCloud kring musik. Tjänsten är utvecklad av två svenska smartskallar vid namn Alexander Ljung och Eric Wahlforss.</p>
<p>Att SoundCloud är en succé råder det inget tvivel om. Med drygt 300 000 användare och 2,5 miljoner euro i riskkapital ser framtiden oerhört ljus ut. Om du vill läsa mer om deras framgångsresa rekommenderar jag <a href="http://www.arcticstartup.com/2009/04/17/soundcloud-made-the-big-dream-a-reality/">ArcticStartups</a> bloggpost från i våras.</p>
<p>Timingen för releasen av denna wrapper kunde inte ha varit bättre. Ikväll inleds nämlingen <a href="http://berlin.musichackday.org">Music Hack Day</a> i Berlin där en massa musiker och utvecklare samlas under samma tak för att skapa musikrelaterade tjänster och program. Jag hoppas att min wrapper kan komma till användning!</p>
<p>API wrappern finns tillgänglig på <a href="http://github.com/mptre/php-soundcloud">GitHub</a> samt ett <a href="http://wiki.github.com/mptre/php-soundcloud/getting-started">exempel</a> på hur du kommer igång. Jag satte även ihop en liten demo applikation som finns att pröva på <a href="http://soundcloud.qvister.se">soundcloud.qvister.se</a>. SoundCloud själva har även skrivit om wrappern deras <a href="http://blog.soundcloud.com/2009/09/18/php-wrapper/">egna blogg</a>.</p>
<p><strong>Uppdatering: </strong>i ett nyligen publicerat inlägg hos självaste <a href="http://uk.techcrunch.com/2009/09/21/the-music-industry-should-learn-from-musichackday/">TechCrunch</a> länkas det till wrappern min!</p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2009/09/18/soundcloud-api-wrapper-med-stod-for-oauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bättre listning av kommentarer i WordPress</title>
		<link>http://qvister.se/2009/07/31/battre-listning-av-kommentarer-i-wordpress/</link>
		<comments>http://qvister.se/2009/07/31/battre-listning-av-kommentarer-i-wordpress/#comments</comments>
		<pubDate>Fri, 31 Jul 2009 14:55:56 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=251</guid>
		<description><![CDATA[Jag gjorde nyligen en ändring av listningen av kommentarerna här på sajten. Sedan WordPress 2.7 har man haft möjlighet att ta kontroll över markupen för kommentarerna medhjälp av funktionen wp_list_comments. Denna funktion tar flera argument, en utav dem är &#8220;callback&#8221; som låter dig koppla en egen funktion som påkallas så fort en kommentar ska visas. [...]]]></description>
			<content:encoded><![CDATA[
<p>Jag gjorde nyligen en ändring av listningen av kommentarerna här på sajten. Sedan WordPress 2.7 har man haft möjlighet att ta kontroll över markupen för kommentarerna medhjälp av funktionen <a href="http://codex.wordpress.org/Template_Tags/wp_list_comments">wp_list_comments</a>.<span id="more-251"></span></p>
<p>Denna funktion tar flera argument, en utav dem är &#8220;<em>callback</em>&#8221; som låter dig koppla en egen funktion som påkallas så fort en kommentar ska visas. På så sätt kan du själv bestämma vad som ska visas och inte visas. Personligen vart jag lite inspirerad av <a href="http://disqus.com/">Disqus</a> listning av kommentarer och valde även att formatera datumet och tiden då kommentaren postades på samma sätt som Twitter. Funktionen jag använder mig av heter niceTime och hittas borta hos <a href="http://manas.tungare.name/software/twitter-php-script/">Manas Tungare</a>. Givetvis har skribentens uppgifter formaterats enligt <a href="http://microformats.org/wiki/hcard">hCard</a> standarden.</p>
<p>Om du själv vill ta kontroll över listningen av kommentarerna på din blogg rekommenderar jag dig att läsa igenom dokumentationen hos <a href="http://codex.wordpress.org/Template_Tags/wp_list_comments">WordPress</a>.</p>
<p><em style="font-size: .88em;">Thumbnailen tillhörande detta inlägg är lånad ifrån <a href="http://www.flickr.com/photos/thehutch/1791627589/">thehutch</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2009/07/31/battre-listning-av-kommentarer-i-wordpress/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Namnsdagsbot på twitter</title>
		<link>http://qvister.se/2009/01/17/namnsdagsbot-pa-twitter/</link>
		<comments>http://qvister.se/2009/01/17/namnsdagsbot-pa-twitter/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 14:50:34 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=115</guid>
		<description><![CDATA[På min egen namnsdag (17:e januari) slog tanken mig vilken dålig koll åtminstone jag har på allas namnsdagar. Samma dag började jag söka runt efter ett RSS-flöde eller liknande som tillhandahöll alla svenska namnsdagar. Till min glädje fann jag dagensnamnsdag.nu. Ett RSS-flöde är dock inte det ultimata sättet att hålla koll på alla namnsdagar. Varför [...]]]></description>
			<content:encoded><![CDATA[
<p>På min egen namnsdag (17:e januari) slog tanken mig vilken dålig koll åtminstone jag har på allas namnsdagar. Samma dag började jag söka runt efter ett RSS-flöde eller liknande som tillhandahöll alla svenska namnsdagar. Till min glädje fann jag <a href="http://www.dagensnamnsdag.nu">dagensnamnsdag.nu</a>.<span id="more-115"></span></p>
<p>Ett RSS-flöde är dock inte det ultimata sättet att hålla koll på alla namnsdagar. Varför inte låta informationen komma till en istället? Med detta i åtanke skrev jag ihop en enkel twitterbot som varje dag berättar om vem eller vilka som har namnsdag. Om du följer <a href="http://twitter.com/namnsdag">namnsdag</a> på twitter gratulerar den även dig på din egen namnsdag.</p>
<p>För den tekniskt intresserade är det ett skript skrivet i PHP som parse:ar RSS-flödet från <a href="http://www.dagensnamnsdag.nu">dagensnamnsdag.nu</a> och twittrar sedan via twitter egna API. Skriptet körs i en crontab som utförs 01:00 varje dag.</p>
<p>Så vill du bli kvitt alla pinsamma situationer där du har glömt bort eller helt och hållet missat dina nära och käras namnsdagar? Följ då <a href="http://twitter.com/namnsdag">namnsdag</a> på twitter!</p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2009/01/17/namnsdagsbot-pa-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Korta.nu, gör dina långa länkar korta</title>
		<link>http://qvister.se/2008/11/01/korta-nu-gor-dina-langa-lankar-korta/</link>
		<comments>http://qvister.se/2008/11/01/korta-nu-gor-dina-langa-lankar-korta/#comments</comments>
		<pubDate>Sat, 01 Nov 2008 09:59:13 +0000</pubDate>
		<dc:creator>Anton Lindqvist</dc:creator>
				<category><![CDATA[Blogg]]></category>
		<category><![CDATA[applikation]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://qvister.se/?p=176</guid>
		<description><![CDATA[Korta.nu är en URL-förkortare som fungerar precis på samma sätt som originalet TinyURL. Tjänsten är förövrigt min första renodlade och publika webbapplikation. Idéen grundade sig i frågan &#8220;Hur svårt kan det vara att bygga en URL-förkortare?&#8221; och inte minst p.g.a. avsaknaden av en bra svensk URL-förkortare. En helg senare hade jag en färdig applikation och [...]]]></description>
			<content:encoded><![CDATA[
<p><a href="http://korta.nu/">Korta.nu</a> är en URL-förkortare som fungerar precis på samma sätt som originalet <a href="http://tinyurl.com/">TinyURL</a>. Tjänsten är förövrigt min första renodlade och publika webbapplikation.<span id="more-176"></span></p>
<p>Idéen grundade sig i frågan &#8220;Hur svårt kan det vara att bygga en URL-förkortare?&#8221; och inte minst p.g.a. avsaknaden av en bra svensk URL-förkortare. En helg senare hade jag en färdig applikation och domänen korta.nu visade sig vara ledig. Idag används tjänsten ganska flitigt, inte minst på <a href="http://search.twitter.com/search?q=korta.nu+filter%3Alinks">Twitter</a>.</p>
<p>Tjänsten kompletteras med en bookmarklet som gör det oerhört enkelt att förkorta länkar med en knapptryckning och en Mac OS X <a href="http://korta.nu/korta.nu-wdgt.zip">Dashboard widget</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://qvister.se/2008/11/01/korta-nu-gor-dina-langa-lankar-korta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
