<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Shadowmaster’s Blog - IRC</title>
    <link>http://shadowm.rewound.net/blog/</link>
    <description>A light in the darkness, where everything is possible...</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.6.2 - http://www.s9y.org/</generator>
    
    

<item>
    <title>Rei 2 Feeds: Behind the scenes</title>
    <link>http://shadowm.rewound.net/blog/archives/165-Rei-2-Feeds-Behind-the-scenes.html</link>
            <category>IRC</category>
            <category>Miscellaneous</category>
            <category>Personal</category>
            <category>Projects</category>
            <category>Rei 2 IRC Bot</category>
            <category>Software</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/165-Rei-2-Feeds-Behind-the-scenes.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=165</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=165</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;Just today I &lt;a href=&quot;http://gitorious.org/rei2/rei2/commit/025293edc1d5ca8372da664576f7fb407362500c&quot;&gt;completed&lt;/a&gt; an initial, &lt;em&gt;working&lt;/em&gt; implementation of an XML feeds reader in the &lt;a href=&quot;/projects/rei2.php&quot;&gt;Rei 2 IRC Bot&lt;/a&gt; framework. This implementation was pushed into master and I later tagged Rei 2 version 0.2.8, which will be eventually deployed on the &lt;em&gt;shikadibot&lt;/em&gt; production instance, once this new shiny feature has seen enough testing and appears to be stable enough.&lt;/p&gt;

&lt;p&gt;Thus my nearly 12 hours long coding spree culminates.&lt;/p&gt;

&lt;p&gt;There were various design issues I faced when developing the feeds reader functionality. I already came across inefficiencies inherent to the legacy single-threaded model for SVN bot functionality found in Shikadibot 0314 and reimplemented in Rei 2; it’s not directly feasible to listen and respond to interactive events from an IRC connection socket while waiting for a reply that might never arrive from a SVN server. In the feeds reader case, more complications arise from the need to download and parse multiple documents from different remote servers in quick succession.&lt;/p&gt;

&lt;p&gt;Rei 2 is still bound to the &lt;a href=&quot;http://irssi.org/&quot;&gt;Irssi IRC client&lt;/a&gt;, and will remain so for a good while until the new &lt;a href=&quot;http://gitorious.org/rei2/rei2/commits/S2&quot;&gt;S&lt;sup&gt;2&lt;/sup&gt; state tracker&lt;/a&gt; is completed. The current situation is by no means &lt;em&gt;bad&lt;/em&gt; as it allows me to concentrate my efforts on the bot’s outermost functionality layer, but the dependence on a non-native (i.e. C as opposed to Perl) backend places several constraints on what can be done in Rei 2.&lt;/p&gt;

&lt;p&gt;Instead of resorting to threads — a possibility that I still don’t dare test with Irssi+Perl — I ideated a convoluted mechanism taking advantage of child processes and a simple caching strategy. Rei 2 forks its own helper daemon (&lt;tt&gt;rei2-feeds-worker.pl&lt;/tt&gt;) when loaded (not necessarily always at Irssi’s startup!). This assistant simply fetches all XML feeds in the background every once in a while, and saves them to disk at a special location in the configuration dir — no more, no less. Meanwhile, Rei 2 sets up timed events to trap into the feeds processor and quickly work with what’s in the local on-disk cache.&lt;/p&gt;

&lt;p&gt;Theoretically, this model could be extended to other Rei 2 modules, the SVN bot code being a particularly attractive candidate. It could be possible to either fork more unique helpers in the background, or somehow merge them all into another modular application. Either way, I’m not strongly interested on messing with the design right now other than researching more optimal mechanisms to monitor cache activity — &lt;a href=&quot;http://en.wikipedia.org/wiki/Inotify&quot;&gt;inotify&lt;/a&gt; comes to mind.&lt;/p&gt;

&lt;p class=&quot;center&quot;&gt;• • •&lt;/p&gt;

&lt;p&gt;For testing purposes, Rei2 on freenode already tracks the &lt;a href=&quot;http://wesnoth-umc-dev.ai0867.net/&quot;&gt;Wesnoth-UMC-Dev frontpage&lt;/a&gt; aggregator feed in &lt;tt&gt;#wesnoth-umc-dev&lt;/tt&gt; and the &lt;a href=&quot;http://forums.wesnoth.org/&quot;&gt;Wesnoth.org&lt;/a&gt;’ Off-Topic forum posts feed in &lt;tt&gt;#wesnoth-offtopic&lt;/tt&gt;. There’s also a duplicate feed of this very blog competing against one of my earliest private-use modules which has been reporting blog posts and Twitter updates in &lt;tt&gt;##shadowm&lt;/tt&gt; nearly since Rei 2’s inception. I’m meant to port the latter two to the new model soon-ish.&lt;/p&gt;

&lt;p&gt;To celebrate this rather important milestone, I’ve updated the &lt;a href=&quot;/projects/rei2.php&quot;&gt;Rei 2 IRC Bot&lt;/a&gt; project page in this site as well with some new information.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 21 Apr 2011 00:56:00 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/165-guid.html</guid>
    
</item>
<item>
    <title>Resolutions!</title>
    <link>http://shadowm.rewound.net/blog/archives/148-Resolutions!.html</link>
            <category>IRC</category>
            <category>Miscellaneous</category>
            <category>Personal</category>
            <category>Projects</category>
            <category>Rei 2 IRC Bot</category>
            <category>Site updates</category>
            <category>Software</category>
            <category>Web design</category>
            <category>Wesnoth</category>
            <category>Wesnoth-TC</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/148-Resolutions!.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=148</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=148</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;Don’t throw your shoes at me! I didn’t come to continue the &lt;a href=&quot;http://forums.wesnoth.org/viewtopic.php?p=472214#p472214&quot;&gt;overly&lt;/a&gt; &lt;a href=&quot;http://twitter.com/#!/shikadilord/status/20908831286501378&quot;&gt;long&lt;/a&gt; “&lt;a href=&quot;http://twitter.com/#!/shikadilord/status/21005201758490624&quot;&gt;display&lt;/a&gt; &lt;a href=&quot;http://twitter.com/#!/shikadilord/status/21005426946478080&quot;&gt;resolution&lt;/a&gt;” &lt;a href=&quot;http://twitter.com/#!/shikadilord/status/21045247970643969&quot;&gt;gag&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;I have been thinking about some stuff to do during this year for a while, actually. It’s really hard to decide because I’m a person who runs into all sort of trouble while trying to get projects accomplished (including procrastination).&lt;/p&gt;

&lt;p&gt;One thing I’m already doing is learning some Japanese, for no particular reason at all — although you’ve got to admit that having multiple languages in your curriculum is worth a bunch of coolness points. &lt;img src=&quot;/dorset6/img/smilies/razz.gif&quot; alt=&quot;:P&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Espreon is helping me along the way with his own recently gained knowledge. It seems quite fun to learn a language in a non-Latin alphabet, if not a tad overwhelming at times, especially with kanji.&lt;/p&gt;

&lt;p&gt;It’d be a good idea to lose some weight this year, too. My addiction to sugary stuff isn’t quite compatible with my heart condition! (Nor is coffee, but… meh.)&lt;/p&gt;

&lt;div class=&quot;thumbnail float_right&quot;&gt;&lt;img src=&quot;http://i144.photobucket.com/albums/r176/shadowm2006/atspeek.png&quot; alt=&quot;Screenshot of AtS&quot; /&gt;&lt;/div&gt;

&lt;p&gt;Then there’s Wesnoth. I intend to finish the Second Act™ of &lt;cite&gt;After the Storm&lt;/cite&gt; Episode I as soon as I may, even through the means of placeholders — I’m willing to do &lt;em&gt;anything&lt;/em&gt; to rescue AtS out of &lt;a href=&quot;http://tvtropes.org/pmwiki/pmwiki.php/Main/DevelopmentHell&quot;&gt;Development Hell&lt;/a&gt; before the end of 2011.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/projects/wesnoth-tc.php&quot;&gt;Wesnoth RCX’s&lt;/a&gt; development is halted right now due to lack of interest on my part to invest energy on writing the rest of the new functionality (i.e. definition of custom ranges and palettes), but I know that once I touch Qt Creator’s awesome interface I can’t stop working for a while — so I may eventually get some inspiration to redesign the main window, which should inevitably lead me to tinker around with the rest of the code.&lt;/p&gt;

&lt;p&gt;C# was the first “major” programming language I learned, not counting Visual Basic. I have some fond memories of my first experiments with C#, but after I embarked upon learning and using C++ I kind of forgot about it. I have been considering the possibility of writing an IRC client of sorts using C# just for kicks, and to not forget this language in case I ever need it again. Why IRC? Because clients for this protocol are simple and challenging to implement, both at the same time!&lt;/p&gt;

&lt;p&gt;I’ve already started to learn a bit of Lua for my work on the aforementioned Wesnoth campaign — in fact, there’s already some released code within it written in this language, particularly in scenario 5! I have plans to rewrite parts of &lt;cite&gt;Invasion from the Unknown&lt;/cite&gt; in Lua to clean it up a little, thus paving the road for future maintenance work by me or other people (don’t forget that IftU is still abandoned!).&lt;/p&gt;

&lt;p&gt;Another software project I intend to tackle in the short term is &lt;a href=&quot;/projects/rei2.php&quot;&gt;Rei 2&lt;/a&gt;. Sure, she’s doing well and her main command handlers are many and useful enough for channels such as &lt;tt&gt;##shadowm&lt;/tt&gt; and &lt;tt&gt;#wesnoth-umc-dev&lt;/tt&gt;, but her dependence on &lt;a href=&quot;http://irssi.org/&quot;&gt;Irssi’s&lt;/a&gt; core might well be a curse for one of our use cases: Shikadibot (the Second), which runs on a resource-limited VPS where every drop of RAM has got gold value. I’m already brainstorming a possible abstraction layer (codenamed “&lt;em&gt;API 3&lt;/em&gt;”) which could allow the Irssi core to be swappable with a custom, native IRC client core (codenamed “&lt;em&gt;Anya&lt;/em&gt;”). There’s really not much in the current Irssi-based implementation of the internal interfaces (“&lt;em&gt;API 2&lt;/em&gt;”) that make a dependency switch unfeasible.&lt;/p&gt;

&lt;div class=&quot;thumbnail float_left&quot;&gt;
  &lt;a href=&quot;http://i144.photobucket.com/albums/r176/shadowm2006/screenshots/dorset50001.png&quot; target=&quot;_blank&quot; title=&quot;Click to enlarge&quot;&gt;&lt;img src=&quot;http://i144.photobucket.com/albums/r176/shadowm2006/screenshots/th_dorset50001.png&quot; alt=&quot;Photobucket&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;Finally, I’m not going to stop producing &lt;del&gt;useless&lt;/del&gt; updates for my website! Dorset5 0001 is already a reality, although there’s still much I want to do before replacing the current layout. This time I have placed an emphasis on readability and elegance that I don’t think the previous revisions have lived up to so far.&lt;/p&gt;

&lt;p class=&quot;center float_reset&quot;&gt;• • •&lt;/p&gt;

&lt;p&gt;All in all, I always have so many ideas floating in my mind that I rarely carry to realization, so this can’t be considered a definitive list. There are other possibilities I’m contemplating for the long term regarding my personal life, but that’s a much more volatile subject to discuss so I’m avoiding it for now.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 01 Jan 2011 06:30:00 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/148-guid.html</guid>
    
</item>
<item>
    <title>Preparing for yet another year</title>
    <link>http://shadowm.rewound.net/blog/archives/133-Preparing-for-yet-another-year.html</link>
            <category>Frogatto</category>
            <category>IRC</category>
            <category>Miscellaneous</category>
            <category>Personal</category>
            <category>Projects</category>
            <category>Rei 2 IRC Bot</category>
            <category>Software</category>
            <category>Web design</category>
            <category>Wesnoth</category>
            <category>Wesnoth-TC</category>
            <category>freenode</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/133-Preparing-for-yet-another-year.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=133</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=133</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;It’s almost over. Time flies even faster as we get closer to the end of 2010, and apparently there’s a lot to summarize despite we’re not in the finish line yet!&lt;/p&gt;

&lt;p&gt;This has been a particularly difficult year for me in a more personal sense, and I’ve faced some trials I won’t speak about and then some, but I’ve also learned new things in the road — things that may be of greater use to me in the future. There’s really a lot that could be said about this year but I’ll restrict it to computer stuff to &lt;del&gt;avoid boring the audience too much&lt;/del&gt; bore the audience as much as possible.&lt;/p&gt; &lt;br /&gt;&lt;a href=&quot;http://shadowm.rewound.net/blog/archives/133-Preparing-for-yet-another-year.html#extended&quot;&gt;Continue reading &quot;Preparing for yet another year&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Tue, 30 Nov 2010 02:11:00 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/133-guid.html</guid>
    
</item>
<item>
    <title>General update</title>
    <link>http://shadowm.rewound.net/blog/archives/111-General-update.html</link>
            <category>IRC</category>
            <category>Miscellaneous</category>
            <category>Personal</category>
            <category>Projects</category>
            <category>Rei 2 IRC Bot</category>
            <category>Site updates</category>
            <category>Software</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/111-General-update.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=111</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=111</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;div class=&quot;center&quot;&gt;
  &lt;a href=&quot;http://xkcd.com/673/&quot;&gt;
    &lt;img src=&quot;http://i144.photobucket.com/albums/r176/shadowm2006/the_sun.png&quot; alt=&quot;The Sun&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;p&gt;At last, it’s the second weekend of October and here in Chile we’re already switching to &lt;acronym title=&quot;Daylight Saving Time&quot;&gt;DST&lt;/acronym&gt;-based schedules. But I didn’t come here to talk about how nice it is to have sunlight past 7 PM, or to announce any plans for summer.&lt;/p&gt;

&lt;p&gt;Instead, I came here to announce the early arrival of codename “&lt;em&gt;Dorset4&lt;/em&gt;”, the new revision of the site’s layout, now with more CSS 3! (Really.)&lt;/p&gt;

&lt;p&gt;It’s not really as big an update as I expected because there’s really very little to fix overall — I feel quite happy with my work on Dorset3 and save for some minor things no big improvements appear to be necessary. Of course, I introduced a couple of bugs with this revision (notably, in the &lt;a href=&quot;/projects/&quot;&gt;Projects&lt;/a&gt; section index), which will be fixed over the next days. The most notable changes are the introduction of a few icons in places where it made sense, and the tidying up of the sidebar and footer, all with the purpose of presenting the most important information more cleanly than ever.&lt;/p&gt;

&lt;p&gt;But these aren’t all the changes. Besides the stylesheet revisions, there’s also a new project page for &lt;a href=&quot;/projects/rei2.php&quot;&gt;Rei 2 IRC bot&lt;/a&gt; and a new separate page with &lt;a href=&quot;/website-info.php&quot;&gt;information on the website&lt;/a&gt;. The blog has also now acquired entry paging powers, which means that multi-page articles will be possible in the future — in fact, the forthcoming follow-up to &lt;a href=&quot;http://shadowm.rewound.net/blog/archives/60-Wesnoth-Evolution-0.1.html&quot;&gt;Wesnoth Evolution: 0.1&lt;/a&gt; may take advantage of this new feature.&lt;/p&gt;

&lt;p&gt;I know people in the northern hemisphere are going to freeze very soon as winter approaches, but I know I’ll still envy them in a few weeks when local temperatures start going over 32°C. &lt;img src=&quot;/dorset6/img/smilies/awesome.gif&quot; alt=&quot;:Awesome:&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Sun, 10 Oct 2010 01:37:44 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/111-guid.html</guid>
    
</item>
<item>
    <title>Another report on Rei2's development</title>
    <link>http://shadowm.rewound.net/blog/archives/110-Another-report-on-Rei2s-development.html</link>
            <category>IRC</category>
            <category>Rei 2 IRC Bot</category>
            <category>Software</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/110-Another-report-on-Rei2s-development.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=110</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=110</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;http://wesnoth-umc-dev.sourceforge.net/bots/shikadibot.php&quot;&gt;Shikadibot 0314’s&lt;/a&gt; replacement, codenamed “&lt;a href=&quot;http://shadowm.rewound.net/blog/archives/107-Building-bots,-introducing-Rei2.html&quot;&gt;Rei II&lt;/a&gt;” is slowly approaching completion and now the various SVN commands offered by shikadibot (&lt;tt&gt;dir&lt;/tt&gt;, &lt;tt&gt;file&lt;/tt&gt;, &lt;tt&gt;log&lt;/tt&gt;, &lt;tt&gt;repo&lt;/tt&gt;, and a couple more) are implemented and working. Thanks to my newly acquired handle of class inheritance with Object-Oriented Perl, it’s now also possible to write Git equivalents with minimal hassle, which may become useful in the future, especially once I implement a way to query arbitrary named repositories.&lt;/p&gt;

&lt;p&gt;This time I’m going to try to make an IRC bot that can be more easily adapted for other people’s needs, something that was a goal for Shikadibot’s development as well, but quickly went to hell as the code became the nightmarish abomination that it is nowadays.&lt;/p&gt;

&lt;p&gt;Now codename “Rei II” has an official name and source repository: &lt;a href=&quot;http://gitorious.org/rei2&quot;&gt;&lt;strong&gt;Rei 2 IRC Bot&lt;/strong&gt; at Gitorious.org&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;All progress has taken place in a private repository at AI’s server, but from now on I’m mirroring history at Gitorious for those who might actually want to take a look at the code, and — in the future — use or contribute to Rei 2’s development. The source license is and will continue to be the &lt;a href=&quot;http://en.wikipedia.org/wiki/ISC_license&quot;&gt;&lt;acronym title=&quot;Internet Systems Consortium&quot;&gt;ISC&lt;/acronym&gt; license&lt;/a&gt; to allow easier integration of the code in other suites without the load of problems created by the GNU General Public License.&lt;/p&gt;

&lt;p&gt;A project page on this very site will be coming soon.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 07 Oct 2010 04:04:13 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/110-guid.html</guid>
    
</item>
<item>
    <title>Building bots, introducing Rei2</title>
    <link>http://shadowm.rewound.net/blog/archives/107-Building-bots,-introducing-Rei2.html</link>
            <category>IRC</category>
            <category>Personal</category>
            <category>Rei 2 IRC Bot</category>
            <category>Software</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/107-Building-bots,-introducing-Rei2.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=107</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=107</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;Those who frequent my personal and Wesnoth-related &lt;acronym title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/acronym&gt; channels on freenode may have met &lt;a href=&quot;http://wesnoth-umc-dev.sourceforge.net/bots/shikadibot.php&quot;&gt;Shikadibot&lt;/a&gt; before, but very few people have actually seen the mess that lies beneath its friendly user interface.&lt;/p&gt;

&lt;p&gt;Shikadibot is, simply put, a shitload of hacks put together by someone who didn’t know better at that time — that someone being &lt;strong&gt;me&lt;/strong&gt;. “Inspired” by Rhonda’s Wesbot who watches over the main Wesnoth channels, I quickly wrote Shikadibot around the middle of 2008 with nary a clue of proper Perl coding. I learned as much Perl as I needed to implement the bot’s basic functionality, and certainly not in the most orderly fashion possible. This bot is basically unmaintained and feature-frozen nowadays because I can’t be bothered to try to make something out of that mess.&lt;/p&gt;

&lt;p&gt;And yet I felt compelled to revisit this old project and create something new and better using the same basic ideas.&lt;/p&gt;

&lt;p&gt;Some days ago, I started to work on a new &lt;a href=&quot;http://irssi.org/&quot;&gt;Irssi&lt;/a&gt;-based IRC bot under the codename “Rei II” (&lt;tt&gt;Rei2.pl&lt;/tt&gt;) and building its components from scratch while trying to keep my Perl as elegant as possible while still taking advantage of advances techniques that’d have made maintaining Shikadibot much easier if I actually learned them back then. Most of the knowledge I’m applying comes from different Perl programs I wrote &lt;em&gt;after&lt;/em&gt; Shikadibot, such as &lt;a href=&quot;http://shadowm.rewound.net/blog/archives/42-umcreg.html&quot;&gt;umcreg&lt;/a&gt; and a few random scripts for the &lt;a href=&quot;http://wesnoth-umc-dev.sourceforge.net/&quot;&gt;Wesnoth-&lt;acronym title=&quot;User Made Content&quot;&gt;UMC&lt;/acronym&gt;-Dev Project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I’d dare say that this is coming out nicely so far since I could quickly implement a small framework for the bot and seamlessly wire it into Irssi, and now I’m busier working on the fun stuff: the actual bot commands and functionality.&lt;/p&gt;

&lt;p&gt;I’m not revealing the source code yet (boo!), but I can say that so far I have implemented the following aspects, cleanly and successfully:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“Hi” command (well, duh).&lt;/li&gt;
  &lt;li&gt;“Help” command (stub only though).&lt;/li&gt;
  &lt;li&gt;Acronyms look-up inspired by NetBSD’s (et al) &lt;a href=&quot;http://linux.die.net/man/6/wtf&quot;&gt;&lt;tt&gt;wtf&lt;/tt&gt;(6)&lt;/a&gt; utility.&lt;/li&gt;
  &lt;li&gt;Manual page abstract look-up using &lt;a href=&quot;http://linux.die.net/man/1/whatis&quot;&gt;&lt;tt&gt;whatis&lt;/tt&gt;(1)&lt;/a&gt;, also inspired by the above.&lt;/li&gt;
  &lt;li&gt;Mathematical expression evaluation using GNU &lt;a href=&quot;http://linux.die.net/man/1/bc&quot;&gt;&lt;tt&gt;bc&lt;/tt&gt;(1)&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Dice-rolling with “d&amp;lt;no. sides&amp;gt;”, suggested by SpookyMagician on IRC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Due to my involvement in two projects that been trolled by &lt;acronym title=&quot;Free Software Foundation&quot;&gt;FSF&lt;/acronym&gt; fanboys, I have decided to publish the sources of this bot framework under a BSD-style license instead of the usual deal, since the terms of the GNU General Public License seem to be designed to provide whiners with the fuel they need to keep software developers busy with legalese instead of matters lying within their actual area of interest (id est, programming). After hearing of the FSF’s extremist views on certain issues, I don’t think I’ll use the GNU GPL again in much stuff, if at all.&lt;/p&gt; 
    </content:encoded>

    <pubDate>Thu, 30 Sep 2010 06:51:47 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/107-guid.html</guid>
    
</item>
<item>
    <title>Throwaway code</title>
    <link>http://shadowm.rewound.net/blog/archives/43-Throwaway-code.html</link>
            <category>IRC</category>
            <category>Personal</category>
            <category>Software</category>
            <category>Wesnoth</category>
            <category>Wesnoth-UMC-Dev</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/43-Throwaway-code.html#comments</comments>
    <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=2.0&amp;type=comments&amp;cid=43</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;umcdist&lt;/tt&gt;, 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 &lt;tt&gt;build-external-archive.sh&lt;/tt&gt; a.k.a. “Scrappy” due to an excessive usage of Perl&#039;s &lt;code&gt;system&lt;/code&gt; function. I cannot make up my mind and choose between performance and maintainability; Espreon knows that &lt;tt&gt;build-external-archive.sh&lt;/tt&gt; is broken, but I can&#039;t be bothered to try to understand that &lt;span class=&quot;strike&quot;&gt;awful piece of Bash&lt;/span&gt; &lt;strong&gt;unholy abomination&lt;/strong&gt; again to fix it.&lt;/p&gt;

&lt;p&gt;Meanwhile, &lt;tt&gt;umcstat&lt;/tt&gt; (Wesnoth-UMC-Dev Statistics Service) is still a work in progress, but with more emphasis in &lt;em&gt;progress&lt;/em&gt;; there&#039;s actual code written already, and I&#039;ve been using &lt;a href=&quot;http://freenode.net/&quot;&gt;freenode&#039;s&lt;/a&gt; &lt;a href=&quot;http://dev.freenode.net/eir&quot;&gt;Eir&lt;/a&gt; bot framework to test it.&lt;/p&gt;

&lt;p&gt;While Eir could possibly be a nice way to get rid of &lt;tt&gt;umcreg&lt;/tt&gt;&#039;s &lt;tt&gt;Net::IRC&lt;/tt&gt; dependency and code, it&#039;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: &lt;tt&gt;auto&lt;/tt&gt;. The target machine runs Debian lenny, unlike my laptop (Squeeze), and therefore doesn&#039;t have GCC 4.4!&lt;/p&gt;

&lt;p&gt;Instead of sticking with Eir, I&#039;m refactoring &lt;tt&gt;umcreg&lt;/tt&gt;&#039;s IRC code into a custom Perl-only framework, &lt;tt&gt;umcbotd&lt;/tt&gt;, and &lt;span class=&quot;strike&quot;&gt;making creative use of &lt;code&gt;eval&lt;/code&gt;&lt;/span&gt; writing an abomination code-named “Naia”, which I&#039;m rewriting again because the first version I wrote, which worked, was very badly designed and ugly. I know it&#039;s a problem when I have three classes or modules all depending upon each other&#039;s &lt;em&gt;internals&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;The goal of &lt;tt&gt;umcbotd&lt;/tt&gt;/&lt;tt&gt;Naia&lt;/tt&gt; is producing a &lt;tt&gt;Net::IRC&lt;/tt&gt;-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. &lt;tt&gt;umcreg&lt;/tt&gt; already runs with a prototype implementation of this mechanism, but it needs to be generalized further before it can be usable with &lt;tt&gt;Naia&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;Writing our bots could be this simple, if &lt;tt&gt;Naia&lt;/tt&gt; gets completed:&lt;/p&gt;

&lt;pre&gt;#!/bin/true
CO_SERVICE_COMPONENT(&#039;umcreg&#039;);

sub ctcp_version_reply () { &quot;Wesnoth-UMC-Dev Registry Service, using &quot; . Naia::version_string() }

sub eh_ctcp_version
{
    my ($self, $event) = @_;
    $self-&gt;ctcp_reply($event-&gt;nick, &#039;VERSION &#039; . ctcp_version_reply());
}

# ...

my $bot = Naia::get_bot(&#039;umcreg&#039;);
my %eh = (
    &#039;cversion&#039;      &lt;img src=&quot;/dorset6/img/smilies/smile.gif&quot; alt=&quot;=&gt;&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; \&amp;amp;eh_ctcp_version,
    &#039;msg&#039;           &lt;img src=&quot;/dorset6/img/smilies/smile.gif&quot; alt=&quot;=&gt;&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; \&amp;amp;eh_msg_private,
    &#039;330&#039;           &lt;img src=&quot;/dorset6/img/smilies/smile.gif&quot; alt=&quot;=&gt;&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; \&amp;amp;eh_whoisloggedin,
    &#039;318&#039;           &lt;img src=&quot;/dorset6/img/smilies/smile.gif&quot; alt=&quot;=&gt;&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; \&amp;amp;eh_endofwhois,
    &#039;331&#039;           &lt;img src=&quot;/dorset6/img/smilies/smile.gif&quot; alt=&quot;=&gt;&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; \&amp;amp;eh_notopic,
    &#039;332&#039;           &lt;img src=&quot;/dorset6/img/smilies/smile.gif&quot; alt=&quot;=&gt;&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; \&amp;amp;eh_topic,
    &#039;403&#039;           &lt;img src=&quot;/dorset6/img/smilies/smile.gif&quot; alt=&quot;=&gt;&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; \&amp;amp;eh_nosuchchannel,
);

$bot-&gt;connect();
$bot-&gt;register_event_handlers(%eh);
&lt;/pre&gt;

&lt;p&gt;And their modules would be like this, more or less the same as &lt;tt&gt;umcreg&lt;/tt&gt;&#039;s modules already are:&lt;/p&gt;

&lt;pre&gt;#!/bin/true
# token, subroutine, privilege level (A: admin, H: half-admin, U: user)
CO_MODULE(&#039;RAW&#039;, \&amp;amp;co_raw, &#039;A&#039;);

sub co_raw
{
    my ($parent, $nick, $hostmask, $svaname) = (shift, shift, shift, shift);

    if(!@_) {
        $parent-&gt;notice($nick, &quot;Not enough arguments for \002RAW\002.&quot;);
        return;
    }

    $parent-&gt;sl(join(&#039; &#039;, @_));

    broadcast_to_log(&quot;RAW [$hostmask]&quot;);
}
&lt;/pre&gt;

&lt;p&gt;... And of course it would still involve lots of ugly stuff under the hood (&lt;code&gt;eval&lt;/code&gt; magic), but if done right I shouldn&#039;t have to touch it whenever I wanted to add or remove a feature from any of our two services.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Tue, 09 Feb 2010 02:03:09 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/43-guid.html</guid>
    
</item>
<item>
    <title>umcreg</title>
    <link>http://shadowm.rewound.net/blog/archives/42-umcreg.html</link>
            <category>IRC</category>
            <category>Software</category>
            <category>Web design</category>
            <category>Wesnoth</category>
            <category>Wesnoth-UMC-Dev</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/42-umcreg.html#comments</comments>
    <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=2.0&amp;type=comments&amp;cid=42</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;At last, &lt;tt&gt;umcreg&lt;/tt&gt;, &lt;a href=&quot;http://wesnoth-umc-dev.sourceforge.net/&quot;&gt;Wesnoth-&lt;acronym title=&quot;User Made Content&quot;&gt;UMC&lt;/acronym&gt;-Dev&#039;s&lt;/a&gt; Registry Service, is finished, deployed and &lt;a href=&quot;http://forums.wesnoth.org/viewtopic.php?p=406537#p406537&quot;&gt;announced&lt;/a&gt; in the forums, thus completing the first part of introducing the &lt;a href=&quot;http://shadowm.rewound.net/blog/archives/40-Robots!.html&quot;&gt;Registry&lt;/a&gt; system to the project.&lt;/p&gt;

&lt;p&gt;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. &lt;img src=&quot;/dorset6/img/smilies/biggrin.gif&quot; alt=&quot;:D&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I was in a hurry to get this done right before &lt;a href=&quot;http://freenode.net/&quot;&gt;freenode&lt;/a&gt; deployed &lt;a href=&quot;http://blog.freenode.net/2010/01/migration-to-new-ircd/&quot;&gt;ircd-seven&lt;/a&gt; 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&#039;ll be retiring later today.&lt;/p&gt;

&lt;p&gt;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&#039;s &lt;tt&gt;umcreg&lt;/tt&gt; version 0.1.1 for the curious, released under the terms of the GNU GPL version 3.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;/src/umcreg-0.1.1.tar.gz&quot;&gt;umcreg 0.1.1&lt;/a&gt; (gzip tarball, 35.7 KiB; MD5 sum: &lt;tt&gt;7877c82082d42c45d45f68647c223459&lt;/tt&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I have already registered our current members using some basic, known information about them — even including their join date. Old projects&#039; 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&#039;s web interface, provided by the &lt;tt&gt;umcreg::Web&lt;/tt&gt; and &lt;tt&gt;Thoria::Web&lt;/tt&gt; packages, can be found &lt;a href=&quot;http://wesnoth-umc-dev.sourceforge.net/umcreg/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;umcreg&lt;/tt&gt; is already working at the project&#039;s admin channel on freenode too. It only obeys the project staff&#039;s orders, though, so there&#039;s no point in trying to send messages to it.&lt;/p&gt;

&lt;p&gt;The next step in implementing the Registry model is writing the Statistics service, codenamed “Listra”, and most likely going to be named &lt;tt&gt;umcstat&lt;/tt&gt;. That will definitively take much longer than &lt;tt&gt;umcreg&lt;/tt&gt;&#039;s development. Meanwhile, Espreon is trying to convince me to take care of &lt;tt&gt;umcdist&lt;/tt&gt; (codename “Blackmore”) first.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 30 Jan 2010 19:54:40 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/42-guid.html</guid>
    
</item>
<item>
    <title>Robots!</title>
    <link>http://shadowm.rewound.net/blog/archives/40-Robots!.html</link>
            <category>IRC</category>
            <category>Software</category>
            <category>Wesnoth</category>
            <category>Wesnoth-UMC-Dev</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/40-Robots!.html#comments</comments>
    <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=2.0&amp;type=comments&amp;cid=40</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;It&#039;s year 2010, and, &lt;em&gt;despite the promises&lt;/em&gt;, there are no flying cars, no jetpacks, people still die, there&#039;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.&lt;/p&gt;

&lt;p&gt;But here&#039;s &lt;acronym title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/acronym&gt; to solve that! No, really! What do you mean, it&#039;s not awesome!?&lt;/p&gt;

&lt;p&gt;Okay, obscure references aside, the &lt;a href=&quot;http://wesnoth-umc-dev.sourceforge.net/&quot;&gt;Wesnoth-&lt;acronym title=&quot;User Made Content&quot;&gt;UMC&lt;/acronym&gt;-Dev&lt;/a&gt; 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: &lt;cite&gt;Invasion from the Unknown&lt;/cite&gt;, &lt;cite&gt;Legend of Wesmere&lt;/cite&gt; and &lt;cite&gt;Delfador&#039;s Memoirs&lt;/cite&gt;. Guess which of them has &lt;strong&gt;not&lt;/strong&gt; made it to Wesnoth&#039;s mainline project yet.&lt;/p&gt;

&lt;p&gt;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&#039;m wondering what the hell we are hosting anymore — I lost track!&lt;/p&gt;

&lt;p&gt;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, &lt;strong&gt;and&lt;/strong&gt; was resurrected from 2 months-old backups didn&#039;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 &lt;a href=&quot;http://wesnoth-umc-dev.sourceforge.net/crew.php&quot;&gt;our project&#039;s website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But it&#039;d benefit everyone if we didn&#039;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 &lt;strong&gt;Statistics&lt;/strong&gt; service (&lt;tt&gt;umcstat&lt;/tt&gt;, codename “Listra”) and the &lt;strong&gt;Registry&lt;/strong&gt; system (&lt;tt&gt;umcreg&lt;/tt&gt;, codename “Thoria”). I&#039;ve been asked about their purposes and goals a few times lately, mainly because &lt;tt&gt;umcreg&lt;/tt&gt; is &lt;em&gt;finally reaching completion&lt;/em&gt;, so here it is; a thorough description of our new pals.&lt;/p&gt;
 &lt;br /&gt;&lt;a href=&quot;http://shadowm.rewound.net/blog/archives/40-Robots!.html#extended&quot;&gt;Continue reading &quot;Robots!&quot;&lt;/a&gt;
    </content:encoded>

    <pubDate>Fri, 22 Jan 2010 00:38:18 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/40-guid.html</guid>
    
</item>
<item>
    <title>Taking a level in chanop</title>
    <link>http://shadowm.rewound.net/blog/archives/27-Taking-a-level-in-chanop.html</link>
            <category>IRC</category>
            <category>Miscellaneous</category>
            <category>Software</category>
            <category>freenode</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/27-Taking-a-level-in-chanop.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=27</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=27</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;Freenode&#039;s staff and a group of users have been busy testing &lt;a href=&quot;http://blog.freenode.net/2009/11/testing-the-nets/&quot;&gt;ircd-seven&lt;/a&gt;, the ircd which will eventually replace the aging collection of ugly hacks known as &lt;a href=&quot;http://freenode.net/hyperion.shtml&quot;&gt;hyperion-ircd&lt;/a&gt;. So far it seems I&#039;ve been the only one who&#039;s found and reported bugs in channel management code (account bans + forwarding, in particular), which is a pity; we need more testers!&lt;/p&gt;

&lt;p&gt;Occasionally, the server instances get restarted and some people complain.&lt;/p&gt;

&lt;p&gt;I think I cannot complain, because I just got my own &lt;a href=&quot;/images/fn.png&quot;&gt;10 seconds of fame&lt;/a&gt;. It&#039;s a pity that I didn&#039;t have a better one-liner or a larger audience for the occasion!&lt;/p&gt;

&lt;pre class=&quot;ircquote&quot;&gt;&amp;lt;@shadowmaster&amp;gt; eh.&lt;/pre&gt;

&lt;p&gt;&lt;small&gt;(And if you don&#039;t use freenode or &lt;acronym title=&quot;Internet Relay Chat&quot;&gt;IRC&lt;/acronym&gt; at all, you won&#039;t understand any of this.&lt;/small&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 08 Dec 2009 22:18:24 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/27-guid.html</guid>
    
</item>
<item>
    <title>atheme-info.pl - Yet another irssi script</title>
    <link>http://shadowm.rewound.net/blog/archives/19-atheme-info.pl-Yet-another-irssi-script.html</link>
            <category>IRC</category>
            <category>Miscellaneous</category>
            <category>Software</category>
            <category>freenode</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/19-atheme-info.pl-Yet-another-irssi-script.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=19</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=19</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;pre class=&quot;ircquote&quot;&gt;&amp;lt;+shadowmaster&amp;gt; ... I have acl, cs_info, and ns_info aliases on irssi.
&amp;lt;+shadowmaster&amp;gt; for some reason I tend to type ns_info when I want cs_info (for /msg ChanServ INFO)
&amp;lt;+shadowmaster&amp;gt; maybe I should just write a script for the /info command that decides which one is the correct service for me.&lt;/pre&gt;

&lt;p&gt;So here&#039;s a quick 5-minutes hack to patch my incompetence. This little irssi script introduces the /AINFO command for querying freenode&#039;s services (which are from the Atheme package) for information on a nickname or channel. I don&#039;t need to check whether I am querying the correct service anymore. Yays.&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;/src/irssi-scripts/atheme-info.pl&quot;&gt;atheme-info.pl&lt;/a&gt; (1.4 KB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The installation procedure is the same as with any other irssi scripts.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 18 Nov 2009 02:23:37 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/19-guid.html</guid>
    
</item>
<item>
    <title>Irssi script: window-cmd</title>
    <link>http://shadowm.rewound.net/blog/archives/12-Irssi-script-window-cmd.html</link>
            <category>IRC</category>
            <category>Software</category>
            <category>freenode</category>
    
    <comments>http://shadowm.rewound.net/blog/archives/12-Irssi-script-window-cmd.html#comments</comments>
    <wfw:comment>http://shadowm.rewound.net/blog/wfwcomment.php?cid=12</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://shadowm.rewound.net/blog/rss.php?version=2.0&amp;type=comments&amp;cid=12</wfw:commentRss>
    

    <author>nospam@example.com (shadowmaster)</author>
    <content:encoded>
    &lt;p&gt;Some time ago I was searching for a legendary &lt;a href=&quot;http://www.irssi.org&quot;&gt;irssi&lt;/a&gt; script that would allow me to use commands like /1, /2, etc. to switch to the respective window numbers without having to type the complete /window command. Although I didn&#039;t succeed in my search, one of the freenode staffers gave me a little command to populate the command aliases list with some adequate (99) entries.&lt;/p&gt;

&lt;p&gt;That&#039;s very nice except that the config file becomes a bit larger.&lt;/p&gt;

&lt;p&gt;I was bored last night so I decided to reinvent the wheel and write such a script that doesn&#039;t require any client configuration changes to bind the same aliases automagically on startup. I am pretty sure it already existed, but since I couldn&#039;t find it...&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;/src/irssi-scripts/window-cmd.pl&quot;&gt;window-cmd.pl&lt;/a&gt; (1.4 KB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The installation procedure is the same as with any other irssi scripts.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 24 Oct 2009 20:47:00 +0000</pubDate>
    <guid isPermaLink="false">http://shadowm.rewound.net/blog/archives/12-guid.html</guid>
    
</item>

</channel>
</rss>
