<?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>Creunabloggen &#187; Matti Kotsalainen</title>
	<atom:link href="http://blogs.creuna.se/author/mattikotsalainen/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.creuna.se</link>
	<description>Creunas medarbetare tycker till om stort och smått i webbranschen</description>
	<lastBuildDate>Fri, 11 May 2012 10:54:08 +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>Pivotal Tracker är riktigt bra</title>
		<link>http://blogs.creuna.se/2011/03/pivotal-tracker-ar-riktigt-bra/</link>
		<comments>http://blogs.creuna.se/2011/03/pivotal-tracker-ar-riktigt-bra/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 02:26:40 +0000</pubDate>
		<dc:creator>Matti Kotsalainen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://blogs.creuna.se/?p=484</guid>
		<description><![CDATA[
På Creuna så använder vi Redmine som projekthanteringssystem. Ett möjligt alternativ skulle kunna vara Pivotal Tracker. Jag har hört mycket gott om produkten så jag ville testa. Det har ett superintuitivt interface, men det bästa av allt: git-integrationen
Jag lägger upp mina stories i pivotal och prioriterar genom drag and drop. Jag gör även en snabb [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blogs.creuna.se/wp-content/uploads/2011/03/one_view.png"><img src="http://blogs.creuna.se/wp-content/uploads/2011/03/one_view.png" alt="" title="one_view" width="491" height="243" class="aligncenter size-full wp-image-485" /></a><br />
På Creuna så använder vi <a href="http://www.redmine.org/">Redmine</a> som projekthanteringssystem. Ett möjligt alternativ skulle kunna vara <a href="http://www.pivotaltracker.com/">Pivotal Tracker</a>. Jag har hört mycket gott om produkten så jag ville testa. Det har ett superintuitivt interface, men det bästa av allt: <a href="https://github.com/trydionel/git-pivotal">git-integrationen</a></p>
<p>Jag lägger upp mina stories i pivotal och prioriterar genom drag and drop. Jag gör även en snabb estimering, som pivotal använder för att planera vad som borde hinnas med i sprinten baserad på teamets tidigare utvecklingshastighet.</p>
<p>När det är dags för mig att jobba på något så skriver jag:</p>
<p>➜ git feature<br />
Retrieving latest features from Pivotal Tracker&#8230;<br />
Story: Revert account link in prefs / account<br />
URL:   http://www.pivotaltracker.com/story/show/11125931<br />
Updating feature status in Pivotal Tracker&#8230;<br />
Enter branch name (will be prepended by 11125931) [feature]: revert-account-link<br />
Creating 11125931-revert-account-link branch&#8230;<br />
Switched to a new branch &#8216;11125931-revert-account-link&#8217;<br />
/Users/matti/projects/fooproj git:(11125931-revert-account-link) ✗</p>
<p>Det hämtar den senaste storyn från trackern och skapar en ny lokal feature branch. Fördelen med feature branches är att man alltid har en körbar version i master trunken. Man kan enkelt jobba på flera features samtidigt genom att ha dom i olika branchar. Man håller de lokala brancharna ajour med master branchen via sk. rebasing.</p>
<p>Man committar delstegen man gör på storyn. När man är klar så skriver man<br />
➜ git finish</p>
<p>Det markerar storyn som klar i pivotaltracker som håller koll på hur lång tid det tog att genomföra storyn jämfört med hur komplex man hade estimerat den till att vara = din utvecklingshastighet). Sen tar den bort feature branchen och mergar in i master trunken.</p>
<p>Det blir inte enklare än så här. Det är agilt utan skitsnack. Jag har bara kört på soloprojekt hittils, men det borde ju vara ännu bättre i team.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.creuna.se/2011/03/pivotal-tracker-ar-riktigt-bra/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Git &gt; Subversion</title>
		<link>http://blogs.creuna.se/2010/10/git-subversion/</link>
		<comments>http://blogs.creuna.se/2010/10/git-subversion/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 18:55:21 +0000</pubDate>
		<dc:creator>Matti Kotsalainen</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://blogs.creuna.se/?p=286</guid>
		<description><![CDATA[De flesta programmerare som jag känner började sin versionshanteringskarriär med antingen CVS eller M$ SourceSafe. Efter några år gick de över till Subversion eftersom det fungerar på ungefär samma sätt, fast bättre. De är nöjda med Subversion och har inga åsikter om hur systemet skulle kunna förbättras. Dessutom så finns det bra GUI frontar för [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blogs.creuna.se/wp-content/uploads/2010/10/git_logo1.png" alt="" title="git_logo" width="118" height="213" class="alignleft size-full wp-image-336" />De flesta programmerare som jag känner började sin versionshanteringskarriär med antingen CVS eller M$ SourceSafe. Efter några år gick de över till Subversion eftersom det fungerar på ungefär samma sätt, fast bättre. De är nöjda med Subversion och har inga åsikter om hur systemet skulle kunna förbättras. Dessutom så finns det bra GUI frontar för Subversion som tex. <a href="http://tortoisesvn.tigris.org/">Tortoise</a>. Jag hävdar att det är dags att lämna Subversion, det finns bättre alternativ!</p>
<p>Sedan några år tillbaka så finns det en ny typ av versionshanteringssystem som till skillnad från de gamla är decentraliserade. Exempel på de här nya systemen är <a href="http://git-scm.com/">Git</a>, <a href="http://mercurial.selenic.com/">Mercurial</a> och <a href="http://bazaar.canonical.com/en/">Bazaar</a>. I ett <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">decentraliserat versionshanterinssystem</a> (DVCS) så har varje användare en lokal kopia av hela projektets versionshistorik. Det betyder INTE att man inte kan ha ett centralt repository som alla i projektet arbetar mot, och det leder heller inte till anarki. Med ett  DVCS kan man göra allt som man kan med Subversion, och dessutom en massa andra saker.</p>
<p>För mig är de viktigaste fördelarna med DVCS <strong>lokala commits</strong> och <strong>lokala branchar</strong>. En vanlig pattern i Subversion-land är att man på stora projekt inte vågar checka in kod eftersom det kan sabba bygget för resten av laget. Det leder till att man sitter och kodar på sin nya feature under en längre tid och väntar med att checka in tills det är testat och klart &#8211; vilket ibland kan ta lång tid. Under tiden man arbetar på sin feature så kan man hämta hem ny kod från sina medarbetare via svn update, men man har ingen versionshistorik på sin nya feature. Ett DVCS råder bot på det här problemet genom att tillåta lokala commits. När man är klar pushar man upp sina ändringar till den centrala servern, antingen som en enda commit eller med hela lokala versionshistoriken för featuren.</p>
<p>Under tiden som man arbetar på sin nya oincheckade feature så är det väldigt vanligt att man inte kan köra resten av systemet på sin lokala maskin eftersom det är en enda stor byggarbetsplats.  Med ett DVCS som Git så är det busenkelt att skapa lokala branchar. Vana Git-användare gör det flera gånger om dagen! För varje ny feature som man börjar arbeta på så skapar man en lokal branch. När man är nöjd med featuren så mergar man tillbaka det till sin lokala trunk innan man pushar upp den till det centrala repot. Man kan även brancha i Subversion, men det är krångligare så det brukar man bara göra vid större releaser. </p>
<p>Förutom lokala commits och branchar så finns det en massa andra anledningar till att gå över till ett DVCS. Det känns helt enkelt mer kraftfullt och modernt. Dessutom så vågar jag hävda att det gör ditt liv som utvecklare roligare, för det ger dig en ny frihetsgrad. </p>
<p>Jag vet inte om Git eller någon av de andra DVCSerna kommer slå igenom på bred front, men inom open source så har de redan gjort det. Jquery, Linux, Rails, Drupal och andra stora projekt kör eller är på väg till Git. Det som talar emot Git är att det är lite svårare att lära sig än Subversion. Git används av de flesta via kommandotolken, och det är tveksamt om man kan få med sig .NET och Java-utvecklarna tills att det finns bra integration med deras utvecklingsmiljöer. På sistone har det kommit GUI-frontar både till <a href="http://code.google.com/p/tortoisegit/">Windows</a> och <a href="http://gitbox.pierlis.com/">OSX</a>. </p>
<p>Jag har använt Git sen ett tag tillbaka och jag är fast! Jag känner inte till någon som har lärt sig Git och som har valt att gå tillbaka till Subversion. Som tur är så kan jag köra Git även om alla andra i mitt projekt vill fortsätta använda Subversion. Det finns nämligen en <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html">git-svn brygga</a> som är väldigt enkel att använda. Med den så kör jag Git lokalt fast den centrala Subversion servern ser mig som en vanlig subversion klient.</p>
<p>Fortfarande inte övertygad om att Git är bättre än Subversion? Läs det här!: <a href="http://whygitisbetterthanx.com/">Why Git is better than X</a> och <a href="https://git.wiki.kernel.org/index.php/GitSvnComparison">Git Svn Comparison</a>.</p>
<p>Här är några länkar jag rekommenderar er att utforska om ni vill lära er mer om Git:<br />
<a href="http://book.git-scm.com/">Git Community Book</a><br />
<a href="http://progit.org/book/">Pro Git Book</a><br />
<a href="http://www.viget.com/extend/effectively-using-git-with-subversion/">Effectively using Git with Subversion</a><br />
<a href="http://nvie.com/posts/a-successful-git-branching-model/">A Successful Git Branching Model</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.creuna.se/2010/10/git-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lista färgerna i en cssfil</title>
		<link>http://blogs.creuna.se/2010/06/lista-fargerna-i-en-cssfil/</link>
		<comments>http://blogs.creuna.se/2010/06/lista-fargerna-i-en-cssfil/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 12:40:57 +0000</pubDate>
		<dc:creator>Matti Kotsalainen</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blogs.creuna.se/?p=191</guid>
		<description><![CDATA[Jag var tvungen att kolla igenom en cssfil för att bekräfta att vi höll oss till ett visst färgschema. Ruby är bra i såna här lägen.

require 'set'
unless ARGV.length == 1
   puts &#34;usage: display_colors_in_css.rb [css_file]&#34;
   exit 1
end

css = IO.read(ARGV[0])
color_refs = css.scan /\#[0-9A-Fa-f]{3,6}/
color_set = Set.new( color_refs.map(&#38;:upcase) )
puts color_set.to_a.sort

]]></description>
			<content:encoded><![CDATA[<p>Jag var tvungen att kolla igenom en cssfil för att bekräfta att vi höll oss till ett visst färgschema. Ruby är bra i såna här lägen.</p>
<pre class="brush: ruby;">
require 'set'
unless ARGV.length == 1
   puts &quot;usage: display_colors_in_css.rb [css_file]&quot;
   exit 1
end

css = IO.read(ARGV[0])
color_refs = css.scan /\#[0-9A-Fa-f]{3,6}/
color_set = Set.new( color_refs.map(&amp;:upcase) )
puts color_set.to_a.sort
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blogs.creuna.se/2010/06/lista-fargerna-i-en-cssfil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

