<?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/"
	>

<channel>
	<title>epepep</title>
	<atom:link href="http://per.liedman.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://per.liedman.net</link>
	<description></description>
	<pubDate>Wed, 04 Mar 2009 17:43:51 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Reality Bites</title>
		<link>http://per.liedman.net/2009/03/04/reality-bites/</link>
		<comments>http://per.liedman.net/2009/03/04/reality-bites/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 17:43:51 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<category><![CDATA[1]]></category>

		<guid isPermaLink="false">http://per.liedman.net/?p=135</guid>
		<description><![CDATA[I&#8217;m a software developer. I like abstractions, I enjoy mentally putting things in little boxes, structuring my mental model of the world, or at least the model of the problem I&#8217;m currently struggling with. I don&#8217;t know if it&#8217;s a requirement, but if you&#8217;re a developer, it certainly helps to be border-lining to obsessive about [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a software developer. I like abstractions, I enjoy mentally putting things in little boxes, structuring my mental model of the world, or at least the model of the problem I&#8217;m currently struggling with. I don&#8217;t know if it&#8217;s a requirement, but if you&#8217;re a developer, it certainly helps to be border-lining to obsessive about knowing how stuff works, in excruciating detail.</p>
<p>Having said that, I find it fascinating how problems in programming constantly make you hit your head against the wall of reality - the wall located where pretty, simple and linear abstractions meet the real world. You know, the real world which refuses to be dumbed down into simple rules, and even when you <em>think</em> you&#8217;ve trapped it with you&#8217;re rules, always breaks free with new twists and turns that you hadn&#8217;t thought of. This is sort of the essence - problems that I&#8217;ve been working with more or less since I started programming, problems which also appear very benign from a casual viewpoint, that keep coming back, and simply refuse to be solved in a way such that you can put them behind you.</p>
<p><strong>Time</strong> is the first and most obvious case. That something as fundamental and trivial (you learn to read the watch when you&#8217;re what? Five? Six?) can be so complicated and easy to get wrong is truly fascinating. And then I haven&#8217;t even mentioned dates yet. Just starting to think about dates will get any programmer into trouble. Before you know it, you&#8217;re knee deep in Gregorian calendars and leap years - and even then, you won&#8217;t get it right. In fact, I&#8217;d go so far as saying that any non-trivial date/time calculation in software will contain at least one bug, or one special case that you hadn&#8217;t really thought of. </p>
<p>Once again, then I haven&#8217;t even mentioned <em>time zones</em> yet. Time zones, combined with daylight savings time, is the real killer, if you by pure miracle got the first date calculations right. At the company were I worked before, we had a standing joke two times a year - was this going to be the first day lights savings switch in the company&#8217;s history where we didn&#8217;t encounter a bug related to it? From what I can recall, we never had a bug free switch (in five years!).</p>
<p><strong>Maps</strong>, or perhaps rather geographic locations, is the second thing that springs to mind as a seemingly straightforward thing, that just never ever gets right. </p>
<p>From the day we learned how to use a two dimensional map, I actually think we&#8217;re doomed into living in the wrong paradigm. In grade school we learn that north is up on the map, and using a ruler to measure distances on it is the way to go. Sure, both work. Sometimes. But equally often, it just almost works, it&#8217;s almost true, kind of. &#8220;Almost true&#8221;, deeply ingrained in your mind, happens to be a perfect and never ending source of interesting and subtle software bugs.</p>
<p>Add to that the fact that the earth isn&#8217;t really a sphere, but almost, and while we have attempted to meaure its non-spheriness, we came up with several conflicting measurements, all giving slightly different results when you try to express where you are on this not-really-a-sphere thing. Sometimes, different measurements are mixed, and you will have to use completely non-trivial transformations to convert from one to the other, but those transformations only work for very special circumstances.</p>
<p>Even if you get it right, someone will probably want to calculate the distance from where you think you are to some other point, which isn&#8217;t at all trivial on a sphere. But it wasn&#8217;t a sphere, right? Yep, right - not a sphere, and that makes it just even worse. Luckily, I (and probably not you) don&#8217;t need the last kind of precision very often, but that doesn&#8217;t help, because we will <em>still</em> try to use a ruler (or its digital equivalent) to measure the distance on a map - which won&#8217;t work, even if the teacher in fourth grade said it would.</p>
<p><strong>Character encoding</strong> is my last example. Yes, getting characters to show up on your screen, more or less. Again, something very mundane and something a non-developer would take for granted. And yet, this is something that has been a problem in just about any application I&#8217;ve written, or seen being written, or used, for I don&#8217;t know how long. I guess being a swede, using the funny å, ä, ö characters a lot (or &#8220;Ã¥, Ã¤ and Ã¶&#8221;, as I&#8217;ve learnt to know them from years of UTF-8/ISO-8859 mangling), doesn&#8217;t help, since you&#8217;re so much more exposed to the problem.</p>
<p>Closing up, I want to attempt finding something that these three problems have in common, something that make seemingly simple things so very complicated. My first guess would be that its the perceived simplicity that is the core in all three - all are stuff that we in our daily lives take for granted, talk about while at the same time not paying much attention to the details: we look at our watches, make appointments and write them in our calendars, decide to meet at certain locations and talk about how far it is to places. We never ever think about the underlying details and complexities while doing this, it&#8217;s all very intuitive to us. On the other hand, I think it&#8217;s this very intuition that trips us when developing software; the fact that we think we know this very well gets in the way details (that most of us actually don&#8217;t know).</p>
<p>Also, all three share that they in some way involve problems regarding frame of reference: time zone and daylight savings time problems are hard since you very easily get confused about what is fixed and what is relative. The map problems are very much the same - what is absolute in one frame of reference (&#8221;up&#8221;, &#8220;north&#8221;, &#8220;distance&#8221;, etc.), does not necessarily translate to some absolute in another, and what you&#8217;re doing is switching frame of reference, if it&#8217;s going from a projected map to WGS84, or if it&#8217;s transforming between two geodetic references. Character encoding, and translation from one encoding to another, is also only meaningful if you keep track of your frame or reference (&#8221;current encoding&#8221;) through every step of the process - something which is very obviously much easier said than done.</p>
<p>At first, I also thought about adding the theory of relativity to the problems above. I decided against it, since it&#8217;s really not something you deal with every day, and it&#8217;s also far beyond my field of expertise. Interestingly enough though, it also talks about things we perceive as intuitive (time, length and weight being more or less constant) and turns it on its head, although more profoundly than the examples above. Also, the solution very much lies in keeping track of your frame of reference. </p>
<p>This is also the conclusion: a perceived intuitivity about a problem, combined with transitions between different frames of reference, makes for a problem that you will come back to again and again.</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2009/03/04/reality-bites/feed/</wfw:commentRss>
		</item>
		<item>
		<title>DNS-323 filename encoding problems</title>
		<link>http://per.liedman.net/2009/02/22/dns-323-filename-encoding-problems/</link>
		<comments>http://per.liedman.net/2009/02/22/dns-323-filename-encoding-problems/#comments</comments>
		<pubDate>Sun, 22 Feb 2009 12:53:43 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=133</guid>
		<description><![CDATA[This entry will be in english, since it&#8217;s more likely to be helpful to others googling for solutions to the same problem.
A colleague of mine has used a D-Link DNS-323 as his RAID/backup solution at home. Apparently it&#8217;s been working great for ages, until he recently updated its firmware, which also caused all files and [...]]]></description>
			<content:encoded><![CDATA[<p>This entry will be in english, since it&#8217;s more likely to be helpful to others googling for solutions to the same problem.</p>
<p>A colleague of mine has used a <a href="http://www.dlink.com/products/?pid=509">D-Link DNS-323</a> as his RAID/backup solution at home. Apparently it&#8217;s been working great for ages, until he recently updated its firmware, which also caused all files and directories containing non-ASCII characters (mostly å, ä and ö for us swedes) to be completely inaccessible; the windows sharing (Samba/SMB) wouldn&#8217;t show the directories at all, and although they showed up in FTP, you couldn&#8217;t really access them. Downgrading the firmware did not help.</p>
<p>The fun thing about the DNS-323, and the reason the colleague asked me for help, is that it runs Linux internally. Although it looks like a USB disk with a web interface, it actually has a full-featured operating system underneath. Well, <i>close to</i> full featured.</p>
<p>Googling for solutions, I found another swede, Martin Bergek, who had at least <a href="http://www.bergek.com/2008/11/12/filename-encoding-problems-on-dlink-dns-323/">similar problems</a> (by chance, I also happen to know who Martin is). It seems that older firmwares used <a href="http://en.wikipedia.org/wiki/Code_page_850">CP850</a> for filename encoding, while newer versions use <a href="http://en.wikipedia.org/wiki/UTF-8">UTF-8</a>. Probably some upgrade didn&#8217;t go as planned, leaving the filenames in CP850, while interpreting them as UTF-8. Decoding swedish CP850 characters as UTF-8 results in invalid multibyte characters, causing the programs to refuse to handle files and directories containing them.</p>
<p>Now for the fun part. There seems to be quite a <a href="http://wiki.dns323.info/">community developing hacks for the DNS-323</a>. Using the so called <a href="http://wiki.dns323.info/howto:fun_plug">fun_plug</a>, you can very easily enable an SSH server, and get access to lots of useful commands. In my case, SSH access in combination with the <a href="http://en.wikipedia.org/wiki/Rsync">rsync</a> command turned out to be the key.</p>
<p>My solution was to get a backup disk large enough to copy all the material from the DNS-323 (actually, my colleague had already thought of this and provided me with a disk for this purpose). Once all the files where copied from the DNS-323, it could be wiped and the files copied back, but this time with the correct filename encoding.</p>
<p>As mentioned above, most of the problem results from applications interpreting the characters as invalid UTF-8 codes, refusing to work with them altogether. Even basic stuff, like doing recursive file lists with rsync, fails if a directory contains the invalid characters, probably since the runtime&#8217;s string library can&#8217;t work with the resulting strings. Shell commands like cd handle the directories, though, even if the characters are displayed as garbage.</p>
<p>Fortunately, rsync includes a command line parameter called <code>--iconv</code>, which lets you override which encoding is used when interpreting the filenames. This way, you can interpret the names correctly, and they can be converted into proper UTF-8. The trick is that you have to do this on the DNS-323 side, otherwise the conversion will be done on the backup unit&#8217;s side, still causing errors attempting to do recursive file lists. (In case you connect the USB disk directly to the DNS-323, you won&#8217;t have to think about this - in my case, the backup disk was connected to my Ubuntu desktop.)</p>
<p>So, to sum things up, this was the killer command line that made it possible to copy all the files out of the DNS-323:</p>
<p><code>rsync -azv --iconv=cp850,utf8 /mnt/HD_a2/ per@asta:/media/usbdrive/dns323</code></p>
<p>(Obviously, you&#8217;ll have to replace the paths to whatever directories you&#8217;re using on the DNS-323 as well as for the backup disk.)</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2009/02/22/dns-323-filename-encoding-problems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Grotesque</title>
		<link>http://per.liedman.net/2008/07/03/grotesque/</link>
		<comments>http://per.liedman.net/2008/07/03/grotesque/#comments</comments>
		<pubDate>Thu, 03 Jul 2008 16:29:56 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=130</guid>
		<description><![CDATA[Som jag skrivit i en tidigare post har jag skrivit ett program för katalogisering av IF-spel. För att göra det hela lite mer officiellt har jag nu registrerat projektet på SourceForge, som nu tar hand om Grotesques hemsida samt tar hand om projektets programkod.
]]></description>
			<content:encoded><![CDATA[<p>Som jag skrivit i en <a href="http://per.liedman.net/?p=127">tidigare post</a> har jag skrivit ett program för katalogisering av <a href="http://en.wikipedia.org/wiki/Interactive_fiction">IF</a>-spel. För att göra det hela lite mer officiellt har jag nu registrerat projektet på SourceForge, som nu tar hand om <a href="http://grotesque.sourceforge.net/">Grotesques hemsida</a> samt tar hand om <a href="http://grotesque.svn.sourceforge.net/viewvc/grotesque/">projektets programkod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2008/07/03/grotesque/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spielen!</title>
		<link>http://per.liedman.net/2008/06/23/spielen/</link>
		<comments>http://per.liedman.net/2008/06/23/spielen/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 18:44:28 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=127</guid>
		<description><![CDATA[Stora nyheter. Jag har lyckats sätta ihop mitt första GTK+-program och skapat mitt första Ubuntu-paket (som innehåller programmet i fråga). Men låt oss börja från början.
De senaste månaderna har jag fastnat i textäventyr - den uråldriga eller kanske urmodiga typ av datorspel där man spelar genom att läsa text och sedan skriva kommandon för att [...]]]></description>
			<content:encoded><![CDATA[<p>Stora nyheter. Jag har lyckats sätta ihop mitt första <a href="http://www.gtk.org/">GTK+</a>-program och skapat mitt första Ubuntu-paket (som innehåller programmet i fråga). Men låt oss börja från början.</p>
<p>De senaste månaderna har jag fastnat i textäventyr - den uråldriga eller kanske urmodiga typ av datorspel där man spelar genom att läsa text och sedan skriva kommandon för att berätta för datorn vad man vill göra; <a href="http://en.wikipedia.org/wiki/Interactive_fiction">interactive fiction</a> (IF) är den engelska termen, som jag gillar bättre, då det inte nödvändigtvis rör sig om äventyr av drakar och demoner-karaktär.</p>
<p>I detta äventyrande började mina problem. Annars förträffliga Ubuntu har inte några program för att spela IF på något bekvämt sätt; några program finns (frotz, tads och qtads), men de täcker inte alla olika spelformat som finns, och även om jag gillar terminalfönster så är det inte optimalt för IF. Min favorit blev istället snart <a href="http://ccxvii.net/gargoyle/">Gargoyle</a>, som stöder alla format jag är intresserad av, samt ser synnerligen elegant ut.</p>
<p>Vad Gargoyle saknar är dock ett bibliotek, eller smidigt sätt att hålla reda på de olika spel man samlar på sig. Det är här mitt program kommer in. Ett slags katalogiseringsprogram för IF-spel med utseende som ett budget-iTunes. Arbetsnamnet är <i>Grotesque</i> (eftersom en gargoyle är en form av groteskornamentik - ja, jag fick slå upp det sistnämnda ordet).</p>
<p>Jag ämnar nog göra något lite mer seriöst av detta längre fram, men tills vidare lägger jag upp <del>en screenshot, källkoden samt slutligen Ubuntu-paketet för Grotesque-0.1</del> (Uppdaterat 2008-07-03: se <a href="http://grotesque.sourceforge.net/">Grotesques hemsida</a> för senaste versionen av dessa filer). Eftersom jag bara byggt på min egen maskin och det är första gången jag paketerar för Ubuntu så har jag säkert gjort något fel, men pröva gärna.</p>
<p>Min plan härnäst är att paketera även Gargoyle som Ubuntu-paket, eftersom det är lite väl stökigt att bygga för hand nu, lägga på lite puts och glans på Grotesque, samt kanske hitta på ett ordentligt namn. Vi får se. Under tiden borde du pröva att spela lite IF - några bra förslag på spel att pröva hittar du t.ex. <a href="http://www.astro.umd.edu/~marshall/ifmini.html">här</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2008/06/23/spielen/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kvitter</title>
		<link>http://per.liedman.net/2008/06/19/kvitter/</link>
		<comments>http://per.liedman.net/2008/06/19/kvitter/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 07:42:13 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=124</guid>
		<description><![CDATA[Här verkar det inte hända mycket, men om ni är väldigt intresserad av vad jag håller på med kan ni numera försöka följa mig på Twitter.
]]></description>
			<content:encoded><![CDATA[<p>Här verkar det inte hända mycket, men om ni är väldigt intresserad av vad jag håller på med kan ni numera försöka följa mig på <a href="http://twitter.com/liedman">Twitter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2008/06/19/kvitter/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dagens Ubuntu-tips</title>
		<link>http://per.liedman.net/2008/04/13/dagens-ubuntu-tips/</link>
		<comments>http://per.liedman.net/2008/04/13/dagens-ubuntu-tips/#comments</comments>
		<pubDate>Sun, 13 Apr 2008 17:17:36 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=123</guid>
		<description><![CDATA[Jag är en stor vän av tangenbordsgenvägar. Tydligen till den grad att jag inte ens märker att jag använder dem. Däremot blir det problem när de plötsligt slutar fungera. Därför är en av de få irritationsmoment jag haft sen jag konverterade till Ubuntu varit att en så enkel sak som att flytta markören i URL:er [...]]]></description>
			<content:encoded><![CDATA[<p>Jag är en stor vän av tangenbordsgenvägar. Tydligen till den grad att jag inte ens märker att jag använder dem. Däremot blir det problem när de plötsligt slutar fungera. Därför är en av de få irritationsmoment jag haft sen jag <a href="http://per.liedman.net/?p=116">konverterade till Ubuntu</a> varit att en så enkel sak som att flytta markören i URL:er i Firefox inte längre fungerar som jag är van vid.</p>
<p>I Windows kan man förflytta markören snabbt genom en URL till nästa &#8220;logiska stopp&#8221; (punkt, snedstreck, &#038;-tecken, etc.) genom att hålla inne Ctrl samtidigt som en av piltangenterna. I Ubuntu leder (med default-inställningarna) tyvärr detta till att man hoppar direkt till slutet respektive början av hela URL:en, till föga nytta.</p>
<p>Efter att äntligen orkat upparbeta en tillräcklig irritation över detta, Googlade jag och fann lösningen: ändra inställningen <em>layout.word_select.stop_at_punctuation</em> till <em>true</em> i Firefox (genom att gå till <a href="about:config">about:config</a>). Underbart lätt. Varför detta inte är grundinställningen är ett mysterium.</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2008/04/13/dagens-ubuntu-tips/feed/</wfw:commentRss>
		</item>
		<item>
		<title>God afton, herr Mandelbrot</title>
		<link>http://per.liedman.net/2008/02/02/god-afton-herr-mandelbrot/</link>
		<comments>http://per.liedman.net/2008/02/02/god-afton-herr-mandelbrot/#comments</comments>
		<pubDate>Sat, 02 Feb 2008 19:13:37 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=119</guid>
		<description><![CDATA[
C-programmering och fraktaler. Praktiskt taget som att vara tillbaka i gymnasiet igen, även om jag tror jag programmerade i Pascal sist jag gjorde dem.
Som tur är har det hänt en hel del på hårdvarufronten sen dess, och även löjligt högupplösta och färggranna versioner av Mandelbrot-mängden går att åstadkomma på nästan ingen tid alls.
Tack vare den [...]]]></description>
			<content:encoded><![CDATA[<p><a href='http://per.liedman.net/wp-content/uploads/2008/02/mandelbrot.jpg' title='Mandelbrot'><img src='http://per.liedman.net/wp-content/uploads/2008/02/mandelbrot.thumbnail.jpg' alt='Mandelbrot' class='right'/></a><br />
<a href='http://en.wikipedia.org/wiki/C_%28programming_language%29'>C</a>-programmering och <a href='http://en.wikipedia.org/wiki/Fractal'>fraktaler</a>. Praktiskt taget som att vara tillbaka i gymnasiet igen, även om jag tror jag programmerade i Pascal sist jag gjorde dem.</p>
<p>Som tur är har det hänt en hel del på hårdvarufronten sen dess, och även löjligt högupplösta och färggranna versioner av <a href="http://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot-mängden</a> går att åstadkomma på nästan ingen tid alls.</p>
<p>Tack vare den uppsjö av hjälpprogram som finns lättillgängliga i en modern Linux-distribution (i det här fallet <a href="http://netpbm.sourceforge.net/">NetPBM</a> och <a href="http://ffmpeg.mplayerhq.hu/">FFmpeg</a>), gick det snabbt att göra <a href='http://per.liedman.net/wp-content/uploads/2008/02/mandelbrot.mp4'>en film</a> (1.8 MB) med en kort inzoomning.</p>
<p>Källkoden som användes för att rita bilderna finns här: <a href='http://per.liedman.net/wp-content/uploads/2008/02/mandelbrot.c'>mandelbrot.c</a></p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2008/02/02/god-afton-herr-mandelbrot/feed/</wfw:commentRss>
<enclosure url="http://per.liedman.net/wp-content/uploads/2008/02/mandelbrot.mp4" length="1886176" type="video/mp4" />
		</item>
		<item>
		<title>Adjö Windows, hej Ubuntu</title>
		<link>http://per.liedman.net/2007/11/04/adjo-windows-hej-ubuntu/</link>
		<comments>http://per.liedman.net/2007/11/04/adjo-windows-hej-ubuntu/#comments</comments>
		<pubDate>Sun, 04 Nov 2007 14:20:50 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=116</guid>
		<description><![CDATA[
Inspirerad av Mattias har jag sedan några veckor tillbaka gjort mig fri från Windows. Jag har förvisso kört Linux på min server i många år, och experimenterat med Ubuntu Linux på någon maskin, men inte vågat ta steget att köra det för det dagliga surfandet, programmerandet, etc.
Hittills är jag mycket nöjd. Linux och framförallt Ubuntu [...]]]></description>
			<content:encoded><![CDATA[<p><img src='http://per.liedman.net/wp-content/uploads/2007/11/logo_ubuntu.thumbnail.gif' alt='Ubuntu Linux' class='right' width='62' height='64'/><br />
Inspirerad av <a href='http://mattias.st/blogg.asp?ID=1886'>Mattias</a> har jag sedan några veckor tillbaka gjort mig fri från Windows. Jag har förvisso kört Linux på min server i många år, och experimenterat med <a href="http://www.ubuntu.com">Ubuntu Linux</a> på någon maskin, men inte vågat ta steget att köra det för det dagliga surfandet, programmerandet, etc.</p>
<p>Hittills är jag mycket nöjd. Linux och framförallt Ubuntu har kommit långt i fråga om användarvänlighet, och jag vågar påstå att det inte är svårare att varken installera eller använda Ubuntu 7.10 än Windows. Samtidigt får man fördelarna att systemet är gratis, betydligt lättare att installera och uppdatera programvara på (som också är gratis), samt fungerar bra även på en inte allt för kraftfull dator (framförallt jämfört med pinsamt minneshungriga Windows Vista, men står sig bra även mot XP).</p>
<p>Inte övertygad av Ubuntus storhet ännu? Läs en <a href="http://community.zdnet.co.uk/blog/0,1000000567,10006217o-2000331777b,00.htm">jämförelse mellan Vista och Ubuntu 7.10</a>. Favoritcitat angående Vistas prestanda:</p>
<blockquote><p>
But mostly: it&#8217;s slow, it&#8217;s intrusive, and it&#8217;s arbitrarily different. It takes minutes to wake up from various sleep states or from a restart; minutes in which parts of the system seem to get going only to lapse into an unresponsive state where you&#8217;re not at all sure whether your mouse clicks are registering. When you&#8217;re going through a lot of restarts (as in, say, when you&#8217;re trying to diagnose a wireless network problem), that adds up to a lot of pain.</p>
<p>Elsewhere, it behaves like XP behaves on a 256MB computer, only it&#8217;s running in 2GB. Everything is just&#8230; slow.
</p></blockquote>
<p>Som jag <a href="http://per.liedman.net/?p=106">sagt tidigare</a> önskar jag att jag kunde vara lite mindre förutsägbar och säga något positivt om Vista, men det går bara inte (fast den nya startmenyn är bra, det skall sägas). Pröva Ubuntu istället, som sagt.</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2007/11/04/adjo-windows-hej-ubuntu/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Noder och bågar</title>
		<link>http://per.liedman.net/2007/10/29/noder-och-bagar/</link>
		<comments>http://per.liedman.net/2007/10/29/noder-och-bagar/#comments</comments>
		<pubDate>Mon, 29 Oct 2007 15:59:58 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=109</guid>
		<description><![CDATA[På senaste tiden verkare jag stöta på grafer var jag än vänder mig - alltså inte grafer som kurvor och diagram, utan sådana med noder och bågar, som illustrerar hur diskreta objekt är relaterade till varandra. Är det inte vem som är vän med vem på Facebook, så är det artister och hur de liknar [...]]]></description>
			<content:encoded><![CDATA[<p>På senaste tiden verkare jag stöta på <a href="http://en.wikipedia.org/wiki/Graph_%28mathematics%29">grafer</a> var jag än vänder mig - alltså inte grafer som kurvor och diagram, utan sådana med noder och bågar, som illustrerar hur diskreta objekt är relaterade till varandra. Är det inte vem som är vän med vem på <a href="http://www.facebook.com">Facebook</a>, så är det artister och hur de liknar varandra på <a href="http://www.last.fm">last.fm</a>. I och med att grafer är ett så grundläggande begrepp inom datavetenskap är det kanske egentligen ingen överraskning att de blir en del av vår vardag i och med att IT i en mängder börjar bli just något väldigt vardagligt.</p>
<p>Trots alla denna data som har formen av grafer, har jag inte hittat så värst många verktyg för att visualisera dem. Alltså fick jag gräva fram lite kunskaper från min studietid, och har skrivit ett enkelt bibliotek för att skapa någorlunda förståndiga bilder av diverse grafer. Metoden bygger på vad jag förstår är den enklaste algoritmen för <a href="http://en.wikipedia.org/wiki/Graph_drawing">grafritning</a>, en metod där man modellerar grafen som ett fysikaliskt system, där noder är elektriskt laddade partiklar (som stöter dem från varandra), och bågarna som fjädrar (som håller dem samman).</p>
<p>När man väl började var det svårt att sluta. Nu har jag grafer över:</p>
<ul>
<li>Artister och hur de hänger ihop, t.ex.: <a href='http://per.liedman.net/wp-content/uploads/2007/10/graph-lastfm-similarartists-nationalteatern.png' title='Artister relaterade till Nationalteatern'>Artister relaterade till Nationalteatern</a></li>
<li><a href='http://per.liedman.net/wp-content/uploads/2007/10/graph-lastfm-neighbours-liedman.png' title='Grannar på Last.fm'>Grannar på Last.fm</a>, namnet inom parentes är respektive användares mest spelade artist</li>
<li><a href='http://per.liedman.net/wp-content/uploads/2007/10/graph-ror-2007.png' title='Hur folk hänger ihop RoR'>Hur folk hänger ihop Ralf-o-Rolf</a></li>
<li><a href='http://per.liedman.net/wp-content/uploads/2007/10/graph-fb-friends-liedman.png' title='Mina vänner på Facebook'>Mina vänner på Facebook</a></li>
<li>Hur olika webbplatser hänger ihop med varandra. Tenderar dock att bli oerhört rörigt, så jag väntar med något bra exempel på hur det kan se ut.
</ul>
<p>I händelse av att någon skulle vilja ha programkoden för egna experiment, så finns den här: <a href='http://per.liedman.net/wp-content/uploads/2007/10/springsgraphtar.gz' title='Källkod för grafritning'>SpringsGraph.tar.gz</a>; kräver <a href="http://www.python.org">Python</a> 2.5, <a href="http://www.pygame.org/">pygame</a> samt <a href="http://www.crummy.com/software/BeautifulSoup/">Beautiful soup</a>.</p>
<p>Fler förslag på vad jag kan visualisera som en graf? Hör av dig.</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2007/10/29/noder-och-bagar/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Dolt tras</title>
		<link>http://per.liedman.net/2007/08/16/dolt-tras/</link>
		<comments>http://per.liedman.net/2007/08/16/dolt-tras/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 18:59:21 +0000</pubDate>
		<dc:creator>Per Liedman</dc:creator>
		
		<guid isPermaLink="false">http://per.liedman.net/?p=106</guid>
		<description><![CDATA[Jag önskar att jag kunde säga bra saker om Windows Vista. Jag skulle vilja vara positiv, säga att det fungerar smidigt, att det var värt att vänta på, eller åtminstone att det fungerar ok. Eftersom det känns ungefär lika gammalt, trött och förutsägbart när någon klagar på Microsoft eller Windows som när Tomas Ledin får [...]]]></description>
			<content:encoded><![CDATA[<p>Jag önskar att jag kunde säga bra saker om Windows Vista. Jag skulle vilja vara positiv, säga att det fungerar smidigt, att det var värt att vänta på, eller åtminstone att det fungerar ok. Eftersom det känns ungefär lika gammalt, trött och förutsägbart när någon klagar på Microsoft eller Windows som när Tomas Ledin får en sågning, så <i>vill</i> jag gärna gilla Vista. Tyvärr går det inte.</p>
<p>Efter att ha använt Vista närmast dagligen i arbetet under fyra månaders tid, kan jag konstatera att min från början försiktigt positiva inställning till slut fått så många törnar att den liknar en tillplattad ölburk, kvarglömd efter en riktigt vild midsommarfest. Jag har svårt att hitta något som jag egentligen gillar med Vista, eller iallafall något som jag gillar bättre i Vista än i XP. De genomskinliga fönsterramarna är fina. IE7 (som ju egentligen är fristående från Vista) klarar numera ganska mycket av det Firefox alltid klarat.</p>
<p>Under några veckors tid har jag upplevt att det går långsamt att surfa till vissa platser. Känslan är vag, eftersom det ofta är svårt att säga om det är uppkopplingen som är långsam, servern är belastad eller min dator som tillfälligt är upptagen med annat (Vistas favoritsysselsättning är att swappa disk utan närmare förklaring, gärna minuter i stöten och utan förvarning, men jag har å andra sidan bara 2GB RAM i min dator&#8230;suck&#8230;).</p>
<p>Mina misstankar pendlade mellan kvarlämnade rester av McAfees skämt till brandvägg som Dell förinstallerat på maskinen, och som jag prompt avinstallerade som första åtgärd när jag fick maskinen, och att det helt enkelt var något mer allmänt fel med min nätverkskonfiguration. Ett tag var jag inne på att det i själva verket var Java som var problemet, eftersom Java-applikationer med HTTP-användning, som är något av kärnverksamheten på företaget där jag jobbar, verkade mer exponerade än andra.</p>
<p>Den slutliga ledtråden kom idag, då jag fick information om att åtminstone en annan Vista-användare upplevde precis samma problem som jag. Genom att jämföra tiderna det tog att hämta några statiska sidor med hjälp av Java, wget och en vanlig browser från en och samma webserver från min Vista-maskin, en XP-maskin och en Linux-maskin, stod det klart: Vista hade problem med samtliga program, de andra hade det inte. Det stod även klart att bara enstaka webservrar drabbades av problemet, medan de flesta gav liknande tider i Vista som i XP och Linux.</p>
<p>Rustad med denna information var det inte svårt att googla upp problemet och dess lösning. Hemligheten heter <i>TCP Receive Window Auto-Tuning</i>, en ny funktion i Vistas nätverkslager. Microsoft beskriver problemet lugnt och sakligt så här: <a href="http://support.microsoft.com/kb/934430">Network connectivity may fail when you try to use Windows Vista behind a firewall device</a>. Tyvärr har artikeln helt fel när den påstår:</p>
<blockquote><p>
This issue may occur if the following conditions are true:<br />
•	You try to make a non-HTTP network connection.<br />
•	The firewall device has a problem with its implementation of the TCP Window Scale Option that is defined in Internet Engineering Task Force (IETF) Request For Comments (RFC) 1323.</p>
<p>By default, the Receive Window Auto-Tuning feature in Windows Vista uses a Window Scaling factor of 8 for non-HTTP connections. This issue does not occur when you try to make an HTTP connection.</p></blockquote>
<p>Tvärtemot vad ovanstående påstår, så uppstår problemet i allra högsta grad för HTTP-anslutningar. Lösningen är helt enkelt att stänga av auto-tuning:</p>
<p><code>netsh interface tcp set global autotuninglevel=restricted</code></p>
<p>Efter att ha kört detta kommando beter sig Vista-maskinen på samma vis som XP och Linux, d.v.s. anslutningarna till de berörda servrarna går åtminstone en faktor tio snabbare. Detaljerna beskrivs i <a href="http://blogs.msdn.com/wndp/archive/2007/07/05/receive-window-auto-tuning-on-vista.aspx">bloggen för Windows Core Networking</a>.</p>
<p>Mitt största problem med hur Vista fungerar här är den totala avsaknaden av transparens: det finns inget som helst som antyder att något egentligen är felaktigt konfigurerat eller trasigt; den enda indikationen är att jag av erfarenhet <i>vet</i> att det skall gå fortare än det faktiskt gör. Jag inser att källan till problemet egentligen ligger hos tillverkare av nätverksutrustning, som inte följer en <a href="http://www.ietf.org/rfc/rfc1323.txt">RFC från 1992</a>, men Microsoft har i min mening här gjort två misstag:</p>
<ul>
<li>Problemet går inte att diagnostisera. Det finns ingen indikation på att något är fel, så att jag som användare manuellt kan avhjälpa det. Andra maskiner i nätverket fungerar felfritt, vilket leder till (den felaktiga) slutsatsen att det är Vista-maskinen det är fel på.</li>
<li>De har frångått <a href="http://en.wikipedia.org/wiki/Jon_Postel#Postel.27s_Law">Postels lag</a>: &#8220;be conservative in what you do, be liberal in what you accept from others&#8221;. Nätverksutrustningen följer inte reglerna (RFC 1323 i det här fallet), men i och med ovanstående, d.v.s. att användaren inte meddelas om var felet ligger, så måste Windows själv kunna åtgärda felet. Att istället misslyckas i tysthet (&#8221;fail silently&#8221;) placerar användaren i en omöjlig situation.</li>
</ul>
<p>Tyvärr känns detta inte som en engångsföreteelse, utan snarare som något symptomatiskt för hela Vista.</p>
<p><em>Uppdatering 2007-08-23:</em> Hittade en bättre Microsoft-artikel som beskriver samma problem: <a href="http://support.microsoft.com/kb/929868">A Web site sends data very slowly or drops the data completely when you use Windows Vista Enterprise</a> (artikeln listar samtliga Vista-versioner under &#8220;Applies to&#8221;, även om bara Vista Enterprise nämns i rubriken).</p>
]]></content:encoded>
			<wfw:commentRss>http://per.liedman.net/2007/08/16/dolt-tras/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
