<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.2.1" -->
<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/"
	>

<channel>
	<title>Peter's home page</title>
	<link>http://peter.molnar.cc</link>
	<description>It's now or never</description>
	<pubDate>Mon, 13 Apr 2009 17:17:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>
	<language>en</language>
			<item>
		<title>Howto check the integrity of a torrent download</title>
		<link>http://peter.molnar.cc/2008/12/20/howto-check-the-integrity-of-a-torrent-download/</link>
		<comments>http://peter.molnar.cc/2008/12/20/howto-check-the-integrity-of-a-torrent-download/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 20:53:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://peter.molnar.cc/2008/12/20/howto-check-the-integrity-of-a-torrent-download/</guid>
		<description><![CDATA[
Recently, I&#8217;ve tried to download a torrent containing several individual files using bittornado and the download stalled at something like 99%, so I needed to check, which of the individual files were downloaded completely. An apt-get search lead to cfv, a versatile file checksum creator and verifier.
$ sudo apt-get install cfv
$ btshowmetainfo foo.torrent
You now get [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>Recently, I&#8217;ve tried to download a torrent containing several individual files using bittornado and the download stalled at something like 99%, so I needed to check, which of the individual files were downloaded completely. An <tt>apt-get search</tt> lead to <tt>cfv</tt>, a <i>versatile file checksum creator and verifier</i>.</p>
<pre class="wikicode"><code>$ sudo apt-get install cfv
$ btshowmetainfo foo.torrent</code></pre>
<p>You now get the torrent&#8217;s contents listed, <tt>cd</tt> into the directory containing the listed files.</p>
<pre class="wikicode"><code>$ cfv -f foo.torrent</code></pre>
<p>The files are now checked, and the incomplete files will be listed.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2008/12/20/howto-check-the-integrity-of-a-torrent-download/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Half of common lisp</title>
		<link>http://peter.molnar.cc/2008/07/20/half-of-common-lisp/</link>
		<comments>http://peter.molnar.cc/2008/07/20/half-of-common-lisp/#comments</comments>
		<pubDate>Sun, 20 Jul 2008 18:44:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/2008/07/20/half-of-common-lisp/</guid>
		<description><![CDATA[
Accorring to Greenspun&#8217;s Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc, informally specified, bug-ridden, slow implementation of half of Common Lisp.
That guy&#8217;s damn right! I think that I&#8217;ve just implemented one.

]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>Accorring to <a href="http://en.wikipedia.org/wiki/Greenspun%27s_Tenth_Rule" onclick="window.open(this.href, '_blank'); return false;">Greenspun&#8217;s Tenth Rule of Programming</a>: <i>any sufficiently complicated C or Fortran program contains an ad hoc, informally specified, bug-ridden, slow implementation of half of Common Lisp.</i></p>
<p>That guy&#8217;s damn right! I think that I&#8217;ve just implemented one.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2008/07/20/half-of-common-lisp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>USB speakers for my Alix board</title>
		<link>http://peter.molnar.cc/2008/05/15/usb-speakers-for-my-alix-board/</link>
		<comments>http://peter.molnar.cc/2008/05/15/usb-speakers-for-my-alix-board/#comments</comments>
		<pubDate>Thu, 15 May 2008 13:41:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=30</guid>
		<description><![CDATA[
Because I needed USB speakers for my Alix board, I&#8217;ve made a quick search on geizhals.at and ordered what seemed the most reasonable to me: a pair of Techsolo TL-2020 USB speakers. They were USB powered (+), the price was some 10 Eur (+) and the power 10W (+). (If you stop reading here: don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>Because I needed USB speakers for my Alix board, I&#8217;ve made a quick search on <a href="http://geizhals.at" onclick="window.open(this.href, '_blank'); return false;">geizhals.at</a> and ordered what seemed the most reasonable to me: a pair of <i>Techsolo TL-2020</i> USB speakers. They were USB powered (+), the price was some 10 Eur (+) and the power 10W (+). (If you stop reading here: <strong>don&#8217;t order them</strong>, read the conclusion!)</p>
<p>After plugging them into my Linux laptop they seemed to work. When I used them with my Alix board, the first strange thing that appeared was that they went into an undefined state (power led permanently off) when I turned on the desk lamp (wtf?).</p>
<p>The next and bigger trouble was, that I was able to bring them into an undefined state (garbage sound and/or power led off) by permanently starting and stopping playback in 1 second intervals during some hour. This worked reproducibly. The playback was done using my own player coded against the OSS API and talking to the <tt>snd-pcm-oss, snd-usb-audio</tt> kernel drivers.</p>
<p>First I&#8217;ve suspected the USB sound driver and tried to do some debugging, but without much luck.</p>
<p>Because this misbehavior was unacceptable for me, I decided to order some other USB speakers, but this time I was more carefully choosing the brand and model. The  NSLU2-linux guys were recommending some <a href="http://www.nslu2-linux.org/wiki/HowTo/SlugAsAudioPlayer" onclick="window.open(this.href, '_blank'); return false;">USB sound chips</a> as being known to work and the page at least mentions <i>Logitech V10</i> speakers. Using another google search I&#8217;ve found a <a href="http://gentoo-wiki.com/HOWTO_Logitech_V10_Notebook_Speakers" onclick="window.open(this.href, '_blank'); return false;">howto</a> on making those speakers work with gentoo, so apparently someone has made them work under Linux. And using yet another google search, I&#8217;ve discovered that at least some revision of the <i>V10</i> speakers used one of the chips the NSLU2-linux guys recommended as known to work.</p>
<p>Although they were more expensive (30 Eur), I&#8217;ve decided to order them because of their apparent good reputation. They work flawlessly. The test that brought the <i>techsolo</i> speakers down in one hour was unable to bring the <i>logitech</i> speakers down during 2 days.</p>
<h2 id="toc1"> Conclusion</h2>
<ul>
<li>Logitech v10 USB speakers work flawlessly for me with Linux.</li>
<li>I don&#8217;t recommend Techsolo TL-2020 USB speakers to be used with Linux.</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2008/05/15/usb-speakers-for-my-alix-board/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Compile-time algorithms with C++ templates</title>
		<link>http://peter.molnar.cc/2008/05/15/compile-time-algorithms-with-c-templates/</link>
		<comments>http://peter.molnar.cc/2008/05/15/compile-time-algorithms-with-c-templates/#comments</comments>
		<pubDate>Thu, 15 May 2008 13:01:07 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=29</guid>
		<description><![CDATA[
Recently, I was traveling in the train with a friend and we were talking about programming languages. So I&#8217;ve told him why C++ is among my favorite languages and what I think are its killer features. One of them were templates, and I mentioned that while java generics are implemented only by inserting cast byte [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>Recently, I was traveling in the train with a friend and we were talking about programming languages. So I&#8217;ve told him why C++ is among my favorite languages and what I think are its killer features. One of them were templates, and I mentioned that while java generics are implemented only by inserting cast byte code instructions at the right places, C++ templates are a turing-complete functional programming language.</p>
<p>He looked very surprised about that, so I have written a small example for demonstration, the compile-time factorial algorithm</p>
<pre class="wikicode"><code>#include &lt;iostream&gt;

// general formula for all N
template&lt;int N&gt;
struct factorial {
    static const int value = N * factorial&lt;N - 1&gt;::value;
};

// specialization for 0
template&lt;&gt;
struct factorial&lt;0&gt; {
    static const int value = 1;
};

int main() {
    typedef factorial&lt;7&gt; fac;
    std::cout &lt;&lt; fac::value &lt;&lt; std::endl;
}</code></pre>
<p>The nice thing about this compile-time algorithm is, that its run-time complexity is <tt>O(1)</tt>, as the generated machine code only prints the result (5040), which is computed at compile-time:</p>
<pre class="wikicode"><code>105                            .loc 1 18 0
106 0083 C745F8B0              movl    $5040, -8(%ebp)
106      130000
107                            .loc 1 19 0
108 008a 8B45F8                movl    -8(%ebp), %eax
109 008d 89442404              movl    %eax, 4(%esp)
110 0091 C7042400              movl    $_ZSt4cout, (%esp)
^^ std::cout
110      000000
111 0098 E8FCFFFF              call    _ZNSolsEi
^^ std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(int)</code></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2008/05/15/compile-time-algorithms-with-c-templates/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Installing Debian GNU/Linux on a Alix board</title>
		<link>http://peter.molnar.cc/2008/04/11/installing-debian-gnulinux-on-a-alix-board/</link>
		<comments>http://peter.molnar.cc/2008/04/11/installing-debian-gnulinux-on-a-alix-board/#comments</comments>
		<pubDate>Fri, 11 Apr 2008 21:56:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=20</guid>
		<description><![CDATA[
The next step after having acquired my Alix 2C3 was to install Debian. Here&#8217;s the installation procedure in case you want to setup your own one:
 Partition your CF card
Get yourself a CF card reader, plug in the CF card and determine what the device special file for the CF card is, for me it [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>The next step after having acquired my Alix 2C3 was to install Debian. Here&#8217;s the installation procedure in case you want to setup your own one:</p>
<h2 id="toc9"> Partition your CF card</h2>
<p>Get yourself a CF card reader, plug in the CF card and determine what the device special file for the CF card is, for me it was <tt>/dev/sdb</tt> and create a partition for Linux. I&#8217;ve put Linux into the second partition, <tt>/dev/sdb2</tt>, so the rest of the installation procedure assumes this.</p>
<pre class="wikicode"><code>$ fdisk /dev/sdb
fdisk&gt; p
... remove factory-default partition
fdisk&gt; d 1
... create partition for Linux
fdisk&gt; c 2
... don't forget to mark it as bootable
fdkis&gt; a 2
fdisk&gt; w</code></pre>
<p>Install MBR on CF card.</p>
<pre class="wikicode"><code>$ install-mbr /dev/sdb</code></pre>
<h2 id="toc10"> Create filesystem</h2>
<pre class="wikicode"><code>$ mkfs.ext2 /dev/sdb2</code></pre>
<h2 id="toc11"> Bootstrap debian</h2>
<p>I&#8217;ve used <tt>debootstrap</tt> to set up a debian base system on the CF card:</p>
<pre class="wikicode"><code>$ apt-get install debootstrap
$ mount /dev/sdb2 /mnt
$ debootstrap --arch i386 sid /mnt http://ftp.sk.debian.org/debian</code></pre>
<p>To install additional packages, just <tt>chroot</tt> into the fresh Debian system and run <tt>apt-get</tt>.</p>
<pre class="wikicode"><code>$ mount /dev/sdb2 /mnt
$ chroot /mnt /bin/bash
chroot&gt; apt-get install sl</code></pre>
<p>For the base system to work, it needs to be configured a bit. Most notably, it has to be told to run a console on the serial line. Edit <tt>/etc/inittab</tt> on the CF card. Remove (or comment-out) all lines of the form:</p>
<pre class="wikicode"><code>... /sbin/getty ... ttyN</code></pre>
<p>Those lines tell <tt>init</tt> to spawn consoles and display a login prompt on virtual terminals 1 - 6. Add the following line instead:</p>
<pre class="wikicode"><code>T0:23:respawn:/sbin/getty -L ttyS0 38400</code></pre>
<h2 id="toc12"> Install kernel</h2>
<p>You could just <tt>chroot</tt> into the Linux partirion and run <tt>apt-get install linux-image-2.6-486</tt> but this procedure tries to install a lot of unnecessary dependencies. Another option is to download the Debian kernel package on the development machine, unpack it, an setup it manually on the CF card:</p>
<pre class="wikicode"><code># Download kernel package on devel machine
$ apt-get -d install linux-image-2.6.24-1-486
$ mkdir /tmp/kern
$ dpkg --extract \
    /var/cache/apt/archives/linux-image-2.6.24-1-486_*.deb \
    /tmp/kern
# Mount CF partion into /mnt
$ cp /tmp/kern/boot/* /mnt/boot
$ cp -R /tmp/kern/lib/modules/2.6.24-1-486 /mnt/lib/modules
$ chroot /mnt /bin/bash
chroot&gt; depmod -a 2.6.24-1-486
chroot&gt; exit</code></pre>
<p>Next, you need an <tt>initramfs</tt> image for the installed kernel. You can create one using <tt>mkinitramfs</tt>:</p>
<pre class="wikicode"><code>$ cp -R /etc/initramfs-tools /tmp
# Now, you can tune the settings in /tmp/initramfs-tools
# Mount Linux partition on CF card into /mnt
$ ln -s /mnt/lib/modules/2.6.24-1-486 /lib/modules/2.6.24-1-486
$ mkinitramfs -d /tmp/initramfs-tools -o /mnt/boot/initramfs-2.6.24-1-486 \
    2.6.24-1-486
$ rm /lib/modules/2.6.24-1-486</code></pre>
<h2 id="toc13"> Install grub</h2>
<p>To make the CF card bootable, grub is needed. Start by installing the <tt>grub</tt> package on the fresh Linux system:</p>
<pre class="wikicode"><code># Mount linux partioon on CF card int /mnt
$ chroot /mnt /bin/bash
chroot&gt; apt-get install grub
chroot&gt; mkdir /boot/grub
chroot&gt; cp /usr/lib/grub/i386-pc/* /boot/grub
chroot&gt; exit</code></pre>
<p>Then, setup grub on the CF card. Assume your CF card corresponds to device <tt>/dev/sdb</tt>. Create a file, <tt>/tmp/device-map</tt> with the following content, that tells grub that <tt>(hd0)</tt> should be mapped to <tt>/dev/sdb</tt>:</p>
<pre class="wikicode"><code>(hd0) /dev/sdb</code></pre>
<p>Then, start grub from the command line and continue the installation:</p>
<pre class="wikicode"><code>$ grub --device-map /tmp/device-map
grub&gt; root (hd0,1)
grub&gt; setup (hd0,1)</code></pre>
<p>And finally you have to create a boot menu for grub on the CF card, <tt>/boot/grub/menu.lst</tt>:</p>
<pre class="wikicode"><code>serial --speed=38400
terminal serial

timeout 5
default 0

title 2.6.24-1-486
root (hd0,1)
kernel /boot/vmlinuz-2.6.24-1-486 root=/dev/hda2 console=ttyS0,38400n8
initrd /boot/initramfs-2.6.24-1-486</code></pre>
<p><b>Edit:</b> Someone has pointed out, that the above procedure of installing grub did not work for him. Instead, he did the following on his development machine:</p>
<pre class="wikicode"><code>$ echo '(hd0)  /dev/sdb' &gt; /mnt/boot/grub/device.map
$ grub-install --root-directory=/mnt /dev/sdb</code></pre>
<h2 id="toc14"> Boot the board</h2>
<p>At this point you should be able to boot the Alix board from the CF card. Network and USB worked for me out of the box.</p>
<p><b>Edit:</b> An user reported the following problem during booting:</p>
<pre class="wikicode"><code>resume: libgcrypt version: 1.2.3
resume: Could not stat the resume device file.
        Please type in the file name to try again
        or press ENTER to boot</code></pre>
<p>The fix was to remove the initramfs-tools config file <tt>/tmp/initramfs-tools/conf.d/resume</tt> and to add the option <tt>noresume</tt> to the kernel commandline.</p>
<h2 id="toc15"> Goodie: install LED driver</h2>
<p>Debian includes a source package for the led driver, <tt>alix-leds-source</tt>.  You can build the driver on your development machine:</p>
<pre class="wikicode"><code># Need headers for kernel on alix
devel&gt; apt-get install linux-headers-2.6.24-1-486
# Get driver source
devel&gt; module-assistant get leds-alix-source
# Build package for target kernel
devel&gt; module-assistant -l 2.6.24-1-486 leds-alix</code></pre>
<p>Voila! There is now a deb <tt>leds-alix-modules&#8230;</tt> in <tt>/usr/src</tt>. Just install it on the CF card. And don&#8217;t forget to put <tt>leds-alix</tt> into your <tt>/etc/modules</tt> on the alix board.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2008/04/11/installing-debian-gnulinux-on-a-alix-board/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Choosing a cheap board for my embedded app</title>
		<link>http://peter.molnar.cc/2008/04/10/choosing-a-cheap-board-for-my-embedded-app/</link>
		<comments>http://peter.molnar.cc/2008/04/10/choosing-a-cheap-board-for-my-embedded-app/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 12:39:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=21</guid>
		<description><![CDATA[
Recently, I had the need for a small and cheap board, to run a Linux system with my custom application. My requirements for the board were:

Portable and quiet.
For my development cycle to be the shortest possible: it should run the distro I&#8217;m the most familiar with: Debian GNU/Linux.
I needed to attach several devices via Ethernet. [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>Recently, I had the need for a small and cheap board, to run a Linux system with my custom application. My requirements for the board were:</p>
<ul>
<li>Portable and quiet.</li>
<li>For my development cycle to be the shortest possible: it should run the distro I&#8217;m the most familiar with: Debian GNU/Linux.</li>
<li>I needed to attach several devices via Ethernet. So at least one Ethernet adapter. More than one would be good, they would obsolete the need for a switch.</li>
<li>USB port.</li>
<li>Audio out or additional USB port for USB speakers.</li>
</ul>
<p>In the short time I had for choosing the board, I&#8217;ve considered the following candidates:</p>
<h2 id="toc20"> Mass market Linux devices</h2>
<p>The NSLU2 would be a good candidate, but the small amount of flash was unsuitable for my app and I felt like an additional USB stick to hold the app was just uncool. Linux powered NAS devices would be an option too, but they were not cheap.</p>
<p>Further, one needs to run custom distros like OpenWRT on those devices. Although they are feature rich and support a lot of packages, I&#8217;m not so familiar with them, so getting all packages I need for my application would take me more time than a simple <tt>apt-get</tt>.</p>
<h2 id="toc21"> Intel D201GLY2</h2>
<p>My first candidate was an <a href="http://www.intel.com/products/motherboard/D201GLY2/index.htm" onclick="window.open(this.href, '_blank'); return false;">mini-ITX motherboard with an Intel Celeron on board</a> for around 40 Eur. Equipped with everything you would expect from a PC platform:</p>
<ul>
<li>Intel Celeron 1.2 GhZ CPU on board</li>
<li>1 x Ethernet</li>
<li>IDE</li>
<li>SATA (obsolete for me)</li>
<li>USB</li>
<li>audio</li>
<li>VGA (obsolete for me, reported to not work well with Linux)</li>
</ul>
<p><img src="http://peter.molnar.cc/wp-content/uploads/d201gly2_big1.jpg" style="display: block; margin-left: auto; margin-right: auto;" width="320" height="196" alt="d201gly2_big1.jpg" /></p>
<p>Although the CPU is passively cooled, some guys wrote they would recommend a CPU fan or at least a fan in the case, because their CPU got quite hot. RAM for the board was very cheap and I&#8217;ve planned to equip it with a 2GB IDE flash drive.</p>
<p>The main problem with the board for me was, that the smallest case I&#8217;ve found, the <a href="http://www.morex.com.tw/products/productdetail.php?fd_id=110" onclick="window.open(this.href, '_blank'); return false;">Morex T-3310</a> was too big for me (230 mm x 205 mm x 90 mm) and more expensive (89 Eur) than all components of the system in sum. The power supply was an external one that looks like a notebook power supply, so not small at all (portability&#8211;).</p>
<h2 id="toc22"> eBOX-2300-H</h2>
<p>The next candidate, was a small x86 compatible box, the eBOX-2300-H for around 150 Eur. The size 115 x 115 x 35 mm can&#8217;t be beated! It featured:</p>
<ul>
<li>200MhZ vortex86 x86 compatible CPU (300MhZ available, but some problems with the missing FPU unit <a href="http://www.trawlr.com/items/5145005" onclick="window.open(this.href, '_blank'); return false;">were reported when running Linux</a>)</li>
<li>128MB RAM on board</li>
<li>2 x USB</li>
<li>1 x Audio (very good)</li>
<li>1 x Ethernet</li>
<li>1 x VGA (obsolete)</li>
<li>1 X IDE for laptop drive (obsolete, but maybe practical for installation)</li>
<li>CF card slot</li>
<li>Comes already in case (very cool!)</li>
</ul>
<p><img src="http://peter.molnar.cc/wp-content/uploads/ebox23001.jpg" style="display: block; margin-left: auto; margin-right: auto;" width="200" height="126" alt="ebox23001.jpg" /></p>
<p>Although 128 MB RAM was enough for me (I&#8217;ve tested my app in a XEN instance with 128MB RAM without swap), if there was the possibility to get more RAM cheaply, I would take if for just the case, you never know.</p>
<p>The main problem with that hardware was that shipping time was 3-4 weeks (too much for me) and the customer service discouraged me to use the 200MhZ variant, because it was discontinued already. And because I&#8217;ve read about some problems with the 300MhZ variant with Linux, the ebox was not an option any more.</p>
<h2 id="toc23"> Alix</h2>
<p>Then, I&#8217;ve stumbled around a family of x86 compatible boards, the Alices. The board is 152.4 x 152.4 mm (quite good) and features:</p>
<ul>
<li>AMD Geode 500 MhZ CPU on board.</li>
<li>256 MB RAM on board.</li>
<li>CF Card slot.</li>
<li>One of the following set of peripherals.
<ul>
<li>1C1: 1 X VGA (obsolete), 1 x Audio, 1 x Ethernet, 2 x USB, 1 x RS232, GPIO pins (Wow! but currently obsolete for me)</li>
<li>2C2: 2 x Ethernet, 2 x USB, 1 x RS232</li>
<li>2C3: 3 x Ethernet, 2 x USB, 1 x RS232</li>
</ul>
</li>
</ul>
<p><img src="http://peter.molnar.cc/wp-content/uploads/alix2c31.jpg" style="display: block; margin-left: auto; margin-right: auto;" width="300" height="310" alt="alix2c31.jpg" /></p>
<p>The price is 111 Eur for the 2c3 variant and 7.5 Eur for the power supply.</p>
<p>These boards really rock: they fill the gap between the consumer Linux devices like the NSLU2 and mini-ITX PC systems. Imagine all the things one could built using such a device!</p>
<p>There are really cheap cases for those devices available for less than 10E! The 18V power supply is quite small and I really welcome the 3 network interfaces, because they obsolete the need for a small switch for my application (i need to connect exactly 3 devices to the system).</p>
<p>So finally I&#8217;ve ordered the Alix 2C3 at a reseller here in Slovakia: <a href="http://www.skfree.sk/" onclick="window.open(this.href, '_blank'); return false;">SKfree</a>. The order was confirmed at Friday and the next Wednesday, the board arrived. Let&#8217;s see how stable it will run!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2008/04/10/choosing-a-cheap-board-for-my-embedded-app/feed/</wfw:commentRss>
		</item>
		<item>
		<title>What was keeping me busy</title>
		<link>http://peter.molnar.cc/2008/02/27/what-has-kept-me-busy/</link>
		<comments>http://peter.molnar.cc/2008/02/27/what-has-kept-me-busy/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 12:09:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Cacao]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=19</guid>
		<description><![CDATA[
My work on the s390 port of CACAO was finished around the beginning of summer 2007. Our criteria for the port to be finished were:

Passing all benchmarks of the dacapo benchmark suite.
Passing the mauve test suite. This turned out to be useful as some tests have still located bugs.

As the work was part of an [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>My work on the s390 port of CACAO was finished around the beginning of summer 2007. Our criteria for the port to be <i>finished</i> were:</p>
<ul>
<li>Passing all benchmarks of the dacapo benchmark suite.</li>
<li>Passing the mauve test suite. This turned out to be useful as some tests have still located bugs.</li>
</ul>
<p>As the work was part of an internship, i had to document it. This took some time in the summer 2007. The documentation was finished around the beginning of fall 2007 and checked as part of the <i>CACAO Handbook</i> into the mercurial repository in <tt>docs/s390.tex</tt>.</p>
<p>The internship finished, time has come to start working on a master&#8217;s thesis. I&#8217;ve got 2 subjects to choose from: implement escape analysis for the optimizing compiler or rework the framework of the optimizing compiler. After taking one month to have a look at both subjects, I have chosen to work on escape analysis.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2008/02/27/what-has-kept-me-busy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Jython even more exciting</title>
		<link>http://peter.molnar.cc/2007/08/16/jython-ever-more-exciting/</link>
		<comments>http://peter.molnar.cc/2007/08/16/jython-ever-more-exciting/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 21:19:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Cacao]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=18</guid>
		<description><![CDATA[
After having followed twisti&#8217;s build instructions on how to build cacao with OpenJDK as runtime, I&#8217;ve got an OpenJDK based JRE with Cacao as VM in JIT mode on s390. Here&#8217;s the usual first real life app run:
$ ~/j2re-image/bin$ ./java -cp /usr/share/java/jython-2.1.jar org.python.util.jython
LOG: [0x77e626b0] JVM_GetStackAccessControlContext: IMPLEMENT ME!
LOG: [0x77e626b0] JVM_DesiredAssertionStatus: cls=0x475d20, IMPLEMENT ME!
LOG: [0x77e626b0] JVM_DesiredAssertionStatus: cls=0x474d20, [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>After having followed <a href="http://www.advogato.org/person/twisti/" onclick="window.open(this.href, '_blank'); return false;">twisti</a>&#8217;s <a href="http://c1.complang.tuwien.ac.at/cacaowiki/OpenJDK" onclick="window.open(this.href, '_blank'); return false;">build instructions</a> on how to build cacao with OpenJDK as runtime, I&#8217;ve got an OpenJDK based JRE with Cacao as VM in JIT mode on s390. Here&#8217;s the usual first real life app run:</p>
<pre class="wikicode"><code>$ ~/j2re-image/bin$ ./java -cp /usr/share/java/jython-2.1.jar org.python.util.jython
LOG: [0x77e626b0] JVM_GetStackAccessControlContext: IMPLEMENT ME!
LOG: [0x77e626b0] JVM_DesiredAssertionStatus: cls=0x475d20, IMPLEMENT ME!
LOG: [0x77e626b0] JVM_DesiredAssertionStatus: cls=0x474d20, IMPLEMENT ME!
LOG: [0x77e626b0] JVM_DesiredAssertionStatus: cls=0x475a80, IMPLEMENT ME!
...
LOG: [0x77e626b0] JVM_GetSystemPackage: IMPLEMENT ME!
Jython 2.1 on java1.7.0-fastdebug (JIT: null)
...
&gt;&gt;&gt; import java.lang.System as s
LOG: [0x77e626b0] JVM_GetProtectionDomain: cls=0x5fed20
LOG: [0x77e626b0] JVM_ResolveClass: IMPLEMENT ME!
&gt;&gt;&gt; [s.getProperty(p) for p in
    ['java.vm.name', 'java.runtime.name', 'os.arch', 'java.vm.info', 'java.version']]
LOG: [0x77e626b0] JVM_GetProtectionDomain: cls=0x5fed20
LOG: [0x77e626b0] JVM_ResolveClass: IMPLEMENT ME!
['CACAO', 'OpenJDK Runtime Environment', 's390', 'JIT mode', '1.7.0-fastdebug']</code></pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2007/08/16/jython-ever-more-exciting/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Cacao/s390 dacapo results</title>
		<link>http://peter.molnar.cc/2007/07/01/cacaos390-dacapo-results/</link>
		<comments>http://peter.molnar.cc/2007/07/01/cacaos390-dacapo-results/#comments</comments>
		<pubDate>Sun, 01 Jul 2007 12:15:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Cacao]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=10</guid>
		<description><![CDATA[
I&#8217;ve run the dacapo benchmark against cacao/s390 and compared the results with IBM&#8217;s java 1.4 and 5.0 for s390. A prerelease of Java 6.0 is also available from IBM, but benchmarking is prohibited.
The benchmarks were run on a virtual machine with 256 MB RAM and a lot of swap on the Community Development System for [...]]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>I&#8217;ve run the dacapo benchmark against cacao/s390 and compared the results with IBM&#8217;s java 1.4 and 5.0 for s390. A prerelease of Java 6.0 is also available from IBM, but benchmarking is prohibited.</p>
<p>The benchmarks were run on a <strong>virtual machine</strong> with 256 MB RAM and a lot of swap on the <a href="http://www-03.ibm.com/systems/z/os/linux/lcds/" onclick="window.open(this.href, '_blank'); return false;">Community Development System for Linux</a>.</p>
<p>Every benchmark was run 5 times with default data size, the table below shows the worst and best run on each VM.</p>
<table>
<tr>
<th>Benchmark</th>
<th colspan="2">cacao SVN 8167M</th>
<th colspan="2">IBM Java2 1.4.2</th>
<th colspan="2">IBM Java2 5.0</th>
</tr>
<tr>
<td></td>
<td>Best (ms)</td>
<td>Worst (ms)</td>
<td>Best (ms)</td>
<td>Worst (ms)</td>
<td>Best (ms)</td>
<td>Worst (ms)</td>
</tr>
<tr>
<th>antlr</th>
<td>35593</td>
<td>43431</td>
<td>57143</td>
<td>59055</td>
<td>45852</td>
<td>50377</td>
</tr>
<tr>
<th>bloat</th>
<td>181819</td>
<td>196649</td>
<td>114621</td>
<td>132803</td>
<td>66054</td>
<td>142168</td>
</tr>
<tr>
<th>chart</th>
<td>134529</td>
<td>145566</td>
<td>82770</td>
<td>91036</td>
<td>-</td>
<td>-</td>
</tr>
<tr>
<th>fop</th>
<td>20933</td>
<td>28966</td>
<td>27084</td>
<td>29141</td>
<td>26675</td>
<td>32556</td>
</tr>
<tr>
<th>hsqldb</th>
<td>48626</td>
<td>55669</td>
<td>54112</td>
<td>56906</td>
<td>67746</td>
<td>109696</td>
</tr>
<tr>
<th>jython</th>
<td>213563</td>
<td>228384</td>
<td>150021</td>
<td>168175</td>
<td>135723</td>
<td>224549</td>
</tr>
<tr>
<th>luindex</th>
<td>104583</td>
<td>121504</td>
<td>72852</td>
<td>83002</td>
<td>85686</td>
<td>102152</td>
</tr>
<tr>
<th>lusearch</th>
<td>283051</td>
<td>297364</td>
<td>79252</td>
<td>84118</td>
<td>99904</td>
<td>149011</td>
</tr>
<tr>
<th>pmd</th>
<td>113995</td>
<td>125759</td>
<td>75969</td>
<td>79906</td>
<td>77854</td>
<td>87122</td>
</tr>
</table>
<p>The results are available as <a class="" href="http://peter.molnar.cc/?wikilink=AttachmentId11#">histogram</a> too.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2007/07/01/cacaos390-dacapo-results/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Eclipse on cacao/s390</title>
		<link>http://peter.molnar.cc/2007/06/27/eclipse-on-cacaos390/</link>
		<comments>http://peter.molnar.cc/2007/06/27/eclipse-on-cacaos390/#comments</comments>
		<pubDate>Wed, 27 Jun 2007 10:22:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Cacao]]></category>

		<guid isPermaLink="false">http://peter.wm.sk/p/?p=17</guid>
		<description><![CDATA[
Finally, eclipse is running on cacao/s390:



]]></description>
			<content:encoded><![CDATA[<div class="wiki">
<p>Finally, eclipse is running on cacao/s390:</p>
<p><img src="http://peter.molnar.cc/wp-content/uploads/eclipse.png" style="display: block; margin-left: auto; margin-right: auto;" width="500" height="219" alt="eclipse.png" /></p>
<p><img src="http://peter.molnar.cc/wp-content/uploads/eclipse_about.png" style="display: block; margin-left: auto; margin-right: auto;" width="500" height="440" alt="eclipse_about.png" /></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://peter.molnar.cc/2007/06/27/eclipse-on-cacaos390/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
