<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>BSD Planet * BSD People</title>
	<link>http://people.bsdplanet.net/</link>
	<language>en</language>
	<description>BSD Planet * BSD People - http://people.bsdplanet.net/</description>

<item>
	<title>Hubertf's NetBSD Blog: FOSDEM talks/slides: pkgsrc on MirBSD, pkgin</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120206_1307.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120206_1307.html</link>
	<description>Last weekend the Free and Open Software Developer Meeting (FOSDEM)
happened. As in previous years, there was a booth manned by
people from various BSD-projects, and there were also
two(?) talks related to NetBSD and its related project pkgsrc:

&lt;ul&gt;&lt;li&gt; NetBSD and MirBSD developer Benny Siegert gave a talk titled
&quot;pkgsrc on MirBSD&quot; - 
&lt;a href=&quot;http://www.slideshare.net/bsiegert/pkgsrc-on-mirbsd&quot;&gt;see his slides&lt;/a&gt;!  &lt;a href=&quot;http://www.pkgsrc.org/&quot;&gt;pkgsrc&lt;/a&gt; is a framework for packaging and building 3rd party applications from source. Besides MirBSD, it runs on many
other platforms like Linux and Mac OS X.
&lt;li&gt; While building from source is fine, it costs a lot of time.
pkgsrc can also create binary packages, and to manage those,
there is &quot;pkgin&quot;, a binary package manager. 
Its developer, Emile 'iMil' Heitor 
introduced it in a talk - 
&lt;a href=&quot;http://imil.net/NetBSD/pkgin-FOSDEM-2012.pdf&quot;&gt;see the slides (PDF)&lt;/a&gt;!</description>
	<pubDate>Mon, 06 Feb 2012 13:18:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Automatic building of Amazon EC2 images from NetBSD</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120205_1810.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120205_1810.html</link>
	<description>NetBSD/xen is available for some time now to work on
Amazon's Xen-based Elastic Cloud Computing (EC2) platform,
as previously announced in 
&lt;a href=&quot;http://blog.netbsd.org/tnf/entry/netbsd_now_runs_under_amazon&quot;&gt;the NetBSD blog&lt;/a&gt;, and
&lt;a href=&quot;http://wiki.netbsd.org/amazon_ec2/&quot;&gt;the NetBSD wiki&lt;/a&gt;
has instructions on how to subscribe to Amazon, launching and
rebuilding the &quot;AMI&quot; images.
&lt;p&gt;

This work is continued by Jean-Yves Migeon, who is working on
&lt;a href=&quot;http://mail-index.netbsd.org/port-xen/2012/02/05/msg007124.html&quot;&gt;build scripts for Amazon EC2&lt;/a&gt;, so 
the &quot;AMI&quot; images can be provided easily,
with the eventual goal  to
&lt;a href=&quot;http://mail-index.netbsd.org/port-xen/2012/02/05/msg007125.html&quot;&gt;include them into the NetBSD build process&lt;/a&gt; by Jeff Rizzo,
so EC2 images can be automatically generated easily,
e.g. by NetBSD's build cluster.</description>
	<pubDate>Sun, 05 Feb 2012 18:17:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Google Summer of Code 2012 will happen - first NetBSD directions</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120204_2319.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120204_2319.html</link>
	<description>&lt;img src=&quot;http://2.bp.blogspot.com/-0Z4BTG1iJDs/TyG9uyApFrI/AAAAAAAAAhY/raFJlaZqdes/s320/GSOC+12+logo.png&quot; align=&quot;right&quot;&gt;
Google announced at Fosdem that
&lt;a href=&quot;http://google-opensource.blogspot.com/2012/02/google-summer-of-code-2012-is-on.html&quot;&gt;there will be Google Sommer of Code 2012&lt;/a&gt;,
the 8th time in a row.
Ot can be expected that NetBSD will strive to participate
again this year, and as such, now is a good time to

&lt;ul&gt;
&lt;li&gt; make up your mind if you want to participate, either as student or mentor
     &lt;p&gt;

&lt;li&gt; hash out details of project proposals and possible implementation details,
     and also see how much time you can devote as possible mentor.
     Also, think about choosing criteria for students and how
     to communicate with them on a daily basis and also in cases
     where problems arise (reallife on either side, student going AWOL, ...)
     &lt;p&gt;
     
&lt;li&gt; go over the &lt;a href=&quot;http://wiki.netbsd.org/projects/&quot;&gt;list of project proposals&lt;/a&gt;, 
     esp. &lt;a href=&quot;http://wiki.netbsd.org/projects/gsoc/&quot;&gt;the ones with the right dimension for GSoC&lt;/a&gt;, and suggest changes and additions of new projects
     &lt;p&gt;

&lt;li&gt; make yourself familiar with NetBSD from a
     &lt;a href=&quot;http://www.netbsd.org/docs/&quot;&gt;user/admin viewpoint&lt;/a&gt; and
     &lt;a href=&quot;http://www.netbsd.org/developers/&quot;&gt;esp. from a developer point&lt;/a&gt;
     if you intend to apply as student. 
     &lt;p&gt;

     A (slightly dated?) tour through the NetBSD source tree is available
     for 
     &lt;a href=&quot;http://www.feyrer.de//NetBSD/tour-de-source-1userland.html&quot;&gt;userland&lt;/a&gt;,
     &lt;a href=&quot;http://www.feyrer.de//NetBSD/tour-de-source-2libraries.html&quot;&gt;libraries&lt;/a&gt;, and
     &lt;a href=&quot;http://www.feyrer.de//NetBSD/tour-de-source-3kernel.html&quot;&gt;the kernel&lt;/a&gt;.
     Also of interest: a guide on &lt;a href=&quot;http://www.netbsd.org/docs/internals/en/&quot;&gt;NetBSD internals&lt;/a&gt;.
&lt;li&gt; review our &lt;a href=&quot;http://wiki.netbsd.org/projects/application/&quot;&gt;guidelines for applying for a project&lt;/a&gt; if you're an interested student. 
     We get many really bad, dull and uninformed project proposals
     each year, and we wish more students would be as serious as YOU probably
     are (as you're already here :-).
&lt;/ul&gt;

Let's look forward to NetBSD and the Goole Summer of Code 2012,
and the exciting new projects to come!</description>
	<pubDate>Sat, 04 Feb 2012 23:40:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: NetBSD Hackathon - February 10th to 12th, 2012</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120203_2124.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120203_2124.html</link>
	<description>Matthias 'tron' Scheler 
&lt;a href=&quot;http://mail-index.netbsd.org/netbsd-announce/2012/02/03/msg000142.html&quot;&gt;announced per mail&lt;/a&gt;
&lt;a href=&quot;http://blog.netbsd.org/tnf/entry/announcing_netbsd_hackathon_february_10th&quot;&gt;and on the NetBSD blog&lt;/a&gt;
``&lt;i&gt;The 16th NetBSD hackathon will be run from February 10th to February
12th. Our goal is fixing all the bugs that need fixing to get
NetBSD-current ready for the creation of the NetBSD 6.0 release branch.
&lt;p&gt;

Everybody that has an interest in NetBSD, from developers, documentation
writers, translators, to advanced users are invited to attend. To make sure
that NetBSD users get the best possible experience of the new release we
would like to fix as many bugs as possible. For a list of bugs and more
information look at the Wiki Page under 
&amp;lt;&lt;a href=&quot;https://wiki.netbsd.org/hackathon/&quot;&gt;https://wiki.netbsd.org/hackathon/&lt;/a&gt;&amp;gt;
please.
&lt;p&gt;

If you are able to help us fixing these bugs by supplying patches or
testing fixes please consider to participate. We are also in need of
people to supply documentation fixes, preferably in the form of
patches. Release notes and/or manual pages!
&lt;p&gt;

Join us on the IRC channel #netbsd-code on freenode (irc.freenode.net).
Just join, have a look around and ask your questions or what work needs
to be done.
&lt;p&gt;

We are looking forward to seeing you!&lt;/i&gt;''
&lt;p&gt;

Indeed! :-)</description>
	<pubDate>Fri, 03 Feb 2012 21:27:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-3471721892781390132</guid>
	<link>http://blog.julipedia.org/2012/02/kyua-weekly-status-report.html</link>
	<description>This comes two days late... but anyway, I felt like posting it now instead of waiting until next Sunday/Monday.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;The activity past week focused mostly on implementing support for the &amp;amp;lt;tt&amp;amp;gt;require.memory&amp;amp;lt;/tt&amp;amp;gt; test-case metadata property recently introduced into ATF. This was non-trivial due to the need to write some tricky Autoconf code to make this &quot;slightly portable&quot;.&amp;amp;amp;nbsp;Seriously: It's scary to see how hard it is to perform, in a portable manner, an operation as simple as &quot;query the amount of physical memory&quot;... but oh well, such are the native Unix APIs...&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;I later spent the weekend on Lutok, preparing and publishing the project's first release and writing my first RPM library spec for it. This was a prerequisite for the upcoming 0.3 release of Kyua and thus deserved special attention!&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-3471721892781390132?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Wed, 01 Feb 2012 21:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: EuroBSDCon 2012: Warsaw, Poland</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120201_2111.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120201_2111.html</link>
	<description>Quoting from 
&lt;a href=&quot;http://2012.eurobsdcon.org/&quot;&gt;the website&lt;/a&gt;:
&lt;p&gt;

``&lt;i&gt;EuroBSDcon2012&lt;br&gt;
18 - 21 October 2012, Warsaw, Poland
&lt;p&gt;

EuroBSDcon is the European technical conference for people working on and with BSD based operating systems and related projects. EuroBSDcon 2012 is the 11th EuroBSDcon and will take place in Poland, 18-21 October 2012 in Warsaw. EuroBSDcon is a great and unique time to learn more about the powerful BSD systems we use everyday and to connect with other developers around the world. &lt;/i&gt;''</description>
	<pubDate>Wed, 01 Feb 2012 21:12:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: IPv4 address change for {many}.NetBSD.org</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120131_2211.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120131_2211.html</link>
	<description>&lt;a href=&quot;http://mail-index.netbsd.org/netbsd-announce/2012/01/31/msg000141.html&quot;&gt;spz@ announces&lt;/a&gt;:
``&lt;i&gt;{mail, www, anoncvs, blog, wiki, releng}.NetBSD.org are
changing IPv4 address from something in 204.152.190 to
something in 149.20.53. Do not be alarmed. :)
&lt;p&gt;

There may be some glitches due to IP addresses hiding in
unexpected corners; we apologize in advance for any issues
caused by the renumbering.
&lt;p&gt;

The old addresses are going to be available at least another
week.&lt;/i&gt;''
&lt;p&gt;

Background of this change that the ISP of most of the NetBSD
services requires renumbering.
Of course this only affects IPv4, not IPv6 :-)</description>
	<pubDate>Tue, 31 Jan 2012 22:14:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Latest IPfilter merged into NetBSD-current</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120130_2246.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120130_2246.html</link>
	<description>Darren Reed is the author if IPfilter and also a NetBSD developer.
IPfilter is one of the packet filters available in NetBSD,
and the latest version (5.1.1) was imported into NetBSD-current
by darren. Citing from
&lt;a href=&quot;http://mail-index.netbsd.org/tech-net/2012/01/30/msg003082.html&quot;&gt;his mail to tech-net&lt;/a&gt;,
there are a few interesting changes and new features:
&lt;p&gt;

``&lt;i&gt;To start with, the man pages for ipf(5) and ipnat(5) have been
rewritten from scratch to make them easier to understand and
thus easier to use the various features in IPFilter. In addition
there is now an ipmon(5) that supports delivery of log messages to
different destinations - including generating SNMP traps messages.
&lt;p&gt;

There are a few new actions that can be used with ipnat.conf. The
one that will be of most interest to people is &quot;rewrite&quot; which
supports translation of both the source and destination address
with a single rule. Use of an rdr/map combination is no longer
required. There are also some others that are more experimental.
One of those is a &quot;divert&quot; action that takes a packet and puts an
IP + UDP header on the front, allowing &quot;raw packets&quot; to be delivered
to any socket. Similarly, replies from that socket have the relevant
header data removed.
&lt;p&gt;

There are a few extras for ipf.conf, most notably it now allows
for defining limits on how many different hosts/networks can have
a state entry in the state table for each rule. IPFilter 5.1.1 also
supports specifying a filter rule group for the filtering of ICMP
packets that match an entry in the state table. Additionally, there
is a new rule - &quot;decapsulate&quot;. This has been designed to allow
filtering on &quot;inner headers&quot; of packets that have been encapsulated
in clear text. It will, for example, allow filtering on IPv4 headers
inside of IPv6 packets (or vice versa.)
&lt;p&gt;

It is no longer required to have a separate ipf6.conf file. Both
IPv4 and IPv6 packets can be used in the same file. For those that
have separate files today, they should not interfere with each other
unless you have &quot;block in all&quot; for IPv4 and &quot;pass in all&quot; for IPv6
or similar. In that case, the &quot;block in all&quot; will affect IPv6 traffic.
This is a reflection of the internal design where there is now only
a single list of filter rules, not one for each protocol. Check the
man page for ipf.conf for more details.&lt;/i&gt;''</description>
	<pubDate>Mon, 30 Jan 2012 22:51:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: EuroBSDcon 2011 NetBSD Presentation</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120130_2055.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120130_2055.html</link>
	<description>spz@ gave a presentation with a status report of NetBSD
during last EuroBSDCon. 
&lt;a href=&quot;http://www.netbsd.org/~spz/topics2011-1.html&quot;&gt;Slides in HTML format&lt;/a&gt;
are available now - enjoy!</description>
	<pubDate>Mon, 30 Jan 2012 20:57:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Lutok 0.1 available</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-283894938669140420</guid>
	<link>http://blog.julipedia.org/2012/01/lutok-01-available.html</link>
	<description>A few months ago, I &amp;amp;lt;a href=&quot;http://blog.julipedia.org/2011/09/introducing-lutok-lightweight-c-api-for.html&quot;&amp;amp;gt;introduced the Lutok project&amp;amp;lt;/a&amp;amp;gt;,&amp;amp;amp;nbsp;a simple C++ API for Lua. To recap: the major goal of this API, which does not mimic the Lua C API bit by bit, is to enforce correct coding practices on the client side. This is done by (ab)using the RAII programming pattern to automatically free resources when not needed and to ensure that the Lua stack is correctly managed. The library also adheres to common C++ programming idioms and exposes exceptions for error management and uses the pimpl idiom to completely hide the Lua C API from clients of Lutok (unless you use the &amp;amp;lt;tt&amp;amp;gt;c_gate&amp;amp;lt;/tt&amp;amp;gt; backdoor!).&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Today, I am pleased to announce that the first formal release of Lutok, obviously named 0.1, is available for download! You can obtain this release by visiting the &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/downloads/detail?name=lutok-0.1.tar.gz&quot;&amp;amp;gt;lutok-0.1.tar.gz download page&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Also, in preparation for this release, I have spent the weekend writing &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/wiki/Examples&quot;&amp;amp;gt;some little example programs&amp;amp;lt;/a&amp;amp;gt; to demonstrate the usage of Lutok, and also some&amp;amp;amp;nbsp;&amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/wiki/Installation&quot;&amp;amp;gt;installation instructions&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Hope you find this release useful and please do send me any comments you may have!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Hint: Yes, releasing Lutok 0.1 was a prerequisite for Kyua 0.3. So stay tuned ;-)&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-283894938669140420?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Sun, 29 Jan 2012 21:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: NetBSD vs. disk transfer speeds vs. BIOS settings</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120129_1233.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120129_1233.html</link>
	<description>A few days ago, Brian Hoard made
an interesting finding about performance
of 
&lt;a href=&quot;http://www.feyrer.de/g4u/&quot;&gt;g4u&lt;/a&gt;,
a NetBSD/i386-based disk cloning system.
Citing from 
&lt;a href=&quot;http://sourceforge.net/mailarchive/message.php?msg_id=28754463&quot;&gt;Brians mail&lt;/a&gt;:
&lt;p&gt;

``&lt;i&gt;First, my problem was I had just replaced my motherboard on my custom 
build PC.
Once I got Windows 7 64-bit loaded and everything working, I sat up to 
clone my system drive.  The drive is a 500GB Seagate Barracude, SATA 2 
drive.
Cloning locally to an identical drive.
&lt;p&gt;

When booting into g4u, my transfer speeds were extremely slow.  
Normally, my 500 Gb clones take only about 90 minutes.
But this was still working after over 6 hours.
The g4u transfer speed was reporting only &lt;b&gt;1.5 Mb/sec&lt;/b&gt;.
&lt;p&gt;

I shut things down, and went into my system BIOS.  I noticed that the 
SATA mode was set to &quot;IDE Mode&quot; for my drives.
I changed this to &quot;AHCI Mode&quot; and continued to boot into g4u.
This worked to fix the transfer speeds, and my clone finished normally.  
Getting &lt;b&gt;83 Mb/sec&lt;/b&gt;.
&lt;p&gt;

Once the drive was finished, I attempted to boot into Windows, but it 
would not boot.
I had to change my BIOS back to &quot;IDE Mode&quot;, then Windows behaved normally.
&lt;p&gt;

Upon researching this, I am now learning that you should enable AHCI 
Mode BEFORE installing Windows for it to work.
Apparently, if Windows is not installed while using AHCI Mode, it 
disables the drivers for AHCI on the system drive.  So if you later 
enable AHCI in your BIOS as I did, Windows will not have the driver loaded.
I saw there is a fix on the Microsoft web site, but I haven't attempted 
to try it yet.
&lt;p&gt;

If someone else runs into a similar problem, hopefully this will help you.&lt;/i&gt;''
&lt;p&gt;

FWIW, g4u-2.5beta1 is based on NetBSD-current from January 2012,
so checking your BIOS may help anyone seeing bad disk performance out there. &lt;br&gt;
(Emphasizes in the text added by me)</description>
	<pubDate>Sun, 29 Jan 2012 12:40:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: BSD Certification and the lack of training material - a call for participation! (Updated)</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120127_2133.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120127_2133.html</link>
	<description>As you are aware, there's a &lt;a href=&quot;https://register.bsdcertification.org//register/register-for-an-exam&quot;&gt;BSD Associate Certification&lt;/a&gt;
available from the BSD Certification group (that I'm a member of,
working as subject matter expert for NetBSD). &lt;i&gt;That's good!&lt;/i&gt;
&lt;p&gt;

There's also is a 
&lt;a href=&quot;http://www.feyrer.de/NetBSD/bx/blosxom.cgi/www.bsdcertification.org/downloads/pr_20051005_certreq_bsda_en_en.pdf&quot;&gt;PDF&lt;/a&gt;
which lists the BSD Associate (BSDA) examn objectives on 57 pages. 
&lt;i&gt;That's neccessary!&lt;/i&gt;
&lt;p&gt;

There is currently &lt;b&gt;no&lt;/b&gt; training material available
that covers all the examn objectives, and that allows
people interested in the certification to start learning.
&lt;i&gt;That sucks!&lt;/i&gt;
&lt;p&gt;

Now that's where I'd like to ask the NetBSD (and actually the
whole BSD community) for support: This is not a small task,
but I think it would be worthwhile for the whole community
to have that available, either in closed (paper/book) or in
public (electronic) form. 
&lt;p&gt;

Any takers?
&lt;p&gt;

&lt;b&gt;Update:&lt;/b&gt;
Jeremy Reed reminds me that he has startet 
&lt;a href=&quot;http://bsdwiki.reedmedia.net/wiki/index.html&quot;&gt;a Wiki-based approach&lt;/a&gt;
to cover 
&lt;a href=&quot;http://bsdwiki.reedmedia.net/wiki/Table_of_Contents.html&quot;&gt;all topics of the BSDA&lt;/a&gt;, with the eventual goal to publish
the result in book form. There is a Wiki-to-PDF transformation
engine already in place, and the primary focus can be put
on the contents at this point. So, this is the point 
&lt;a href=&quot;http://bsdwiki.reedmedia.net/wiki/ikiwiki.cgi?page=Table_of_Contents&amp;do=edit&quot;&gt;where YOU come in&lt;/a&gt;.
Have a look, get involved, participate in a novel project!</description>
	<pubDate>Sat, 28 Jan 2012 14:03:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: BSDCan 2012 - call for papers (Updated)</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120127_1550.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120127_1550.html</link>
	<description>Watching conference proceedings and publications like magazines,
I feel a certain lack of NetBSD presence. Even in events that
are BSD-friendly (EuroBSDcon, BSD Magazine come to mind).
So here's a friendly reminder to go out on the street
and preach the truth, as 
&lt;a href=&quot;http://mail-index.netbsd.org/netbsd-advocacy/2012/01/27/msg000386.html&quot;&gt;posted by Dan Langille on netbsd-advocacy@&lt;/a&gt;:

&lt;b&gt;You have two days left before the deadline!&lt;/b&gt;
&lt;p&gt;

Dan continues: 
``&lt;i&gt;BSDCan 2012 will be held 11-12 May, 2012 in Ottawa at the University of
Ottawa. It will be preceded by two days of tutorials on 9-10 May.
&lt;p&gt;

NOTE: This will be Fri/Sat with tutorials on Wed/Thu.
&lt;p&gt;

We are now accepting proposals for talks.
&lt;p&gt;

The talks should be designed with a very strong technical content bias.
Proposals of a business development or marketing nature are not
appropriate for this venue.
&lt;p&gt;

If you are doing something interesting with a BSD operating system,
please submit a proposal. Whether you are developing a very complex
system using BSD as the foundation, or helping others and have a story
to tell about how BSD played a role, we want to hear about your
experience.  People using BSD as a platform for research are also
encouraged to submit a proposal. Possible topics include:
&lt;p&gt;

&lt;ul&gt;
&lt;li&gt; How we manage a giant installation with respect to handling spam.
&lt;li&gt; and/or sysadmin.
&lt;li&gt; and/or networking.
&lt;/ul&gt;

From the BSDCan website, the Archives section will allow you to review
the wide variety of past BSDCan presentations as further examples.
&lt;p&gt;

Both users and developers are encouraged to share their experiences.
&lt;p&gt;

The schedule is:
&lt;p&gt;

8 Jan 2012 Proposal acceptance begins &lt;br&gt;
29 Jan 2012 Proposal acceptance ends &lt;br&gt;
19 Feb 2012 Confirmation of accepted proposals
&lt;p&gt;

See also 
&lt;a href=&quot;http://www.bsdcan.org/2012/papers.php&quot;&gt;http://www.bsdcan.org/2012/papers.php&lt;/a&gt;
&lt;p&gt;

Instructions for submitting a proposal to BSDCan 2012 are available
from: 
&lt;a href=&quot;http://www.bsdcan.org/2012/submissions.php&quot;&gt;http://www.bsdcan.org/2012/submissions.php&lt;/a&gt;
&lt;p&gt;

&lt;b&gt;Update:&lt;/b&gt;
&lt;a href=&quot;http://mail-index.netbsd.org/netbsd-advocacy/2012/01/29/msg000387.html&quot;&gt;The deadline for submissions has been extended to Tuesday 31 January.&lt;/a&gt;</description>
	<pubDate>Fri, 27 Jan 2012 15:57:00 +0000</pubDate>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Cobalt RestoreCD/RestoreUSB Beta based on NetBSD 5.1.1</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120125_0056.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120125_0056.html</link>
	<description>Izumi Tsutsui 
&lt;a href=&quot;http://mail-index.netbsd.org/port-cobalt/2012/01/24/msg000522.html&quot;&gt;writes on port-cobalt&lt;/a&gt;:
``&lt;i&gt;It seems NetBSD 5.1.1 release is pending, but binaries are there
and it also contains telnetd vulnerability fix (which is rather
important for restorecd), so I'd announce 5.1.1 based NetBSD/cobalt
RestoreCD and brandnew RestoreUSB as Beta test for future 5.1.x release:
&lt;p&gt;

&lt;a href=&quot;http://ftp.NetBSD.org/pub/NetBSD/arch/cobalt/restore-cd/5.1.1/&quot;&gt;http://ftp.NetBSD.org/pub/NetBSD/arch/cobalt/restore-cd/5.1.1/&lt;/a&gt;
&lt;p&gt;

restorecd-5.1.1-20120112.iso.gz is a gzipped RestoreCD ISO9660 image
as prior releases.
&lt;p&gt;

restoreusb-5.1.1-20120112.img.gz is a new &quot;RestoreUSB&quot; image
which has almost identical functions with RestoreCD but is
intended to be burned into USB memory sticks for USB bootable PCs.
&lt;p&gt;

You can write the image using gzip(1) + dd(1) on Unix like OSes,
or you can also use &quot;Rawrite32&quot; utility on MS Windows:
&lt;a href=&quot;http://www.NetBSD.org/~martin/rawrite32/index.html&quot;&gt;http://www.NetBSD.org/~martin/rawrite32/index.html&lt;/a&gt;
&lt;p&gt;

To use the RestoreUSB for cobalt installation, write the image
into &amp;gt;=512MB USB memory stick (or USB HDD etc.) and boot your PC
from it, then all other procedures are same as RestoreCD.
You no longer have to burn a coaster for every installation ;-)
&lt;p&gt;

See also &quot;Restore CD Howto&quot; for actual installation procedures:
&lt;a href=&quot;http://www.NetBSD.org/ports/cobalt/restorecd-howto.html&quot;&gt;http://www.NetBSD.org/ports/cobalt/restorecd-howto.html&lt;/a&gt;:
 (though RestoreUSB is not mentioned yet)
and see files in .tar.gz archive for more details. &lt;/i&gt;''
&lt;p&gt;

Time to get out the good old Cobalt cube :)</description>
	<pubDate>Wed, 25 Jan 2012 23:10:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-2326868603928918712</guid>
	<link>http://blog.julipedia.org/2012/01/kyua-weekly-status-report_23.html</link>
	<description>&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;&amp;amp;lt;a href=&quot;http://www.netbsd.org/~jmmv/atf/news.html#20120116-atf-0-15-released&quot;&amp;amp;gt;Released ATF 0.15&amp;amp;lt;/a&amp;amp;gt; and imported it into NetBSD.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Added support for integer/float printf-like modifiers to the &amp;amp;lt;tt&amp;amp;gt;utils::format&amp;amp;lt;/tt&amp;amp;gt; module. These will be required to beautify size and time quantities in the reports and error messages.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;I spent way more time than I wanted on this. At first, I attempted to use &amp;amp;lt;tt&amp;amp;gt;std::snprintf&amp;amp;lt;/tt&amp;amp;gt; to parse and process the format modifiers for integers and floats so that I could avoid implementing a custom parser for them. While this sounds like a cool idea (yay, code reuse!), it resulted in a ugly, nasty and horrible mess. In the end, I just ended up implementing custom parsing of the formatters, which was way easier and &quot;good enough&quot; for Kyua's needs.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Started work on backporting ATF's new &amp;amp;lt;tt&amp;amp;gt;require.memory&amp;amp;lt;/tt&amp;amp;gt; property into Kyua. This needs having a way to parse and format byte quantities in user-friendly forms (e.g. 1k, 2m, etc.)... hence the previous work on &amp;amp;lt;tt&amp;amp;gt;utils::format&amp;amp;lt;/tt&amp;amp;gt;!&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Set up a &amp;amp;lt;a href=&quot;https://plus.google.com/b/109170076014992185386/&quot;&amp;amp;gt;Google+ Page for Kyua&amp;amp;lt;/a&amp;amp;gt;. I have no idea what to use it for yet. Maybe the status reports should go in there. Ideas?&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-2326868603928918712?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 23 Jan 2012 15:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4383268139030266213</guid>
	<link>http://blog.julipedia.org/2012/01/kyua-weekly-status-report_15.html</link>
	<description>Finally some progress!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Backported the &amp;amp;lt;tt&amp;amp;gt;require.memory&amp;amp;lt;/tt&amp;amp;gt; changes in NetBSD to the ATF upstream code, and extended them to support OS X as well.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Backported local pkgsrc patches to ATF into the upstream code.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Started to prepare ATF 0.15 by doing test runs of NetBSD/i386 and NetBSD/amd64 and by building the code in various Linux distributions. Several build bugs fixed along the way.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Spent a long while trying to figure out how the Fedora package maintainer procedure has changed since 3 years ago to create packages for ATF, Lutok and Kyua. Not very successful yet unfortunately.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;Nothing on the Kyua front, but getting a new release of ATF out of the door has higher priority now!&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-4383268139030266213?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 16 Jan 2012 03:48:04 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: g4u 2.5beta1 supports handling of partition tables and bad disk sectors</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20120114_1331.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20120114_1331.html</link>
	<description>After some absence (job-related) and technical problems
(building of NetBSD failing for me from Mac OS X),
I'm very happy to release a beta version of g4u
with some long-overdue changes. Those include being
able to backup/restore the MBR, which includes the 
partition table - needed when recovering single partitions
to a new disk. Also, the various commands reading disks
are now adjusted to not abort when a disk sector cannot
be used. Instead, the bad bytes are skipped and the
rest of the disk is recovered. Please give me feedback on
this feature as I didn't have a bad disk to test this!
Other news include a command to wipe a disk by completely
overwriting it with 0-bytes (once).
Last, command line editing was enabled - finally!
&lt;p&gt;

Remember that this is a test release, so your feedback
is wanted - either to me in person, or to the
&lt;a href=&quot;http://www.feyrer.de/g4u/#support&quot;&gt;g4u-help&lt;/a&gt; mailing list. Thanks!
&lt;p&gt;

Here's a full list of changes:
&lt;ul&gt;
 &lt;li&gt; New commands &quot;uploadmbr&quot; and &quot;slurpmbr&quot; to backup and restore the master
   boot record, which includes the partition table. Required to restore a
   partition to an empty disk.
 &lt;/li&gt;&lt;li&gt; New command &quot;copymbr&quot; to copy the MBR from one disk to another, similar
   to &quot;copydisk&quot;
 &lt;/li&gt;&lt;li&gt; New command &quot;wipedisk&quot; to write the disk full with 0-bytes once from
   start (sector 0) to end (last sector)
 &lt;/li&gt;&lt;li&gt; Enable command line history/editing by forcing /bin/sh to be built
   without -DSMALL (ugly hack... there be lots of dragons!)
 &lt;/li&gt;&lt;li&gt; When setting up a fresh compile tree, g4u patches are now applied
   automagically without aborting the build
 &lt;/li&gt;&lt;li&gt; Error detection was now enabled in the dd(1) command, which is the core
   of g4u (surprise!). With that, disks with broken/unreadable sectors
   should now be copied, skipping the unreadable sectors and copying the
   rest. This affects a number of programs: copydisk, copypart, uploaddisk,
   uploadpart. BEWARE: I wasn't able to actually test this as I do not have
   a disk with bad sectors here. Please report back your experiences!!!
 &lt;/li&gt;&lt;li&gt; Make this build with NetBSD-current sources as of 2012-01-12
 &lt;/li&gt;&lt;li&gt; New drivers added to the kernel:
	&lt;ul&gt;

        &lt;li&gt; RDC PMX-1000 IDE controllers
        &lt;/li&gt;&lt;li&gt; Intel SCH IDE controllers
        &lt;/li&gt;&lt;li&gt; TOSHIBA PICCOLO controllers
        &lt;/li&gt;&lt;li&gt; Attansic/Atheros L1C/L2C Ethernet
        &lt;/li&gt;&lt;li&gt; Broadcom BCM43xx wireless
        &lt;/li&gt;&lt;li&gt; Agere/LSI ET1310/ET1301 Gigabit Ethernet
        &lt;/li&gt;&lt;li&gt; RDC R6040 10/100 Ethernet
        &lt;/li&gt;&lt;li&gt; USB LCDs and USB-VGA adaptors, e.g.:
        &lt;/li&gt;&lt;li&gt; DisplayLink DL-1x0/1x5
        &lt;/li&gt;&lt;li&gt; Option N.V. Wireless USB WAN modems
        &lt;/li&gt;&lt;li&gt; Microsoft RNDIS specifications USB ethernet
        &lt;/li&gt;&lt;li&gt; Atheros AR9001U USB Wifi
        &lt;/li&gt;&lt;li&gt; Intersil PrismGT USB Wifi
        &lt;/li&gt;&lt;li&gt; Virtio PCI, memory balloon, disk &amp;amp; network devices
        &lt;/li&gt;&lt;li&gt; ... and many more that slipped past QA
	&lt;/li&gt;&lt;/ul&gt;
 &lt;/li&gt;
&lt;li&gt; ... and any driver updates, optimizations and bug fixes and other
	enhancements from NetBSD-current
			&lt;/li&gt;
&lt;/ul&gt;

Get g4u 2.5beta1:
&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://www.feyrer.de/g4u/g4u-2.5beta1.iso&quot;&gt;ISO&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.feyrer.de/g4u/g4u-2.5beta1.iso.zip&quot;&gt;compressed ISO&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.feyrer.de/g4u/g4u-2.5beta1-1.fs&quot;&gt;First floppy&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.feyrer.de/g4u/g4u-2.5beta1-2.fs&quot;&gt;2nd floppy&lt;/a&gt;

&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.feyrer.de/g4u/g4u-2.5beta1-3.fs&quot;&gt;3rd floppy&lt;/a&gt;

&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.feyrer.de/g4u/g4u-2.5beta1.fs.zip&quot;&gt;all 3 floppies&lt;/a&gt;
&lt;/li&gt;&lt;li&gt; &lt;a href=&quot;http://www.feyrer.de/g4u/g4u-2.5beta1.tgz&quot;&gt;sources&lt;/a&gt;
&lt;/li&gt;&lt;/ul&gt;</description>
	<pubDate>Sat, 14 Jan 2012 13:48:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-3855575707225556807</guid>
	<link>http://blog.julipedia.org/2012/01/kyua-weekly-status-report_10.html</link>
	<description>It's that time of the week again (although delayed by over a day). Unfortunately, no progress either during past week. Being on semi-vacations doesn't leave much &quot;free time&quot;... However, I traveled back home yesterday and getting back to my daily routine should give some spare time!&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-3855575707225556807?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Wed, 11 Jan 2012 03:48:04 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-6092010260159605891</guid>
	<link>http://blog.julipedia.org/2012/01/kyua-weekly-status-report.html</link>
	<description>Happy new year!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;No activity past week as I was completely away from the computer.&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-6092010260159605891?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Tue, 03 Jan 2012 10:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: On the continuing decline of the GPL</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20111226_2117.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20111226_2117.html</link>
	<description>Pointed out by Mishka, who found this 451 group's
&lt;a href=&quot;http://blogs.the451group.com/opensource/2011/12/15/on-the-continuing-decline-of-the-gpl/&quot;&gt;blog posting&lt;/a&gt;, I'll let the image speak on itself,
even if it does not target NetBSD in particular:
&lt;p&gt;

&lt;a href=&quot;http://blogs.the451group.com/opensource/2011/12/15/on-the-continuing-decline-of-the-gpl/&quot;&gt;&lt;img src=&quot;http://blogs.the451group.com/opensource/files/gplusage.png&quot;&gt;&lt;/a&gt;</description>
	<pubDate>Mon, 26 Dec 2011 21:21:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-9196312908393344096</guid>
	<link>http://blog.julipedia.org/2011/12/kyua-weekly-status-report_26.html</link>
	<description>The post title should mention ATF instead of Kyua... but I'm keeping the usual one for consistency:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Integrated timestamps into the XML and HTML reports generated by &amp;amp;lt;tt&amp;amp;gt;atf-report&amp;amp;lt;/tt&amp;amp;gt;. These should soon show up in the continuous tests of NetBSD.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Work on integrating the use of POSIX timers into &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; after Christos Zoulas performed these changes in the NetBSD tree. The result is quite awful because I need to keep compatibility with systems that do not provide the &quot;new&quot; interface...&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-9196312908393344096?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 26 Dec 2011 11:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: The timing of security advisories</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20111224_0100.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20111224_0100.html</link>
	<description>It's an old debate on when to release a security advisory:
It should be released as early as possible to give people a 
chance to fix, but at the same time the fixing should be in
a coordinated way. &quot;Coordinated&quot; means a fair chance for 
professional sysadmins to deploy a fix during working hours,
and not in the middle of the night on a weekend. Or on the
day before chistmas eve. But what if there's a pressing reason,
maybe an exploit in the wild?
&lt;p&gt;

Apparently 
&lt;a href=&quot;http://lists.freebsd.org/pipermail/freebsd-announce/2011-December/001401.html&quot;&gt;FreeBSD's telnetd&lt;/a&gt;
currently has such a problem, and I think it's fair that
Colin Percival as the FreeBSD Security Officer did release
the advisory, even if it's in a sub-optimal timeframe.
&lt;p&gt;

For those NetBSD uses wondering if there's a similar problem
in NetBSD's telnetd: Apparenly an unchecked argument can cause
memory corruption by a memcpy length parameter overflow in sub-option processing (for terminal type, size etc.).
&lt;a href=&quot;http://mail-index.netbsd.org/source-changes/2011/12/23/msg029928.html&quot;&gt;This was fixed in NetBSD&lt;/a&gt; thanks to a hints from Colin. 
There's no NetBSD Security Advisory yet,
but people still using telnetd in production networks may
consider rebuilding libtelnet and telnetd.
&lt;p&gt;

So, to those of you who have moved to SSH: Happy Holidays!&lt;br&gt;
To the rest: Happy Updating! :-)</description>
	<pubDate>Sat, 24 Dec 2011 01:14:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-113774404018064899</guid>
	<link>http://blog.julipedia.org/2011/12/kyua-weekly-status-report_19.html</link>
	<description>Unfortunately, not much activity this week due to travel reasons. Anyway, some work went in:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Preliminary code to generate HTML reports from &amp;amp;lt;tt&amp;amp;gt;kyua report&amp;amp;lt;/tt&amp;amp;gt;. This is easy peasy but boring. The current code was written as a proof of concept and is awful, hence why it was not committed. I'm now working in cleaning it up.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Backported test program and test case timestamping into ATF based on a patch from Paul Goyette. This is a very useful feature to have, and it will have to be added to Kyua later. (It has always been planned to be added, but have not had the time yet.)&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-113774404018064899?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 19 Dec 2011 15:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Two new NetBSD Security Advisories: OpenPAM and BIND resolver</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20111216_0105.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20111216_0105.html</link>
	<description>The NetBSD Security Officers have released two new
security advisories about problems found in 3rd
party software that comes bundled with NetBSD's base system, 
OpenPAM and the BIND resolver.

&lt;ul&gt;
&lt;li&gt; &lt;a href=&quot;http://mail-index.netbsd.org/current-users/2011/12/16/msg018628.html&quot;&gt;NetBSD Security Advisory 2011-008: OpenPAM privilege escalation&lt;/a&gt;
	&lt;p&gt;

	Affects pkgsrc, all release branches and -current before 2011-11-09,
	it's fixed in all branches (current, netbsd-4 and -5) 
	after that date.
	&lt;p&gt;

	Details from the advisory:
	``&lt;i&gt;The pam_start() function of OpenPAM doesn't check the &quot;service&quot;
	argument. With a relative path it can be tricked into reading
	a config file from an arbitrary location.
	NetBSD base utilities pass fixed constant strings. 3rd party
	programs which run with elevated privileges and allow user chosen
	strings open an attack vector.&lt;/i&gt;''

&lt;li&gt; &lt;a href=&quot;http://mail-index.netbsd.org/current-users/2011/12/16/msg018629.html&quot;&gt;NetBSD Security Advisory 2011-009: BIND resolver DoS&lt;/a&gt;:
	&lt;p&gt;

	Affects pkgsrc, all release branches and -current from before
	2011-11-20, it's fixed in the CVS branches after 2011-11-20.
	&lt;p&gt;

	Details from the advisory:
	``&lt;i&gt;Unpatched BIND 9 resolvers may cache an invalid record, subsequent
	queries for which could crash the resolvers with an assertion failure.
	ISC provided a patch which makes named recover gracefully from the
	inconsistency, preventing the abnormal exit.
	&lt;p&gt;
	
	The patch has two components. When a client query is handled, the code
	which processes the response to the client has to ask the cache for
	the records for the name that is being queried. The first component
	of the patch prevents the cache from returning the inconsistent data.
	The second component prevents named from crashing if it detects
	that it has been given an inconsistent answer of this nature.&lt;/i&gt;''
	&lt;p&gt;
&lt;/ul&gt;

Happy updating!</description>
	<pubDate>Fri, 16 Dec 2011 13:01:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-7946776269603782071</guid>
	<link>http://blog.julipedia.org/2011/12/kyua-weekly-status-report_11.html</link>
	<description>Some significant improvements this week:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Finally submitted the code to store and load full test case definitions. This is quite tricky (and currently very, very ugly) but it works and it will allow the reports to include all kinds of information from the test cases.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Removed the &amp;amp;lt;tt&amp;amp;gt;Atffile&amp;amp;lt;/tt&amp;amp;gt;s from the tree; yay! For a long time, I had been using &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; to run broken tests because &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; allowed me to watch the output of the test case being debugged. However, this has been unnecessary since the &amp;amp;lt;a href=&quot;http://blog.julipedia.org/2011/08/kyua-weekly-status-report_22.html&quot;&amp;amp;gt;introduction of the &amp;amp;lt;tt&amp;amp;gt;debug&amp;amp;lt;/tt&amp;amp;gt; command in late August&amp;amp;lt;/a&amp;amp;gt;. I now feel confident that these files can go. (And &amp;amp;lt;tt&amp;amp;gt;debug&amp;amp;lt;/tt&amp;amp;gt; is much more powerful than &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; because you can target a single test case instead of a whole test program.)&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Some crazy work attempting to hide the name of SQLite types from the &amp;amp;lt;tt&amp;amp;gt;sqlite::statement&amp;amp;lt;/tt&amp;amp;gt; interface. I've been only able to do so somewhat decently for &amp;amp;lt;tt&amp;amp;gt;bind&amp;amp;lt;/tt&amp;amp;gt;, but all my attempts at doing the same with &amp;amp;lt;tt&amp;amp;gt;column&amp;amp;lt;/tt&amp;amp;gt; result in horrible code so far. So no, such changes have not been submitted.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;As of a few minutes ago, &amp;amp;lt;tt&amp;amp;gt;kyua test&amp;amp;lt;/tt&amp;amp;gt; now records the output of the test cases (stdout and stderr) into the database. These will be invaluable for debugging of test cases, particularly when the reports are posted online.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Some preliminary work at implementing HTML reports. This, however, has not received much progress due to the previous item requiring completion.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;I'm quite excited at this point. HTML reports are a few weeks away &amp;amp;lt;i&amp;amp;gt;at most&amp;amp;lt;/i&amp;amp;gt;. Once that happens, it will be time to start considering replacing the &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; / &amp;amp;lt;tt&amp;amp;gt;atf-report&amp;amp;lt;/tt&amp;amp;gt; duo for good, particularly within NetBSD. This will certainly not be easy... but all the work that has gone into Kyua so far has this sole goal!&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-7946776269603782071?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 12 Dec 2011 03:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: BSDTalk Interview: Jim Brown on BSD Certification</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20111208_1430.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20111208_1430.html</link>
	<description>Dru mentioned on Facebook that 
&lt;a href=&quot;http://bsdtalk.blogspot.com/&quot;&gt;BSD Talk #209&lt;/a&gt;
is out, this time with Jim Brown, one of the key people
behind the BSD certification.
&lt;p&gt;

&lt;a href=&quot;http://www.bsdcertification.org/&quot;&gt;BSD Certification&lt;/a&gt;
covers NetBSD, FreeBSD, OpenBSD and DragonflyBSD, and 
has the goal to offer certification about BSD specific tasks in
both Associate and Professional levels.
&lt;p&gt;

Based on my personal, most recent experience, certification
is a good thing as you can show that you have a full grasp
on a topic with all the relevant topics, and that you
didn't only learn the few things that are relevant for your
current job. &lt;a href=&quot;https://register.bsdcertification.org//register/register-for-an-exam&quot;&gt;Get certified!&lt;/a&gt;</description>
	<pubDate>Thu, 08 Dec 2011 14:39:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-3760015699059977369</guid>
	<link>http://blog.julipedia.org/2011/12/kyua-weekly-status-report.html</link>
	<description>&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Some more work towards allowing storing and loading of full test case definitions (which in turn will allow us to provide detailed HTML reports). I have local changes that do this, but they are gated by the lack of some additional tests and probably some optimizations, because they slow down &amp;amp;lt;tt&amp;amp;gt;kyua report&amp;amp;lt;/tt&amp;amp;gt; significantly. Regarding commits, I have only submitted some related cleanup-changes.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;I got distracted by invalid Doxygen comments and traced down why they were not being correctly validated (which is the whole point of running Doxygen during the build). It turns out I had to enable some extra &amp;amp;lt;tt&amp;amp;gt;EXTRACT_*&amp;amp;lt;/tt&amp;amp;gt; settings in the &amp;amp;lt;tt&amp;amp;gt;Doxyfile&amp;amp;lt;/tt&amp;amp;gt;. After doing so, I realized there are many, many documentation problems in the code... and I have been fixing them since. It's a tough operation, but I'm more than half-way through already. To give you an idea, the current diffstat shows about 650 new comment lines (!).&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-3760015699059977369?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Tue, 06 Dec 2011 00:48:03 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-8378862959071731158</guid>
	<link>http://blog.julipedia.org/2011/11/kyua-weekly-status-report_28.html</link>
	<description>My goal for this past week was to change the database layer to be able to store full definitions of the test cases, and to later be able to load these while scanning an action. This is to allow the &amp;amp;lt;tt&amp;amp;gt;report&amp;amp;lt;/tt&amp;amp;gt; command to provide all kinds of information about the executed tests, not just their names and their results. However, adding this functionality has proven to be more complex than I wished because the current types to represent test programs and test cases are kinda broken: that the abstractions chosen a while ago do not seem to be appropriate, and this is complicating further changes.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Due to this, I ended up doing some cleanups. First, I reimplemented the way in which test programs that fail to list their test cases are represented. And second, I got rid of the useless &amp;amp;lt;tt&amp;amp;gt;test_case_id&amp;amp;lt;/tt&amp;amp;gt; class, which exposed even further problems in the data types that represent test cases.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;It's now time to sit and think if the current representations of test programs and test cases make sense and, if not, how to better redo them. Not going to be easy, but I hope to have some time for this cleanup during this upcoming week.&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-8378862959071731158?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 28 Nov 2011 15:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Netbooting g4u via PXE</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20111121_2123.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20111121_2123.html</link>
	<description>Doing a network based boot with PXE is not exactly hard,
but you need some debugging and the right tools in place.
If you want to netboot g4u, the NetBSD-based tool for harddisk
image cloning via FTP, via PXE, there's a description
on how to do
&lt;a href=&quot;http://math.uwb.edu.pl/~mariusz/projects/g4u/&quot;&gt;Netbooting of g4u via PXE&lt;/a&gt;
by Mariusz Zynel.
&lt;p&gt;

Details include setting up a TFTP server for loading
the bootloader and getting DHCP sending out the right files.</description>
	<pubDate>Thu, 24 Nov 2011 01:17:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-245230397741999971</guid>
	<link>http://blog.julipedia.org/2011/11/kyua-weekly-status-report_20.html</link>
	<description>I only have one thing to report this week, but oh boy it's big: &amp;amp;lt;b&amp;amp;gt;the &amp;amp;lt;tt&amp;amp;gt;report&amp;amp;lt;/tt&amp;amp;gt; command finally reports the results of a run of a test suite!&amp;amp;lt;/b&amp;amp;gt; Yes, you heard well: Kyua is, finally, able to keep a record of all the previous executions of test suites and allows you to extract reports of any of them a posteriori.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;At the moment, the report is just some disorganized plain-text. &amp;amp;amp;nbsp;For example:&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;$ kyua test&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;[... wait for the tests to run ...]&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;Committed action 82&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;$&amp;amp;amp;nbsp;kyua report&amp;amp;lt;br /&amp;amp;gt;===&amp;amp;amp;gt; Skipped tests&amp;amp;lt;br /&amp;amp;gt;[... too long to show ...]&amp;amp;lt;br /&amp;amp;gt;===&amp;amp;amp;gt; Expected failures&amp;amp;lt;br /&amp;amp;gt;integration/cmd_report_test:output__console__change_file &amp;amp;amp;nbsp;-&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; expected_failure: --output not implemented yet:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; atf-check failed; see the output of the test for details&amp;amp;lt;br /&amp;amp;gt;===&amp;amp;amp;gt; Failed tests&amp;amp;lt;br /&amp;amp;gt;store/transaction_test:put_test_case__ok &amp;amp;amp;nbsp;-&amp;amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; failed: Line 663: stmt.step() not met&amp;amp;lt;br /&amp;amp;gt;===&amp;amp;amp;gt; Summary&amp;amp;lt;br /&amp;amp;gt;Action: 82&amp;amp;lt;br /&amp;amp;gt;Test cases: 934 total, 15 skipped, 1 expected failures,&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;0 broken, 1 failed&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;I'm now working on changing the database schema to be able to really store all the data about test cases, because at the moment I'm only storing their names. Once all the original data is stored, the &amp;amp;lt;tt&amp;amp;gt;report&amp;amp;lt;/tt&amp;amp;gt; command will have lots more information to work with, and then will be the time to start improving the format of the reports. As mentioned earlier, having interactive HTML dashboards is high in the priority list, and a very important goal of Kyua altogether.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Stay tuned :-)&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-245230397741999971?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 21 Nov 2011 03:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Tanenbaum: Minix to become NetBSD-compatible</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20111118_2208.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20111118_2208.html</link>
	<description>I've found this one via (german language)
&lt;a href=&quot;http://www.heise.de/newsticker/meldung/Minix-wird-NetBSD-kompatibel-und-soll-auf-ARM-laufen-1381241.html&quot;&gt;heise online&lt;/a&gt;:
Andrew Tanenbaum, operating system researcher and father of
the Minix operating system gave an 
&lt;a href=&quot;http://linuxfr.org/nodes/88229/comments/1291183&quot;&gt;interview to the french LinuxFr.org site&lt;/a&gt;. 
Topics include where Minix is today, and where it will move to in the future.
&lt;p&gt;

The latter one is worth quoting in this blog's NetBSD context:
``&lt;i&gt;We are now focused on three things: NetBSD compatibility, embedded systems, and reliability.
3.2.0 will have a lot of headers, libraries, and userland programs take from NetBSD, which is a very stable, mature system. The BSDs are quite popular as you may know. One of them is sold under the brand name &quot;Macintosh&quot; by Apple. [...]
&lt;p&gt;

We think NetBSD is a mature stable system. Linux is not nearly as well written and is changing all the time. NetBSD has something like 8000 packages. That is enough for us.&lt;/i&gt;''
&lt;p&gt;

Further topics include multicore and microkernel architectures, grants from
Google and the European Research Council, software  licensing,
the GPL and Linux.
&lt;a href=&quot;http://linuxfr.org/nodes/88229/comments/1291183&quot;&gt;Have a look!&lt;/a&gt;</description>
	<pubDate>Fri, 18 Nov 2011 22:16:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-2140157323321450898</guid>
	<link>http://blog.julipedia.org/2011/11/kyua-weekly-status-report_14.html</link>
	<description>Kyua has finally gained a &amp;amp;lt;tt&amp;amp;gt;report&amp;amp;lt;/tt&amp;amp;gt; subcommand, aimed at processing the output data of an action (stored in the database) and generating a user-friendly report in a variety of formats. This is still extremely incomplete, so don't get your hopes too high yet ;-) The current version of the &amp;amp;lt;tt&amp;amp;gt;report&amp;amp;lt;/tt&amp;amp;gt; command takes an action and all it does is dump its runtime context (run directory, environment variables, etc.). Consider it just a proof of concept.&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;I have now started work on loading the data of test case results for a particular action, and once that is done, the &amp;amp;lt;tt&amp;amp;gt;report&amp;amp;lt;/tt&amp;amp;gt; command will start yielding really useful data: i.e. it will actually tell you what happened during a particular execution of a test suite. The way I'm approaching the work these days is by building the skeleton code to implement the basic functionality first (which actually involves writing a lot of nasty code), with the goal of adding missing pieces later bit by bit.&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;For example, at this moment I'm only targeting text-based outputs with a limited set of data. However, when that is done, adding extra data or different formats will be relatively easy. Generating HTML dashboards (without going through XML, as was the case of &amp;amp;lt;tt&amp;amp;gt;atf-report&amp;amp;lt;/tt&amp;amp;gt;!) is definitely highly prioritized.&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;By the way: I just realized it has already been one year since Kyua saw life. Wow, time flies. And only now we are approaching a point where killing the &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; / &amp;amp;lt;tt&amp;amp;gt;atf-report&amp;amp;lt;/tt&amp;amp;gt; pair is doable. I'm excited.&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-2140157323321450898?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 14 Nov 2011 16:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-5051367421950896129</guid>
	<link>http://blog.julipedia.org/2011/11/kyua-weekly-status-report.html</link>
	<description>Many things have happened this week, but they can all be summarized in one single sentence: &amp;amp;lt;tt&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;kyua test&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;/tt&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt; now records the results of the execution of a test suite into the SQLite database&amp;amp;lt;/b&amp;amp;gt;.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&quot;Why is this important?&quot;, you ask. Well, that's a good question. Recording test results opens the gate to many long-awaited features that should be coming soon, such as the ability to inspect the history of a particular test, to query all available data of a test result and/or to generate a dashboard of test results. It's interesting to realize that &amp;amp;lt;i&amp;amp;gt;most of these features are just one SQL query away&amp;amp;lt;/i&amp;amp;gt;. If you install Kyua, you can already run a few tests and then use &amp;amp;lt;tt&amp;amp;gt;kyua db-exec&amp;amp;lt;/tt&amp;amp;gt; to issue arbitrary SQL queries against the database; the schema (see &amp;amp;lt;tt&amp;amp;gt;store/schema.sql&amp;amp;lt;/tt&amp;amp;gt;) might look a bit convoluted, but a bunch of &amp;amp;lt;tt&amp;amp;gt;NATURAL JOIN&amp;amp;lt;/tt&amp;amp;gt;s will yield the desired output.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;The feature requests that have the highest priority at this point are the ability to generate a report of the last tests run both as a text file and as an HTML dashboard, because having these features means we can finally kill the &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;atf-report&amp;amp;lt;/tt&amp;amp;gt; pair. At this point I'm, once again, &quot;stuck&quot; while figuring out how to best organize the code to make all these things possible while still keeping a nice separation across the existing layers (&amp;amp;lt;tt&amp;amp;gt;cli&amp;amp;lt;/tt&amp;amp;gt;, &amp;amp;lt;tt&amp;amp;gt;engine&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;store&amp;amp;lt;/tt&amp;amp;gt;)... all without introducing much unnecessary complexity. But exciting times lie ahead!&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-5051367421950896129?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 07 Nov 2011 15:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-5304169474623962697</guid>
	<link>http://blog.julipedia.org/2011/10/kyua-weekly-status-report_31.html</link>
	<description>&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Submitted a placeholder implementation of the new persistence layer (&amp;amp;lt;tt&amp;amp;gt;store&amp;amp;lt;/tt&amp;amp;gt; top-level directory). This only supports opening a database and ensuring its metadata is valid. &amp;amp;lt;a href=&quot;http://code.google.com/p/kyua/source/detail?r=253&quot;&amp;amp;gt;See r253&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Added a &amp;amp;lt;tt&amp;amp;gt;db-exec&amp;amp;lt;/tt&amp;amp;gt; CLI command to execute arbitrary SQL commands onto the database. This is handy during development and testing, but may also help users to extract information out of the database in those cases where the CLI does not cover their needs just yet. &amp;amp;lt;a href=&quot;http://code.google.com/p/kyua/source/detail?r=255&quot;&amp;amp;gt;See r255&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Miscellaneous fixes and improvements to &amp;amp;lt;tt&amp;amp;gt;utils::env&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;utils::sqlite&amp;amp;lt;/tt&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Preliminary code to support putting objects (like actions and contexts) into the database. I've been thinking about this for a while and finally came up with a design that completely decouples the persistence needs from the higher-level classes in the &amp;amp;lt;tt&amp;amp;gt;engine&amp;amp;lt;/tt&amp;amp;gt; layer. I haven't submitted the code yet though, as it lacks tests. (Still thinking how to write the loading of objects though.)&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-5304169474623962697?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 31 Oct 2011 14:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-402139290656767976</guid>
	<link>http://blog.julipedia.org/2011/10/kyua-weekly-status-report_23.html</link>
	<description>&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Moved all the logic code of the &quot;debug&quot;, &quot;list&quot; and &quot;test&quot; commands from the CLI layer to the engine layer.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Up until now, the CLI modules implementing these commands contained all the logic to load Kyuafiles and iterating over them to find matching tests and applying the desired operation to them. This kind of code belongs in &quot;driver&quot; modules (aka controllers) of the engine layer, because there is nothing UI-related in them.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;After this refactoring, the code left in the CLI modules is purely presentation-related, and the code in the engine implements all the logic.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;The goal of these changes is to be able to hide the interactions with the database in these controllers. The CLI layer has no business in dealing with the database connection (other than allowing the user to specify which database to talk to, of course).&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Implemented a very simple RAII model for SQLite transactions.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Some additions to the utils::sqlite bindings to simplify some common calling patterns (e.g. binding statement parameters by name).&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Preliminary prototypes at database initialization. This involves creating new databases and populating them with the initial schema, plus dealing with database metadata to, e.g. detect if we are dealing with the correct schema version.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;The code for this is still too crappy to be submitted, so don't look for it in the repository just yet!&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;The design document details many things that should be part of the schema (e.g. &quot;sessions&quot;0, but I've decided that I'll start easy with a simplified schema and later build on top of it. Otherwise there will be too many clunky moving parts to deal with while the fundamental ideas are not yet completely clear.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Fixes to let the code build and run again in NetBSD (macppc at least).&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;I've now been stuck for a few days trying to figure out what the best way to implement the conversion of (new) in-memory objects to database objects is, and how to later recover these objects. E.g. what the correct abstractions are to take test case results and put them in the database, and how to retrieve these results to generate reports later on. I now start to have a clear mental picture on how this should look like, but I have yet to see how it will scale.&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-402139290656767976?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 24 Oct 2011 02:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>Hubertf's NetBSD Blog: Enlarging a (virtual) disk</title>
	<guid>http://www.feyrer.de/NetBSD/blog.html/nb_20111022_2029.html</guid>
	<link>http://www.feyrer.de/NetBSD/blog.html/nb_20111022_2029.html</link>
	<description>I've tried to build NetBSD-current at various points in the past few 
months, and always hit one of two bugs: -current blows up with
a gcc Internal Compiler Error when crossbuilding on Mac OS X,
and kernel panics with native NetBSD builds with sources on NFS.
This stinks, and I've successfully managed to do a successful
-current build with sources on (local) disk. With NetBSD
running within VMware Fusion on Mac OS X.
&lt;p&gt;

To go on from there, I found that my NetBSD VM's only disk
was too small to do anything useful. Options for enlarging
that came to mind: 
&lt;ol&gt;
&lt;li&gt; NFS - see 'panic' above, no go. 
&lt;li&gt; Adding another (virtual) disk - easily doable, but I felt like not adding one
&lt;li&gt; Extending the existing disk - adventure time!
&lt;/ol&gt;

Option #3 was it, and after removing all VMware snapshots, enlarging the
disk was easy with VMware Fusion, going from 10GB to 20GB.
After growing the disk itself, the next question was how to use the
newly gained disk. Of course some file system needs to use it, 
and in theory there are the following options:

&lt;ol&gt;
&lt;li&gt; Enlarge the last file system on disk
&lt;li&gt; Fix the partition table to add another partition for the new space
&lt;/ol&gt;

The disk was resized from 10GB to 20GB. The partition table
(disklabel) was created by a standard NetBSD install, and first
had the root file system, followed by the swap partition.
From that, adding 10GB more swap was not useful,
so I've decided to change the disklabel to add the new disk space
as a new partition behind the existing partitions.
This is also an excuse to not frob with 
growfs and resize_ffs. (And of course I'm ignoring the option of backing up the full file system, doing a full rebuild of the filesystem
and then doing a restore :-)
&lt;p&gt;

For those in a similar situation, here are the steps to use 
the newly gained space on an enlarged (virtual) disk:

&lt;ol&gt;
&lt;li&gt; Prepare: save the old output of &quot;dmesg&quot; (/var/run/dmesg.boot is OK)
     &lt;p&gt;

&lt;li&gt; Enlarge  - VMware Fusion wants a shutdown for that, you cannot suspend
     the machine
     &lt;p&gt;

&lt;li&gt; After booting, run a diff on the saved &quot;dmesg&quot; output, to learn
     what the old and new size of the disk is, in sectors. My diff looks
     like this, note the size change in sectors:

&lt;pre&gt;
-wd0: 10240 MB, 22192 cyl, 15 head, 63 sec, 512 bytes/sect x &lt;b&gt;20971520&lt;/b&gt; sectors
+wd0: 20480 MB, 44384 cyl, 15 head, 63 sec, 512 bytes/sect x &lt;b&gt;41943040&lt;/b&gt; sectors &lt;/pre&gt;
     &lt;p&gt;


&lt;li&gt; Backup the existing/old disklabel, just in case: &lt;tt&gt;&lt;b&gt; disklabel wd0 &amp;gt;disklabel.BAK&lt;/b&gt;&lt;/tt&gt;
     &lt;p&gt;

&lt;li&gt; Edit the disklabel: &lt;tt&gt;&lt;b&gt;disklabel -e wd0&lt;/b&gt;&lt;/tt&gt;
     &lt;p&gt;

&lt;li&gt; In the editor, adjust the disk size in sectors from 20971520 to 41943040:
&lt;pre&gt;
total sectors: &lt;b&gt;41943040&lt;/b&gt; &lt;/pre&gt;
	&lt;p&gt;

&lt;li&gt; Partition 'd' is the full disk on i386/amd64, it starts at sector 0
 	and is 41943040 sectors big

&lt;pre&gt;
#        size    offset     fstype [fsize bsize cpg/sgs]
 d:  &lt;b&gt;41943040&lt;/b&gt;         0     unused      0     0        # (Cyl.      0 -  44384*)
&lt;/pre&gt;
	&lt;p&gt;

&lt;li&gt; Partition 'c' is the NetBSD part of the disk. As this VM only has NetBSD, all the usable space is used. Note that &quot;usable&quot; space excludes the first 63 sectors of the disk (mbr etc.), i.e. it is 41943040 - 63 = 41942977 sectors:
&lt;pre&gt;
#        size    offset     fstype [fsize bsize cpg/sgs]
 c:  &lt;b&gt;41942977&lt;/b&gt;        63     unused      0     0        # (Cyl.      0*-  44384*)
&lt;/pre&gt;
	&lt;p&gt;

&lt;li&gt; After this everything is in sync with the new disk again, and the remaining/new space can be used for new partition 'e'. As the new space starts where
the disk used to end, its offset is the old size, 20971520 sectors.
	&lt;p&gt;

	The size of the new partition expands from the offset sector 20971520
	to the end of the disk at sector 41943040, i.e. the partition size is:

&lt;pre&gt;
% &lt;b&gt;expr 41943040 - 20971520&lt;/b&gt;
20971520
&lt;/pre&gt;

	In total, this gives for the new partition:

&lt;pre&gt;
#        size    offset     fstype [fsize bsize cpg/sgs]
 e:  &lt;b&gt;20971520  20971520&lt;/b&gt;     4.2BSD   2048 16384     0  # (Cyl.  22192*-  44384*)
&lt;/pre&gt;

&lt;li&gt; Last, create file system, mount and populate:
&lt;pre&gt;
# &lt;b&gt;newfs /dev/rwd0e&lt;/b&gt;
# &lt;b&gt;mkdir /disk2&lt;/b&gt;
# &lt;b&gt;echo '/dev/wd0e /disk2 ffs rw,log 2 2' &amp;gt;&amp;gt;/etc/fstab&lt;/b&gt;
# &lt;b&gt;mount /disk2&lt;/b&gt;
# &lt;b&gt;cd /usr ; pax -rw -pe -v stuff /disk2&lt;/b&gt;
# &lt;b&gt;rm -fr stuff ; ln -s /disk2/stuff .&lt;/b&gt;
&lt;/pre&gt;
&lt;/ol&gt;

Now let's see if I get things far enough to get a build
of g4u going... wish me luck!
&lt;p&gt;

P.S.: I'm offering choccolate to anyone fixing crossbuilding of
NetBSD-current from Mac OS X. Any takers?</description>
	<pubDate>Sat, 22 Oct 2011 21:04:00 +0000</pubDate>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-4275543087243170349</guid>
	<link>http://blog.julipedia.org/2011/10/kyua-weekly-status-report_16.html</link>
	<description>&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Added support to prepare and execute statements to &amp;amp;lt;tt&amp;amp;gt;utils::sqlite&amp;amp;lt;/tt&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Added the &amp;amp;lt;tt&amp;amp;gt;UTILS_PURE&amp;amp;lt;/tt&amp;amp;gt; definition to tag functions as pure. I should now sweep through old code to apply the attribute where possible.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Created a pkgsrc package for Vera++. Investigating if I can use this tool for coding style validation, as the current code of Kyua is a bit messy in this regard.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Made a quick attempt at getting &amp;amp;lt;tt&amp;amp;gt;kyua test&amp;amp;lt;/tt&amp;amp;gt; record test results in a simple database; success! This was just a proof of concept, so it is not submitted yet.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Started to refactor the code to move many logic constructions from the &amp;amp;lt;tt&amp;amp;gt;cli&amp;amp;lt;/tt&amp;amp;gt; to the &amp;amp;lt;tt&amp;amp;gt;engine&amp;amp;lt;/tt&amp;amp;gt;. With the need to store test results in the database, it's clear that these semantics do not belong in the CLI, but the current code structure do not easily allow this. Need to add some &quot;controller&quot; classes in the &amp;amp;lt;tt&amp;amp;gt;engine&amp;amp;lt;/tt&amp;amp;gt; to hide all the interaction among internal components.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-4275543087243170349?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 17 Oct 2011 03:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-5370918960000243408</guid>
	<link>http://blog.julipedia.org/2011/10/kyua-weekly-status-report_09.html</link>
	<description>&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Some more reading on SQLite. The &amp;amp;lt;a href=&quot;http://www.amazon.com/Using-SQLite-Jay-Kreibich/dp/0596521189&quot;&amp;amp;gt;Using SQLite&amp;amp;lt;/a&amp;amp;gt; book is close to awesome; very easy to read and full of insightful tips.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Cleaned up my preliminary SQLite wrapper code. Still very incomplete, but I've bitten the bullet and decided to commit the new library as is; otherwise I'll just keep&amp;amp;amp;nbsp;procrastinating. So, ladies and gentlemen, welcome &amp;amp;lt;a href=&quot;http://code.google.com/p/kyua/source/detail?r=228&quot;&amp;amp;gt;the new utils::sqlite module in Kyua&amp;amp;lt;/a&amp;amp;gt;. At the moment, this just provides the barebones to open and close a database. I need to start playing around with preparing statements before I can model these in my wrapper classes. (Yes, the API structure is extremely similar to that in &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/&quot;&amp;amp;gt;Lutok&amp;amp;lt;/a&amp;amp;gt;.)&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;Update (23:40)&amp;amp;lt;/b&amp;amp;gt;: I sent this too early, thinking I would not have anything nice to report this week either. But as it turns out, I finally had some spare time this late evening and got a chance to submit the extremely-incomplete SQLite C++ bindings I've been toying around with. See the update above! :-)&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-5370918960000243408?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Sun, 09 Oct 2011 23:48:04 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-2063946456167536880</guid>
	<link>http://blog.julipedia.org/2011/10/kyua-weekly-status-report.html</link>
	<description>&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Unfortunately, not much time this week either :-(&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;I am currently working on some adjustments to the design document of the database to describe new ideas; the previous design was incomplete in some areas and/or not accurate enough to support the described use cases.&amp;amp;amp;nbsp; However, I've not had the to time to finish these edits and publish them.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-2063946456167536880?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 03 Oct 2011 19:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-1017676619421586594</guid>
	<link>http://blog.julipedia.org/2011/09/kyua-weekly-status-report_26.html</link>
	<description>Unfortunately, no activity this week other than some brainstorming on the database design.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Why? My shipment container from Dublin arrived and I spent most of the weekend organizing stuff, setting up my little NetBSD box and attending a friend's wedding!&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-1017676619421586594?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 26 Sep 2011 22:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): VirtualBox and port forwarding (and Fusion)</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-6942172427809398844</guid>
	<link>http://blog.julipedia.org/2011/09/virtualbox-and-port-forwarding-and.html</link>
	<description>I have been a &amp;amp;lt;a href=&quot;http://www.vmware.com/products/fusion/overview.html&quot;&amp;amp;gt;VMware Fusion&amp;amp;lt;/a&amp;amp;gt; user for a long time and I think I am about to be a &amp;amp;lt;a href=&quot;http://www.virtualbox.org/&quot;&amp;amp;gt;VirtualBox&amp;amp;lt;/a&amp;amp;gt; convert. Let me explain you my story.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;With the release of the &amp;amp;lt;a href=&quot;http://msdn.microsoft.com/en-us/windows/home/br229518&quot;&amp;amp;gt;Windows 8 Developer Preview&amp;amp;lt;/a&amp;amp;gt;, I felt like giving the system a try. Not because I particularly like or care about Windows, but just because I am genuinely curious about operating systems and wanted to check out their new Metro interface. So I went ahead, downloaded the ISO image, created a new virtual machine under Fusion 3, started the virtual machine, and saw Fusion crash while the Windows installer was booting.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Oh well, an emulation problem. I tried to fiddle with the virtual machine settings a bit, selecting different CPU virtualization settings and different hardware devices. No luck. After that, I resorted to Google to look for a solution to the problem and found that other people were experiencing the same issue. But, at the same time, I also found that VMware had just released Fusion 4 and that this new release works with Windows 8 just fine. Ah, cool! Or not... $50 for the upgrade. For my use cases (which amount to booting a few BSD and Linux virtual machines in console mode), it is hard to justify the upgrade — specially when it would just be to fulfill my curiosity and then delete the virtual machine 10 minutes later.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;But wait! There is that thing called VirtualBox. I had used this product a while ago and did not enjoy doing so because its interface was utterly (really) confusing. It was nowhere near the polish of Fusion or Parallels. However, to my surprise, most of my major itches have been fixed and the new interface of VirtualBox is bearable. And it boots the Windows 8 preview just fine!&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Right. So after installing Windows 8, playing with it for 10 minutes, and later deleting it, I decided to look around and see what else VirtualBox has to offer. It has &amp;amp;lt;i&amp;amp;gt;many&amp;amp;lt;/i&amp;amp;gt; settings. Yes, I know, Fusion has many settings too, but most are hidden from the UI and can only be accessed by modifying the &amp;amp;lt;tt&amp;amp;gt;vmx&amp;amp;lt;/tt&amp;amp;gt; text file. In the case of VirtualBox they are easily accessible.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;I kept looking around... and there it was, the &quot;&amp;amp;lt;b&amp;amp;gt;Port Forwarding&amp;amp;lt;/b&amp;amp;gt;&quot; option staring at me under the Network settings.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;One of the features I've been wishing for a long, long, &amp;amp;lt;i&amp;amp;gt;long&amp;amp;lt;/i&amp;amp;gt; time is the ability to easily configure a NATed (not bridged) virtual machine in my laptop, assign a host name to it from the graphical interface and then be able to SSH into the virtual machine from the laptop. As it turns out, this is doable in Fusion but it requires some nasty tinkering: one has to edit a &amp;amp;lt;i&amp;amp;gt;dhcpd&amp;amp;lt;/i&amp;amp;gt; configuration file by hand to add a new stanza for the virtual machine (&amp;amp;lt;tt&amp;amp;gt;/Library/Application Support/VMware Fusion/vmnet8/dhcpd.conf&amp;amp;lt;/tt&amp;amp;gt;). This involves manually copy/pasting the MAC address of the virtual machine into that file (which you must first extract from the &amp;amp;lt;tt&amp;amp;gt;vmx&amp;amp;lt;/tt&amp;amp;gt; file), assigning it an IP in the corresponding subnet, and sticking the IP plus host name in the &amp;amp;lt;tt&amp;amp;gt;/etc/hosts&amp;amp;lt;/tt&amp;amp;gt; file. This gets boring pretty quickly.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;VirtualBox may or may not support this kind of setting, but it has the aforementioned &quot;Port Forwarding&quot; option which is interesting on its own. As you can imagine, this sets up forwarding of a port from the host system to a port of the virtual machine. Creating an entry for SSH is as easy as clicking a couple of buttons, choosing a local port on the host system (e.g. 2022) and forwarding it to port 22 of the guest system. Voila. You can now access your virtual machine locally &amp;amp;lt;i&amp;amp;gt;and remotely&amp;amp;lt;/i&amp;amp;gt; without having to go through any of the host name nor DHCP madness I experienced before:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;$ ssh -p 2022 localhost&amp;amp;lt;/tt&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;You can later create an alias in your &amp;amp;lt;tt&amp;amp;gt;~/.ssh/config&amp;amp;lt;/tt&amp;amp;gt; file to make accessing the virtual machine a breeze:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;Host myvm&amp;amp;lt;/tt&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;Hostname localhost&amp;amp;lt;/tt&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;Port 2022&amp;amp;lt;/tt&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;And later:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;$ ssh myvm&amp;amp;lt;/tt&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;It couldn't be easier. This trivial feature is a killer for the kind of environment I am interested in. And I also know that VirtualBox provides some other interesting features, like headless mode, that are not (easily) available with Fusion.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;So yes, I think I am a convert.&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-6942172427809398844?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Mon, 19 Sep 2011 22:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Kyua: Weekly status report (db designdoc edition!)</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-7580227422862832024</guid>
	<link>http://blog.julipedia.org/2011/09/kyua-weekly-status-report-db-designdoc.html</link>
	<description>&amp;amp;lt;ul&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Moved the code of &amp;amp;lt;tt&amp;amp;gt;utils::lua&amp;amp;lt;/tt&amp;amp;gt; to a new project, &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/&quot;&amp;amp;gt;Lutok&amp;amp;lt;/a&amp;amp;gt;.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Attempted to integrate a copy of Lutok into the Kyua source code to simplify installing Kyua. I have been playing with Subversion externals and Autoconf/Automake hacks to make this happen, but unfortunately haven't got a pleasant solution yet.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Modified Lutok to not expose the Lua C API at all from header files and cleaned up the Kyua code to cope with the changes.&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;Been chewing through the first chapters of the &quot;&amp;amp;lt;a href=&quot;http://www.amazon.com/Using-SQLite-Jay-Kreibich/dp/0596521189&quot;&amp;amp;gt;Using SQLite&amp;amp;lt;/a&amp;amp;gt;&quot; book to refresh my SQL skills. &amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;li&amp;amp;gt;And, most importantly, wrote a &amp;amp;lt;a href=&quot;http://code.google.com/p/kyua/wiki/DatabaseDesign&quot;&amp;amp;gt;preliminary design document for the database store&amp;amp;lt;/a&amp;amp;gt; of Kyua and the reporting features. Comments certainly welcome! Be aware that this is how &amp;amp;lt;tt&amp;amp;gt;atf-report&amp;amp;lt;/tt&amp;amp;gt; will be replaced, so once this is done we should be able to finally kill &amp;amp;lt;tt&amp;amp;gt;atf-run&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;atf-report&amp;amp;lt;/tt&amp;amp;gt; altogether :-)&amp;amp;lt;/li&amp;amp;gt;&amp;amp;lt;/ul&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-7580227422862832024?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Sun, 18 Sep 2011 23:48:03 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Name your C++ auto-cleaners</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-7544613249446930628</guid>
	<link>http://blog.julipedia.org/2011/09/name-your-c-auto-cleaners.html</link>
	<description>As you may already know, RAII is a very powerful and popular pattern in the C++ language. With RAII, you can wrap non-stack-managed resources into a stack-managed object such that, when the stack-managed object goes out of scope, it releases the corresponding non-stack-managed object. &amp;amp;lt;a href=&quot;http://onlamp.com/pub/a/onlamp/2006/05/04/smart-pointers.html?page=1&quot;&amp;amp;gt;Smart pointers&amp;amp;lt;/a&amp;amp;gt; are just one example of this technique, but so are IO streams too.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Before getting into the point of the article, bear with me for a second while I explain what the&amp;amp;amp;nbsp; &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/source/browse/trunk/stack_cleaner.hpp&quot;&amp;amp;gt;&amp;amp;lt;tt&amp;amp;gt;stack_cleaner&amp;amp;lt;/tt&amp;amp;gt;&amp;amp;lt;/a&amp;amp;gt; object of &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/&quot;&amp;amp;gt;Lutok&amp;amp;lt;/a&amp;amp;gt; is. The &quot;stack cleaner&quot; takes a reference to a Lua state and records the height of the Lua stack on creation. When the object is destroyed (which happens when the declaring function exits), the stack is returned to its previous height thus ensuring it is clean. It is always a good idea for a function to prevent side-effects by leaving its outside world as it was — and, like it or not, the Lua state is part of the outside world because it is an input/output parameter to many functions.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Let's consider a piece of code &amp;amp;lt;i&amp;amp;gt;without&amp;amp;lt;/i&amp;amp;gt; using the stack cleaner:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;my_function(lutok::state&amp;amp;amp;amp; state, const int foo)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; state.push_integer(foo);&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ... do something else in the state ...&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; const int bar = state.to_integer();&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; if (bar != 3) {&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; state.pop(1); &amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; throw std::runtime_error(&quot;Invalid data!&quot;);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; }&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; state.pop(1);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Note that we have had to call &amp;amp;lt;tt&amp;amp;gt;state.pop(1)&amp;amp;lt;/tt&amp;amp;gt; from &quot;all&quot; exit points of the function to ensure that the stack is left unmodified upon return of &amp;amp;lt;tt&amp;amp;gt;my_function&amp;amp;lt;/tt&amp;amp;gt;. Also note that &quot;all exit points&quot; may not be accurate: in a language that supports exceptions, any statement may potentially raise an exception so to be really safe we should do:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;my_function(lutok::state&amp;amp;amp;amp; state, const int foo)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; state.push_integer(foo);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; try { &amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ... do something else in the state ...&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; const int bar = state.to_integer();&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; if (bar != 3 &amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; throw std::runtime_error(&quot;Invalid data!&quot;);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; } catch (...) {&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; state.pop(1);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; throw;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; }&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; state.pop(1);&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;... which gets old very quickly. Writing this kind of code is error-prone and boring.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;With an &quot;auto-cleaner&quot; object such as the &amp;amp;lt;tt&amp;amp;gt;stack_cleaner&amp;amp;lt;/tt&amp;amp;gt;, we can simplify our code like this:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;my_function(lutok::state&amp;amp;amp;amp; state, const int foo)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; lutok::stack_cleaner cleaner(state);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; state.push_integer(foo);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; ... do something else in the state ...&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; const int bar = state.to_integer();&amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp;&amp;amp;amp;nbsp; if (bar != 3) &amp;amp;lt;br /&amp;amp;gt;&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; &amp;amp;amp;nbsp; throw std::runtime_error(&quot;Invalid data!&quot;); &amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;And we leave the boring task of determining when to actually call &amp;amp;lt;tt&amp;amp;gt;state.pop(1)&amp;amp;lt;/tt&amp;amp;gt; to the compiler and the runtime environment. In this particular case, no matter how the &amp;amp;lt;tt&amp;amp;gt;my_function&amp;amp;lt;/tt&amp;amp;gt; terminates, we ensure that the Lua stack will be left as the same size as it was before.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;But, as I said earlier, all this was just an introduction to the idea that made me write this post.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;When you declare an auto-cleaner object of any kind, &amp;amp;lt;i&amp;amp;gt;be sure to give it a name&amp;amp;lt;/i&amp;amp;gt;. It has happened to me a few times already that I have written the following construct:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;lutok::stack_cleaner(state);&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;... which is syntactically correct, harmless and &quot;looks good&quot; if you don't look closely. The compiler will chew along just fine because, even though we are declaring an anonymous object, its constructor and destructor may be doing who-knows-what, so their code must be called and thus the &quot;unused variable&quot; warning cannot really be raised.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;b&amp;amp;gt;However&amp;amp;lt;/b&amp;amp;gt; this does not give us the desired behavior. The cleaner object will be constructed and destructed in the same statement without having a chance to wrap any of the following code, because its scope is just the statement in which it was defined. In other words, the cleaner will have absolutely no effect on the rest of the function and thus will be useless.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;So, moral of the story: always give a name to your auto-cleaner objects so that their scope is correctly defined and their destructor is run when you actually expect:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;lutok::stack_cleaner ANY_NAME_HERE(state);&amp;amp;lt;/pre&amp;amp;gt;&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-7544613249446930628?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Sun, 18 Sep 2011 03:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Introducing Lutok: A lightweight C++ API for Lua</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-7627076009086318140</guid>
	<link>http://blog.julipedia.org/2011/09/introducing-lutok-lightweight-c-api-for.html</link>
	<description>It has finally happened. &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/&quot;&amp;amp;gt;Lutok&amp;amp;lt;/a&amp;amp;gt; is the result of what was promised in the &quot;&amp;amp;lt;a href=&quot;http://blog.julipedia.org/2011/09/splitting-utilslua-from-kyua.html&quot;&amp;amp;gt;Splitting utils::lua from Kyua&amp;amp;lt;/a&amp;amp;gt;&quot; web post.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Quoting the project web page:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;blockquote&amp;amp;gt;Lutok provides thin C++ wrappers around the Lua C API to ease the interaction between C++ and Lua. These wrappers make intensive use of RAII to prevent resource leakage, expose C++-friendly data types, report errors by means of exceptions and ensure that the Lua stack is always left untouched in the face of errors. The library also provides a small subset of miscellaneous utility functions built on top of the wrappers.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Lutok focuses on providing a clean and safe C++ interface; the drawback is that it is not suitable for performance-critical environments. In order to implement error-safe C++ wrappers on top of a Lua C binary library, Lutok adds several layers or abstraction and error checking that go against the original spirit of the Lua C API and thus degrade performance.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;Lutok was originally developed within Kyua but was later split into its own project to make it available to general developers.&amp;amp;lt;/blockquote&amp;amp;gt;Coming up with a name for this project was quite an odyssey, and is what has delayed is release more than I wanted. My original candidate was &quot;luawrap&quot; which, although not very original, was to-the-point and easy to understand. Unfortunately, that name did not clear with the legal department and I had to propose several other names, some of which were not acceptable either. Eventually, I settled with &quot;Lutok&quot;, which comes from &quot;LUa TOolKit&quot;.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;At this point, the source tree of Lutok provides pretty much the same code as the &amp;amp;lt;tt&amp;amp;gt;utils::lua&amp;amp;lt;/tt&amp;amp;gt; module of Kyua. While it may be enough to get you started, I'm pretty sure you will lack some functions in the &amp;amp;lt;tt&amp;amp;gt;state&amp;amp;lt;/tt&amp;amp;gt; class. If that is the case, don't hesitate to file a bug report to let me know what is missing.&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;In case you missed the link above, the project page is here: &amp;amp;lt;a href=&quot;http://code.google.com/p/lutok/&quot;&amp;amp;gt;Lutok in Google Code&amp;amp;lt;/a&amp;amp;gt;. &amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-7627076009086318140?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Thu, 15 Sep 2011 19:48:06 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>
<item>
	<title>The Julipedia  (Blog): Using va_copy to safely pass ap arguments around</title>
	<guid>tag:blogger.com,1999:blog-17885055.post-2547470671733170941</guid>
	<link>http://blog.julipedia.org/2011/09/using-vacopy-to-safely-pass-ap.html</link>
	<description>A long time ago, while I was preparing an ATF release, I faced many failing tests and crashes in one of the platforms under test. My memory told me this was a problem in OpenSolaris, but the &amp;amp;lt;a href=&quot;http://www.blogger.com/mtn-host.prjek.net/viewmtn/atf/revision/info/655c6c51f2155076f482a038042c67fd25adc934&quot;&amp;amp;gt;repository logs&amp;amp;lt;/a&amp;amp;gt; say that the problem really happened in Fedora 8 x86_64.&amp;amp;lt;br /&amp;amp;gt;The problem manifested itself as segmentation faults pretty much everywhere, and I could trace such crashes down to pieces of code like the following, of which the C code of ATF is full of:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;foo_fmt(const char *fmt, ...)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    va_list ap;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;    va_start(ap, fmt);&amp;amp;lt;br /&amp;amp;gt;    foo_ap(fmt, ap);&amp;amp;lt;br /&amp;amp;gt;    va_end(ap);&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;foo_ap(const char *fmt, va_list ap)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    char buf[128];&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;    vsnprintf(buf, sizeof(buf), fmt, ap);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;    ... now, do something with buf ...&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;The codebase of ATF provides &amp;amp;lt;tt&amp;amp;gt;_fmt&amp;amp;lt;/tt&amp;amp;gt; and &amp;amp;lt;tt&amp;amp;gt;_ap&amp;amp;lt;/tt&amp;amp;gt; variants for many functions to give more flexibility to the caller and, as shown above, the &amp;amp;lt;tt&amp;amp;gt;_fmt&amp;amp;lt;/tt&amp;amp;gt; variant just relies on the &amp;amp;lt;tt&amp;amp;gt;_ap&amp;amp;lt;/tt&amp;amp;gt; variant to do the real work.&amp;amp;lt;br /&amp;amp;gt;Now, the crashes that appeared from the code above seemed to come from the call that consumes the &amp;amp;lt;tt&amp;amp;gt;ap&amp;amp;lt;/tt&amp;amp;gt; argument, which in this case is &amp;amp;lt;tt&amp;amp;gt;vsnprintf&amp;amp;lt;/tt&amp;amp;gt;. Interestingly, though, all the tests in other platforms but Linux x86_64 worked just fine, and this included OpenSolaris, other Linux distributions, some BSDs and even different hardware platforms.&amp;amp;lt;br /&amp;amp;gt;As it turned out, you &amp;amp;lt;b&amp;amp;gt;cannot blindly pass &amp;amp;lt;tt&amp;amp;gt;ap&amp;amp;lt;/tt&amp;amp;gt; arguments around&amp;amp;lt;/b&amp;amp;gt; because they are not &quot;normal&quot; parameters (even though, unfortunately, they look like so!). In most platforms, the &amp;amp;lt;tt&amp;amp;gt;ap&amp;amp;lt;/tt&amp;amp;gt; element will be just an &quot;absolute&quot; pointer to the stack, so passing the variable to an inner function calls is fine because the caller's stack has not been destroyed yet and, therefore, the pointer is still valid. But... the &amp;amp;lt;tt&amp;amp;gt;ap&amp;amp;lt;/tt&amp;amp;gt; argument can have other representations. It'd be an offset to the stack instead of a pointer, or it'd be a data structure that holds all the variable parameters. If, for example, the &amp;amp;lt;tt&amp;amp;gt;ap&amp;amp;lt;/tt&amp;amp;gt; argument held an offset, passing it to an inner function call would make such offset point to &quot;garbage&quot; because the stack would have been grown due to the new call frame. (I haven't investigated what specific representation is x86_64 using.)&amp;amp;lt;br /&amp;amp;gt;The solution is to use the &amp;amp;lt;tt&amp;amp;gt;va_copy&amp;amp;lt;/tt&amp;amp;gt; function to generate a new &amp;amp;lt;tt&amp;amp;gt;ap&amp;amp;lt;/tt&amp;amp;gt; object that is valid for the current stack frame. This is easy, so as an example, we have to rewrite the &amp;amp;lt;tt&amp;amp;gt;foo_ap&amp;amp;lt;/tt&amp;amp;gt; function above as follows:&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;pre&amp;amp;gt;void&amp;amp;lt;br /&amp;amp;gt;foo_ap(const char *fmt, va_list ap)&amp;amp;lt;br /&amp;amp;gt;{&amp;amp;lt;br /&amp;amp;gt;    char buf[128];&amp;amp;lt;br /&amp;amp;gt;    va_list ap2;&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;    va_copy(ap2, ap);&amp;amp;lt;br /&amp;amp;gt;    vsnprintf(buf, sizeof(buf), fmt, ap2);&amp;amp;lt;br /&amp;amp;gt;    va_end(ap2);&amp;amp;lt;br /&amp;amp;gt;&amp;amp;lt;br /&amp;amp;gt;    ... now, do something with buf ...&amp;amp;lt;br /&amp;amp;gt;}&amp;amp;lt;/pre&amp;amp;gt;This duplication of the &amp;amp;lt;tt&amp;amp;gt;ap&amp;amp;lt;/tt&amp;amp;gt; argument pointing to the variable list of arguments ensures that &amp;amp;lt;tt&amp;amp;gt;ap2&amp;amp;lt;/tt&amp;amp;gt; can be safely used from the new stack frame.&amp;amp;lt;div class=&quot;blogger-post-footer&quot;&amp;amp;gt;&amp;amp;lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/17885055-2547470671733170941?l=blog.julipedia.org' alt='' /&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&amp;lt;/content&amp;gt;</description>
	<pubDate>Tue, 13 Sep 2011 02:48:05 +0000</pubDate>
	<dc:creator>Julio Merino</dc:creator>
</item>

</channel>
</rss>

