<?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>Geek in progress &#187; Uncategorized</title>
	<atom:link href="http://www.itkovian.net/base/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.itkovian.net/base</link>
	<description>I am not yet done.</description>
	<lastBuildDate>Thu, 20 Oct 2011 20:56:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>No more lies, just benchmarks</title>
		<link>http://www.itkovian.net/base/no-more-lies-just-benchmarks/</link>
		<comments>http://www.itkovian.net/base/no-more-lies-just-benchmarks/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 16:04:10 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[benchmarks]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/no-more-lies-just-benchmarks/</guid>
		<description><![CDATA[I was asked by the people from Zeus WPI to give a talk on benchmarking, since students need to both test and measure the code they write for several courses and apparently there still is no course which teaches people how to conduct experiments. Being the yes-saying fool that I am, I agreed and figured [...]]]></description>
			<content:encoded><![CDATA[<p>I was asked by the people from <a href="http://zeus.ugent.be">Zeus WPI</a> to give a talk on benchmarking, since students need to both test and measure the code they write for several courses and apparently there still is no course which teaches people how to conduct experiments. Being the yes-saying fool that I am, I agreed and figured out what to talk about. It turned out there are a lot of things I would like students to become more familiar with. In the end I ended up dismissing a number of more technical things, preferring to talk about as many subjects as I could.</p>
<p>I have made the <a href="http://itkovian.net/base/files/presentations/zeuswpi.20111020.pdf">slides</a> (in Dutch) available in PDF format. Ignore the jokes if you do not grok them.</p>
<p>Thanks Zeus, for the Grimbergen bottles. I will make them count.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/no-more-lies-just-benchmarks/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>hCole-server: a Snap application</title>
		<link>http://www.itkovian.net/base/hcole-server-a-snap-application/</link>
		<comments>http://www.itkovian.net/base/hcole-server-a-snap-application/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 15:12:40 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/hcole-server-a-snap-application/</guid>
		<description><![CDATA[During the 9th GhentFPG meeting, I gave a lightning talk about the hCole-server Snap application I had hacked together during the Haskell hackathon last summer in Cambridge. hCole-server acts as a front-end to a bunch of scripts that fire off a computation on the Ghent University supercomputer backend for determining the effect of a sequence [...]]]></description>
			<content:encoded><![CDATA[<p>During the 9th GhentFPG meeting, I gave a lightning talk about the hCole-server <a href="http://snapframework.com">Snap</a> application I had hacked together during the <a href="http://haskell.org">Haskell</a> hackathon last summer in Cambridge. hCole-server acts as a front-end to a bunch of scripts that fire off a computation on the Ghent University supercomputer backend for determining the effect of a sequence of optimisation passes in the LLVM compiler when applied to the SPEC CPU 200[06] benchmarks.</p>
<p>Basically, I used Snap to deal with requests, routing them to a handler that uses two Snap extensions: the HDBC extension and a filesystem cache extension I wrote. When a sequence is submitted to hCole-server in the form of a string consisting of ints separated by dashes, there are four possible outcomes:</p>
<ol>
<li>This a new sequence that has never been requested before. </li>
<li>The sequence has been requested in the past, but the experiment is still running.</li>
<li>The results for the sequence are available in the filesystem cache.</li>
<li>Some error occurred.</li>
</ol>
<p>In the first case, a new job is prepared and started, the database is updated to reflect this (inserting a busy entry for this sequence) and the server waits for the next request. In the second case, we return a JSON string indicating we’re still waiting for results to roll in. In the third case, we extract the measurements from the tarball and wrap it in a JSON data structure and return it as the server response. In the last case, we oops. This is also illustrated in the following figure.</p>
<p>Because the experiment scripts automagically fetch completed jobs from the supercomputer and store them as tarballs in the file system cache, we need a way to update the database when a new tarball rolls in. For this, we spawn a second thread that periodically checks the file system for new files that correspond to a busy entry in the database. When a corresponding tarball is found, the thread updates the databse, changing the state for the sequence from busy to done.</p>
<p>You can find the slides of the talk (mostly code) <a href="http://itkovian.net/base/files/talks/ghentfpg.20111004.pdf">here</a>.</p>
<p>Note that all code was written for Snap 0.5.x and may fail for newer versions of the framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/hcole-server-a-snap-application/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fixoring the Belgian railways in some small aspect.</title>
		<link>http://www.itkovian.net/base/fixoring-the-belgian-railways-in-some-small-aspect/</link>
		<comments>http://www.itkovian.net/base/fixoring-the-belgian-railways-in-some-small-aspect/#comments</comments>
		<pubDate>Mon, 05 Sep 2011 07:21:50 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/fixoring-the-belgian-railways-in-some-small-aspect/</guid>
		<description><![CDATA[The Belgian railways are quite well known for the frequent delays incurred by trains and travelers. The number of trains that do not make it on time to their destination (and all stations in between) has been rising steadily over the past few years. The NMBS &#8212; the part of the railway system that is [...]]]></description>
			<content:encoded><![CDATA[<p>The Belgian railways are quite well known for the frequent delays incurred by trains and travelers. The number of trains that do not make it on time to their destination (and all stations in between) has been rising steadily over the past few years. The NMBS &#8212; the part of the railway system that is responsible for the trains &#8212; present figures on these delays a few times per year. They improve their statistics somewhat by not counting certain delays, most notably those under five minutes. At the end points. So the train may still incur delays along the route, if it arrives on time at the final destination, all is well according to the stats. I beg to differ. </p>
<p>The real issue is that the statistics are based on trains, not people. No matter the number of people who will incur a real delay due to their train not being on time in some station &#8212; either an endpoint of a transit station &#8212; the NMBS will only count a single instance. To them, a train that has a delay at, say 2 p.m., is weighted equally with a delayed rush hour train. Obviously, the latter situation impacts a lot more travelers: people not making it to a connection train, tram or bus, or simply getting home later. The problem with connecting trains is that this may increase the real delay up to one hour or more. And it happens at minimum once every week. </p>
<p>I agree that the NMBS cannot fix all problems, and in some cases, they have no say in the matter, since the (old) NMBS has been split into three parts: the (new) NMBS, the infrastructure controller (Infrabel) and the holding linking the two. When a train breaks down, or an accident occurs, it is Infrabel that decides where and when the other trains will be (re)routed. Yet they have no passenger information (neither does the NMBS for that matter).</p>
<p>The real goal when solving a problem could take some lessons from computer science. Let us consider the trains to be processes that somehow have some dependencies between them. When one process breaks down or stops, because it has to wait for some data to become available, the other processes may be impacted since they may need access to some shared resource that is now being occupied by the stalled process (the borked train in our analogy). The operating system can then decide to force the offending process to release the resource (for a while) such that other processes can continue executing. Now, the analogy is not completely right, but you catch my drift, I’m sure. How would the OS decide which process can then take a hold of this shared resource? One way is to assign priorities to each process and have the process with the highest priority continue first. In the real world of trains there is a small (actually, a large) catch. Trains cannot overtake each other, except at certain well defined places (e.g., a station). </p>
<p>But let us first start with the priorities. How could we assign those to a train. Actually, there seems to be, IMHO, a quite simple solution for this. Every passenger needs to have a valid ticket before getting on the train. How about we change our infrastructure (that would yield jobs!) and force people to validate their ticket before getting on the platform. Moreover, you could deny access if their train is not coming within the next 15 minutes or so, or if there’s a previous train they cannot take (wrong ticket) still waiting. Since each ticket is used between two endpoint &#8212; and only very occasionally between the starting point and a station before the real end point &#8212; this yield information on how many people are traveling at each moment between any two train stations. Furthermore, since people tend to take the (theoretically) fastest route, it is quite predictable which station will be used for connecting trains (if people need to descend from the platform and revalidate their ticket, even this poses no issue). Thus, the NMBS (and by extension, Infrabel) have data on the number of passengers on each train and on how many people will miss their connecting train if they incur a delay. Hence, when a problem occurs (not an uncommon event on the Belgian railways), Infrabel can decide which trains to let pass first and which ones to (temporarily) put on a side track, such that the least number of people will be impacted and their overall/maximum delay will be as small as possible.</p>
<p>A boon of this system is that the NMBS will have objective numbers to decide how to schedule trains. Right now, they have some vague idea (commuters are known beforehand, but not the time at which they commute) and other travelers are mostly known on the moment they purchase a ticket. But once people are (anonymously) scanned, they gain knowledge. Patterns may arise (summer holiday travelers going to the coast, etc.) and trains can be scheduled much more effectively.</p>
<p>The above might not impact the number of trains incurring a delay, but it should certainly impact the number of affected travelers. While the former do not complain, the latter do. Quite loudly at times, and righteously so.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/fixoring-the-belgian-railways-in-some-small-aspect/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Ranking Commercial Machines through Data Transposition</title>
		<link>http://www.itkovian.net/base/ranking-commercial-machines-through-data-transposition/</link>
		<comments>http://www.itkovian.net/base/ranking-commercial-machines-through-data-transposition/#comments</comments>
		<pubDate>Tue, 30 Aug 2011 22:18:18 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[estimation]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/ranking-commercial-machines-through-data-transposition/</guid>
		<description><![CDATA[The following paper has been accepted for publication at IISWC 2011 (IEEE International Symposium on workload Characterization). Ranking Commercial Machines through Data Transposition, Beau Piccart, Andy Georges, Hendrik Blockeel, Lieven Eeckhout. The abstract of the paper reads as follows. The performance numbers reported by benchmarking consortia and corporations provide little or no insight into the [...]]]></description>
			<content:encoded><![CDATA[<p>The following paper has been accepted for publication at IISWC 2011 (IEEE International Symposium on workload Characterization).</p>
<p>Ranking Commercial Machines through Data Transposition, Beau Piccart, Andy Georges, Hendrik Blockeel, Lieven Eeckhout. </p>
<p>The abstract of the paper reads as follows.</p>
<p>The performance numbers reported by benchmarking consortia and corporations provide little or no insight into the performance of applications of interest that are not part of the benchmark suite. This paper describes data transposition, a novel methodology for addressing this ubiquitous benchmarking problem. Data transposition predicts the performance for an application of interest on a target machine based on its performance similarities with the industry-standard benchmarks on a limited number of predictive machines. The key idea of data transposition is to exploit machine similarity rather than workload similarity as done in prior work, i.e., data transposition identifies a predictive machine that is most similar to the target machine of interest for predicting performance for the application of interest.</p>
<p>We demonstrate the accuracy and effectiveness of data transposition using the SPEC CPU2006 benchmarks and a set of 117 commercial machines. We report that the machine ranking obtained through data transposition correlates well with the machine ranking obtained using measured performance numbers (average correlation coefficient of 0.93). Not only does data transposition improve average correlation, we also demonstrate that data transposition is more robust towards outlier benchmarks, i.e., the worst-case correlation coefficient improves from 0.59 by prior art to 0.71. More concretely, using data transposition to predict the top-1 machine for an application of interest leads to the best performing machine for most workloads (average deficiency of 1.2\% and max deficiency of 24.8\% for one benchmark), whereas prior work leads to deficiencies over 100\% for some workloads.</p>
<p>You can get a <a href="http://itkovian.net/base/files/papers/papers.iiswc2011.submission.pdf">preprint</a> of the paper (subject to change for the final submitted version).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/ranking-commercial-machines-through-data-transposition/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Parental leave</title>
		<link>http://www.itkovian.net/base/parental-leave/</link>
		<comments>http://www.itkovian.net/base/parental-leave/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 08:24:50 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/parental-leave/</guid>
		<description><![CDATA[During the summer of 2011, I took three months of parental leave, to which all Belgian employees are entitled. June was spent doing a lot of chores for the renovation of my home, such as putting Tasso to the walls, painting, plastering, putting up fake ceilings, etc. We also had a new kitchen installed, courtesy [...]]]></description>
			<content:encoded><![CDATA[<p>During the summer of 2011, I took three months of parental leave, to which all Belgian employees are entitled. June was spent doing a lot of chores for the renovation of my home, such as putting Tasso to the walls, painting, plastering, putting up fake ceilings, etc. We also had a new kitchen installed, courtesy of Studio RL. Though unplanned, I also dedicated some days for work, finishing two papers. July and August were dedicated to the kids. The weather was not as cooperative as I had hoped, but we managed to spent quite some time on the Ostend beach. </p>
<p>September 1st is once more a dreaded date. Not that I do not like to go back to work, but because I really enjoyed heaps of quality time with my family. Still, traditions must be honoured, so I’ll start work with two days of leave. Thus, I still have two weeks of vacation. Except that I already seem to be doing some work in the evening <img src='http://www.itkovian.net/base/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/parental-leave/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>CamHac: Haskell Hackathon in Cambridge, UK</title>
		<link>http://www.itkovian.net/base/camhac-haskell-hackathon-in-cambridge-uk/</link>
		<comments>http://www.itkovian.net/base/camhac-haskell-hackathon-in-cambridge-uk/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 06:39:19 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cole]]></category>
		<category><![CDATA[hackathon]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[uk]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/camhac-haskell-hackathon-in-cambridge-uk/</guid>
		<description><![CDATA[From August 12-14, 2011, Simon Marlow organised a Haskell Hackathon at Homerton College in Cambridge. Needless to say, several GhentFPG members were interested to attend. In the end, a party of four (Jeroen Janssen, Jasper Van Der Jeugt, Bart Coppens and myself) made the crossing to the UK. It was a smooth ride, even though [...]]]></description>
			<content:encoded><![CDATA[<p>From August 12-14, 2011, Simon Marlow organised a <a href="http://www.haskell.org/haskellwiki/CamHac">Haskell Hackathon</a> at <a href="http://www.homertonconference.com/">Homerton College</a> in Cambridge. Needless to say, several <a href="http://www.haskell.org/haskellwiki/Ghent_Functional_Programming_Group">GhentFPG</a> members were interested to attend. In the end, a party of four (Jeroen Janssen, Jasper Van Der Jeugt, Bart Coppens and myself) made the crossing to the UK. It was a smooth ride, even though the train in front of us stopped in the middle of the Channel Tunnel and we had to wait for about 50 minutes before our train was allowed to proceed. </p>
<p>We stayed at the Cambridge YHA, in a room we shared with Simon Meijer and some unnamed Belgian guy from Moeskroen, whose Dutch resembled West-Flemish quite closely. The latter was there to study during the day and party during the night. And he was not happy with the fact that we got up around 8:00 AM <img src='http://www.itkovian.net/base/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' />  I only discovered a shower with warm water on Sunday, having taken cold shower &#8212; I mean really cold &#8212; the previous two days. But the breakfast more than made up for that. </p>
<p>When signing up to CamHac, I had the plan to work on HaBench, or rather, see how <a href="https://github.com/dmpots/fibon">Fibon</a> could be made into what we envisioned during BelHac as a Haskell benchmark suite. However, research requirements dictated otherwise. Given that we are collaborating with researchers from the KULeuven on a project using COLE and active learning to build models for the effect of optimisation sequences, and that the COLE framework requires access to the supercomputer backend at Ghent University, I decided to write a Haskell web application using Snap that would allow the submission of optimisation sequences and get the results for the objective functions (speedup, compilation time, code size, …) back for the used benchmark suite. Having no previous experience with Snap, I found the framework to be easy to use. The core of the application was finished by Sunday afternoon; on the way home I added a watchdog thread to update the database with finished experiments.</p>
<p>I had a ton of fun those three days, learned a lot, and &#8212; fingers crossed &#8212; started to grok monads a bit better. The event was full, as 72 people registered. I am not sure everybody turned up, but the room was crowded at all times. And a lot of work was done, see the <a href="http://www.haskell.org/haskellwiki/CamHac/PostHackathonReport">post-hackathon</a> report.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/camhac-haskell-hackathon-in-cambridge-uk/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Predictive Learning in Two-way Datasets</title>
		<link>http://www.itkovian.net/base/predictive-learning-in-two-way-datasets/</link>
		<comments>http://www.itkovian.net/base/predictive-learning-in-two-way-datasets/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 21:15:15 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/predictive-learning-in-two-way-datasets/</guid>
		<description><![CDATA[We have a paper that is accepted in Inductive Logic Programming (ILP) 2011: Predictive Learning in Two-way Datasets, by Beau Piccart, Hendrik Blockheel, Andy Georges and Lieven Eechout. The abstract of the paper reads as follows: We introduce a new learning setting, called two-way predictive learning, as a special case of relational learning. We demonstrate [...]]]></description>
			<content:encoded><![CDATA[<p>We have a paper that is accepted in Inductive Logic Programming (ILP) 2011:</p>
<p>Predictive Learning in Two-way Datasets, by Beau Piccart, Hendrik Blockheel, Andy Georges and Lieven Eechout.</p>
<p>The abstract of the paper reads as follows:</p>
<p>We introduce a new learning setting, called two-way predictive learning, as a special case of relational learning.  We demonstrate that this learning setting has some properties that make an alternative learning approach, which we refer to as transposed learning, possible.  We show experimentally that transposed learning can yield better results in multi-target learning settings.</p>
<p>We have used this approach to improve on the results we obtained in out PACT 2006 paper, titled “Performance Prediction based on Inherent Program Similarity”. The full results of that research will be part of a future paper.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/predictive-learning-in-two-way-datasets/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Invited Talks at Prague University</title>
		<link>http://www.itkovian.net/base/invited-talks-at-prague-university/</link>
		<comments>http://www.itkovian.net/base/invited-talks-at-prague-university/#comments</comments>
		<pubDate>Tue, 14 Dec 2010 10:38:43 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[invited]]></category>
		<category><![CDATA[prague]]></category>
		<category><![CDATA[talk]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/invited-talks-at-prague-university/</guid>
		<description><![CDATA[At Evaluate 2010, I met Petr Tuma, an overall cool frood and a professor at Charles University in Prague, Czech Republic. He kindly invited me to give a talk at his institution on performance analysis. More to the point, I talked about the work we had been doing in the past &#8212; mostly my PhD [...]]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://evaluate2010.inf.usi.ch/">Evaluate 2010</a>, I met <a href="http://d3s.mff.cuni.cz/~ceres/">Petr Tuma</a>, an overall cool frood and a professor at <a href="http://www.cuni.cz/">Charles University</a> in <a href="http://www.prague.cz/">Prague</a>, Czech Republic. He kindly invited me to give a talk at his institution on performance analysis. More to the point, I talked about the work we had been doing in the past &#8212; mostly my PhD related research &#8212; on the issues we found with prevalent experimental setups (see the <a href="http://www.itkovian.net/base/how-java-programs-interact-with-virtual-machines-at-the-microarchitectural-level/">interaction paper (OOPSLA 2003)</a>), prevalent measurement and data analysis approaches (see the <a href="http://www.itkovian.net/base/statistically-rigorous-java-performance-evaluation/">Stats paper (OOPSLA 2007)</a> and the <a href="http://www.itkovian.net/base/java-performance-through-rigorous-replay-compilation/">replay paper (OOPSLA 2008)</a>). I also briefly talked about the position statement <a href="http://users.elis.ugent.be/~kdbosche/">Koen De Bosschere</a> and I had submitted to Evaluate 2010, focusing mostly on benchmark issues. The slides of the talk are <a href="http://itkovian.net/base/files/presentations/20101213.prague.invited.talk.evaluation.pdf">available</a>.</p>
<p>Next to that, I also gave a (short) talk on the metrics we devised for quantifying (throughput) performance in a consolidated system. That talk was pretty much the same I gave at HPCVirt earlier this year, so no new slides for that, excepting a few changes. In the meantime, SPEC  has published SPECvirt, and they at least seem to be being this a bit better than VMmark, but we still have to wait for more published results to become available before unleashing our wrath on it, should they do things in the wrong way <img src='http://www.itkovian.net/base/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>During this trip, I met a bunch of cool, hospitable people who are busy doing some pretty interesting research. I must confess that I had even worse issues than normal remembering names. Czech clearly is not my forte <img src='http://www.itkovian.net/base/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  After the exchange of ideas and thoughts, the trip definitely seemed to have been worthwhile. </p>
<p>The flight to Prague was pretty uneventful, but the return flight was delayed somewhat thanks to the small snow storm that decided to pick its timing in the worst possible manner to pass by and say hello. Our airplane first taxied to one runway, was de-iced there and then had to taxi all the way back to the start of the other runway, as the one we had previously been assigned to for takeoff had been snowed under too much, I think. BTW, Czech Airlines. Free food and a free drink plus coffee or tea. Eat that, Brussels Airlines. After the landing, we were not allowed to taxi up to the gate immediately for undisclosed reasons, but it made me have to run to catch a train. I skipped the purchase of the obligatory Diabolo ticket and filled in the Rail Pass with unauthorised writing gear (a ballpoint pen is obligatory, but I had only a regular pen with me). Luckily &#8212; unexpectedly too &#8212; the train arrived on time at Brussel-Noord and I could still purchase the Diabolo tax ticket. Thanks to the new schedule &#8212; which will prove to be bad in the coming days, I’m sure &#8212; I made it to the IC train to Ostend. The NMBS even managed to deliver me on time at my final destination. A rare feat, I agree.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/invited-talks-at-prague-university/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>The first Belgian Haskell Hackathon</title>
		<link>http://www.itkovian.net/base/the-first-belgian-haskell-hackathon/</link>
		<comments>http://www.itkovian.net/base/the-first-belgian-haskell-hackathon/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 21:25:54 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[belhac]]></category>
		<category><![CDATA[ghent]]></category>
		<category><![CDATA[hackathon]]></category>
		<category><![CDATA[haskell]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/the-first-belgian-haskell-hackathon/</guid>
		<description><![CDATA[During the weekend of November 5-7, 2010, The Ghent Functional Programming Group and the ZeusWPI organised a Haskell hackathon, the first of these events to take place on Belgian soil. Thanks to Ghent University, we had obtained a nice venue: a refurbished coal power plant, of which we could use the upper floor, where the [...]]]></description>
			<content:encoded><![CDATA[<p>During the weekend of November 5-7, 2010, <a href="http://www.haskell.org/haskellwiki/Ghent_Functional_Programming_Group">The Ghent Functional Programming Group</a> and the <a href="http://zeus.ugent.be">ZeusWPI</a> organised a <a href="http://haskell.org">Haskell</a> hackathon, the first of these events to take place on Belgian soil. </p>
<p><center><a href="http://www.flickr.com/photos/itkovian/5150773869/" title="The organisers by Itkovian, on Flickr"><img src="http://farm5.static.flickr.com/4042/5150773869_2cbdae42de.jpg" width="500" height="333" alt="The organisers" /></a></center></p>
<p>Thanks to <a href="http://www.ugent.be">Ghent University</a>, we had obtained a nice venue: a refurbished coal power plant, of which we could use the upper floor, where the huge silos for storing the coals were located.</p>
<p><center><a href="http://www.flickr.com/photos/itkovian/5150736193"><img src="http://farm5.static.flickr.com/4149/5150736193_fb45497772.jpg" alt="The Therminal" /></a></center></p>
<p>The event entailed three days. On Friday we had the registration, the hey-cool-to-see-you-are-here-too and general get-to-know each other, followed by a very nice talk by Miran Lipovača, the author of the ‘Learn you a Haskell for great good’ book (soon to be available from your favorite bookshop(s)). From 5 p.m. onwards, we had the Functional Programming in Industry symposium, where Duncan Coutts, Romain and Donald Steward entertained the masses with great stories about using FP in their daily work. Since we be engineers, and the tradition of our department states that talks in the Jozef Plateau-room are followed by a reception (at least, when people defend their PhD. this is the case, but let’s ignore that little trivia for the moment), we also fed the masses with a bunch of excellent (220) sandwiches. Sadly, some were left over, even though the local folks ate more than (twice) their share once it became clear that there would be leftovers. No worries, we’re well trained, given the number of PhD’s defended every year.</p>
<p>The weekend itself was pretty much devoted to the actual hacking. Kenneth (boegel) and I found some support for our <a href="https://github.com/itkovian/HaBench">HaBench</a> effort in the person of Yuriy Kashnikov. After a round of project introductions, the work began in earnest only to be briefly interrupted by the announcement that food was available, kindly provided by <a href="http://www.hetstokbroodje.be">Het Stokbroodje</a> (we paid, of course, but still, the food was yummy and they delivered on both Saturday and Sunday). The evening saw a march with a few hackers to Julien, Ghent’s moat famous french fries place (I’m told).</p>
<p>On Sunday, hacking continued and in the afternoon, a few 5-minute lightning talks were held by people who considered having made significant progress. I briefly talked about HaBench (<a href="http://itkovian.net/base/files/belhac.habench.pdf">slides (PDF)</a>). The general reception was pretty good, I believe. Clearly, a new benchmark suite is highly desirable. Finally, we wrapped up and cleaned shop before the housekeeper came round to chase us out again.</p>
<p><a href="http://www.flickr.com/photos/itkovian/5150737575/" title="The Geeks by Itkovian, on Flickr"><img src="http://farm2.static.flickr.com/1427/5150737575_cb9d199601.jpg" width="500" height="326" alt="The Geeks" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/the-first-belgian-haskell-hackathon/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Moving hMollom to a monadic base</title>
		<link>http://www.itkovian.net/base/moving-hmollom-to-a-monadic-base/</link>
		<comments>http://www.itkovian.net/base/moving-hmollom-to-a-monadic-base/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 22:52:40 +0000</pubDate>
		<dc:creator>Itkovian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[mollom]]></category>

		<guid isPermaLink="false">http://www.itkovian.net/base/moving-hmollom-to-a-monadic-base/</guid>
		<description><![CDATA[In a move to finally grok monads and monad stack a bit better, I decided to move the hMollom code to a monad based implementation. The exported functions now execute in the MollomMonad, which at this point is defined as follows: type MollomState = ReaderT MollomConfiguration (StateT MollomServerList IO) type MollomMonad = ErrorT MollomError (StateT [...]]]></description>
			<content:encoded><![CDATA[<p>In a move to finally grok monads and monad stack a bit better, I decided to move the hMollom code to a monad based implementation. The exported functions now execute in the MollomMonad, which at this point is defined as follows:</p>
<p><code><br />
type MollomState = ReaderT MollomConfiguration (StateT MollomServerList IO)<br />
type MollomMonad = ErrorT MollomError (StateT (Maybe SessionID) MollomState)<br />
</code></p>
<p>The main concept of the code remains the same, each exported function calls the service function. The latter returns a MollomState a, to capture the fact that during the Mollom request, we potentially need to update the list of servers we can query with API calls. This result is then lifted into the MollomMonad stack by using the following function.</p>
<p><code><br />
returnStateT a = StateT $ \s -&gt; liftM (flip (,) s) a<br />
</code></p>
<p>This is illustrated in the following control flow figure (for a full sized image, follow the link to flickr):</p>
<p><a href="http://www.flickr.com/photos/itkovian/4512751644/" title="Control flow in hMollom by Itkovian, on Flickr"><img src="http://farm3.static.flickr.com/2279/4512751644_0be66612e4.jpg" width="500" height="463" alt="Control flow in hMollom" /></a></p>
<p>The error handling is done by usage of the ErrorT monad transformer, which add the possibility to return a Left MollomError as function value, indicating a fault during the handling of the request. At this point, I have not added a decent runMollomMonad function, as I am still pondering which functions may be most useful for the users of this library. However, you can easily employ the following function, where defaultMollomConfiguration :: MollomConfiguration and we start without any servers that are available.</p>
<p><code><br />
(\m -&gt; (runStateT $ (runReaderT $ (runStateT . runErrorT $ m) (Nothing) ) defaultMollomConfig) UninitialisedServerList)<br />
</code></p>
<p>As usual, the code is available from both the <a href="http://github.com/itkovian/hMollom">GitHub repository</a>, as well as from <a href="http://hackage.haskell.org/package/hMollom">Hackage</a>. All feedback is welcome. Thanks to #haskell and #ghentfpg for bearing with my questions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.itkovian.net/base/moving-hmollom-to-a-monadic-base/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

