<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="/blog/templates/default/atom.css" type="text/css" ?>

<feed 
   xmlns="http://www.w3.org/2005/Atom"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/">
    <link href="http://shadowm.rewound.net/blog/feeds/atom.xml" rel="self" title="Shadowmaster’s Blog" type="application/atom+xml" />
    <link href="http://shadowm.rewound.net/blog/"                        rel="alternate"    title="Shadowmaster’s Blog" type="text/html" />
    <link href="http://shadowm.rewound.net/blog/rss.php?version=2.0"     rel="alternate"    title="Shadowmaster’s Blog" type="application/rss+xml" />
    <title type="html">Shadowmaster’s Blog</title>
    <subtitle type="html">A light in the darkness, where everything is possible...</subtitle>
    <icon>http://shadowm.rewound.net/blog/templates/dorset3/img/s9y_banner_small.png</icon>
    <id>http://shadowm.rewound.net/blog/</id>
    <updated>2010-09-03T02:42:31Z</updated>
    <generator uri="http://www.s9y.org/" version="1.5.3">Serendipity 1.5.3 - http://www.s9y.org/</generator>
    <dc:language>en</dc:language>

    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/101-Approaching-Spring.html" rel="alternate" title="Approaching Spring" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-09-03T01:03:10Z</published>
        <updated>2010-09-03T02:42:31Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=101</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=101</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
    
        <id>http://shadowm.rewound.net/blog/archives/101-guid.html</id>
        <title type="html">Approaching Spring</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p class="italic" style="text-align:center;">Plum blossoms, the false hope of life<br />
Rain, the reflection of infinite sadness<br />
The sky, the unique embodiment of loneliness<br />
A dog in the shadows, the instrument of Death.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/99-Curiosity-killed-the-cat.html" rel="alternate" title="Curiosity killed the cat" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-16T01:45:54Z</published>
        <updated>2010-08-18T01:32:15Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=99</wfw:comment>
    
        <slash:comments>2</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=99</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/99-guid.html</id>
        <title type="html">Curiosity killed the cat</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>People’s curiosity has no limits, particularly when it comes to <a href="http://www.wesnoth.org/">Wesnoth</a> add-ons.</p>

<p>In order to reproduce a bug, I had uploaded and removed a test add-on from the add-on servers for 1.8 and trunk several times, yet it seems I forgot to remove it the last time. This hasn’t stopped people from downloading it out of morbid curiosity, although nobody has dared to ask me about it on IRC or the forums. Certainly not news to me, since this is exactly what happened with it the last time prior to its removal.</p>

<p style="text-align:center;"><a href="http://i144.photobucket.com/albums/r176/shadowm2006/screenshots/test-addon.png"><img src="http://i144.photobucket.com/albums/r176/shadowm2006/screenshots/th_test-addon.png" alt="Wesnoth test addon screenshot" /></a></p>

<p>As of this writing, the 1.8 version has had 949 downloads, as it can be seen in the screenshot above. You’d think an add-on with a description of “FOO” and a misspelled title would not attract anyone to try it, but this principle doesn’t work in practice. Had the add-on contained code to break all other add-ons, people would still not get the idea, I guess. Then again, I’m talking about users who often mistakenly download the source code tarballs and then ask how to install Wesnoth on Windows or Mac OS X.</p>

<p>This is what I get for forgetting to remove this kind of stuff. Thanks Gambit for pointing it out to me this night.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/97-Wesnoth.org-and-the-Prosilver-transition,-Part-II.html" rel="alternate" title="Wesnoth.org and the Prosilver transition, Part II" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-15T05:46:28Z</published>
        <updated>2010-08-15T06:07:04Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=97</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=97</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/8-Web-browsers" label="Web browsers" term="Web browsers" />
            <category scheme="http://shadowm.rewound.net/blog/categories/9-Web-design" label="Web design" term="Web design" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/4-phpBB" label="phpBB" term="phpBB" />
    
        <id>http://shadowm.rewound.net/blog/archives/97-guid.html</id>
        <title type="html">Wesnoth.org and the Prosilver transition, Part II</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <div class="thumbnail float-left"><a href="http://i144.photobucket.com/albums/r176/shadowm2006/screenshots/wesnoth-prosilver.png"><img src="http://i144.photobucket.com/albums/r176/shadowm2006/screenshots/th_wesnoth-prosilver.png" alt="Wesnoth forum - prosilver style (preview)" title="Click to enlarge" /></a></div>

<p>After some hesitation, I have deployed <a href="http://www.phpbb.com/styles/demo/3.0/?style_id=3">Prosilver Special Edition</a> on the <a href="http://www.wesnoth.org/">Wesnoth.org</a> <a href="http://forums.wesnoth.org">forums</a>, with multiple changes meant to make it more similar to mainline Prosilver in terms of layout. Wesnoth’s custom Prosilver changes have also been applied on our copy of Prosilver SE.</p>

<p>In fact, Prosilver SE as used in Wesnoth.org depends completely on the main Prosilver template rather than its own partial template set, and it also replaces the default Prosilver theme/stylesheets and imagesets, since otherwise very few people would choose to use it. Besides, <acronym title="Options Are Bad">OAB</acronym>.</p>

<p>Of course, further changes are not unlikely to occur, depending both on the users’ feedback and my own testing experiences.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/95-Wesnoth.org-and-the-Prosilver-transition.html" rel="alternate" title="Wesnoth.org and the Prosilver transition" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-13T20:01:48Z</published>
        <updated>2010-08-15T02:17:52Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=95</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=95</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/8-Web-browsers" label="Web browsers" term="Web browsers" />
            <category scheme="http://shadowm.rewound.net/blog/categories/9-Web-design" label="Web design" term="Web design" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/4-phpBB" label="phpBB" term="phpBB" />
    
        <id>http://shadowm.rewound.net/blog/archives/95-guid.html</id>
        <title type="html">Wesnoth.org and the Prosilver transition</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Most people who frequented phpBB 2 forums have met the Subsilver theme at some point. <a href="http://www.wesnoth.org/">Wesnoth’s community</a> is not the exception, and the phpBB 3 switch completed by cycholka/Mist in March 2008 during the third-to-last host migration involved switching everyone to Subsilver2, which is the last incarnation of the good old Subsilver. Most of us Wesnoth forumers have become accustomed to the cleanness, quirks and old-school feel of Subsilver2.</p>

<p>However, that will eventually change.</p>

<p>Maintaining patches for mods affecting the forum user and moderator front-ends involves editing three template sets, which are Prosilver (phpBB 3’s new built-in and default style), Subsilver2 and AcidTech, which is Subsilver2-based with some essential layout differences. There are even some mods that don’t provide <a href="http://www.phpbb.com/mods/modx/">MODX</a> instructions for Subsilver2, since it’s not essential for approval in the <a href="http://www.phpbb.com/customise/db/modifications-1/?from=submenu">official modifications database</a> to include support for this style that’s <a href="http://area51.phpbb.com/phpBB/viewtopic.php?f=84&amp;t=32496">most likely going to be dropped</a> in future phpBB release series.</p>

<p>If you take a look at my <a href="/projects">Projects</a> section you’ll also notice that I’ve needed to write a couple of Subsilver2 hacks in the past to add minor functionality that’s present in the official phpBB 3 “Olympus” forum theme by default. There’s a third custom change in my tree, corresponding to the Quick Reply editor toggle button.</p> <br /><a href="http://shadowm.rewound.net/blog/archives/95-Wesnoth.org-and-the-Prosilver-transition.html#extended">Continue reading "Wesnoth.org and the Prosilver transition"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/96-KMS-and-Frogatto-a-Retrospective.html" rel="alternate" title="KMS and Frogatto: a Retrospective" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-14T07:25:39Z</published>
        <updated>2010-08-14T07:44:40Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=96</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=96</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/11-Frogatto" label="Frogatto" term="Frogatto" />
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
    
        <id>http://shadowm.rewound.net/blog/archives/96-guid.html</id>
        <title type="html">KMS and Frogatto: a Retrospective</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Not very long ago I mentioned that <a href="http://shadowm.rewound.net/blog/archives/86-A-taste-of-Linux-2.6.35-and-Radeon-KMS.html">Frogatto’s iris transition effect didn’t work</a> with the ATI R600 <acronym title="Kernel Modesetting">KMS</acronym> drivers, and I assumed that this was caused by some lacking in the Mesa code. I even <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29350">filed a bug report</a> to its developers about it.</p>

<p><strong>I was wrong.</strong> As MostAwesomeDude explained to me on <acronym title="Internet Relay Chat">IRC</acronym>, and later posted in the bug tracker:</p>

<blockquote>
  <p style="text-align:left;">In <acronym title="Userland Modesetting">UMS</acronym> mode, r600c provides 8 bits of stencil on all configs, but in KMS mode, the normal wider variety of configs are available. The app used to have a call to <tt>SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 1)</tt>, but it was commented out for some reason. Uncommenting that line caused a stencilled config to be properly selected.</p>

  <p style="text-align:left;">The moral: Always check your GL configs.</p>
</blockquote>

<p>Effectively, we discovered that restoring that line would solve the issue. It was apparently commented out by Dave at some point by accident. This won’t matter for long anyway, since Frogatto is already using a different mechanism to render the transitions on SVN trunk, solving the missing effect on who knows how many PC configurations. The iPhone port also lacked these transitions because of a platform limitation, so maybe the new technique will solve that minor shortcoming as well.</p>

<p>So now I’m basically just waiting for a new official release of the <a href="http://www.tuxonice.net/">Tux-On-Ice</a> patch for Linux 2.6.35 before switching to a complete KMS-based configuration. Until that happens, I’ll continue using 2.6.34.4 in UMS mode.</p>

<p>Again, thanks to MostAwesomeDude for the help with finding the cause of the bug!</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/91-The-Giant-Blinking-Cursor-of-Doom.html" rel="alternate" title="The Giant Blinking Cursor of Doom" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-04T04:50:58Z</published>
        <updated>2010-08-14T02:48:03Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=91</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=91</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/91-guid.html</id>
        <title type="html">The Giant Blinking Cursor of Doom</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>I have just rebooted from a 2.6.35 kernel to 2.6.34.2 in order to have the ability to hibernate bluecore with <a href="http://tuxonice.net/">Tux-on-Ice</a> again. However, the laptop acted up after the warm reboot as a consequence of running Linux in <acronym title="Kernel Mode-setting">KMS</acronym> operation mode, apparently. The greatest sign of <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/DoomyDoomsOfDoom">doom</a>: the Giant Blinking Cursor of Doom.</p>

<p>It’s normal for these HP laptops to display the text-mode blinking cursor for a bit after the BIOS splash screen, right before transferring execution to the first available boot medium. The cursor’s size is similar to Linux’s or MS-DOS under a default configuration with any generic VGA-compatible video adapter. In this transition state, the bold-white cursor blinks a few times at the top-left corner of the empty black screen, before changing its color to the normal text terminal white when GNU GRUB takes over.</p>

<p>However, whenever the AMD ATI Catalyst drivers lock up the laptop and I perform a warm reboot using one of the <a href="http://en.wikipedia.org/wiki/Magic_SysRq_key">Magic SysRq</a> sequences, the laptop doesn’t get past the system initialization code and after the BIOS splash screen disappears, instead of the usual bright blinking cursor, an abnormally large and wide white blinking cursor appears as the computer gets stuck forever.</p>

<p>I had not seen this occur after running with the open-source KMS drivers before, but I guess it might indicate I own a faulty GPU or motherboard.</p>

<p><span class="bold">EDIT:</span> now I have pictures — taken with my three years old cell phone — showing the GBCoD and the normal blinking cursor:</p>

<p style="text-align:center;">
  <img src="/files/kms_good_cursor.jpg" alt="Good cursor" />
  <br /><br />
  <img src="/files/kms_giant_blinking_cursor_of_doom.jpg" alt="Giant Blinking Cursor of Doom" />
</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/93-Full-system-backup-in-progress!.html" rel="alternate" title="Full system backup in progress!" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-08T20:21:32Z</published>
        <updated>2010-08-08T21:00:31Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=93</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=93</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/93-guid.html</id>
        <title type="html">Full system backup in progress!</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Finally, now that I have a 2 TiB external hard disk drive, I can start making regular, complete backups of my dear laptop. With <a href="http://www.rsnapshot.org/"><tt>rsnapshot</tt></a> fully setup after experimenting for a while using Bluecore’s own internal hard disk as target, a full copy of all major filesystems, and a partial copy of my <tt>/home</tt> — filtering useless crap for now, to avoid including caches and such — as of this writing the system is being backed up. Considering that it resides within a 250 GiB hard disk, of which 28 GiB are allocated for the preinstalled copy of Windows Vista, this couldn’t have been a better investment.</p>

<p>The next logical step is backing up Greycore and Blackcore’s hard disk contents, in particular the latter since its hard disk is already dying, and many blocks near the end of the drive are unusable.</p>

<p>After finishing Bluecore’s backup, I intend to send it to technical support if possible, to solve the issues with the noisy fan, <a href="http://shadowm.rewound.net/blog/archives/15-Touchpad-buttons.html">partially stuck touchpad buttons</a>, excess of dirt and lint inside the case and beneath the keyboard, loose screen panel articulation, … so yeah. And I also need a new, better <a href="http://shadowm.rewound.net/blog/archives/85-Battering-power-sources.html">battery</a> (although the current one got better!). I’d probably consider just replacing the whole damn thing, if it weren’t that I already feel comfortable using it, and that we recently invested money on a laptop for my father — which happens to be completely useless, but whatever.</p>

<p>Besides, <a href="http://shadowm.rewound.net/blog/archives/69-More-RAM-at-last!-or,-the-side-effects-of-patching-the-ACPI-DSDT.html">I didn’t buy an extra 2 GiB RAM module</a> to throw it away with the laptop. <img src="/dorset3/img/smilies/smile.gif" alt=":)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>

<p class="italic">(Granted, I could just use Bluecore as a backup laptop by itself, but really, it’s hard to get rid of it since I’ve had better experiences with it than Greycore, despite all the problems <a href="http://shadowm.rewound.net/blog/archives/22-ATI-mayhem,-Part-III.html">derived</a> <a href="http://shadowm.rewound.net/blog/archives/26-ATI-mayhem,-Part-V.html">from</a> <a href="http://shadowm.rewound.net/blog/archives/28-ATI-mayhem,-Part-VI.html">using</a> <a href="http://shadowm.rewound.net/blog/archives/30-ATI-mayhem,-Part-VII.html">AMD</a>/<a href="http://shadowm.rewound.net/blog/archives/68-ATI-mayhem,-part-X-including-a-trip-to-Wonderland.html">ATI</a> <a href="http://shadowm.rewound.net/blog/archives/92-Kernel-modesetting-on-Linux-Godsend,-or-imminent-catastrophe.html">hardware</a>.)</p>

<p>I’m also considering relocating and resizing partitions since <a href="http://shadowm.rewound.net/blog/archives/58-The-problem-with-partitioning.html">my current configuration isn’t really optimal anymore</a>, now that I have an use for those 250 GiB.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/77-Twitter.html" rel="alternate" title="Twitter" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-13T02:39:05Z</published>
        <updated>2010-08-08T01:32:29Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=77</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=77</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/11-Frogatto" label="Frogatto" term="Frogatto" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
    
        <id>http://shadowm.rewound.net/blog/archives/77-guid.html</id>
        <title type="html">Twitter</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Finally, the trap that is social networking has caught me.</p>

<p>I have <a href="http://twitter.com/shikadilord">joined Twitter</a> as ShikadiLord (since “shadowm” and “shadowmaster” were already taken <img src="/dorset3/img/smilies/pensive.gif" alt=":/" style="display: inline; vertical-align: bottom;" class="emoticon" />) mainly because of <a href="http://www.frogatto.com">Frogatto</a>, which also has presence in Twitter now.</p>

<p>Let's see if I make use of this thing. To make things easier for me I'm using <a href="http://choqok.gnufolks.org/">Choqok</a>, a micro-blogging client for KDE <acronym title="Software Compilation">SC</acronym> 4.</p>

<p>Yays.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/72-Frogatto.html" rel="alternate" title="Frogatto" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-06-16T00:54:19Z</published>
        <updated>2010-08-08T01:30:50Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=72</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=72</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/11-Frogatto" label="Frogatto" term="Frogatto" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/72-guid.html</id>
        <title type="html">Frogatto</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Some time ago, a mysterious link was added to my site's sidebar to feed search engines, but I never got around to explain what the deal was with that link.</p>

<p>Well, it turns out that I've been semi-secretly working on a certain retro-style platformer game, <a href="http://www.frogatto.com/">Frogatto</a>, along with other people from the <a href="http://www.wesnoth.org/">Battle for Wesnoth</a> Project. My work in Frogatto is almost exclusively in the level design area, although I've also done some minor object coding.</p>

<div class="thumbnail float-left" style="width: 96px;"><img alt="Frogatto: Dungeon Crawling (screenshot)" src="/images/r/frogatto-annoyed-2x.png" /><div>Our mysterious protagonist.</div></div>

<p>There are two things that attracted me to Frogatto:</p>

<p>Firstly, I have wanted since around 2006 to create a sidescrolling platformer engine of my own — that project, codenamed “Mesiga”, unfortunately, finally died around the end of last year after several years with no significant progress and no content to work with. But then, I stumbled upon Frogatto per David White (a.k.a. Sirp)'s recommendation during a talk about writing text parsers in C++, around 2008. I didn't pay much attention to Frogatto back then, but near December last year I started testing Frogatto mainly using it as a test case for the Mesa 7.7 DRI drivers for ATI R600-based chipsets. Around February some Wesnoth developers (including me) <a href="https://bugs.freedesktop.org/show_bug.cgi?id=26471">reported a Mesa issue affecting Frogatto</a> which got quickly solved.</p>

<p>Secondly, Frogatto's level editor ease of use impressed me, although I don't have a lot of experience with tile-based game level editors in the first place — mainly with Wesnoth's map editor, a few fan-made editors for <cite><a href="http://en.wikipedia.org/wiki/Commander_Keen">Commander Keen</a>: Invasion of the Vorticons</cite>, and <a href="http://www.shikadi.net/keenwiki/TED5">TED5</a>, the editor originally used for creating the levels in <cite>Commander Keen: Goodbye Galaxy!</cite> and <cite><a href="http://en.wikipedia.org/wiki/Rise_of_the_triad">Rise of the Triad</a></cite>. The nicest feature offered by Frogatto's editor is being able to place objects and set their parameters (unlike in Wesnoth), and actually preview some of their behavior <em>without leaving the editor</em>.</p>

<div class="thumbnail float-right" style="width: 160px;"><a href="/images/r/screenshots/frogatto-rock-a-fort.png"><img alt="Frogatto: Rock-a-Fort (screenshot)" src="/images/r/screenshots/th_frogatto-rock-a-fort.png" /></a><div><cite>Rock-a-Fort</cite> (world1 level)</div></div>

<p>The editor is so flexible due to its usage of objects and <a href="http://www.frogatto.com/?p=60">automatic tiling</a> that I instantly fell in love with it and made three levels of my own, reported bugs with some objects' behavior, and got invited to take part in the level design when there were only three or four forest area levels and only three quarters of the seaside level set done.</p>

<p>We have been working hard into bringing the first release of the game to completion and so far things are looking very well. In fact, the level set is rather complete now and most of the work remaining to be done is polishing what's finished and tying some loose knots in the art department.</p>

<p>The game engine itself is free software (in the “freedom” sense), but the game's content is <strong>not</strong>. See our <a href="http://www.frogatto.com/?page_id=2">About</a> page for details. Frogatto runs on Windows, Linux and Mac OS X as long as OpenGL support works. Naturally, you'll need drivers which support hardware-accelerated rendering for the best experience. Note that despite Frogatto using OpenGL interfaces for rendering, it's entirely 2D in terms of gameplay and graphics.</p>

<p>Frogatto will also be available as a paid AppStore application for iPhone and iPad once it's released, which means that you'll be able to waste your time playing as a frog no matter where you are at the moment!</p>

<p>If you are curious about which mainline levels were designed by me, here's a list:</p>

<p class="bold">Seaside (world1)</p>
<ul>
  <li><cite>Water adventure</cite> (superseded by <cite>Rock-a-Fort</cite>)</li>
  <li><cite>Water adventure 2</cite> (superseded by <cite>Flooded Caverns</cite>)</li>
  <li><cite>Downhill from Here</cite> (later known as <cite>Downhill</cite> after a major edit by me)</li>
  <li><cite>Rock-a-Fort</cite> and its small cave sub-level</li>
  <li><cite>Flooded Caverns</cite></li>
  <li><cite>Fan House</cite> and its small sub-level <span class="strike">(neither are connected to the main levelset yet)</span></li>
</ul>

<p class="bold">Forest area (world2)</p>
<ul>
  <li><cite>Twisted Trees</cite></li>
  <li><cite>Peaceful Pond</cite> (to be removed from the main levelset unless I change my mind)</li>
  <li><cite>Autumn Town</cite> (to be removed from the main levelset, at least for the first release)</li>
  <li><cite>Eerie Arbor</cite></li>
  <li><cite>Bon Bosque</cite> (both versions)</li>
</ul>

<p class="bold">Cave area/Limestone caverns (world3)</p>
<p class="italic">(Notably, I've designed <strong>all</strong> of the levels in this set. There are other cave levels around that are not part of this set which were designed by other people. Still, some cave levels may need to be cut from the first release to avoid monotony, etc.)</p>
<ul>
  <li><cite>Rocky Roots</cite></li>
  <li><cite>Caverns of holes</cite></li>
  <li><cite>Underground river</cite></li>
  <li><cite>Darkness Central</cite></li>
  <li><cite>Bombing Fools</cite></li>
  <li><cite>Hidden Depths</cite></li>
  <li><cite>Watery Alley</cite></li>
  <li><cite>Plagued Mine</cite></li>
  <li><cite>Bug Mining</cite></li>
  <li><cite>Fast Lane</cite></li>
  <li><cite>Hanging Platforms</cite> (formerly known as <cite>Plagued Mine</cite>, otherwise unrelated to the current level of the same name)</li>
  <li><cite>The ancient secret</cite> (<span class="strike">codename — may need to be removed from the first release but it's a <acronym title="Work In Progress">WIP</acronym> intended to be a secret level</span> removed now)</li>
</ul>

<p class="bold">Dungeon levels/Milgram's Fortress (world4)</p>
<p class="italic">(The only mainline levels here that weren't designed by me are Sirp's, “Dungeon Blocks,” and Jetrel's, which are Milgram's Throne Room prelude, main level and epilogue level.)</p>
<ul>
  <li><cite>Killer Bunnies</cite></li>
  <li><cite>Burning Stone</cite></li>
  <li><cite>Dark Corridor</cite> (codenamed <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/DoomyDoomsOfDoom"><cite>Doomy Dooms of Doom</cite></a>)</li>
  <li><cite>Dungeon Crawling</cite></li>
</ul>

<div class="thumbnail float-left" style="width: 160px;"><a href="/images/r/screenshots/frogatto-dungeon-crawling.png"><img alt="Frogatto: Dungeon Crawling (screenshot)" src="/images/r/screenshots/th_frogatto-dungeon-crawling.png" /></a><div><cite>Dungeon Crawling</cite> (world4 level)</div></div>

<p>It's been an amazing 5-month work which has almost been halted by a <a href="http://shadowm.rewound.net/blog/archives/46-Earthquake-in-Chile.html"><em>great</em> earthquake</a> and <a href="http://shadowm.rewound.net/blog/archives/64-More-power,-now!.html">a broken power adapter</a> (<a href="http://shadowm.rewound.net/blog/archives/66-Once-is-not-enough.html">twice</a>). Admittedly, <a href="http://shadowm.rewound.net/blog/archives/56-Its-hard-to-bid-farewell.html">I had to abandon <acronym title="Invasion from the Unknown">IftU</acronym></a> to get more work done in less time, but I think it's a fair trade since Wesnoth campaign maintenance has slowly become a sucky job due to the always changing conventions with every mainline development cycle.</p>

<p>I couldn't finish my own platformer engine as I wanted, but instead I found this awesome opportunity to design nice levels inspired by my favorite platformers of the DOS gaming era (<a href="http://en.wikipedia.org/wiki/Commander_Keen">Commander Keen</a> and <a href="http://en.wikipedia.org/wiki/Jazz_Jackrabbit">Jazz Jackrabbit</a>), this time with a heavy focus in fun, yet reasonably challenging gameplay and <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/SceneryPorn">ambient design</a> thanks to Jetrel (also Wesnoth's Art Director) and Neorice's (also a Wesnoth artist) awesome art and Sirp's brilliantly designed engine. The main background music used in the seaside levels is also remarkably sweet, provided by Rain, another Wesnoth musician who has provided such epic themes as “Suspense” and “Knalgan Theme” to the strategy game.</p>

<p>We'll need lots of testing to make sure the final product's quality is what we've been aiming for and that nothing's been broken or messed up during development. It's a highly recommended game for retro-freaks like me. <img src="/dorset3/img/smilies/biggrin.gif" alt=":D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/78-Frogatto-packages-are-go!.html" rel="alternate" title="Frogatto packages are go!" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-13T04:42:56Z</published>
        <updated>2010-08-08T01:29:10Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=78</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=78</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/11-Frogatto" label="Frogatto" term="Frogatto" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/78-guid.html</id>
        <title type="html">Frogatto packages are go!</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>For those who won't be following me on <a href="http://twitter.com/shikadilord">Twitter</a>, or aren't following the relevant website closely, <a href="http://www.frogatto.com/?p=233">Frogatto's just been released for the three main platforms!</a> Now we are only missing the Apple appstore approval, so soon this game and <a href="http://shadowm.rewound.net/blog/archives/72-Frogatto.html">my levels</a> will be available for mobile users so they can waste their time playing a colorful and pretty platformer no matter their location!</p>

<p>Just as planned. <img src="/dorset3/img/smilies/cool.gif" alt="8)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/92-Kernel-modesetting-on-Linux-Godsend,-or-imminent-catastrophe.html" rel="alternate" title="Kernel modesetting on Linux: Godsend, or imminent catastrophe?" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-05T03:59:28Z</published>
        <updated>2010-08-07T01:04:44Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=92</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=92</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/92-guid.html</id>
        <title type="html">Kernel modesetting on Linux: Godsend, or imminent catastrophe?</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Not very long ago, I had <a href="http://shadowm.rewound.net/blog/archives/68-ATI-mayhem,-part-X-including-a-trip-to-Wonderland.html">a rather frightening experience</a> that made me reconsider my testing practices of the increasingly popular <a href="http://en.wikipedia.org/wiki/Modesetting#Linux">Kernel Modesetting</a> (KMS) support for various ATI Radeon chipsets on Linux. While I couldn’t determine exactly what happened back then, I’ve now got another similar story of KMS-related bugs that can cause <strong>permanent damage</strong> to your hardware.</p>

<p>My <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev</a> collaborator and personal friend of mine, Espreon, owns a Dell Inspiron e1705 laptop which ships with an <a href="http://www.amd.com/us/products/notebook/graphics/ati-mobility-hd-x1000/x1400/Pages/x1400.aspx">ATI Mobility Radeon x1400</a> graphics controller. This is in contrast to my HP Pavilion dv5-1132la notebook (<a href="http://shadowm.rewound.net/blog/archives/88-Bluecore,-greycore-and-blackcore.html#bgb_bluecore">bluecore</a>) which has an ATI Radeon HD 3200 (RS780-based) controller.</p>

<p>Espreon’s laptop is now <strong>damaged and unusable</strong> after some minor testing of KMS + Gallium3D drivers. The screen simply doesn’t work anymore.</p>

<p>I feel the need to carefully and meticulously analyze our stories since the KMS-enabled Radeon drivers are slowly becoming a standard amongst X.org-based Unix distributions including Debian GNU/Linux — Squeeze (6.0) is going to ship with a configuration apt for running on Radeon controllers in KMS operation without any user intervention. This is not to be unexpected since the KMS stack is clearly superior in terms of security and stability to the Xfree86/X.org based device drivers since it doesn’t require such things like making the X server’s executable <a href="http://en.wikipedia.org/wiki/Setuid">setuid</a> root, and allowing direct access to the host’s memory, video BIOS, etc. from a userland application.</p>

<p>But, is it really worth the risk? Is KMS really well-tested and safe enough to feature in stable mainline Linux kernels and in major general-purpose system distributions such as Debian? Let’s take a look at our personal experiences with the new graphics subsystem and drivers which are due to become mainstream around the end of this year.</p>
 <br /><a href="http://shadowm.rewound.net/blog/archives/92-Kernel-modesetting-on-Linux-Godsend,-or-imminent-catastrophe.html#extended">Continue reading "Kernel modesetting on Linux: Godsend, or imminent catastrophe?"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/46-Earthquake-in-Chile.html" rel="alternate" title="Earthquake in Chile" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-02-27T22:41:44Z</published>
        <updated>2010-08-03T22:30:00Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=46</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=46</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
    
        <id>http://shadowm.rewound.net/blog/archives/46-guid.html</id>
        <title type="html">Earthquake in Chile</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>As you probably know (if not, Google “earthquake in Chile”), Chile's been struck by an earthquake approx. 8.8 in the Richter scale in the region near Concepción. I live in Santiago, and we have also been affected by this unfortunate event.</p>

<p>(Following comes from this <span class="strike"><a href="http://forums.wesnoth.org/viewtopic.php?p=412419#p412419">Wesnoth.org forum post</a></span>, now missing due to the former autopruning mechanism.)</p>

<p>I am OK right now, but I got trapped in the house during the earthquake (I was in the bathroom and some _really_ heavy objects were in the way to the kitchen, which is the closest way to exit from my bedroom) and thought I wouldn't be able to get out in time. I did (about right at the end of the earthquake, not knowing at the moment if its intensity would continue increasing...), but we are not sure whether the house deteriorated further* or not and do not really believe it'd resist a real earthquake with epicenter near Santiago.</p>

<p>There's a good distance between Concepción and Santiago, so it was about 7 in the Richter scale in Santiago according to the authorities last time I checked — about 10 am via FM radio on the car, we didn't have electricity, tap water or Internet at all until around 2 pm and I fell asleep around 1:16 pm after being unable to sleep the whole night with the strong and continuous tremors that followed. I originally posted this around 6:40 pm.</p>

<p>While everything's fine for us here right now, sadly, other areas of this same region didn't have this luck. Including areas where some of our family lives.</p>

<p>Naturally, everything to the south is chaos according to the news and there are still isolated people in coastal areas closer to the epicenter.</p>

<p>* (To elaborate, this wood house was built on 2000-2001. However, we know that the concrete floor structure wasn't properly finished or secured, there are cracks everywhere that have appeared over time since we moved here; heck, I've even seen grass grow in the middle of my bedroom in 2002. The wood structure of the second floor isn't finished and there are heavy materials left above since a few days ago that made me worry that the house would fall on me when I was walking into the approximate center of gravity in middle of the earthquake, hearing them dancing on the floor (huh) above. All the animals are nervous after the earthquake but everyone's okay and I'm thankful for that.)</p>

<p style="text-align:center;">***</p>

<p>There are still tremors as of this writing. There was a small one which cut the power lines for 1 second some minutes ago, followed by a stronger one with lots of underground noise. The movement pattern continues being the same as the original earthquake. Internet is flaky.</p>

<p><span class="strike">If anyone's really interested in speaking to me, I've temporarily opened ##shadowm on irc.freenode.net.</span></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/88-Bluecore,-greycore-and-blackcore.html" rel="alternate" title="Bluecore, greycore and blackcore" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-03T07:06:00Z</published>
        <updated>2010-08-03T17:14:01Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=88</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=88</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
    
        <id>http://shadowm.rewound.net/blog/archives/88-guid.html</id>
        <title type="html">Bluecore, greycore and blackcore</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Often on <acronym title="Internet Relay Chat">IRC</acronym> I refer to my computers by their unique hostnames, which I also use to differentiate their Linux kernel configuration sets, optimized for every individual machine.</p>

<p>Many get confused with this because the names aren’t very descriptive of these machines, so here’s some technical background and history for every one of my technological pets.</p> <br /><a href="http://shadowm.rewound.net/blog/archives/88-Bluecore,-greycore-and-blackcore.html#extended">Continue reading "Bluecore, greycore and blackcore"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/85-Battering-power-sources.html" rel="alternate" title="Battering power sources" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-01T05:17:13Z</published>
        <updated>2010-08-03T16:22:14Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=85</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=85</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
    
        <id>http://shadowm.rewound.net/blog/archives/85-guid.html</id>
        <title type="html">Battering power sources</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Two days ago, my HP laptop’s battery was working perfectly fine. Then I had to unplug the AC adapter and do stuff with the laptop elsewhere, so the battery was completely discharged afterwards. Then, I charged it again, but when going to bed I unplugged the adapter again when the battery was around 50% charged.</p>

<p>Fast-forward to the next afternoon, when I’m going with my family to celebrate stuff, and I turn on the laptop while in the car. Linux resumes from hibernation fine, and I see my KDE desktop again, with the battery meter at 50%. I check the Wesnoth.org forums for spambots as usual, fire up my IRC client…</p>

<p>And then the battery meter drops to 0%, KDE warns about suspending to disk in 5 seconds, and the laptop’s front panel battery status LED starts flashing.</p>

<p>I assumed that the laptop had just gone bonkers like it’s done before and ignored the warnings of imminent failure. Just as I was mentioning the ongoing problem on IRC, the laptop shut down completely, as it ran out of power.</p>

<p>It seems that this battery has finally collapsed, since the maximum charge dropped dramatically afterwards, and even the BIOS software warned me about it on the next boot. Here’s what <tt>acpitool</tt> has to say about the poor thing:</p>

<pre>$ acpitool -B
  Battery #1     : present
    Remaining capacity : 704 mAh, 100.0%
    Design capacity    : 9000 mAh
    Last full capacity : 704 mAh, 7.822% of design capacity
    Capacity loss      : 92.18%
    Present rate       : 0      
    Charging state     : charged
    Battery type       : rechargeable 
    Model number       : 25 mAh
    Serial number      : Primary</pre>

<p class="italic">(Note: Linux has always reported 9,000 mAh as the battery’s design capacity since day zero. This information is incorrect, and the correct value should be 4,000 mAh. Also note the bogus model/serial information.)</p>

<p>Since this is a rather critical situation, I’m probably going to buy a new battery for the laptop soon — besides sending it away for maintenance, which is in my list as soon as I buy that external hard disk drive on which I’ll be able to fit a complete raw disk image of my laptop’s HDD.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/90-Battering-power-sources,-part-II.html" rel="alternate" title="Battering power sources, part II" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-03T13:58:32Z</published>
        <updated>2010-08-03T14:08:48Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=90</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=90</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
    
        <id>http://shadowm.rewound.net/blog/archives/90-guid.html</id>
        <title type="html">Battering power sources, part II</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Today, while having breakfast at a subway station before going to university, I stumbled upon a weird case of the laptop’s battery going crazy again.</p>

<p><a href="http://shadowm.rewound.net/blog/archives/85-Battering-power-sources.html">As you know</a>, Bluecore’s battery basically dropped dead after an unfortunate accident with charging cycles, but now the outlook has slightly improved after its capacity increased as a consequence of booting the laptop on battery power this morning.</p>

<pre>$ acpitool -B
  Battery #1     : present
    Remaining capacity : 1504 mAh, 66.20%
    Design capacity    : 9000 mAh
    Last full capacity : 2272 mAh, 25.24% of design capacity
    Capacity loss      : 74.76%
    Present rate       : unknown
    Charging state     : charging
    Battery type       : rechargeable 
    Model number       : 25 mAh
    Serial number      : Primary
</pre>

<p class="italic">(The last two information fields and the design capacity are bogus as usual.)</p>

<p>The BIOS didn’t warn me about charge capacity this time either, nor after plugging the AC adapter in at the university’s central library, so there’s something clearly odd about this. I didn’t wait for the battery to discharge at the subway and left it at 66% before proceeding to charge it again now, so let’s see how this goes in the future. I might be able to squeeze some life out of this deteriorated power source before sending off Bluecore for maintenance and repair.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/87-Why-Yahoo-sucks.html" rel="alternate" title="Why Yahoo sucks" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-02T07:54:10Z</published>
        <updated>2010-08-02T08:01:35Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=87</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=87</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
    
        <id>http://shadowm.rewound.net/blog/archives/87-guid.html</id>
        <title type="html">Why Yahoo sucks</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>It seems that one of the big guys of the Internet can’t keep the spambots at bay.</p>

<p style="text-align:center;"><img src="http://i144.photobucket.com/albums/r176/shadowm2006/screenshots/spam3.png" alt="Yahoo groups spam screenshot" /></p>

<p>Espreon and I have been receiving this kind of garbage in our Gmail inboxes for quite a while already. They aren’t classified as spam for obvious reasons, but they are really annoying nonetheless. How come a company with that much money doesn’t set-up some kind of smart protection for their service forms? I’ve never seen this kind of crap from Google, and I hope to never do. This people, is why I use Google.</p>

<p class="italic">(Notably, I’ve received 4 of these so far, one every month until now.)</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/86-A-taste-of-Linux-2.6.35-and-Radeon-KMS.html" rel="alternate" title="A taste of Linux 2.6.35 and Radeon KMS" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-08-02T01:40:09Z</published>
        <updated>2010-08-02T05:07:54Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=86</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=86</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/86-guid.html</id>
        <title type="html">A taste of Linux 2.6.35 and Radeon KMS</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>The Linux kernel 2.6.35 was released today, and I compiled and installed it before all the download links appeared on <a href="http://www.kernel.org/">kernel.org’s</a> front-page thanks to Akregator.</p>

<p>There hasn’t been an official release of <a href="http://tuxonice.net/">Tux-On-Ice</a> for this kernel version yet, but I still went and booted 2.6.35 with Radeon <acronym title="Kernel Mode-setting">KMS</acronym> support enabled by default. I should say that I don’t notice any performance improvements since <a href="http://shadowm.rewound.net/blog/archives/68-ATI-mayhem,-part-X-including-a-trip-to-Wonderland.html">the last time I tried this thing</a>, and in particular, stencil buffers seem to be still unsupported by my Mesa/kernel drivers combination, which makes <a href="http://www.frogatto.com/">Frogatto</a> fall back to using fading for level transitions, as opposed to the cool iris effect used otherwise.</p>

<p class="italic">(I might even bug the Mesa developers about the stencil buffer thing if I like KMS enough now...)</p>

<p>Nonetheless, the VSync support in the Radeon KMS driver, just like in 2.6.34, is much better than the crap <a href="http://shadowm.rewound.net/blog/archives/76-ATI-mayhem,-Part-XII.html">AMD ATI's proprietary suite has to offer</a>. Watching videos in VLC with no tearing at all is just wonderful.</p>

<p>It’s one of those moments where I can’t decide whether I want features, or quality. Right now KMS appears to offer more quality than UMSm if only because it has VSync at all, but as far as I can see, the UMS driver is more mature in terms of OpenGL features. Granted, I may give the AMD ATI Catalyst 10.7 drivers a try later now that the <a href="http://shadowm.rewound.net/blog/archives/76-ATI-mayhem,-Part-XII.html">SuperTuxKart issue I mentioned before</a> appears to be fixed according to their changelogs.</p>

<p><span class="bold">EDIT:</span> only a few hours after, I decided to file a bug report for Mesa, now <a href="https://bugs.freedesktop.org/show_bug.cgi?id=29350">#29350</a>. Let’s hope for the best!</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/84-Wesnoth.org-status.html" rel="alternate" title="Wesnoth.org status" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-30T23:44:52Z</published>
        <updated>2010-08-01T07:45:02Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=84</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=84</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/84-guid.html</id>
        <title type="html">Wesnoth.org status</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>The host that provides all the primary services for the Wesnoth community, including forums, wiki, add-ons and the primary MP server, has been down for the last 4 hours. Work is underway to determine the causes and solve this problem as soon as it's possible. Stay tuned!</p>

<p><span class="bold">UPDATE 2010-07-31:</span> the server went back online around 3:00 AM CEST. So far we still don't know the reasons for the crash, but we know that the server ran out of memory, which could have locked up the operating system indefinitely before being rebooted by hand.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/83-Why-the-Wesnoth-Markup-Language-is-bad-for-you.html" rel="alternate" title="Why the Wesnoth Markup Language is bad for you" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-28T19:48:08Z</published>
        <updated>2010-07-29T04:05:17Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=83</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=83</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/83-guid.html</id>
        <title type="html">Why the Wesnoth Markup Language is bad for you</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>In the past, I've seen many people from <a href="http://www.wesnoth.org/">Wesnoth's</a> user community and Development Team advocating the use and implementation of <acronym title="Wesnoth Markup Language">WML</acronym> in Wesnoth and, potentially, other games.</p>

<p>Even I have participated in some debates over whether WML is good or bad for content developers. I have also expressed my opinions on topics such as the old, scrapped Python AI and the currently thriving embedded Lua support, all of this on <a href="http://wiki.wesnoth.org/Support#IRC">IRC</a>, usually in <tt>#wesnoth</tt> or <tt>#wesnoth-dev</tt>, and even <tt>#wesnoth-umc-dev</tt>.</p>

<p>I have got to admit that my personal opinions on programming languages have changed over time, mainly because I've learned from real experiences when maintaining or starting small to medium-sized projects built upon some of them. WML sort of counts as one of those since I'm the author and former maintainer of <cite>Invasion from the Unknown</cite> and, more recently, <cite>After the Storm</cite>. I have also worked on the WML events engine a bit implementing new features or fixing known and unknown bugs, including some I've found while developing my own WML content.</p>

<p>At this point, I think I am qualified for thoroughly examining the pros and cons of WML with a less partial point of view, so here's a rather lengthy review of both, despite the title of the article, which deliberately sounds like flamewar bait for the audience. <img src="/dorset3/img/smilies/wink.gif" alt=";)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> <br /><a href="http://shadowm.rewound.net/blog/archives/83-Why-the-Wesnoth-Markup-Language-is-bad-for-you.html#extended">Continue reading "Why the Wesnoth Markup Language is bad for you"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/82-Google-Chrome-and-a-conspiracy-theory.html" rel="alternate" title="Google Chrome and a conspiracy theory" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-27T05:28:42Z</published>
        <updated>2010-07-27T05:50:07Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=82</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=82</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/8-Web-browsers" label="Web browsers" term="Web browsers" />
    
        <id>http://shadowm.rewound.net/blog/archives/82-guid.html</id>
        <title type="html">Google Chrome and a conspiracy theory</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>I just found out that <a href="http://packages.debian.org/experimental/chromium-browser">Chromium (browser) has been in Debian experimental and Sid for a while</a>.</p>

<p>I'm currently tracking Squeeze and pulling some packages from Experimental, in particular Iceweasel 3.6, which feels much more stable to me than its counterpart in Testing, version 3.5 — which will probably have to remain in the upcoming Stable release <a href="http://glandium.org/blog/?p=891">as explained by one of the package maintainers</a>.</p>

<p class="italic">(Granted, I'm a fool who doesn't care about security because I don't visit unknown odd sites at all. If it weren't for this, you'd say I should not be pulling packages from Experimental, but I am, fully understanding the risks!)</p>

<p>Despite I can see other packages from Experimental in my package manager, including a localization package for Chromium, I <strong>can't</strong> see Chromium itself, which is really odd. I have Google Chrome installed and I pull it from Google's repository because…because it added itself to <tt>apt</tt>'s sources after I installed it for trying it out last year — which unfortunately reeks of Internet Explorer's old “integration” thing that started with IE 4, frankly. I mean, why didn't it even ask me about adding the source? Is it modifying other parts of my system's configuration without my consent? What the hell, Google?</p>

<p>Rant aside, this is a strange coincidence, which could be related to a mirroring issue in any case, but I don't rule out the possibility that Chrome is somehow banning Chromium from my package manager. Alternatively my laptop might be possessed by some evil spirit that wants me to leave Debian's free-as-in-freedom packages for evil “Big Brother” software suites. Uncanny?</p>

<p class="italic">(For the Google lovers and haters in the audience: I'm perfectly fine with using Google stuff, mind you. My main email account is from Gmail, my <span class="strike">preferred</span> <strong>only</strong> search engine is Google's, I also use Google Maps, Google Earth, and this <a href="http://code.google.com/p/google-perftools/">memory/method call profiling suite</a> of sorts that Sirp recommended to me. I also use Google Translate and reCAPTCHA. So, no, I'm not really bothered by Google Chrome's additions, but I'm really mildly pissed off at their decision to change my package manager's sources without asking me through debconf or something.)</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/79-My-software-preferences.html" rel="alternate" title="My software preferences" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-14T02:32:26Z</published>
        <updated>2010-07-25T04:55:46Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=79</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=79</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/79-guid.html</id>
        <title type="html">My software preferences</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Sometimes people (especially Windows users) ask me what I use for some common task in Linux. These are my software preferences when working on various environments; your mileage will definitively vary.</p>
 <br /><a href="http://shadowm.rewound.net/blog/archives/79-My-software-preferences.html#extended">Continue reading "My software preferences"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/81-Wesnoth-Project-Y.html" rel="alternate" title="Wesnoth: Project Y" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-20T04:05:21Z</published>
        <updated>2010-07-22T00:45:02Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=81</wfw:comment>
    
        <slash:comments>4</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=81</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/81-guid.html</id>
        <title type="html">Wesnoth: Project Y</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>It's been really long since the last time I talked of my work on <a href="http://www.wesnoth.org/">Wesnoth</a>, so I figured it'd be a good idea to talk about one of our most mysterious projects that have involved a few artists from the community during the last month.</p>

<p>Long ago, <cite>Under the Burning Suns</cite>, quartex's campaign, was introduced to mainline. It caused some <a href="http://forums.wesnoth.org/viewtopic.php?f=2&amp;t=10520">minor controversy</a> and some later confusion as to whether or not there's a No Religion In Wesnoth policy. The latest <a href="http://forums.wesnoth.org/viewtopic.php?p=441618#p441618">answer</a> to this matter stems from <a href="http://forums.wesnoth.org/viewtopic.php?p=393560#p393560">this older post</a>, in which Sapient touches the subject.</p>

<p>That said, <strong>we</strong> are very soon going to step into dangerous territory with the <acronym title="Under the Burning Suns">UtBS</acronym>-<acronym title="Invasion from the Unknown">IftU</acronym>-<acronym title="After the Storm">AtS</acronym>-<acronym title="The Silver Lands">TSL</acronym> campaigns continuity, which we also intend to establish as Wesnoth's canon as soon as we can. This is, <strong>Project Y</strong>.</p>

<p class="bold">SPOILERS ABOUND IN THIS ARTICLE for those who haven't played or finished <cite>Under the Burning Suns</cite> or <cite>Invasion from the Unknown</cite>. There may also be spoilers for the upcoming releases of <cite>After the Storm</cite>!</p>

<p>Also, note that this article will be much longer than the usual. Prepare to digest some plentiful doses of bad English over the next few <span class="strike">hours</span> minutes. <img src="/dorset3/img/smilies/biggrin.gif" alt=":D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> <br /><a href="http://shadowm.rewound.net/blog/archives/81-Wesnoth-Project-Y.html#extended">Continue reading "Wesnoth: Project Y"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/68-ATI-mayhem,-part-X-including-a-trip-to-Wonderland.html" rel="alternate" title="ATI mayhem, part X (including a trip to Wonderland)" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-05-18T12:08:09Z</published>
        <updated>2010-07-14T01:04:08Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=68</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=68</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/68-guid.html</id>
        <title type="html">ATI mayhem, part X (including a trip to Wonderland)</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p class="bold">May 17th 2010, 9:15 PM local time, Santiago de Chile.</p>

<p>This has been a day plenty of good news in the software side of things. For one, the KDE 4.4 migration in Debian Squeeze seems to be mostly complete and <acronym title="Software Compilation">SC</acronym> version 4.4.3 is in testing now, despite having been released by the upstream providers only about a little more than a week ago. I downloaded and installed the packages earlier this morning (blessed be aptitude) and I've seen only satisfying results so far — not to mention that the improvements to the Oxygen widget set and windeco are...uh...OHHHH SHIIIIINYYYYY!!!</p>

<p>*Ahem*, in any case, I've decided to set up (again) a little <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/ForScience">experiment</a> with kernel modesetting support for my ATI RS780 (r6xx-based) and this HP laptop. Linux 2.6.34 was, according to my sources, released yesterday with lots of performance improvements in that area. I have, as usual, the latest <acronym title="Device Dependent X">DDX</acronym> (<tt>radeon</tt>), <acronym title="Direct Rendering Manager">DRM</acronym> and Mesa sources from the git repositories. Right now I'm copying my 2.6.33-tuxonice (2.6.33.4) tree, cleaning it and patching it to prepare a 2.6.33.4 build. The weather is pretty cold and I've got an annoying stomachache which I'm fighting with the Power of Tea. I hope to have luck...with the kernel, I mean, not the stomachache, although I guess that's also important for a complete and comfortable user experience.</p>

<p>For what is worth, I'm not using a Tux-On-Ice patch for 2.6.34 since there's no such officially released yet — I only want to try KMS and go back to 2.6.33.4 for production until I hear news from TOI, unless things go really wrong and I simply decide 2.6.34 is not for me, like I once did with 2.6.29 and 2.6.30.</p>

<p>*<a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/ApocalypticLog">end of record</a>*</p>

<p class="bold">10:16 PM.</p>

<p>27 minutes after starting <tt>make-kpkg</tt>, I have obtained a fresh 2.6.34 kernel with a delicious vanilla smell. I'll now put it in the oven — er, I mean, install it with <tt>dpkg</tt>, recompile the <tt>radeon</tt> DDX with KMS support and reboot.</p>

<p>*end of record*</p>

<p class="bold">10:50 PM.</p>

<p>While things didn't go as well as I expected, I can assure that KMS' performance with this ATI RS780 improved a lot since Linux 2.6.33, especially when dragging windows around with a compositing window manager. Something that really amazes me is the shorter delay (less than 1 second now, used to be between 2 and 3 seconds) in resuming from suspend-to-RAM.</p>

<p>The problem here is that OpenGL clients still suffer a lot of performance loss under a compositing manager such as KDE 4.4.3's Kwin — which they generally don't with UMS, which only causes flickering — making <a href="http://www.frogatto.com/">Frogatto</a>'s camera motion jerky and annoying. This is not a Good Thing™ (particularly because of a greater reason I'll eventually explain in detail) and this means that if I wanted to use Frogatto with KMS I'd have to disable compositing with the handy keyboard shortcut...in other words, not different to how I use it with UMS. No gain for some substantial loss.</p>

<p>There's still some performance loss with KMS and no compositing. It isn't very noticeable in Frogatto most of the time, but I've been using an old eduke32 build with an old version of the High Resolution Pack as a test case for Mesa for quite a while now. Framerate drops from between 70 and 90 FPS (UMS) to between 30 and 50. It's still acceptable, but not optimal and this is not even a worst-case scenario.</p>

<p>I thought for a moment that this loss could be caused by a couple of options I left set in my xorg.conf from UMS, namely ClockGating and DynamicPM, so I disabled them and restarted X. Again, no differences, except for a little warning that appeared in the kernel logs with no further explanation.</p>

<pre>You have old &amp; broken userspace please consider updating mesa</pre>

<p>Okay, wait, how can the userspace support be “old &amp; broken” and yet it works at acceptable performance? Then again, it's partially right in complaining because I haven't recompiled mesa (not that I really should, probably) in a couple of days. So let's try again with a newer mesa.</p>

<p>*end of record*</p>

<p class="bold">11:15 PM.</p>

<p>Here we go, with a current version of mesa's source code from the git repository. Everything looking the same again. No performance improvements or extra losses. Again, I use eduke32 as a stress testing suite for lack of something better.</p>

<p>So...wait...WHOAH...<strong>THE COLORS MAN, THE COLORS!!</strong> <span style="font-size:larger">IT'S SO <strong>BEAUTIFUL</strong>...IT'S...<span style="font-size:larger">IT'S...</span></span></p>

<p><a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/KilledMidSentence">vsmlbhmnermernqvatmguvfmguramlbhmunirmabmyvsr</a>*</p>

<p>*<a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/GoneHorriblyWrong">unexpected end of record</a>*</p>

<p class="bold">11:32 PM.</p>

<p>I have <strong>no</strong> fucking idea of <strong>what</strong> happened. I don't know if the GPU (or the display?) got hyperstimulated or it was just my eyes, or my brain, but after rebooting from the aforementioned...crashed...system (which didn't react to any magic sysrq sequence for a change), the GRUB menu background (blue) was blinking so quickly it was making me dizzy.</p>

<p>My theory is that yes, the GPU got hyperstimulated and needed to cool down for a few seconds, just like my eyes. In any case, the KMS kernel in question has been destroyed and I'm back on 2.6.33.4 with Tux On Ice and using drivers in UMS mode. Oh...the colors...there are no words, screenshots or photos which could demonstrate my point. IT WAS SO FREAKIN' COOL THAT I'm currently wondering if it permanently damaged my hardware or it's just one of those "as long as it doesn't happen again we're okay" things. O_o The effect was pretty hypnotic despite looking like a still screen going brighter and brighter...</p>

<p>There's naturally nothing in the kernel logs hinting to what happened. I'd say it was a hardware failure, maybe caused by a corrupted firmware image making it past the defenses. &lt;/wildguessing&gt; In any case I don't think I want to try KMS for a while...at least not until I have a whole laptop (or eyes) to spare.</p>

<p>*<a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/OverlyLongGag">end of record</a>*</p>

<p style="margin-top:40px;"><strong><a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/FreakOut">GAAAAAAAAAAAA</a><a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/GoMadFromTheRevelation">AAAAAAAAAAAAAA!</a></strong> <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/Emoticon">o_O</a></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/76-ATI-mayhem,-Part-XII.html" rel="alternate" title="ATI mayhem, Part XII" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-13T01:15:02Z</published>
        <updated>2010-07-13T01:23:47Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=76</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=76</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
    
        <id>http://shadowm.rewound.net/blog/archives/76-guid.html</id>
        <title type="html">ATI mayhem, Part XII</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>After <a href="http://shadowm.rewound.net/blog/archives/74-ATI-mayhem,-Part-XI.html">successfully trying the AMD Catalyst driver</a> (a.k.a. <tt>fglrx</tt>), I decided to go back to the open-source drivers for several reasons.</p>

<ul>
  <li>A certain memory allocation failure from X.org scared me a bit.</li>
  <li>The proprietary drivers don't play well with <a href="http://supertuxkart.sourceforge.net/">SuperTuxKart</a> (e.g. Debian bug <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=586797">#586797</a>) causing texture corruption both with 0.6.2a and SVN trunk.</li>
  <li>Tearing. Lots of tearing with 2D. Forcing use of VSync in the configuration causes increased CPU usage for some reason.</li>
  <li>XVideo acceleration consumes some more CPU time than the free drivers' code for some reason (uh...).</li>
  <li>I discovered that the screen or GPU buzz when running on batteries after all.</li>
</ul>

<p>There isn't anything in <tt>fglrx</tt> that I really needed to have, so I'm sticking to the free (open-source) drivers again, most likely for the rest of the laptop's lifetime.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/74-ATI-mayhem,-Part-XI.html" rel="alternate" title="ATI mayhem, Part XI" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-07-04T04:13:05Z</published>
        <updated>2010-07-04T05:15:12Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=74</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=74</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/74-guid.html</id>
        <title type="html">ATI mayhem, Part XI</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>After <a href="http://shadowm.rewound.net/blog/archives/68-ATI-mayhem,-part-X-including-a-trip-to-Wonderland.html">unsuccessfully trying the ATI Radeon Kernel-Modesetting driver</a> with Linux 2.6.34, and reading about some <a href="http://www.phoronix.com/scan.php?page=article&amp;item=ubuntu_fglrx_open&amp;num=1">performance comparisons</a> with AMD/ATI's proprietary Catalyst drivers and the free Mesa DRI drivers, I decided to give AMD/ATI Catalyst (a.k.a. <tt>fglrx</tt>) another try.</p>

<p>When I decided to do that, <tt>fglrx</tt> 10.5 was in Debian's Testing, so I waited until the next day for <tt>fglrx</tt> 10.6 to enter Testing.</p>

<p>I've been using <tt>fglrx</tt> for the last 2:30 hours and haven't experienced any difficulties so far with OpenGL or Xv. Switching consoles works, suspend-to-RAM works, suspend-to-disk works, and I don't hear any buzzing from the screen, although I can't be very sure since the fan has been making very loud noises since around December last year. I have suddenly regained my faith in AMD.</p>

<p>There <strong>is</strong> one minor issue with Tux-On-Ice since it seems to run out of memory for drivers for the atomic copy step, probably due to <tt>fglrx</tt>. This causes TOI to try the same step twice or thrice before hibernating successfully ­— but solving this is most likely a matter of increasing <tt>CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE</tt> (currently 2000) in the kernel config.</p>

<pre>TuxOnIce debugging info:
- TuxOnIce core  : 3.1.1.1
- Kernel Version : 2.6.34-bluecore280-suspend2
- Compiler vers. : 4.4
- Attempt number : 2
- Parameters     : 0 667656 0 1 -2 5
- Overall expected compression percentage: 0.
- Compressor is 'lzf'.
  Compressed 1638621184 bytes into 554865401 (66 percent compression).
- Block I/O active.
  Used 78251 pages from swap on /dev/sda10.
- Max outstanding reads 851. Max writes 3700.
  Memory_needed: 1024 x (4096 + 320 + 104) = 4628480 bytes.
  Free mem throttle point reached 0.
- Swap Allocator enabled.
  Swap available for image: 1496831 pages.
- I/O speed: Write 91 MB/s, Read 105 MB/s.
- Extra pages    : 4118 used/4503.
- Result         : Succeeded.</pre>

<p>The <em>Extra pages</em> line is what matters here.</p>

<p>While performance overall is much better than with the open-source drivers from Mesa, and Frogatto is usable with Kwin's compositing at last — even if still slightly slower than in non-compositing mode — there are some occasional odd messages in the kernel's log.</p>

<pre>[fglrx:firegl_acpi_video_event] *ERROR* Could not find private acpi context by video busid: LCD</pre>

<p>Nothing to worry about, I hope. <img src="/dorset3/img/smilies/wink.gif" alt=";)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>

<p><span class="bold">UPDATE:</span> Effectively, increasing <tt>CONFIG_TOI_DEFAULT_EXTRA_PAGES_ALLOWANCE</tt> seems to have solved the hibernation issues.</p>

<pre>- Extra pages    : 4041 used/5200.</pre> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/73-Forum-games-and-Wesnoth.org.html" rel="alternate" title="Forum games and Wesnoth.org" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-06-22T06:48:54Z</published>
        <updated>2010-06-23T22:07:14Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=73</wfw:comment>
    
        <slash:comments>11</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=73</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/73-guid.html</id>
        <title type="html">Forum games and Wesnoth.org</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Recently, Wesnoth's <a href="http://forums.wesnoth.org/viewforum.php?f=11">Off-Topic</a> forum has fallen victim of a virus that had already attempted to take over our community long time ago. Forums games are a fun application of the board system to have some fun in social zones, but they sometimes get annoying.</p>

<p>They get particularly annoying when all the people involved have little or no creativity at all. There was a “<a href="http://forums.wesnoth.org/viewtopic.php?f=11&amp;t=30058">Ruin a Wish Foundation</a>” thread in Wesnoth's Off-Topic forum for a while until I locked it to try and see whether anyone would care. Some people <strong>did</strong>, and in fact, a <a href="http://forums.wesnoth.org/viewtopic.php?f=11&amp;t=30285">new</a> “Ruin a Wish Foundation” thread was started shortly afterwards. I simply let it go this time, but the amount of repetitiveness in the game's posts is getting pretty irritating.</p>

<p>Meanwhile, the incredibly hard-to-read “<a href="http://forums.wesnoth.org/viewtopic.php?f=11&amp;t=30281">Three Word Story</a>” game is also taking up space, and serves only as an unsettling showcase of these forumers' inability to come up with something different and amusing such as the “<a href="http://forums.wesnoth.org/viewtopic.php?f=11&amp;t=30314">Limerick Duel</a>” thread.</p>

<p>All in all, the Off-Topic forum will continue to be doomed to autopruning if this madness continues.</p>

<p>This is particularly terrible because the primary excuse used by the Powers That Be™ to justify the autopruning of Off-Topic is disk space, with pointlessness being a secondary excuse. Autopruning was introduced during times when the Wesnoth.org community forums were hosted on a server that wasn't under our control. This has certainly changed nowadays, and I honestly can't see how it's more important to avoid increasing Off-Topic's size in posts (where normal users can't add attachments) while individual art and music threads in other forums can use take up even more disk space thanks to enormous (occasionally gratuitously redundant) attachments. So, while space is no longer an excuse, the pointlessness seems to be a plague that we can't exterminate. Yet.</p>

<p>As I said not long ago in <a href="http://forums.wesnoth.org/viewtopic.php?p=436444#p436444">a certain post</a> in Off-Topic:</p>

<blockquote>Off-Topic is the name of the forum. This has never meant that you can go wild and be stupid or such (“off-topic”) in here.</blockquote> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/71-PowerPC-madness,-Part-I.html" rel="alternate" title="PowerPC madness, Part I" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-06-07T01:27:07Z</published>
        <updated>2010-06-07T01:27:07Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=71</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=71</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/71-guid.html</id>
        <title type="html">PowerPC madness, Part I</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Although I really prefer <a href="http://www.virtualbox.org/">VirtualBox</a> over <a href="http://www.qemu.org/">QEMU</a> for virtualization <a href="http://shadowm.rewound.net/blog/archives/14-Windows-9x-on-VirtualBox-3.0.8.html">nowadays</a>, I've decided that I want to have a PowerPC Linux system of my own. For that purpose, I'm installing Debian Lenny (PowerPC) on an emulated guest with QEMU.</p>

<p>The goal? Compiling <a href="/projects/wesnoth-tc.php">Wesnoth-TC</a> on a big-endian platform and fixing it as required. Let's see how this goes.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/70-ACPI-DSDT-patching-again.html" rel="alternate" title="ACPI DSDT patching again" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-05-29T17:52:18Z</published>
        <updated>2010-05-29T17:52:18Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=70</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=70</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/70-guid.html</id>
        <title type="html">ACPI DSDT patching again</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>My old patched ACPI DSDT <a href="http://shadowm.rewound.net/blog/archives/69-More-RAM-at-last!-or,-the-side-effects-of-patching-the-ACPI-DSDT.html">didn't work well after adding 2 GB of RAM</a> and caused a lot of “interesting” problems, so I built a kernel without a custom DSDT to be able to work safely without hitting a “bad page.”</p>

<p>Last night I fetched the system's DSDT again, patched and recompiled it, removing the rules that disallow non-Vista systems to get certain info from the thermal zone. So now I have a working 2.6.33.5 kernel that can access the ACPI thermal zone again.</p>

<pre>shadowm@bluecore:~$ taintedness.pl 
Tainted: G        A  

    A (ACPI) - ACPI DSDT overridden.
shadowm@bluecore:~$</pre>
<p>With the usual side-effect of tainting the kernel. <img src="/dorset3/img/smilies/wink.gif" alt=";)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/69-More-RAM-at-last!-or,-the-side-effects-of-patching-the-ACPI-DSDT.html" rel="alternate" title="More RAM at last! (or, the side-effects of patching the ACPI DSDT)" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-05-27T21:33:00Z</published>
        <updated>2010-05-27T21:33:00Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=69</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=69</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/69-guid.html</id>
        <title type="html">More RAM at last! (or, the side-effects of patching the ACPI DSDT)</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Today I bought and installed another 2 GB of RAM from my HP Pavilion dv5-1132la laptop while on an errand to buy a new laptop for someone else — it ended up being a HP Pavilion dv4-something in case you are <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/TooDumbToLive">wondering</a>.</p>

<p>This means that I can not only run Windows 2000, Windows XP, Windows 98, OpenSolaris 2009.06 and Debian Lenny on VirtualBox <strong>all at the same time</strong> now, but I'll also be able to <a href="http://shadowm.rewound.net/blog/archives/62-On-Wesnoths-grow-rate.html">compile Wesnoth faster</a> now that I can take advantage of the dual-core AMD processor without running out of RAM and getting excess swapping to disk during the build!</p>

<p>It didn't work quite well at first, though. Problems occurred when I started enough processes to consume over 2 GB of RAM:</p>

<pre>BUG: Bad page state in process VirtualBox  pfn:6febe
page:ffffea000187b990 flags:4000000000800000 count:0 mapcount:0 mapping:(null) index:0
Pid: 4323, comm: VirtualBox Tainted: G       A   2.6.33.4-bluecore263-preempt-suspend2 #1
Call Trace:
 [&lt;ffffffff81086a48&gt;] ? bad_page+0x102/0x115
 [&lt;ffffffff810882a2&gt;] ? get_page_from_freelist+0x3b0/0x517
 [&lt;ffffffff810884f6&gt;] ? __alloc_pages_nodemask+0xed/0x588
 [&lt;ffffffff810884f6&gt;] ? __alloc_pages_nodemask+0xed/0x588
 [&lt;ffffffff810a0b2a&gt;] ? __vmalloc_area_node+0xea/0x10a
 [&lt;ffffffffa021d514&gt;] ? rtR0MemObjLinuxAllocPages+0xd8/0x1cc [vboxdrv]
 [&lt;ffffffffa021d630&gt;] ? rtR0MemObjLinuxAllocPhysSub2+0x28/0xde [vboxdrv]
 [&lt;ffffffffa022a7dd&gt;] ? g_abExecMemory+0x1ddd/0x180000 [vboxdrv]
 [&lt;ffffffffa022ad78&gt;] ? g_abExecMemory+0x2378/0x180000 [vboxdrv]
 [&lt;ffffffffa022d2b0&gt;] ? g_abExecMemory+0x48b0/0x180000 [vboxdrv]
 [&lt;ffffffff8102cc1c&gt;] ? cpuacct_charge+0x54/0x76
 [&lt;ffffffffa023b2f4&gt;] ? g_abExecMemory+0x128f4/0x180000 [vboxdrv]
 [&lt;ffffffffa023d28f&gt;] ? g_abExecMemory+0x1488f/0x180000 [vboxdrv]
 [&lt;ffffffffa023d7bb&gt;] ? g_abExecMemory+0x14dbb/0x180000 [vboxdrv]
 [&lt;ffffffffa02316da&gt;] ? g_abExecMemory+0x8cda/0x180000 [vboxdrv]
 [&lt;ffffffffa0218ded&gt;] ? supdrvIOCtl+0x1241/0x20f8 [vboxdrv]
 [&lt;ffffffffa021ce22&gt;] ? rtR0MemAlloc+0x90/0xb4 [vboxdrv]
 [&lt;ffffffffa02152a7&gt;] ? VBoxDrvLinuxIOCtl+0x114/0x18e [vboxdrv]
 [&lt;ffffffff81028440&gt;] ? pick_next_task_fair+0xac/0x112
 [&lt;ffffffff810ba422&gt;] ? vfs_ioctl+0x23/0x93
 [&lt;ffffffff810ba92d&gt;] ? do_vfs_ioctl+0x429/0x46d
 [&lt;ffffffff810aeff3&gt;] ? fget_light+0xc3/0xe8
 [&lt;ffffffff810ba9ad&gt;] ? sys_ioctl+0x3c/0x5c
 [&lt;ffffffff81001f2b&gt;] ? system_call_fastpath+0x16/0x1b</pre>

<p>While at first I thought it was a problem with the new RAM module itself (either that or damage on the old module, which is occupying the formerly free slot) I quickly suspected of the Linux kernel configuration instead because of several ACPI-related errors in the boot log.</p>

<pre>reserve_ram_pages_type failed 0x6febe000-0x6febf000, track 0x10, req 0x10
ioremap reserve_memtype failed -16
ACPI Error: Could not map memory at 000000006FEBEE70, size 7 (20091214/exregion-180)
ACPI Exception: AE_NO_MEMORY, Returned by Handler for [SystemMemory] (20091214/evregion-475)
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.TOM_] (Node ffff88013f8605d0), AE_NO_MEMORY
ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._CRS] (Node ffff88013f860430), AE_NO_MEMORY
ACPI Error (uteval-0250): Method execution failed [\_SB_.PCI0._CRS] (Node ffff88013f860430), AE_NO_MEMORY</pre>

<p>After running some memory test utilities and getting no problem reports I recompiled another kernel (blessed be ccache, by the way!) without my patched DSDT which I needed for getting thermal zone readings with Linux. I might have mentioned before that this laptop has a special rule in the ACPI DSDT to not allow any operating system other than Windows <em>Vista</em> (even the particular version) to read the temperature status.</p>

<p>As I suspected, all the boot errors went away after rebooting to an unpatched/untainted kernel, and right now I'm using 3678 MB of 3707 MB (damned graphics controller) without hitting a “bad page.”</p>

<p>I'm not sure why the patched DSDT caused this little mess, but I'll check what happens if I repatch it now, using the current “original” DSDT.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/67-Terminator-rocks.html" rel="alternate" title="Terminator rocks" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-05-03T16:39:55Z</published>
        <updated>2010-05-03T22:40:21Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=67</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=67</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
    
        <id>http://shadowm.rewound.net/blog/archives/67-guid.html</id>
        <title type="html">Terminator rocks</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>No, not the movie, although I admit it's one of my favorites.</p>

<p>Some time ago I got an upgrade from Qt 4.5 to 4.6 as part of the deal of following Debian Squeeze's progress in the testing repository. This had a couple of interesting side effects, one of them being a minor change in behavior related to the <tt>radeon</tt> drive and my DPI settings (long history), and the other being performance degradation in one of my most frequently used applications: Konsole.</p>

<p>This performance degradation results in it lagging everything down whenever a <tt>top</tt> view updates, for example — not even window managers can stand the increased CPU load produced by the refreshing console. A more common symptom I see is a huge delay when switching tabs. I'm not sure if all this is just a direct consequence of upgrading Qt or there's something wrong with my setup.</p>

<p>I didn't really feel like giving up Konsole for the plain and bland <tt>xterm</tt> application. Then I remembered a software package that I installed (as many other packages) following a suggestion from some person on IRC.</p>

<p><a href="http://www.tenshu.net/terminator/"><strong>Terminator</strong></a> is a program that embeds Gtk terminal emulator widgets (which are also used by the popular GNOME terminal) and allows the user to arrange them in various ways in the same window. The following screenshot attempts to illustrate the flexibility I'm talking about.</p>

<p style="text-align:center;"><a href="/images/r/screenshots/terminator.png" title="Click to enlarge"><img src="/images/r/screenshots/terminator-thumbnail.png" alt="Terminator screenshot" /></a></p>

<p>While I initially feared I'd be forced to go back to Konsole for some features, Terminator has proven to be a very good replacement which plays well with most console-based programs I use, including Irssi. The version I'm using, 0.93, has a very nice GUI for editing its configuration. I had used previous versions which required me to write a configuration file by hand with my non-standard preferences. Now I can easily edit keybindings to imitate Konsole and get used to Terminator more quickly.</p>

<p>It's implemented in Python and can consume a fair amount of memory — it's the process using 44 MB of RAM as seen in the <tt>top</tt> view above — but it's well worth the price in my opinion.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/66-Once-is-not-enough.html" rel="alternate" title="Once is not enough" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-04-27T17:42:54Z</published>
        <updated>2010-04-27T17:42:54Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=66</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
    
        <id>http://shadowm.rewound.net/blog/archives/66-guid.html</id>
        <title type="html">Once is not enough</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>The new AC adapter died last Sunday during normal operation while the laptop was running on it with the battery at 100%. I was just about to play a game when this happened.</p>

<p>Luckily, I got it replaced the next day and now I'm on bluecore again. I hope this is the last time this happens. <img src="/dorset3/img/smilies/pensive.gif" alt=":/" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/65-Shadowmaster-back-in-action.html" rel="alternate" title="Shadowmaster back in action" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-04-22T01:12:55Z</published>
        <updated>2010-04-22T01:12:55Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=65</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=65</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
    
        <id>http://shadowm.rewound.net/blog/archives/65-guid.html</id>
        <title type="html">Shadowmaster back in action</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>After almost two days of wandering around the streets of the city, my emissaries located a place to buy a new AC adapter for my much beloved HP Pavilion “ATI hellspawn” dv5-1132la, and I have thusly regained access to my development environment for Wesnoth and related projects.</p>

<p>48 hours of using a laptop with a broken display, short-lived (8 minutes) battery, unusable touchpad buttons, different keyboard layout and outdated user config can be very frustrating, but it was a good exercise nevertheless. It's better to have a broken spare laptop running Linux (Debian Lenny before Stable) than no spare laptop or no Linux laptop at all. <img src="/dorset3/img/smilies/wink.gif" alt=";)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/64-More-power,-now!.html" rel="alternate" title="More power, now!" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-04-21T00:21:18Z</published>
        <updated>2010-04-21T00:27:45Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=64</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=64</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
    
        <id>http://shadowm.rewound.net/blog/archives/64-guid.html</id>
        <title type="html">More power, now!</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>My laptop's AC adapter has finally died after passing out in three opportunities. I've already sent my emissaries across the city to find a spare for this thing.</p>

<p>For now, I'm using <a href="http://shadowm.rewound.net/blog/archives/4-The-One-Button-of-Power.html">my old, broken Acer laptop</a> and I won't be available for most of the time until I can use my HP Pavilion dv5-1132la again.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/62-On-Wesnoths-grow-rate.html" rel="alternate" title="On Wesnoth's grow rate" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-04-18T20:34:26Z</published>
        <updated>2010-04-18T20:34:26Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=62</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=62</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/62-guid.html</id>
        <title type="html">On Wesnoth's grow rate</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>When I got my current HP laptop on December 2008, it was pretty nice to compile Wesnoth from scratch with 3 or 4 parallel compiler instances in less than 15 minutes, even when making -O3 builds.</p>

<p>Nowadays, it can take an hour to make an -O3 build with 1 single compiler instance, and parallel compiling is out of the question. In comparison, Wesnoth 1.0 can be compiled in 3 minutes and a half with 1 single instance, and much less time with -j 4.</p>

<p>Exactly what is wrong with this? Let's take a look at the relevant system stats and compilation settings:</p>

<ul>
  <li><strong>CPU:</strong> AMD Athlon X2 Dual-Core QL-62 (2 GHz each core)</li>
  <li><strong>RAM:</strong> 2 GiB minus 256 MiB (onboard graphics)</li>
  <li><strong>OS:</strong> Debian GNU/Linux “Squeeze” (amd64) (GCC 4.4.2)</li>
  <li><strong>Kernel:</strong> Linux bluecore 2.6.33.2-bluecore261-preempt-suspend2-audit #1 SMP PREEMPT Mon Apr 12 21:38:39 CLT 2010 x86_64 GNU/Linux (<a href="http://tuxonice.net">Tux-On-Ice patch</a>, optimizations for AMD K8, timer freq. 1000 hz., NO_HZ, PREEMPT)</li>
  <li><strong>Filesystem where .ccache and Wesnoth's source are:</strong> ext3 (sda6)</li>
  <li><strong>Filesystem for /tmp:</strong> XFS (sda9)</li>
  <li><strong>CXXFLAGS:</strong> <tt>-pipe -mtune=native -march=native -O3 -Wl,--gc-sections,--relax</tt></li>
  <li><strong>Build system:</strong> SCons (ccache=True, fast=True)</li>
</ul>

<p>-O3 obviously involves extra CPU load at compile time because of the extra optimizations compared to, say, the default -O2. Nonetheless, I know well that it used not to take this long to build Wesnoth at the start of 2009. Wesnoth's code grew a lot over the course of the year due to the introduction of the new AI framework, the new lobby and more GUI2 development. Particularly, if I run scons with -j 2 or greater nowadays, I can run out of free RAM (making Linux page everything out to swap memory) during the compilation of the AI framework.</p>

<p>The most likely reason for this problem is the common use of C++ templates in that code. This feature is used a lot in GUI2 as well, but the code generated by template instantiation on every object file appears to be smaller.</p>

<p>While building stuff from scratch should be relatively uncommon for a developer like me who also has ccache installed and enabled, very minor changes in GUI2 or the AI from other developers currently trigger a near-total recompilation of Wesnoth. I have complained a lot about this in many opportunities, but it seems that I've hit a hard wall as a consequence of Wesnoth's evolution. <span class="bold">It has finally become a BFG (Big Fucking Game).</span></p>

<p>An -O3 executable of the main game target can be as large as 14 MiB. An -O0 debug build with symbols nears 400 MiB, and the directory with the resultant object files (including the executable) reaches 1.4 GiB of size.</p>

<p>Right now I'm considering adding more RAM for other reasons — namely, running Windows XP SP3 on VirtualBox can easily starve the host if certain apps like Iceweasel or Kate are running on the latter. I've yet to see if this will help me compile Wesnoth faster. It won't magically reduce the frequency of full rebuilds, though, and that's really discouraging me from hacking the mainline engine unless it's a one-shoot patch like the one involved in the fix for <a href="https://gna.org/bugs/?15902">bug 15902</a>.</p>

<p>The alternative is getting a quad-core machine or a distcc host. The first is least likely to happen. <img src="/dorset3/img/smilies/neutral.gif" alt=":|" style="display: inline; vertical-align: bottom;" class="emoticon" /></p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/60-Wesnoth-Evolution-0.1.html" rel="alternate" title="Wesnoth Evolution: 0.1" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-04-12T17:00:47Z</published>
        <updated>2010-04-16T02:51:19Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=60</wfw:comment>
    
        <slash:comments>8</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=60</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
    
        <id>http://shadowm.rewound.net/blog/archives/60-guid.html</id>
        <title type="html">Wesnoth Evolution: 0.1</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><a href="http://www.wesnoth.org/">Battle for Wesnoth</a> has been around for some years already and its ever increasing content and artwork quality has attracted many code developers, sprite and portrait artists and musicians over time. I started playing Wesnoth on version 0.9.6 which was distributed with the <a href="http://www.opensuse.org/">SUSE Linux 10.0</a> operating system; I later switched to version 1.0.2 and closely followed the 1.1 release cycle.</p>

<p>Now that version 1.8 has been released and approx. 7 years have passed since the very first release, I felt curiosity to see exactly what has changed and what hasn't changed since the very first Wesnoth version published by David White (a.k.a. Sirp) that isn't even available in the <a href="https://sourceforge.net/projects/wesnoth/files/">downloads page at SourceForge.net</a>. Yep, that's right, this is a review of <strong>Wesnoth 0.1</strong> against current versions of Wesnoth such as 1.8 and 1.6, or even intermediate modern versions such as 1.0.</p>

<p>For historical reference I'm using both an actual Wesnoth 0.1 build for Windows I prepared using the Mingw32 cross-compiler environment for Linux (running on WINE), and the Battle for Wesnoth Project's SVN trunk <a href="http://svn.gna.org/viewcvs/*checkout*/wesnoth/trunk/changelog">changelog</a>, which starts at version 0.2.1. The project's combined CVS-SVN history, on the other hand, starts on September 15th 2003, 15 days before the first CVS release tag, version 0.4.8. The first version announced since the beginning of the Wesnoth forums (which predate Wesnoth.org itself) is <a href="http://forum.wesnoth.org/viewtopic.php?f=2&amp;t=16">0.3.7</a>.</p>
 <br /><a href="http://shadowm.rewound.net/blog/archives/60-Wesnoth-Evolution-0.1.html#extended">Continue reading "Wesnoth Evolution: 0.1"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/2-Half-assed-commits.html" rel="alternate" title="Half-assed commits" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2008-09-11T23:58:00Z</published>
        <updated>2010-04-14T15:17:27Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=2</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=2</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/2-guid.html</id>
        <title type="html">Half-assed commits</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>During my work on the <a href="https://sourceforge.net/projects/wesnoth-umc-dev/">Coordinated Wesnoth User-Made Content Development Project</a> (which we dub "wesnoth-umc-dev" for short), I came up with an interesting concept related to Subversion's standard workflow. <b>Half-assed commits</b> are revision commits to the Subversion repository that are not completed due to the subversion client (or server!) process dying unexpectedly, usually due to anything but a SIGTERM.</p>

<p>The obvious symptom of a half-assed commit in your local file system is a bunch of 'L' flags in the <em>'svn st'</em> command output. These can be removed with svn cleanup. So, most half-assed commits are harmless to you. However, according to the (holy) <a href="http://svn-book.org">Subversion Book</a>, it may leave garbage, half-assed transactions in the repository. These are not viewable to anyone but the repository admin of course, and should not harm anyone provided the filesystem on which it resides does not run out of space.</p>

<p><img src="/dorset3/img/smilies/neutral.gif" alt=":|" style="display: inline; vertical-align: bottom;" class="emoticon" /> Last afternoon I ran into a more harmful and painful sort of half-assed commit. I renamed some files in my working copy, invoked <em>'svn ci'</em>, and my crappy Wireless LAN connection burped just when it was about to update the working copy with the changes introduced to the repository:</p>

<pre>Transmitting file data ...svn: Commit failed (details follow):
svn: MERGE request failed on '/svnroot/wesnoth-umc-dev/trunk/Invasion_from_the_Unknown'
svn: MERGE of '/svnroot/wesnoth-umc-dev/trunk/Invasion_from_the_Unknown': Could not read status line: Connection reset by peer
(https://wesnoth-umc-dev.svn.sourceforge.net)
svn: Your commit message was left in a temporary file:
svn:    '/home/shadowm/src/wesnoth-umc-dev/trunk/Invasion_from_the_Unknown/svn-commit.2.tmp'</pre>

<p> Unsurprisingly, I was left with my files in an awful state that caused local conflicts with the repository. That is, next <em>'svn update'</em> failed because the commit above was successful for the <em>server</em>, leaving the renamed files in the repository. SVN just didn't like that at my end, because I had those renamed files already in the working copy as result of the <em>'svn move'</em> result I just (half-ass) commited.</p>

<p>Thanks for nothing SVN! Seriously, the protocol should have the server request for a final confirmation from the client to check-in the transaction <em>after</em> its changes have been merged in the client's working copy. Or the inverse: have the client react in a smarter fashion to these situations that people like me often run into. People like me being people who can't afford their own Internet. <img src="/dorset3/img/smilies/pensive.gif" alt=":/" style="display: inline; vertical-align: bottom;" class="emoticon" /> </p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/5-Shadow-Master-blogs.html" rel="alternate" title="Shadow Master blogs" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2009-03-03T01:24:00Z</published>
        <updated>2010-04-14T15:17:12Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=5</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=5</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/5-guid.html</id>
        <title type="html">Shadow Master blogs</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Lately I have had no time to write new blog entries, as I've have been very busy fixing and preparing stuff in Wesnoth's mainline for 1.6. Similarly, my Wesnoth add-on Invasion from the Unknown experienced a new rebirth in December 2008 when I finally got around to make it work properly with Wesnoth 1.5.x <strong>and</strong> fix some quirks in the mainline game engine which I noticed in the process. <img src="/dorset3/img/smilies/smile.gif" alt=":)" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>

<p>I wouldn't have made it without the support of... heck, too many people actually.</p>

<p>My biggest thanks go to the now MIA Wesnoth Developer and website Administrator, Cycholka/Mist. He made the initial port of IftU for Wesnoth 1.5.0 or 1.5.1 on May 2008, with some help from wmllint and manual fixing, and encouraged me to continue fixing and improving the campaign in this new development branch. He demonstrated great interest in seeing it eventually mainlined. It's a shame that he disappeared shortly after the Grand Wesnoth.org Hard-Disk Crash of July 2008 - not without restoring and repairing the severely damaged website, of course.</p>

<p>Mica and Espreon are some of the youngest members of the community, but without their enthusiasm and encouragement, even IftU for 1.4.x would have been abandoned. Actually, I'd have abandoned even greater things than IftU or Wesnoth without their support. It's also a shame that Mica disappeared last December.</p>

<p>ESR's encouragement and help with the text revisions helped me get around to start improving IftU from Cycholka's port, adding stuff not seen before in the 1.4.x versions. However, ESR went missing for a time, and I got distracted with mainline development. It was not until Patterner, Elvish Pillager, and Loonycyborg started playtesting the half-broken, non-released IftU for 1.5.x around August, that I didn't realize that it was worth the effort to salvage the campaign.</p>

<p>AI0867 removed most of the pressure I had during that time by taking over my role as the lead administrator of Wesnoth-UMC-Dev. He also contributed some critical bugfixes to IftU's WML and English text strings. Kitty's work on the original portraits since October made me take a new route in RL, and at the same time, summon all the possible manpower to polish IftU, fix most (if not all) regressions from 1.4, overhaul some of my original sprites, and get Invasion from the Unknown version 1.10.1a released on Christmas Eve, 11:30 PM CLT (GMT-04:00 + DST) - not without releasing two interim test releases: 1.10.0 and 1.10.1. After releasing IftU, I got my Christmas present from my parents: a new laptop. Just what I needed!</p>

<p>It was a bumpy path indeed, and 1.10.0 was actually scheduled to be released on November 10th 2008. That didn't happen due to the extreme bugginess of the mainline engine at that moment. At the end, <a href="http://www.wesnoth.org/forum/viewtopic.php?p=327707#p327707">the campaign's definitive release announcement</a> on the Wesnoth.org forums is probably the longest one I have written for a long time.</p>

<p>At the moment, mainline is in good shape for 1.6 (with the first Release Candidate published today) and my attention is directed to IftU yet again. Although since the Xmas 2008 release there has been some development in it (1.10.2, 1.10.3, 1.10.4, 1.10.5, 1.11.0 and 1.11.1 have been released, not counting today's 1.11.1.1), there's still lots of things to improve. Recently Solsword brought up some continuity issues in IftU scenarios 3, 8x and 10, which I have addressed, and contributed some text revisions. Thespaceinvader contributed new graphics and code for the Water Serpent unit, and Kitty contributed portraits for a major enemy boss, portraits which certainly exceeded my expectations.</p>

<p>I'm looking forward to see how Kitty will depict the last major enemy boss in IftU, the Shadow Master himself (oh noes!). I also look forward to animate the Elyssa and Shadow Master sprites, and overhaul part of the Shaxthal unit tree (and add animations while at it).</p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/6-Time-Traveler.html" rel="alternate" title="Time Traveler" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2009-03-03T01:24:00Z</published>
        <updated>2010-04-14T15:16:57Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=6</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=6</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/6-guid.html</id>
        <title type="html">Time Traveler</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>I just stumbled upon this interesting commit message in a git-svn tree I made out of /&lt;trunk|branches/*&gt;/Invasion_from_the_Unknown at Wesnoth-UMC-Dev:</p>

<pre>commit def6408717c794e7ac23702978c313e68ed127b4
Author: shikadilord &lt;shikadilord@87cc232e-6748-0410-ac04-a3fa75566414&gt;
Date:   Wed Jan 14 02:31:05 2009 +0000

    Thanks to my awesome time-traveling powers, there are macros in mainline since 1.3.10 or so, wrapping up the [debug_message] tag so I do not need to worry about 1.5.6-1.5.8 compatibility with IftU after the [debug_message] deprecation in 1.5.7+svn.
    
    
    git-svn-id: https://wesnoth-umc-dev.svn.sourceforge.net/svnroot/wesnoth-umc-dev/trunk/Invasion_from_the_Unknown@3299 87cc232e-6748-0410-ac04-a3fa75566414</pre>

Apparently that is not the only thing my other self from the future did. I found the following in a #wesnoth-umc-dev log of 2009-01-13:

<pre class="ircquote">23:27 &lt;Shadow_Master&gt; hey, this is nice!
23:27 &lt;Shadow_Master&gt; look, in the future I was gonna have so many problems with the deprecation of [debug_message] and  my intention to keep IftU compatible with 1.5.6...
23:28 &lt;Shadow_Master&gt; that I sent myself to the past to put some macros into mainline in 1.3.x (Yes, 1.3.x)
23:28  * Shadow_Master now wonders if having done that in 1.3.x will break the space-time continuum</pre>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/11-On-Invasion-from-the-Unknown-and-After-the-Storm.html" rel="alternate" title="On Invasion from the Unknown and After the Storm" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2009-10-18T02:46:00Z</published>
        <updated>2010-04-14T15:16:41Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=11</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=11</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/11-guid.html</id>
        <title type="html">On Invasion from the Unknown and After the Storm</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p><small><em>(... or why I am not a good father, explained in a ridiculously long article.)</em></small></p>

<p>As explained in detail in the <a href="/projects/">recently overhauled projects section</a>, <a href="/projects/wesnoth-umc.php#iftu">Invasion from the Unknown</a> and <a href="/projects/wesnoth-umc.php#ats">After the Storm</a> are two campaigns I am maintaining as external add-ons for the <a href="http://www.wesnoth.org/">Battle for Wesnoth Project</a> with the power of the <a href="http://wesnoth-umc-dev.sourceforge.net">Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev</a> repository. Both are sequels to the mainline <em>Under the Burning Suns</em> campaign, and, in a way, to <em>Descent into Darkness</em> and the infamous <em>The Dark Hordes</em> as well.</p>
 <br /><a href="http://shadowm.rewound.net/blog/archives/11-On-Invasion-from-the-Unknown-and-After-the-Storm.html#extended">Continue reading "On Invasion from the Unknown and After the Storm"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/17-The-smallest-bugs-are-the-nastiest.html" rel="alternate" title="The smallest bugs are the nastiest" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2009-11-13T17:52:02Z</published>
        <updated>2010-04-14T15:16:18Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=17</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=17</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/17-guid.html</id>
        <title type="html">The smallest bugs are the nastiest</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Preparing the release of a fixed demo revision for my Wesnoth add-on <a href="/projects/wesnoth-umc.php#ats" target="_blank">After the Storm</a>, which is the immediate sequel to <a href="/projects/wesnoth-umc.php#iftu" target="_blank">Invasion from the Unknown</a>, I ran into a rather nasty bug in one of the scripts I made for easy creation of .tar.bz2 packages for the <a href="http://wesnoth-umc-dev.sourceforge.net" target="_blank">Wesnoth-UMC-Dev Project</a>, <tt>build-external-archive.sh</tt>.</p>

<p>The script in question is one of my earliest experiments with bash scripting, and as such suffers from the quirks of a novice programmer trying to get work done fast. It's some sort of crapload of hacks that just ‘‘works’’, somehow. I have an odd habit of tempting fate and using my earliest programming experiments in <em>production</em> environments — and this includes <a href="/projects/shikadibot.php" target="_blank">Shikadibot</a> and <em>Soradoc</em>, which is the PHP-based layout code generator used both <em>here</em> and at the Wesnoth-UMC-Dev website.</p>

<p>The only reasons for not killing it are the following features offered to the selected few who know how to use it:</p>

<ul>
    <li>It reliably produces a .tar.bz2 archive for add-on distributions on regular websites — including SF.net — provided a few simple arguments.</li>
    <li>It roughly* conforms to the Wesnoth <a href="http://wiki.wesnoth.org/IgnWML" target="_blank">.ign file syntax</a>, although it doesn't provide the same defaults as the game engine.</li>
    <li>It knows how to cleanly handle <abbr title="Subversion">SVN</abbr> check-outs.</li>
    <li>There's built-in, automatic support for <a href="" target="_blank">XDelta</a> patch generation, provided the <tt>xdelta</tt> tool is installed and in PATH.</li>
    <li>Provides MD5 and SHA1 digests of produced packages and writes them to .MD5 and .SHA1 files for distribution.</li>
    <li>No suitable replacement has been provided yet.</li>
</ul>

<p>* <small>Espreon pointed out on the #wesnoth-umc-dev channel at chat.freenode.net, that <tt>build-external-archive.sh</tt> may match .ign patterns only in the add-on's root directory, and not in its subdirectories. This, of course, a bug.</small></p>

<p><tt>build-external-archive.sh</tt> has got a few inoffensive bugs in the past, perhaps the greatest of which was a set of dependencies upon Linux distribution-specific conventions (why, hello there, openSUSE!). However, yesterday I hit the nastiest, yet unseen bug.</p>

<p>Since I usually use actual SVN tag check-outs for creating the packages, or get someone else to do it for me, I had not checked the interactions of this script with an input directory that is actually a <em>symbolic link</em> pointing to a directory containing files or paths matched by a <tt>_server.ign</tt> file. This tool needs to copy the input directory to a separate temporary directory in order to physically remove the files (actually copies) that match the aforementioned .ign patterns, and then proceed to run <tt>tar</tt> to wrap the modified temp directory into a nifty bzip2 tarball.</p>

<p>And how was it copying the input directory to /tmp when the input is not a SVN check-out? Without going into much detail, it is similar to this:</p>

<pre>cp -a ${input_directory} /tmp/${output_file.fakeroot}.dir/${addon_name}</pre>

<p>The <code>-a</code> switch to GNU coreutils' <tt>cp</tt> is equivalent to <code>-dpR</code>, which roughly means ‘‘be recursive, preserve timestamps, access masks and <strong>never dereference symlinks and preserve them</strong>!’’ So you can start to imagine why this would become a <em>huge</em> problem when the <tt>$input_directory</tt> <em>is</em> a symlink.</p>

<p>Such a small overlooked mistake ended up destroying the <tt>git-svn</tt> tree contained within my add-on's directory, which was indeed specified as a symlink in <tt>~/.wesnoth-1.7/data/add-ons/After_the_Storm</tt> pointing to <tt>~/src/wesnoth-umc-dev/git/trunk/After_the_Storm</tt>. The symlink itself was copied to the temporary directory and the removal of unwanted files took place on the original location instead of a temporary tree. This gave me that disturbing feeling of having a bucket with cold water dropped on my head whenever I accidentally remove files I wasn't supposed to remove. Thankfully, I had committed all my changes to the upstream SVN repository and only had to regenerate a git-svn tree to continue working after making the release using a fallback SVN check-out.</p>

<p>The correct pseudo-code, forcing symlinks to be dereferenced and timestamps, file modes and ownerships to be preserved, is actually:</p>

<pre>cp -LRp ${input_directory} /tmp/${output_file.fakeroot}.dir/${addon_name}</pre>

<p>As you can see, it's perfectly easy to screw up your own files with a technically small mistake in a command line. However, in this case some idiot (me!) didn't read the manual correctly and didn't notice that the <code>-a</code> switch had additional effects, and that's a big logical mistake. Fortunately, only Espreon, AI0867 and I rely on this script, as far as I know.</p>

<p>This tool is going to be eventually replaced by <tt>umcdist</tt> (codenamed <em>Blackwater</em>), which is written in manageable Perl, provides the same functionality plus archive signing with OpenPGP, and would be done in a few days if I actually concentrated on it — don't take me wrong, it exists and there's code written for it, but it still needs to be completed. Whereas <tt>build-external-archive.sh</tt> is a deliberately undocumented <acronym title="Invasion from the Unknown">IftU</acronym>-specific tool that was later inherited by the wesnoth-umc-dev project, <tt>umcdist</tt> is targeted to the project as a whole, it will have proper online and built-in documentation and it'll be readable by more than one person to allow easier bug-fixing and maintenance.</p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/31-Is-it-over-already.html" rel="alternate" title="Is it over already?" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-01-01T23:59:59Z</published>
        <updated>2010-04-14T15:15:53Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=31</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=31</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/1-Hardware" label="Hardware" term="Hardware" />
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
            <category scheme="http://shadowm.rewound.net/blog/categories/4-phpBB" label="phpBB" term="phpBB" />
    
        <id>http://shadowm.rewound.net/blog/archives/31-guid.html</id>
        <title type="html">Is it over already?</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Finally, it's January! The New Year celebrations are mostly over and fading away, and people all around the world are going back to regular business and everything should be back to normal in a few days.</p>

<p>I used to be fond of the Christmas and New Year celebrations as a child as I could spend time with my family and eat delicious food. That is not the case anymore, because, even if I still live with my parents, there's no longer a sense of family here and we only want to throw sharp stuff at each other. There's not much enthusiasm by the end of the year anymore, and phrases such as “Merry Christmas” and “Happy New Year” (in Spanish, though) are truly unheard of in this house. Recent disagreements amongst us indicate that this is not going to be a good year for anyone. To add insult to injury, one of our cats died in a rather tragic and violent fashion on December 22th — it's a tradition here that one or more pets must always die in December. While we have many of them, the first ones to die are those whom we are most attached to.</p>

<p>To mark the actual start of 2010 (as far as the Gregorian calendar is involved, of course), there was a black-out on the area about 6 minutes 7 seconds past midnight, which left us with no Internet or tap water until around 1:50 AM. What a great way to start the first day of the year.</p>

<p>(In case there's doubt — I assure you, I'm not making any of this up.)</p>

<p>But there's still some hope at the moment. Some days before Xmas, my creativity returned from its long, chaotic journey and my <a href="http://www.wesnoth.org/">Wesnoth</a> add-on, <a href="/projects/wesnoth-umc.php#ats"><em>After the Storm</em></a> (sequel to <a href="/projects/wesnoth-umc.php#iftu"><em>Invasion from the Unknown</em></a> has seen steady progress and two new releases were published in less than two weeks. Keep in mind that this add-on had not seen any public releases for almost a year.</p>

<p>After the last released version of AtS (0.2.1) including 5 of 12 planned scenarios in Episode I, there has been more progress in the <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev</a> repository. Just yesterday, I finished the two-part cutscene that is the sixth scenario of Episode I, one of the most important points of the plot's development, in which two forest elves finally make contact with the desert/Quenoth elves.</p>

<p>I won't be able to release AtS 0.2.2 or 0.3.0 until scenario 7 and the next cutscene (appropriately named “Resolutions”) are finished, since I'd be teasing the players otherwise. However, those who are really interested on it can always check AtS out from the repository's trunk into their <tt>&lt;wesnoth preferences dir&gt;/data/add-ons</tt> dir and play using the latest development version of Wesnoth:</p>

<pre>svn co https://wesnoth-umc-dev.svn.sourceforge.net/svnroot/wesnoth-umc-dev/trunk/After_the_Storm</pre>

<p>It's really exciting to work with several plot elements from quartex's <em>Under the Burning Suns</em> in new, creative manners — kind of like Fanfic production taken to a new level using the power of the GNU General Public License (version 2 or later!). Nevertheless, I am fairly sure he deliberately left much details unresolved in the original campaign, and that he'd fry us (Espreon, AI0867 and me) alive if he found out what we are doing with his story.</p>

<p>One week before Xmas, the Wesnoth.org forums saw another upgrade on which Turuk and I worked hard and quickly to improve forum usability by not only upgrading the codebase to <a href="http://www.phpbb.com">phpBB</a> 3.0.6, but also tweaking the templates, adding modifications and a couple of new forum styles to take advantage of the new features implemented by the phpBB devs in this iteration of their software. The main points were highlighted in <a href="http://forums.wesnoth.org/viewtopic.php?f=17&amp;t=28174">this forum post</a> (originally a Global Announcement).</p>

<p>This year should also bring us a new stable series (1.8<span></span>) of the Battle for Wesnoth game itself. There are currently some problems delaying the first Release Candidate and getting us flooded with generic beta releases, but the developers in charge of them will (hopefully!) find a solution so we can get 1.8 released and trunk “thawed” soon, to work on new features and allow new code contributors to join the project. As for me, I can't wait for the new stable series — development series players seem to be scarce and the new versions of IftU and AtS are receiving little feedback on the forums because of this! I suppose Multiplayer content authors are similarly eager to get more fresh meat to play their add-ons.</p>

<p>I also recently talked about how <a href="http://shadowm.rewound.net/blog/archives/30-ATI-mayhem,-Part-VII.html">I can finally suspend my laptop to RAM</a> using Linux, and <a href="http://shadowm.rewound.net/blog/archives/26-ATI-mayhem,-Part-V.html">run some basic OpenGL-based software</a> without crashing or destroying anything. That's something I didn't expect to be able to do in the near future, so the Mesa, libdrm and X.org <tt>radeon</tt> driver developers have my thanks for improving the Linux experience of those unfortunate enough to own onboard ATI graphics controllers!</p>

<p>In summary, as usual, a new year brings good and bad news. I guess it's up to us to take what's good and fix what's wrong. So, anyway (although I guess it's pretty much unnecessary at this point): happy New Year and have fun!</p>

<p style="text-align:right"><br /><br />
(The Abridged version: let's get this party started already and kill some spambots! <strong>GAAAA!</strong>)</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/35-Sexy-and-poisonous.html" rel="alternate" title="Sexy and poisonous" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-01-12T02:00:08Z</published>
        <updated>2010-04-14T15:15:16Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=35</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=35</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/9-Web-design" label="Web design" term="Web design" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/35-guid.html</id>
        <title type="html">Sexy and poisonous</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p class='stinger'>(No, not <a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/TheVamp">that one.</a>)</p>

<p>There are many content management systems out but all of them seem to require some sort of database server and occasionally sacrifice flexibility in favor of ease of use.</p>

<p>This is why neither this site or <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev</a>'s use one of those nifty software packages although they still use PHP. The latter website uses a bunch of ugly code codenamed “Soradoc” which has the actual XHTML layout embedded on it; the CSS stylesheet is also codenamed Soradoc and it's derived from “Glamdrol”, the <a href="http://www.wesnoth.org/">Wesnoth.org</a> wiki skin by Ettin; and “Dorset”, which is Soradoc's immediate ancestor, used on this very personal website — which in turn uses PHP code derived from the current incarnation of “Soradoc”.</p>

<p>Enter codename “Poison Ivy”, which is basically the same thing as Soradoc/Dorset, except written from scratch, much <em>cleaner</em> and more flexible; in particular, the XHTML layout and the site configuration are no longer part of the engine's source code which will allow me to share that among both websites more easily. It also introduces seamless support for document compression, which may be useful for my personal website.</p>

<p>Ivy is mostly finished, but I'm now busy reworking the Wesnoth-UMC-Dev site's design under a secret project, codename “Kalari”. Maybe once I'm finished with that, my next web project will be bringing <tt>umcreg</tt> (codename “Thoria”) to life.</p>

<p class='stinger'>(Okay, it's not a secret anymore. Dammit.)</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/36-Kalari-at-last.html" rel="alternate" title="Kalari at last" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-01-12T23:43:58Z</published>
        <updated>2010-04-14T15:15:06Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=36</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=36</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/7-Miscellaneous" label="Miscellaneous" term="Miscellaneous" />
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/9-Web-design" label="Web design" term="Web design" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/36-guid.html</id>
        <title type="html">Kalari at last</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>It took me much less time than I expected to put the new layout of the Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev website together. <a href="http://wesnoth-umc-dev.ai0867.net/">Observe</a>.</p>

<p>Okay, that's basically because most of the design was already made long time ago, in the form of the site's earlier incarnation, codenamed “Soradoc”, which looked rather busy and useless with the sidebar and other design elements. The new design, “Kalari”, removes the sidebar, clears the site banner a bit, and blends the site with <a href="http://www.wesnoth.org/">Wesnoth.org</a> as far as appearance is concerned. It's not the same design, but it's similar — that should be a good thing considering the purpose of Wesnoth-UMC-Dev.</p>

<p>That site also had a <a href="http://blosxom.sourceforge.net/">Blosxom</a>-based blog, but I removed it since nobody was making actual use of the space.</p>

<p>The greatest thing about all this is that most of the PHP, “<a href="http://shadowm.rewound.net/blog/archives/35-Sexy-and-poisonous.html">Poison Ivy</a>” was finished in 1 night, while the rest took me just a few additional hours. Now that Poison Ivy is completed, I can reuse its code for the next incarnation of <a href="/index.php">this very website</a> and <a href="/blog">blog</a>.</p>

<p>It's all for teaching some web design and programming basics to myself, really.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/40-Robots!.html" rel="alternate" title="Robots!" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-01-22T00:38:18Z</published>
        <updated>2010-04-14T15:14:48Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=40</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=40</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/40-guid.html</id>
        <title type="html">Robots!</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>It's year 2010, and, <em>despite the promises</em>, there are no flying cars, no jetpacks, people still die, there's no interplanetary travel, no apocalyptic event triggered by humans made Antarctica disappear on 2000, and most importantly, we are still awaiting the day we can have our own robot pals.</p>

<p>But here's <acronym title="Internet Relay Chat">IRC</acronym> to solve that! No, really! What do you mean, it's not awesome!?</p>

<p>Okay, obscure references aside, the <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev</a> started as a fairly casual repository set up by me and Eric S. Raymond for managing a few add-ons that were, at that time (March 2008) candidates for being mainlined at some point of the future: <cite>Invasion from the Unknown</cite>, <cite>Legend of Wesmere</cite> and <cite>Delfador's Memoirs</cite>. Guess which of them has <strong>not</strong> made it to Wesnoth's mainline project yet.</p>

<p>The way we worked before was fairly different to what we do nowadays. Some time before AI0867 joined me in this quest, I decided to open the “UMC Sandbox” for projects not intended/expected to be merged into mainline. This had some unexpected success by the end of the year and we got a fair amount of add-ons to manage. As I write this, I'm wondering what the hell we are hosting anymore — I lost track!</p>

<p>At the beginning we also had a wiki page at Wesnoth.org with the list of projects and authors. AI0867 and I tried to keep it up to date at all times, but we inevitably forgot its existence after a while. The fact that Wesnoth.org crashed around July 2008 and stayed dead for nearly one month, <strong>and</strong> was resurrected from 2 months-old backups didn't help. When I remembered the page, I decided to wipe the rusty listings out; the only thing that survived was the admin list, which is now happily hosted by AI0867 on <a href="http://wesnoth-umc-dev.sourceforge.net/crew.php">our project's website</a>.</p>

<p>But it'd benefit everyone if we didn't need to look at SVN directory listings or history to check what add-ons we host, or who are in charge of them. To solve this problem, two new services are born: the <strong>Statistics</strong> service (<tt>umcstat</tt>, codename “Listra”) and the <strong>Registry</strong> system (<tt>umcreg</tt>, codename “Thoria”). I've been asked about their purposes and goals a few times lately, mainly because <tt>umcreg</tt> is <em>finally reaching completion</em>, so here it is; a thorough description of our new pals.</p>
 <br /><a href="http://shadowm.rewound.net/blog/archives/40-Robots!.html#extended">Continue reading "Robots!"</a>
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/41-Building-arcs.html" rel="alternate" title="Building arcs" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-01-27T15:03:43Z</published>
        <updated>2010-04-14T15:14:32Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=41</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=41</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/41-guid.html</id>
        <title type="html">Building arcs</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>After some weeks of inactivity, I have finally completed the first arc (not the first episode, though) of <a href="/projects/wesnoth-umc.php#ats">After the Storm</a> in the <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-UMC-Dev</a> SVN repository, comprising 7 scenarios out of planned 11; this means that a 0.3.0 release is coming soon. It was about time!</p>

<p>With this new arc completed, I have introduced new background story elements that could be considered controversial if any mainline purist is actually paying attention to the campaign — that's okay, I never intended IftU or any sequels to be mainlined. I still struggle to keep everything as fuzzy as possible to give a certain degree of flexibility to any content authors who decide to take what is said in IftU and AtS as “canon”. It's harder than it sounds, particularly because it must still be clear enough to allow the plot to progress; so I cannot just throw a bunch of nonsense into the campaign and say “hey, look at this, this is our vague excuse for this pathetic plotline!”.</p>

<p>Now that the characters have a decidedly vague excuse for the plot of the next arc, I face a problem that I knew I'd have to handle sooner or later: artwork.</p>

<p>I am not a good pixel artist, but I don't have any loyal slav- pixel artist that could help me either. And even if I could get one, I'm not completely sure I could describe the concepts I have in mind in plain words to tell them what unit sprites I require. There's also the spoileriffic factor; there's a reason that I removed the original (clumsy) storyboard from the SVN repository and departed from the original plans, most notably by removing a main character and introducing two new sidekicks instead. So, it's up to me to create any pixel art needed to make the campaign work; baseframes are enough for this purpose, although I still wish IftU and AtS' original units had animations.</p>

<p>At least I don't need to write a game engine from scratch too, thanks to Wesnoth's scripting flexibility.</p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/42-umcreg.html" rel="alternate" title="umcreg" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-01-30T19:54:40Z</published>
        <updated>2010-04-14T15:14:06Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=42</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=42</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/9-Web-design" label="Web design" term="Web design" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/42-guid.html</id>
        <title type="html">umcreg</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>At last, <tt>umcreg</tt>, <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev's</a> Registry Service, is finished, deployed and <a href="http://forums.wesnoth.org/viewtopic.php?p=406537#p406537">announced</a> in the forums, thus completing the first part of introducing the <a href="http://shadowm.rewound.net/blog/archives/40-Robots!.html">Registry</a> system to the project.</p>

<p>There were some changes from its original incarnation, but everything turned out pretty well for a bot written from scratch in approximately 6 days by a Perl fanatic with no knowledge of object-oriented Perl — I actually learned some object-oriented Perl while at this and I feel like I can do anything with it now. <img src="/dorset3/img/smilies/biggrin.gif" alt=":D" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>

<p>I was in a hurry to get this done right before <a href="http://freenode.net/">freenode</a> deployed <a href="http://blog.freenode.net/2010/01/migration-to-new-ircd/">ircd-seven</a> today (yays!), for no particular reason; this resulted in a security feature not working with hyperion-ircd until I introduced a quickie hack that I'll be retiring later today.</p>

<p>We are using a private git repository for managing the source code, but since I wrote it with an open-source licensing model in mind as usual, here's <tt>umcreg</tt> version 0.1.1 for the curious, released under the terms of the GNU GPL version 3.</p>

<ul>
  <li><a href="/src/umcreg-0.1.1.tar.gz">umcreg 0.1.1</a> (gzip tarball, 35.7 KiB; MD5 sum: <tt>7877c82082d42c45d45f68647c223459</tt>)</li>
</ul>

<p>I have already registered our current members using some basic, known information about them — even including their join date. Old projects' registration will be a little slow as I need to research the current structure of the repository, of which I lost track a year ago, and retrieve original timestamps. The registry's web interface, provided by the <tt>umcreg::Web</tt> and <tt>Thoria::Web</tt> packages, can be found <a href="http://wesnoth-umc-dev.sourceforge.net/umcreg/">here</a>.</p>

<p><tt>umcreg</tt> is already working at the project's admin channel on freenode too. It only obeys the project staff's orders, though, so there's no point in trying to send messages to it.</p>

<p>The next step in implementing the Registry model is writing the Statistics service, codenamed “Listra”, and most likely going to be named <tt>umcstat</tt>. That will definitively take much longer than <tt>umcreg</tt>'s development. Meanwhile, Espreon is trying to convince me to take care of <tt>umcdist</tt> (codename “Blackmore”) first.</p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/43-Throwaway-code.html" rel="alternate" title="Throwaway code" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-02-09T02:03:09Z</published>
        <updated>2010-04-14T15:13:53Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=43</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=43</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/6-Personal" label="Personal" term="Personal" />
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/43-guid.html</id>
        <title type="html">Throwaway code</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>It has become increasingly common for me to come up with a program for an amazing task one day, to rewrite it the next day.</p>

<p><tt>umcdist</tt>, the Wesnoth-UMC-Dev Distribution Tool, has been in development hell for a year mostly for this reason; the other reason is that it seems like it will perform worse than <tt>build-external-archive.sh</tt> a.k.a. “Scrappy” due to an excessive usage of Perl's <code>system</code> function. I cannot make up my mind and choose between performance and maintainability; Espreon knows that <tt>build-external-archive.sh</tt> is broken, but I can't be bothered to try to understand that <span class="strike">awful piece of Bash</span> <strong>unholy abomination</strong> again to fix it.</p>

<p>Meanwhile, <tt>umcstat</tt> (Wesnoth-UMC-Dev Statistics Service) is still a work in progress, but with more emphasis in <em>progress</em>; there's actual code written already, and I've been using <a href="http://freenode.net/">freenode's</a> <a href="http://dev.freenode.net/eir">Eir</a> bot framework to test it.</p>

<p>While Eir could possibly be a nice way to get rid of <tt>umcreg</tt>'s <tt>Net::IRC</tt> dependency and code, it's actually a C++ program that can be compiled only with GCC 4.4 at minimum, due to at least one C++0x feature used throughout the code: <tt>auto</tt>. The target machine runs Debian lenny, unlike my laptop (Squeeze), and therefore doesn't have GCC 4.4!</p>

<p>Instead of sticking with Eir, I'm refactoring <tt>umcreg</tt>'s IRC code into a custom Perl-only framework, <tt>umcbotd</tt>, and <span class="strike">making creative use of <code>eval</code></span> writing an abomination code-named “Naia”, which I'm rewriting again because the first version I wrote, which worked, was very badly designed and ugly. I know it's a problem when I have three classes or modules all depending upon each other's <em>internals</em>.</p>

<p>The goal of <tt>umcbotd</tt>/<tt>Naia</tt> is producing a <tt>Net::IRC</tt>-based abstraction layer for our bots that treats them as “services” with multiple “modules” (not in the Perl sense, though) that can be easily inserted and removed from the system by adding/removing their files. <tt>umcreg</tt> already runs with a prototype implementation of this mechanism, but it needs to be generalized further before it can be usable with <tt>Naia</tt>.</p>

<p>Writing our bots could be this simple, if <tt>Naia</tt> gets completed:</p>

<pre>#!/bin/true
CO_SERVICE_COMPONENT('umcreg');

sub ctcp_version_reply () { "Wesnoth-UMC-Dev Registry Service, using " . Naia::version_string() }

sub eh_ctcp_version
{
    my ($self, $event) = @_;
    $self->ctcp_reply($event->nick, 'VERSION ' . ctcp_version_reply());
}

# ...

my $bot = Naia::get_bot('umcreg');
my %eh = (
    'cversion'      => \&amp;eh_ctcp_version,
    'msg'           => \&amp;eh_msg_private,
    '330'           => \&amp;eh_whoisloggedin,
    '318'           => \&amp;eh_endofwhois,
    '331'           => \&amp;eh_notopic,
    '332'           => \&amp;eh_topic,
    '403'           => \&amp;eh_nosuchchannel,
);

$bot->connect();
$bot->register_event_handlers(%eh);
</pre>

<p>And their modules would be like this, more or less the same as <tt>umcreg</tt>'s modules already are:</p>

<pre>#!/bin/true
# token, subroutine, privilege level (A: admin, H: half-admin, U: user)
CO_MODULE('RAW', \&amp;co_raw, 'A');

sub co_raw
{
    my ($parent, $nick, $hostmask, $svaname) = (shift, shift, shift, shift);

    if(!@_) {
        $parent->notice($nick, "Not enough arguments for \002RAW\002.");
        return;
    }

    $parent->sl(join(' ', @_));

    broadcast_to_log("RAW [$hostmask]");
}
</pre>

<p>... And of course it would still involve lots of ugly stuff under the hood (<code>eval</code> magic), but if done right I shouldn't have to touch it whenever I wanted to add or remove a feature from any of our two services.</p>
 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/44-Rewriting-the-past,-and-the-woes-of-SVN.html" rel="alternate" title="Rewriting the past, and the woes of SVN" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-02-10T20:50:21Z</published>
        <updated>2010-04-14T15:13:23Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=44</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=44</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/44-guid.html</id>
        <title type="html">Rewriting the past, and the woes of SVN</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Long ago, I wrote a little Bash script — <tt>set-properties</tt> — for the Wesnoth-<acronym title="User Made Content">UMC</acronym>-Dev project, to ensure the correctness of <abbr title="Subversion, a version control system">SVN</abbr> properties such as <tt>svn:keywords</tt> and <tt>svn:executable</tt> on files. It was pretty simple:</p>

<pre>#! /bin/sh

# Set properties on PNG files
for f in $(find -iname *.png); do
    svn propdel svn:executable $f
    svn propset svn:mime-type image/png $f
done

# Set properties on Ogg files
for f in $(find -iname *.ogg); do
    svn propdel svn:executable $f
    svn propset svn:mime-type audio/x-vorbis
done

# Set properties on PCM files
for f in $(find -iname *.wav); do
    svn propdel svn:executable $f
    svn propset svn:mime-type audio/x-wav
done

# Set properties on JPEG files
for f in $(find -iname *.jpg); do
    svn propdel svn:executable $f
    svn propset svn:mime-type image/jpeg $f
done
for f in $(find -iname *.jpe); do
    svn propdel svn:executable $f
    svn propset svn:mime-type image/jpeg $f
done
for f in $(find -iname *.jpeg); do
    svn propdel svn:executable $f
    svn propset svn:mime-type image/jpeg $f
done

# Set properties on CFG file
for f in $(find -iname *.cfg); do
    svn propdel svn:executable $f
done

# Set properties on scripts
for f in $(find -iname *.sh); do
    svn propset svn:executable '*' $f
done
for f in $(find -iname *.cmd); do
    svn propset svn:executable '*' $f
done
for f in $(find -iname *.bat); do
    svn propset svn:executable '*' $f
done
for f in $(find -iname *.py); do
    svn propset svn:executable '*' $f
done
</pre>

<p>Some time after I learned Perl with my work on <a href="/projects/shikadibot.php">Shikadibot 0314</a>, I rewrote that script in Perl to arrange the “ideal” property values in a neat table (hash), check current properties instead of blindly overwriting them in the working copy, and cover plenty of other file types. It also gained a blinking progress bar to display the search progress for some reason.</p>

<p>To have an idea of how known file types are defined in the source, let's take a look at these bits:</p>

<pre>#
# proptab:
#   extension => [svn:executable, svn:mime-type, svn:eol-style, svn:keywords]
#   properties set to the empty string '' (except svn:executable) are left unchanged;
#
my %proptab = (
    cfg     => [FALSE, '', 'native', ''],
    ign     => [FALSE, '', 'native', ''],
   "map"    => [FALSE, '', 'native', ''],
# [...]
    pl      => [TRUE,  '', 'native', 'Author Date Id Revision'],
# [...]
    gif     => [FALSE, 'image/gif', '', ''],
    png     => [FALSE, 'image/png', '', ''],
# [...]
    xcf     => [FALSE, '', '', ''],
# [...]
);
</pre>

<p>The table we have used since then (around Sept. 2008) has always contained more than 10 extensions with their minimum required property sets. As of this writing, it covers approximately 57 file types. Keep this on mind.</p>

<p>It would be <em>overkill</em> to fork-exec <tt>find</tt> processes to discover paths that could require SVN property changes, right? So, instead, I used <tt>find2perl</tt> to generate <tt>File::Find</tt> client code to embed it into <tt>set-properties</tt>. So far, so good. But how about running that code <code>(scalar keys %proptab)</code> times (e.g. number-of-extensions-times) anyway? Overkill?</p>

<p>No! It's plain stupid. But definitely less stupid than what you are about to read.</p>

<p>I apparently decided, for some reason, that any matching paths in each cycle should be added to a plain scalar (a text string to be exact) separating individual paths with <em>newlines</em>, of all things. Then, another cycle is performed at the end, <code>(scalar keys %proptab)</code> times again, <strong>to put each array of paths matching a certain extension</strong> into another <strong>hash</strong>, then iterating over the newly inserted hash element (array of paths) checking and fixing SVN properties <strong>in the same cycle</strong>.</p>

<p><strong>Very roughly</strong> summarized as the following pseudocode:</p>

<pre class="noframe">FOREACH extension FROM file_extensions
    FIND IN ./ AS file
        ; all while displaying a cute blinking bar!
        IF file MATCHES extension
            APPEND file TO file_list_string
        END IF
    END FIND
END FOREACH

FOREACH extension FROM file_extensions
    ; split 'file_list_string' every newline
    FOREACH path FROM (SPLIT /\n/ file_list_string)
        INSERT path IN file_index[extension]
    END FOREACH

    FOREACH path FROM file_index[extension]
        fix_properties( extension, path )
    END FOREACH
END FOREACH
</pre>

<p>Careful readers will quickly realize that something is horribly wrong with this pseudocode. I wish I was making it up. This algorithm has actually been in use by the Wesnoth-UMC-Dev <tt>set-properties</tt> script for <strong>one year and 4 months</strong>! I must have been on <strong>something</strong> when I wrote this shit. I've honestly <strong>never</strong> seen any program so awful as this in my life. Not even <tt>build-external-archive.sh</tt> (a.k.a. “Scrappy”) can compete with this abomination.</p>

<p>So, yesterday, I took a look at <tt>set-properties</tt> after noticing how much CPU time it ate working with very scarcely populated directories of the project — and I was blaming the usage of backticks (<code>`svn propset foo bar baz`</code> and such) as a possible cause of overhead. Then I slowly realized what I had written. There isn't any emoticon here for the expression in my face at that moment.</p>

<p>Thusly, <tt>set-properties</tt> got rewritten with a much cleaner and simpler algorithm:</p>

<pre class="noframe">FOREACH file FROM (FIND IN ./)
    ; no more useless cute blinking bar!
    FOREACH extension FROM file_extensions
        IF file MATCHES extension
            fix_properties( extension, path )
        END IF
    END FOREACH
END FOREACH
</pre>

<p>So yeah. <img src="/dorset3/img/smilies/sad.gif" alt=":(" style="display: inline; vertical-align: bottom;" class="emoticon" /></p>

<p><a href="http://tvtropes.org/pmwiki/pmwiki.php/Main/ButWaitTheresMore">But wait, there's more!</a> While <span class="strike">optimizing</span> replacing the script I also replaced <code>`svn foobar`</code> backtick code with invocations of <tt>libsvn</tt>, via the <tt>SVN::Client</tt> module. This worked very well at the end, but I discovered a few things in the process:</p>

<ul>
    <li>Those <tt>SVN::Client</tt> methods I used choke on non-absolute path specifications for some reason, causing an assertion failure in <tt>libsvn</tt>'s C back-end and terminating the execution of Perl and the script with a SIGABRT.</li>
    <li>Despite the documentation's claims for <tt>SVN::Client::url_from_path()</tt> returning <tt>undef</tt> if the specified path is not under version control, it actually causes the module to invoke <tt>die</tt> and get the client script terminated. Which means that I cannot even check if a file is versioned or not safely (e.g. without resorting to <tt>.svn/text-base/FileName.svn-base</tt> existence checks). What the hell?</li>
</ul>

<pre>$ set-properties
perl: /tmp/buildd/subversion-1.6.9dfsg/subversion/libsvn_subr/path.c:114: svn_path_join: Assertion `svn_path_is_canonical(base, pool)' failed.
Aborted
</pre>

<p>Turns out the solution is to wrap <tt>SVN::Client</tt> method calls in <tt>eval</tt> blocks and handle whatever crap SVN comes up with. Oh, and make sure all paths are absolute using <tt>Cwd::realpath</tt> so that <tt>libsvn</tt> doesn't hit an assertion failure killing us, <tt>eval</tt> or no <tt>eval</tt>. How nice.</p>

<pre># No point in working with unversioned files.
my $svn_ret = undef;
eval { $svn_ret = $svn->url_from_path($path) };
if($@) {
    # fucking libsvn dies if $path isn't under version control;
    # the documentation says it should return undef above instead!
    return;
}
</pre>

<p>With this, I have absolutely lost my faith in Subversion's excellence as a version control system not only as a normal user, but also as a programmer integrating it into my own client applications. And I know I lost my faith as a user after seeing <tt>svn</tt> sit for <strong>two days</strong> doing <em>fucking nothing</em> because the damned connection <strong>died after 1 minute of running time</strong> — and then <tt>svn</tt> spent the next days ignoring SIGTERMs all the time, no less. It's been like this for so many versions that I'm almost convinced it's intentional.</p>

<p>(Ah, that was relaxing. I should do this more often.)</p>

<p>Wesnoth-UMC-Dev has to continue using SVN because we have several add-on authors using Windows and the few alternatives for using <tt>git</tt> (I love <tt>git</tt>, I don't think I could try anything else at the moment) on Windows seem to be rather awkward to install and/or use for the average Nonc O'mputer Person. That's a pity. It's really a pity.</p>

<p>Finally, <tt>set-properties</tt> got renamed to <tt>umcpropfix</tt> for a change, to mark its rebirth after I solved the algorithmic mess above last night. It doesn't have a nifty codename like the rest, though, but the new <tt>umc</tt>-prefixed name is still something to be celebrated now that we are going to have <tt>umcdist</tt>, <tt>umcstat</tt>, <tt>umcreg</tt> and <tt>umcbotd</tt>. Yes, I know I'm crazy, thank you.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/48-Subversion-blows.html" rel="alternate" title="Subversion blows" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-03-01T02:28:26Z</published>
        <updated>2010-04-14T15:13:03Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=48</wfw:comment>
    
        <slash:comments>1</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=48</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/48-guid.html</id>
        <title type="html">Subversion blows</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>More than one year ago I commented on <a href="http://shadowm.rewound.net/blog/archives/2-Half-assed-commits.html">the consequences of interrupted commit transactions</a> with the <a href="http://en.wikipedia.org/wiki/Subversion_%28software%29">Subversion</a> version control system. Back then, SVN was the only VCS I was familiarized with, but nowadays I also have a basic grasp of <a href="http://en.wikipedia.org/wiki/Git_%28software%29">Git</a> for local and remote repository management.</p>

<p>The thing is, SVN is pretty simple and easy to learn for novice users — which is one of the reasons I haven't decided yet, as the founder admin of the <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-UMC-Dev</a> Project, to switch to Git. A distributed version control system such as Git or Mercurial are not “better” than SVN, just like Linux cannot be “better” than Windows — they are completely different models for both users and site admins, and switching your version control system isn't as easy as switching from KDE to GNOME as your desktop environment or buying a new printer, especially when you have lots of users and the model conversion isn't easily reversible.</p>

<p>But let's not forget that there's more to SVN, or any other revision tracking system than just the philosophy and the model behind. There is an <a href="http://subversion.apache.org/">official client</a> which ships in major Linux distributions such as Debian GNU/Linux, Ubuntu and openSUSE, and which also has shared library code used by third-party GUI front-ends such as kdesvn, or other SVN clients such as the <a href="http://www.kernel.org/pub/software/scm/git/docs/git-svn.html"><tt>git-svn</tt></a> infrastructure.</p>

<p>I have not seen the code, and I believe I do not want to see it with my eyes, but SVN's network code seems to be crap.</p>

<p>The issue mentioned in my second blog post remains the same after several versions of the vanilla SVN client. Then there are other issues that have been here for a long time, and an issue I only discovered some days ago:</p>

<ul>
    <li>It is possible in middle of a networked transaction (commit, update) for the Subversion client process to get stuck if a network error occurs. Subversion normally traps SIGTERMs (and apparently SIGHUPs and SIGINTs too) to perform cleanup routines after such interruptions. However, when it gets stuck, the SIGTERM handler becomes useless and the client ignores the signal forever. This means that SVN can get stuck and sit idle on the terminal (most likely waiting for data from the remote host) until it a SIGKILL is sent to force the destruction of its process. Since SIGHUPs are also trapped, killing the terminal leaves a hidden, waiting SVN process. In other words, you can get a dead SVN client running for months if your power source is stable enough. Wonderful.</li>
   <li>Clients that terminate abnormally (SIGKILL and such) may leave random crap hidden in your SVN checkout's control directories that are normally cleaned up by the SIGTERM handler. While this is often inoffensive and <tt>svn cleanup</tt> or <tt>svn cleanup ..</tt> can handle it all, there are times when this is not enough and SVN gets confused for missing/extra files or directory metadata and refuses to update or cleanup a path. In such cases, removing the path and its contents and re-checking it out with <tt>svn update</tt> (or, if it was the whole working dir, <tt>svn checkout</tt>) is necessary.</li>
   <li>There seems to be a lot of overhead in the SVN subprotocol on any transport class, be it http, https, svn or svn+ssh. Commits containing simple changes to file/dir object properties can take as long as a regular commit diff when they should probably contain less data (if they contain as much data, then...?!). This is very noticeable on low-bandwidth connections for me. In comparison, a SVN commit of about 20 property changes can take longer than a Git push through SSH of about 10 large commits introducing whole new files.</li>
</ul>

<p>Then there are some odd things with the SVN client library (<tt>libsvn</tt>), specifically the Perl bindings, namely <a href="http://shadowm.rewound.net/blog/archives/44-Rewriting-the-past,-and-the-woes-of-SVN.html">the issues I mentioned at the start of this month</a>, that leave me very disappointed at this version control system, rumored to be better than CVS (which I haven't ever used...imagine!). The Debian version in Squeeze, and possibly Lenny or upstream too, has a really <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=520963">nasty bug</a> which caused a massive memory leak with Wesnoth-UMC-Dev's <a href="http://wesnoth-umc-dev.svn.sourceforge.net/viewvc/wesnoth-umc-dev/branches/maintenance-toolchain/umcpropfix?view=markup"><tt>umcpropfix</tt></a> tool when I ran it to set properties on a version of Extended Era for Wesnoth, manipulating over 1300 files on multiple dirs. The parent Perl interpreter process allocated over 2 GB of overall virtual memory, making Linux page most memory out to swap, thus hurting performance.</p>

<p>The cause? Pool management. <tt>libsvn</tt>'s Perl bindings are supposed to do automatic memory management unless the client wants to do their own pool management with the library's facilities, but that somehow causes the aforementioned leak instead. The solution turns out to be doing custom pool management by allocating a new pool for every <tt>libsvn</tt> call, and forgetting the old one. <a href="http://wesnoth-umc-dev.svn.sourceforge.net/viewvc/wesnoth-umc-dev/branches/maintenance-toolchain/umcpropfix?revision=6567&amp;view=markup">r6567</a> in the Wesnoth-UMC-Dev repository applies this workaround for our SVN property setting tool.</p>

<p>Honestly, I'm tired of SVN. I use <tt>git-svn</tt> wherever I can but this isn't a magic solution for the crappy design of SVN's innards. <tt>git-svn</tt> can skip upstream commits if the connection interrupts during a fetch operation, and it forgets about local commits during pushes (<tt>git svn dcommit</tt>) after it has sent the first commit and fetched missing ones, which can cause loss of commits and history if the connection to the remote host breaks at that point or git-svn exits in any other fashion.</p>

<p><tt>git-svn</tt> doesn't replace SVN's network code either (it uses it instead), so it's still subject to the perceived overhead, but at least it doesn't get stuck forever ignoring SIGTERMs.</p>

<p>What Wesnoth-UMC-Dev needs at the moment is a distributed (yes) version control system that's <span class="strike">as</span> more user-friendly <span class="strike">as</span> than SVN and has a nice, well documented Windows front-end that's easy to setup, learn and understand. If we can't find that, I'll continue complaining about SVN at any time and on every place where I see fit, here or in IRC.</p> 
            </div>
        </content>
        
    </entry>
    <entry>
        <link href="http://shadowm.rewound.net/blog/archives/55-Wesnoth-UMC-Dev-and-the-version-control-systems-mayhem,-Part-I.html" rel="alternate" title="Wesnoth-UMC-Dev and the version control systems mayhem, Part I" />
        <author>
            <name>shadowmaster</name>
                    </author>
    
        <published>2010-03-16T11:07:45Z</published>
        <updated>2010-04-14T15:12:32Z</updated>
        <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=55</wfw:comment>
    
        <slash:comments>0</slash:comments>
        <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=atom1.0&amp;type=comments&amp;cid=55</wfw:commentRss>
    
            <category scheme="http://shadowm.rewound.net/blog/categories/2-Software" label="Software" term="Software" />
            <category scheme="http://shadowm.rewound.net/blog/categories/5-Wesnoth" label="Wesnoth" term="Wesnoth" />
            <category scheme="http://shadowm.rewound.net/blog/categories/10-Wesnoth-UMC-Dev" label="Wesnoth-UMC-Dev" term="Wesnoth-UMC-Dev" />
    
        <id>http://shadowm.rewound.net/blog/archives/55-guid.html</id>
        <title type="html">Wesnoth-UMC-Dev and the version control systems mayhem, Part I</title>
        <content type="xhtml" xml:base="http://shadowm.rewound.net/blog/">
            <div xmlns="http://www.w3.org/1999/xhtml">
                <p>Inspired by what <a href="http://esr.ibiblio.org/?p=1806">ESR has to say</a> regarding migration from SVN to the Git version control system in practice, I decided to start “considering” actual options for abandoning that <a href="http://shadowm.rewound.net/blog/archives/2-Half-assed-commits.html">unsafe</a>, <a href="http://shadowm.rewound.net/blog/archives/48-Subversion-blows.html">annoying</a> and <a href="http://shadowm.rewound.net/blog/archives/48-Subversion-blows.html#comments">apparently not very scalable</a> centralized version control system known as SVN in one of the only remaining projects where SVN is still used and I'm involved as a developer. In this case, I'm the founder of this project, good old <a href="http://wesnoth-umc-dev.sourceforge.net/">Wesnoth-UMC-Dev</a>.</p>

<p>More specifically, I've decided to take a realistic look at the options as they present themselves — and since Git is a hot topic on both the mainline Wesnoth Project and Wesnoth-UMC-Dev, exploring our possibilities with it sounds like a good way to begin yet another “mayhem” series in this blog (oh boy, I need to categorize those).</p>

<p>Note that I'd normally have posted this in the wesnoth-umc-dev blog if it still existed — it wasn't being used by anyone and the information it contained has been moved and expanded upon in other web pages of <a href="http://wesnoth-umc-dev.sourceforge.net/">our site</a>. Blame AI0867 for that.</p>
 <br /><a href="http://shadowm.rewound.net/blog/archives/55-Wesnoth-UMC-Dev-and-the-version-control-systems-mayhem,-Part-I.html#extended">Continue reading "Wesnoth-UMC-Dev and the version control systems mayhem, Part I"</a>
            </div>
        </content>
        
    </entry>

</feed>