<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andreas Blaafladt &#187; Software</title>
	<atom:link href="http://andreasblaafladt.com/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://andreasblaafladt.com</link>
	<description>Random thoughts on studying and computer science</description>
	<lastBuildDate>Fri, 17 Aug 2007 09:29:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Does your hard disc drive (hdd) appear to be slower than before?</title>
		<link>http://andreasblaafladt.com/2007/03/13/does-your-hard-disc-drive-hdd-appear-slower-than-it-used-to/</link>
		<comments>http://andreasblaafladt.com/2007/03/13/does-your-hard-disc-drive-hdd-appear-slower-than-it-used-to/#comments</comments>
		<pubDate>Tue, 13 Mar 2007 01:05:00 +0000</pubDate>
		<dc:creator>andreas</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://andreasblaafladt.com/2007/03/13/does-your-hard-disc-drive-hdd-appear-slower-than-it-used-to/</guid>
		<description><![CDATA[Mine did, anyway.  I have a ThinkPad R52 which I have been running with the same installation of Windows XP from the day I got it, approximately 19 months ago.  Recently I&#8217;ve noticed that disk operations were slow and required huge amounts of cpu cycles (mainly kernel mode) causing excessive delay in my [...]]]></description>
			<content:encoded><![CDATA[<p>Mine did, anyway.  I have a <a href="http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-58832">ThinkPad R52</a> which I have been running with the same installation of Windows XP from the day I got it, approximately 19 months ago.  Recently I&#8217;ve noticed that disk operations were slow and required huge amounts of cpu cycles (mainly kernel mode) causing excessive delay in my interactive programs.  This appeared a lot like DMA issues we experienced in the MS DOS-days. </p>
<p>The Windows Device manager reported that my hdd was in fact not in UDMA-5 mode but PIO.  Several attempts at switching back to DMA proved worthless.  Hacking Windows Registry or debugging possibly faulty hardware isn&#8217;t exactly my idea of fun, so I was very pleased when a random search on Google directed me to <a href="http://www.techimo.com/forum/t169432.html">this</a> thread at <a href="http://www.techimo.com/">www.techimo.com</a>.  Long story short, a new version of a <a href="http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-58652">SATA Power management driver for Windows 2000/XP</a> provided by Lenovo magically resolved the issue. The problem is listed in the driver&#8217;s changelog under version 1.2  &#8220;(Fix) Solves a hard drive being slow due to change the transfer mode from UDMA-5 to PIO. (This will resume to the UDMA-5 mode at installation time)&#8221;</p>
<p>What caused the switch from UDMA-5 to PIO initially is nothing I care to find out about, but I guess it can be traced back to a particular Microsoft Windows Update. Since I haven&#8217;t done anything out of the ordinary in the configuration of my laptop, I suspect a lot of other ThinkPad owners share my experience.</p>
]]></content:encoded>
			<wfw:commentRss>http://andreasblaafladt.com/2007/03/13/does-your-hard-disc-drive-hdd-appear-slower-than-it-used-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remind &#8211; a sophisticated calendar and alarm program</title>
		<link>http://andreasblaafladt.com/2007/02/02/remind-a-sophisticated-calendar-and-alarm-program/</link>
		<comments>http://andreasblaafladt.com/2007/02/02/remind-a-sophisticated-calendar-and-alarm-program/#comments</comments>
		<pubDate>Fri, 02 Feb 2007 01:31:13 +0000</pubDate>
		<dc:creator>andreas</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://andreasblaafladt.com/2007/02/02/remind-a-sophisticated-calendar-and-alarm-program/</guid>
		<description><![CDATA[I&#8217;ve been using Remind for several years now, with great success.  For instance, I&#8217;ve put Remind in charge of reminding me of upcoming birthdays, whether it is relatives or friends, giving me a fair chance of greeting them or buying a present in advance.  The scripting language is a bit overwhelming, but instructing [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.roaringpenguin.com/penguin/openSourceProducts/remind">Remind</a> for several years now, with great success.  For instance, I&#8217;ve put Remind in charge of reminding me of upcoming birthdays, whether it is relatives or friends, giving me a fair chance of greeting them or buying a present in advance.  The scripting language is a bit overwhelming, but instructing Remind to remind you about simple repetetive events or one-time-events is quite simple.  The fun, and perhaps frustration, begins when you need to deal with moving holidays and other exceptions. </p>
<p>Remind by itself is a console application, but several front/back-ends have been written for Remind, making it attractive for those of us who prefer graphical user interfaces.</p>
<p>I run Remind from my console every time I log in, using the following technique in /etc/profile<br />
<code><br />
if [ -f ~/.reminders ]; then<br />
        /usr/bin/remind<br />
fi<br />
</code></p>
<p>To give the reader an introduction to Remind syntax, I&#8217;ve prepared a couple of simple Remind rules. </p>
<p><code><br />
# Remind me 14 days in advance that andreasblaafladt.com expires on 2008-01-02<br />
rem 2 Jan 2008 +14 MSG andreasblaafladt.com expires %b<br />
</code><br />
<code><br />
# I pay the rent the 1st of every month, but I like to be reminded a week in advance<br />
rem 1 +7 MSG Rent is due %b<br />
</code><br />
<code><br />
# I have a meeting at a particular day at a given time.<br />
rem 13 feb 2007 +7 AT 18:30 MSG Meeting with John Doe %b<br />
</code></p>
<p>%b is replaced with a text indicating how many days there&#8217;s left to the given date.  There&#8217;s a wealth of substitution sequences, read the manpage for details.</p>
<p>Now that we&#8217;re over the basics, I&#8217;ll try to demonstrate some of the power of Remind while still keeping it simple.</p>
<p><code><br />
# I report and pay taxes the 10th of every second month, or the following monday if the 10th is a saturday or sunday.<br />
# Example output: taxes on 12/02/2007 (in 10 days' time)<br />
rem 10 Mon, Tue, Wed, Thu, Fri +15 SATISFY [monnum(trigdate()) % 2 == 0] MSG taxes %e (%b)<br />
</code><br />
<code><br />
# Function which returns a string with the difference (in years) between yr and the day of the trigger<br />
FSET _yr_num(yr)                ORD(YEAR(TRIGDATE()) - yr)<br />
</code><br />
<code><br />
# Here's a rule for reminding me about a birthday (30 days ahead)<br />
# and using the above function to calculate age dynamically every year.<br />
# Example output:  John Doe 27th bursdag in 32 days' time<br />
REM 6 Mar +30 MSG John Doe [_yr_num(1980)] birthday %b<br />
</code></p>
<p>Using the tools shipped with Remind you can easily generate a calendar in postscript format handy for printout.</p>
<p>The following command gives you a single-paged pdf document with the current month and all your defined events in a nice calendar layout, suitable for distribution or printing out and keeping on the refrigerator.<br />
<code><br />
$ remind -p -m -c1|rem2ps -m A4 -l -e |ps2pdf - > calendar-`date '+%G-%b'`.pdf<br />
</code></p>
<p>All in all, remind is both powerful and extemely useful for describing repetetive events with or without exceptions.</p>
]]></content:encoded>
			<wfw:commentRss>http://andreasblaafladt.com/2007/02/02/remind-a-sophisticated-calendar-and-alarm-program/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CRM114 &#8211; the Controllable Regex Mutilator</title>
		<link>http://andreasblaafladt.com/2007/01/28/crm114-the-controllable-regex-mutilator/</link>
		<comments>http://andreasblaafladt.com/2007/01/28/crm114-the-controllable-regex-mutilator/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 15:13:39 +0000</pubDate>
		<dc:creator>andreas</dc:creator>
				<category><![CDATA[MSc]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://andreasblaafladt.com/2007/01/28/crm114-the-controllable-regex-mutilator/</guid>
		<description><![CDATA[Last week I spent quite a lot of time on CRM114 which according to the website is &#8220;a system to examine incoming e-mail, system log streams, data files or other data streams, and to sort, filter, or alter the incoming files or data streams according to the user&#8217;s wildest desires. Criteria for categorization of data [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I spent quite a lot of time on <a href="http://crm114.sourceforge.net">CRM114</a> which according to the <a href="http://crm114.sourceforge.net/">website</a> is &#8220;a system to examine incoming e-mail, system log streams, data files or other data streams, and to sort, filter, or alter the incoming files or data streams according to the user&#8217;s wildest desires. Criteria for categorization of data can be via a host of methods, including regexes, approximate regexes, a Hidden Markov Model, Orthogonal Sparse Bigrams, WINNOW, Correllation, KNN/Hyperspace, or Bit Entropy ( or by other means- it&#8217;s all programmable).&#8221;</p>
<p>CRM114&#8217;s programming language is not similar to anything I&#8217;ve seen before, with it&#8217;s declensional syntax instead of the more common ordinary positional syntax, strange keywords and lack of types (Everything is a String), but once you get ahold of it all, the author promises that you&#8217;ll be able to &#8220;write the filter of your dreams&#8221;.</p>
<p>A couple of example programs<br />
First, a <a href="http://en.wikipedia.org/wiki/Rot13">ROT13</a> implementation.<br />
<code><br />
#!/usr/bin/crm<br />
translate /a-zA-Z/ /n-za-mN-ZA-M/<br />
accept<br />
</code></p>
<p>This code takes input from stdin and gives output to stdout.<br />
Example<br />
<code><br />
$ echo "CRM is so great."|./rot13.crm<br />
PEZ vf fb terng.<br />
</code></p>
<p>A <a href="http://en.wikipedia.org/wiki/Reverse_Polish_notation">Reverse Polish Notation </a>calculator<br />
<code><br />
#!/usr/bin/crm<br />
{<br />
        eval (:_dw:) / :@:R:*:_dw: : /<br />
        output /:*:_dw:\n/<br />
}<br />
</code></p>
<p>Example usage<br />
<code><br />
$ echo "2 5 2 * + 5 +"|./rpn.crm<br />
 17<br />
</code></p>
<p>But the real strengths of CRM114 lies in it&#8217;s ability to learn and classify text and other streams of data. At this point, CRM114 has seven different classifiers with different advantages. Some can do N-way choices while others do simple Yes/No-choices.</p>
]]></content:encoded>
			<wfw:commentRss>http://andreasblaafladt.com/2007/01/28/crm114-the-controllable-regex-mutilator/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
